|
LIEF: Library to Instrument Executable Formats Version 1.0.0
|
Class which represents an ELF symbol. More...
#include <Symbol.hpp>


Public Types | |
| enum class | BINDING { LOCAL = 0 , GLOBAL = 1 , WEAK = 2 , GNU_UNIQUE = 10 } |
| enum class | TYPE { NOTYPE = 0 , OBJECT = 1 , FUNC = 2 , SECTION = 3 , FILE = 4 , COMMON = 5 , TLS = 6 , GNU_IFUNC = 10 } |
| Type of the symbol. This enum matches the STT_xxx values of the ELF specs. More... | |
| enum class | VISIBILITY { DEFAULT = 0 , INTERNAL = 1 , HIDDEN = 2 , PROTECTED = 3 } |
| Visibility of the symbol. This enum matches the STV_xxx values of the official ELF specs. More... | |
| enum | SECTION_INDEX { UNDEF = 0 , ABS = 0xfff1 , COMMON = 0xfff2 } |
| Special section indices. More... | |
| 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 | |
| Symbol (std::string name) | |
| Symbol ()=default | |
| ~Symbol () override=default | |
| Symbol & | operator= (Symbol other) |
| Symbol (const Symbol &other) | |
| void | swap (Symbol &other) |
| TYPE | type () const |
| The symbol's type provides a general classification for the associated entity. | |
| BINDING | binding () const |
| The symbol's binding determines the linkage visibility and behavior. | |
| uint8_t | information () const |
| This member specifies the symbol's type and binding attributes. | |
| uint8_t | other () const |
| Alias for visibility(). | |
| uint16_t | section_idx () const |
| ELF::Section index associated with the symbol. | |
| VISIBILITY | visibility () const |
| Symbol visibility. | |
| Section * | section () |
| Section associated with the symbol or a nullptr if it does not exist. | |
| const Section * | section () const |
| uint64_t | value () const override |
| This member has slightly different interpretations: | |
| uint64_t | size () const override |
| Symbol size. | |
| uint16_t | shndx () const |
| bool | has_version () const |
| Check if this symbols has a symbol version . | |
| SymbolVersion * | symbol_version () |
| Return the SymbolVersion associated with this symbol. If there is no symbol version, return a nullptr. | |
| const SymbolVersion * | symbol_version () const |
| bool | is_local () const |
| bool | is_global () const |
| bool | is_weak () const |
| std::string | demangled_name () const |
| Symbol's unmangled name. If not available, it returns an empty string. | |
| void | type (TYPE type) |
| void | binding (BINDING binding) |
| void | other (uint8_t other) |
| void | visibility (VISIBILITY visibility) |
| void | information (uint8_t info) |
| void | shndx (uint16_t idx) |
| void | value (uint64_t value) override |
| void | size (uint64_t size) override |
| bool | is_exported () const |
| Check if the current symbol is exported. | |
| void | set_exported (bool flag=true) |
| Set whether or not the symbol is exported. | |
| bool | is_imported () const |
| Check if the current symbol is imported. | |
| void | set_imported (bool flag=true) |
| Set whether or not the symbol is imported. | |
| bool | is_static () const |
| True if the symbol is a static one. | |
| bool | is_function () const |
| True if the symbol represent a function. | |
| bool | is_variable () const |
| True if the symbol represent a variable. | |
| void | accept (Visitor &visitor) const override |
| Public Member Functions inherited from LIEF::Symbol | |
| Symbol ()=default | |
| Symbol (std::string name) | |
| Symbol (std::string name, uint64_t value) | |
| Symbol (std::string name, uint64_t value, uint64_t size) | |
| Symbol (const Symbol &)=default | |
| Symbol & | operator= (const Symbol &)=default |
| Symbol (Symbol &&)=default | |
| Symbol & | operator= (Symbol &&)=default |
| ~Symbol () override=default | |
| void | swap (Symbol &other) noexcept |
| virtual const std::string & | name () const |
| Return the symbol's name. | |
| virtual std::string & | name () |
| virtual void | name (std::string name) |
| Set symbol name. | |
| void | accept (Visitor &visitor) const override |
| Method so that the visitor can visit us. | |
| Public Member Functions inherited from LIEF::Object | |
| Object () | |
| Object (const Object &other) | |
| Object & | operator= (const Object &other) |
| Object (Object &&other) noexcept=default | |
| Object & | operator= (Object &&other) noexcept=default |
| 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 BINDING | binding_from (uint32_t value, ARCH) |
| static TYPE | type_from (uint32_t value, ARCH) |
| static uint8_t | to_value (BINDING binding) |
| static uint8_t | to_value (TYPE type) |
Class which represents an ELF symbol.
|
strong |
|
strong |
Type of the symbol. This enum matches the STT_xxx values of the ELF specs.
| Enumerator | |
|---|---|
| NOTYPE | Symbol's type is not specified. |
| OBJECT | Symbol is a data object (variable, array, etc.). |
| FUNC | Symbol is executable code (function, etc.). |
| SECTION | Symbol refers to a section. |
| FILE | Local, absolute symbol that refers to a file. |
| COMMON | An uninitialized common block. |
| TLS | Thread local data object. |
| GNU_IFUNC | GNU indirect function. |
|
strong |
Visibility of the symbol. This enum matches the STV_xxx values of the official ELF specs.
|
inline |
References LIEF::Symbol::name(), and Symbol().
Referenced by operator<<, operator=(), swap(), Symbol(), and Symbol().
|
default |
|
overridedefault |
|
overridevirtual |
Implements LIEF::Object.
|
inline |
The symbol's binding determines the linkage visibility and behavior.
Referenced by binding(), is_global(), is_local(), is_static(), is_weak(), and to_value().
| std::string LIEF::ELF::Symbol::demangled_name | ( | ) | const |
Symbol's unmangled name. If not available, it returns an empty string.
|
inline |
Check if this symbols has a symbol version .
| uint8_t LIEF::ELF::Symbol::information | ( | ) | const |
This member specifies the symbol's type and binding attributes.
| void LIEF::ELF::Symbol::information | ( | uint8_t | info | ) |
| bool LIEF::ELF::Symbol::is_exported | ( | ) | const |
Check if the current symbol is exported.
|
inline |
| bool LIEF::ELF::Symbol::is_imported | ( | ) | const |
Check if the current symbol is imported.
|
inline |
|
inline |
|
inline |
Alias for visibility().
Referenced by operator=(), other(), swap(), and Symbol().
|
inline |
References other().
|
inline |
Section associated with the symbol or a nullptr if it does not exist.
|
inline |
|
inline |
ELF::Section index associated with the symbol.
References shndx().
| void LIEF::ELF::Symbol::set_exported | ( | bool | flag = true | ) |
Set whether or not the symbol is exported.
| void LIEF::ELF::Symbol::set_imported | ( | bool | flag = true | ) |
Set whether or not the symbol is imported.
|
inline |
Referenced by section_idx().
|
inline |
|
inlineoverridevirtual |
Symbol size.
Many symbols have associated sizes. For example, a data object's size is the number of bytes contained in the object. This member holds 0 if the symbol has no size or an unknown size.
Reimplemented from LIEF::Symbol.
Referenced by size().
|
inlineoverridevirtual |
Reimplemented from LIEF::Symbol.
References size().
|
inline |
Return the SymbolVersion associated with this symbol. If there is no symbol version, return a nullptr.
|
inline |
|
inline |
The symbol's type provides a general classification for the associated entity.
Referenced by is_function(), is_variable(), to_value(), and type().
|
inlineoverridevirtual |
This member has slightly different interpretations:
Reimplemented from LIEF::Symbol.
Referenced by binding_from(), type_from(), and value().
|
inlineoverridevirtual |
Reimplemented from LIEF::Symbol.
References value().
|
inline |
Symbol visibility.
Referenced by visibility().
|
inline |
References visibility().