LIEF: Library to Instrument Executable Formats Version 0.15.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
LIEF::ELF::DynamicEntryFlags Class Reference
Inheritance diagram for LIEF::ELF::DynamicEntryFlags:
Inheritance graph
[legend]
Collaboration diagram for LIEF::ELF::DynamicEntryFlags:
Collaboration graph
[legend]

Public Types

enum class  FLAG : uint64_t {
  ORIGIN = 0x00000001 , SYMBOLIC = 0x00000002 , TEXTREL = 0x00000004 , BIND_NOW = 0x00000008 ,
  STATIC_TLS = 0x00000010 , NOW = BASE + 0x000000001 , GLOBAL = BASE + 0x000000002 , GROUP = BASE + 0x000000004 ,
  NODELETE = BASE + 0x000000008 , LOADFLTR = BASE + 0x000000010 , INITFIRST = BASE + 0x000000020 , NOOPEN = BASE + 0x000000040 ,
  HANDLE_ORIGIN = BASE + 0x000000080 , DIRECT = BASE + 0x000000100 , TRANS = BASE + 0x000000200 , INTERPOSE = BASE + 0x000000400 ,
  NODEFLIB = BASE + 0x000000800 , NODUMP = BASE + 0x000001000 , CONFALT = BASE + 0x000002000 , ENDFILTEE = BASE + 0x000004000 ,
  DISPRELDNE = BASE + 0x000008000 , DISPRELPND = BASE + 0x000010000 , NODIRECT = BASE + 0x000020000 , IGNMULDEF = BASE + 0x000040000 ,
  NOKSYMS = BASE + 0x000080000 , NOHDR = BASE + 0x000100000 , EDITED = BASE + 0x000200000 , NORELOC = BASE + 0x000400000 ,
  SYMINTPOSE = BASE + 0x000800000 , GLOBAUDIT = BASE + 0x001000000 , SINGLETON = BASE + 0x002000000 , PIE = BASE + 0x008000000 ,
  KMOD = BASE + 0x010000000 , WEAKFILTER = BASE + 0x020000000 , NOCOMMON = BASE + 0x040000000
}
 
using flags_list_t = std::vector<FLAG>
 
- 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 = 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 = MIPS_DISC + 0x7000002A , 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
}
 
- 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

DynamicEntryFlagsoperator= (const DynamicEntryFlags &)=default
 
 DynamicEntryFlags (const DynamicEntryFlags &)=default
 
std::unique_ptr< DynamicEntryclone () const override
 
bool has (FLAG f) const
 If the current entry has the given FLAG.
 
flags_list_t flags () const
 Return flags as a list of integers.
 
void add (FLAG f)
 Add the given FLAG.
 
void remove (FLAG f)
 Remove the given FLAG.
 
DynamicEntryFlagsoperator+= (FLAG f)
 
DynamicEntryFlagsoperator-= (FLAG f)
 
void accept (Visitor &visitor) const override
 
std::ostream & print (std::ostream &os) const override
 
 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 (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
 
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)
 
- Public Member Functions inherited from LIEF::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
 

Static Public Member Functions

static DynamicEntryFlags create_dt_flag (uint64_t value)
 
static DynamicEntryFlags create_dt_flag_1 (uint64_t value)
 
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 uint64_t BASE = 0x100000000
 
- 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
 

Member Enumeration Documentation

◆ FLAG

enum class LIEF::ELF::DynamicEntryFlags::FLAG : uint64_t
strong
Enumerator
ORIGIN 

The object may reference $ORIGIN.

SYMBOLIC 

Search the shared lib before searching the exe.

TEXTREL 

Relocations may modify a non-writable segment.

BIND_NOW 

Process all relocations on load.

STATIC_TLS 

Reject attempts to load dynamically.

NOW 

Set RTLD_NOW for this object.

GLOBAL 

Set RTLD_GLOBAL for this object.

GROUP 

Set RTLD_GROUP for this object.

NODELETE 

Set RTLD_NODELETE for this object.

LOADFLTR 

Trigger filtee loading at runtime.

INITFIRST 

Set RTLD_INITFIRST for this object.

NOOPEN 

Set RTLD_NOOPEN for this object.

HANDLE_ORIGIN 

$ORIGIN must be handled.

DIRECT 

Direct binding enabled.

INTERPOSE 

Object is used to interpose.

NODEFLIB 

Ignore default lib search path.

NODUMP 

Object can't be dldump'ed.

CONFALT 

Configuration alternative created.

ENDFILTEE 

Filtee terminates filters search.

DISPRELDNE 

Disp reloc applied at build time.

DISPRELPND 

Disp reloc applied at run-time.

NODIRECT 

Object has no-direct binding.

EDITED 

Object is modified after built.

SYMINTPOSE 

Object has individual interposers.

GLOBAUDIT 

Global auditing required.

SINGLETON 

Singleton symbols are used.

PIE 

Singleton symbols are used.

Member Function Documentation

◆ accept()

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

Reimplemented from LIEF::ELF::DynamicEntry.

◆ clone()

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

Reimplemented from LIEF::ELF::DynamicEntry.

◆ print()

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

Reimplemented from LIEF::ELF::DynamicEntry.


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