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

Class that represents a DT_RUNPATH wich is used by the loader to resolve libraries (DynamicEntryLibrary). More...

#include <DynamicEntryRunPath.hpp>

Inheritance diagram for LIEF::ELF::DynamicEntryRunPath:
Collaboration diagram for LIEF::ELF::DynamicEntryRunPath:

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.
 
DynamicEntryRunPathoperator= (const DynamicEntryRunPath &)=default
 
 DynamicEntryRunPath (const DynamicEntryRunPath &)=default
 
std::unique_ptr< DynamicEntryclone () 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)
 
DynamicEntryRunPathinsert (size_t pos, const std::string &path)
 Insert a path at the given position
 
DynamicEntryRunPathappend (const std::string &path)
 Append the given path
 
DynamicEntryRunPathremove (const std::string &path)
 Remove the given path
 
DynamicEntryRunPathoperator+= (std::string path)
 
DynamicEntryRunPathoperator-= (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)
 
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)
 

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

Detailed Description

Class that represents a DT_RUNPATH wich is used by the loader to resolve libraries (DynamicEntryLibrary).

Constructor & Destructor Documentation

◆ DynamicEntryRunPath() [1/4]

LIEF::ELF::DynamicEntryRunPath::DynamicEntryRunPath ( )
inline

◆ DynamicEntryRunPath() [2/4]

LIEF::ELF::DynamicEntryRunPath::DynamicEntryRunPath ( std::string runpath)
inline

Constructor from (run)path.

◆ DynamicEntryRunPath() [3/4]

LIEF::ELF::DynamicEntryRunPath::DynamicEntryRunPath ( const std::vector< std::string > & paths)
inline

Constructor from a list of paths.

◆ DynamicEntryRunPath() [4/4]

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

◆ ~DynamicEntryRunPath()

LIEF::ELF::DynamicEntryRunPath::~DynamicEntryRunPath ( )
default

Member Function Documentation

◆ accept()

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

Reimplemented from LIEF::ELF::DynamicEntry.

◆ append()

DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::append ( const std::string & path)

Append the given path

◆ classof()

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

◆ clone()

std::unique_ptr< DynamicEntry > LIEF::ELF::DynamicEntryRunPath::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()

DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::insert ( size_t pos,
const std::string & path )

Insert a path at the given position

◆ operator+=()

DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::operator+= ( std::string path)
inline

◆ operator-=()

DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::operator-= ( const std::string & path)
inline

◆ operator=()

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

◆ paths() [1/2]

std::vector< std::string > LIEF::ELF::DynamicEntryRunPath::paths ( ) const

Paths as a list.

◆ paths() [2/2]

void LIEF::ELF::DynamicEntryRunPath::paths ( const std::vector< std::string > & paths)

◆ print()

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

Reimplemented from LIEF::ELF::DynamicEntry.

◆ remove()

DynamicEntryRunPath & LIEF::ELF::DynamicEntryRunPath::remove ( const std::string & path)

Remove the given path

◆ runpath() [1/2]

const std::string & LIEF::ELF::DynamicEntryRunPath::runpath ( ) const
inline

Runpath raw value.

◆ runpath() [2/2]

void LIEF::ELF::DynamicEntryRunPath::runpath ( std::string runpath)
inline

Member Data Documentation

◆ delimiter

char LIEF::ELF::DynamicEntryRunPath::delimiter = ':'
staticconstexpr

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