LIEF: Library to Instrument Executable Formats Version 0.17.0
|
Class which represents an ELF note. This class can be instantiated using the static Note::create functions. More...
#include <Note.hpp>
Public Member Functions | |
Note & | operator= (const Note ©)=default |
Note (const Note ©)=default | |
~Note () override=default | |
virtual std::unique_ptr< Note > | clone () const |
Clone the current note and keep its polymorphic type. | |
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. | |
virtual void | dump (std::ostream &os) const |
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) | |
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 result< TYPE > | convert_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 ¬e) |
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< Note > | create (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< Note > | create (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< Note > | create (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. | |
Class which represents an ELF note. This class can be instantiated using the static Note::create functions.
using LIEF::ELF::Note::description_t = std::vector<uint8_t> |
Container used to handle the description data.
|
strong |
LIEF representation of the ELF NT_
values.
Enumerator | |
---|---|
UNKNOWN | |
GNU_ABI_TAG | Match See: NoteAbi |
GNU_HWCAP | Match |
GNU_BUILD_ID | Match |
GNU_GOLD_VERSION | Match |
GNU_PROPERTY_TYPE_0 | Match |
GNU_BUILD_ATTRIBUTE_OPEN | |
GNU_BUILD_ATTRIBUTE_FUNC | |
CRASHPAD | Crashpad note used by the Chromium project. |
CORE_PRSTATUS | Coredump that wraps the |
CORE_FPREGSET | |
CORE_PRPSINFO | Coredump that wraps the See: CorePrPsInfo |
CORE_TASKSTRUCT | |
CORE_AUXV | Coredump that contains a copy of all the auxiliary vectors (auxv) See: CoreAuxv |
CORE_PSTATUS | |
CORE_FPREGS | Coredump that wraps the |
CORE_PSINFO | Coredump that wraps the |
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 | Note that is specific to Android and that describes information such as the NDK version or the SDK build number. See AndroidIdent |
ANDROID_MEMTAG | |
ANDROID_KUSER | |
GO_BUILDID | Note specific to Go binaries. |
STAPSDT | Note for SystemTap probes. |
QNX_STACK | QNX Note. |
|
default |
|
overridedefault |
|
overridevirtual |
Implements LIEF::Object.
Reimplemented in LIEF::ELF::NoteAbi, LIEF::ELF::NoteGnuProperty, and LIEF::ELF::QNXStack.
|
inline |
|
inline |
|
inlinevirtual |
Clone the current note and keep its polymorphic type.
Reimplemented in LIEF::ELF::AndroidIdent, LIEF::ELF::CoreAuxv, LIEF::ELF::CoreFile, LIEF::ELF::CorePrPsInfo, LIEF::ELF::CorePrStatus, LIEF::ELF::CoreSigInfo, LIEF::ELF::NoteAbi, LIEF::ELF::NoteGnuProperty, and LIEF::ELF::QNXStack.
|
static |
Convert the raw integer note type into a TYPE according to the owner.
|
static |
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.
|
static |
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 |
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.
|
inline |
|
inline |
Return the description associated with the note.
|
inline |
Change the description of the note.
|
virtual |
Reimplemented in LIEF::ELF::AndroidIdent, LIEF::ELF::CoreAuxv, LIEF::ELF::CoreFile, LIEF::ELF::CorePrPsInfo, LIEF::ELF::CorePrStatus, LIEF::ELF::CoreSigInfo, LIEF::ELF::NoteAbi, LIEF::ELF::NoteGnuProperty, and LIEF::ELF::QNXStack.
Referenced by operator<<.
|
inline |
Return the name of the note (also known as 'owner' )
|
inline |
References section_name(), and type().
|
inline |
The original NT_xxx
integer value. The meaning of this value likely depends on the owner of the note.
|
inline |
Return the section name in which the note is or should be stored.
Referenced by note_to_section().
uint64_t LIEF::ELF::Note::size | ( | ) | const |
Size of the raw note which includes padding.
|
inline |
Return the type of the note. This type does not match the NT_
type value. For accessing the original NT_
value, check original_type()
Referenced by LIEF::ELF::AndroidIdent::classof(), LIEF::ELF::CoreAuxv::classof(), LIEF::ELF::CoreFile::classof(), LIEF::ELF::CorePrPsInfo::classof(), LIEF::ELF::CorePrStatus::classof(), LIEF::ELF::CoreSigInfo::classof(), LIEF::ELF::NoteAbi::classof(), LIEF::ELF::NoteGnuProperty::classof(), LIEF::ELF::QNXStack::classof(), and note_to_section().
Try to determine the owner's name of the TYPE provided in parameter.