LIEF: Library to Instrument Executable Formats Version 0.17.0
|
Class that represent an Array in the dynamic table. This entry is associated with constructors: More...
#include <DynamicEntryArray.hpp>
Public Types | |
using | array_t = std::vector<uint64_t> |
Public Types inherited from LIEF::ELF::DynamicEntry | |
enum class | TAG : uint64_t { UNKNOWN = uint64_t(-1) , DT_NULL_ = 0 , NEEDED = 1 , PLTRELSZ = 2 , PLTGOT = 3 , HASH = 4 , STRTAB = 5 , SYMTAB = 6 , RELA = 7 , RELASZ = 8 , RELAENT = 9 , STRSZ = 10 , SYMENT = 11 , INIT = 12 , FINI = 13 , SONAME = 14 , RPATH = 15 , SYMBOLIC = 16 , REL = 17 , RELSZ = 18 , RELENT = 19 , PLTREL = 20 , DEBUG_TAG = 21 , TEXTREL = 22 , JMPREL = 23 , BIND_NOW = 24 , INIT_ARRAY = 25 , FINI_ARRAY = 26 , INIT_ARRAYSZ = 27 , FINI_ARRAYSZ = 28 , RUNPATH = 29 , FLAGS = 30 , PREINIT_ARRAY = 32 , PREINIT_ARRAYSZ = 33 , SYMTAB_SHNDX = 34 , RELRSZ = 35 , RELR = 36 , RELRENT = 37 , GNU_HASH = 0x6FFFFEF5 , RELACOUNT = 0x6FFFFFF9 , RELCOUNT = 0x6FFFFFFA , FLAGS_1 = 0x6FFFFFFB , VERSYM = 0x6FFFFFF0 , VERDEF = 0x6FFFFFFC , VERDEFNUM = 0x6FFFFFFD , VERNEED = 0x6FFFFFFE , VERNEEDNUM = 0x6FFFFFFF , ANDROID_REL_OFFSET = 0x6000000D , ANDROID_REL_SIZE = 0x6000000E , ANDROID_REL = 0x6000000F , ANDROID_RELSZ = 0x60000010 , ANDROID_RELA = 0x60000011 , ANDROID_RELASZ = 0x60000012 , ANDROID_RELR = 0x6FFFE000 , ANDROID_RELRSZ = 0x6FFFE001 , ANDROID_RELRENT = 0x6FFFE003 , ANDROID_RELRCOUNT = 0x6FFFE005 , MIPS_RLD_VERSION = MIPS_DISC + 0x70000001 , MIPS_TIME_STAMP = MIPS_DISC + 0x70000002 , MIPS_ICHECKSUM = MIPS_DISC + 0x70000003 , MIPS_IVERSION = MIPS_DISC + 0x70000004 , MIPS_FLAGS = MIPS_DISC + 0x70000005 , MIPS_BASE_ADDRESS = MIPS_DISC + 0x70000006 , MIPS_MSYM = MIPS_DISC + 0x70000007 , MIPS_CONFLICT = MIPS_DISC + 0x70000008 , MIPS_LIBLIST = MIPS_DISC + 0x70000009 , MIPS_LOCAL_GOTNO = MIPS_DISC + 0x7000000a , MIPS_CONFLICTNO = MIPS_DISC + 0x7000000b , MIPS_LIBLISTNO = MIPS_DISC + 0x70000010 , MIPS_SYMTABNO = MIPS_DISC + 0x70000011 , MIPS_UNREFEXTNO = MIPS_DISC + 0x70000012 , MIPS_GOTSYM = MIPS_DISC + 0x70000013 , MIPS_HIPAGENO = MIPS_DISC + 0x70000014 , MIPS_RLD_MAP = MIPS_DISC + 0x70000016 , MIPS_DELTA_CLASS = MIPS_DISC + 0x70000017 , MIPS_DELTA_CLASS_NO = MIPS_DISC + 0x70000018 , MIPS_DELTA_INSTANCE = MIPS_DISC + 0x70000019 , MIPS_DELTA_INSTANCE_NO = MIPS_DISC + 0x7000001A , MIPS_DELTA_RELOC = MIPS_DISC + 0x7000001B , MIPS_DELTA_RELOC_NO = MIPS_DISC + 0x7000001C , MIPS_DELTA_SYM = MIPS_DISC + 0x7000001D , MIPS_DELTA_SYM_NO = MIPS_DISC + 0x7000001E , MIPS_DELTA_CLASSSYM = MIPS_DISC + 0x70000020 , MIPS_DELTA_CLASSSYM_NO = MIPS_DISC + 0x70000021 , MIPS_CXX_FLAGS = MIPS_DISC + 0x70000022 , MIPS_PIXIE_INIT = MIPS_DISC + 0x70000023 , MIPS_SYMBOL_LIB = MIPS_DISC + 0x70000024 , MIPS_LOCALPAGE_GOTIDX = MIPS_DISC + 0x70000025 , MIPS_LOCAL_GOTIDX = MIPS_DISC + 0x70000026 , MIPS_HIDDEN_GOTIDX = MIPS_DISC + 0x70000027 , MIPS_PROTECTED_GOTIDX = MIPS_DISC + 0x70000028 , MIPS_OPTIONS = MIPS_DISC + 0x70000029 , MIPS_DYNSTR_ALIGN = MIPS_DISC + 0x7000002B , MIPS_INTERFACE_SIZE = MIPS_DISC + 0x7000002C , MIPS_RLD_TEXT_RESOLVE_ADDR = MIPS_DISC + 0x7000002D , MIPS_PERF_SUFFIX = MIPS_DISC + 0x7000002E , MIPS_COMPACT_SIZE = MIPS_DISC + 0x7000002F , MIPS_GP_VALUE = MIPS_DISC + 0x70000030 , MIPS_AUX_DYNAMIC = MIPS_DISC + 0x70000031 , MIPS_PLTGOT = MIPS_DISC + 0x70000032 , MIPS_RWPLT = MIPS_DISC + 0x70000034 , MIPS_RLD_MAP_REL = MIPS_DISC + 0x70000035 , MIPS_XHASH = MIPS_DISC + 0x70000036 , AARCH64_BTI_PLT = AARCH64_DISC + 0x70000001 , AARCH64_PAC_PLT = AARCH64_DISC + 0x70000003 , AARCH64_VARIANT_PCS = AARCH64_DISC + 0x70000005 , AARCH64_MEMTAG_MODE = AARCH64_DISC + 0x70000009 , AARCH64_MEMTAG_HEAP = AARCH64_DISC + 0x7000000b , AARCH64_MEMTAG_STACK = AARCH64_DISC + 0x7000000c , AARCH64_MEMTAG_GLOBALS = AARCH64_DISC + 0x7000000d , AARCH64_MEMTAG_GLOBALSSZ = AARCH64_DISC + 0x7000000f , HEXAGON_SYMSZ = HEXAGON_DISC + 0x70000000 , HEXAGON_VER = HEXAGON_DISC + 0x70000001 , HEXAGON_PLT = HEXAGON_DISC + 0x70000002 , PPC_GOT = PPC_DISC + 0x70000000 , PPC_OPT = PPC_DISC + 0x70000001 , PPC64_GLINK = PPC64_DISC + 0x70000000 , PPC64_OPT = PPC64_DISC + 0x70000003 , RISCV_VARIANT_CC = RISCV_DISC + 0x70000003 , X86_64_PLT = X86_64_DISC + 0x70000000 , X86_64_PLTSZ = X86_64_DISC + 0x70000001 , X86_64_PLTENT = X86_64_DISC + 0x70000003 } |
Public Types inherited from LIEF::Object | |
template<class T > | |
using | output_t = add_pointer_t<decay_t<T>> |
template<class T > | |
using | output_const_t = add_pointer_t<add_const_t<decay_t<T>>> |
Public Member Functions | |
DynamicEntryArray ()=delete | |
DynamicEntryArray (DynamicEntry::TAG tag, array_t array) | |
DynamicEntryArray & | operator= (const DynamicEntryArray &)=default |
DynamicEntryArray (const DynamicEntryArray &)=default | |
std::unique_ptr< DynamicEntry > | clone () const override |
array_t & | array () |
Return the array values (list of pointers) | |
const array_t & | array () const |
void | array (const array_t &array) |
DynamicEntryArray & | insert (size_t pos, uint64_t function) |
Insert the given function at pos | |
DynamicEntryArray & | append (uint64_t function) |
Append the given function. | |
DynamicEntryArray & | remove (uint64_t function) |
Remove the given function. | |
size_t | size () const |
Number of function registred in this array. | |
DynamicEntryArray & | operator+= (uint64_t value) |
DynamicEntryArray & | operator-= (uint64_t value) |
const uint64_t & | operator[] (size_t idx) const |
uint64_t & | operator[] (size_t idx) |
void | accept (Visitor &visitor) const override |
std::ostream & | print (std::ostream &os) const override |
~DynamicEntryArray () override=default | |
DynamicEntry ()=default | |
DynamicEntry (const details::Elf64_Dyn &header, ARCH arch) | |
DynamicEntry (const details::Elf32_Dyn &header, ARCH arch) | |
DynamicEntry (TAG tag, uint64_t value) | |
DynamicEntry (const DynamicEntry &)=default | |
Public Member Functions inherited from LIEF::ELF::DynamicEntry | |
DynamicEntry ()=default | |
DynamicEntry (const details::Elf64_Dyn &header, ARCH arch) | |
DynamicEntry (const details::Elf32_Dyn &header, ARCH arch) | |
DynamicEntry (TAG tag, uint64_t value) | |
DynamicEntry & | operator= (const DynamicEntry &)=default |
DynamicEntry (const DynamicEntry &)=default | |
~DynamicEntry () override=default | |
TAG | tag () const |
Tag of the current entry. The most common tags are: DT_NEEDED, DT_INIT, ... | |
uint64_t | value () const |
Return the entry's value. | |
void | tag (TAG tag) |
void | value (uint64_t value) |
template<class T > | |
const T * | cast () const |
template<class T > | |
T * | cast () |
Public Member Functions inherited from LIEF::Object | |
Object () | |
Object (const Object &other) | |
Object & | operator= (const Object &other) |
template<class T > | |
output_t< T > | as () |
template<class T > | |
output_const_t< T > | as () const |
virtual bool | operator== (const Object &other) const |
virtual bool | operator!= (const Object &other) const |
virtual | ~Object () |
Static Public Member Functions | |
static bool | classof (const DynamicEntry *entry) |
Static Public Member Functions inherited from LIEF::ELF::DynamicEntry | |
static TAG | from_value (uint64_t value, ARCH arch) |
static uint64_t | to_value (TAG tag) |
Additional Inherited Members | |
Static Public Attributes inherited from LIEF::ELF::DynamicEntry | |
static constexpr uint64_t | MIPS_DISC = 0x100000000 |
static constexpr uint64_t | AARCH64_DISC = 0x200000000 |
static constexpr uint64_t | HEXAGON_DISC = 0x300000000 |
static constexpr uint64_t | PPC_DISC = 0x400000000 |
static constexpr uint64_t | PPC64_DISC = 0x500000000 |
static constexpr uint64_t | RISCV_DISC = 0x600000000 |
static constexpr uint64_t | X86_64_DISC = 0x700000000 |
Class that represent an Array in the dynamic table. This entry is associated with constructors:
DT_PREINIT_ARRAY
DT_INIT_ARRAY
DT_FINI_ARRAY
The underlying values are 64-bits integers to cover both: ELF32 and ELF64 binaries.
using LIEF::ELF::DynamicEntryArray::array_t = std::vector<uint64_t> |
|
delete |
|
inline |
|
default |
|
overridedefault |
|
overridevirtual |
Reimplemented from LIEF::ELF::DynamicEntry.
|
inline |
Append the given function.
|
inline |
Return the array values (list of pointers)
|
inline |
|
inline |
|
inlinestatic |
References LIEF::ELF::DynamicEntry::tag().
|
inlineoverridevirtual |
Reimplemented from LIEF::ELF::DynamicEntry.
|
default |
LIEF::ELF::DynamicEntry::DynamicEntry | ( | const details::Elf32_Dyn & | header, |
ARCH | arch ) |
LIEF::ELF::DynamicEntry::DynamicEntry | ( | const details::Elf64_Dyn & | header, |
ARCH | arch ) |
|
default |
|
inline |
DynamicEntryArray & LIEF::ELF::DynamicEntryArray::insert | ( | size_t | pos, |
uint64_t | function ) |
Insert the given function at pos
|
inline |
|
inline |
|
default |
uint64_t & LIEF::ELF::DynamicEntryArray::operator[] | ( | size_t | idx | ) |
const uint64_t & LIEF::ELF::DynamicEntryArray::operator[] | ( | size_t | idx | ) | const |
|
overridevirtual |
Reimplemented from LIEF::ELF::DynamicEntry.
DynamicEntryArray & LIEF::ELF::DynamicEntryArray::remove | ( | uint64_t | function | ) |
Remove the given function.
|
inline |
Number of function registred in this array.