LIEF: Library to Instrument Executable Formats Version 0.17.0
|
Namespace related to the LIEF's ELF module. More...
Namespaces | |
namespace | DataHandler |
namespace | details |
Classes | |
class | AArch64Feature |
This class represents the GNU_PROPERTY_AARCH64_FEATURE_1_AND property. More... | |
class | AArch64PAuth |
This class represents the GNU_PROPERTY_AARCH64_FEATURE_PAUTH property. More... | |
class | AndroidIdent |
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 a core NT_FILE which describes the mapped files of the process. More... | |
class | CorePrPsInfo |
Class representing the NT_PRPSINFO core note. This kind of note represents general information about the process. More... | |
class | CorePrStatus |
Class representing core PrPsInfo object. More... | |
class | CoreSigInfo |
Class representing a 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 to name the original library. More... | |
class | Generic |
This class represents a property which doesn't have a concrete LIEF implementation. 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 class mirrors the raw ELF Elfxx_Ehdr structure. More... | |
class | Needed |
class | Note |
Class which represents an ELF note. This class can be instantiated using the static Note::create functions. More... | |
class | NoteAbi |
Class that wraps the NT_GNU_ABI_TAG note. More... | |
class | NoteGnuProperty |
Class that wraps the NT_GNU_PROPERTY_TYPE_0 note. More... | |
class | NoteNoCopyOnProtected |
This class provides an interface over the GNU_PROPERTY_NO_COPY_ON_PROTECTED property. This property indicates that the linker shouldn't copy relocations against protected symbols. More... | |
class | Parser |
Class which parses and transforms an ELF file into a ELF::Binary object. More... | |
struct | ParserConfig |
This structure is used to tweak the ELF Parser (ELF::Parser) More... | |
class | QNXStack |
Class representing the QNX QNT_STACK note. 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 | StackSize |
This class provides an interface over the GNU_PROPERTY_STACK_SIZE property. 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... | |
class | X86Features |
This class interfaces the different GNU_PROPERTY_X86_FEATURE_* properties which includes: More... | |
class | X86ISA |
This class interfaces the different GNU_PROPERTY_X86_ISA_* properties which includes: More... | |
Enumerations | |
enum class | ARCH { NONE = 0 , M32 = 1 , SPARC = 2 , I386 = 3 , M68K = 4 , M88K = 5 , IAMCU = 6 , I860 = 7 , MIPS = 8 , S370 = 9 , MIPS_RS3_LE = 10 , PARISC = 15 , VPP500 = 17 , SPARC32PLUS = 18 , I60 = 19 , PPC = 20 , PPC64 = 21 , S390 = 22 , SPU = 23 , V800 = 36 , FR20 = 37 , RH32 = 38 , RCE = 39 , ARM = 40 , ALPHA = 41 , SH = 42 , SPARCV9 = 43 , TRICORE = 44 , ARC = 45 , H8_300 = 46 , H8_300H = 47 , H8S = 48 , H8_500 = 49 , IA_64 = 50 , MIPS_X = 51 , COLDFIRE = 52 , M68HC12 = 53 , MMA = 54 , PCP = 55 , NCPU = 56 , NDR1 = 57 , STARCORE = 58 , ME16 = 59 , ST100 = 60 , TINYJ = 61 , X86_64 = 62 , PDSP = 63 , PDP10 = 64 , PDP11 = 65 , FX66 = 66 , ST9PLUS = 67 , ST7 = 68 , M68HC16 = 69 , M68HC11 = 70 , M68HC08 = 71 , M68HC05 = 72 , SVX = 73 , ST19 = 74 , VAX = 75 , CRIS = 76 , JAVELIN = 77 , FIREPATH = 78 , ZSP = 79 , MMIX = 80 , HUANY = 81 , PRISM = 82 , AVR = 83 , FR30 = 84 , D10V = 85 , D30V = 86 , V850 = 87 , M32R = 88 , MN10300 = 89 , MN10200 = 90 , PJ = 91 , OPENRISC = 92 , ARC_COMPACT = 93 , XTENSA = 94 , VIDEOCORE = 95 , TMM_GPP = 96 , NS32K = 97 , TPC = 98 , SNP1K = 99 , ST200 = 100 , IP2K = 101 , MAX = 102 , CR = 103 , F2MC16 = 104 , MSP430 = 105 , BLACKFIN = 106 , SE_C33 = 107 , SEP = 108 , ARCA = 109 , UNICORE = 110 , EXCESS = 111 , DXP = 112 , ALTERA_NIOS2 = 113 , CRX = 114 , XGATE = 115 , C166 = 116 , M16C = 117 , DSPIC30F = 118 , CE = 119 , M32C = 120 , TSK3000 = 131 , RS08 = 132 , SHARC = 133 , ECOG2 = 134 , SCORE7 = 135 , DSP24 = 136 , VIDEOCORE3 = 137 , LATTICEMICO32 = 138 , SE_C17 = 139 , TI_C6000 = 140 , TI_C2000 = 141 , TI_C5500 = 142 , MMDSP_PLUS = 160 , CYPRESS_M8C = 161 , R32C = 162 , TRIMEDIA = 163 , HEXAGON = 164 , M8051 = 165 , STXP7X = 166 , NDS32 = 167 , ECOG1 = 168 , ECOG1X = 168 , MAXQ30 = 169 , XIMO16 = 170 , MANIK = 171 , CRAYNV2 = 172 , RX = 173 , METAG = 174 , MCST_ELBRUS = 175 , ECOG16 = 176 , CR16 = 177 , ETPU = 178 , SLE9X = 179 , L10M = 180 , K10M = 181 , AARCH64 = 183 , AVR32 = 185 , STM8 = 186 , TILE64 = 187 , TILEPRO = 188 , CUDA = 190 , TILEGX = 191 , CLOUDSHIELD = 192 , COREA_1ST = 193 , COREA_2ND = 194 , ARC_COMPACT2 = 195 , OPEN8 = 196 , RL78 = 197 , VIDEOCORE5 = 198 , M78KOR = 199 , M56800EX = 200 , BA1 = 201 , BA2 = 202 , XCORE = 203 , MCHP_PIC = 204 , INTEL205 = 205 , INTEL206 = 206 , INTEL207 = 207 , INTEL208 = 208 , INTEL209 = 209 , KM32 = 210 , KMX32 = 211 , KMX16 = 212 , KMX8 = 213 , KVARC = 214 , CDP = 215 , COGE = 216 , COOL = 217 , NORC = 218 , CSR_KALIMBA = 219 , AMDGPU = 224 , RISCV = 243 , BPF = 247 , CSKY = 252 , LOONGARCH = 258 } |
enum class | PROCESSOR_FLAGS : uint64_t { ARM_EABI_UNKNOWN = 0x00000000 | (PF_ARM_ID << PFLAGS_BIT) , ARM_SOFT_FLOAT = 0x00000200 | (PF_ARM_ID << PFLAGS_BIT) , ARM_VFP_FLOAT = 0x00000400 | (PF_ARM_ID << PFLAGS_BIT) , ARM_EABI_VER1 = 0x01000000 | (PF_ARM_ID << PFLAGS_BIT) , ARM_EABI_VER2 = 0x02000000 | (PF_ARM_ID << PFLAGS_BIT) , ARM_EABI_VER3 = 0x03000000 | (PF_ARM_ID << PFLAGS_BIT) , ARM_EABI_VER4 = 0x04000000 | (PF_ARM_ID << PFLAGS_BIT) , ARM_EABI_VER5 = 0x05000000 | (PF_ARM_ID << PFLAGS_BIT) , HEXAGON_MACH_V2 = 0x00000001 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_MACH_V3 = 0x00000002 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_MACH_V4 = 0x00000003 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_MACH_V5 = 0x00000004 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_ISA_V2 = 0x00000010 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_ISA_V3 = 0x00000020 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_ISA_V4 = 0x00000030 | (PF_HEX_ID << PFLAGS_BIT) , HEXAGON_ISA_V5 = 0x00000040 | (PF_HEX_ID << PFLAGS_BIT) , LOONGARCH_ABI_SOFT_FLOAT = 0x1 | (PF_LOONGARCH_ID << PFLAGS_BIT) , LOONGARCH_ABI_SINGLE_FLOAT = 0x2 | (PF_LOONGARCH_ID << PFLAGS_BIT) , LOONGARCH_ABI_DOUBLE_FLOAT = 0x3 | (PF_LOONGARCH_ID << PFLAGS_BIT) , MIPS_NOREORDER = 0x00000001 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_PIC = 0x00000002 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_CPIC = 0x00000004 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ABI2 = 0x00000020 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_32BITMODE = 0x00000100 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_FP64 = 0x00000200 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_NAN2008 = 0x00000400 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ABI_O32 = 0x00001000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ABI_O64 = 0x00002000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ABI_EABI32 = 0x00003000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ABI_EABI64 = 0x00004000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_3900 = 0x00810000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_4010 = 0x00820000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_4100 = 0x00830000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_4650 = 0x00850000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_4120 = 0x00870000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_4111 = 0x00880000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_SB1 = 0x008a0000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_OCTEON = 0x008b0000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_XLR = 0x008c0000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_OCTEON2 = 0x008d0000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_OCTEON3 = 0x008e0000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_5400 = 0x00910000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_5900 = 0x00920000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_5500 = 0x00980000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_9000 = 0x00990000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_LS2E = 0x00a00000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_LS2F = 0x00a10000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MACH_LS3A = 0x00a20000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_MICROMIPS = 0x02000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_ASE_M16 = 0x04000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_ASE_MDMX = 0x08000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_1 = 0x00000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_2 = 0x10000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_3 = 0x20000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_4 = 0x30000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_5 = 0x40000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_32 = 0x50000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_64 = 0x60000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_32R2 = 0x70000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_64R2 = 0x80000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_32R6 = 0x90000000 | (PF_MIPS_ID << PFLAGS_BIT) , MIPS_ARCH_64R6 = 0xa0000000 | (PF_MIPS_ID << PFLAGS_BIT) , RISCV_RVC = 0x00000001 | (PF_RISCV_ID << PFLAGS_BIT) , RISCV_FLOAT_ABI_SOFT = 0x00000000 | (PF_RISCV_ID << PFLAGS_BIT) , RISCV_FLOAT_ABI_SINGLE = 0x00000002 | (PF_RISCV_ID << PFLAGS_BIT) , RISCV_FLOAT_ABI_DOUBLE = 0x00000004 | (PF_RISCV_ID << PFLAGS_BIT) , RISCV_FLOAT_ABI_QUAD = 0x00000006 | (PF_RISCV_ID << PFLAGS_BIT) , RISCV_FLOAT_ABI_RVE = 0x00000008 | (PF_RISCV_ID << PFLAGS_BIT) , RISCV_FLOAT_ABI_TSO = 0x00000010 | (PF_RISCV_ID << PFLAGS_BIT) } |
Functions | |
const char * | to_string (DynamicEntry::TAG e) |
const char * | to_string (DynamicEntryFlags::FLAG e) |
const char * | to_string (ARCH e) |
const char * | to_string (Header::FILE_TYPE type) |
const char * | to_string (Header::VERSION version) |
const char * | to_string (Header::CLASS version) |
const char * | to_string (Header::OS_ABI abi) |
const char * | to_string (Header::ELF_DATA abi) |
std::string | to_json (const Object &v) |
const char * | to_string (Note::TYPE type) |
const char * | to_string (CoreAuxv::TYPE type) |
const char * | to_string (CorePrStatus::Registers::X86 e) |
const char * | to_string (CorePrStatus::Registers::X86_64 e) |
const char * | to_string (CorePrStatus::Registers::ARM e) |
const char * | to_string (CorePrStatus::Registers::AARCH64 e) |
const char * | to_string (NoteAbi::ABI abi) |
const char * | to_string (NoteGnuProperty::Property::TYPE type) |
const char * | to_string (AArch64Feature::FEATURE feature) |
const char * | to_string (X86Features::FLAG flag) |
const char * | to_string (X86Features::FEATURE feat) |
const char * | to_string (X86ISA::FLAG flag) |
const char * | to_string (X86ISA::ISA isa) |
const char * | to_string (PROCESSOR_FLAGS flag) |
const char * | to_string (Relocation::TYPE type) |
const char * | to_string (Section::TYPE e) |
const char * | to_string (Section::FLAGS e) |
const char * | to_string (Segment::TYPE e) |
const char * | to_string (Segment::FLAGS e) |
const char * | to_string (Symbol::BINDING binding) |
const char * | to_string (Symbol::TYPE type) |
const char * | to_string (Symbol::VISIBILITY viz) |
bool | is_elf (BinaryStream &stream) |
Check if given stream wraps an ELF file. | |
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) |
|
strong |
Machine architectures See current registered ELF machine architectures at: http://www.sco.com/developers/gabi/latest/ch4.eheader.html
|
strong |
uint32_t LIEF::ELF::dl_new_hash | ( | const char * | name | ) |
unsigned long LIEF::ELF::hash32 | ( | const char * | name | ) |
unsigned long LIEF::ELF::hash64 | ( | const char * | name | ) |
bool LIEF::ELF::is_elf | ( | BinaryStream & | stream | ) |
Check if given stream wraps an ELF file.
bool LIEF::ELF::is_elf | ( | const std::string & | file | ) |
Check if the given file is an ELF one.
bool LIEF::ELF::is_elf | ( | const std::vector< uint8_t > & | raw | ) |
check if the raw data is a ELF file
std::string LIEF::ELF::to_json | ( | const Object & | v | ) |
const char * LIEF::ELF::to_string | ( | AArch64Feature::FEATURE | feature | ) |
const char * LIEF::ELF::to_string | ( | ARCH | e | ) |
const char * LIEF::ELF::to_string | ( | CoreAuxv::TYPE | type | ) |
const char * LIEF::ELF::to_string | ( | CorePrStatus::Registers::AARCH64 | e | ) |
const char * LIEF::ELF::to_string | ( | CorePrStatus::Registers::ARM | e | ) |
const char * LIEF::ELF::to_string | ( | CorePrStatus::Registers::X86 | e | ) |
const char * LIEF::ELF::to_string | ( | CorePrStatus::Registers::X86_64 | e | ) |
const char * LIEF::ELF::to_string | ( | DynamicEntry::TAG | e | ) |
const char * LIEF::ELF::to_string | ( | DynamicEntryFlags::FLAG | e | ) |
const char * LIEF::ELF::to_string | ( | Header::CLASS | version | ) |
const char * LIEF::ELF::to_string | ( | Header::ELF_DATA | abi | ) |
const char * LIEF::ELF::to_string | ( | Header::FILE_TYPE | type | ) |
const char * LIEF::ELF::to_string | ( | Header::OS_ABI | abi | ) |
const char * LIEF::ELF::to_string | ( | Header::VERSION | version | ) |
const char * LIEF::ELF::to_string | ( | Note::TYPE | type | ) |
const char * LIEF::ELF::to_string | ( | NoteAbi::ABI | abi | ) |
const char * LIEF::ELF::to_string | ( | NoteGnuProperty::Property::TYPE | type | ) |
const char * LIEF::ELF::to_string | ( | PROCESSOR_FLAGS | flag | ) |
const char * LIEF::ELF::to_string | ( | Relocation::TYPE | type | ) |
const char * LIEF::ELF::to_string | ( | Section::FLAGS | e | ) |
const char * LIEF::ELF::to_string | ( | Section::TYPE | e | ) |
const char * LIEF::ELF::to_string | ( | Segment::FLAGS | e | ) |
const char * LIEF::ELF::to_string | ( | Segment::TYPE | e | ) |
const char * LIEF::ELF::to_string | ( | Symbol::BINDING | binding | ) |
const char * LIEF::ELF::to_string | ( | Symbol::TYPE | type | ) |
const char * LIEF::ELF::to_string | ( | Symbol::VISIBILITY | viz | ) |
const char * LIEF::ELF::to_string | ( | X86Features::FEATURE | feat | ) |
const char * LIEF::ELF::to_string | ( | X86Features::FLAG | flag | ) |
const char * LIEF::ELF::to_string | ( | X86ISA::FLAG | flag | ) |
const char * LIEF::ELF::to_string | ( | X86ISA::ISA | isa | ) |