Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
Data structures and constants defined in the ELF specification. More...
#include <stdint.h>
Go to the source code of this file.
Data Structures | |
struct | elf32_ehdr |
ELF Header(32-bit) More... | |
struct | elf64_ehdr |
ELF Header(64-bit) More... | |
struct | elf32_shdr |
Section Header(32-bit) More... | |
struct | elf64_shdr |
Section Header(64-bit) More... | |
struct | elf32_sym |
Symbol table entry(32-bit) More... | |
struct | elf64_sym |
Symbol table entry(64-bit) More... | |
struct | elf32_rel |
Relocation entry for 32-bit ELFs. More... | |
struct | elf32_rela |
Relocation entry for 32-bit ELFs with addend. More... | |
struct | elf64_rel |
Relocation entry for 64-bit ELFs. More... | |
struct | elf64_rela |
Relocation entry for 64-bit ELFs with addend. More... | |
Macros | |
#define | EI_NIDENT 16 |
ELF identifier block. | |
#define | ET_REL 1 |
Relocatable (unlinked) ELF. | |
#define | ET_EXEC 2 |
Executable (without PIC/PIE) ELF. | |
#define | ET_DYN 3 |
Dynamic (executable with PIC/PIE or shared lib) ELF. | |
#define | ET_CORE 4 |
Core Dump. | |
#define | SHT_NULL 0x0 |
ELF section types. | |
#define | SHT_PROGBITS 0x1 |
Program data. | |
#define | SHT_SYMTAB 0x2 |
Symbol table. | |
#define | SHT_STRTAB 0x3 |
String table. | |
#define | SHT_RELA 0x4 |
Relocation entries with addends. | |
#define | SHT_NOBITS 0x8 |
Program data with no file image. | |
#define | SHT_REL 0x9 |
Relocation entries without addends. | |
#define | SHT_DYNSYM 0xB |
Dynamic linking symbol table. | |
#define | SHF_WRITE 0x1 |
ELF section flags. | |
#define | SHF_ALLOC 0x2 |
Section is present in memory. | |
#define | SHF_EXECINSTR 0x4 |
Section contains executable instructions. | |
#define | SHN_UNDEF 0 |
ELF section numbers. | |
#define | SHN_LORESERVE 0xff00 |
Start of reserved section numbers. | |
#define | SHN_ABS 0xfff1 |
Special value for absolute symbols. | |
#define | SHN_COMMON 0xfff2 |
Common block. | |
#define | SHN_HIRESERVE 0xffff |
End of reserved section numbers. | |
#define | STT_NOTYPE 0 |
Symbol table entry types. | |
#define | STT_OBJECT 1 |
Data or object. | |
#define | STT_FUNC 2 |
Function. | |
#define | STT_SECTION 3 |
Section. | |
#define | STT_FILE 4 |
File name. | |
#define | STT_COMMON 5 |
Common block. | |
#define | STT_LOOS 10 |
Start of OS specific. | |
#define | STT_HIOS 12 |
End of OS specific. | |
#define | STT_LOPROC 13 |
Start of processor specific. | |
#define | STT_HIPROC 15 |
End of processor specific. | |
#define | STB_LOCAL 0 |
Symbol table entry bindings. | |
#define | STB_GLOBAL 1 |
Global symbol. | |
#define | STB_WEAK 2 |
Weak symbol. | |
#define | STB_LOOS 10 |
Start of OS specific. | |
#define | STB_HIOS 12 |
End of OS specific. | |
#define | STB_LOPROC 13 |
Start of processor specific. | |
#define | STB_HIPROC 15 |
End of processor specific. | |
#define | ELF32_ST_BIND(i) ((i) >> 4) |
Symbol binding from 32bit st_info. | |
#define | ELF32_ST_TYPE(i) ((i) & 0xf) |
Symbol type from 32bit st_info. | |
#define | ELF64_ST_BIND(i) ((i) >> 4) |
Symbol binding from 32bit st_info. | |
#define | ELF64_ST_TYPE(i) ((i) & 0xf) |
Symbol type from 32bit st_info. | |
#define | ELF32_R_SYM(i) ((i) >> 8) |
Relocation symbol index from r_info. | |
#define | ELF32_R_TYPE(i) ((i) & 0xff) |
Relocation type from r_info. | |
#define | ELF64_R_SYM(i) ((i) >> 32) |
Relocation symbol from r_info. | |
#define | ELF64_R_TYPE(i) ((i) & 0xffffffff) |
Relocation type from r_info. | |
#define | ELF_R_SYM ELF64_R_SYM |
Machine sized macro alias for obtaining a relocation symbol. | |
#define | ELF_R_TYPE ELF64_R_TYPE |
Machine sized macro alias for obtaining a relocation type. | |
#define | ELF_ST_BIND ELF64_ST_BIND |
Machine sized macro alias for obtaining a symbol bind. | |
#define | ELF_ST_TYPE ELF64_ST_TYPE |
Machine sized macro alias for obtaining a symbol type. | |
Typedefs | |
typedef uint32_t | elf32_addr |
Unsigned program address. | |
typedef uint16_t | elf32_half |
Unsigned medium integer. | |
typedef uint32_t | elf32_off |
Unsigned file offset. | |
typedef int32_t | elf32_sword |
Signed integer. | |
typedef uint32_t | elf32_word |
Unsigned integer. | |
typedef uint64_t | elf64_addr |
Unsigned program address. | |
typedef uint16_t | elf64_half |
Unsigned medium integer. | |
typedef uint64_t | elf64_off |
Unsigned file offset. | |
typedef int32_t | elf64_sword |
Signed integer. | |
typedef uint32_t | elf64_word |
Unsigned integer. | |
typedef int64_t | elf64_sxword |
Signed long integer. | |
typedef uint64_t | elf64_xword |
Unsigned long integer. | |
typedef struct elf64_ehdr | elf_ehdr_t |
Relocation names (should be moved to arch-specific files) | |
typedef struct elf64_shdr | elf_shdr_t |
Machine sized section header structure. | |
typedef struct elf64_phdr | elf_phdr_t |
Machine sized program header structure. | |
typedef elf64_addr | elf_addr |
Machine sized program address. | |
typedef elf64_half | elf_half |
Machine sized small integer. | |
typedef elf64_xword | elf_word |
Machine sized integer. | |
typedef struct elf64_rel | elf_rel_t |
Machine sized relocation struct. | |
typedef struct elf64_rela | elf_rela_t |
Machine sized relocation struct with addend. | |
typedef struct elf64_sym | elf_sym_t |
Machine sized symbol struct. | |
Data structures and constants defined in the ELF specification.
Reference documents can be found here: https://refspecs.linuxfoundation.org/elf/