|
GEL
0.99
|
#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <gel/error.h>#include <gel/gel_plugin.h>#include <gel/gel_elf.h>#include "gel_mem.h"Macros | |
| #define | R_PPC_NONE 0 |
| #define | R_PPC_ADDR32 1 |
| #define | R_PPC_ADDR24 2 |
| #define | R_PPC_ADDR16 3 |
| #define | R_PPC_ADDR16_LO 4 |
| #define | R_PPC_ADDR16_HI 5 |
| #define | R_PPC_ADDR16_HA 6 |
| #define | R_PPC_ADDR14 7 |
| #define | R_PPC_ADDR14_BRTAKEN 8 |
| #define | R_PPC_ADDR14_BRNTAKEN 9 |
| #define | R_PPC_REL24 10 |
| #define | R_PPC_REL14 11 |
| #define | R_PPC_REL14_BRTAKEN 12 |
| #define | R_PPC_REL14_BRNTAKEN 13 |
| #define | R_PPC_GOT16 14 |
| #define | R_PPC_GOT16_LO 15 |
| #define | R_PPC_GOT16_HI 16 |
| #define | R_PPC_GOT16_HA 17 |
| #define | R_PPC_PLTREL24 18 |
| #define | R_PPC_COPY 19 |
| #define | R_PPC_GLOB_DAT 20 |
| #define | R_PPC_JMP_SLOT 21 |
| #define | R_PPC_RELATIVE 22 |
| #define | R_PPC_LOCAL24PC 23 |
| #define | R_PPC_UADDR32 24 |
| #define | R_PPC_UADDR16 25 |
| #define | R_PPC_REL32 26 |
| #define | R_PPC_PLT32 27 |
| #define | R_PPC_PLTREL32 28 |
| #define | R_PPC_PLT16_LO 29 |
| #define | R_PPC_PLT16_HI 30 |
| #define | R_PPC_PLT16_HA 31 |
| #define | R_PPC_SDAREL16 32 |
| #define | R_PPC_SECTOFF 33 |
| #define | R_PPC_SECTOFF_LO 34 |
| #define | R_PPC_SECTOFF_HI 35 |
| #define | R_PPC_SECTOFF_HA 36 |
| #define | R_PPC_ADDR30 37 |
| #define | LO(x) ((x) & 0xFFFF) |
| #define | HI(x) (((x) >> 16) & 0xFFFF) |
| #define | HA(x) ((((x) >> 16) + (((x) & 0x8000) ? 1 : 0)) & 0xFFFF) |
| #define | USESYM ((symi.sect == SHN_UNDEF) ? (symi2) : (symi)) |
| #define | PLT_PLTCALL 24 |
| #define | PLT_RESERVE 72 |
| #define | PLT_REL_PLTCALL_HA (24 + 2) |
| #define | PLT_REL_PLTCALL_LO (24 + 2 + 4) |
| #define | PLT_ENTSIZE 8 |
| #define | PLT_REL_PLTCALL 4 |
Functions | |
| int | build_plt (gel_sect_t *s) |
| int | real_do_reloc (gel_image_t *im, gel_hash_t h, int flags, int do_copy) |
| int | do_reloc (gel_image_t *im, int flags) |
Variables | |
| int | gel_errno |
| char | plt_prefix [] |
| char | plt_entry [] |
| arch_plugin_t | plugin_arch |
| sys_plugin_t | null_plugin_sys |
| sys_plugin_t * | plugin_sys = &null_plugin_sys |
| #define HA | ( | x | ) | ((((x) >> 16) + (((x) & 0x8000) ? 1 : 0)) & 0xFFFF) |
| #define HI | ( | x | ) | (((x) >> 16) & 0xFFFF) |
| #define LO | ( | x | ) | ((x) & 0xFFFF) |
| #define PLT_ENTSIZE 8 |
| #define PLT_PLTCALL 24 |
| #define PLT_REL_PLTCALL 4 |
| #define PLT_REL_PLTCALL_HA (24 + 2) |
| #define PLT_REL_PLTCALL_LO (24 + 2 + 4) |
| #define PLT_RESERVE 72 |
| #define R_PPC_ADDR14 7 |
| #define R_PPC_ADDR14_BRNTAKEN 9 |
| #define R_PPC_ADDR14_BRTAKEN 8 |
| #define R_PPC_ADDR16 3 |
| #define R_PPC_ADDR16_HA 6 |
| #define R_PPC_ADDR16_HI 5 |
| #define R_PPC_ADDR16_LO 4 |
| #define R_PPC_ADDR24 2 |
| #define R_PPC_ADDR30 37 |
| #define R_PPC_ADDR32 1 |
| #define R_PPC_COPY 19 |
| #define R_PPC_GLOB_DAT 20 |
| #define R_PPC_GOT16 14 |
| #define R_PPC_GOT16_HA 17 |
| #define R_PPC_GOT16_HI 16 |
| #define R_PPC_GOT16_LO 15 |
| #define R_PPC_JMP_SLOT 21 |
| #define R_PPC_LOCAL24PC 23 |
| #define R_PPC_NONE 0 |
| #define R_PPC_PLT16_HA 31 |
| #define R_PPC_PLT16_HI 30 |
| #define R_PPC_PLT16_LO 29 |
| #define R_PPC_PLT32 27 |
| #define R_PPC_PLTREL24 18 |
| #define R_PPC_PLTREL32 28 |
| #define R_PPC_REL14 11 |
| #define R_PPC_REL14_BRNTAKEN 13 |
| #define R_PPC_REL14_BRTAKEN 12 |
| #define R_PPC_REL24 10 |
| #define R_PPC_REL32 26 |
| #define R_PPC_RELATIVE 22 |
| #define R_PPC_SDAREL16 32 |
| #define R_PPC_SECTOFF 33 |
| #define R_PPC_SECTOFF_HA 36 |
| #define R_PPC_SECTOFF_HI 35 |
| #define R_PPC_SECTOFF_LO 34 |
| #define R_PPC_UADDR16 25 |
| #define R_PPC_UADDR32 24 |
| #define USESYM ((symi.sect == SHN_UNDEF) ? (symi2) : (symi)) |
| int build_plt | ( | gel_sect_t * | s | ) |
Build the PLT.
| s | PLT section. |
| int do_reloc | ( | gel_image_t * | im, |
| int | flags | ||
| ) |
Perform the relocation.
| im | Image to work on. |
| flags | Flags to use. |
| int real_do_reloc | ( | gel_image_t * | im, |
| gel_hash_t | h, | ||
| int | flags, | ||
| int | do_copy | ||
| ) |
Perform the relocation
| im | Image to work on. |
| h | Hashing table (symbol, cursor) defining sources address of relocations R_xxx_COPY |
| flags | Flags |
| do_copy | Pass number (0 == normal, 1 == do R_xxx_COPY) |
< This image's info
< Current block's info
< Symbol block's info
< Container file's info
< Current section
< Section being relocated
< Current section's info
< Symtab section of the current object
< Info of the section defining the symbol
< rel sect. cursor / block cursor / block source cursor
< Symbol used by the relocation
< Sym info for s1 and s2
< Current RELA entry
< Relocation values
< Temp. storage for reloc. calculations (32 bits)
< Idem 16bits
< Idem 8bits
< Location of Small Data Area (PowerPC)
|
extern |
Null plugin for architecture.
| char plt_entry[] |
| char plt_prefix[] |
| arch_plugin_t plugin_arch |
| sys_plugin_t* plugin_sys = &null_plugin_sys |