LIEF: Library to Instrument Executable Formats Version 0.16.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_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)
 
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)
 
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)
 
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
 

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

◆ ~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.

◆ array() [1/3]

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

Return the array values (list of pointers)

◆ 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

◆ classof()

static bool LIEF::ELF::DynamicEntryArray::classof ( const DynamicEntry * entry)
inlinestatic

◆ clone()

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

Reimplemented from LIEF::ELF::DynamicEntry.

◆ DynamicEntry() [1/5]

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

◆ 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

◆ 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

◆ 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.

◆ 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: