Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
elf.h File Reference

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.
 

Detailed Description

Data structures and constants defined in the ELF specification.

Reference documents can be found here: https://refspecs.linuxfoundation.org/elf/