LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LIEF::ELF::DynamicEntryArray Class Reference

Class that represent an Array in the dynamic table. This entry is associated with constructors: More...

#include <DynamicEntryArray.hpp>

Inheritance diagram for LIEF::ELF::DynamicEntryArray:
Collaboration diagram for LIEF::ELF::DynamicEntryArray:

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_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 , IA_64_PLT_RESERVE = IA_64_DISC + (0x70000000 + 0) , IA_64_VMS_SUBTYPE = IA_64_DISC + (0x60000000 + 0) , IA_64_VMS_IMGIOCNT = IA_64_DISC + (0x60000000 + 2) ,
  IA_64_VMS_LNKFLAGS = IA_64_DISC + (0x60000000 + 8) , IA_64_VMS_VIR_MEM_BLK_SIZ = IA_64_DISC + (0x60000000 + 10) , IA_64_VMS_IDENT = IA_64_DISC + (0x60000000 + 12) , IA_64_VMS_NEEDED_IDENT = IA_64_DISC + (0x60000000 + 16) ,
  IA_64_VMS_IMG_RELA_CNT = IA_64_DISC + (0x60000000 + 18) , IA_64_VMS_SEG_RELA_CNT = IA_64_DISC + (0x60000000 + 20) , IA_64_VMS_FIXUP_RELA_CNT = IA_64_DISC + (0x60000000 + 22) , IA_64_VMS_FIXUP_NEEDED = IA_64_DISC + (0x60000000 + 24) ,
  IA_64_VMS_SYMVEC_CNT = IA_64_DISC + (0x60000000 + 26) , IA_64_VMS_XLATED = IA_64_DISC + (0x60000000 + 30) , IA_64_VMS_STACKSIZE = IA_64_DISC + (0x60000000 + 32) , IA_64_VMS_UNWINDSZ = IA_64_DISC + (0x60000000 + 34) ,
  IA_64_VMS_UNWIND_CODSEG = IA_64_DISC + (0x60000000 + 36) , IA_64_VMS_UNWIND_INFOSEG = IA_64_DISC + (0x60000000 + 38) , IA_64_VMS_LINKTIME = IA_64_DISC + (0x60000000 + 40) , IA_64_VMS_SEG_NO = IA_64_DISC + (0x60000000 + 42) ,
  IA_64_VMS_SYMVEC_OFFSET = IA_64_DISC + (0x60000000 + 44) , IA_64_VMS_SYMVEC_SEG = IA_64_DISC + (0x60000000 + 46) , IA_64_VMS_UNWIND_OFFSET = IA_64_DISC + (0x60000000 + 48) , IA_64_VMS_UNWIND_SEG = IA_64_DISC + (0x60000000 + 50) ,
  IA_64_VMS_STRTAB_OFFSET = IA_64_DISC + (0x60000000 + 52) , IA_64_VMS_SYSVER_OFFSET = IA_64_DISC + (0x60000000 + 54) , IA_64_VMS_IMG_RELA_OFF = IA_64_DISC + (0x60000000 + 56) , IA_64_VMS_SEG_RELA_OFF = IA_64_DISC + (0x60000000 + 58) ,
  IA_64_VMS_FIXUP_RELA_OFF = IA_64_DISC + (0x60000000 + 60) , IA_64_VMS_PLTGOT_OFFSET = IA_64_DISC + (0x60000000 + 62) , IA_64_VMS_PLTGOT_SEG = IA_64_DISC + (0x60000000 + 64) , IA_64_VMS_FPMODE = IA_64_DISC + (0x60000000 + 66)
}
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)
DynamicEntryArrayoperator= (const DynamicEntryArray &)=default
 DynamicEntryArray (const DynamicEntryArray &)=default
std::unique_ptr< DynamicEntryclone () const override
array_tarray ()
 Return the array values (list of pointers).
const array_tarray () const
void array (const array_t &array)
DynamicEntryArrayinsert (size_t pos, uint64_t function)
 Insert the given function at pos.
DynamicEntryArrayappend (uint64_t function)
 Append the given function.
DynamicEntryArrayremove (uint64_t function)
 Remove the given function.
size_t size () const
 Number of function registred in this array.
DynamicEntryArrayoperator+= (uint64_t value)
DynamicEntryArrayoperator-= (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)
DynamicEntryoperator= (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)
std::string to_string () const
template<class T>
const T * cast () const
template<class T>
T * cast ()
Public Member Functions inherited from LIEF::Object
 Object ()
 Object (const Object &other)
Objectoperator= (const Object &other)
 Object (Object &&other) noexcept=default
Objectoperator= (Object &&other) noexcept=default
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)
static std::unique_ptr< DynamicEntrycreate (TAG tag, uint64_t value)
static std::unique_ptr< DynamicEntrycreate (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
static constexpr uint64_t IA_64_DISC = 0x800000000

Detailed Description

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.

Member Typedef Documentation

◆ array_t

using LIEF::ELF::DynamicEntryArray::array_t = std::vector<uint64_t>

Constructor & Destructor Documentation

◆ DynamicEntryArray() [1/3]

LIEF::ELF::DynamicEntryArray::DynamicEntryArray ( )
delete

◆ DynamicEntryArray() [2/3]

LIEF::ELF::DynamicEntryArray::DynamicEntryArray ( DynamicEntry::TAG tag,
array_t array )
inline

◆ DynamicEntryArray() [3/3]

LIEF::ELF::DynamicEntryArray::DynamicEntryArray ( const DynamicEntryArray & )
default

References DynamicEntryArray().

◆ ~DynamicEntryArray()

LIEF::ELF::DynamicEntryArray::~DynamicEntryArray ( )
overridedefault

Member Function Documentation

◆ accept()

void LIEF::ELF::DynamicEntryArray::accept ( Visitor & visitor) const
overridevirtual

Reimplemented from LIEF::ELF::DynamicEntry.

◆ append()

DynamicEntryArray & LIEF::ELF::DynamicEntryArray::append ( uint64_t function)
inline

Append the given function.

References DynamicEntryArray().

Referenced by operator+=().

◆ array() [1/3]

array_t & LIEF::ELF::DynamicEntryArray::array ( )
inline

Return the array values (list of pointers).

Referenced by array(), and DynamicEntryArray().

◆ array() [2/3]

const array_t & LIEF::ELF::DynamicEntryArray::array ( ) const
inline

◆ array() [3/3]

void LIEF::ELF::DynamicEntryArray::array ( const array_t & array)
inline

References array().

◆ classof()

◆ clone()

std::unique_ptr< DynamicEntry > LIEF::ELF::DynamicEntryArray::clone ( ) const
inlineoverridevirtual

Reimplemented from LIEF::ELF::DynamicEntry.

References DynamicEntryArray().

◆ DynamicEntry() [1/5]

LIEF::ELF::DynamicEntry::DynamicEntry ( )
default

Referenced by classof(), and DynamicEntryArray().

◆ DynamicEntry() [2/5]

LIEF::ELF::DynamicEntry::DynamicEntry ( const details::Elf32_Dyn & header,
ARCH arch )

◆ DynamicEntry() [3/5]

LIEF::ELF::DynamicEntry::DynamicEntry ( const details::Elf64_Dyn & header,
ARCH arch )

◆ DynamicEntry() [4/5]

LIEF::ELF::DynamicEntry::DynamicEntry ( const DynamicEntry & )
default

◆ DynamicEntry() [5/5]

LIEF::ELF::DynamicEntry::DynamicEntry ( TAG tag,
uint64_t value )
inline

◆ insert()

DynamicEntryArray & LIEF::ELF::DynamicEntryArray::insert ( size_t pos,
uint64_t function )

Insert the given function at pos.

References DynamicEntryArray().

◆ operator+=()

DynamicEntryArray & LIEF::ELF::DynamicEntryArray::operator+= ( uint64_t value)
inline

◆ operator-=()

DynamicEntryArray & LIEF::ELF::DynamicEntryArray::operator-= ( uint64_t value)
inline

◆ operator=()

DynamicEntryArray & LIEF::ELF::DynamicEntryArray::operator= ( const DynamicEntryArray & )
default

References DynamicEntryArray().

◆ operator[]() [1/2]

uint64_t & LIEF::ELF::DynamicEntryArray::operator[] ( size_t idx)

◆ operator[]() [2/2]

const uint64_t & LIEF::ELF::DynamicEntryArray::operator[] ( size_t idx) const

◆ print()

std::ostream & LIEF::ELF::DynamicEntryArray::print ( std::ostream & os) const
overridevirtual

Reimplemented from LIEF::ELF::DynamicEntry.

◆ remove()

DynamicEntryArray & LIEF::ELF::DynamicEntryArray::remove ( uint64_t function)

Remove the given function.

References DynamicEntryArray().

Referenced by operator-=().

◆ size()

size_t LIEF::ELF::DynamicEntryArray::size ( ) const
inline

Number of function registred in this array.


The documentation for this class was generated from the following file: