Module abi

Source
Expand description

Contains ELF constants defined in the ELF gABI and various extensions

Constants§

DF_1_CONFALT
Configuration alternative created
DF_1_DIRECT
Direct binding enabled
DF_1_DISPRELDNE
Disp reloc applied at build time
DF_1_DISPRELPND
Disp reloc applied at run-time
DF_1_EDITED
Object is modified after built
DF_1_ENDFILTEE
Filtee terminates filters search
DF_1_GLOBAL
Set RTLD_GLOBAL for this object
DF_1_GLOBAUDIT
Global auditing required
DF_1_GROUP
Set RTLD_GROUP for this object
DF_1_IGNMULDEF
DF_1_INITFIRST
Set RTLD_INITFIRST for this object
DF_1_INTERPOSE
Object is used to interpose
DF_1_KMOD
DF_1_LOADFLTR
Trigger filtee loading at runtime
DF_1_NOCOMMON
DF_1_NODEFLIB
Ignore default lib search path
DF_1_NODELETE
Set RTLD_NODELETE for this object
DF_1_NODIRECT
Object has no-direct binding
DF_1_NODUMP
Object can’t be dldump’ed
DF_1_NOHDR
DF_1_NOKSYMS
DF_1_NOOPEN
Set RTLD_NOOPEN for this object
DF_1_NORELOC
DF_1_NOW
Set RTLD_NOW for this object
DF_1_ORIGIN
$ORIGIN must be handled
DF_1_PIE
DF_1_SINGLETON
Singleton symbols are used
DF_1_STUB
DF_1_SYMINTPOSE
Object has individual interposers
DF_1_TRANS
DF_1_WEAKFILTER
DF_BIND_NOW
If set in a shared object or executable, this flag instructs the dynamic linker to process all relocations for the object containing this entry before transferring control to the program. The presence of this entry takes precedence over a directive to use lazy binding for this object when specified through the environment or via dlopen(BA_LIB).
DF_ORIGIN
This flag signifies that the object being loaded may make reference to the $ORIGIN substitution string. The dynamic linker must determine the pathname of the object containing this entry when the object is loaded.
DF_P1_GROUPPERM
Symbols from next object are not generally available
DF_P1_LAZYLOAD
Lazyload following object
DF_STATIC_TLS
If set in a shared object or executable, this flag instructs the dynamic linker to reject attempts to load this file dynamically. It indicates that the shared object or executable contains code using a static thread-local storage scheme. Implementations need not support any form of thread-local storage.
DF_SYMBOLIC
If this flag is set in a shared object library, the dynamic linker’s symbol resolution algorithm for references within the library is changed. Instead of starting a symbol search with the executable file, the dynamic linker starts from the shared object itself. If the shared object fails to supply the referenced symbol, the dynamic linker then searches the executable file and other shared objects as usual.
DF_TEXTREL
If this flag is not set, no relocation entry should cause a modification to a non-writable segment, as specified by the segment permissions in the program header table. If this flag is set, one or more relocation entries might request modifications to a non-writable segment, and the dynamic linker can prepare accordingly.
DTF_1_CONFEXP
DTF_1_PARINIT
DT_AARCH64_BTI_PLT
indicates PLTs enabled with Branch Target Identification mechanism
DT_AARCH64_PAC_PLT
indicates PLTs enabled with Pointer Authentication.
DT_AARCH64_VARIANT_PCS
must be present if there are R_{CLS}_JUMP_SLOT relocations that reference symbols marked with the STO_AARCH64_VARIANT_PCS flag set in their st_other field
DT_ARM_PREEMPTMAP
holds the address of the pre-emption map for platforms that use the DLL static binding mode
DT_ARM_SYMTABSZ
gives the number of entries in the dynamic symbol table, including the initial dummy symbol
DT_AUDIT
Object auditing
DT_BIND_NOW
If present in a shared object or executable, this entry instructs the dynamic linker to process all relocations for the object containing this entry before transferring control to the program. The presence of this entry takes precedence over a directive to use lazy binding for this object when specified through the environment or via dlopen(BA_LIB). Its use has been superseded by the DF_BIND_NOW flag.
DT_CHECKSUM
DT_CONFIG
Configuration information
DT_DEBUG
This member is used for debugging. Its contents are not specified for the ABI; programs that access this entry are not ABI-conforming.
DT_DEPAUDIT
Dependency auditing
DT_FEATURE_1
Feature selection (DTF_*)
DT_FINI
This element holds the address of the termination function.
DT_FINI_ARRAY
This element holds the address of the array of pointers to termination functions.
DT_FINI_ARRAYSZ
This element holds the size in bytes of the array of termination functions pointed to by the DT_FINI_ARRAY entry. If an object has a DT_FINI_ARRAY entry, it must also have a DT_FINI_ARRAYSZ entry.
DT_FLAGS
This element holds flag values specific to the object being loaded. Each flag value will have the name DF_flag_name. Defined values and their meanings are described below. All other values are reserved.
DT_FLAGS_1
State flags, see DF_1_* below.
DT_GNU_CONFLICT
Start of conflict section
DT_GNU_CONFLICTSZ
Size of conflict section
DT_GNU_HASH
GNU-style hash table
DT_GNU_LIBLIST
Library list
DT_GNU_LIBLISTSZ
Size of library list
DT_GNU_PRELINKED
Prelinking timestamp
DT_GUILE_ENTRY
Guile address of entry thunk
DT_GUILE_FRAME_MAPS
Guile frame maps
DT_GUILE_GC_ROOT
Guile offset of GC roots
DT_GUILE_GC_ROOT_SZ
Guile size in machine words of GC roots
DT_GUILE_VM_VERSION
Guile bytecode version
DT_HASH
This element holds the address of the symbol hash table. This hash table refers to the symbol table referenced by the DT_SYMTAB element.
DT_HIOS
Values in [DT_LOOS, DT_HIOS] are reserved for operating system-specific semantics.
DT_HIPROC
Values in [DT_LOPROC, DT_HIPROC] are reserved for processor-specific semantics.
DT_INIT
This element holds the address of the initialization function.
DT_INIT_ARRAY
This element holds the address of the array of pointers to initialization functions.
DT_INIT_ARRAYSZ
This element holds the size in bytes of the array of initialization functions pointed to by the DT_INIT_ARRAY entry. If an object has a DT_INIT_ARRAY entry, it must also have a DT_INIT_ARRAYSZ entry.
DT_JMPREL
If present, this entry’s d_ptr member holds the address of relocation entries associated solely with the procedure linkage table. Separating these relocation entries lets the dynamic linker ignore them during process initialization, if lazy binding is enabled. If this entry is present, the related entries of types DT_PLTRELSZ and DT_PLTREL must also be present.
DT_LOOS
Values in [DT_LOOS, DT_HIOS] are reserved for operating system-specific semantics.
DT_LOPROC
Values in [DT_LOPROC, DT_HIPROC] are reserved for processor-specific semantics.
DT_MOVEENT
DT_MOVESZ
DT_MOVETAB
Move table
DT_NEEDED
This element holds the string table offset of a null-terminated string, giving the name of a needed library. The offset is an index into the table recorded in the DT_STRTAB code. The dynamic array may contain multiple entries with this type. These entries’ relative order is significant, though their relation to entries of other types is not.
DT_NULL
An entry with a DT_NULL tag marks the end of the _DYNAMIC array.
DT_PLTGOT
This element holds an address associated with the procedure linkage table and/or the global offset table.
DT_PLTPAD
PLT padding
DT_PLTPADSZ
DT_PLTREL
This member specifies the type of relocation entry to which the procedure linkage table refers. The d_val member holds DT_REL or DT_RELA, as appropriate. All relocations in a procedure linkage table must use the same relocation.
DT_PLTRELSZ
This element holds the total size, in bytes, of the relocation entries associated with the procedure linkage table. If an entry of type DT_JMPREL is present, a DT_PLTRELSZ must accompany it.
DT_POSFLAG_1
Flags for DT_* entries, effecting the following DT_* entry
DT_PPC64_GLINK
DT_PPC64_OPD
DT_PPC64_OPDSZ
DT_PPC64_OPT
DT_PPC_GOT
DT_PPC_OPT
DT_PREINIT_ARRAY
This element holds the address of the array of pointers to pre-initialization functions. The DT_PREINIT_ARRAY table is processed only in an executable file; it is ignored if contained in a shared object.
DT_PREINIT_ARRAYSZ
This element holds the size in bytes of the array of pre-initialization functions pointed to by the DT_PREINIT_ARRAY entry. If an object has a DT_PREINIT_ARRAY entry, it must also have a DT_PREINIT_ARRAYSZ entry. As with DT_PREINIT_ARRAY, this entry is ignored if it appears in a shared object.
DT_REL
This element is similar to DT_RELA, except its table has implicit addends (Rel). If this element is present, the dynamic structure must also have DT_RELSZ and DT_RELENT elements.
DT_RELA
This element holds the address of a relocation table. Entries in the table have explicit addends, (Rela). An object file may have multiple relocation sections. When building the relocation table for an executable or shared object file, the link editor catenates those sections to form a single table. Although the sections remain independent in the object file, the dynamic linker sees a single table. When the dynamic linker creates the process image for an executable file or adds a shared object to the process image, it reads the relocation table and performs the associated actions. If this element is present, the dynamic structure must also have DT_RELASZ and DT_RELAENT elements. When relocation is mandatory for a file, either DT_RELA or DT_REL may occur (both are permitted but not required).
DT_RELACOUNT
DT_RELAENT
This element holds the size, in bytes, of the DT_RELA relocation entry.
DT_RELASZ
This element holds the total size, in bytes, of the DT_RELA relocation table.
DT_RELCOUNT
DT_RELENT
This element holds the size, in bytes, of the DT_REL relocation entry.
DT_RELSZ
This element holds the total size, in bytes, of the DT_REL relocation table.
DT_RISCV_VARIANT_CC
An object must have the dynamic tag DT_RISCV_VARIANT_CC if it has one or more R_RISCV_JUMP_SLOT relocations against symbols with the STO_RISCV_VARIANT_CC attribute.
DT_RPATH
This element holds the string table offset of a null-terminated search library search path string. The offset is an index into the table recorded in the DT_STRTAB entry. Its use has been superseded by DT_RUNPATH.
DT_RUNPATH
This element holds the string table offset of a null-terminated library search path string. The offset is an index into the table recorded in the DT_STRTAB entry.
DT_SONAME
This element holds the string table offset of a null-terminated string, giving the name of the shared object. The offset is an index into the table recorded in the DT_STRTAB entry.
DT_STRSZ
This element holds the size, in bytes, of the string table.
DT_STRTAB
This element holds the address of the string table. Symbol names, library names, and other strings reside in this table.
DT_SYMBOLIC
This element’s presence in a shared object library alters the dynamic linker’s symbol resolution algorithm for references within the library. Instead of starting a symbol search with the executable file, the dynamic linker starts from the shared object itself. If the shared object fails to supply the referenced symbol, the dynamic linker then searches the executable file and other shared objects as usual. Its use has been superseded by the DF_SYMBOLIC flag.
DT_SYMENT
This element holds the size, in bytes, of a symbol table entry.
DT_SYMINENT
Entry size of syminfo table
DT_SYMINFO
Syminfo table
DT_SYMINSZ
Size of syminfo table (in bytes)
DT_SYMTAB
This element holds the address of the symbol table.
DT_SYMTAB_SHNDX
This element holds the address of the SHT_SYMTAB_SHNDX section associated with the dynamic symbol table referenced by the DT_SYMTAB element.
DT_TEXTREL
This member’s absence signifies that no relocation entry should cause a modification to a non-writable segment, as specified by the segment permissions in the program header table. If this member is present, one or more relocation entries might request modifications to a non-writable segment, and the dynamic linker can prepare accordingly. Its use has been superseded by the DF_TEXTREL flag.
DT_TLSDESC_GOT
DT_TLSDESC_PLT
DT_VERDEF
Address of version definition table
DT_VERDEFNUM
Number of version definitions
DT_VERNEED
Address of table with needed versions
DT_VERNEEDNUM
Number of needed versions
DT_VERSYM
EF_ARM_ABI_FLOAT_HARD
Set in executable file headers (e_type = ET_EXEC or ET_DYN) to note that the executable file was built to conform to the hardware floating-point procedure-call standard.
EF_ARM_ABI_FLOAT_SOFT
Set in executable file headers (e_type = ET_EXEC or ET_DYN) to note explicitly that the executable file was built to conform to the software floating-point procedure-call standard (the base standard). If both EF_ARM_ABI_FLOAT_XXXX bits are clear, conformance to the base procedure-call standard is implied.
EF_ARM_BE8
The ELF file contains BE-8 code, suitable for execution on an Arm Architecture v6 processor. This flag must only be set on an executable file.
EF_ARM_EABIMASK
This masks an 8-bit version number, the version of the ABI to which this ELF file conforms. This ABI is version 5. A value of 0 denotes unknown conformance.
EF_ARM_EABI_UNKNOWN
EF_ARM_EABI_VER1
EF_ARM_EABI_VER2
EF_ARM_EABI_VER3
EF_ARM_EABI_VER4
EF_ARM_EABI_VER5
EF_ARM_GCCMASK
Legacy code (ABI version 4 and earlier) generated by gcc-arm-xxx might use these bits.
EF_ARM_SOFT_FLOAT
Compatible with legacy (pre version 5) gcc use as EF_ARM_SOFT_FLOAT
EF_ARM_VFP_FLOAT
Compatible with legacy (pre version 5) gcc use as EF_ARM_VFP_FLOAT.
EF_PPC64_ABI
EF_PPC_EMB
PowerPC embedded flag
EF_PPC_RELOCATABLE
PowerPC -mrelocatable flag
EF_PPC_RELOCATABLE_LIB
PowerPC -mrelocatable-lib flag
EF_RISCV_FLOAT_ABI_DOUBLE
EF_RISCV_FLOAT_ABI_MASK
This is used as a mask to test for one of the above floating-point ABIs, e.g., (e_flags & EF_RISCV_FLOAT_ABI) == EF_RISCV_FLOAT_ABI_DOUBLE.
EF_RISCV_FLOAT_ABI_QUAD
EF_RISCV_FLOAT_ABI_SINGLE
EF_RISCV_FLOAT_ABI_SOFT
EF_RISCV_RVC
This bit is set when the binary targets the C ABI.
EF_RISCV_RVE
This bit is set when the binary targets the E ABI.
EF_RISCV_TSO
This bit is set when the binary requires the RVTSO memory consistency model.
EI_ABIVERSION
Location of ABI version field in ELF file header ident array
EI_CLASS
Location of ELF class field in ELF file header ident array
EI_DATA
Location of data format field in ELF file header ident array
EI_MAG0
Location of first ELF magic number byte
EI_MAG1
Location of second ELF magic number byte
EI_MAG2
Location of third ELF magic number byte
EI_MAG3
Location of fourth ELF magic number byte
EI_NIDENT
Length of ELF file header platform-independent identification fields (e_ident[])
EI_OSABI
Location of OS ABI field in ELF file header ident array
EI_PAD
Start of padding bytes
EI_VERSION
Location of ELF version field in ELF file header ident array
ELFCLASS32
32-bit ELF file
ELFCLASS64
64-bit ELF file
ELFCLASSNONE
Invalid ELF file class
ELFCOMPRESS_HIOS
Values in [ELFCOMPRESS_LOOS, ELFCOMPRESS_HIOS] are reserved for operating system-specific semantics.
ELFCOMPRESS_HIPROC
Values in [ELFCOMPRESS_LOPROC, ELFCOMPRESS_HIPROC] are reserved for processor-specific semantics.
ELFCOMPRESS_LOOS
Values in [ELFCOMPRESS_LOOS, ELFCOMPRESS_HIOS] are reserved for operating system-specific semantics.
ELFCOMPRESS_LOPROC
Values in [ELFCOMPRESS_LOPROC, ELFCOMPRESS_HIPROC] are reserved for processor-specific semantics.
ELFCOMPRESS_ZLIB
ZLIB/DEFLATE
ELFCOMPRESS_ZSTD
zstd algorithm
ELFDATA2LSB
2’s complement values, with the least significant byte occupying the lowest address.
ELFDATA2MSB
2’s complement values, with the most significant byte occupying the lowest address.
ELFDATANONE
Invalid ELF data format
ELFMAG0
ELF magic number byte 1
ELFMAG1
ELF magic number byte 2
ELFMAG2
ELF magic number byte 3
ELFMAG3
ELF magic number byte 4
ELFMAGIC
ELFOSABI_AIX
AIX
ELFOSABI_AROS
Amiga Research OS
ELFOSABI_CLOUDABI
Nuxi CloudABI
ELFOSABI_FENIXOS
The FenixOS highly scalable multi-core OS
ELFOSABI_FREEBSD
FreeBSD
ELFOSABI_GNU
GNU
ELFOSABI_HPUX
Hewlett-Packard HP-UX
ELFOSABI_IRIX
IRIX
ELFOSABI_LINUX
Linux historical - alias for ELFOSABI_GNU
ELFOSABI_MODESTO
Novell Modesto
ELFOSABI_NETBSD
NetBSD
ELFOSABI_NONE
No extensions or unspecified
ELFOSABI_NSK
Hewlett-Packard Non-Stop Kernel
ELFOSABI_OPENBSD
Open BSD
ELFOSABI_OPENVMS
Open VMS
ELFOSABI_OPENVOS
Stratus Technologies OpenVOS
ELFOSABI_SOLARIS
Sun Solaris
ELFOSABI_SYSV
Alias of unspecified for UNIX System V ABI
ELFOSABI_TRU64
Compaq TRU64 UNIX
ELF_NOTE_GNU
GNU-extension notes have this name
ELF_NOTE_GNU_ABI_TAG_OS_FREEBSD
ELF_NOTE_GNU_ABI_TAG_OS_GNU
ELF_NOTE_GNU_ABI_TAG_OS_LINUX
ELF_NOTE_GNU_ABI_TAG_OS_SOLARIS2
EM_68HC05
Motorola MC68HC05 Microcontroller
EM_68HC08
Motorola MC68HC08 Microcontroller
EM_68HC11
Motorola MC68HC11 Microcontroller
EM_68HC12
Motorola M68HC12
EM_68HC16
Motorola MC68HC16 Microcontroller
EM_68K
Motorola 68000
EM_78KOR
Renesas 78KOR family
EM_88K
Motorola 88000
EM_386
Intel 80386
EM_860
Intel 80860
EM_960
Intel 80960
EM_8051
Intel 8051 and variants
EM_56800EX
Freescale 56800EX Digital Signal Controller (DSC)
EM_AARCH64
ARM 64-bit architecture (AARCH64)
EM_ALPHA
Digital Alpha
EM_ALTERA_NIOS2
Altera Nios II soft-core processor
EM_AMDGPU
AMD GPU architecture
EM_ARC
Argonaut RISC Core, Argonaut Technologies Inc.
EM_ARCA
Arca RISC Microprocessor
EM_ARC_COMPACT
ARC International ARCompact processor (old spelling/synonym: EM_ARC_A5)
EM_ARC_COMPACT2
Synopsys ARCompact V2
EM_ARM
ARM 32-bit architecture (AARCH32)
EM_AVR
Atmel AVR 8-bit microcontroller
EM_AVR32
Atmel Corporation 32-bit microprocessor family
EM_BA1
Beyond BA1 CPU architecture
EM_BA2
Beyond BA2 CPU architecture
EM_BLACKFIN
Analog Devices Blackfin (DSP) processor
EM_BPF
Linux BPF
EM_C166
Infineon C16x/XC16x processor
EM_CDP
Paneve CDP architecture family
EM_CE
Freescale Communication Engine RISC core
EM_CLOUDSHIELD
CloudShield architecture family
EM_COGE
Cognitive Smart Memory Processor
EM_COLDFIRE
Motorola ColdFire
EM_COOL
Bluechip Systems CoolEngine
EM_COREA_1ST
KIPO-KAIST Core-A 1st generation processor family
EM_COREA_2ND
KIPO-KAIST Core-A 2nd generation processor family
EM_CR
National Semiconductor CompactRISC microprocessor
EM_CR16
National Semiconductor CompactRISC CR16 16-bit microprocessor
EM_CRAYNV2
Cray Inc. NV2 vector architecture
EM_CRIS
Axis Communications 32-bit embedded processor
EM_CRX
National Semiconductor CompactRISC CRX microprocessor
EM_CSR_KALIMBA
CSR Kalimba architecture family
EM_CUDA
NVIDIA CUDA architecture
EM_CYPRESS_M8C
Cypress M8C microprocessor
EM_D10V
Mitsubishi D10V
EM_D30V
Mitsubishi D30V
EM_DSP24
New Japan Radio (NJR) 24-bit DSP Processor
EM_DSPIC30F
Microchip Technology dsPIC30F Digital Signal Controller
EM_DXP
Icera Semiconductor Inc. Deep Execution Processor
EM_ECOG1
Cyan Technology eCOG1X family
EM_ECOG2
Cyan Technology eCOG2 microprocessor
EM_ECOG1X
Cyan Technology eCOG1X family
EM_ECOG16
Cyan Technology eCOG16 family
EM_ETPU
Freescale Extended Time Processing Unit
EM_EXCESS
eXcess: 16/32/64-bit configurable embedded CPU
EM_F2MC16
Fujitsu F2MC16
EM_FIREPATH
Element 14 64-bit DSP Processor
EM_FR20
Fujitsu FR20
EM_FR30
Fujitsu FR30
EM_FT32
FTDI Chip FT32 high performance 32-bit RISC architecture
EM_FX66
Siemens FX66 microcontroller
EM_H8S
Hitachi H8S
EM_H8_300
Hitachi H8/300
EM_H8_500
Hitachi H8/500
EM_H8_300H
Hitachi H8/300H
EM_HUANY
Harvard University machine-independent object files
EM_IAMCU
Intel MCU
EM_IA_64
Intel IA-64 processor architecture
EM_INTEL205
Reserved by Intel
EM_INTEL206
Reserved by Intel
EM_INTEL207
Reserved by Intel
EM_INTEL208
Reserved by Intel
EM_INTEL209
Reserved by Intel
EM_IP2K
Ubicom IP2xxx microcontroller family
EM_JAVELIN
Infineon Technologies 32-bit embedded processor
EM_K10M
Intel K10M
EM_KM32
KM211 KM32 32-bit processor
EM_KMX8
KM211 KMX8 8-bit processor
EM_KMX16
KM211 KMX16 16-bit processor
EM_KMX32
KM211 KMX32 32-bit processor
EM_KVARC
KM211 KVARC processor
EM_L10M
Intel L10M
EM_LATTICEMICO32
RISC processor for Lattice FPGA architecture
EM_M32
AT&T WE 32100
EM_M16C
Renesas M16C series microprocessors
EM_M32C
Renesas M32C series microprocessors
EM_M32R
Mitsubishi M32R
EM_MANIK
M2000 Reconfigurable RISC Microprocessor
EM_MAX
MAX Processor
EM_MAXQ30
Dallas Semiconductor MAXQ30 Core Micro-controllers
EM_MCHP_PIC
Microchip 8-bit PIC(r) family
EM_MCST_ELBRUS
MCST Elbrus general purpose hardware architecture
EM_ME16
Toyota ME16 processor
EM_METAG
Imagination Technologies META processor architecture
EM_MICROBLAZE
Xilinx MicroBlaze 32-bit RISC soft processor core
EM_MIPS
MIPS I Architecture
EM_MIPS_RS3_LE
MIPS RS3000 Little-endian
EM_MIPS_X
Stanford MIPS-X
EM_MMA
Fujitsu MMA Multimedia Accelerator
EM_MMDSP_PLUS
STMicroelectronics 64bit VLIW Data Signal Processor
EM_MMIX
Donald Knuth’s educational 64-bit processor
EM_MN10200
Matsushita MN10200
EM_MN10300
Matsushita MN10300
EM_MOXIE
Moxie processor family
EM_MSP430
Texas Instruments embedded microcontroller msp430
EM_NCPU
Sony nCPU embedded RISC processor
EM_NDR1
Denso NDR1 microprocessor
EM_NDS32
Andes Technology compact code size embedded RISC processor family
EM_NONE
No machine
EM_NORC
Nanoradio Optimized RISC
EM_NS32K
National Semiconductor 32000 series
EM_OPEN8
Open8 8-bit RISC soft processor core
EM_OPENRISC
OpenRISC 32-bit embedded processor
EM_PARISC
Hewlett-Packard PA-RISC
EM_PCP
Siemens PCP
EM_PDP10
Digital Equipment Corp. PDP-10
EM_PDP11
Digital Equipment Corp. PDP-11
EM_PDSP
Sony DSP Processor
EM_PJ
picoJava
EM_PPC
PowerPC
EM_PPC64
64-bit PowerPC
EM_PRISM
SiTera Prism
EM_QDSP6
QUALCOMM DSP6 Processor
EM_R32C
Renesas R32C series microprocessors
EM_RCE
Motorola RCE
EM_RH32
TRW RH-32
EM_RISCV
RISC-V
EM_RL78
Renesas RL78 family
EM_RS08
Freescale RS08 embedded processor
EM_RX
Renesas RX family
EM_S370
IBM System/370 Processor
EM_S390
IBM System/390 Processor
EM_SCORE7
Sunplus S+core7 RISC processor
EM_SEP
Sharp embedded microprocessor
EM_SE_C17
Seiko Epson C17 family
EM_SE_C33
S1C33 Family of Seiko Epson processors
EM_SH
Hitachi SH
EM_SHARC
Analog Devices SHARC family of 32-bit DSP processors
EM_SLE9X
Infineon Technologies SLE9X core
EM_SNP1K
Trebia SNP 1000 processor
EM_SPARC
SPARC
EM_SPARC32PLUS
Enhanced instruction set SPARC
EM_SPARCV9
SPARC Version 9
EM_SPU
IBM SPU/SPC
EM_ST7
STMicroelectronics ST7 8-bit microcontroller
EM_ST9PLUS
STMicroelectronics ST9+ 8/16 bit microcontroller
EM_ST19
STMicroelectronics ST19 8-bit microcontroller
EM_ST100
STMicroelectronics ST100 processor
EM_ST200
STMicroelectronics (www.st.com) ST200 microcontroller
EM_STARCORE
Motorola Star*Core processor
EM_STM8
STMicroeletronics STM8 8-bit microcontroller
EM_STXP7X
STMicroelectronics STxP7x family of configurable and extensible RISC processors
EM_SVX
Silicon Graphics SVx
EM_TILE64
Tilera TILE64 multicore architecture family
EM_TILEGX
Tilera TILE-Gx multicore architecture family
EM_TILEPRO
Tilera TILEPro multicore architecture family
EM_TINYJ
Advanced Logic Corp. TinyJ embedded processor family
EM_TI_ARP32
Texas Instruments Application Specific RISC Processor, 32bit fetch
EM_TI_C2000
The Texas Instruments TMS320C2000 DSP family
EM_TI_C5500
The Texas Instruments TMS320C55x DSP family
EM_TI_C6000
The Texas Instruments TMS320C6000 DSP family
EM_TI_PRU
Texas Instruments Programmable Realtime Unit
EM_TMM_GPP
Thompson Multimedia General Purpose Processor
EM_TPC
Tenor Network TPC processor
EM_TRICORE
Siemens TriCore embedded processor
EM_TRIMEDIA
NXP Semiconductors TriMedia architecture family
EM_TSK3000
Altium TSK3000 core
EM_UNICORE
Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University
EM_V800
NEC V800
EM_V850
NEC v850
EM_VAX
Digital VAX
EM_VIDEOCORE
Alphamosaic VideoCore processor
EM_VIDEOCORE3
Broadcom VideoCore III processor
EM_VIDEOCORE5
Broadcom VideoCore V processor
EM_VISIUM
Controls and Data Services VISIUMcore processor
EM_VPP500
Fujitsu VPP500
EM_X86_64
AMD x86-64 architecture
EM_XCORE
XMOS xCORE processor family
EM_XGATE
Motorola XGATE embedded processor
EM_XIMO16
New Japan Radio (NJR) 16-bit DSP Processor
EM_XTENSA
Tensilica Xtensa Architecture
EM_Z80
Zilog Z80
EM_ZSP
LSI Logic 16-bit DSP Processor
ET_CORE
Core file
ET_DYN
Shared object file
ET_EXEC
Executable file
ET_HIOS
Operating system-specific
ET_HIPROC
Processor-specific
ET_LOOS
Operating system-specific
ET_LOPROC
Processor-specific
ET_NONE
64-255 Architecture-specific value range No file type
ET_REL
Relocatable file
EV_CURRENT
Current version
EV_NONE
Invalid version
GNU_PROPERTY_AARCH64_FEATURE_1_AND
GNU_PROPERTY_AARCH64_FEATURE_1_BTI
GNU_PROPERTY_AARCH64_FEATURE_1_PAC
NT_386_IOPERM
x86 io permission bitmap (1=deny)
NT_386_TLS
i386 TLS slots (struct user_desc)
NT_ARM_HW_BREAK
ARM hardware breakpoint registers
NT_ARM_HW_WATCH
ARM hardware watchpoint registers
NT_ARM_PACA_KEYS
ARM pointer authentication address keys
NT_ARM_PACG_KEYS
ARM pointer authentication generic key
NT_ARM_PAC_ENABLED_KEYS
AArch64 pointer authentication enabled keys
NT_ARM_PAC_MASK
ARM pointer authentication code masks
NT_ARM_SVE
ARM Scalable Vector Extension registers
NT_ARM_SYSTEM_CALL
ARM system call number
NT_ARM_TAGGED_ADDR_CTRL
AArch64 tagged address control.
NT_ARM_TLS
ARM TLS register
NT_ARM_VFP
ARM VFP/NEON registers
NT_ASRS
Contains copy of asrset struct
NT_AUXV
Contains copy of auxv array
NT_FILE
Contains information about mapped files
NT_FPREGSET
Contains copy of fpregset struct
NT_GNU_ABI_TAG
ABI information The descriptor consists of words: word 0: OS descriptor word 1: major version of the ABI word 2: minor version of the ABI word 3: subminor version of the ABI
NT_GNU_BUILD_ID
Build ID bits as generated by ld –build-id.
NT_GNU_GOLD_VERSION
Version note generated by GNU gold containing a version string
NT_GNU_HWCAP
Synthetic hwcap information
NT_GNU_PROPERTY_TYPE_0
Program property note which describes special handling requirements for linker and run-time loader.
NT_GWINDOWS
Contains copy of gwindows struct
NT_LWPSINFO
Contains copy of lwpinfo struct
NT_LWPSTATUS
Contains copy of lwpstatus struct
NT_PLATFORM
String from sysinfo(SI_PLATFORM)
NT_PPC_DSCR
Data Stream Control Register
NT_PPC_EBB
Event Based Branch Registers
NT_PPC_PKEY
Memory Protection Keys registers
NT_PPC_PMU
Performance Monitor Registers
NT_PPC_PPR
Program Priority Register
NT_PPC_SPE
PowerPC SPE/EVR registers
NT_PPC_TAR
Target Address Register
NT_PPC_TM_CDSCR
TM checkpointed Data Stream Control Register
NT_PPC_TM_CFPR
TM checkpointed FPR Registers
NT_PPC_TM_CGPR
TM checkpointed GPR Registers
NT_PPC_TM_CPPR
TM checkpointed Program Priority Register
NT_PPC_TM_CTAR
TM checkpointed Target Address Register
NT_PPC_TM_CVMX
TM checkpointed VMX Registers
NT_PPC_TM_CVSX
TM checkpointed VSX Registers
NT_PPC_TM_SPR
TM Special Purpose Registers
NT_PPC_VMX
/// PowerPC Altivec/VMX registers
NT_PPC_VSX
PowerPC VSX registers
NT_PRCRED
Contains copy of prcred struct
NT_PRFPREG
Contains copy of fpregset struct
NT_PRFPXREG
Contains copy of fprxregset struct
NT_PRPSINFO
Contains copy of prpsinfo struct
NT_PRSTATUS
Contains copy of prstatus struct
NT_PRXFPREG
Contains copy of user_fxsr_struct
NT_PRXREG
Contains copy of prxregset struct
NT_PSINFO
Contains copy of psinfo struct
NT_PSTATUS
Contains copy of pstatus struct
NT_SIGINFO
Contains copy of siginfo_t, size might increase
NT_TASKSTRUCT
Contains copy of task structure
NT_UTSNAME
Contains copy of utsname struct
NT_VMCOREDD
Vmcore Device Dump Note
NT_X86_XSTATE
x86 extended state using xsave
PF_MASKOS
PF_MASKPROC
PF_NONE
PF_R
Readable program segment
PF_W
Writable program segment
PF_X
Executable program segment
PN_XNUM
If the number of program headers is greater than or equal to PN_XNUM (0xffff), this member has the value PN_XNUM (0xffff). The actual number of program header table entries is contained in the sh_info field of the section header at index 0. Otherwise, the sh_info member of the initial section header entry contains the value zero.
PPC64_OPT_LOCALENTRY
PPC64_OPT_MULTI_TOC
PPC64_OPT_TLS
PPC_OPT_TLS
PowerPC specific values for the DT_PPC_OPT Dyn entry.
PT_AARCH64_ARCHEXT
Architecture compatibility information.
PT_AARCH64_MEMTAG_MTE
Reserved for MTE memory tag data dumps in core files (if present) hold MTE memory tags for a particular memory range. At present they are defined for core dump files of type ET_CORE See https://www.kernel.org/doc/html/latest/arm64/memory-tagging-extension.html#core-dump-support
PT_AARCH64_UNWIND
(if present) describes the location of a program’s exception unwind tables.
PT_ARM_ARCHEXT
Architecture compatibility information.
PT_ARM_ARCHEXT_ARCHMSK
Masks bits describing the base architecture required by the executable.
PT_ARM_ARCHEXT_ARCHV4
Architecture v4
PT_ARM_ARCHEXT_ARCHV6
Architecture v6
PT_ARM_ARCHEXT_ARCHV7
Architecture v7 (in this case the architecture profile may also be required to fully specify the needed execution environment).
PT_ARM_ARCHEXT_ARCHV4T
Architecture v4T
PT_ARM_ARCHEXT_ARCHV5T
Architecture v5T
PT_ARM_ARCHEXT_ARCHV5TE
Architecture v5TE
PT_ARM_ARCHEXT_ARCHV5TEJ
Architecture v5TEJ
PT_ARM_ARCHEXT_ARCHV6K
Architecture v6K
PT_ARM_ARCHEXT_ARCHV6KZ
Architecture v6KZ
PT_ARM_ARCHEXT_ARCHV6M
Architecture v6M (e.g. Cortex-M0)
PT_ARM_ARCHEXT_ARCHV6SM
Architecture v6S-M (e.g. Cortex-M0)
PT_ARM_ARCHEXT_ARCHV6T2
Architecture v6T2
PT_ARM_ARCHEXT_ARCHV7EM
Architecture v7E-M
PT_ARM_ARCHEXT_ARCH_UNKN
The needed architecture is unknown or specified in some other way
PT_ARM_ARCHEXT_FMTMSK
Masks bits describing the format of data in subsequent words.
PT_ARM_ARCHEXT_FMT_ABI
See https://github.com/ARM-software/abi-aa/blob/main/aaelf32/aaelf32.rst#platform-architecture-compatibility-data and https://github.com/ARM-software/abi-aa/blob/main/addenda32/addenda32.rst
PT_ARM_ARCHEXT_FMT_OS
There are no additional words of data. However, if EF_OSABI is non-zero, the relevant platform ABI may define additional data that follows the initial word.
PT_ARM_ARCHEXT_PROFMSK
Masks bits describing the architecture profile required by the executable.
PT_ARM_ARCHEXT_PROF_ARM
(‘A’<<16) The executable file requires the Application profile
PT_ARM_ARCHEXT_PROF_CLASSIC
(‘S’<<16) The executable file requires the ‘classic’ (‘A’ or ‘R’ profile) exception model.
PT_ARM_ARCHEXT_PROF_MC
(‘M’<<16) The executable file requires the Microcontroller profile
PT_ARM_ARCHEXT_PROF_NONE
The architecture has no profile variants, or the image has no profile-specific constraints
PT_ARM_ARCHEXT_PROF_RT
(‘R’<<16) The executable file requires the Real-Time profile
PT_ARM_EXIDX
alias for unwind
PT_ARM_UNWIND
Exception unwind tables
PT_DYNAMIC
Dynamic linking information
PT_GNU_EH_FRAME
GCC .eh_frame_hdr segment
PT_GNU_PROPERTY
The segment contains .note.gnu.property section
PT_GNU_RELRO
Read-only after relocation
PT_GNU_STACK
Indicates stack executability
PT_HIOS
Values between [PT_LOOS, PT_HIOS] in this inclusive range are reserved for operating system-specific semantics.
PT_HIPROC
Values between [PT_LOPROC, PT_HIPROC] in this inclusive range are reserved for processor-specific semantics.
PT_INTERP
Program interpreter
PT_LOAD
Loadable program segment
PT_LOOS
Values between [PT_LOOS, PT_HIOS] in this inclusive range are reserved for operating system-specific semantics.
PT_LOPROC
Values between [PT_LOPROC, PT_HIPROC] in this inclusive range are reserved for processor-specific semantics.
PT_NOTE
Auxiliary information
PT_NULL
Program header table entry unused
PT_PHDR
The program header table
PT_RISCV_ATTRIBUTES
PT_SHLIB
Unused
PT_TLS
Thread-local storage segment
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: u32 = 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: u32 = 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_G2
GOT-rel. o. MOV{N,Z} imm. 47:32.
R_AARCH64_MOVW_GOTOFF_G3
GOT-rel. o. MOV{N,Z} imm. 63:48.
R_AARCH64_MOVW_GOTOFF_G1_NC
Likewise for MOVK; no check.
R_AARCH64_MOVW_GOTOFF_G2_NC
Likewise for MOVK; no check.
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_G2
PC-rel. MOV{N,Z} imm. from 47:32.
R_AARCH64_MOVW_PREL_G3
PC-rel. MOV{N,Z} imm. from 63:48.
R_AARCH64_MOVW_PREL_G1_NC
Likewise for MOVK; no check.
R_AARCH64_MOVW_PREL_G2_NC
Likewise for MOVK; no check.
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_G2
Dir. MOVZ imm. from bits 47:32.
R_AARCH64_MOVW_UABS_G3
Dir. MOV{K,Z} imm. from 63:48.
R_AARCH64_MOVW_UABS_G1_NC
Likewise for MOVK; no check.
R_AARCH64_MOVW_UABS_G2_NC
Likewise for MOVK; no check.
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: u32 = 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: u32 = 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_G2
TLS DTP-rel. MOV{N,Z} 47:32.
R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
Likewise; MOVK; no check.
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_G2
TLS TP-rel. MOV{N,Z} 47:32.
R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
Likewise; MOVK; no check.
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. S + A
R_ARM_ABS12
Direct 12 bit. S + A
R_ARM_ABS16
Direct 16 bit. S + A
R_ARM_ABS32
Direct 32 bit. (S + A) | T
R_ARM_ABS32_NOI
Direct 32-bit. S + A
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). ((S + A) | T) – P
R_ARM_ALU_PC_G0_NC
PC relative (ADD, SUB). ((S + A) | T) – P
R_ARM_ALU_PC_G1
PC relative (ADD, SUB). ((S + A) | T) – P
R_ARM_ALU_PC_G2
PC relative (ADD, SUB). ((S + A) | T) – P
R_ARM_ALU_PC_G1_NC
PC relative (ADD, SUB). ((S + A) | T) – P
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). ((S + A) | T) – B(S)
R_ARM_ALU_SB_G0_NC
Program base relative (ADD,SUB). ((S + A) | T) – B(S)
R_ARM_ALU_SB_G1
Program base relative (ADD,SUB). ((S + A) | T) – B(S)
R_ARM_ALU_SB_G2
Program base relative (ADD,SUB). ((S + A) | T) – B(S)
R_ARM_ALU_SB_G1_NC
Program base relative (ADD,SUB). ((S + A) | T) – B(S)
R_ARM_BASE_ABS
Adjust by program base. B(S) + A
R_ARM_BASE_BREL
32 bit GOT entry. GOT(S) + A – GOT_ORG
R_ARM_BASE_PREL
32 bit PC relative offset to GOT. B(S) + A – P
R_ARM_BREL_ADJ
R_ARM_CALL
PC relative 24 bit (BL, BLX). ((S + A) | T) – P
R_ARM_COPY
dynamic reloc Copy symbol at runtime.
R_ARM_GLOB_DAT
Create GOT entry. (S + A) | T
R_ARM_GNU_VTENTRY
R_ARM_GNU_VTINHERIT
R_ARM_GOTOFF12
12 bit, GOT entry relative to GOT origin (LDR, STR). S + A – GOT_ORG
R_ARM_GOTOFF32
32 bit offset to GOT. ((S + A) | T) – GOT_ORG
R_ARM_GOTRELAX
R_ARM_GOT_ABS
GOT entry. GOT(S) + A
R_ARM_GOT_BREL12
GOT entry relative to GOT origin (LDR). GOT(S) + A – GOT_ORG
R_ARM_GOT_PREL
PC relative GOT entry. GOT(S) + A – P
R_ARM_IRELATIVE
R_ARM_JUMP24
PC relative 24 bit (B, BL{cond}). ((S + A) | T) – P
R_ARM_JUMP_SLOT
Create PLT entry. (S + A) | T
R_ARM_LDC_PC_G0
PC relative (LDC, STC). S + A – P
R_ARM_LDC_PC_G1
PC relative (LDC, STC). S + A – P
R_ARM_LDC_PC_G2
PC relative (LDC, STC). S + A – P
R_ARM_LDC_SB_G0
Program base relative (LDC,STC). S + A – B(S)
R_ARM_LDC_SB_G1
Program base relative (LDC,STC). S + A – B(S)
R_ARM_LDC_SB_G2
Program base relative (LDC,STC). S + A – B(S)
R_ARM_LDRS_PC_G0
PC relative (STR{D,H}, LDR{D,SB,H,SH}). S + A – P
R_ARM_LDRS_PC_G1
PC relative (STR{D,H}, LDR{D,SB,H,SH}). S + A – P
R_ARM_LDRS_PC_G2
PC relative (STR{D,H}, LDR{D,SB,H,SH}). S + A – P
R_ARM_LDRS_SB_G0
Program base relative (LDR, STR, LDRB, STRB). S + A – B(S)
R_ARM_LDRS_SB_G1
Program base relative (LDR, STR, LDRB, STRB). S + A – B(S)
R_ARM_LDRS_SB_G2
Program base relative (LDR, STR, LDRB, STRB). S + A – B(S)
R_ARM_LDR_PC_G0
S + A – P
R_ARM_LDR_PC_G1
PC relative (LDR,STR,LDRB,STRB). S + A – P
R_ARM_LDR_PC_G2
PC relative (LDR,STR,LDRB,STRB). S + A – P
R_ARM_LDR_SBREL_11_0
Deprecated, prog. base relative.
R_ARM_LDR_SB_G0
Program base relative (LDR, STR, LDRB, STRB). S + A – B(S)
R_ARM_LDR_SB_G1
Program base relative (LDR, STR, LDRB, STRB). S + A – B(S)
R_ARM_LDR_SB_G2
Program base relative (LDR, STR, LDRB, STRB). S + A – B(S)
R_ARM_ME_TOO
Obsolete.
R_ARM_MOVT_ABS
Direct high 16-bit (MOVT). S + A
R_ARM_MOVT_BREL
Program base relative high 16 bit (MOVT). S + A – B(S)
R_ARM_MOVT_PREL
PC relative (MOVT). S + A - P
R_ARM_MOVW_ABS_NC
Direct 16-bit (MOVW). (S + A) | T
R_ARM_MOVW_BREL
Program base relative 16 bit (MOVW). ((S + A) | T) – B(S)
R_ARM_MOVW_BREL_NC
Program base relative 16 bit (MOVW). ((S + A) | T) – B(S)
R_ARM_MOVW_PREL_NC
PC relative 16-bit (MOVW). ((S + A) | T) – P
R_ARM_NONE
no reloc
R_ARM_PC24
Deprecated PC relative 26 bit branch. ((S + A) | T) – P
R_ARM_PLT32
Deprecated, 32 bit PLT address.
R_ARM_PLT32_ABS
PLT(S) + A
R_ARM_PREL31
32 bit PC relative. ((S + A) | T) – P
R_ARM_REL32
PC relative 32 bit. ((S + A) | T) | – P
R_ARM_REL32_NOI
PC relative 32-bit. S + A - P
R_ARM_RELATIVE
Adjust by program base. B(S) + A
R_ARM_SBREL31
Program base relative. ((S + A) | T) – B(S)
R_ARM_SBREL32
((S + A) | T) – B(S)
R_ARM_TARGET1
R_ARM_TARGET2
R_ARM_THM_ABS5
Direct & 0x7C (LDR, STR). S + A
R_ARM_THM_ALU_ABS_G0_NC
Static Thumb16 (S + A) | T
R_ARM_THM_ALU_ABS_G3
Static Thumb16 S + A
R_ARM_THM_ALU_ABS_G1_NC
Static Thumb16 S + A
R_ARM_THM_ALU_ABS_G2_NC
Static Thumb16 S + A
R_ARM_THM_ALU_PREL_11_0
PC relative 12 bit (Thumb32 ADR.W). ((S + A) | T) – Pa
R_ARM_THM_BF12
Static Arm ((S + A) | T) – P
R_ARM_THM_BF16
Static Arm ((S + A) | T) – P
R_ARM_THM_BF18
Static Arm ((S + A) | T) – P
R_ARM_THM_CALL
PC relative 24 bit (Thumb32 BL). ((S + A) | T) – P
R_ARM_THM_GOT_BREL12
GOT entry relative to GOT origin, 12 bit (Thumb32 LDR). GOT(S) + A – GOT_ORG
R_ARM_THM_JUMP6
PC relative X & 0x7E (Thumb16 CBZ, CBNZ). S + A – P
R_ARM_THM_JUMP8
PC relative & 0x1FE (Thumb16 B/B{cond}). S + A – P
R_ARM_THM_JUMP11
PC relative & 0xFFE (Thumb16 B). S + A – P
R_ARM_THM_JUMP19
PC relative 20 bit (Thumb32 B{cond}.W). ((S + A) | T) – P
R_ARM_THM_JUMP24
PC relative 24 bit (Thumb32 B.W). ((S + A) | T) – P
R_ARM_THM_MOVT_ABS
Direct high 16 bit (Thumb32 MOVT). S + A
R_ARM_THM_MOVT_BREL
Program base relative high 16 bit (Thumb32 MOVT). S + A – B(S)
R_ARM_THM_MOVT_PREL
PC relative high 16 bit (Thumb32 MOVT). S + A – P
R_ARM_THM_MOVW_ABS_NC
Direct 16 bit (Thumb32 MOVW). (S + A) | T
R_ARM_THM_MOVW_BREL
Program base relative 16 bit (Thumb32 MOVW). ((S + A) | T) – B(S)
R_ARM_THM_MOVW_BREL_NC
Program base relative 16 bit (Thumb32 MOVW). ((S + A) | T) – B(S)
R_ARM_THM_MOVW_PREL_NC
PC relative 16 bit (Thumb32 MOVW). ((S + A) | T) – P
R_ARM_THM_PC8
PC relative & 0x3FC (Thumb16 LDR, ADD, ADR). S + A – Pa
R_ARM_THM_PC12
PC relative 12 bit (Thumb32 LDR{D,SB,H,SH}). S + A – Pa
R_ARM_THM_SWI8
obsolete/reserved
R_ARM_THM_TLS_CALL
R_ARM_THM_TLS_DESCSEQ16
R_ARM_THM_TLS_DESCSEQ32
R_ARM_THM_XPC22
obsolete/reserved
R_ARM_TLS_CALL
R_ARM_TLS_DESC
dynamic reloc
R_ARM_TLS_DESCSEQ
TLS relaxation.
R_ARM_TLS_DTPMOD32
ID of module containing symbol.
R_ARM_TLS_DTPOFF32
Offset in TLS block. S + A – TLS
R_ARM_TLS_GD32
PC-rel 32 bit for global dynamic thread local data. GOT(S) + A – P
R_ARM_TLS_GOTDESC
R_ARM_TLS_IE32
PC-rel 32 bit for GOT entry of static TLS block offset. GOT(S) + A – P
R_ARM_TLS_IE12GP
12 bit GOT entry relative to GOT origin (LDR). GOT(S) + A – GOT_ORG
R_ARM_TLS_LDM32
PC-rel 32 bit for local dynamic thread local data. GOT(S) + A – P
R_ARM_TLS_LDO12
12 bit relative to TLS block (LDR, STR). S + A – TLS
R_ARM_TLS_LDO32
32 bit offset relative to TLS block. S + A – TLS
R_ARM_TLS_LE12
12 bit relative to static TLS block (LDR, STR). S + A – tp
R_ARM_TLS_LE32
32 bit offset relative to static TLS block. S + A – tp
R_ARM_TLS_TPOFF32
Offset in static TLS block. S + A – Tp
R_ARM_V4BX
R_ARM_XPC25
obsolete/reserved
R_PPC64_ADDR14
(S + A) >> 2
R_PPC64_ADDR16
S + A
R_PPC64_ADDR24
(S + A) >> 2
R_PPC64_ADDR30
(S + A - P) >> 2
R_PPC64_ADDR32
S + A
R_PPC64_ADDR64
S + A
R_PPC64_ADDR14_BRNTAKEN
(S + A) >> 2
R_PPC64_ADDR14_BRTAKEN
(S + A) >> 2
R_PPC64_ADDR16_DS
(S + A) >> 2
R_PPC64_ADDR16_HA
#ha(S + A)
R_PPC64_ADDR16_HI
#hi(S + A)
R_PPC64_ADDR16_HIGH
R_PPC64_ADDR16_HIGHA
R_PPC64_ADDR16_HIGHER
#higher(S + A)
R_PPC64_ADDR16_HIGHERA
#highera(S + A)
R_PPC64_ADDR16_HIGHEST
#highest(S + A)
R_PPC64_ADDR16_HIGHESTA
#highesta(S + A)
R_PPC64_ADDR16_LO
#lo(S + A)
R_PPC64_ADDR16_LO_DS
#lo(S + A) >> 2
R_PPC64_COPY
none
R_PPC64_DTPMOD64
@dtpmod
R_PPC64_DTPREL16
@dtprel
R_PPC64_DTPREL64
@dtprel
R_PPC64_DTPREL16_DS
@dtprel
R_PPC64_DTPREL16_HA
#ha(@dtprel)
R_PPC64_DTPREL16_HI
#hi(@dtprel)
R_PPC64_DTPREL16_HIGH
R_PPC64_DTPREL16_HIGHA
R_PPC64_DTPREL16_HIGHER
#higher(@dtprel)
R_PPC64_DTPREL16_HIGHERA
#highera(@dtprel)
R_PPC64_DTPREL16_HIGHEST
#highest(@dtprel)
R_PPC64_DTPREL16_HIGHESTA
#highesta(@dtprel)
R_PPC64_DTPREL16_LO
#lo(@dtprel)
R_PPC64_DTPREL16_LO_DS
#lo(@dtprel)
R_PPC64_GLOB_DAT
S + A
R_PPC64_GOT16
G
R_PPC64_GOT16_DS
G >> 2
R_PPC64_GOT16_HA
#ha(G)
R_PPC64_GOT16_HI
#hi(G)
R_PPC64_GOT16_LO
#lo(G)
R_PPC64_GOT16_LO_DS
#lo(G) >> 2
R_PPC64_GOT_DTPREL16_DS
@got@dtprel
R_PPC64_GOT_DTPREL16_HA
#ha(@got@dtprel)
R_PPC64_GOT_DTPREL16_HI
#hi(@got@dtprel)
R_PPC64_GOT_DTPREL16_LO_DS
#lo(@got@dtprel)
R_PPC64_GOT_TLSGD16
@got@tlsgd
R_PPC64_GOT_TLSGD16_HA
#ha(@got@tlsgd)
R_PPC64_GOT_TLSGD16_HI
#hi(@got@tlsgd)
R_PPC64_GOT_TLSGD16_LO
#lo(@got@tlsgd)
R_PPC64_GOT_TLSLD16
@got@tlsld
R_PPC64_GOT_TLSLD16_HA
#ha(@got@tlsld)
R_PPC64_GOT_TLSLD16_HI
#hi(@got@tlsld)
R_PPC64_GOT_TLSLD16_LO
#lo(@got@tlsld)
R_PPC64_GOT_TPREL16_DS
@got@tprel
R_PPC64_GOT_TPREL16_HA
#ha(@got@tprel)
R_PPC64_GOT_TPREL16_HI
#hi(@got@tprel)
R_PPC64_GOT_TPREL16_LO_DS
#lo(@got@tprel)
R_PPC64_IRELATIVE
R_PPC64_JMP_IREL
R_PPC64_JMP_SLOT
see below
R_PPC64_NONE
none
R_PPC64_PLT32
L
R_PPC64_PLT64
L
R_PPC64_PLT16_HA
#ha(L)
R_PPC64_PLT16_HI
#hi(L)
R_PPC64_PLT16_LO
#lo(L)
R_PPC64_PLT16_LO_DS
#lo(L) >> 2
R_PPC64_PLTGOT16
M
R_PPC64_PLTGOT16_DS
M >> 2
R_PPC64_PLTGOT16_HA
#ha(M)
R_PPC64_PLTGOT16_HI
#hi(M)
R_PPC64_PLTGOT16_LO
#lo(M)
R_PPC64_PLTGOT16_LO_DS
#lo(M) >> 2
R_PPC64_PLTREL32
L - P
R_PPC64_PLTREL64
L - P
R_PPC64_REL14
(S + A - P) >> 2
R_PPC64_REL16
(sym+add-.)
R_PPC64_REL24
(S + A - P) >> 2
R_PPC64_REL32
S + A - P
R_PPC64_REL64
S + A - P
R_PPC64_REL14_BRNTAKEN
(S + A - P) >> 2
R_PPC64_REL14_BRTAKEN
(S + A - P) >> 2
R_PPC64_REL16_HA
(sym+add-.)@ha
R_PPC64_REL16_HI
(sym+add-.)@h
R_PPC64_REL16_LO
(sym+add-.)@l
R_PPC64_RELATIVE
B + A
R_PPC64_SECTOFF
R + A
R_PPC64_SECTOFF_DS
(R + A) >> 2
R_PPC64_SECTOFF_HA
#ha(R + A)
R_PPC64_SECTOFF_HI
#hi(R + A)
R_PPC64_SECTOFF_LO
#lo(R + A)
R_PPC64_SECTOFF_LO_DS
#lo(R + A) >> 2
R_PPC64_TLS
none
R_PPC64_TLSGD
(sym+add)@tlsgd
R_PPC64_TLSLD
(sym+add)@tlsld
R_PPC64_TOC
.TOC.
R_PPC64_TOC16
S + A - .TOC.
R_PPC64_TOC16_DS
(S + A - .TOC.) >> 2
R_PPC64_TOC16_HA
#ha(S + A - .TOC.)
R_PPC64_TOC16_HI
#hi(S + A - .TOC.)
R_PPC64_TOC16_LO
#lo(S + A - .TOC.)
R_PPC64_TOC16_LO_DS
#lo(S + A - .TOC.) >> 2
R_PPC64_TOCSAVE
R_PPC64_TPREL16
@tprel
R_PPC64_TPREL64
@tprel
R_PPC64_TPREL16_DS
@tprel
R_PPC64_TPREL16_HA
#ha(@tprel)
R_PPC64_TPREL16_HI
#hi(@tprel)
R_PPC64_TPREL16_HIGH
R_PPC64_TPREL16_HIGHA
R_PPC64_TPREL16_HIGHER
#higher(@tprel)
R_PPC64_TPREL16_HIGHERA
#highera(@tprel)
R_PPC64_TPREL16_HIGHEST
#highest(@tprel)
R_PPC64_TPREL16_HIGHESTA
#highesta(@tprel)
R_PPC64_TPREL16_LO
#lo(@tprel)
R_PPC64_TPREL16_LO_DS
#lo(@tprel)
R_PPC64_UADDR16
S + A
R_PPC64_UADDR32
S + A
R_PPC64_UADDR64
S + A
R_PPC_ADDR14
16bit address, 2 bits ignored
R_PPC_ADDR16
16bit absolute address
R_PPC_ADDR24
26bit address, 2 bits ignored.
R_PPC_ADDR32
32bit absolute address
R_PPC_ADDR14_BRNTAKEN
R_PPC_ADDR14_BRTAKEN
R_PPC_ADDR16_HA
adjusted high 16bit
R_PPC_ADDR16_HI
high 16bit of absolute address
R_PPC_ADDR16_LO
lower 16bit of absolute address
R_PPC_COPY
R_PPC_DIAB_RELSDA_HA
like EMB_RELSDA, adjusted high 16
R_PPC_DIAB_RELSDA_HI
like EMB_RELSDA, but high 16 bit
R_PPC_DIAB_RELSDA_LO
like EMB_RELSDA, but lower 16 bit
R_PPC_DIAB_SDA21_HA
like EMB_SDA21, adjusted high 16
R_PPC_DIAB_SDA21_HI
like EMB_SDA21, but high 16 bit
R_PPC_DIAB_SDA21_LO
like EMB_SDA21, but lower 16 bit
R_PPC_DTPMOD32
(sym+add)@dtpmod
R_PPC_DTPREL16
(sym+add)@dtprel
R_PPC_DTPREL32
(sym+add)@dtprel
R_PPC_DTPREL16_HA
(sym+add)@dtprel@ha
R_PPC_DTPREL16_HI
(sym+add)@dtprel@h
R_PPC_DTPREL16_LO
(sym+add)@dtprel@l
R_PPC_EMB_BIT_FLD
R_PPC_EMB_MRKREF
R_PPC_EMB_NADDR16
R_PPC_EMB_NADDR32
R_PPC_EMB_NADDR16_HA
R_PPC_EMB_NADDR16_HI
R_PPC_EMB_NADDR16_LO
R_PPC_EMB_RELSDA
R_PPC_EMB_RELSEC16
R_PPC_EMB_RELST_HA
R_PPC_EMB_RELST_HI
R_PPC_EMB_RELST_LO
R_PPC_EMB_SDA2I16
R_PPC_EMB_SDA2REL
R_PPC_EMB_SDA21
16 bit offset in SDA
R_PPC_EMB_SDAI16
R_PPC_GLOB_DAT
R_PPC_GOT16
R_PPC_GOT16_HA
R_PPC_GOT16_HI
R_PPC_GOT16_LO
R_PPC_GOT_DTPREL16
(sym+add)@got@dtprel
R_PPC_GOT_DTPREL16_HA
(sym+add)@got@dtprel@ha
R_PPC_GOT_DTPREL16_HI
(sym+add)@got@dtprel@h
R_PPC_GOT_DTPREL16_LO
(sym+add)@got@dtprel@l
R_PPC_GOT_TLSGD16
(sym+add)@got@tlsgd
R_PPC_GOT_TLSGD16_HA
(sym+add)@got@tlsgd@ha
R_PPC_GOT_TLSGD16_HI
(sym+add)@got@tlsgd@h
R_PPC_GOT_TLSGD16_LO
(sym+add)@got@tlsgd@l
R_PPC_GOT_TLSLD16
(sym+add)@got@tlsld
R_PPC_GOT_TLSLD16_HA
(sym+add)@got@tlsld@ha
R_PPC_GOT_TLSLD16_HI
(sym+add)@got@tlsld@h
R_PPC_GOT_TLSLD16_LO
(sym+add)@got@tlsld@l
R_PPC_GOT_TPREL16
(sym+add)@got@tprel
R_PPC_GOT_TPREL16_HA
(sym+add)@got@tprel@ha
R_PPC_GOT_TPREL16_HI
(sym+add)@got@tprel@h
R_PPC_GOT_TPREL16_LO
(sym+add)@got@tprel@l
R_PPC_IRELATIVE
R_PPC_JMP_SLOT
R_PPC_LOCAL24PC
R_PPC_NONE
R_PPC_PLT32
R_PPC_PLT16_HA
R_PPC_PLT16_HI
R_PPC_PLT16_LO
R_PPC_PLTREL24
R_PPC_PLTREL32
R_PPC_REL14
PC relative 16 bit
R_PPC_REL16
(sym+add-.)
R_PPC_REL24
PC relative 26 bit
R_PPC_REL32
R_PPC_REL14_BRNTAKEN
R_PPC_REL14_BRTAKEN
R_PPC_REL16_HA
(sym+add-.)@ha
R_PPC_REL16_HI
(sym+add-.)@h
R_PPC_REL16_LO
(sym+add-.)@l
R_PPC_RELATIVE
R_PPC_SDAREL16
R_PPC_SECTOFF
R_PPC_SECTOFF_HA
R_PPC_SECTOFF_HI
R_PPC_SECTOFF_LO
R_PPC_TLS
(sym+add)@tls
R_PPC_TLSGD
(sym+add)@tlsgd
R_PPC_TLSLD
(sym+add)@tlsld
R_PPC_TOC16
This is a phony reloc to handle any old fashioned TOC16 references that may still be in object files.
R_PPC_TPREL16
(sym+add)@tprel
R_PPC_TPREL32
(sym+add)@tprel
R_PPC_TPREL16_HA
(sym+add)@tprel@ha
R_PPC_TPREL16_HI
(sym+add)@tprel@h
R_PPC_TPREL16_LO
(sym+add)@tprel@l
R_PPC_UADDR16
R_PPC_UADDR32
R_RISCV_32
32-bit relocation: S + A
R_RISCV_64
64-bit relocation: S + A
R_RISCV_32_PCREL
32-bit PC relative: S + A - P
R_RISCV_ADD8
8-bit label addition: V + S + A
R_RISCV_ADD16
16-bit label addition: V + S + A
R_RISCV_ADD32
32-bit label addition: V + S + A
R_RISCV_ADD64
64-bit label addition: V + S + A
R_RISCV_ALIGN
Alignment statement. The addend indicates the number of bytes occupied by nop instructions at the relocation offset. The alignment boundary is specified by the addend rounded up to the next power of two.
R_RISCV_BRANCH
12-bit PC-relative branch offset S + A - P
R_RISCV_CALL
Deprecated, please use CALL_PLT instead 32-bit PC-relative function call, macros call, tail: S + A - P
R_RISCV_CALL_PLT
32-bit PC-relative function call, macros call, tail (PIC): S + A - P
R_RISCV_COPY
Must be in executable; not allowed in shared library
R_RISCV_GOT_HI20
High 20 bits of 32-bit PC-relative GOT access, %got_pcrel_hi(symbol): G + GOT + A - P
R_RISCV_HI20
High 20 bits of 32-bit absolute address, %hi(symbol): S + A
R_RISCV_IRELATIVE
Relocation against a non-preemptible ifunc symbolifunc_resolver: (B + A)
R_RISCV_JAL
20-bit PC-relative jump offset S + A - P
R_RISCV_JUMP_SLOT
Indicates the symbol associated with a PLT entry: S
R_RISCV_LO12_I
Low 12 bits of 32-bit absolute address, %lo(symbol): S + A
R_RISCV_LO12_S
Low 12 bits of 32-bit absolute address, %lo(symbol): S + A
R_RISCV_NONE
R_RISCV_PCREL_HI20
High 20 bits of 32-bit PC-relative reference, %pcrel_hi(symbol): S + A - P
R_RISCV_PCREL_LO12_I
Low 12 bits of a 32-bit PC-relative, %pcrel_lo(address of %pcrel_hi), the addend must be 0: S - P
R_RISCV_PCREL_LO12_S
Low 12 bits of a 32-bit PC-relative, %pcrel_lo(address of %pcrel_hi), the addend must be 0: S - P
R_RISCV_RELATIVE
Adjust a link address (A) to its load address: (B + A).
R_RISCV_RELAX
Instruction can be relaxed, paired with a normal relocation at the same address
R_RISCV_RVC_BRANCH
8-bit PC-relative branch offset: S + A - P
R_RISCV_RVC_JUMP
11-bit PC-relative jump offset: S + A - P
R_RISCV_RVC_LUI
High 6 bits of 18-bit absolute address: S + A
R_RISCV_SET6
Local label assignment: S + A
R_RISCV_SET8
Local label assignment: S + A
R_RISCV_SET16
Local label assignment: S + A
R_RISCV_SET32
Local label assignment: S + A
R_RISCV_SUB6
Local label subtraction: V - S - A
R_RISCV_SUB8
8-bit label subtraction: V - S - A
R_RISCV_SUB16
16-bit label subtraction: V - S - A
R_RISCV_SUB32
32-bit label subtraction: V - S - A
R_RISCV_SUB64
64-bit label subtraction: V - S - A
R_RISCV_TLS_DTPMOD32
TLSMODULE
R_RISCV_TLS_DTPMOD64
TLSMODULE
R_RISCV_TLS_DTPREL32
S + A - TLS_DTV_OFFSET
R_RISCV_TLS_DTPREL64
S + A - TLS_DTV_OFFSET
R_RISCV_TLS_GD_HI20
High 20 bits of 32-bit PC-relative TLS GD GOT reference, macro la.tls.gd
R_RISCV_TLS_GOT_HI20
High 20 bits of 32-bit PC-relative TLS IE GOT access, macro la.tls.ie
R_RISCV_TLS_TPREL32
S + A + TLSOFFSET
R_RISCV_TLS_TPREL64
S + A + TLSOFFSET
R_RISCV_TPREL_ADD
TLS LE thread pointer usage, %tprel_add(symbol)
R_RISCV_TPREL_HI20
High 20 bits of TLS LE thread pointer offset, %tprel_hi(symbol)
R_RISCV_TPREL_LO12_I
Low 12 bits of TLS LE thread pointer offset, %tprel_lo(symbol)
R_RISCV_TPREL_LO12_S
Low 12 bits of TLS LE thread pointer offset, %tprel_lo(symbol)
R_X86_64_8
S + A
R_X86_64_16
S + A
R_X86_64_32
S + A
R_X86_64_64
S + A
R_X86_64_32S
S + A
R_X86_64_COPY
R_X86_64_DTPMOD64
R_X86_64_DTPOFF32
R_X86_64_DTPOFF64
R_X86_64_GLOB_DAT
S
R_X86_64_GOT32
G + A
R_X86_64_GOT64
G + A
R_X86_64_GOTOFF64
S + A - GOT
R_X86_64_GOTPC32
GOT + A - P
R_X86_64_GOTPC64
GOT - P + A
R_X86_64_GOTPC32_TLSDESC
R_X86_64_GOTPCREL
G + GOT + A - P
R_X86_64_GOTPCREL64
G + GOT - P + A
R_X86_64_GOTPCRELX
G + GOT + A - P
R_X86_64_GOTTPOFF
R_X86_64_IRELATIVE
indirect (B + A)
R_X86_64_JUMP_SLOT
S
R_X86_64_NONE
R_X86_64_PC8
S + A - P
R_X86_64_PC16
S + A - P
R_X86_64_PC32
S + A - P
R_X86_64_PC64
S + A - P
R_X86_64_PLT32
L + A - P
R_X86_64_PLTOFF64
L - GOT + A
R_X86_64_RELATIVE
B + A
R_X86_64_RELATIVE64
B + A
R_X86_64_REX_GOTPCRELX
G + GOT + A - P
R_X86_64_SIZE32
Z + A
R_X86_64_SIZE64
Z + A
R_X86_64_TLSDESC
R_X86_64_TLSDESC_CALL
R_X86_64_TLSGD
R_X86_64_TLSLD
R_X86_64_TPOFF32
R_X86_64_TPOFF64
SHF_ALLOC
The section occupies memory during process execution. Some control sections do not reside in the memory image of an object file; this attribute is off for those sections.
SHF_ARM_PURECODE
The contents of this section contains only program instructions and no program data.
SHF_COMPRESSED
This flag identifies a section containing compressed data. SHF_COMPRESSED applies only to non-allocable sections, and cannot be used in conjunction with SHF_ALLOC. In addition, SHF_COMPRESSED cannot be applied to sections of type SHT_NOBITS.
SHF_EXECINSTR
The section contains executable machine instructions.
SHF_GROUP
This section is a member (perhaps the only one) of a section group. The section must be referenced by a section of type SHT_GROUP. The SHF_GROUP flag may be set only for sections contained in relocatable objects (objects with the ELF header e_type member set to ET_REL).
SHF_INFO_LINK
The sh_info field of this section header holds a section header table index.
SHF_LINK_ORDER
This flag adds special ordering requirements for link editors. The requirements apply if the sh_link field of this section’s header references another section (the linked-to section). If this section is combined with other sections in the output file, it must appear in the same relative order with respect to those sections, as the linked-to section appears with respect to sections the linked-to section is combined with.
SHF_MASKOS
Masked bits are reserved for operating system-specific semantics.
SHF_MASKPROC
Masked bits are reserved for processor-specific semantics.
SHF_MERGE
The data in the section may be merged to eliminate duplication. Unless the SHF_STRINGS flag is also set, the data elements in the section are of a uniform size. The size of each element is specified in the section header’s sh_entsize field. If the SHF_STRINGS flag is also set, the data elements consist of null-terminated character strings. The size of each character is specified in the section header’s sh_entsize field.
SHF_NONE
Empty flags
SHF_OS_NONCONFORMING
This section requires special OS-specific processing (beyond the standard linking rules) to avoid incorrect behavior. If this section has either an sh_type value or contains sh_flags bits in the OS-specific ranges for those fields, and a link editor processing this section does not recognize those values, then the link editor should reject the object file containing this section with an error.
SHF_STRINGS
The data elements in the section consist of null-terminated character strings. The size of each character is specified in the section header’s sh_entsize field.
SHF_TLS
This section holds Thread-Local Storage, meaning that each separate execution flow has its own distinct instance of this data. Implementations need not support this flag.
SHF_WRITE
The section contains data that should be writable during process execution.
SHF_X86_64_LARGE
If an object file section does not have this flag set, then it may not hold more than 2GB and can be freely referred to in objects using smaller code models.
SHN_ABS
Symbols with st_shndx=SHN_ABS are absolute and are not affected by relocation.
SHN_COMMON
Symbols with st_shndx=SHN_COMMON are sometimes used for unallocated C external variables.
SHN_UNDEF
This value marks an undefined, missing, irrelevant, or otherwise meaningless section reference.
SHN_XINDEX
SHT_AARCH64_ATTRIBUTES
Object file compatibility attributes
SHT_AARCH64_ATTRIBUTES_SECTION_NAME
SHT_ARM_ATTRIBUTES
Object file compatibility attributes
SHT_ARM_DEBUGOVERLAY
See https://github.com/ARM-software/abi-aa/blob/main/dbgovl32/dbgovl32.rst
SHT_ARM_EXIDX
Section contains index information for exception unwinding
SHT_ARM_OVERLAYSECTION
See https://github.com/ARM-software/abi-aa/blob/main/dbgovl32/dbgovl32.rst
SHT_ARM_PREEMPTMAP
BPABI DLL dynamic linking pre-emption map
SHT_DYNAMIC
Section data contains information for dynamic linking
SHT_DYNSYM
Section data contains a minimal set of dynamic linking symbols
SHT_FINI_ARRAY
Section data contains an array of destructors
SHT_GNU_ATTRIBUTES
Object attributes
SHT_GNU_HASH
GNU-style hash section
SHT_GNU_LIBLIST
Pre-link library list
SHT_GNU_VERDEF
Version definition section
SHT_GNU_VERNEED
Version needs section
SHT_GNU_VERSYM
Version symbol table
SHT_GROUP
Section group
SHT_HASH
Section data contains a symbol hash table. Must be present for dynamic linking
SHT_HIOS
Values in [SHT_LOOS, SHT_HIOS] are reserved for operating system-specific semantics.
SHT_HIPROC
Values in [SHT_LOPROC, SHT_HIPROC] are reserved for processor-specific semantics.
SHT_HIUSER
Values in [SHT_LOUSER, SHT_HIUSER] are reserved for application-specific semantics.
SHT_IA_64_EXT
IA_64 extension bits
SHT_IA_64_UNWIND
IA_64 unwind section
SHT_INIT_ARRAY
Section data contains an array of constructors
SHT_LOOS
Values in [SHT_LOOS, SHT_HIOS] are reserved for operating system-specific semantics.
SHT_LOPROC
Values in [SHT_LOPROC, SHT_HIPROC] are reserved for processor-specific semantics.
SHT_LOUSER
Values in [SHT_LOUSER, SHT_HIUSER] are reserved for application-specific semantics.
SHT_NOBITS
Section data occupies no space in the file but otherwise resembles SHT_PROGBITS
SHT_NOTE
Section data contains information that marks the file in some way
SHT_NULL
Inactive section with undefined values
SHT_PREINIT_ARRAY
Section data contains an array of pre-constructors
SHT_PROGBITS
Information defined by the program, includes executable code and data
SHT_REL
Section data contains relocation entries without explicit addends
SHT_RELA
Section data contains relocation entries with explicit addends
SHT_RISCV_ATTRIBUTES
SHT_RISCV_ATTRIBUTES_SECTION_NAME
SHT_SHLIB
Section is reserved but has unspecified semantics
SHT_STRTAB
Section data contains a string table
SHT_SYMTAB
Section data contains a symbol table
SHT_SYMTAB_SHNDX
Extended symbol table section index
SHT_X86_64_UNWIND
This section contains unwind function table entries for stack unwinding.
STB_GLOBAL
Global symbols are visible to all object files being combined. One file’s definition of a global symbol will satisfy another file’s undefined reference to the same global symbol.
STB_GNU_UNIQUE
Unique symbol
STB_HIOS
Values between [STB_LOOS, STB_HIOS] in this inclusive range are reserved for operating system-specific semantics.
STB_HIPROC
Values between [STB_LOPROC, STB_HIPROC] in this inclusive range are reserved for processor-specific semantics.
STB_LOCAL
Local symbols are not visible outside the object file containing their definition. Local symbols of the same name may exist in multiple files without interfering with each other.
STB_LOOS
Values between [STB_LOOS, STB_HIOS] in this inclusive range are reserved for operating system-specific semantics.
STB_LOPROC
Values between [STB_LOPROC, STB_HIPROC] in this inclusive range are reserved for processor-specific semantics.
STB_WEAK
Weak symbols resemble global symbols, but their definitions have lower precedence.
STO_AARCH64_VARIANT_PCS
The function associated with the symbol may follow a variant procedure call standard with different register usage convention. Found in Symbol’s st_other field
STO_PPC64_LOCAL_BIT
STO_PPC64_LOCAL_MASK
STO_RISCV_VARIANT_CC
Any functions that use registers in a way that is incompatible with the calling convention of the ABI in use must be annotated with STO_RISCV_VARIANT_CC
STT_COMMON
Common data object symbol
STT_FILE
File name symbol
STT_FUNC
Code object symbol
STT_GNU_IFUNC
Indirect code object symbol
STT_HIOS
Values between [STT_LOOS, STT_HIOS] in this inclusive range are reserved for operating system-specific semantics.
STT_HIPROC
Values between [STT_LOPROC, STT_HIPROC] in this inclusive range are reserved for processor-specific semantics.
STT_LOOS
Values between [STT_LOOS, STT_HIOS] in this inclusive range are reserved for operating system-specific semantics.
STT_LOPROC
Values between [STT_LOPROC, STT_HIPROC] in this inclusive range are reserved for processor-specific semantics.
STT_NOTYPE
Unspecified symbol type
STT_OBJECT
Data object symbol
STT_SECTION
Section symbol
STT_TLS
Thread-local data object symbol
STV_DEFAULT
STV_* define constants for the ELF Symbol’s st_visibility (encoded in the st_other field). The visibility of symbols with the STV_DEFAULT attribute is as specified by the symbol’s binding type. That is, global and weak symbols are visible outside of their defining component (executable file or shared object). Local symbols are hidden, as described below. Global and weak symbols are also preemptable, that is, they may by preempted by definitions of the same name in another component.
STV_HIDDEN
A symbol defined in the current component is hidden if its name is not visible to other components. Such a symbol is necessarily protected. This attribute may be used to control the external interface of a component. Note that an object named by such a symbol may still be referenced from another component if its address is passed outside.
STV_INTERNAL
The meaning of this visibility attribute may be defined by processor supplements to further constrain hidden symbols. A processor supplement’s definition should be such that generic tools can safely treat internal symbols as hidden.
STV_PROTECTED
A symbol defined in the current component is protected if it is visible in other components but not preemptable, meaning that any reference to such a symbol from within the defining component must be resolved to the definition in that component, even if there is a definition in another component that would preempt by the default rules.
VER_DEF_CURRENT
Only defined valid vd_version value
VER_FLG_BASE
VER_FLG_INFO
VER_FLG_WEAK
VER_NDX_GLOBAL
Symbol is global
VER_NDX_HIDDEN
Symbol is hidden
VER_NDX_LOCAL
Symbol is local
VER_NDX_VERSION
.gnu.version index mask
VER_NEED_CURRENT
Only defined valid vn_version value