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

Class representing core auxv object. More...

#include <CoreAuxv.hpp>

Inheritance diagram for LIEF::ELF::CoreAuxv:
Collaboration diagram for LIEF::ELF::CoreAuxv:

Public Types

enum class  TYPE {
  END = 0 , IGNORE , EXECFD , PHDR ,
  PHENT , PHNUM , PAGESZ , BASE ,
  FLAGS , ENTRY , NOTELF , UID ,
  EUID , GID , EGID , TGT_PLATFORM ,
  HWCAP , CLKTCK , FPUCW , DCACHEBSIZE ,
  ICACHEBSIZE , UCACHEBSIZE , IGNOREPPC , SECURE ,
  BASE_PLATFORM , RANDOM , HWCAP2 , EXECFN = 31 ,
  SYSINFO , SYSINFO_EHDR
}
 
- Public Types inherited from LIEF::ELF::Note
enum class  TYPE {
  UNKNOWN = 0 , GNU_ABI_TAG , GNU_HWCAP , GNU_BUILD_ID ,
  GNU_GOLD_VERSION , GNU_PROPERTY_TYPE_0 , GNU_BUILD_ATTRIBUTE_OPEN , GNU_BUILD_ATTRIBUTE_FUNC ,
  CRASHPAD , CORE_PRSTATUS , CORE_FPREGSET , CORE_PRPSINFO ,
  CORE_TASKSTRUCT , CORE_AUXV , CORE_PSTATUS , CORE_FPREGS ,
  CORE_PSINFO , CORE_LWPSTATUS , CORE_LWPSINFO , CORE_WIN32PSTATUS ,
  CORE_FILE , CORE_PRXFPREG , CORE_SIGINFO , CORE_ARM_VFP ,
  CORE_ARM_TLS , CORE_ARM_HW_BREAK , CORE_ARM_HW_WATCH , CORE_ARM_SYSTEM_CALL ,
  CORE_ARM_SVE , CORE_ARM_PAC_MASK , CORE_ARM_PACA_KEYS , CORE_ARM_PACG_KEYS ,
  CORE_TAGGED_ADDR_CTRL , CORE_PAC_ENABLED_KEYS , CORE_X86_TLS , CORE_X86_IOPERM ,
  CORE_X86_XSTATE , CORE_X86_CET , ANDROID_IDENT , ANDROID_MEMTAG ,
  ANDROID_KUSER , GO_BUILDID , STAPSDT , QNX_STACK
}
 LIEF representation of the ELF NT_ values. More...
 
using description_t = std::vector<uint8_t>
 Container used to handle the description data.
 
- 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

 CoreAuxv (ARCH arch, Header::CLASS cls, std::string name, uint32_t type, description_t description)
 
std::unique_ptr< Noteclone () const override
 Clone the current note and keep its polymorphic type.
 
std::map< TYPE, uint64_t > values () const
 A map of CoreAuxv::TYPE and the value.
 
result< uint64_t > get (TYPE type) const
 Return the value associated with the provided TYPE or a lief_errors::not_found if the type is not present.
 
result< uint64_t > operator[] (TYPE type) const
 
bool set (TYPE type, uint64_t value)
 
bool set (const std::map< TYPE, uint64_t > &values)
 
void dump (std::ostream &os) const override
 
void accept (Visitor &visitor) const override
 
 ~CoreAuxv () override=default
 
- Public Member Functions inherited from LIEF::ELF::Note
Noteoperator= (const Note &copy)=default
 
 Note (const Note &copy)=default
 
 ~Note () override=default
 
const std::string & name () const
 Return the name of the note (also known as 'owner' )
 
const std::string & section_name () const
 Return the section name in which the note is or should be stored.
 
TYPE type () const
 Return the type of the note. This type does not match the NT_ type value. For accessing the original NT_ value, check original_type()
 
uint32_t original_type () const
 The original NT_xxx integer value. The meaning of this value likely depends on the owner of the note.
 
span< const uint8_t > description () const
 Return the description associated with the note.
 
span< uint8_t > description ()
 
void name (std::string name)
 
void description (description_t description)
 Change the description of the note.
 
uint64_t size () const
 Size of the raw note which includes padding.
 
void accept (Visitor &visitor) const override
 
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 Note *note)
 
- Static Public Member Functions inherited from LIEF::ELF::Note
static result< TYPEconvert_type (Header::FILE_TYPE ftype, uint32_t type, const std::string &name)
 Convert the raw integer note type into a TYPE according to the owner.
 
static result< const char * > type_to_section (TYPE type)
 Try to determine the ELF section name associated with the TYPE provided in parameter.
 
static result< std::string > note_to_section (const Note &note)
 
static result< const char * > type_owner (TYPE type)
 Try to determine the owner's name of the TYPE provided in parameter.
 
static std::unique_ptr< Notecreate (const std::string &name, uint32_t type, description_t description, std::string section_name, Header::FILE_TYPE ftype=Header::FILE_TYPE::NONE, ARCH arch=ARCH::NONE, Header::CLASS cls=Header::CLASS::NONE)
 Create a new note from the given parameters. Additional information such as the architecture or the ELF class could be required for creating notes like Coredump notes.
 
static std::unique_ptr< Notecreate (const std::string &name, TYPE type, description_t description, std::string section_name, ARCH arch=ARCH::NONE, Header::CLASS cls=Header::CLASS::NONE)
 Create a new note from the given parameters. Additional information such as the architecture or the ELF class could be required for creating notes like Coredump notes.
 
static std::unique_ptr< Notecreate (BinaryStream &stream, std::string section_name, Header::FILE_TYPE ftype=Header::FILE_TYPE::NONE, ARCH arch=ARCH::NONE, Header::CLASS cls=Header::CLASS::NONE)
 Create a new note from the given stream. Additional information such as the architecture or the ELF class could be required for creating notes like Coredump notes.
 

Detailed Description

Class representing core auxv object.

Member Enumeration Documentation

◆ TYPE

enum class LIEF::ELF::CoreAuxv::TYPE
strong
Enumerator
END 

End of vector

IGNORE 

Entry should be ignored

EXECFD 

File descriptor of program

PHDR 

Program headers for program

PHENT 

Size of program header entry

PHNUM 

Number of program headers

PAGESZ 

System page size

BASE 

Base address of interpreter

FLAGS 

Flags

ENTRY 

Entry point of program

NOTELF 

Program is not ELF

UID 

Real uid

EUID 

Effective uid

GID 

Real gid

EGID 

Effective gid

TGT_PLATFORM 

String identifying platform.

HWCAP 

Machine dependent hints about processor capabilities.

CLKTCK 

Frequency of times()

FPUCW 

Used FPU control word.

DCACHEBSIZE 

Data cache block size.

ICACHEBSIZE 

Instruction cache block size.

UCACHEBSIZE 

Instruction cache block size.

IGNOREPPC 

Entry should be ignored.

SECURE 

Boolean, was exec setuid-like?.

BASE_PLATFORM 

String identifying real platform

RANDOM 

Address of 16 random bytes

HWCAP2 

Extension of AT_HWCAP

EXECFN 

Filename of executable

SYSINFO 

Filename of executable

SYSINFO_EHDR 

Pointer to ELF header of system-supplied DSO.

Constructor & Destructor Documentation

◆ CoreAuxv()

LIEF::ELF::CoreAuxv::CoreAuxv ( ARCH arch,
Header::CLASS cls,
std::string name,
uint32_t type,
description_t description )
inline

◆ ~CoreAuxv()

LIEF::ELF::CoreAuxv::~CoreAuxv ( )
overridedefault

Member Function Documentation

◆ accept()

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

Implements LIEF::Object.

◆ classof()

static bool LIEF::ELF::CoreAuxv::classof ( const Note * note)
inlinestatic

◆ clone()

std::unique_ptr< Note > LIEF::ELF::CoreAuxv::clone ( ) const
inlineoverridevirtual

Clone the current note and keep its polymorphic type.

Reimplemented from LIEF::ELF::Note.

◆ dump()

void LIEF::ELF::CoreAuxv::dump ( std::ostream & os) const
overridevirtual

Reimplemented from LIEF::ELF::Note.

Referenced by operator<<.

◆ get()

result< uint64_t > LIEF::ELF::CoreAuxv::get ( TYPE type) const

Return the value associated with the provided TYPE or a lief_errors::not_found if the type is not present.

◆ operator[]()

result< uint64_t > LIEF::ELF::CoreAuxv::operator[] ( TYPE type) const
inline

◆ set() [1/2]

bool LIEF::ELF::CoreAuxv::set ( const std::map< TYPE, uint64_t > & values)

◆ set() [2/2]

bool LIEF::ELF::CoreAuxv::set ( TYPE type,
uint64_t value )

◆ values()

std::map< TYPE, uint64_t > LIEF::ELF::CoreAuxv::values ( ) const

A map of CoreAuxv::TYPE and the value.


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