PatchworkOS
Loading...
Searching...
No Matches
elf.h File Reference
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  elf_hdr_t
 ELF file header. More...
 
struct  elf_phdr_t
 ELF program header. More...
 
struct  elf_shdr_t
 ELF section header. More...
 
struct  elf_sym_t
 ELF symbol table entry. More...
 
struct  elf_rela_t
 ELF relocation entry with addend. More...
 
struct  elf_rel_t
 ELF relocation entry without addend. More...
 
struct  elf_dyn_t
 ELF dynamic entry. More...
 
struct  elf_note_t
 ELF note header. More...
 

Macros

#define ELF_IDENT_MAG0   0
 
#define ELF_IDENT_MAG1   1
 
#define ELF_IDENT_MAG2   2
 
#define ELF_IDENT_MAG3   3
 
#define ELF_IDENT_CLASS   4
 
#define ELF_IDENT_DATA   5
 
#define ELF_IDENT_VERSION   6
 
#define ELF_IDENT_OSABI   7
 
#define ELF_IDENT_ABIVERSION   8
 
#define ELF_IDENT_PAD   9
 
#define ELF_MAG0   0x7F
 
#define ELF_MAG1   'E'
 
#define ELF_MAG2   'L'
 
#define ELF_MAG3   'F'
 
#define ELF_CLASS_NONE   0
 
#define ELF_CLASS_32   1
 
#define ELF_CLASS_64   2
 
#define ELF_DATA_NONE   0
 
#define ELF_DATA_2LSB   1 /* Little endian */
 
#define ELF_DATA_2MSB   2 /* Big endian */
 
#define ELF_VERSION_NONE   0
 
#define ELF_VERSION_CURRENT   1
 
#define ELF_OSABI_SYSV   0
 
#define ELF_OSABI_HPUX   1
 
#define ELF_OSABI_NETBSD   2
 
#define ELF_OSABI_LINUX   3
 
#define ELF_OSABI_SOLARIS   6
 
#define ELF_OSABI_AIX   7
 
#define ELF_OSABI_IRIX   8
 
#define ELF_OSABI_FREEBSD   9
 
#define ELF_OSABI_TRU64   10
 
#define ELF_OSABI_MODESTO   11
 
#define ELF_OSABI_OPENBSD   12
 
#define ELF_OSABI_ARM_AEABI   64
 
#define ELF_OSABI_ARM   97
 
#define ELF_OSABI_STANDALONE   255
 
#define ELF_HDR_TYPE_NONE   0x0
 
#define ELF_HDR_TYPE_REL   0x1
 
#define ELF_HDR_TYPE_EXEC   0x2
 
#define ELF_HDR_TYPE_DYN   0x3
 
#define ELF_HDR_TYPE_CORE   0x4
 
#define ELF_HDR_TYPE_LOW_PROC   0xff00
 
#define ELF_HDR_TYPE_HIGH_PROC   0xffff
 
#define ELF_HDR_MACHINE_NONE   0x00
 
#define ELF_HDR_MACHINE_M32   0x01
 
#define ELF_HDR_MACHINE_SPARC   0x02
 
#define ELF_HDR_MACHINE_386   0x03
 
#define ELF_HDR_MACHINE_68K   0x04
 
#define ELF_HDR_MACHINE_88K   0x05
 
#define ELF_HDR_MACHINE_860   0x07
 
#define ELF_HDR_MACHINE_MIPS   0x08
 
#define ELF_HDR_MACHINE_PARISC   0x0F
 
#define ELF_HDR_MACHINE_SPARC32PLUS   0x12
 
#define ELF_HDR_MACHINE_PPC   0x14
 
#define ELF_HDR_MACHINE_PPC64   0x15
 
#define ELF_HDR_MACHINE_S390   0x16
 
#define ELF_HDR_MACHINE_ARM   0x28
 
#define ELF_HDR_MACHINE_SH   0x2A
 
#define ELF_HDR_MACHINE_SPARCV9   0x2B
 
#define ELF_HDR_MACHINE_IA64   0x32
 
#define ELF_HDR_MACHINE_X86_64   0x3E
 
#define ELF_HDR_MACHINE_AARCH64   0xB7
 
#define ELF_HDR_MACHINE_RISCV   0xF3
 
#define ELF_HDR_VERSION_NONE   0
 
#define ELF_HDR_VERSION_1   1
 
#define ELF_PHDR_TYPE_NULL   0
 
#define ELF_PHDR_TYPE_LOAD   1
 
#define ELF_PHDR_TYPE_DYNAMIC   2
 
#define ELF_PHDR_TYPE_INTERP   3
 
#define ELF_PHDR_TYPE_NOTE   4
 
#define ELF_PHDR_TYPE_SHLIB   5
 
#define ELF_PHDR_TYPE_PHDR   6
 
#define ELF_PHDR_TYPE_TLS   7
 
#define ELF_PHDR_TYPE_LOW_OS   0x60000000
 
#define ELF_PHDR_TYPE_HIGH_OS   0x6fffffff
 
#define ELF_PHDR_TYPE_LOW_PROC   0x70000000
 
#define ELF_PHDR_TYPE_HIGH_PROC   0x7fffffff
 
#define ELF_PHDR_TYPE_GNU_EH_FRAME   (ELF_PHDR_TYPE_LOW_OS + 0x474e550)
 
#define ELF_PHDR_TYPE_GNU_STACK   (ELF_PHDR_TYPE_LOW_OS + 0x474e551)
 
#define ELF_PHDR_TYPE_GNU_RELRO   (ELF_PHDR_TYPE_LOW_OS + 0x474e552)
 
#define ELF_PHDR_TYPE_GNU_PROPERTY   (ELF_PHDR_TYPE_LOW_OS + 0x474e553)
 
#define ELF_PHDR_FLAGS_EXECUTE   (1 << 0)
 
#define ELF_PHDR_FLAGS_WRITE   (1 << 1)
 
#define ELF_PHDR_FLAGS_READ   (1 << 2)
 
#define ELF_SHDR_TYPE_NULL   0
 
#define ELF_SHDR_TYPE_PROGBITS   1
 
#define ELF_SHDR_TYPE_SYMTAB   2
 
#define ELF_SHDR_TYPE_STRTAB   3
 
#define ELF_SHDR_TYPE_RELA   4
 
#define ELF_SHDR_TYPE_HASH   5
 
#define ELF_SHDR_TYPE_DYNAMIC   6
 
#define ELF_SHDR_TYPE_NOTE   7
 
#define ELF_SHDR_TYPE_NOBITS   8
 
#define ELF_SHDR_TYPE_REL   9
 
#define ELF_SHDR_TYPE_SHLIB   10
 
#define ELF_SHDR_TYPE_DYNSYM   11
 
#define ELF_SHDR_TYPE_INIT_ARRAY   14
 
#define ELF_SHDR_TYPE_FINI_ARRAY   15
 
#define ELF_SHDR_TYPE_PREINIT_ARRAY   16
 
#define ELF_SHDR_TYPE_GROUP   17
 
#define ELF_SHDR_TYPE_SYMTAB_SHNDX   18
 
#define ELF_SHDR_TYPE_LOW_OS   0x60000000
 
#define ELF_SHDR_TYPE_HIGH_OS   0x6fffffff
 
#define ELF_SHDR_TYPE_LOW_PROC   0x70000000
 
#define ELF_SHDR_TYPE_HIGH_PROC   0x7fffffff
 
#define ELF_SHDR_TYPE_LOW_USER   0x80000000
 
#define ELF_SHDR_TYPE_HIGH_USER   0x8fffffff
 
#define ELF_SHDR_FLAGS_WRITE   (1 << 0)
 
#define ELF_SHDR_FLAGS_ALLOC   (1 << 1)
 
#define ELF_SHDR_FLAGS_EXECINSTR   (1 << 2)
 
#define ELF_SHDR_FLAGS_MERGE   (1 << 4)
 
#define ELF_SHDR_FLAGS_STRINGS   (1 << 5)
 
#define ELF_SHDR_FLAGS_INFO_LINK   (1 << 6)
 
#define ELF_SHDR_FLAGS_LINK_ORDER   (1 << 7)
 
#define ELF_SHDR_FLAGS_OS_NONCONFORMING   (1 << 8)
 
#define ELF_SHDR_FLAGS_GROUP   (1 << 9)
 
#define ELF_SHDR_FLAGS_TLS   (1 << 10)
 
#define ELF_SHDR_FLAGS_COMPRESSED   (1 << 11)
 
#define ELF_SHDR_FLAGS_MASKOS   0x0ff00000
 
#define ELF_SHDR_FLAGS_MASKPROC   0xf0000000
 
#define ELF_SHN_UNDEF   0
 
#define ELF_SHN_LORESERVE   0xff00
 
#define ELF_SHN_LOPROC   0xff00
 
#define ELF_SHN_HIPROC   0xff1f
 
#define ELF_SHN_LOOS   0xff20
 
#define ELF_SHN_HIOS   0xff3f
 
#define ELF_SHN_ABS   0xfff1
 
#define ELF_SHN_COMMON   0xfff2
 
#define ELF_SHN_XINDEX   0xffff
 
#define ELF_SHN_HIRESERVE   0xffff
 
#define ELF_ST_BIND(info)   ((info) >> 4)
 
#define ELF_ST_TYPE(info)   ((info) & 0xf)
 
#define ELF_ST_INFO(bind, type)   (((bind) << 4) + ((type) & 0xf))
 
#define ELF_STB_LOCAL   0
 
#define ELF_STB_GLOBAL   1
 
#define ELF_STB_WEAK   2
 
#define ELF_STB_LOOS   10
 
#define ELF_STB_HIOS   12
 
#define ELF_STB_LOPROC   13
 
#define ELF_STB_HIPROC   15
 
#define ELF_STT_NOTYPE   0
 
#define ELF_STT_OBJECT   1
 
#define ELF_STT_FUNC   2
 
#define ELF_STT_SECTION   3
 
#define ELF_STT_FILE   4
 
#define ELF_STT_COMMON   5
 
#define ELF_STT_TLS   6
 
#define ELF_STT_LOOS   10
 
#define ELF_STT_HIOS   12
 
#define ELF_STT_LOPROC   13
 
#define ELF_STT_HIPROC   15
 
#define ELF_DT_NULL   0
 
#define ELF_DT_NEEDED   1
 
#define ELF_DT_PLTRELSZ   2
 
#define ELF_DT_PLTGOT   3
 
#define ELF_DT_HASH   4
 
#define ELF_DT_STRTAB   5
 
#define ELF_DT_SYMTAB   6
 
#define ELF_DT_RELA   7
 
#define ELF_DT_RELASZ   8
 
#define ELF_DT_RELAENT   9
 
#define ELF_DT_STRSZ   10
 
#define ELF_DT_SYMENT   11
 
#define ELF_DT_INIT   12
 
#define ELF_DT_FINI   13
 
#define ELF_DT_SONAME   14
 
#define ELF_DT_RPATH   15
 
#define ELF_DT_SYMBOLIC   16
 
#define ELF_DT_REL   17
 
#define ELF_DT_RELSZ   18
 
#define ELF_DT_RELENT   19
 
#define ELF_DT_PLTREL   20
 
#define ELF_DT_DEBUG   21
 
#define ELF_DT_TEXTREL   22
 
#define ELF_DT_JMPREL   23
 
#define ELF_DT_BIND_NOW   24
 
#define ELF_DT_INIT_ARRAY   25
 
#define ELF_DT_FINI_ARRAY   26
 
#define ELF_DT_INIT_ARRAYSZ   27
 
#define ELF_DT_FINI_ARRAYSZ   28
 
#define ELF_DT_RUNPATH   29
 
#define ELF_DT_FLAGS   30
 
#define ELF_DT_ENCODING   32
 
#define ELF_DT_PREINIT_ARRAY   32
 
#define ELF_DT_PREINIT_ARRAYSZ   33
 
#define ELF_DT_SYMTAB_SHNDX   34
 
#define ELF_DT_LOW_OS   0x6000000d
 
#define ELF_DT_HIGH_OS   0x6ffff000
 
#define ELF_DT_LOW_PROC   0x70000000
 
#define ELF_DT_HIGH_PROC   0x7fffffff
 
#define ELF_IS_VALID(hdr)
 Checks the validity of an ELF header.
 

Typedefs

typedef uint16_t elf_hdr_type_t
 
typedef uint16_t elf_hdr_machine_t
 
typedef uint32_t elf_hdr_version_t
 
typedef uint32_t elf_phdr_type_t
 
typedef uint32_t elf_phdr_flags_t
 
typedef uint32_t elf_shdr_type_t
 
typedef uint64_t elf_shdr_flags_t