LIEF: Library to Instrument Executable Formats Version 0.13.0
Classes | Typedefs | Enumerations | Functions | Variables
LIEF::ELF Namespace Reference

Namespace related to the LIEF's ELF module. More...

Classes

class  AndroidNote
 Class representing the ".note.android.ident" section. More...
 
class  Binary
 Class which represents an ELF binary. More...
 
class  Builder
 Class which takes an ELF::Binary object and reconstructs a valid binary. More...
 
class  CoreAuxv
 Class representing core Auxv object. More...
 
class  CoreFile
 Class representing core PrPsInfo object. More...
 
struct  CoreFileEntry
 Core file entry. More...
 
class  CorePrPsInfo
 Class representing core PrPsInfo object. More...
 
class  CorePrStatus
 Class representing core PrPsInfo object. More...
 
class  CoreSigInfo
 Class representing core siginfo object. More...
 
class  DynamicEntry
 Class which represents an entry in the dynamic table These entries are located in the .dynamic section or the PT_DYNAMIC segment. More...
 
class  DynamicEntryArray
 Class that represent an Array in the dynamic table. This entry is associated with constructors: More...
 
class  DynamicEntryFlags
 
class  DynamicEntryLibrary
 Class which represents a DT_NEEDED entry in the dynamic table. More...
 
class  DynamicEntryRpath
 Class which represents a DT_RPATH entry. This attribute is deprecated (cf. man ld) in favour of DT_RUNPATH (See DynamicRunPath) More...
 
class  DynamicEntryRunPath
 Class that represents a DT_RUNPATH wich is used by the loader to resolve libraries (DynamicEntryLibrary). More...
 
class  DynamicSharedObject
 Class which represents a DT_SONAME entry in the dynamic table This kind of entry is usually used no name the original library. More...
 
class  GnuHash
 Class which provides a view over the GNU Hash implementation. Most of the fields are read-only since the values are re-computed by the LIEF::ELF::Builder. More...
 
class  Hash
 Class which implements a visitor to compute a deterministic hash for LIEF ELF objects. More...
 
class  Header
 Class which represents the ELF's header. This is the ELF structure that starts an ELF file. More...
 
class  Note
 Class which represents an ELF note. More...
 
class  NoteAbi
 Class representing the .note.android.ident section. More...
 
class  NoteDetails
 
class  Parser
 Class which parses and transforms an ELF file into a ELF::Binary object. More...
 
class  Relocation
 Class that represents an ELF relocation. More...
 
class  Section
 Class wich represents an ELF Section. More...
 
class  Segment
 Class which represents the ELF segments. More...
 
class  Symbol
 Class which represents an ELF symbol. More...
 
class  SymbolVersion
 Class which represents an entry defined in the DT_VERSYM dynamic entry. More...
 
class  SymbolVersionAux
 Class which represents an Auxiliary Symbol version. More...
 
class  SymbolVersionAuxRequirement
 
class  SymbolVersionDefinition
 Class which represents an entry defined in DT_VERDEF or .gnu.version_d More...
 
class  SymbolVersionRequirement
 Class which represents an entry in the DT_VERNEED or .gnu.version_r table. More...
 
class  SysvHash
 Class which represents the SYSV hash for the symbols resolution. More...
 

Typedefs

using note_to_section_map_t = std::multimap< NOTE_TYPES, const char * >
 

Enumerations

enum class  IDENTITY : size_t {
  EI_MAG0 = 0 , EI_MAG1 = 1 , EI_MAG2 = 2 , EI_MAG3 = 3 ,
  EI_CLASS = 4 , EI_DATA = 5 , EI_VERSION = 6 , EI_OSABI = 7 ,
  EI_ABIVERSION = 8 , EI_PAD = 9 , EI_NIDENT = 16
}
 
enum class  E_TYPE : size_t {
  ET_NONE = 0 , ET_REL = 1 , ET_EXEC = 2 , ET_DYN = 3 ,
  ET_CORE = 4 , ET_LOPROC = 0xff00 , ET_HIPROC = 0xffff
}
 
enum class  VERSION : size_t { EV_NONE = 0 , EV_CURRENT = 1 }
 
enum class  ARCH : size_t {
  EM_NONE = 0 , EM_M32 = 1 , EM_SPARC = 2 , EM_386 = 3 ,
  EM_68K = 4 , EM_88K = 5 , EM_IAMCU = 6 , EM_860 = 7 ,
  EM_MIPS = 8 , EM_S370 = 9 , EM_MIPS_RS3_LE = 10 , EM_PARISC = 15 ,
  EM_VPP500 = 17 , EM_SPARC32PLUS = 18 , EM_960 = 19 , EM_PPC = 20 ,
  EM_PPC64 = 21 , EM_S390 = 22 , EM_SPU = 23 , EM_V800 = 36 ,
  EM_FR20 = 37 , EM_RH32 = 38 , EM_RCE = 39 , EM_ARM = 40 ,
  EM_ALPHA = 41 , EM_SH = 42 , EM_SPARCV9 = 43 , EM_TRICORE = 44 ,
  EM_ARC = 45 , EM_H8_300 = 46 , EM_H8_300H = 47 , EM_H8S = 48 ,
  EM_H8_500 = 49 , EM_IA_64 = 50 , EM_MIPS_X = 51 , EM_COLDFIRE = 52 ,
  EM_68HC12 = 53 , EM_MMA = 54 , EM_PCP = 55 , EM_NCPU = 56 ,
  EM_NDR1 = 57 , EM_STARCORE = 58 , EM_ME16 = 59 , EM_ST100 = 60 ,
  EM_TINYJ = 61 , EM_X86_64 = 62 , EM_PDSP = 63 , EM_PDP10 = 64 ,
  EM_PDP11 = 65 , EM_FX66 = 66 , EM_ST9PLUS = 67 , EM_ST7 = 68 ,
  EM_68HC16 = 69 , EM_68HC11 = 70 , EM_68HC08 = 71 , EM_68HC05 = 72 ,
  EM_SVX = 73 , EM_ST19 = 74 , EM_VAX = 75 , EM_CRIS = 76 ,
  EM_JAVELIN = 77 , EM_FIREPATH = 78 , EM_ZSP = 79 , EM_MMIX = 80 ,
  EM_HUANY = 81 , EM_PRISM = 82 , EM_AVR = 83 , EM_FR30 = 84 ,
  EM_D10V = 85 , EM_D30V = 86 , EM_V850 = 87 , EM_M32R = 88 ,
  EM_MN10300 = 89 , EM_MN10200 = 90 , EM_PJ = 91 , EM_OPENRISC = 92 ,
  EM_ARC_COMPACT = 93 , EM_XTENSA = 94 , EM_VIDEOCORE = 95 , EM_TMM_GPP = 96 ,
  EM_NS32K = 97 , EM_TPC = 98 , EM_SNP1K = 99 , EM_ST200 = 100 ,
  EM_IP2K = 101 , EM_MAX = 102 , EM_CR = 103 , EM_F2MC16 = 104 ,
  EM_MSP430 = 105 , EM_BLACKFIN = 106 , EM_SE_C33 = 107 , EM_SEP = 108 ,
  EM_ARCA = 109 , EM_UNICORE = 110 , EM_EXCESS = 111 , EM_DXP = 112 ,
  EM_ALTERA_NIOS2 = 113 , EM_CRX = 114 , EM_XGATE = 115 , EM_C166 = 116 ,
  EM_M16C = 117 , EM_DSPIC30F = 118 , EM_CE = 119 , EM_M32C = 120 ,
  EM_TSK3000 = 131 , EM_RS08 = 132 , EM_SHARC = 133 , EM_ECOG2 = 134 ,
  EM_SCORE7 = 135 , EM_DSP24 = 136 , EM_VIDEOCORE3 = 137 , EM_LATTICEMICO32 = 138 ,
  EM_SE_C17 = 139 , EM_TI_C6000 = 140 , EM_TI_C2000 = 141 , EM_TI_C5500 = 142 ,
  EM_MMDSP_PLUS = 160 , EM_CYPRESS_M8C = 161 , EM_R32C = 162 , EM_TRIMEDIA = 163 ,
  EM_HEXAGON = 164 , EM_8051 = 165 , EM_STXP7X = 166 , EM_NDS32 = 167 ,
  EM_ECOG1 = 168 , EM_ECOG1X = 168 , EM_MAXQ30 = 169 , EM_XIMO16 = 170 ,
  EM_MANIK = 171 , EM_CRAYNV2 = 172 , EM_RX = 173 , EM_METAG = 174 ,
  EM_MCST_ELBRUS = 175 , EM_ECOG16 = 176 , EM_CR16 = 177 , EM_ETPU = 178 ,
  EM_SLE9X = 179 , EM_L10M = 180 , EM_K10M = 181 , EM_AARCH64 = 183 ,
  EM_AVR32 = 185 , EM_STM8 = 186 , EM_TILE64 = 187 , EM_TILEPRO = 188 ,
  EM_CUDA = 190 , EM_TILEGX = 191 , EM_CLOUDSHIELD = 192 , EM_COREA_1ST = 193 ,
  EM_COREA_2ND = 194 , EM_ARC_COMPACT2 = 195 , EM_OPEN8 = 196 , EM_RL78 = 197 ,
  EM_VIDEOCORE5 = 198 , EM_78KOR = 199 , EM_56800EX = 200 , EM_BA1 = 201 ,
  EM_BA2 = 202 , EM_XCORE = 203 , EM_MCHP_PIC = 204 , EM_INTEL205 = 205 ,
  EM_INTEL206 = 206 , EM_INTEL207 = 207 , EM_INTEL208 = 208 , EM_INTEL209 = 209 ,
  EM_KM32 = 210 , EM_KMX32 = 211 , EM_KMX16 = 212 , EM_KMX8 = 213 ,
  EM_KVARC = 214 , EM_CDP = 215 , EM_COGE = 216 , EM_COOL = 217 ,
  EM_NORC = 218 , EM_CSR_KALIMBA = 219 , EM_AMDGPU = 224 , EM_RISCV = 243 ,
  EM_BPF = 247
}
 Machine architectures See current registered ELF machine architectures at: http://www.sco.com/developers/gabi/latest/ch4.eheader.html. More...
 
enum class  ELF_CLASS : size_t { ELFCLASSNONE = 0 , ELFCLASS32 = 1 , ELFCLASS64 = 2 }
 
enum class  ELF_DATA : size_t { ELFDATANONE = 0 , ELFDATA2LSB = 1 , ELFDATA2MSB = 2 }
 
enum class  OS_ABI : size_t {
  ELFOSABI_SYSTEMV = 0 , ELFOSABI_HPUX = 1 , ELFOSABI_NETBSD = 2 , ELFOSABI_GNU = 3 ,
  ELFOSABI_LINUX = 3 , ELFOSABI_HURD = 4 , ELFOSABI_SOLARIS = 6 , ELFOSABI_AIX = 7 ,
  ELFOSABI_IRIX = 8 , ELFOSABI_FREEBSD = 9 , ELFOSABI_TRU64 = 10 , ELFOSABI_MODESTO = 11 ,
  ELFOSABI_OPENBSD = 12 , ELFOSABI_OPENVMS = 13 , ELFOSABI_NSK = 14 , ELFOSABI_AROS = 15 ,
  ELFOSABI_FENIXOS = 16 , ELFOSABI_CLOUDABI = 17 , ELFOSABI_C6000_ELFABI = 64 , ELFOSABI_AMDGPU_HSA = 64 ,
  ELFOSABI_C6000_LINUX = 65 , ELFOSABI_ARM = 97 , ELFOSABI_STANDALONE = 255
}
 
enum class  RELOC_x86_64 : size_t
 
enum  RELOC_i386
 
enum class  RELOC_POWERPC32 : size_t
 
enum class  RELOC_POWERPC64 : size_t
 
enum class  RELOC_AARCH64 : size_t
 
enum class  RELOC_ARM : size_t
 
enum class  RELOC_MIPS : size_t
 
enum class  RELOC_HEXAGON : size_t
 
enum class  RELOC_SYSTEMZ : size_t
 
enum class  RELOC_SPARC : size_t
 
enum class  PPC64_EFLAGS : size_t { EF_PPC64_ABI = 3 }
 
enum class  ARM_EFLAGS : size_t {
  EF_ARM_SOFT_FLOAT = 0x00000200U , EF_ARM_VFP_FLOAT = 0x00000400U , EF_ARM_EABI_UNKNOWN = 0x00000000U , EF_ARM_EABI_VER1 = 0x01000000U ,
  EF_ARM_EABI_VER2 = 0x02000000U , EF_ARM_EABI_VER3 = 0x03000000U , EF_ARM_EABI_VER4 = 0x04000000U , EF_ARM_EABI_VER5 = 0x05000000U ,
  EF_ARM_EABIMASK = 0xFF000000U
}
 
enum class  MIPS_EFLAGS : size_t {
  EF_MIPS_NOREORDER = 0x00000001 , EF_MIPS_PIC = 0x00000002 , EF_MIPS_CPIC = 0x00000004 , EF_MIPS_ABI2 = 0x00000020 ,
  EF_MIPS_32BITMODE = 0x00000100 , EF_MIPS_FP64 = 0x00000200 , EF_MIPS_NAN2008 = 0x00000400 , EF_MIPS_ABI_O32 = 0x00001000 ,
  EF_MIPS_ABI_O64 = 0x00002000 , EF_MIPS_ABI_EABI32 = 0x00003000 , EF_MIPS_ABI_EABI64 = 0x00004000 , EF_MIPS_ABI = 0x0000f000 ,
  EF_MIPS_MACH_3900 = 0x00810000 , EF_MIPS_MACH_4010 = 0x00820000 , EF_MIPS_MACH_4100 = 0x00830000 , EF_MIPS_MACH_4650 = 0x00850000 ,
  EF_MIPS_MACH_4120 = 0x00870000 , EF_MIPS_MACH_4111 = 0x00880000 , EF_MIPS_MACH_SB1 = 0x008a0000 , EF_MIPS_MACH_OCTEON = 0x008b0000 ,
  EF_MIPS_MACH_XLR = 0x008c0000 , EF_MIPS_MACH_OCTEON2 = 0x008d0000 , EF_MIPS_MACH_OCTEON3 = 0x008e0000 , EF_MIPS_MACH_5400 = 0x00910000 ,
  EF_MIPS_MACH_5900 = 0x00920000 , EF_MIPS_MACH_5500 = 0x00980000 , EF_MIPS_MACH_9000 = 0x00990000 , EF_MIPS_MACH_LS2E = 0x00a00000 ,
  EF_MIPS_MACH_LS2F = 0x00a10000 , EF_MIPS_MACH_LS3A = 0x00a20000 , EF_MIPS_MACH = 0x00ff0000 , EF_MIPS_MICROMIPS = 0x02000000 ,
  EF_MIPS_ARCH_ASE_M16 = 0x04000000 , EF_MIPS_ARCH_ASE_MDMX = 0x08000000 , EF_MIPS_ARCH_ASE = 0x0f000000 , EF_MIPS_ARCH_1 = 0x00000000 ,
  EF_MIPS_ARCH_2 = 0x10000000 , EF_MIPS_ARCH_3 = 0x20000000 , EF_MIPS_ARCH_4 = 0x30000000 , EF_MIPS_ARCH_5 = 0x40000000 ,
  EF_MIPS_ARCH_32 = 0x50000000 , EF_MIPS_ARCH_64 = 0x60000000 , EF_MIPS_ARCH_32R2 = 0x70000000 , EF_MIPS_ARCH_64R2 = 0x80000000 ,
  EF_MIPS_ARCH_32R6 = 0x90000000 , EF_MIPS_ARCH_64R6 = 0xa0000000 , EF_MIPS_ARCH = 0xf0000000
}
 
enum class  HEXAGON_EFLAGS : size_t {
  EF_HEXAGON_MACH_V2 = 0x00000001 , EF_HEXAGON_MACH_V3 = 0x00000002 , EF_HEXAGON_MACH_V4 = 0x00000003 , EF_HEXAGON_MACH_V5 = 0x00000004 ,
  EF_HEXAGON_ISA_MACH = 0x00000000 , EF_HEXAGON_ISA_V2 = 0x00000010 , EF_HEXAGON_ISA_V3 = 0x00000020 , EF_HEXAGON_ISA_V4 = 0x00000030 ,
  EF_HEXAGON_ISA_V5 = 0x00000040
}
 
enum class  SYMBOL_SECTION_INDEX : size_t {
  SHN_UNDEF = 0 , SHN_LORESERVE = 0xff00 , SHN_LOPROC = 0xff00 , SHN_HIPROC = 0xff1f ,
  SHN_LOOS = 0xff20 , SHN_HIOS = 0xff3f , SHN_ABS = 0xfff1 , SHN_COMMON = 0xfff2 ,
  SHN_XINDEX = 0xffff , SHN_HIRESERVE = 0xffff
}
 
enum class  ELF_SECTION_TYPES : size_t {
  SHT_NULL = 0 , SHT_PROGBITS = 1 , SHT_SYMTAB = 2 , SHT_STRTAB = 3 ,
  SHT_RELA = 4 , SHT_HASH = 5 , SHT_DYNAMIC = 6 , SHT_NOTE = 7 ,
  SHT_NOBITS = 8 , SHT_REL = 9 , SHT_SHLIB = 10 , SHT_DYNSYM = 11 ,
  SHT_INIT_ARRAY = 14 , SHT_FINI_ARRAY = 15 , SHT_PREINIT_ARRAY = 16 , SHT_GROUP = 17 ,
  SHT_SYMTAB_SHNDX = 18 , SHT_LOOS = 0x60000000 , SHT_ANDROID_REL = 0x60000001 , SHT_ANDROID_RELA = 0x60000002 ,
  SHT_LLVM_ADDRSIG = 0x6fff4c03 , SHT_RELR = 0x6fffff00 , SHT_GNU_ATTRIBUTES = 0x6ffffff5 , SHT_GNU_HASH = 0x6ffffff6 ,
  SHT_GNU_verdef = 0x6ffffffd , SHT_GNU_verneed = 0x6ffffffe , SHT_GNU_versym = 0x6fffffff , SHT_HIOS = 0x6fffffff ,
  SHT_LOPROC = 0x70000000 , SHT_ARM_EXIDX = 0x70000001U , SHT_ARM_PREEMPTMAP = 0x70000002U , SHT_ARM_ATTRIBUTES = 0x70000003U ,
  SHT_ARM_DEBUGOVERLAY = 0x70000004U , SHT_ARM_OVERLAYSECTION = 0x70000005U , SHT_HEX_ORDERED = 0x70000000 , SHT_X86_64_UNWIND = 0x70000001 ,
  SHT_MIPS_REGINFO = 0x70000006 , SHT_MIPS_OPTIONS = 0x7000000d , SHT_MIPS_ABIFLAGS = 0x7000002a , SHT_HIPROC = 0x7fffffff ,
  SHT_LOUSER = 0x80000000 , SHT_HIUSER = 0xffffffff
}
 
enum class  ELF_SECTION_FLAGS : size_t {
  SHF_NONE = 0x0 , SHF_WRITE = 0x1 , SHF_ALLOC = 0x2 , SHF_EXECINSTR = 0x4 ,
  SHF_MERGE = 0x10 , SHF_STRINGS = 0x20 , SHF_INFO_LINK = 0x40U , SHF_LINK_ORDER = 0x80U ,
  SHF_OS_NONCONFORMING = 0x100U , SHF_GROUP = 0x200U , SHF_TLS = 0x400U , SHF_EXCLUDE = 0x80000000U ,
  XCORE_SHF_CP_SECTION = 0x800U , XCORE_SHF_DP_SECTION = 0x1000U , SHF_MASKOS = 0x0ff00000 , SHF_MASKPROC = 0xf0000000 ,
  SHF_X86_64_LARGE = 0x10000000 , SHF_HEX_GPREL = 0x10000000 , SHF_MIPS_NODUPES = 0x01000000 , SHF_MIPS_NAMES = 0x02000000 ,
  SHF_MIPS_LOCAL = 0x04000000 , SHF_MIPS_NOSTRIP = 0x08000000 , SHF_MIPS_GPREL = 0x10000000 , SHF_MIPS_MERGE = 0x20000000 ,
  SHF_MIPS_ADDR = 0x40000000 , SHF_MIPS_STRING = 0x80000000
}
 
enum class  SYMBOL_BINDINGS : size_t {
  STB_LOCAL = 0 , STB_GLOBAL = 1 , STB_WEAK = 2 , STB_GNU_UNIQUE = 10 ,
  STB_LOOS = 10 , STB_HIOS = 12 , STB_LOPROC = 13 , STB_HIPROC = 15
}
 
enum class  ELF_SYMBOL_TYPES : size_t {
  STT_NOTYPE = 0 , STT_OBJECT = 1 , STT_FUNC = 2 , STT_SECTION = 3 ,
  STT_FILE = 4 , STT_COMMON = 5 , STT_TLS = 6 , STT_GNU_IFUNC = 10 ,
  STT_LOOS = 10 , STT_HIOS = 12 , STT_LOPROC = 13 , STT_HIPROC = 15
}
 
enum class  ELF_SYMBOL_VISIBILITY : size_t { STV_DEFAULT = 0 , STV_INTERNAL = 1 , STV_HIDDEN = 2 , STV_PROTECTED = 3 }
 
enum class  SEGMENT_TYPES : size_t {
  PT_NULL = 0 , PT_LOAD = 1 , PT_DYNAMIC = 2 , PT_INTERP = 3 ,
  PT_NOTE = 4 , PT_SHLIB = 5 , PT_PHDR = 6 , PT_TLS = 7 ,
  PT_LOOS = 0x60000000 , PT_HIOS = 0x6fffffff , PT_LOPROC = 0x70000000 , PT_HIPROC = 0x7fffffff ,
  PT_GNU_EH_FRAME = 0x6474e550 , PT_SUNW_EH_FRAME = 0x6474e550 , PT_SUNW_UNWIND = 0x6464e550 , PT_GNU_STACK = 0x6474e551 ,
  PT_GNU_PROPERTY = 0x6474e553 , PT_GNU_RELRO = 0x6474e552 , PT_ARM_ARCHEXT = 0x70000000 , PT_ARM_EXIDX = 0x70000001 ,
  PT_ARM_UNWIND = 0x70000001 , PT_MIPS_REGINFO = 0x70000000 , PT_MIPS_RTPROC = 0x70000001 , PT_MIPS_OPTIONS = 0x70000002 ,
  PT_MIPS_ABIFLAGS = 0x70000003
}
 Segment types. More...
 
enum class  ELF_SEGMENT_FLAGS : size_t {
  PF_NONE = 0 , PF_X = 1 , PF_W = 2 , PF_R = 4 ,
  PF_MASKOS = 0x0ff00000 , PF_MASKPROC = 0xf0000000
}
 
enum class  DYNAMIC_TAGS : size_t {
  DT_NULL = 0 , DT_NEEDED = 1 , DT_PLTRELSZ = 2 , DT_PLTGOT = 3 ,
  DT_HASH = 4 , DT_STRTAB = 5 , DT_SYMTAB = 6 , DT_RELA = 7 ,
  DT_RELASZ = 8 , DT_RELAENT = 9 , DT_STRSZ = 10 , DT_SYMENT = 11 ,
  DT_INIT = 12 , DT_FINI = 13 , DT_SONAME = 14 , DT_RPATH = 15 ,
  DT_SYMBOLIC = 16 , DT_REL = 17 , DT_RELSZ = 18 , DT_RELENT = 19 ,
  DT_PLTREL = 20 , DT_DEBUG = 21 , DT_TEXTREL = 22 , DT_JMPREL = 23 ,
  DT_BIND_NOW = 24 , DT_INIT_ARRAY = 25 , DT_FINI_ARRAY = 26 , DT_INIT_ARRAYSZ = 27 ,
  DT_FINI_ARRAYSZ = 28 , DT_RUNPATH = 29 , DT_FLAGS = 30 , DT_ENCODING = 32 ,
  DT_PREINIT_ARRAY = 32 , DT_PREINIT_ARRAYSZ = 33 , DT_LOOS = 0x60000000 , DT_HIOS = 0x6FFFFFFF ,
  DT_LOPROC = 0x70000000 , DT_HIPROC = 0x7FFFFFFF , DT_GNU_HASH = 0x6FFFFEF5 , DT_RELACOUNT = 0x6FFFFFF9 ,
  DT_RELCOUNT = 0x6FFFFFFA , DT_FLAGS_1 = 0x6FFFFFFB , DT_VERSYM = 0x6FFFFFF0 , DT_VERDEF = 0x6FFFFFFC ,
  DT_VERDEFNUM = 0x6FFFFFFD , DT_VERNEED = 0x6FFFFFFE , DT_VERNEEDNUM = 0x6FFFFFFF , DT_MIPS_RLD_VERSION = 0x70000001 ,
  DT_MIPS_TIME_STAMP = 0x70000002 , DT_MIPS_ICHECKSUM = 0x70000003 , DT_MIPS_IVERSION = 0x70000004 , DT_MIPS_FLAGS = 0x70000005 ,
  DT_MIPS_BASE_ADDRESS = 0x70000006 , DT_MIPS_MSYM = 0x70000007 , DT_MIPS_CONFLICT = 0x70000008 , DT_MIPS_LIBLIST = 0x70000009 ,
  DT_MIPS_LOCAL_GOTNO = 0x7000000a , DT_MIPS_CONFLICTNO = 0x7000000b , DT_MIPS_LIBLISTNO = 0x70000010 , DT_MIPS_SYMTABNO = 0x70000011 ,
  DT_MIPS_UNREFEXTNO = 0x70000012 , DT_MIPS_GOTSYM = 0x70000013 , DT_MIPS_HIPAGENO = 0x70000014 , DT_MIPS_RLD_MAP = 0x70000016 ,
  DT_MIPS_DELTA_CLASS = 0x70000017 , DT_MIPS_DELTA_CLASS_NO = 0x70000018 , DT_MIPS_DELTA_INSTANCE = 0x70000019 , DT_MIPS_DELTA_INSTANCE_NO = 0x7000001A ,
  DT_MIPS_DELTA_RELOC = 0x7000001B , DT_MIPS_DELTA_RELOC_NO = 0x7000001C , DT_MIPS_DELTA_SYM = 0x7000001D , DT_MIPS_DELTA_SYM_NO = 0x7000001E ,
  DT_MIPS_DELTA_CLASSSYM = 0x70000020 , DT_MIPS_DELTA_CLASSSYM_NO = 0x70000021 , DT_MIPS_CXX_FLAGS = 0x70000022 , DT_MIPS_PIXIE_INIT = 0x70000023 ,
  DT_MIPS_SYMBOL_LIB = 0x70000024 , DT_MIPS_LOCALPAGE_GOTIDX = 0x70000025 , DT_MIPS_LOCAL_GOTIDX = 0x70000026 , DT_MIPS_HIDDEN_GOTIDX = 0x70000027 ,
  DT_MIPS_PROTECTED_GOTIDX = 0x70000028 , DT_MIPS_OPTIONS = 0x70000029 , DT_MIPS_INTERFACE = 0x7000002A , DT_MIPS_DYNSTR_ALIGN = 0x7000002B ,
  DT_MIPS_INTERFACE_SIZE = 0x7000002C , DT_MIPS_RLD_TEXT_RESOLVE_ADDR = 0x7000002D , DT_MIPS_PERF_SUFFIX = 0x7000002E , DT_MIPS_COMPACT_SIZE = 0x7000002F ,
  DT_MIPS_GP_VALUE = 0x70000030 , DT_MIPS_AUX_DYNAMIC = 0x70000031 , DT_MIPS_PLTGOT = 0x70000032 , DT_MIPS_RWPLT = 0x70000034 ,
  DT_ANDROID_REL_OFFSET = 0x6000000D , DT_ANDROID_REL_SIZE = 0x6000000E , DT_ANDROID_REL = 0x6000000F , DT_ANDROID_RELSZ = 0x60000010 ,
  DT_ANDROID_RELA = 0x60000011 , DT_ANDROID_RELASZ = 0x60000012 , DT_RELR = 0x6FFFE000 , DT_RELRSZ = 0x6FFFE001 ,
  DT_RELRENT = 0x6FFFE003 , DT_RELRCOUNT = 0x6FFFE005
}
 
enum class  DYNAMIC_FLAGS : size_t {
  DF_ORIGIN = 0x00000001 , DF_SYMBOLIC = 0x00000002 , DF_TEXTREL = 0x00000004 , DF_BIND_NOW = 0x00000008 ,
  DF_STATIC_TLS = 0x00000010
}
 
enum class  DYNAMIC_FLAGS_1 : size_t {
  DF_1_NOW = 0x00000001 , DF_1_GLOBAL = 0x00000002 , DF_1_GROUP = 0x00000004 , DF_1_NODELETE = 0x00000008 ,
  DF_1_LOADFLTR = 0x00000010 , DF_1_INITFIRST = 0x00000020 , DF_1_NOOPEN = 0x00000040 , DF_1_ORIGIN = 0x00000080 ,
  DF_1_DIRECT = 0x00000100 , DF_1_TRANS = 0x00000200 , DF_1_INTERPOSE = 0x00000400 , DF_1_NODEFLIB = 0x00000800 ,
  DF_1_NODUMP = 0x00001000 , DF_1_CONFALT = 0x00002000 , DF_1_ENDFILTEE = 0x00004000 , DF_1_DISPRELDNE = 0x00008000 ,
  DF_1_DISPRELPND = 0x00010000 , DF_1_NODIRECT = 0x00020000 , DF_1_IGNMULDEF = 0x00040000 , DF_1_NOKSYMS = 0x00080000 ,
  DF_1_NOHDR = 0x00100000 , DF_1_EDITED = 0x00200000 , DF_1_NORELOC = 0x00400000 , DF_1_SYMINTPOSE = 0x00800000 ,
  DF_1_GLOBAUDIT = 0x01000000 , DF_1_SINGLETON = 0x02000000 , DF_1_PIE = 0x08000000
}
 
enum  {
  RHF_NONE = 0x00000000 , RHF_QUICKSTART = 0x00000001 , RHF_NOTPOT = 0x00000002 , RHS_NO_LIBRARY_REPLACEMENT = 0x00000004 ,
  RHF_NO_MOVE = 0x00000008 , RHF_SGI_ONLY = 0x00000010 , RHF_GUARANTEE_INIT = 0x00000020 , RHF_DELTA_C_PLUS_PLUS = 0x00000040 ,
  RHF_GUARANTEE_START_INIT = 0x00000080 , RHF_PIXIE = 0x00000100 , RHF_DEFAULT_DELAY_LOAD = 0x00000200 , RHF_REQUICKSTART = 0x00000400 ,
  RHF_REQUICKSTARTED = 0x00000800 , RHF_CORD = 0x00001000 , RHF_NO_UNRES_UNDEF = 0x00002000 , RHF_RLD_ORDER_SAFE = 0x00004000
}
 
enum  { VER_DEF_NONE = 0 , VER_DEF_CURRENT = 1 }
 
enum  { VER_FLG_BASE = 0x1 , VER_FLG_WEAK = 0x2 , VER_FLG_INFO = 0x4 }
 
enum  { VER_NDX_LOCAL = 0 , VER_NDX_GLOBAL = 1 , VERSYM_VERSION = 0x7fff , VERSYM_HIDDEN = 0x8000 }
 
enum  { VER_NEED_NONE = 0 , VER_NEED_CURRENT = 1 }
 
enum class  AUX_TYPE : size_t {
  AT_NULL = 0 , AT_IGNORE = 1 , AT_EXECFD = 2 , AT_PHDR = 3 ,
  AT_PHENT = 4 , AT_PHNUM = 5 , AT_PAGESZ = 6 , AT_BASE = 7 ,
  AT_FLAGS = 8 , AT_ENTRY = 9 , AT_NOTELF = 10 , AT_UID = 11 ,
  AT_EUID = 12 , AT_GID = 13 , AT_EGID = 14 , AT_CLKTCK = 17 ,
  AT_PLATFORM = 15 , AT_HWCAP = 16 , AT_FPUCW = 18 , AT_DCACHEBSIZE = 19 ,
  AT_ICACHEBSIZE = 20 , AT_UCACHEBSIZE = 21 , AT_IGNOREPPC = 22 , AT_SECURE = 23 ,
  AT_BASE_PLATFORM = 24 , AT_RANDOM = 25 , AT_HWCAP2 = 26 , AT_EXECFN = 31 ,
  AT_SYSINFO = 32 , AT_SYSINFO_EHDR = 33 , AT_L1I_CACHESHAPE = 34 , AT_L1D_CACHESHAPE = 35 ,
  AT_L2_CACHESHAPE = 36 , AT_L3_CACHESHAPE = 37
}
 
enum class  DYNSYM_COUNT_METHODS : size_t { COUNT_AUTO = 0 , COUNT_SECTION = 1 , COUNT_HASH = 2 , COUNT_RELOCATIONS = 3 }
 
enum class  NOTE_TYPES : size_t {
  NT_UNKNOWN = 0 , NT_GNU_ABI_TAG = 1 , NT_GNU_HWCAP = 2 , NT_GNU_BUILD_ID = 3 ,
  NT_GNU_GOLD_VERSION = 4 , NT_GNU_PROPERTY_TYPE_0 = 5 , NT_CRASHPAD = 0x4f464e49
}
 
enum class  NOTE_TYPES_CORE : size_t {
  NT_CORE_UNKNOWN = 0 , NT_PRSTATUS = 1 , NT_PRFPREG = 2 , NT_PRPSINFO = 3 ,
  NT_TASKSTRUCT = 4 , NT_AUXV = 6 , NT_SIGINFO = 0x53494749 , NT_FILE = 0x46494c45 ,
  NT_PRXFPREG = 0x46e62b7f , NT_ARM_VFP = 0x400 , NT_ARM_TLS = 0x401 , NT_ARM_HW_BREAK = 0x402 ,
  NT_ARM_HW_WATCH = 0x403 , NT_ARM_SYSTEM_CALL = 0x404 , NT_ARM_SVE = 0x405 , NT_386_TLS = 0x200 ,
  NT_386_IOPERM = 0x201 , NT_386_XSTATE = 0x202
}
 
enum class  NOTE_ABIS : size_t {
  ELF_NOTE_UNKNOWN = ~(unsigned int)(0) , ELF_NOTE_OS_LINUX = 0 , ELF_NOTE_OS_GNU = 1 , ELF_NOTE_OS_SOLARIS2 = 2 ,
  ELF_NOTE_OS_FREEBSD = 3 , ELF_NOTE_OS_NETBSD = 4 , ELF_NOTE_OS_SYLLABLE = 5
}
 
enum class  RELOCATION_PURPOSES : size_t { RELOC_PURPOSE_NONE = 0 , RELOC_PURPOSE_PLTGOT = 1 , RELOC_PURPOSE_DYNAMIC = 2 , RELOC_PURPOSE_OBJECT = 3 }
 

Functions

const char * to_string (SYMBOL_BINDINGS e)
 
const char * to_string (E_TYPE e)
 
const char * to_string (VERSION e)
 
const char * to_string (ARCH e)
 
const char * to_string (SEGMENT_TYPES e)
 
const char * to_string (DYNAMIC_TAGS e)
 
const char * to_string (ELF_SECTION_TYPES e)
 
const char * to_string (ELF_SECTION_FLAGS e)
 
const char * to_string (ELF_SYMBOL_TYPES e)
 
const char * to_string (RELOC_x86_64 e)
 
const char * to_string (RELOC_ARM e)
 
const char * to_string (RELOC_i386 e)
 
const char * to_string (RELOC_AARCH64 e)
 
const char * to_string (RELOC_POWERPC32 e)
 
const char * to_string (RELOC_POWERPC64 e)
 
const char * to_string (RELOC_MIPS e)
 
const char * to_string (ELF_CLASS e)
 
const char * to_string (ELF_DATA e)
 
const char * to_string (OS_ABI e)
 
const char * to_string (DYNSYM_COUNT_METHODS e)
 
const char * to_string (NOTE_TYPES e)
 
const char * to_string (NOTE_TYPES_CORE e)
 
const char * to_string (NOTE_ABIS e)
 
const char * to_string (RELOCATION_PURPOSES e)
 
const char * to_string (IDENTITY e)
 
const char * to_string (SYMBOL_SECTION_INDEX e)
 
const char * to_string (DYNAMIC_FLAGS e)
 
const char * to_string (DYNAMIC_FLAGS_1 e)
 
const char * to_string (ELF_SEGMENT_FLAGS e)
 
const char * to_string (ELF_SYMBOL_VISIBILITY e)
 
const char * to_string (AUX_TYPE e)
 
const char * to_string (PPC64_EFLAGS e)
 
const char * to_string (ARM_EFLAGS e)
 
const char * to_string (MIPS_EFLAGS e)
 
const char * to_string (HEXAGON_EFLAGS e)
 
std::string to_json (const Object &v)
 
const char * to_string (CorePrStatus::REGISTERS e)
 
bool is_elf (const std::string &file)
 Check if the given file is an ELF one.
 
bool is_elf (const std::vector< uint8_t > &raw)
 check if the raw data is a ELF file
 
unsigned long hash32 (const char *name)
 
unsigned long hash64 (const char *name)
 
uint32_t dl_new_hash (const char *name)
 

Variables

static const note_to_section_map_t note_to_section_map
 
static const std::map< RELOC_x86_64, uint32_t > relocation_x86_64_sizes
 
static const std::map< RELOC_i386, uint32_t > relocation_i386_sizes
 
static const std::map< RELOC_ARM, uint32_t > relocation_ARM_sizes
 
static const std::map< RELOC_AARCH64, uint32_t > relocation_AARCH64_sizes
 
static const std::map< RELOC_POWERPC32, uint32_t > relocation_PPC_sizes
 
static const std::map< RELOC_POWERPC64, uint32_t > relocation_PPC64_sizes
 
static const std::map< RELOC_MIPS, uint32_t > relocation_MIPS_sizes
 

Detailed Description

Namespace related to the LIEF's ELF module.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

ElfXX_VerDef structure version (GNU versioning)

◆ anonymous enum

anonymous enum

VerDef Flags (ElfXX_VerDef::vd_flags)

◆ anonymous enum

anonymous enum

Special constants for the version table. (SHT_GNU_versym/.gnu.version)

Enumerator
VER_NDX_LOCAL 

Unversioned local symbol

VER_NDX_GLOBAL 

Unversioned global symbol

VERSYM_VERSION 

Version Index mask

VERSYM_HIDDEN 

Hidden bit (non-default version)

◆ anonymous enum

anonymous enum

ElfXX_VerNeed structure version (GNU versioning)

◆ ARCH

enum class LIEF::ELF::ARCH : size_t
strong

Machine architectures See current registered ELF machine architectures at: http://www.sco.com/developers/gabi/latest/ch4.eheader.html.

Enumerator
EM_NONE 

No machine

EM_M32 

AT&T WE 32100

EM_SPARC 

SPARC

EM_386 

Intel 386

EM_68K 

Motorola 68000

EM_88K 

Motorola 88000

EM_IAMCU 

Intel MCU

EM_860 

Intel 80860

EM_MIPS 

MIPS R3000

EM_S370 

IBM System/370

EM_MIPS_RS3_LE 

MIPS RS3000 Little-endian

EM_PARISC 

Hewlett-Packard PA-RISC

EM_VPP500 

Fujitsu VPP500

EM_SPARC32PLUS 

Enhanced instruction set SPARC

EM_960 

Intel 80960

EM_PPC 

PowerPC

EM_PPC64 

PowerPC64

EM_S390 

IBM System/390

EM_SPU 

IBM SPU/SPC

EM_V800 

NEC V800

EM_FR20 

Fujitsu FR20

EM_RH32 

TRW RH-32

EM_RCE 

Motorola RCE

EM_ARM 

ARM

EM_ALPHA 

DEC Alpha

EM_SH 

Hitachi SH

EM_SPARCV9 

SPARC V9

EM_TRICORE 

Siemens TriCore

EM_ARC 

Argonaut RISC Core

EM_H8_300 

Hitachi H8/300

EM_H8_300H 

Hitachi H8/300H

EM_H8S 

Hitachi H8S

EM_H8_500 

Hitachi H8/500

EM_IA_64 

Intel IA-64 processor architecture

EM_MIPS_X 

Stanford MIPS-X

EM_COLDFIRE 

Motorola ColdFire

EM_68HC12 

Motorola M68HC12

EM_MMA 

Fujitsu MMA Multimedia Accelerator

EM_PCP 

Siemens PCP

EM_NCPU 

Sony nCPU embedded RISC processor

EM_NDR1 

Denso NDR1 microprocessor

EM_STARCORE 

Motorola Star*Core processor

EM_ME16 

Toyota ME16 processor

EM_ST100 

STMicroelectronics ST100 processor

EM_TINYJ 

Advanced Logic Corp. TinyJ embedded processor family

EM_X86_64 

AMD x86-64 architecture

EM_PDSP 

Sony DSP Processor

EM_PDP10 

Digital Equipment Corp. PDP-10

EM_PDP11 

Digital Equipment Corp. PDP-11

EM_FX66 

Siemens FX66 microcontroller

EM_ST9PLUS 

STMicroelectronics ST9+ 8/16 bit microcontroller

EM_ST7 

STMicroelectronics ST7 8-bit microcontroller

EM_68HC16 

Motorola MC68HC16 Microcontroller

EM_68HC11 

Motorola MC68HC11 Microcontroller

EM_68HC08 

Motorola MC68HC08 Microcontroller

EM_68HC05 

Motorola MC68HC05 Microcontroller

EM_SVX 

Silicon Graphics SVx

EM_ST19 

STMicroelectronics ST19 8-bit microcontroller

EM_VAX 

Digital VAX

EM_CRIS 

Axis Communications 32-bit embedded processor

EM_JAVELIN 

Infineon Technologies 32-bit embedded processor

EM_FIREPATH 

Element 14 64-bit DSP Processor

EM_ZSP 

LSI Logic 16-bit DSP Processor

EM_MMIX 

Donald Knuth's educational 64-bit processor

EM_HUANY 

Harvard University machine-independent object files

EM_PRISM 

SiTera Prism

EM_AVR 

Atmel AVR 8-bit microcontroller

EM_FR30 

Fujitsu FR30

EM_D10V 

Mitsubishi D10V

EM_D30V 

Mitsubishi D30V

EM_V850 

NEC v850

EM_M32R 

Mitsubishi M32R

EM_MN10300 

Matsushita MN10300

EM_MN10200 

Matsushita MN10200

EM_PJ 

picoJava

EM_OPENRISC 

OpenRISC 32-bit embedded processor

EM_ARC_COMPACT 

ARC International ARCompact processor (old spelling/synonym: EM_ARC_A5)

EM_XTENSA 

Tensilica Xtensa Architecture

EM_VIDEOCORE 

Alphamosaic VideoCore processor

EM_TMM_GPP 

Thompson Multimedia General Purpose Processor

EM_NS32K 

National Semiconductor 32000 series

EM_TPC 

Tenor Network TPC processor

EM_SNP1K 

Trebia SNP 1000 processor

EM_ST200 

STMicroelectronics (www.st.com) ST200

EM_IP2K 

Ubicom IP2xxx microcontroller family

EM_MAX 

MAX Processor

EM_CR 

National Semiconductor CompactRISC microprocessor

EM_F2MC16 

Fujitsu F2MC16

EM_MSP430 

Texas Instruments embedded microcontroller msp430

EM_BLACKFIN 

Analog Devices Blackfin (DSP) processor

EM_SE_C33 

S1C33 Family of Seiko Epson processors

EM_SEP 

Sharp embedded microprocessor

EM_ARCA 

Arca RISC Microprocessor

EM_UNICORE 

Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University

EM_EXCESS 

eXcess: 16/32/64-bit configurable embedded CPU

EM_DXP 

Icera Semiconductor Inc. Deep Execution Processor

EM_ALTERA_NIOS2 

Altera Nios II soft-core processor

EM_CRX 

National Semiconductor CompactRISC CRX

EM_XGATE 

Motorola XGATE embedded processor

EM_C166 

Infineon C16x/XC16x processor

EM_M16C 

Renesas M16C series microprocessors

EM_DSPIC30F 

Microchip Technology dsPIC30F Digital Signal

EM_CE 

Freescale Communication Engine RISC core

EM_M32C 

Renesas M32C series microprocessors

EM_TSK3000 

Altium TSK3000 core

EM_RS08 

Freescale RS08 embedded processor

EM_SHARC 

Analog Devices SHARC family of 32-bit DSP

EM_ECOG2 

Cyan Technology eCOG2 microprocessor

EM_SCORE7 

Sunplus S+core7 RISC processor

EM_DSP24 

New Japan Radio (NJR) 24-bit DSP Processor

EM_VIDEOCORE3 

Broadcom VideoCore III processor

EM_LATTICEMICO32 

RISC processor for Lattice FPGA architecture

EM_SE_C17 

Seiko Epson C17 family

EM_TI_C6000 

The Texas Instruments TMS320C6000 DSP family

EM_TI_C2000 

The Texas Instruments TMS320C2000 DSP family

EM_TI_C5500 

The Texas Instruments TMS320C55x DSP family

EM_MMDSP_PLUS 

STMicroelectronics 64bit VLIW Data Signal Processor

EM_CYPRESS_M8C 

Cypress M8C microprocessor

EM_R32C 

Renesas R32C series microprocessors

EM_TRIMEDIA 

NXP Semiconductors TriMedia architecture family

EM_HEXAGON 

Qualcomm Hexagon processor

EM_8051 

Intel 8051 and variants

EM_STXP7X 

STMicroelectronics STxP7x family of configurable

EM_ECOG1 

Cyan Technology eCOG1X family

EM_ECOG1X 

Cyan Technology eCOG1X family

EM_MAXQ30 

Dallas Semiconductor MAXQ30 Core Micro-controllers

EM_XIMO16 

New Japan Radio (NJR) 16-bit DSP Processor

EM_MANIK 

M2000 Reconfigurable RISC Microprocessor

EM_CRAYNV2 

Cray Inc. NV2 vector architecture

EM_RX 

Renesas RX family

EM_METAG 

Imagination Technologies META processor

EM_MCST_ELBRUS 

MCST Elbrus general purpose hardware architecture

EM_ECOG16 

Cyan Technology eCOG16 family

EM_CR16 

National Semiconductor CompactRISC CR16 16-bit

EM_ETPU 

Freescale Extended Time Processing Unit

EM_SLE9X 

Infineon Technologies SLE9X core

EM_L10M 

Intel L10M

EM_K10M 

Intel K10M

EM_AARCH64 

ARM AArch64

EM_AVR32 

Atmel Corporation 32-bit microprocessor family

EM_STM8 

STMicroeletronics STM8 8-bit microcontroller

EM_TILE64 

Tilera TILE64 multicore architecture family

EM_TILEPRO 

Tilera TILEPro multicore architecture family

EM_CUDA 

NVIDIA CUDA architecture

EM_TILEGX 

Tilera TILE-Gx multicore architecture family

EM_CLOUDSHIELD 

CloudShield architecture family

EM_COREA_1ST 

KIPO-KAIST Core-A 1st generation processor family

EM_COREA_2ND 

KIPO-KAIST Core-A 2nd generation processor family

EM_ARC_COMPACT2 

Synopsys ARCompact V2

EM_OPEN8 

Open8 8-bit RISC soft processor core

EM_RL78 

Renesas RL78 family

EM_VIDEOCORE5 

Broadcom VideoCore V processor

EM_78KOR 

Renesas 78KOR family

EM_56800EX 

Freescale 56800EX Digital Signal Controller (DSC)

EM_BA1 

Beyond BA1 CPU architecture

EM_BA2 

Beyond BA2 CPU architecture

EM_XCORE 

XMOS xCORE processor family

EM_MCHP_PIC 

Microchip 8-bit PIC(r) family

EM_INTEL205 

Reserved by Intel

EM_INTEL206 

Reserved by Intel

EM_INTEL207 

Reserved by Intel

EM_INTEL208 

Reserved by Intel

EM_INTEL209 

Reserved by Intel

EM_KM32 

KM211 KM32 32-bit processor

EM_KMX32 

KM211 KMX32 32-bit processor

EM_KMX16 

KM211 KMX16 16-bit processor

EM_KMX8 

KM211 KMX8 8-bit processor

EM_KVARC 

KM211 KVARC processor

EM_CDP 

Paneve CDP architecture family

EM_COGE 

Cognitive Smart Memory Processor

EM_COOL 

iCelero CoolEngine

EM_NORC 

Nanoradio Optimized RISC

EM_CSR_KALIMBA 

CSR Kalimba architecture family

EM_AMDGPU 

AMD GPU architecture

EM_RISCV 

RISC-V

EM_BPF 

eBPF Filter

◆ AUX_TYPE

enum class LIEF::ELF::AUX_TYPE : size_t
strong
Enumerator
AT_NULL 

End of vector

AT_IGNORE 

Entry should be ignored

AT_EXECFD 

File descriptor of program

AT_PHDR 

Program headers for program

AT_PHENT 

Size of program header entry

AT_PHNUM 

Number of program headers

AT_PAGESZ 

System page size

AT_BASE 

Base address of interpreter

AT_FLAGS 

Flags

AT_ENTRY 

Entry point of program

AT_NOTELF 

Program is not ELF

AT_UID 

Real uid

AT_EUID 

Effective uid

AT_GID 

Real gid

AT_EGID 

Effective gid

AT_CLKTCK 

Frequency of times()

AT_PLATFORM 

String identifying platform.

AT_HWCAP 

Machine dependent hints about processor capabilities.

AT_FPUCW 

Used FPU control word.

AT_DCACHEBSIZE 

Data cache block size.

AT_ICACHEBSIZE 

Instruction cache block size.

AT_UCACHEBSIZE 

Unified cache block size.

AT_IGNOREPPC 

Entry should be ignored.

AT_SECURE 

Boolean, was exec setuid-like?

AT_BASE_PLATFORM 

String identifying real platforms.

AT_RANDOM 

Address of 16 random bytes.

AT_HWCAP2 

Extension of AT_HWCAP.

AT_EXECFN 

Filename of executable.

◆ DYNAMIC_FLAGS

enum class LIEF::ELF::DYNAMIC_FLAGS : size_t
strong

DT_FLAGS and DT_FLAGS_1 values.

Enumerator
DF_ORIGIN 

The object may reference $ORIGIN.

DF_SYMBOLIC 

Search the shared lib before searching the exe.

DF_TEXTREL 

Relocations may modify a non-writable segment.

DF_BIND_NOW 

Process all relocations on load.

DF_STATIC_TLS 

Reject attempts to load dynamically.

◆ DYNAMIC_FLAGS_1

enum class LIEF::ELF::DYNAMIC_FLAGS_1 : size_t
strong
Enumerator
DF_1_NOW 

Set RTLD_NOW for this object.

DF_1_GLOBAL 

Set RTLD_GLOBAL for this object.

DF_1_GROUP 

Set RTLD_GROUP for this object.

DF_1_NODELETE 

Set RTLD_NODELETE for this object.

DF_1_LOADFLTR 

Trigger filtee loading at runtime.

DF_1_INITFIRST 

Set RTLD_INITFIRST for this object.

DF_1_NOOPEN 

Set RTLD_NOOPEN for this object.

DF_1_ORIGIN 

$ORIGIN must be handled.

DF_1_DIRECT 

Direct binding enabled.

DF_1_INTERPOSE 

Object is used to interpose.

DF_1_NODEFLIB 

Ignore default lib search path.

DF_1_NODUMP 

Object can't be dldump'ed.

DF_1_CONFALT 

Configuration alternative created.

DF_1_ENDFILTEE 

Filtee terminates filters search.

DF_1_DISPRELDNE 

Disp reloc applied at build time.

DF_1_DISPRELPND 

Disp reloc applied at run-time.

DF_1_NODIRECT 

Object has no-direct binding.

DF_1_EDITED 

Object is modified after built.

DF_1_SYMINTPOSE 

Object has individual interposers.

DF_1_GLOBAUDIT 

Global auditing required.

DF_1_SINGLETON 

Singleton symbols are used.

DF_1_PIE 

Singleton symbols are used.

◆ DYNAMIC_TAGS

enum class LIEF::ELF::DYNAMIC_TAGS : size_t
strong

Dynamic table entry tags.

Enumerator
DT_NULL 

Marks end of dynamic array.

DT_NEEDED 

String table offset of needed library.

DT_PLTRELSZ 

Size of relocation entries in PLT.

DT_PLTGOT 

Address associated with linkage table.

DT_HASH 

Address of symbolic hash table.

DT_STRTAB 

Address of dynamic string table.

DT_SYMTAB 

Address of dynamic symbol table.

DT_RELA 

Address of relocation table (Rela entries).

DT_RELASZ 

Size of Rela relocation table.

DT_RELAENT 

Size of a Rela relocation entry.

DT_STRSZ 

Total size of the string table.

DT_SYMENT 

Size of a symbol table entry.

DT_INIT 

Address of initialization function.

DT_FINI 

Address of termination function.

DT_SONAME 

String table offset of a shared objects name.

DT_RPATH 

String table offset of library search path.

DT_SYMBOLIC 

Changes symbol resolution algorithm.

DT_REL 

Address of relocation table (Rel entries).

DT_RELSZ 

Size of Rel relocation table.

DT_RELENT 

Size of a Rel relocation entry.

DT_PLTREL 

Type of relocation entry used for linking.

DT_DEBUG 

Reserved for debugger.

DT_TEXTREL 

Relocations exist for non-writable segments.

DT_JMPREL 

Address of relocations associated with PLT.

DT_BIND_NOW 

Process all relocations before execution.

DT_INIT_ARRAY 

Pointer to array of initialization functions.

DT_FINI_ARRAY 

Pointer to array of termination functions.

DT_INIT_ARRAYSZ 

Size of DT_INIT_ARRAY.

DT_FINI_ARRAYSZ 

Size of DT_FINI_ARRAY.

DT_RUNPATH 

String table offset of lib search path.

DT_FLAGS 

Flags.

DT_ENCODING 

Values from here to DT_LOOS follow the rules for the interpretation of the d_un union.

DT_PREINIT_ARRAY 

Pointer to array of preinit functions.

DT_PREINIT_ARRAYSZ 

Size of the DT_PREINIT_ARRAY array.

DT_LOOS 

Start of environment specific tags.

DT_HIOS 

End of environment specific tags.

DT_LOPROC 

Start of processor specific tags.

DT_HIPROC 

End of processor specific tags.

DT_GNU_HASH 

Reference to the GNU hash table.

DT_RELACOUNT 

ELF32_Rela count.

DT_RELCOUNT 

ELF32_Rel count.

DT_FLAGS_1 

Flags_1.

DT_VERSYM 

The address of .gnu.version section.

DT_VERDEF 

The address of the version definition table.

DT_VERDEFNUM 

The number of entries in DT_VERDEF.

DT_VERNEED 

The address of the version Dependency table.

DT_VERNEEDNUM 

The number of entries in DT_VERNEED.

DT_MIPS_RLD_VERSION 

32 bit version number for runtime linker interface.

DT_MIPS_TIME_STAMP 

Time stamp.

DT_MIPS_ICHECKSUM 

Checksum of external strings and common sizes.

DT_MIPS_IVERSION 

Index of version string in string table.

DT_MIPS_FLAGS 

32 bits of flags.

DT_MIPS_BASE_ADDRESS 

Base address of the segment.

DT_MIPS_MSYM 

Address of .msym section.

DT_MIPS_CONFLICT 

Address of .conflict section.

DT_MIPS_LIBLIST 

Address of .liblist section.

DT_MIPS_LOCAL_GOTNO 

Number of local global offset table entries.

DT_MIPS_CONFLICTNO 

Number of entries in the .conflict section.

DT_MIPS_LIBLISTNO 

Number of entries in the .liblist section.

DT_MIPS_SYMTABNO 

Number of entries in the .dynsym section.

DT_MIPS_UNREFEXTNO 

Index of first external dynamic symbol not referenced locally.

DT_MIPS_GOTSYM 

Index of first dynamic symbol in global offset table.

DT_MIPS_HIPAGENO 

Number of page table entries in global offset table.

DT_MIPS_RLD_MAP 

Address of run time loader map, used for debugging.

DT_MIPS_DELTA_CLASS 

Delta C++ class definition.

DT_MIPS_DELTA_CLASS_NO 

Number of entries in DT_MIPS_DELTA_CLASS.

DT_MIPS_DELTA_INSTANCE 

Delta C++ class instances.

DT_MIPS_DELTA_INSTANCE_NO 

Number of entries in DT_MIPS_DELTA_INSTANCE.

DT_MIPS_DELTA_RELOC 

Delta relocations.

DT_MIPS_DELTA_RELOC_NO 

Number of entries in DT_MIPS_DELTA_RELOC.

DT_MIPS_DELTA_SYM 

Delta symbols that Delta relocations refer to.

DT_MIPS_DELTA_SYM_NO 

Number of entries in DT_MIPS_DELTA_SYM.

DT_MIPS_DELTA_CLASSSYM 

Delta symbols that hold class declarations.

DT_MIPS_DELTA_CLASSSYM_NO 

Number of entries in DT_MIPS_DELTA_CLASSSYM.

DT_MIPS_CXX_FLAGS 

Flags indicating information about C++ flavor.

DT_MIPS_PIXIE_INIT 

Pixie information.

DT_MIPS_SYMBOL_LIB 

Address of .MIPS.symlib

DT_MIPS_LOCALPAGE_GOTIDX 

The GOT index of the first PTE for a segment

DT_MIPS_LOCAL_GOTIDX 

The GOT index of the first PTE for a local symbol

DT_MIPS_HIDDEN_GOTIDX 

The GOT index of the first PTE for a hidden symbol

DT_MIPS_PROTECTED_GOTIDX 

The GOT index of the first PTE for a protected symbol

DT_MIPS_OPTIONS 

Address of ‘.MIPS.options’.

DT_MIPS_INTERFACE 

Address of ‘.interface’.

DT_MIPS_DYNSTR_ALIGN 

Unknown.

DT_MIPS_INTERFACE_SIZE 

Size of the .interface section.

DT_MIPS_RLD_TEXT_RESOLVE_ADDR 

Size of rld_text_resolve function stored in the GOT.

DT_MIPS_PERF_SUFFIX 

Default suffix of DSO to be added by rld on dlopen() calls.

DT_MIPS_COMPACT_SIZE 

Size of compact relocation section (O32).

DT_MIPS_GP_VALUE 

GP value for auxiliary GOTs.

DT_MIPS_AUX_DYNAMIC 

Address of auxiliary .dynamic.

DT_MIPS_PLTGOT 

Address of the base of the PLTGOT.

DT_MIPS_RWPLT 

Points to the base of a writable PLT.

DT_ANDROID_REL_OFFSET 

The offset of packed relocation data (older version < M) (Android specific).

DT_ANDROID_REL_SIZE 

The size of packed relocation data in bytes (older version < M) (Android specific).

DT_ANDROID_REL 

The offset of packed relocation data (Android specific).

DT_ANDROID_RELSZ 

The size of packed relocation data in bytes (Android specific).

DT_ANDROID_RELA 

The offset of packed relocation data (Android specific).

DT_ANDROID_RELASZ 

The size of packed relocation data in bytes (Android specific).

DT_RELR 

The offset of new relr relocation data (Android specific).

DT_RELRSZ 

The size of nre relr relocation data in bytes (Android specific).

DT_RELRENT 

The size of a new relr relocation entry (Android specific).

DT_RELRCOUNT 

Specifies the relative count of new relr relocation entries (Android specific).

◆ DYNSYM_COUNT_METHODS

enum class LIEF::ELF::DYNSYM_COUNT_METHODS : size_t
strong

Methods that can be used by the LIEF::ELF::Parser to count the number of dynamic symbols

Enumerator
COUNT_AUTO 

Automatic detection

COUNT_SECTION 

Count based on sections (not very reliable)

COUNT_HASH 

Count based on hash table (reliable)

COUNT_RELOCATIONS 

Count based on PLT/GOT relocations (very reliable but not accurate)

◆ E_TYPE

enum class LIEF::ELF::E_TYPE : size_t
strong

Enum associated with e_type

Enumerator
ET_NONE 

No file type

ET_REL 

Relocatable file

ET_EXEC 

Executable file

ET_DYN 

Shared object file

ET_CORE 

Core file

ET_LOPROC 

Beginning of processor-specific codes

ET_HIPROC 

Processor-specific

◆ ELF_CLASS

enum class LIEF::ELF::ELF_CLASS : size_t
strong

Object file classes.

Enumerator
ELFCLASSNONE 

Unknown

ELFCLASS32 

32-bit object file

ELFCLASS64 

64-bit object file

◆ ELF_DATA

enum class LIEF::ELF::ELF_DATA : size_t
strong

Object file byte orderings.

Enumerator
ELFDATANONE 

Invalid data encoding.

ELFDATA2LSB 

Little-endian object file

ELFDATA2MSB 

Big-endian object file

◆ ELF_SECTION_FLAGS

enum class LIEF::ELF::ELF_SECTION_FLAGS : size_t
strong

Section flags.

Enumerator
SHF_WRITE 

Section data should be writable during execution.

SHF_ALLOC 

Section occupies memory during program execution.

SHF_EXECINSTR 

Section contains executable machine instructions.

SHF_MERGE 

The data in this section may be merged.

SHF_STRINGS 

The data in this section is null-terminated strings.

SHF_INFO_LINK 

A field in this section holds a section header table index.

SHF_LINK_ORDER 

Adds special ordering requirements for link editors.

SHF_OS_NONCONFORMING 

This section requires special OS-specific processing to avoid incorrect behavior

SHF_GROUP 

This section is a member of a section group.

SHF_TLS 

This section holds Thread-Local Storage.

SHF_EXCLUDE 

This section is excluded from the final executable or shared library.

SHF_MASKPROC 

Bits indicating processor-specific flags.

SHF_MIPS_NAMES 

Linker must generate implicit hidden weak names.

SHF_MIPS_LOCAL 

Section data local to process.

SHF_MIPS_NOSTRIP 

Do not strip this section.

SHF_MIPS_GPREL 

Section must be part of global data area.

SHF_MIPS_MERGE 

This section should be merged.

SHF_MIPS_ADDR 

Address size to be inferred from section entry size.

SHF_MIPS_STRING 

Section data is string data by default.

◆ ELF_SECTION_TYPES

enum class LIEF::ELF::ELF_SECTION_TYPES : size_t
strong

Section types.

Enumerator
SHT_NULL 

No associated section (inactive entry).

SHT_PROGBITS 

Program-defined contents.

SHT_SYMTAB 

Symbol table.

SHT_STRTAB 

String table.

SHT_RELA 

Relocation entries; explicit addends.

SHT_HASH 

Symbol hash table.

SHT_DYNAMIC 

Information for dynamic linking.

SHT_NOTE 

Information about the file.

SHT_NOBITS 

Data occupies no space in the file.

SHT_REL 

Relocation entries; no explicit addends.

SHT_SHLIB 

Reserved.

SHT_DYNSYM 

Symbol table.

SHT_INIT_ARRAY 

Pointers to initialization functions.

SHT_FINI_ARRAY 

Pointers to termination functions.

SHT_PREINIT_ARRAY 

Pointers to pre-init functions.

SHT_GROUP 

Section group.

SHT_SYMTAB_SHNDX 

Indices for SHN_XINDEX entries.

SHT_LOOS 

Lowest operating system-specific type.

SHT_ANDROID_REL 

Packed relocations (Android specific).

SHT_ANDROID_RELA 

Packed relocations (Android specific).

SHT_LLVM_ADDRSIG 

This section is used to mark symbols as address-significant.

SHT_RELR 

New relr relocations (Android specific).

SHT_GNU_ATTRIBUTES 

Object attributes.

SHT_GNU_HASH 

GNU-style hash table.

SHT_GNU_verdef 

GNU version definitions.

SHT_GNU_verneed 

GNU version references.

SHT_GNU_versym 

GNU symbol versions table.

SHT_HIOS 

Highest operating system-specific type.

SHT_LOPROC 

Lowest processor arch-specific type.

SHT_ARM_EXIDX 

Exception Index table

SHT_ARM_PREEMPTMAP 

BPABI DLL dynamic linking pre-emption map

SHT_ARM_ATTRIBUTES 

Object file compatibility attributes

SHT_HEX_ORDERED 

Link editor is to sort the entries in

SHT_X86_64_UNWIND 

Unwind information

SHT_MIPS_REGINFO 

Register usage information

SHT_MIPS_OPTIONS 

General options

SHT_MIPS_ABIFLAGS 

ABI information.

SHT_HIPROC 

Highest processor arch-specific type.

SHT_LOUSER 

Lowest type reserved for applications.

SHT_HIUSER 

Highest type reserved for applications.

◆ ELF_SEGMENT_FLAGS

enum class LIEF::ELF::ELF_SEGMENT_FLAGS : size_t
strong

Segment flags.

Enumerator
PF_X 

Execute

PF_W 

Write

PF_R 

Read

PF_MASKOS 

Bits for operating system-specific semantics.

PF_MASKPROC 

Bits for processor-specific semantics.

◆ IDENTITY

enum class LIEF::ELF::IDENTITY : size_t
strong

e_ident size and indices.

Enumerator
EI_MAG0 

File identification index.

EI_MAG1 

File identification index.

EI_MAG2 

File identification index.

EI_MAG3 

File identification index.

EI_CLASS 

File class.

EI_DATA 

Data encoding.

EI_VERSION 

File version.

EI_OSABI 

OS/ABI identification.

EI_ABIVERSION 

ABI version.

EI_PAD 

Start of padding bytes.

EI_NIDENT 

Number of bytes in e_ident.

◆ OS_ABI

enum class LIEF::ELF::OS_ABI : size_t
strong

OS ABI identification.

Enumerator
ELFOSABI_SYSTEMV 

UNIX System V ABI

ELFOSABI_HPUX 

HP-UX operating system

ELFOSABI_NETBSD 

NetBSD

ELFOSABI_GNU 

GNU/Linux

ELFOSABI_LINUX 

Historical alias for ELFOSABI_GNU.

ELFOSABI_HURD 

GNU/Hurd

ELFOSABI_SOLARIS 

Solaris

ELFOSABI_AIX 

AIX

ELFOSABI_IRIX 

IRIX

ELFOSABI_FREEBSD 

FreeBSD

ELFOSABI_TRU64 

TRU64 UNIX

ELFOSABI_MODESTO 

Novell Modesto

ELFOSABI_OPENBSD 

OpenBSD

ELFOSABI_OPENVMS 

OpenVMS

ELFOSABI_NSK 

Hewlett-Packard Non-Stop Kernel

ELFOSABI_AROS 

AROS

ELFOSABI_FENIXOS 

FenixOS

ELFOSABI_CLOUDABI 

Nuxi CloudABI

ELFOSABI_C6000_ELFABI 

Bare-metal TMS320C6000

ELFOSABI_AMDGPU_HSA 

AMD HSA runtime

ELFOSABI_C6000_LINUX 

Linux TMS320C6000

ELFOSABI_ARM 

ARM

ELFOSABI_STANDALONE 

Standalone (embedded) application

◆ RELOC_i386

i386 relocations.

◆ RELOC_x86_64

enum class LIEF::ELF::RELOC_x86_64 : size_t
strong

x86_64 relocations.

◆ SEGMENT_TYPES

enum class LIEF::ELF::SEGMENT_TYPES : size_t
strong

Segment types.

Enumerator
PT_NULL 

Unused segment.

PT_LOAD 

Loadable segment.

PT_DYNAMIC 

Dynamic linking information.

PT_INTERP 

Interpreter pathname.

PT_NOTE 

Auxiliary information.

PT_SHLIB 

Reserved.

PT_PHDR 

The program header table itself.

PT_TLS 

The thread-local storage template.

PT_LOOS 

Lowest operating system-specific pt entry type.

PT_HIOS 

Highest operating system-specific pt entry type.

PT_LOPROC 

Lowest processor-specific program hdr entry type.

PT_HIPROC 

Highest processor-specific program hdr entry type.

PT_GNU_STACK 

Indicates stack executability.

PT_GNU_PROPERTY 

GNU property

PT_GNU_RELRO 

Read-only after relocation.

PT_ARM_ARCHEXT 

Platform architecture compatibility info

PT_MIPS_REGINFO 

Register usage information.

PT_MIPS_RTPROC 

Runtime procedure table.

PT_MIPS_OPTIONS 

Options segment.

PT_MIPS_ABIFLAGS 

Abiflags segment.

◆ SYMBOL_BINDINGS

enum class LIEF::ELF::SYMBOL_BINDINGS : size_t
strong

Symbol bindings.

Enumerator
STB_LOCAL 

Local symbol, not visible outside obj file containing def

STB_GLOBAL 

Global symbol, visible to all object files being combined

STB_WEAK 

Weak symbol, like global but lower-precedence

STB_LOOS 

Lowest operating system-specific binding type

STB_HIOS 

Highest operating system-specific binding type

STB_LOPROC 

Lowest processor-specific binding type

STB_HIPROC 

Highest processor-specific binding type

◆ SYMBOL_SECTION_INDEX

enum class LIEF::ELF::SYMBOL_SECTION_INDEX : size_t
strong

Special section indices.

Enumerator
SHN_UNDEF 

Undefined, missing, irrelevant, or meaningless

SHN_LORESERVE 

Lowest reserved index

SHN_LOPROC 

Lowest processor-specific index

SHN_HIPROC 

Highest processor-specific index

SHN_LOOS 

Lowest operating system-specific index

SHN_HIOS 

Highest operating system-specific index

SHN_ABS 

Symbol has absolute value; does not need relocation

SHN_COMMON 

FORTRAN COMMON or C external global variables

SHN_XINDEX 

Mark that the index is >= SHN_LORESERVE

SHN_HIRESERVE 

Highest reserved index

◆ VERSION

enum class LIEF::ELF::VERSION : size_t
strong

Versioning

Enumerator
EV_CURRENT 

Default value

Variable Documentation

◆ note_to_section_map

const note_to_section_map_t LIEF::ELF::note_to_section_map
static
Initial value:
= {
{ NOTE_TYPES::NT_GNU_ABI_TAG, ".note.ABI-tag" },
{ NOTE_TYPES::NT_GNU_ABI_TAG, ".note.android.ident" },
{ NOTE_TYPES::NT_GNU_HWCAP, ".note.gnu.hwcap" },
{ NOTE_TYPES::NT_GNU_BUILD_ID, ".note.gnu.build-id" },
{ NOTE_TYPES::NT_GNU_BUILD_ID, ".note.stapsdt" },
{ NOTE_TYPES::NT_GNU_GOLD_VERSION, ".note.gnu.gold-version" },
{ NOTE_TYPES::NT_GNU_GOLD_VERSION, ".note.go.buildid" },
{ NOTE_TYPES::NT_GNU_PROPERTY_TYPE_0, ".note.gnu.property" },
{ NOTE_TYPES::NT_CRASHPAD, ".note.crashpad.info" },
{ NOTE_TYPES::NT_UNKNOWN, ".note" },
}