34#include <l4/sys/l4int.h>
64#if L4_MWORD_BITS == 64
65# define ElfW(type) _ElfW(Elf, 64, type)
67# define ElfW(type) _ElfW(Elf, 32, type)
69#define _ElfW(e,w,t) __ElfW(e, w, _##t)
70#define __ElfW(e,w,t) e##w##t
73# define L4_ARCH_EI_DATA ELFDATA2LSB
74# define L4_ARCH_E_MACHINE EM_386
75# define L4_ARCH_EI_CLASS ELFCLASS32
76#elif defined(ARCH_amd64)
77# define L4_ARCH_EI_DATA ELFDATA2LSB
78# define L4_ARCH_E_MACHINE EM_X86_64
79# define L4_ARCH_EI_CLASS ELFCLASS64
80#elif defined(ARCH_arm)
81# define L4_ARCH_EI_DATA ELFDATA2LSB
82# define L4_ARCH_E_MACHINE EM_ARM
83# define L4_ARCH_EI_CLASS ELFCLASS32
84#elif defined(ARCH_arm64)
85# define L4_ARCH_EI_DATA ELFDATA2LSB
86# define L4_ARCH_E_MACHINE EM_AARCH64
87# define L4_ARCH_EI_CLASS ELFCLASS64
88#elif defined(ARCH_ppc32)
89# define L4_ARCH_EI_DATA ELFDATA2MSB
90# define L4_ARCH_E_MACHINE EM_PPC
91# define L4_ARCH_EI_CLASS ELFCLASS32
92#elif defined(ARCH_sparc)
93# define L4_ARCH_EI_DATA ELFDATA2MSB
94# define L4_ARCH_E_MACHINE EM_SPARC
95# define L4_ARCH_EI_CLASS ELFCLASS32
96#elif defined(ARCH_mips)
97# define L4_ARCH_EI_DATA ELFDATA2LSB
98# define L4_ARCH_E_MACHINE EM_MIPS
100# define L4_ARCH_EI_CLASS ELFCLASS64
102# define L4_ARCH_EI_CLASS ELFCLASS32
104#elif defined(ARCH_riscv)
105# define L4_ARCH_EI_DATA ELFDATA2LSB
106# define L4_ARCH_E_MACHINE EM_RISCV
107# if __riscv_xlen == 64
108# define L4_ARCH_EI_CLASS ELFCLASS64
110# define L4_ARCH_EI_CLASS ELFCLASS32
113# warning elf.h: Unsupported build architecture!
263#define EM_ALPHA 0x9026
265#define EM_S390 0xA390
610 DF_1_TRANS = 0x00000200,
623 DTF_1_PARINIT = 0x00000001,
624 DTF_1_CONFEXP = 0x00000002,
666#define ELF32_R_SYM(i) ((i)>>8)
668#define ELF32_R_TYPE(i) ((unsigned char)(i))
670#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))
673#define ELF64_R_SYM(i) ((i)>>32)
676#define ELF64_R_TYPE(i) ((i)&0xffffffffL)
679#define ELF64_R_INFO(s,t) (((s)<<32)+(t)&0xffffffffL)
737 EF_ARM_RELEXEC = 0x01,
738 EF_ARM_HASENTRY = 0x02,
739 EF_ARM_INTERWORK = 0x04,
740 EF_ARM_APCS_26 = 0x08,
741 EF_ARM_APCS_FLOAT = 0x10,
744 EF_ARM_NEW_ABI = 0x80,
745 EF_ARM_OLD_ABI = 0x100,
749 EF_ARM_SYMSARESORTED = 0x04,
750 EF_ARM_DYNSYMSUSESEGIDX = 0x08,
751 EF_ARM_MAPSYMSFIRST = 0x10,
752 EF_ARM_EABIMASK = 0XFF000000,
754#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
755 EF_ARM_EABI_UNKNOWN = 0x00000000,
756 EF_ARM_EABI_VER1 = 0x01000000,
757 EF_ARM_EABI_VER2 = 0x02000000,
796 R_ARM_AMP_VCALL9 = 12,
800 R_ARM_THM_XPC22 = 16,
809 R_ARM_ALU_PCREL_7_0 = 32,
810 R_ARM_ALU_PCREL_15_8 = 33,
811 R_ARM_ALU_PCREL_23_15 = 34,
812 R_ARM_LDR_SBREL_11_0 = 35,
813 R_ARM_ALU_SBREL_19_12 = 36,
814 R_ARM_ALU_SBREL_27_20 = 37,
815 R_ARM_GNU_VTENTRY = 100,
816 R_ARM_GNU_VTINHERIT = 101,
820 R_ARM_RSBREL32 = 250,
821 R_ARM_THM_RPC22 = 251,
833 R_AARCH64_RELATIVE = 1027,
898#define ELF32_ST_BIND(i) ((i)>>4)
901#define ELF32_ST_TYPE(i) ((i)&0xf)
904#define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
907#define ELF64_ST_BIND(i) ((i)>>4)
910#define ELF64_ST_TYPE(i) ((i)&0xf)
913#define ELF64_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
987static inline int l4util_elf_check_magic(
ElfW(Ehdr)
const *hdr);
996static inline int l4util_elf_check_arch(
ElfW(Ehdr)
const *hdr);
1004static inline ElfW(Phdr) *l4util_elf_phdr(
ElfW(Ehdr)
const *hdr);
1010int l4util_elf_check_magic(
ElfW(Ehdr)
const *hdr)
1019int l4util_elf_check_arch(
ElfW(Ehdr)
const *hdr)
1021 return hdr->e_ident[
EI_CLASS] == L4_ARCH_EI_CLASS
1022 && hdr->e_ident[
EI_DATA] == L4_ARCH_EI_DATA
1023 && hdr->e_machine == L4_ARCH_E_MACHINE;
1027ElfW(Phdr) *l4util_elf_phdr(
ElfW(Ehdr)
const *hdr)
1029 return (
ElfW(Phdr) *)((
char *)hdr + hdr->e_phoff);
signed int l4_int32_t
Signed 32bit value.
signed long long l4_int64_t
Signed 64bit value.
unsigned int l4_uint32_t
Unsigned 32bit value.
unsigned short int l4_uint16_t
Unsigned 16bit value.
unsigned long long l4_uint64_t
Unsigned 64bit value.
l4_uint64_t Elf64_Addr
size 8 align 8
Elf_R_X86_64_s
AMD x86-64 relocations.
Elf_ClASSs
File class or capacity.
Elf_STT_ARM_s
Additional symbol types for Thumb.
Elf_OSABIs
Identify operating system and ABI to which the object is targeted.
l4_uint16_t Elf64_Half
size 2 align 2
Elf_STNs
Symbol Table Entry.
Elf_DTs
Dynamic Array Tags.
Elf_DF_1s
State flags selectable in the Elf32_Dyn.d_un.d_val / Elf64_Dyn.d_un.d_val element of the DT_FLAGS_1 e...
l4_uint16_t Elf32_Half
size 2 align 2
Elf_NTs_core
Legal values for note segment descriptor types for core files.
Elf_R_AARCH64_s
AARCH64 relocations.
l4_uint32_t Elf32_Word
size 4 align 4
l4_int32_t Elf64_Sword
size 4 align 4
Elf_ARM_SBs
ARM-specific program header flags.
Elf_EIs
Identification Indices.
Elf_EF_ARM_s
ARM specific declarations.
Elf_EVs
Object file version.
l4_int32_t Elf32_Sword
size 4 align 4
l4_uint32_t Elf32_Addr
size 4 align 4
ELF_PFs
Segment permissions.
l4_uint32_t Elf32_Off
size 4 align 4
Elf_SHNs
Special section indexes.
Elf_DTF_1s
Flags for the feature selection in DT_FEATURE_1.
Elf_DF_P1s
Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.
Elf_SHFs
Section attribute flags.
Elf_ATs
Legal values for Elf32_Auxv.atype / Elf64_Auxv.atype.
Elf_R_386_s
Relocation types (processor specific).
l4_uint64_t Elf64_Off
size 8 align 8
l4_uint64_t Elf64_Xword
size 8 align 8
Elf_EMs
Required architecture.
l4_uint32_t Elf64_Word
size 4 align 4
l4_int64_t Elf64_Sxword
size 8 align 8
Elf_NTs_obj
Legal values for the note segment descriptor types for object files.
Elf_DFs
Values of Elf32_Dyn.d_un.d_val, Elf64_Dyn.d_un.d_val in the DT_FLAGS entry.
#define ElfW(type)
Use 64 or 32 bits types depending on the target architecture.
Elf_SHF_s_ARM
ARM-specific values for Elf32_Shdr.sh_flags / Elf64_Shdr.sh_flags.
Elf_R_ARM_s
ARM relocations.
@ ELFDATA2MSB
0x01020304 => [ 0x01|0x02|0x03|0x04 ]
@ ELFDATA2LSB
0x01020304 => [ 0x04|0x03|0x02|0x01 ]
@ ELFDATANUM
Mask for valid data encoding.
@ ELFDATANONE
invalid data encoding
@ R_X86_64_RELATIVE
Adjust by program base.
@ R_X86_64_GLOB_DAT
Create GOT entry.
@ R_X86_64_COPY
Copy symbol at runtime.
@ R_X86_64_GOTTPOFF
32 bit signed PC relative offset to GOT entry for IE symbol
@ R_X86_64_32
Direct 32 bit zero extended.
@ R_X86_64_TPOFF32
Offset in initial TLS block.
@ R_X86_64_GOTPCREL
32 bit signed PC relative offset to GOT
@ R_X86_64_TLSGD
32 bit signed PC relative offset to two GOT entries for GD symbol
@ R_X86_64_64
Direct 64 bit
@ R_X86_64_DTPOFF64
Offset in module's TLS block.
@ R_X86_64_32S
Direct 32 bit sign extended.
@ R_X86_64_TPOFF64
Offset in initial TLS block.
@ R_X86_64_GOT32
32 bit GOT entry
@ R_X86_64_PC16
16 bit sign extended pc relative
@ R_X86_64_TLSLD
32 bit signed PC relative offset to two GOT entries for LD symbol
@ R_X86_64_PC8
8 bit sign extended pc relative
@ R_X86_64_JUMP_SLOT
Create PLT entry.
@ R_X86_64_PC32
PC relative 32 bit signed.
@ R_X86_64_8
Direct 8 bit sign extended
@ R_X86_64_DTPOFF32
Offset in TLS block.
@ R_X86_64_DTPMOD64
ID of module containing symbol.
@ R_X86_64_PLT32
32 bit PLT address
@ R_X86_64_16
Direct 16 bit zero extended.
@ ELFCLASS64
64-bit object
@ ELFCLASS32
32-bit object
@ ELFCLASSNUM
Mask for 32-bit or 64-bit class.
@ ELFCLASSNONE
Invalid class.
@ PT_LOPROC
processor-specific
@ PT_PHDR
location of the pht itself
@ PT_TLS
Thread-local storage segment.
@ PT_HIPROC
processor-specific
@ PT_GNU_RELRO
Read only after reloc.
@ PT_GNU_STACK
Flags for stack.
@ PT_L4_KIP
Address of the KIP.
@ PT_NUM
Number of defined types.
@ PT_L4_AUX
Address of the AUX structures.
@ PT_L4_STACK
Address of the stack.
@ PT_GNU_EH_FRAME
EH frame information.
@ PT_DYNAMIC
dynamic linking information
@ PT_NOTE
auxiliary information
@ PT_INTERP
path to interpreter
@ ET_DYN
shared object file
@ ET_HIPROC
processor-specific
@ ET_LOPROC
processor-specific
@ ELFOSABI_TRU64
Compaq TRU64 UNIX.
@ ELFOSABI_STANDALONE
Standalone (embedded) application.
@ ELFOSABI_OPENBSD
OpenBSD.
@ ELFOSABI_NONE
UNIX System V ABI.
@ ELFOSABI_SOLARIS
Sun Solaris.
@ ELFOSABI_FREEBSD
FreeBSD.
@ ELFOSABI_MODESTO
Novell Modesto.
@ DT_SYMENT
size of a symbol table entry
@ DT_FINI_ARRAYSZ
Size in bytes of DT_FINI_ARRAY.
@ DT_SYMBOLIC
alter symbol resolution algorithm
@ DT_PREINIT_ARRAYSZ
size in bytes of DT_PREINIT_ARRAY
@ DT_TEXTREL
at least on entry changes r/o section
@ DT_PLTRELSZ
total size of relocation entry
@ DT_LOPROC
processor-specific
@ DT_RELASZ
total size of relocation table
@ DT_STRTAB
address of string table
@ DT_HIPROC
processor-specific
@ DT_RUNPATH
Library search path.
@ DT_RELSZ
total size of DT_REL relocation table
@ DT_INIT
address of initialization function
@ DT_RELAENT
size of DT_RELA relocation entry
@ DT_RELA
address of relocation table
@ DT_NEEDED
name of a needed library
@ DT_PTRREL
type of relocation entry
@ DT_RPATH
search library path
@ DT_BIND_NOW
Process relocations of object.
@ DT_NULL
end of _DYNAMIC array
@ DT_HIOS
End of OS-specific.
@ DT_JMPREL
address of relocation entries
@ DT_PREINIT_ARRAY
Array with addresses of preinit fct.
@ DT_FINI_ARRAY
Array with addresses of fini fct.
@ DT_RELENT
size of the DT_REL relocation entry
@ DT_REL
address of relocation table
@ DT_PLTGOT
address assoc with prog link table
@ DT_HASH
address of symbol hash table
@ DT_LOOS
Start of OS-specific.
@ DT_ENCODING
Start of encoded range.
@ DT_INIT_ARRAYSZ
Size in bytes of DT_INIT_ARRAY.
@ DT_DEBUG
for debugging purposes
@ DT_STRSZ
size of the string table
@ DT_SONAME
name of the shared object
@ DT_FLAGS
Flags for the object being loaded.
@ DT_FINI
address of termination function
@ DT_SYMTAB
address of symbol table
@ DT_INIT_ARRAY
Array with addresses of init fct.
@ DF_1_LOADFLTR
Trigger filtee loading at runtime.
@ DF_1_DISPRELPND
Disp reloc applied at run-time.
@ DF_1_NOW
Set RTLD_NOW for this object.
@ DF_1_NOOPEN
Set RTLD_NOOPEN for this object.
@ DF_1_DISPRELDNE
Disp reloc applied at build time.
@ DF_1_GLOBAL
Set RTLD_GLOBAL for this object.
@ DF_1_DIRECT
Direct binding enabled.
@ DF_1_NODELETE
Set RTLD_NODELETE for this object.
@ DF_1_NODUMP
Object can't be dldump'ed.
@ DF_1_GROUP
Set RTLD_GROUP for this object.
@ DF_1_ENDFILTEE
Filtee terminates filters search.
@ DF_1_INTERPOSE
Object is used to interpose.
@ DF_1_NODEFLIB
Ignore default lib search path.
@ DF_1_ORIGIN
$ORIGIN must be handled.
@ DF_1_CONFALT
Configuration alternative created.
@ DF_1_INITFIRST
Set RTLD_INITFIRST for this object.
@ ELFMAG1
e_ident[EI_MAG1]
@ ELFMAG0
e_ident[EI_MAG0]
@ ELFMAG3
e_ident[EI_MAG3]
@ ELFMAG2
e_ident[EI_MAG2]
@ NT_PRFPXREG
Contains copy of fprxregset struct.
@ NT_TASKSTRUCT
Contains copy of task structure.
@ NT_ASRS
Contains copy of asrset struct.
@ NT_LWPSINFO
Contains copy of lwpinfo struct.
@ NT_LWPSTATUS
Contains copy of lwpstatus struct.
@ NT_AUXV
Contains copy of auxv array.
@ NT_PRCRED
Contains copy of prcred struct.
@ NT_PSINFO
Contains copy of psinfo struct.
@ NT_PRPSINFO
Contains copy of prpsinfo struct.
@ NT_UTSNAME
Contains copy of utsname struct.
@ NT_FPREGSET
Contains copy of fpregset struct.
@ NT_PSTATUS
Contains copy of pstatus struct.
@ NT_PRXREG
Contains copy of prxregset struct.
@ NT_PRSTATUS
Contains copy of prstatus struct.
@ NT_PLATFORM
String from sysinfo(SI_PLATFORM)
@ NT_GWINDOWS
Contains copy of gwindows struct.
@ R_AARCH64_NONE
No reloc.
@ PF_ARM_SB
Segment contains the location addressed by the static base.
@ STT_LOPROC
processor-specific
@ STT_FUNC
associated with a function or other code
@ STT_NOTYPE
symbol's type not specified
@ STT_OBJECT
associated with a data object
@ STT_FILE
source file name associated with object
@ STT_SECTION
associated with a section
@ STT_HIPROC
processor-specific
@ EI_ABIVERSION
ABI version.
@ EI_PAD
start of padding bytes
@ EI_OSABI
Operating system / ABI identification.
@ EF_ARM_ALIGN8
8-bit structure alignment is in use
@ EV_CURRENT
Current version.
@ EV_NONE
Invalid version.
@ PF_MASKPROC
Processor-specific.
@ SHT_NUM
Number of defined types.
@ SHT_HASH
symbol hash table
@ SHT_RELA
reloc entries w/ explicit addens
@ SHT_PROGBITS
information defined by program
@ SHT_SYMTAB_SHNDX
Extended section indices.
@ SHT_REL
reloc entries w/o explicit addens
@ SHT_HIOS
End OS-specific.
@ SHT_FINI_ARRAY
Array of destructors.
@ SHT_HIPROC
End processor-specific.
@ SHT_GROUP
Section group.
@ SHT_INIT_ARRAY
Array of constructors.
@ SHT_NOTE
information that marks the file
@ SHT_NOBITS
occupies no space in the file
@ SHT_LOUSER
Start application-specific.
@ SHT_NULL
inactive section header
@ SHT_HIUSER
End application-specific.
@ SHT_LOOS
Start OS-specific.
@ SHT_DYNSYM
symbol table (dynamic
@ SHT_PREINIT_ARRAY
Array of pre-constructors.
@ SHT_SHLIB
reserved + unspecified semantics
@ SHT_LOPROC
Start processor-specific.
@ SHT_DYNAMIC
information for dynamic linking
@ SHN_COMMON
common symbols
@ SHN_UNDEF
undefined section header entry
@ SHN_HIPROC
upper bound of proc spec entr
@ SHN_LOPROC
lower bound of proc spec entr
@ SHN_ABS
absolute values for ref
@ SHN_LORESERVE
lower bound of reserved indexes
@ SHN_HIRESERVE
upper bound of reserved indexes
@ DF_P1_LAZYLOAD
Lazyload following object.
@ DF_P1_GROUPPERM
Symbols from next object are not generally available.
@ SHF_MERGE
Might be merged.
@ SHF_INFO_LINK
‘sh_info’ contains SHT index
@ SHF_STRINGS
Contains nul-terminated strings.
@ SHF_ALLOC
section occupies virt memory
@ SHF_MASKPROC
processor-specific mask
@ SHF_GROUP
Section is member of a group.
@ SHF_EXECINSTR
code section
@ SHF_OS_NONCONFORMING
Non-standard OS-specific handling required.
@ SHF_LINK_ORDER
Preserve order after combining.
@ SHF_TLS
Section hold thread-local data.
@ SHF_WRITE
writeable during execution
@ AT_IGNORE
Entry should be ignored.
@ AT_PHDR
Program headers for program.
@ AT_L4_AUX
L4Re AUX section.
@ AT_BASE
Base address of interpreter.
@ AT_L4_ENV
L4Re ENV section.
@ AT_ENTRY
Entry point of program.
@ AT_PHENT
Size of program header entry.
@ AT_EXECFD
File descriptor of program.
@ AT_NOTELF
Program is not ELF.
@ AT_PAGESZ
System page size.
@ AT_PHNUM
Number of program headers.
@ R_386_TLS_GD_CALL
Relocation for call to __tls_get_addr()
@ R_386_TLS_DTPOFF32
Offset in TLS block.
@ R_386_TLS_LDO_32
Offset relative to TLS block.
@ R_386_TLS_LDM
Direct 32 bit for GNU version of local dynamic thread local data in LE code.
@ R_386_TLS_LDM_PUSH
Tag for pushl in LDM TLS code.
@ R_386_TLS_LDM_CALL
Relocation for call to __tls_get_addr() in LDM code.
@ R_386_TLS_IE
Address of GOT entry for static TLS block offset.
@ R_386_TLS_TPOFF
Offset in static TLS block.
@ R_386_TLS_LDM_POP
Tag for popl in LDM TLS code.
@ R_386_TLS_LE_32
Negated offset relative to static TLS block.
@ R_386_TLS_LE
Offset relative to static TLS block.
@ R_386_TLS_TPOFF32
Negated offset in static TLS block.
@ R_386_TLS_DTPMOD32
ID of module containing symbol.
@ R_386_TLS_GD
Direct 32 bit for GNU version of general dynamic thread local data.
@ R_386_TLS_GD_PUSH
Tag for pushl in GD TLS code.
@ R_386_TLS_LDM_32
Direct 32 bit for local dynamic thread local data in LE code.
@ R_386_TLS_GOTIE
GOT entry for static TLS block offset.
@ R_386_TLS_GD_POP
Tag for popl in GD TLS code.
@ R_386_GOTPC
GOT + A - P.
@ R_386_GOTOFF
S + A - GOT.
@ R_386_TLS_IE_32
GOT entry for negated static TLS block offset.
@ R_386_TLS_GD_32
Direct 32 bit for general dynamic thread local data.
@ R_386_NUM
Keep this the last entry.
@ EM_H8_300
Hitachi H8/300.
@ EM_TRICORE
Siemens Tricore embedded processor.
@ EM_SVX
Silicon Graphics SVx.
@ EM_IA_64
HP/Intel IA-64.
@ EM_TILEPRO
Tilera TILEPro.
@ EM_MMIX
Donald Knuth's educational 64-bit processor.
@ EM_PDSP
Sony DSP Processor.
@ EM_X86_64
Advanced Micro Devices x86-64.
@ EM_TILEGX
Tilera TILE-Gx.
@ EM_OPENRISC
OpenRISC 32-bit embedded processor.
@ EM_68HC11
Motorola MC68HC11 microcontroller.
@ EM_M32R
Mitsubishi M32R.
@ EM_ARM
Advanced RISC Machines ARM.
@ EM_ARC_A5
ARC Cores Tangent-A5.
@ EM_H8_300H
Hitachi H8/300H.
@ EM_SPARC64
SPARC 64-bit.
@ EM_ST19
STMicroelectronics ST19 8 bit mc.
@ EM_JAVELIN
Infineon Technologies 32-bit embedded processor.
@ EM_ST9PLUS
STMicroelectronics ST9+ 8/16 mc.
@ EM_68HC08
Motorola MC68HC08 microcontroller.
@ EM_ALTERA_NIOS2
Altera Nios II.
@ EM_MIPS
MIPS RS3000 big-endian.
@ EM_CRIS
Axis Communications 32-bit embedded processor.
@ EM_HUANY
Harvard University machine-independent object files.
@ EM_68HC16
Motorola MC68HC16 microcontroller.
@ EM_68HC05
Motorola MC68HC05 microcontroller.
@ EM_H8_500
Hitachi H8/500.
@ EM_VPP500
Fujitsu VPP500.
@ EM_FX66
Siemens FX66 microcontroller.
@ EM_XTENSA
Tensilica Xtensa Architecture.
@ EM_68HC12
Motorola M68HC12.
@ EM_MN10200
Matsushita MN10200.
@ EM_COLDFIRE
Motorola Coldfire.
@ EM_SPARC32PLUS
Sun's V8plus.
@ EM_ARC
Argonaut RISC Core, Argonaut Techn Inc.
@ EM_ZSP
LSI Logic 16-bit DSP Processor.
@ EM_AVR
Atmel AVR 8-bit microcontroller.
@ EM_MIPS_X
Stanford MIPS-X.
@ EM_D30V
Mitsubishi D30V.
@ EM_MIPS_RS4_BE
MIPS RS4000 big-endian.
@ EM_MN10300
Matsushita MN10300.
@ EM_D10V
Mitsubishi D10V.
@ EM_SPARCV9
SPARC v9 64-bit.
@ EM_MICROBLAZE
Xilinx MicroBlaze.
@ EM_FIREPATH
Element 14 64-bit DSP Processor.
@ EM_ST7
STmicroelectronics ST7 8 bit mc.
@ NT_VERSION
Contains a version string.
@ STB_GLOBAL
visible to all objects being combined
@ STB_LOPROC
Processor-specific.
@ STB_LOCAL
not visible outside object file
@ STB_WEAK
resemble global symbols
@ STB_HIPROC
Processor-specific.
@ DF_STATIC_TLS
Module uses the static TLS model.
@ DF_BIND_NOW
No lazy binding for this object.
@ DF_ORIGIN
Object may use DF_ORIGIN.
@ DF_SYMBOLIC
Symbol resolutions starts here.
@ DF_TEXTREL
Object contains text relocations.
@ SHF_ARM_ENTRYSECT
Section contains an entry point.
@ SHF_ARM_COMDEF
Section may be multiply defined in the input to a link step.
@ EI_NIDENT
Number of characters.
@ R_ARM_ABS16
Direct 16 bit.
@ R_ARM_RELATIVE
Adjust by program base.
@ R_ARM_PC24
PC relative 26 bit branch.
@ R_ARM_GOTPC
32 bit PC relative offset to GOT
@ R_ARM_THM_PC9
thumb conditional branch
@ R_ARM_ABS12
Direct 12 bit.
@ R_ARM_THM_PC11
thumb unconditional branch
@ R_ARM_NUM
Keep this the last entry.
@ R_ARM_GOT32
32 bit GOT entry
@ R_ARM_GLOB_DAT
Create GOT entry.
@ R_ARM_ABS8
Direct 8 bit.
@ R_ARM_GOTOFF
32 bit offset to GOT
@ R_ARM_REL32
PC relative 32 bit.
@ R_ARM_PLT32
32 bit PLT address
@ R_ARM_COPY
Copy symbol at runtime.
@ R_ARM_ABS32
Direct 32 bit
@ R_ARM_JUMP_SLOT
Create PLT entry.
Auxiliary vector (32-bit).
Elf32_Word d_val
integer values with various interpret.
Elf32_Addr d_ptr
program virtual addresses
Elf32_Off e_shoff
offset of file header table
Elf32_Half e_ehsize
size of ELF header
Elf32_Half e_shnum
number of entries in section header table
Elf32_Half e_machine
required architecture
Elf32_Off e_phoff
offset of program header table
Elf32_Half e_phnum
number of entries in program header table
Elf32_Half e_shstrndx
section header table index of strtab
Elf32_Half e_type
type of ELF file
Elf32_Word e_flags
processor-specific flags
Elf32_Word e_version
file version
Elf32_Half e_shentsize
size of section header entry
Elf32_Addr e_entry
initial program counter
Elf32_Half e_phentsize
size of program header entry
Elf32_Addr p_vaddr
memory address of prog section
Elf32_Word p_type
type of program section
Elf32_Off p_offset
file offset of program section
Elf32_Word p_filesz
file size of program section
Elf32_Word p_memsz
memory size of program section
Elf32_Addr p_paddr
physical address (ignored)
Elf32_Word p_align
alignment of section
ELF32 relocation entry w/o addend.
ELF32 relocation entry w/ addend.
Elf32_Word sh_entsize
size of entry if sect is table
Elf32_Word sh_flags
section's flags
Elf32_Word sh_addralign
address alignment constraints
Elf32_Off sh_offset
file offset of section
Elf32_Word sh_name
name of sect (idx into strtab)
Elf32_Addr sh_addr
memory address of section
Elf32_Word sh_size
file size of section
Elf32_Word sh_type
section's type
Elf32_Word sh_link
idx to associated header section
Elf32_Word sh_info
extra info of header section
ELF32 symbol table entry.
Elf32_Word st_size
size of associated symbol
unsigned char st_other
undefined
Elf32_Half st_shndx
associated section header
Elf32_Word st_name
name of symbol (idx symstrtab)
unsigned char st_info
type and binding info
Elf32_Addr st_value
value of associated symbol
Auxiliary vector (64-bit).
Elf64_Addr d_ptr
program virtual addresses
Elf64_Xword d_val
integer values with various interpret.
Elf64_Half e_type
type of ELF file
Elf64_Half e_shentsize
size of section header entry
Elf64_Half e_shnum
number of entries in section header table
Elf64_Word e_version
file version
Elf64_Half e_ehsize
size of ELF header
Elf64_Off e_shoff
offset of file header table
Elf64_Addr e_entry
initial program counter
Elf64_Half e_phentsize
size of program header entry
Elf64_Off e_phoff
offset of program header table
Elf64_Half e_machine
required architecture
Elf64_Word e_flags
processor-specific flags
Elf64_Half e_shstrndx
section header table index of strtab
Elf64_Half e_phnum
number of entries in program header table
Elf64_Xword p_memsz
memory size of program section
Elf64_Addr p_vaddr
memory address of prog section
Elf64_Addr p_paddr
physical address (ignored)
Elf64_Off p_offset
file offset of program section
Elf64_Xword p_align
alignment of section
Elf64_Word p_type
type of program section
Elf64_Xword p_filesz
file size of program section
ELF64 relocation entry w/o addend.
ELF64 relocation entry w/ addend.
Elf64_Word sh_name
name of sect (idx into strtab)
Elf64_Xword sh_flags
section's flags
Elf64_Word sh_link
idx to associated header section
Elf64_Word sh_type
section's type
Elf64_Word sh_info
extra info of header section
Elf64_Xword sh_entsize
size of entry if sect is table
Elf64_Xword sh_size
file size of section
Elf64_Xword sh_addralign
address alignment constraints
Elf64_Addr sh_addr
memory address of section
Elf64_Off sh_offset
file offset of section
ELF64 symbol table entry.
Elf64_Half st_shndx
associated section header
Elf64_Word st_name
name of symbol (idx symstrtab)
Elf64_Addr st_value
value of associated symbol
unsigned char st_info
type and binding info
unsigned char st_other
undefined
Elf64_Xword st_size
size of associated symbol