LIEF: Library to Instrument Executable Formats Version 0.16.0
|
Class that represents a DT_RUNPATH
wich is used by the loader to resolve libraries (DynamicEntryLibrary).
More...
#include <DynamicEntryRunPath.hpp>
Public Member Functions | |
DynamicEntryRunPath () | |
DynamicEntryRunPath (std::string runpath) | |
Constructor from (run)path. | |
DynamicEntryRunPath (const std::vector< std::string > &paths) | |
Constructor from a list of paths. | |
DynamicEntryRunPath & | operator= (const DynamicEntryRunPath &)=default |
DynamicEntryRunPath (const DynamicEntryRunPath &)=default | |
std::unique_ptr< DynamicEntry > | clone () const override |
const std::string & | runpath () const |
Runpath raw value. | |
void | runpath (std::string runpath) |
std::vector< std::string > | paths () const |
Paths as a list. | |
void | paths (const std::vector< std::string > &paths) |
DynamicEntryRunPath & | insert (size_t pos, const std::string &path) |
Insert a path at the given position | |
DynamicEntryRunPath & | append (const std::string &path) |
Append the given path | |
DynamicEntryRunPath & | remove (const std::string &path) |
Remove the given path | |
DynamicEntryRunPath & | operator+= (std::string path) |
DynamicEntryRunPath & | operator-= (const std::string &path) |
void | accept (Visitor &visitor) const override |
std::ostream & | print (std::ostream &os) const override |
~DynamicEntryRunPath ()=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) |
Static Public Attributes | |
static constexpr char | delimiter = ':' |
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 |
Additional Inherited Members | |
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>>> |
Class that represents a DT_RUNPATH
wich is used by the loader to resolve libraries (DynamicEntryLibrary).
|
inline |
|
inline |
Constructor from (run)path.
|
inline |
Constructor from a list of paths.
|
default |
|
default |
|
overridevirtual |
Reimplemented from LIEF::ELF::DynamicEntry.
DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::append | ( | const std::string & | path | ) |
Append the given path
|
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 |
DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::insert | ( | size_t | pos, |
const std::string & | path ) |
Insert a path
at the given position
|
inline |
|
inline |
|
default |
std::vector< std::string > LIEF::ELF::DynamicEntryRunPath::paths | ( | ) | const |
Paths as a list.
void LIEF::ELF::DynamicEntryRunPath::paths | ( | const std::vector< std::string > & | paths | ) |
|
overridevirtual |
Reimplemented from LIEF::ELF::DynamicEntry.
DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::remove | ( | const std::string & | path | ) |
Remove the given path
|
inline |
Runpath raw value.
|
inline |
|
staticconstexpr |