PatchworkOS
Loading...
Searching...
No Matches

Executable and linkable format definitions. More...

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
 

Detailed Description

Executable and linkable format definitions.

The sys/elf.h header defines structs and constants for ELF files used in Patchwork, note that Patchwork only supports ELF files.

See also
https://wiki.osdev.org/ELF for more information about the ELF format.

Macro Definition Documentation

◆ ELF_CLASS_32

#define ELF_CLASS_32   1

Definition at line 39 of file elf.h.

◆ ELF_CLASS_64

#define ELF_CLASS_64   2

Definition at line 40 of file elf.h.

◆ ELF_CLASS_NONE

#define ELF_CLASS_NONE   0

Definition at line 38 of file elf.h.

◆ ELF_DATA_2LSB

#define ELF_DATA_2LSB   1 /* Little endian */

Definition at line 44 of file elf.h.

◆ ELF_DATA_2MSB

#define ELF_DATA_2MSB   2 /* Big endian */

Definition at line 45 of file elf.h.

◆ ELF_DATA_NONE

#define ELF_DATA_NONE   0

Definition at line 43 of file elf.h.

◆ ELF_DT_BIND_NOW

#define ELF_DT_BIND_NOW   24

Definition at line 237 of file elf.h.

◆ ELF_DT_DEBUG

#define ELF_DT_DEBUG   21

Definition at line 234 of file elf.h.

◆ ELF_DT_ENCODING

#define ELF_DT_ENCODING   32

Definition at line 244 of file elf.h.

◆ ELF_DT_FINI

#define ELF_DT_FINI   13

Definition at line 226 of file elf.h.

◆ ELF_DT_FINI_ARRAY

#define ELF_DT_FINI_ARRAY   26

Definition at line 239 of file elf.h.

◆ ELF_DT_FINI_ARRAYSZ

#define ELF_DT_FINI_ARRAYSZ   28

Definition at line 241 of file elf.h.

◆ ELF_DT_FLAGS

#define ELF_DT_FLAGS   30

Definition at line 243 of file elf.h.

◆ ELF_DT_HASH

#define ELF_DT_HASH   4

Definition at line 217 of file elf.h.

◆ ELF_DT_HIGH_OS

#define ELF_DT_HIGH_OS   0x6ffff000

Definition at line 249 of file elf.h.

◆ ELF_DT_HIGH_PROC

#define ELF_DT_HIGH_PROC   0x7fffffff

Definition at line 251 of file elf.h.

◆ ELF_DT_INIT

#define ELF_DT_INIT   12

Definition at line 225 of file elf.h.

◆ ELF_DT_INIT_ARRAY

#define ELF_DT_INIT_ARRAY   25

Definition at line 238 of file elf.h.

◆ ELF_DT_INIT_ARRAYSZ

#define ELF_DT_INIT_ARRAYSZ   27

Definition at line 240 of file elf.h.

◆ ELF_DT_JMPREL

#define ELF_DT_JMPREL   23

Definition at line 236 of file elf.h.

◆ ELF_DT_LOW_OS

#define ELF_DT_LOW_OS   0x6000000d

Definition at line 248 of file elf.h.

◆ ELF_DT_LOW_PROC

#define ELF_DT_LOW_PROC   0x70000000

Definition at line 250 of file elf.h.

◆ ELF_DT_NEEDED

#define ELF_DT_NEEDED   1

Definition at line 214 of file elf.h.

◆ ELF_DT_NULL

#define ELF_DT_NULL   0

Definition at line 213 of file elf.h.

◆ ELF_DT_PLTGOT

#define ELF_DT_PLTGOT   3

Definition at line 216 of file elf.h.

◆ ELF_DT_PLTREL

#define ELF_DT_PLTREL   20

Definition at line 233 of file elf.h.

◆ ELF_DT_PLTRELSZ

#define ELF_DT_PLTRELSZ   2

Definition at line 215 of file elf.h.

◆ ELF_DT_PREINIT_ARRAY

#define ELF_DT_PREINIT_ARRAY   32

Definition at line 245 of file elf.h.

◆ ELF_DT_PREINIT_ARRAYSZ

#define ELF_DT_PREINIT_ARRAYSZ   33

Definition at line 246 of file elf.h.

◆ ELF_DT_REL

#define ELF_DT_REL   17

Definition at line 230 of file elf.h.

◆ ELF_DT_RELA

#define ELF_DT_RELA   7

Definition at line 220 of file elf.h.

◆ ELF_DT_RELAENT

#define ELF_DT_RELAENT   9

Definition at line 222 of file elf.h.

◆ ELF_DT_RELASZ

#define ELF_DT_RELASZ   8

Definition at line 221 of file elf.h.

◆ ELF_DT_RELENT

#define ELF_DT_RELENT   19

Definition at line 232 of file elf.h.

◆ ELF_DT_RELSZ

#define ELF_DT_RELSZ   18

Definition at line 231 of file elf.h.

◆ ELF_DT_RPATH

#define ELF_DT_RPATH   15

Definition at line 228 of file elf.h.

◆ ELF_DT_RUNPATH

#define ELF_DT_RUNPATH   29

Definition at line 242 of file elf.h.

◆ ELF_DT_SONAME

#define ELF_DT_SONAME   14

Definition at line 227 of file elf.h.

◆ ELF_DT_STRSZ

#define ELF_DT_STRSZ   10

Definition at line 223 of file elf.h.

◆ ELF_DT_STRTAB

#define ELF_DT_STRTAB   5

Definition at line 218 of file elf.h.

◆ ELF_DT_SYMBOLIC

#define ELF_DT_SYMBOLIC   16

Definition at line 229 of file elf.h.

◆ ELF_DT_SYMENT

#define ELF_DT_SYMENT   11

Definition at line 224 of file elf.h.

◆ ELF_DT_SYMTAB

#define ELF_DT_SYMTAB   6

Definition at line 219 of file elf.h.

◆ ELF_DT_SYMTAB_SHNDX

#define ELF_DT_SYMTAB_SHNDX   34

Definition at line 247 of file elf.h.

◆ ELF_DT_TEXTREL

#define ELF_DT_TEXTREL   22

Definition at line 235 of file elf.h.

◆ ELF_HDR_MACHINE_386

#define ELF_HDR_MACHINE_386   0x03

Definition at line 82 of file elf.h.

◆ ELF_HDR_MACHINE_68K

#define ELF_HDR_MACHINE_68K   0x04

Definition at line 83 of file elf.h.

◆ ELF_HDR_MACHINE_860

#define ELF_HDR_MACHINE_860   0x07

Definition at line 85 of file elf.h.

◆ ELF_HDR_MACHINE_88K

#define ELF_HDR_MACHINE_88K   0x05

Definition at line 84 of file elf.h.

◆ ELF_HDR_MACHINE_AARCH64

#define ELF_HDR_MACHINE_AARCH64   0xB7

Definition at line 97 of file elf.h.

◆ ELF_HDR_MACHINE_ARM

#define ELF_HDR_MACHINE_ARM   0x28

Definition at line 92 of file elf.h.

◆ ELF_HDR_MACHINE_IA64

#define ELF_HDR_MACHINE_IA64   0x32

Definition at line 95 of file elf.h.

◆ ELF_HDR_MACHINE_M32

#define ELF_HDR_MACHINE_M32   0x01

Definition at line 80 of file elf.h.

◆ ELF_HDR_MACHINE_MIPS

#define ELF_HDR_MACHINE_MIPS   0x08

Definition at line 86 of file elf.h.

◆ ELF_HDR_MACHINE_NONE

#define ELF_HDR_MACHINE_NONE   0x00

Definition at line 79 of file elf.h.

◆ ELF_HDR_MACHINE_PARISC

#define ELF_HDR_MACHINE_PARISC   0x0F

Definition at line 87 of file elf.h.

◆ ELF_HDR_MACHINE_PPC

#define ELF_HDR_MACHINE_PPC   0x14

Definition at line 89 of file elf.h.

◆ ELF_HDR_MACHINE_PPC64

#define ELF_HDR_MACHINE_PPC64   0x15

Definition at line 90 of file elf.h.

◆ ELF_HDR_MACHINE_RISCV

#define ELF_HDR_MACHINE_RISCV   0xF3

Definition at line 98 of file elf.h.

◆ ELF_HDR_MACHINE_S390

#define ELF_HDR_MACHINE_S390   0x16

Definition at line 91 of file elf.h.

◆ ELF_HDR_MACHINE_SH

#define ELF_HDR_MACHINE_SH   0x2A

Definition at line 93 of file elf.h.

◆ ELF_HDR_MACHINE_SPARC

#define ELF_HDR_MACHINE_SPARC   0x02

Definition at line 81 of file elf.h.

◆ ELF_HDR_MACHINE_SPARC32PLUS

#define ELF_HDR_MACHINE_SPARC32PLUS   0x12

Definition at line 88 of file elf.h.

◆ ELF_HDR_MACHINE_SPARCV9

#define ELF_HDR_MACHINE_SPARCV9   0x2B

Definition at line 94 of file elf.h.

◆ ELF_HDR_MACHINE_X86_64

#define ELF_HDR_MACHINE_X86_64   0x3E

Definition at line 96 of file elf.h.

◆ ELF_HDR_TYPE_CORE

#define ELF_HDR_TYPE_CORE   0x4

Definition at line 73 of file elf.h.

◆ ELF_HDR_TYPE_DYN

#define ELF_HDR_TYPE_DYN   0x3

Definition at line 72 of file elf.h.

◆ ELF_HDR_TYPE_EXEC

#define ELF_HDR_TYPE_EXEC   0x2

Definition at line 71 of file elf.h.

◆ ELF_HDR_TYPE_HIGH_PROC

#define ELF_HDR_TYPE_HIGH_PROC   0xffff

Definition at line 75 of file elf.h.

◆ ELF_HDR_TYPE_LOW_PROC

#define ELF_HDR_TYPE_LOW_PROC   0xff00

Definition at line 74 of file elf.h.

◆ ELF_HDR_TYPE_NONE

#define ELF_HDR_TYPE_NONE   0x0

Definition at line 69 of file elf.h.

◆ ELF_HDR_TYPE_REL

#define ELF_HDR_TYPE_REL   0x1

Definition at line 70 of file elf.h.

◆ ELF_HDR_VERSION_1

#define ELF_HDR_VERSION_1   1

Definition at line 103 of file elf.h.

◆ ELF_HDR_VERSION_NONE

#define ELF_HDR_VERSION_NONE   0

Definition at line 102 of file elf.h.

◆ ELF_IDENT_ABIVERSION

#define ELF_IDENT_ABIVERSION   8

Definition at line 28 of file elf.h.

◆ ELF_IDENT_CLASS

#define ELF_IDENT_CLASS   4

Definition at line 24 of file elf.h.

◆ ELF_IDENT_DATA

#define ELF_IDENT_DATA   5

Definition at line 25 of file elf.h.

◆ ELF_IDENT_MAG0

#define ELF_IDENT_MAG0   0

Definition at line 20 of file elf.h.

◆ ELF_IDENT_MAG1

#define ELF_IDENT_MAG1   1

Definition at line 21 of file elf.h.

◆ ELF_IDENT_MAG2

#define ELF_IDENT_MAG2   2

Definition at line 22 of file elf.h.

◆ ELF_IDENT_MAG3

#define ELF_IDENT_MAG3   3

Definition at line 23 of file elf.h.

◆ ELF_IDENT_OSABI

#define ELF_IDENT_OSABI   7

Definition at line 27 of file elf.h.

◆ ELF_IDENT_PAD

#define ELF_IDENT_PAD   9

Definition at line 29 of file elf.h.

◆ ELF_IDENT_VERSION

#define ELF_IDENT_VERSION   6

Definition at line 26 of file elf.h.

◆ ELF_IS_VALID

#define ELF_IS_VALID (   hdr)
Value:
((hdr)->ident[ELF_IDENT_MAG0] == ELF_MAG0 && (hdr)->ident[ELF_IDENT_MAG1] == ELF_MAG1 && \
(hdr)->ident[ELF_IDENT_MAG2] == ELF_MAG2 && (hdr)->ident[ELF_IDENT_MAG3] == ELF_MAG3 && \
(hdr)->ident[ELF_IDENT_CLASS] == ELF_CLASS_64 && (hdr)->ident[ELF_IDENT_DATA] == ELF_DATA_2LSB && \
(hdr)->ident[ELF_IDENT_VERSION] == ELF_VERSION_CURRENT && (hdr)->ident[ELF_IDENT_OSABI] == ELF_OSABI_SYSV && \
(hdr)->machine == ELF_HDR_MACHINE_X86_64 && (hdr)->version == ELF_HDR_VERSION_1)
#define ELF_IDENT_MAG3
Definition elf.h:23
#define ELF_DATA_2LSB
Definition elf.h:44
#define ELF_IDENT_MAG0
Definition elf.h:20
#define ELF_CLASS_64
Definition elf.h:40
#define ELF_MAG3
Definition elf.h:35
#define ELF_MAG2
Definition elf.h:34
#define ELF_HDR_MACHINE_X86_64
Definition elf.h:96
#define ELF_IDENT_MAG2
Definition elf.h:22
#define ELF_HDR_VERSION_1
Definition elf.h:103
#define ELF_MAG0
Definition elf.h:32
#define ELF_VERSION_CURRENT
Definition elf.h:49
#define ELF_IDENT_MAG1
Definition elf.h:21
#define ELF_IDENT_DATA
Definition elf.h:25
#define ELF_MAG1
Definition elf.h:33
#define ELF_IDENT_CLASS
Definition elf.h:24
#define ELF_OSABI_SYSV
Definition elf.h:52
#define ELF_IDENT_OSABI
Definition elf.h:27
#define ELF_IDENT_VERSION
Definition elf.h:26

Checks the validity of an ELF header.

The ELF_IS_VALID() macro checks that the ELF file header is using version 1, 64-bit, x86_64 with little endian and System V ABI.

Parameters
hdrA pointer to the ELF header structure.
Returns
True if the ELF header is valid, false otherwise.

Definition at line 263 of file elf.h.

◆ ELF_MAG0

#define ELF_MAG0   0x7F

Definition at line 32 of file elf.h.

◆ ELF_MAG1

#define ELF_MAG1   'E'

Definition at line 33 of file elf.h.

◆ ELF_MAG2

#define ELF_MAG2   'L'

Definition at line 34 of file elf.h.

◆ ELF_MAG3

#define ELF_MAG3   'F'

Definition at line 35 of file elf.h.

◆ ELF_OSABI_AIX

#define ELF_OSABI_AIX   7

Definition at line 57 of file elf.h.

◆ ELF_OSABI_ARM

#define ELF_OSABI_ARM   97

Definition at line 64 of file elf.h.

◆ ELF_OSABI_ARM_AEABI

#define ELF_OSABI_ARM_AEABI   64

Definition at line 63 of file elf.h.

◆ ELF_OSABI_FREEBSD

#define ELF_OSABI_FREEBSD   9

Definition at line 59 of file elf.h.

◆ ELF_OSABI_HPUX

#define ELF_OSABI_HPUX   1

Definition at line 53 of file elf.h.

◆ ELF_OSABI_IRIX

#define ELF_OSABI_IRIX   8

Definition at line 58 of file elf.h.

◆ ELF_OSABI_LINUX

#define ELF_OSABI_LINUX   3

Definition at line 55 of file elf.h.

◆ ELF_OSABI_MODESTO

#define ELF_OSABI_MODESTO   11

Definition at line 61 of file elf.h.

◆ ELF_OSABI_NETBSD

#define ELF_OSABI_NETBSD   2

Definition at line 54 of file elf.h.

◆ ELF_OSABI_OPENBSD

#define ELF_OSABI_OPENBSD   12

Definition at line 62 of file elf.h.

◆ ELF_OSABI_SOLARIS

#define ELF_OSABI_SOLARIS   6

Definition at line 56 of file elf.h.

◆ ELF_OSABI_STANDALONE

#define ELF_OSABI_STANDALONE   255

Definition at line 65 of file elf.h.

◆ ELF_OSABI_SYSV

#define ELF_OSABI_SYSV   0

Definition at line 52 of file elf.h.

◆ ELF_OSABI_TRU64

#define ELF_OSABI_TRU64   10

Definition at line 60 of file elf.h.

◆ ELF_PHDR_FLAGS_EXECUTE

#define ELF_PHDR_FLAGS_EXECUTE   (1 << 0)

Definition at line 127 of file elf.h.

◆ ELF_PHDR_FLAGS_READ

#define ELF_PHDR_FLAGS_READ   (1 << 2)

Definition at line 129 of file elf.h.

◆ ELF_PHDR_FLAGS_WRITE

#define ELF_PHDR_FLAGS_WRITE   (1 << 1)

Definition at line 128 of file elf.h.

◆ ELF_PHDR_TYPE_DYNAMIC

#define ELF_PHDR_TYPE_DYNAMIC   2

Definition at line 109 of file elf.h.

◆ ELF_PHDR_TYPE_GNU_EH_FRAME

#define ELF_PHDR_TYPE_GNU_EH_FRAME   (ELF_PHDR_TYPE_LOW_OS + 0x474e550)

Definition at line 120 of file elf.h.

◆ ELF_PHDR_TYPE_GNU_PROPERTY

#define ELF_PHDR_TYPE_GNU_PROPERTY   (ELF_PHDR_TYPE_LOW_OS + 0x474e553)

Definition at line 123 of file elf.h.

◆ ELF_PHDR_TYPE_GNU_RELRO

#define ELF_PHDR_TYPE_GNU_RELRO   (ELF_PHDR_TYPE_LOW_OS + 0x474e552)

Definition at line 122 of file elf.h.

◆ ELF_PHDR_TYPE_GNU_STACK

#define ELF_PHDR_TYPE_GNU_STACK   (ELF_PHDR_TYPE_LOW_OS + 0x474e551)

Definition at line 121 of file elf.h.

◆ ELF_PHDR_TYPE_HIGH_OS

#define ELF_PHDR_TYPE_HIGH_OS   0x6fffffff

Definition at line 116 of file elf.h.

◆ ELF_PHDR_TYPE_HIGH_PROC

#define ELF_PHDR_TYPE_HIGH_PROC   0x7fffffff

Definition at line 118 of file elf.h.

◆ ELF_PHDR_TYPE_INTERP

#define ELF_PHDR_TYPE_INTERP   3

Definition at line 110 of file elf.h.

◆ ELF_PHDR_TYPE_LOAD

#define ELF_PHDR_TYPE_LOAD   1

Definition at line 108 of file elf.h.

◆ ELF_PHDR_TYPE_LOW_OS

#define ELF_PHDR_TYPE_LOW_OS   0x60000000

Definition at line 115 of file elf.h.

◆ ELF_PHDR_TYPE_LOW_PROC

#define ELF_PHDR_TYPE_LOW_PROC   0x70000000

Definition at line 117 of file elf.h.

◆ ELF_PHDR_TYPE_NOTE

#define ELF_PHDR_TYPE_NOTE   4

Definition at line 111 of file elf.h.

◆ ELF_PHDR_TYPE_NULL

#define ELF_PHDR_TYPE_NULL   0

Definition at line 107 of file elf.h.

◆ ELF_PHDR_TYPE_PHDR

#define ELF_PHDR_TYPE_PHDR   6

Definition at line 113 of file elf.h.

◆ ELF_PHDR_TYPE_SHLIB

#define ELF_PHDR_TYPE_SHLIB   5

Definition at line 112 of file elf.h.

◆ ELF_PHDR_TYPE_TLS

#define ELF_PHDR_TYPE_TLS   7

Definition at line 114 of file elf.h.

◆ ELF_SHDR_FLAGS_ALLOC

#define ELF_SHDR_FLAGS_ALLOC   (1 << 1)

Definition at line 160 of file elf.h.

◆ ELF_SHDR_FLAGS_COMPRESSED

#define ELF_SHDR_FLAGS_COMPRESSED   (1 << 11)

Definition at line 169 of file elf.h.

◆ ELF_SHDR_FLAGS_EXECINSTR

#define ELF_SHDR_FLAGS_EXECINSTR   (1 << 2)

Definition at line 161 of file elf.h.

◆ ELF_SHDR_FLAGS_GROUP

#define ELF_SHDR_FLAGS_GROUP   (1 << 9)

Definition at line 167 of file elf.h.

◆ ELF_SHDR_FLAGS_INFO_LINK

#define ELF_SHDR_FLAGS_INFO_LINK   (1 << 6)

Definition at line 164 of file elf.h.

◆ ELF_SHDR_FLAGS_LINK_ORDER

#define ELF_SHDR_FLAGS_LINK_ORDER   (1 << 7)

Definition at line 165 of file elf.h.

◆ ELF_SHDR_FLAGS_MASKOS

#define ELF_SHDR_FLAGS_MASKOS   0x0ff00000

Definition at line 170 of file elf.h.

◆ ELF_SHDR_FLAGS_MASKPROC

#define ELF_SHDR_FLAGS_MASKPROC   0xf0000000

Definition at line 171 of file elf.h.

◆ ELF_SHDR_FLAGS_MERGE

#define ELF_SHDR_FLAGS_MERGE   (1 << 4)

Definition at line 162 of file elf.h.

◆ ELF_SHDR_FLAGS_OS_NONCONFORMING

#define ELF_SHDR_FLAGS_OS_NONCONFORMING   (1 << 8)

Definition at line 166 of file elf.h.

◆ ELF_SHDR_FLAGS_STRINGS

#define ELF_SHDR_FLAGS_STRINGS   (1 << 5)

Definition at line 163 of file elf.h.

◆ ELF_SHDR_FLAGS_TLS

#define ELF_SHDR_FLAGS_TLS   (1 << 10)

Definition at line 168 of file elf.h.

◆ ELF_SHDR_FLAGS_WRITE

#define ELF_SHDR_FLAGS_WRITE   (1 << 0)

Definition at line 159 of file elf.h.

◆ ELF_SHDR_TYPE_DYNAMIC

#define ELF_SHDR_TYPE_DYNAMIC   6

Definition at line 139 of file elf.h.

◆ ELF_SHDR_TYPE_DYNSYM

#define ELF_SHDR_TYPE_DYNSYM   11

Definition at line 144 of file elf.h.

◆ ELF_SHDR_TYPE_FINI_ARRAY

#define ELF_SHDR_TYPE_FINI_ARRAY   15

Definition at line 146 of file elf.h.

◆ ELF_SHDR_TYPE_GROUP

#define ELF_SHDR_TYPE_GROUP   17

Definition at line 148 of file elf.h.

◆ ELF_SHDR_TYPE_HASH

#define ELF_SHDR_TYPE_HASH   5

Definition at line 138 of file elf.h.

◆ ELF_SHDR_TYPE_HIGH_OS

#define ELF_SHDR_TYPE_HIGH_OS   0x6fffffff

Definition at line 151 of file elf.h.

◆ ELF_SHDR_TYPE_HIGH_PROC

#define ELF_SHDR_TYPE_HIGH_PROC   0x7fffffff

Definition at line 153 of file elf.h.

◆ ELF_SHDR_TYPE_HIGH_USER

#define ELF_SHDR_TYPE_HIGH_USER   0x8fffffff

Definition at line 155 of file elf.h.

◆ ELF_SHDR_TYPE_INIT_ARRAY

#define ELF_SHDR_TYPE_INIT_ARRAY   14

Definition at line 145 of file elf.h.

◆ ELF_SHDR_TYPE_LOW_OS

#define ELF_SHDR_TYPE_LOW_OS   0x60000000

Definition at line 150 of file elf.h.

◆ ELF_SHDR_TYPE_LOW_PROC

#define ELF_SHDR_TYPE_LOW_PROC   0x70000000

Definition at line 152 of file elf.h.

◆ ELF_SHDR_TYPE_LOW_USER

#define ELF_SHDR_TYPE_LOW_USER   0x80000000

Definition at line 154 of file elf.h.

◆ ELF_SHDR_TYPE_NOBITS

#define ELF_SHDR_TYPE_NOBITS   8

Definition at line 141 of file elf.h.

◆ ELF_SHDR_TYPE_NOTE

#define ELF_SHDR_TYPE_NOTE   7

Definition at line 140 of file elf.h.

◆ ELF_SHDR_TYPE_NULL

#define ELF_SHDR_TYPE_NULL   0

Definition at line 133 of file elf.h.

◆ ELF_SHDR_TYPE_PREINIT_ARRAY

#define ELF_SHDR_TYPE_PREINIT_ARRAY   16

Definition at line 147 of file elf.h.

◆ ELF_SHDR_TYPE_PROGBITS

#define ELF_SHDR_TYPE_PROGBITS   1

Definition at line 134 of file elf.h.

◆ ELF_SHDR_TYPE_REL

#define ELF_SHDR_TYPE_REL   9

Definition at line 142 of file elf.h.

◆ ELF_SHDR_TYPE_RELA

#define ELF_SHDR_TYPE_RELA   4

Definition at line 137 of file elf.h.

◆ ELF_SHDR_TYPE_SHLIB

#define ELF_SHDR_TYPE_SHLIB   10

Definition at line 143 of file elf.h.

◆ ELF_SHDR_TYPE_STRTAB

#define ELF_SHDR_TYPE_STRTAB   3

Definition at line 136 of file elf.h.

◆ ELF_SHDR_TYPE_SYMTAB

#define ELF_SHDR_TYPE_SYMTAB   2

Definition at line 135 of file elf.h.

◆ ELF_SHDR_TYPE_SYMTAB_SHNDX

#define ELF_SHDR_TYPE_SYMTAB_SHNDX   18

Definition at line 149 of file elf.h.

◆ ELF_SHN_ABS

#define ELF_SHN_ABS   0xfff1

Definition at line 180 of file elf.h.

◆ ELF_SHN_COMMON

#define ELF_SHN_COMMON   0xfff2

Definition at line 181 of file elf.h.

◆ ELF_SHN_HIOS

#define ELF_SHN_HIOS   0xff3f

Definition at line 179 of file elf.h.

◆ ELF_SHN_HIPROC

#define ELF_SHN_HIPROC   0xff1f

Definition at line 177 of file elf.h.

◆ ELF_SHN_HIRESERVE

#define ELF_SHN_HIRESERVE   0xffff

Definition at line 183 of file elf.h.

◆ ELF_SHN_LOOS

#define ELF_SHN_LOOS   0xff20

Definition at line 178 of file elf.h.

◆ ELF_SHN_LOPROC

#define ELF_SHN_LOPROC   0xff00

Definition at line 176 of file elf.h.

◆ ELF_SHN_LORESERVE

#define ELF_SHN_LORESERVE   0xff00

Definition at line 175 of file elf.h.

◆ ELF_SHN_UNDEF

#define ELF_SHN_UNDEF   0

Definition at line 174 of file elf.h.

◆ ELF_SHN_XINDEX

#define ELF_SHN_XINDEX   0xffff

Definition at line 182 of file elf.h.

◆ ELF_ST_BIND

#define ELF_ST_BIND (   info)    ((info) >> 4)

Definition at line 186 of file elf.h.

◆ ELF_ST_INFO

#define ELF_ST_INFO (   bind,
  type 
)    (((bind) << 4) + ((type) & 0xf))

Definition at line 188 of file elf.h.

◆ ELF_ST_TYPE

#define ELF_ST_TYPE (   info)    ((info) & 0xf)

Definition at line 187 of file elf.h.

◆ ELF_STB_GLOBAL

#define ELF_STB_GLOBAL   1

Definition at line 192 of file elf.h.

◆ ELF_STB_HIOS

#define ELF_STB_HIOS   12

Definition at line 195 of file elf.h.

◆ ELF_STB_HIPROC

#define ELF_STB_HIPROC   15

Definition at line 197 of file elf.h.

◆ ELF_STB_LOCAL

#define ELF_STB_LOCAL   0

Definition at line 191 of file elf.h.

◆ ELF_STB_LOOS

#define ELF_STB_LOOS   10

Definition at line 194 of file elf.h.

◆ ELF_STB_LOPROC

#define ELF_STB_LOPROC   13

Definition at line 196 of file elf.h.

◆ ELF_STB_WEAK

#define ELF_STB_WEAK   2

Definition at line 193 of file elf.h.

◆ ELF_STT_COMMON

#define ELF_STT_COMMON   5

Definition at line 205 of file elf.h.

◆ ELF_STT_FILE

#define ELF_STT_FILE   4

Definition at line 204 of file elf.h.

◆ ELF_STT_FUNC

#define ELF_STT_FUNC   2

Definition at line 202 of file elf.h.

◆ ELF_STT_HIOS

#define ELF_STT_HIOS   12

Definition at line 208 of file elf.h.

◆ ELF_STT_HIPROC

#define ELF_STT_HIPROC   15

Definition at line 210 of file elf.h.

◆ ELF_STT_LOOS

#define ELF_STT_LOOS   10

Definition at line 207 of file elf.h.

◆ ELF_STT_LOPROC

#define ELF_STT_LOPROC   13

Definition at line 209 of file elf.h.

◆ ELF_STT_NOTYPE

#define ELF_STT_NOTYPE   0

Definition at line 200 of file elf.h.

◆ ELF_STT_OBJECT

#define ELF_STT_OBJECT   1

Definition at line 201 of file elf.h.

◆ ELF_STT_SECTION

#define ELF_STT_SECTION   3

Definition at line 203 of file elf.h.

◆ ELF_STT_TLS

#define ELF_STT_TLS   6

Definition at line 206 of file elf.h.

◆ ELF_VERSION_CURRENT

#define ELF_VERSION_CURRENT   1

Definition at line 49 of file elf.h.

◆ ELF_VERSION_NONE

#define ELF_VERSION_NONE   0

Definition at line 48 of file elf.h.

Typedef Documentation

◆ elf_hdr_machine_t

Definition at line 78 of file elf.h.

◆ elf_hdr_type_t

Definition at line 68 of file elf.h.

◆ elf_hdr_version_t

Definition at line 101 of file elf.h.

◆ elf_phdr_flags_t

Definition at line 126 of file elf.h.

◆ elf_phdr_type_t

Definition at line 106 of file elf.h.

◆ elf_shdr_flags_t

Definition at line 158 of file elf.h.

◆ elf_shdr_type_t

Definition at line 132 of file elf.h.