Go to the documentation of this file.
16#ifndef LIEF_ELF_NOTE_ABI_H
17#define LIEF_ELF_NOTE_ABI_H
31 public:
enum class ABI {
41 };
using version_t = std::array<uint32_t, 3>;
45 static constexpr size_t abi_offset = 0;
46 static constexpr size_t abi_size =
sizeof(uint32_t);
48 static constexpr size_t version_offset = abi_size;
49 static constexpr size_t version_size = 3 *
sizeof(uint32_t);
54 std::unique_ptr<Note>
clone()
const override {
55 return std::unique_ptr<Note>(
new NoteAbi(*
this));
57 result<version_t>
version()
const;
60 result<ABI>
abi()
const;
67 void dump(std::ostream& os)
const override;
69 void accept(Visitor& visitor)
const override;
72 return note->
type() == Note::TYPE::GNU_ABI_TAG;
77 return sizeof(uint32_t) + 3 *
sizeof(uint32_t);
83 std::ostream&
operator<<(std::ostream& os,
const NoteAbi& note) {
Class that wraps the NT_GNU_ABI_TAG note.
Definition NoteAbi.hpp:30
void version(const version_t &version)
std::unique_ptr< Note > clone() const override
Clone the current note and keep its polymorphic type.
Definition NoteAbi.hpp:54
void accept(Visitor &visitor) const override
~NoteAbi() override=default
void dump(std::ostream &os) const override
result< ABI > abi() const
Return the ABI or an error if it can't be parsed.
static constexpr uint8_t description_size()
Definition NoteAbi.hpp:76
friend std::ostream & operator<<(std::ostream &os, const NoteAbi ¬e)
Definition NoteAbi.hpp:83
static bool classof(const Note *note)
Definition NoteAbi.hpp:71
result< version_t > version() const
Return the version or an error if it can't be parsed.
ABI
ABI recognized by this note.
Definition NoteAbi.hpp:33
Class which represents an ELF note. This class can be instantiated using the static Note::create func...
Definition Note.hpp:39
TYPE type() const
Return the type of the note. This type does not match the NT_ type value. For accessing the original ...
Definition Note.hpp:195
Namespace related to the LIEF's ELF module.
Definition Abstract/Header.hpp:28
const char * to_string(DynamicEntry::TAG e)
LIEF namespace.
Definition Abstract/Binary.hpp:36
#define LIEF_API
Definition visibility.h:41