Module goblin::elf::reloc [−][src]
Relocation computations
The following notation is used to describe relocation computations specific to x86_64 ELF.
- A: The addend used to compute the value of the relocatable field.
- B: The base address at which a shared object is loaded into memory during execution. Generally, a shared object file is built with a base virtual address of 0. However, the execution address of the shared object is different.
- G: The offset into the global offset table at which the address of the relocation entry’s symbol resides during execution.
- GOT: The address of the global offset table.
- L: The section offset or address of the procedure linkage table entry for a symbol.
- P: The section offset or address of the storage unit being relocated, computed using r_offset.
- S: The value of the symbol whose index resides in the relocation entry.
- Z: The size of the symbol whose index resides in the relocation entry.
Below are some common x86_64 relocation computations you might find useful:
Relocation | Value | Size | Formula |
---|---|---|---|
R_X86_64_NONE | 0 | NONE | NONE |
R_X86_64_64 | 1 | 64 | S + A |
R_X86_64_PC32 | 2 | 32 | S + A - P |
R_X86_64_GOT32 | 3 | 32 | G + A |
R_X86_64_PLT32 | 4 | 32 | L + A - P |
R_X86_64_COPY | 5 | NONE | NONE |
R_X86_64_GLOB_DAT | 6 | 64 | S |
R_X86_64_JUMP_SLOT | 7 | 64 | S |
R_X86_64_RELATIVE | 8 | 64 | B + A |
R_X86_64_GOTPCREL | 9 | 32 | G + GOT + A - P |
R_X86_64_32 | 10 | 32 | S + A |
R_X86_64_32S | 11 | 32 | S + A |
R_X86_64_16 | 12 | 16 | S + A |
R_X86_64_PC16 | 13 | 16 | S + A - P |
R_X86_64_8 | 14 | 8 | S + A |
R_X86_64_PC8 | 15 | 8 | S + A - P |
R_X86_64_DTPMOD64 | 16 | 64 | |
R_X86_64_DTPOFF64 | 17 | 64 | |
R_X86_64_TPOFF64 | 18 | 64 | |
R_X86_64_TLSGD | 19 | 32 | |
R_X86_64_TLSLD | 20 | 32 | |
R_X86_64_DTPOFF32 | 21 | 32 | |
R_X86_64_GOTTPOFF | 22 | 32 | |
R_X86_64_TPOFF32 | 23 | 32 | |
R_X86_64_PC64 | 24 | 64 | S + A - P |
R_X86_64_GOTOFF64 | 25 | 64 | S + A - GOT |
R_X86_64_GOTPC32 | 26 | 32 | GOT + A - P |
R_X86_64_SIZE32 | 32 | 32 | Z + A |
R_X86_64_SIZE64 | 33 | 64 | Z + A |
R_X86_64_GOTPC32_TLSDESC 34 | 32 | ||
R_X86_64_TLSDESC_CALL | 35 | NONE | |
R_X86_64_TLSDESC | 36 | 64 × 2 | |
R_X86_64_IRELATIVE | 37 | 64 | indirect (B + A) |
TLS information is at http://people.redhat.com/aoliva/writeups/TLS/RFC-TLSDESC-x86.txt
R_X86_64_IRELATIVE
is similar to R_X86_64_RELATIVE
except that
the value used in this relocation is the program address returned by the function,
which takes no arguments, at the address of the result of the corresponding
R_X86_64_RELATIVE
relocation.
Read more https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-54839.html
Modules
reloc32 | |
reloc64 |
Structs
Reloc | A unified ELF relocation structure |
RelocIterator | |
RelocSection | An ELF section containing relocations, allowing lazy iteration over symbols. |
Constants
R_386_8 | |
R_386_16 | |
R_386_32 | Direct 32 bit |
R_386_32PLT | |
R_386_COPY | Copy symbol at runtime |
R_386_GLOB_DAT | Create GOT entry |
R_386_GOT32 | 32 bit GOT entry |
R_386_GOT32X | Load from 32 bit GOT entry, relaxable |
R_386_GOTOFF | 32 bit offset to GOT |
R_386_GOTPC | 32 bit PC relative offset to GOT |
R_386_IRELATIVE | Adjust indirectly by program base |
R_386_JMP_SLOT | Create PLT entry |
R_386_NONE | No reloc |
R_386_NUM | Keep this the last entry |
R_386_PC8 | |
R_386_PC16 | |
R_386_PC32 | PC relative 32 bit |
R_386_PLT32 | 32 bit PLT address |
R_386_RELATIVE | Adjust by program base |
R_386_SIZE32 | 32-bit symbol size |
R_386_TLS_DESC | TLS descriptor containing pointer to code and to argument, returning the TLS offset for the symbol |
R_386_TLS_DESC_CALL | Marker of call through TLS descriptor for relaxation |
R_386_TLS_DTPMOD32 | ID of module containing symbol |
R_386_TLS_DTPOFF32 | Offset in TLS block |
R_386_TLS_GD | Direct 32 bit for GNU version of general dynamic thread local data |
R_386_TLS_GD_32 | Direct 32 bit for general dynamic thread local data |
R_386_TLS_GD_CALL | Relocation for call to __tls_get_addr() |
R_386_TLS_GD_POP | Tag for popl in GD TLS code |
R_386_TLS_GD_PUSH | Tag for pushl in GD TLS code |
R_386_TLS_GOTDESC | GOT offset for TLS descriptor. |
R_386_TLS_GOTIE | GOT entry for static TLS block offset |
R_386_TLS_IE | Address of GOT entry for static TLS block offset |
R_386_TLS_IE_32 | GOT entry for negated static TLS block offset |
R_386_TLS_LDM | Direct 32 bit for GNU version of local dynamic thread local data in LE code |
R_386_TLS_LDM_32 | Direct 32 bit for local dynamic thread local data in LE code |
R_386_TLS_LDM_CALL | Relocation for call to __tls_get_addr() in LDM code |
R_386_TLS_LDM_POP | Tag for popl in LDM TLS code |
R_386_TLS_LDM_PUSH | Tag for pushl in LDM TLS code |
R_386_TLS_LDO_32 | Offset relative to TLS block |
R_386_TLS_LE | Offset relative to static TLS block |
R_386_TLS_LE_32 | Negated offset relative to static TLS block |
R_386_TLS_TPOFF | Offset in static TLS block |
R_386_TLS_TPOFF32 | Negated offset in static TLS block |
R_AARCH64_ABS16 | Direct 16-bit |
R_AARCH64_ABS32 | Direct 32 bit |
R_AARCH64_ABS64 | Direct 64 bit |
R_AARCH64_ADD_ABS_LO12_NC | Dir. ADD imm. from bits 11:0 |
R_AARCH64_ADR_GOT_PAGE | P-page-rel. GOT off. ADRP 32:12 |
R_AARCH64_ADR_PREL_LO21 | PC-rel. ADR imm. from bits 20:0 |
R_AARCH64_ADR_PREL_PG_HI21 | Page-rel. ADRP imm. from 32:12 |
R_AARCH64_ADR_PREL_PG_HI21_NC | Likewise; no overflow check |
R_AARCH64_CALL26 | Likewise for CALL |
R_AARCH64_CONDBR19 | PC-rel. cond. br. imm. from 20:2. |
R_AARCH64_COPY | Copy symbol at runtime |
R_AARCH64_GLOB_DAT | Create GOT entry |
R_AARCH64_GOTREL32 | GOT-relative 32-bit |
R_AARCH64_GOTREL64 | GOT-relative 64-bit |
R_AARCH64_GOT_LD_PREL19 | PC-rel. GOT off. load imm. 20:2 |
R_AARCH64_IRELATIVE | STT_GNU_IFUNC relocation |
R_AARCH64_JUMP26 | PC-rel. B imm. from bits 27:2 |
R_AARCH64_JUMP_SLOT | Create PLT entry |
R_AARCH64_LD64_GOTOFF_LO15 | GOT-rel. off. LD/ST imm. 14:3 |
R_AARCH64_LD64_GOTPAGE_LO15 | GOT-page-rel. GOT off. LD/ST 14:3 |
R_AARCH64_LD64_GOT_LO12_NC | Dir. GOT off. LD/ST imm. 11:3 |
R_AARCH64_LDST8_ABS_LO12_NC | Likewise for LD/ST; no check. |
R_AARCH64_LDST16_ABS_LO12_NC | Dir. ADD imm. from bits 11:1 |
R_AARCH64_LDST32_ABS_LO12_NC | Likewise for bits 11:2 |
R_AARCH64_LDST64_ABS_LO12_NC | Likewise for bits 11:3 |
R_AARCH64_LDST128_ABS_LO12_NC | Dir. ADD imm. from bits 11:4 |
R_AARCH64_LD_PREL_LO19 | PC-rel. LD imm. from bits 20:2 |
R_AARCH64_MOVW_GOTOFF_G0 | GOT-rel. off. MOV{N,Z} imm. 15:0. |
R_AARCH64_MOVW_GOTOFF_G0_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_GOTOFF_G1 | GOT-rel. o. MOV{N,Z} imm. 31:16 |
R_AARCH64_MOVW_GOTOFF_G1_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_GOTOFF_G2 | GOT-rel. o. MOV{N,Z} imm. 47:32 |
R_AARCH64_MOVW_GOTOFF_G2_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_GOTOFF_G3 | GOT-rel. o. MOV{N,Z} imm. 63:48 |
R_AARCH64_MOVW_PREL_G0 | PC-rel. MOV{N,Z} imm. from 15:0 |
R_AARCH64_MOVW_PREL_G0_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_PREL_G1 | PC-rel. MOV{N,Z} imm. from 31:16. |
R_AARCH64_MOVW_PREL_G1_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_PREL_G2 | PC-rel. MOV{N,Z} imm. from 47:32. |
R_AARCH64_MOVW_PREL_G2_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_PREL_G3 | PC-rel. MOV{N,Z} imm. from 63:48. |
R_AARCH64_MOVW_SABS_G0 | Dir. MOV{N,Z} imm. from 15:0 |
R_AARCH64_MOVW_SABS_G1 | Dir. MOV{N,Z} imm. from 31:16 |
R_AARCH64_MOVW_SABS_G2 | Dir. MOV{N,Z} imm. from 47:32 |
R_AARCH64_MOVW_UABS_G0 | Dir. MOVZ imm. from bits 15:0 |
R_AARCH64_MOVW_UABS_G0_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_UABS_G1 | Dir. MOVZ imm. from bits 31:16 |
R_AARCH64_MOVW_UABS_G1_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_UABS_G2 | Dir. MOVZ imm. from bits 47:32 |
R_AARCH64_MOVW_UABS_G2_NC | Likewise for MOVK; no check |
R_AARCH64_MOVW_UABS_G3 | Dir. MOV{K,Z} imm. from 63:48 |
R_AARCH64_NONE | No relocation |
R_AARCH64_P32_ABS32 | Direct 32 bit |
R_AARCH64_P32_COPY | Copy symbol at runtime |
R_AARCH64_P32_GLOB_DAT | Create GOT entry |
R_AARCH64_P32_IRELATIVE | STT_GNU_IFUNC relocation |
R_AARCH64_P32_JUMP_SLOT | Create PLT entry |
R_AARCH64_P32_RELATIVE | Adjust by program base |
R_AARCH64_P32_TLSDESC | TLS Descriptor |
R_AARCH64_P32_TLS_DTPMOD | Module number, 32 bit |
R_AARCH64_P32_TLS_DTPREL | Module-relative offset, 32 bit |
R_AARCH64_P32_TLS_TPREL | TP-relative offset, 32 bit |
R_AARCH64_PREL16 | PC-relative 16-bit |
R_AARCH64_PREL32 | PC-relative 32-bit |
R_AARCH64_PREL64 | PC-relative 64-bit |
R_AARCH64_RELATIVE | Adjust by program base |
R_AARCH64_TLSDESC | TLS Descriptor |
R_AARCH64_TLSDESC_ADD | Relax ADD |
R_AARCH64_TLSDESC_ADD_LO12 | Direct ADD imm. from 11:0 |
R_AARCH64_TLSDESC_ADR_PAGE21 | Page-rel. ADRP imm. 32:12 |
R_AARCH64_TLSDESC_ADR_PREL21 | PC-rel. ADR immediate 20:0 |
R_AARCH64_TLSDESC_CALL | Relax BLR |
R_AARCH64_TLSDESC_LD64_LO12 | Direct LD off. from 11:3 |
R_AARCH64_TLSDESC_LDR | Relax LDR |
R_AARCH64_TLSDESC_LD_PREL19 | PC-rel. load immediate 20:2 |
R_AARCH64_TLSDESC_OFF_G0_NC | GOT-rel. MOVK imm. 15:0; no ck |
R_AARCH64_TLSDESC_OFF_G1 | GOT-rel. MOV{N,Z} imm. 31:16 |
R_AARCH64_TLSGD_ADD_LO12_NC | direct ADD imm. from 11:0 |
R_AARCH64_TLSGD_ADR_PAGE21 | page-rel. ADRP imm. 32:12 |
R_AARCH64_TLSGD_ADR_PREL21 | PC-relative ADR imm. 20:0 |
R_AARCH64_TLSGD_MOVW_G0_NC | GOT-rel. MOVK imm. 15:0 |
R_AARCH64_TLSGD_MOVW_G1 | GOT-rel. MOV{N,Z} 31:16 |
R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 | Page-rel. ADRP 32:12 |
R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC | Direct LD off. 11:3 |
R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 | PC-rel. load imm. 20:2 |
R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC | GOT-rel. MOVK 15:0 |
R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 | GOT-rel. MOV{N,Z} 31:16 |
R_AARCH64_TLSLD_ADD_DTPREL_HI12 | DTP-rel. ADD imm. from 23:12. |
R_AARCH64_TLSLD_ADD_DTPREL_LO12 | DTP-rel. ADD imm. from 11:0 |
R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC | Likewise; no ovfl. check |
R_AARCH64_TLSLD_ADD_LO12_NC | Like 514; local dynamic model |
R_AARCH64_TLSLD_ADR_PAGE21 | Like 513; local dynamic model |
R_AARCH64_TLSLD_ADR_PREL21 | Like 512; local dynamic model |
R_AARCH64_TLSLD_LDST8_DTPREL_LO12 | DTP-rel. LD/ST imm. 11:0 |
R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLD_LDST16_DTPREL_LO12 | DTP-rel. LD/ST imm. 11:1 |
R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLD_LDST32_DTPREL_LO12 | DTP-rel. LD/ST imm. 11:2 |
R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLD_LDST64_DTPREL_LO12 | DTP-rel. LD/ST imm. 11:3 |
R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLD_LDST128_DTPREL_LO12 | DTP-rel. LD/ST imm. 11:4. |
R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLD_LD_PREL19 | TLS PC-rel. load imm. 20:2 |
R_AARCH64_TLSLD_MOVW_DTPREL_G0 | TLS DTP-rel. MOV{N,Z} 15:0 |
R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC | Likewise; MOVK; no check |
R_AARCH64_TLSLD_MOVW_DTPREL_G1 | TLS DTP-rel. MOV{N,Z} 31:16 |
R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC | Likewise; MOVK; no check |
R_AARCH64_TLSLD_MOVW_DTPREL_G2 | TLS DTP-rel. MOV{N,Z} 47:32 |
R_AARCH64_TLSLD_MOVW_G0_NC | Like 516; local dynamic model |
R_AARCH64_TLSLD_MOVW_G1 | Like 515; local dynamic model |
R_AARCH64_TLSLE_ADD_TPREL_HI12 | TP-rel. ADD imm. 23:12 |
R_AARCH64_TLSLE_ADD_TPREL_LO12 | TP-rel. ADD imm. 11:0 |
R_AARCH64_TLSLE_ADD_TPREL_LO12_NC | Likewise; no ovfl. check |
R_AARCH64_TLSLE_LDST8_TPREL_LO12 | TP-rel. LD/ST off. 11:0 |
R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC | Likewise; no ovfl. check. |
R_AARCH64_TLSLE_LDST16_TPREL_LO12 | TP-rel. LD/ST off. 11:1 |
R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLE_LDST32_TPREL_LO12 | TP-rel. LD/ST off. 11:2 |
R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLE_LDST64_TPREL_LO12 | TP-rel. LD/ST off. 11:3 |
R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLE_LDST128_TPREL_LO12 | TP-rel. LD/ST off. 11:4 |
R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC | Likewise; no check |
R_AARCH64_TLSLE_MOVW_TPREL_G0 | TLS TP-rel. MOV{N,Z} 15:0 |
R_AARCH64_TLSLE_MOVW_TPREL_G0_NC | Likewise; MOVK; no check |
R_AARCH64_TLSLE_MOVW_TPREL_G1 | TLS TP-rel. MOV{N,Z} 31:16 |
R_AARCH64_TLSLE_MOVW_TPREL_G1_NC | Likewise; MOVK; no check |
R_AARCH64_TLSLE_MOVW_TPREL_G2 | TLS TP-rel. MOV{N,Z} 47:32 |
R_AARCH64_TLS_DTPMOD | Module number, 64 bit |
R_AARCH64_TLS_DTPREL | Module-relative offset, 64 bit |
R_AARCH64_TLS_TPREL | TP-relative offset, 64 bit |
R_AARCH64_TSTBR14 | PC-rel. TBZ/TBNZ imm. from 15:2 |
R_ARM_ABS8 | Direct 8 bit |
R_ARM_ABS12 | Direct 12 bit |
R_ARM_ABS16 | Direct 16 bit |
R_ARM_ABS32 | Direct 32 bit |
R_ARM_ABS32_NOI | Direct 32-bit |
R_ARM_ALU_PCREL_7_0 | Obsolete |
R_ARM_ALU_PCREL_15_8 | Obsolete |
R_ARM_ALU_PCREL_23_15 | Obsolete |
R_ARM_ALU_PC_G0 | PC relative (ADD, SUB) |
R_ARM_ALU_PC_G0_NC | PC relative (ADD, SUB) |
R_ARM_ALU_PC_G1 | PC relative (ADD, SUB) |
R_ARM_ALU_PC_G1_NC | PC relative (ADD, SUB) |
R_ARM_ALU_PC_G2 | PC relative (ADD, SUB) |
R_ARM_ALU_SBREL_19_12 | Deprecated, prog. base relative |
R_ARM_ALU_SBREL_27_20 | Deprecated, prog. base relative |
R_ARM_ALU_SB_G0 | Program base relative (ADD,SUB) |
R_ARM_ALU_SB_G0_NC | Program base relative (ADD,SUB) |
R_ARM_ALU_SB_G1 | Program base relative (ADD,SUB) |
R_ARM_ALU_SB_G1_NC | Program base relative (ADD,SUB) |
R_ARM_ALU_SB_G2 | Program base relative (ADD,SUB) |
R_ARM_AMP_VCALL9 | |
R_ARM_BASE_ABS | Adjust by program base |
R_ARM_CALL | PC relative 24 bit (BL, BLX) |
R_ARM_COPY | Copy symbol at runtime |
R_ARM_GLOB_DAT | Create GOT entry |
R_ARM_GNU_VTENTRY | |
R_ARM_GNU_VTINHERIT | |
R_ARM_GOT32 | 32 bit GOT entry |
R_ARM_GOTOFF | 32 bit offset to GOT |
R_ARM_GOTOFF12 | 12 bit, GOT entry relative to GOT origin (LDR, STR) |
R_ARM_GOTPC | 32 bit PC relative offset to GOT |
R_ARM_GOTRELAX | |
R_ARM_GOT_ABS | GOT entry |
R_ARM_GOT_BREL12 | GOT entry relative to GOT origin (LDR) |
R_ARM_GOT_PREL | PC relative GOT entry |
R_ARM_IRELATIVE | |
R_ARM_JUMP24 | PC relative 24 bit (B, BL |
R_ARM_JUMP_SLOT | Create PLT entry |
R_ARM_LDC_PC_G0 | PC relative (LDC, STC) |
R_ARM_LDC_PC_G1 | PC relative (LDC, STC) |
R_ARM_LDC_PC_G2 | PC relative (LDC, STC) |
R_ARM_LDC_SB_G0 | Program base relative (LDC,STC) |
R_ARM_LDC_SB_G1 | Program base relative (LDC,STC) |
R_ARM_LDC_SB_G2 | Program base relative (LDC,STC) |
R_ARM_LDRS_PC_G0 | PC relative (STR{D,H},LDR{D,SB,H,SH}) |
R_ARM_LDRS_PC_G1 | PC relative (STR{D,H},LDR{D,SB,H,SH}) |
R_ARM_LDRS_PC_G2 | PC relative (STR{D,H},LDR{D,SB,H,SH}) |
R_ARM_LDRS_SB_G0 | Program base relative (LDR, STR, LDRB, STRB) |
R_ARM_LDRS_SB_G1 | Program base relative (LDR, STR, LDRB, STRB) |
R_ARM_LDRS_SB_G2 | Program base relative (LDR, STR, LDRB, STRB) |
R_ARM_LDR_PC_G1 | PC relative (LDR,STR,LDRB,STRB) |
R_ARM_LDR_PC_G2 | PC relative (LDR,STR,LDRB,STRB) |
R_ARM_LDR_SBREL_11_0 | Deprecated, prog. base relative |
R_ARM_LDR_SB_G0 | Program base relative (LDR,STR, LDRB, STRB) |
R_ARM_LDR_SB_G1 | Program base relative (LDR, STR, LDRB, STRB) |
R_ARM_LDR_SB_G2 | Program base relative (LDR, STR, LDRB, STRB) |
R_ARM_ME_TOO | Obsolete |
R_ARM_MOVT_ABS | Direct high 16-bit (MOVT) |
R_ARM_MOVT_BREL | Program base relative high 16 bit (MOVT) |
R_ARM_MOVT_PREL | PC relative (MOVT) |
R_ARM_MOVW_ABS_NC | Direct 16-bit (MOVW) |
R_ARM_MOVW_BREL | Program base relative 16 bit (MOVW) |
R_ARM_MOVW_BREL_NC | Program base relative 16 bit (MOVW) |
R_ARM_MOVW_PREL_NC | PC relative 16-bit (MOVW) |
R_ARM_NONE | No reloc |
R_ARM_NUM | Keep this the last entry |
R_ARM_PC13 | |
R_ARM_PC24 | Deprecated PC relative 26 bit branch |
R_ARM_PLT32 | Deprecated, 32 bit PLT address |
R_ARM_PLT32_ABS | |
R_ARM_PREL31 | 32 bit PC relative |
R_ARM_RABS22 | |
R_ARM_RBASE | |
R_ARM_REL32 | PC relative 32 bit |
R_ARM_REL32_NOI | PC relative 32-bit |
R_ARM_RELATIVE | Adjust by program base |
R_ARM_RPC24 | |
R_ARM_RREL32 | |
R_ARM_RSBREL32 | |
R_ARM_RXPC25 | |
R_ARM_SBREL31 | Program base relative |
R_ARM_SBREL32 | |
R_ARM_SWI24 | Obsolete static relocation |
R_ARM_TARGET1 | |
R_ARM_TARGET2 | |
R_ARM_THM_ABS5 | Direct & 0x7C (LDR, STR) |
R_ARM_THM_ALU_PREL_11_0 | PC relative 12 bit (Thumb32 ADR.W) |
R_ARM_THM_GOT_BREL12 | GOT entry relative to GOT origin, 12 bit (Thumb32 LDR) |
R_ARM_THM_JUMP6 | PC relative X & 0x7E (Thumb16 CBZ, CBNZ) |
R_ARM_THM_JUMP19 | PC relative 20 bit (Thumb32 B |
R_ARM_THM_JUMP24 | PC relative 24 bit (Thumb32 B.W) |
R_ARM_THM_MOVT_ABS | Direct high 16 bit (Thumb32 MOVT) |
R_ARM_THM_MOVT_BREL | Program base relative high 16 bit (Thumb32 MOVT) |
R_ARM_THM_MOVT_PREL | PC relative high 16 bit (Thumb32 MOVT) |
R_ARM_THM_MOVW_ABS_NC | Direct 16 bit (Thumb32 MOVW) |
R_ARM_THM_MOVW_BREL | Program base relative 16 bit (Thumb32 MOVW) |
R_ARM_THM_MOVW_BREL_NC | Program base relative 16 bit (Thumb32 MOVW) |
R_ARM_THM_MOVW_PREL_NC | PC relative 16 bit (Thumb32 MOVW) |
R_ARM_THM_PC8 | PC relative & 0x3FC(Thumb16 LDR, ADD, ADR). |
R_ARM_THM_PC9 | PC relative & 0x1FE (Thumb16 B/B |
R_ARM_THM_PC11 | PC relative & 0xFFE (Thumb16 B) |
R_ARM_THM_PC12 | PC relative 12 bit (Thumb32 LDR{D,SB,H,SH}) |
R_ARM_THM_PC22 | PC relative 24 bit (Thumb32 BL) |
R_ARM_THM_RPC22 | |
R_ARM_THM_SWI8 | Reserved |
R_ARM_THM_TLS_CALL | |
R_ARM_THM_TLS_DESCSEQ | |
R_ARM_THM_TLS_DESCSEQ16 | |
R_ARM_THM_TLS_DESCSEQ32 | |
R_ARM_THM_XPC22 | Reserved |
R_ARM_TLS_CALL | |
R_ARM_TLS_DESC | Dynamic relocation |
R_ARM_TLS_DESCSEQ | TLS relaxation |
R_ARM_TLS_DTPMOD32 | ID of module containing symbol |
R_ARM_TLS_DTPOFF32 | Offset in TLS block |
R_ARM_TLS_GD32 | PC-rel 32 bit for global dynamic thread local data |
R_ARM_TLS_GOTDESC | |
R_ARM_TLS_IE12GP | 12 bit GOT entry relative to GOT origin (LDR) |
R_ARM_TLS_IE32 | PC-rel 32 bit for GOT entry of static TLS block offset |
R_ARM_TLS_LDM32 | PC-rel 32 bit for local dynamic thread local data |
R_ARM_TLS_LDO12 | 12 bit relative to TLS block (LDR, STR) |
R_ARM_TLS_LDO32 | 32 bit offset relative to TLS block |
R_ARM_TLS_LE12 | 12 bit relative to static TLS block (LDR, STR) |
R_ARM_TLS_LE32 | 32 bit offset relative to static TLS block |
R_ARM_TLS_TPOFF32 | Offset in static TLS block |
R_ARM_V4BX | |
R_ARM_XPC25 | Reserved |
R_MIPS_16 | Direct 16 bit |
R_MIPS_26 | Direct 26 bit shifted |
R_MIPS_32 | Direct 32 bit |
R_MIPS_64 | |
R_MIPS_ADD_IMMEDIATE | |
R_MIPS_CALL16 | 16 bit GOT entry for function |
R_MIPS_CALL_HI16 | |
R_MIPS_CALL_LO16 | |
R_MIPS_COPY | |
R_MIPS_DELETE | |
R_MIPS_GLOB_DAT | |
R_MIPS_GOT16 | 16 bit GOT entry |
R_MIPS_GOT_DISP | |
R_MIPS_GOT_HI16 | |
R_MIPS_GOT_LO16 | |
R_MIPS_GOT_OFST | |
R_MIPS_GOT_PAGE | |
R_MIPS_GPREL16 | GP relative 16 bit |
R_MIPS_GPREL32 | GP relative 32 bit |
R_MIPS_HI16 | High 16 bit |
R_MIPS_HIGHER | |
R_MIPS_HIGHEST | |
R_MIPS_INSERT_A | |
R_MIPS_INSERT_B | |
R_MIPS_JALR | |
R_MIPS_JUMP_SLOT | |
R_MIPS_LITERAL | 16 bit literal entry |
R_MIPS_LO16 | Low 16 bit |
R_MIPS_NONE | No reloc |
R_MIPS_NUM | |
R_MIPS_PC16 | PC relative 16 bit |
R_MIPS_PJUMP | |
R_MIPS_REL16 | |
R_MIPS_REL32 | PC relative 32 bit |
R_MIPS_RELGOT | |
R_MIPS_SCN_DISP | |
R_MIPS_SHIFT5 | |
R_MIPS_SHIFT6 | |
R_MIPS_SUB | |
R_MIPS_TLS_DTPMOD32 | Module number 32 bit |
R_MIPS_TLS_DTPMOD64 | Module number 64 bit |
R_MIPS_TLS_DTPREL32 | Module-relative offset 32 bit |
R_MIPS_TLS_DTPREL64 | Module-relative offset 64 bit |
R_MIPS_TLS_DTPREL_HI16 | Module-relative offset, high 16 bits |
R_MIPS_TLS_DTPREL_LO16 | Module-relative offset, low 16 bits |
R_MIPS_TLS_GD | 16 bit GOT offset for GD |
R_MIPS_TLS_GOTTPREL | 16 bit GOT offset for IE |
R_MIPS_TLS_LDM | 16 bit GOT offset for LDM |
R_MIPS_TLS_TPREL32 | TP-relative offset, 32 bit6 |
R_MIPS_TLS_TPREL64 | TP-relative offset, 64 bit |
R_MIPS_TLS_TPREL_HI16 | TP-relative offset, high 16 bits |
R_MIPS_TLS_TPREL_LO16 | TP-relative offset, low 16 bits |
R_OR1K_8 | |
R_OR1K_8_PCREL | |
R_OR1K_16 | |
R_OR1K_16_PCREL | |
R_OR1K_32 | |
R_OR1K_32_PCREL | |
R_OR1K_COPY | |
R_OR1K_GLOB_DAT | |
R_OR1K_GNU_VTENTRY | |
R_OR1K_GNU_VTINHERIT | |
R_OR1K_GOT16 | |
R_OR1K_GOTOFF_HI16 | |
R_OR1K_GOTOFF_LO16 | |
R_OR1K_GOTPC_HI16 | |
R_OR1K_GOTPC_LO16 | |
R_OR1K_HI_16_IN_INSN | |
R_OR1K_INSN_REL_26 | |
R_OR1K_JMP_SLOT | |
R_OR1K_LO_16_IN_INSN | |
R_OR1K_NONE | |
R_OR1K_NUM | |
R_OR1K_PLT26 | |
R_OR1K_RELATIVE | |
R_OR1K_TLS_DTPMOD | |
R_OR1K_TLS_DTPOFF | |
R_OR1K_TLS_GD_HI16 | |
R_OR1K_TLS_GD_LO16 | |
R_OR1K_TLS_IE_HI16 | |
R_OR1K_TLS_IE_LO16 | |
R_OR1K_TLS_LDM_HI16 | |
R_OR1K_TLS_LDM_LO16 | |
R_OR1K_TLS_LDO_HI16 | |
R_OR1K_TLS_LDO_LO16 | |
R_OR1K_TLS_LE_HI16 | |
R_OR1K_TLS_LE_LO16 | |
R_OR1K_TLS_TPOFF | |
R_RISCV_32 | Runtime relocation: word32 = S + A |
R_RISCV_64 | Runtime relocation: word64 = S + A |
R_RISCV_ADD8 | 8-bit label addition: word8 = S + A |
R_RISCV_ADD16 | 16-bit label addition: word16 = S + A |
R_RISCV_ADD32 | 32-bit label addition: word32 = S + A |
R_RISCV_ADD64 | 64-bit label addition: word64 = S + A |
R_RISCV_ALIGN | Alignment statement |
R_RISCV_BRANCH | PC-relative branch (SB-Type) |
R_RISCV_CALL | PC-relative call: MACRO call,tail (auipc+jalr pair) |
R_RISCV_CALL_PLT | PC-relative call (PLT): MACRO call,tail (auipc+jalr pair) PIC |
R_RISCV_COPY | Runtime relocation: must be in executable, not allowed in shared library |
R_RISCV_GNU_VTENTRY | GNU C++ vtable member usage |
R_RISCV_GNU_VTINHERIT | GNU C++ vtable hierarchy |
R_RISCV_GOT_HI20 | PC-relative GOT reference: MACRO la |
R_RISCV_GPREL_I | GP-relative reference (I-Type) |
R_RISCV_GPREL_S | GP-relative reference (S-Type) |
R_RISCV_HI20 | Absolute address: %hi(symbol) (U-Type) |
R_RISCV_JAL | PC-relative jump (UJ-Type) |
R_RISCV_JUMP_SLOT | Runtime relocation: word32,64 = S; handled by PLT unless LD_BIND_NOW |
R_RISCV_LO12_I | Absolute address: %lo(symbol) (I-Type) |
R_RISCV_LO12_S | Absolute address: %lo(symbol) (S-Type) |
R_RISCV_NONE | None |
R_RISCV_PCREL_HI20 | PC-relative reference: %pcrel_hi(symbol) (U-Type) |
R_RISCV_PCREL_LO12_I | PC-relative reference: %pcrel_lo(symbol) (I-Type) |
R_RISCV_PCREL_LO12_S | PC-relative reference: %pcrel_lo(symbol) (S-Type) |
R_RISCV_RELATIVE | Runtime relocation: word32,64 = B + A |
R_RISCV_RELAX | Instruction pair can be relaxed |
R_RISCV_RVC_BRANCH | PC-relative branch offset (CB-Type) |
R_RISCV_RVC_JUMP | PC-relative jump offset (CJ-Type) |
R_RISCV_RVC_LUI | Absolute address (CI-Type) |
R_RISCV_SET6 | Local label subtraction |
R_RISCV_SET8 | Local label subtraction |
R_RISCV_SET16 | Local label subtraction |
R_RISCV_SET32 | Local label subtraction |
R_RISCV_SUB6 | Local label subtraction |
R_RISCV_SUB8 | 8-bit label subtraction: word8 = S - A |
R_RISCV_SUB16 | 16-bit label subtraction: word16 = S - A |
R_RISCV_SUB32 | 32-bit label subtraction: word32 = S - A |
R_RISCV_SUB64 | 64-bit label subtraction: word64 = S - A |
R_RISCV_TLS_DTPMOD32 | TLS relocation: word32 = S->TLSINDEX |
R_RISCV_TLS_DTPMOD64 | TLS relocation: word64 = S->TLSINDEX |
R_RISCV_TLS_DTPREL32 | TLS relocation: word32 = TLS + S + A - TLS_TP_OFFSET |
R_RISCV_TLS_DTPREL64 | TLS relocation: word64 = TLS + S + A - TLS_TP_OFFSET |
R_RISCV_TLS_GD_HI20 | PC-relative TLS GD reference: MACRO la.tls.gd |
R_RISCV_TLS_GOT_HI20 | PC-relative TLS IE GOT offset: MACRO la.tls.ie |
R_RISCV_TLS_TPREL32 | TLS relocation: word32 = TLS + S + A + S_TLS_OFFSET - TLS_DTV_OFFSET |
R_RISCV_TLS_TPREL64 | TLS relocation: word64 = TLS + S + A + S_TLS_OFFSET - TLS_DTV_OFFSET |
R_RISCV_TPREL_ADD | TLS LE thread usage: %tprel_add(symbol) |
R_RISCV_TPREL_HI20 | TLS LE thread offset: %tprel_hi(symbol) (U-Type) |
R_RISCV_TPREL_I | TP-relative TLS LE load (I-Type) |
R_RISCV_TPREL_LO12_I | TLS LE thread offset: %tprel_lo(symbol) (I-Type) |
R_RISCV_TPREL_LO12_S | TLS LE thread offset: %tprel_lo(symbol) (S-Type) |
R_RISCV_TPREL_S | TP-relative TLS LE store (S-Type) |
R_X86_64_8 | Direct 8 bit sign extended. |
R_X86_64_16 | Direct 16 bit zero extended. |
R_X86_64_32 | Direct 32 bit zero extended. |
R_X86_64_32S | Direct 32 bit sign extended. |
R_X86_64_64 | Direct 64 bit. |
R_X86_64_COPY | Copy symbol at runtime. |
R_X86_64_DTPMOD64 | ID of module containing symbol. |
R_X86_64_DTPOFF32 | Offset in TLS block. |
R_X86_64_DTPOFF64 | Offset in module’s TLS block. |
R_X86_64_GLOB_DAT | Create GOT entry. |
R_X86_64_GOT32 | 32 bit GOT entry. |
R_X86_64_GOT64 | 64-bit GOT entry offset. |
R_X86_64_GOTOFF64 | 64 bit offset to GOT. |
R_X86_64_GOTPC32 | 32 bit signed pc relative offset to GOT. |
R_X86_64_GOTPC32_TLSDESC | GOT offset for TLS descriptor.. |
R_X86_64_GOTPC64 | 64-bit PC relative offset to GOT. |
R_X86_64_GOTPCREL | 32 bit signed PC relative offset to GOT. |
R_X86_64_GOTPCREL64 | 64-bit PC relative offset to GOT entry. |
R_X86_64_GOTPCRELX | Load from 32 bit signed pc relative offset to GOT entry without REX prefix, relaxable. |
R_X86_64_GOTPLT64 | like GOT64, says PLT entry needed. |
R_X86_64_GOTTPOFF | 32 bit signed PC relative offset to GOT entry for IE symbol. |
R_X86_64_IRELATIVE | Adjust indirectly by program base. |
R_X86_64_JUMP_SLOT | Create PLT entry. |
R_X86_64_NONE | No reloc. |
R_X86_64_NUM | |
R_X86_64_PC8 | 8 bit sign extended pc relative. |
R_X86_64_PC16 | 16 bit sign extended pc relative. |
R_X86_64_PC32 | PC relative 32 bit signed. |
R_X86_64_PC64 | PC relative 64 bit. |
R_X86_64_PLT32 | 32 bit PLT address. |
R_X86_64_PLTOFF64 | 64-bit GOT relative offset to PLT entry. |
R_X86_64_RELATIVE | Adjust by program base. |
R_X86_64_RELATIVE64 | 64-bit adjust by program base. |
R_X86_64_REX_GOTPCRELX | Load from 32 bit signed pc relative offset to GOT entry with REX prefix, relaxable. |
R_X86_64_SIZE32 | Size of symbol plus 32-bit addend. |
R_X86_64_SIZE64 | Size of symbol plus 64-bit addend. |
R_X86_64_TLSDESC | TLS descriptor.. |
R_X86_64_TLSDESC_CALL | Marker for call through TLS descriptor.. |
R_X86_64_TLSGD | 32 bit signed PC relative offset to two GOT entries for GD symbol. |
R_X86_64_TLSLD | 32 bit signed PC relative offset to two GOT entries for LD symbol. |
R_X86_64_TPOFF32 | Offset in initial TLS block. |
R_X86_64_TPOFF64 | Offset in initial TLS block. |
Functions
r_to_str |