LIEF: Library to Instrument Executable Formats Version
Loading...
Searching...
No Matches
Public Member Functions | List of all members
LIEF::ELF::Symbol Class Reference

Class which represents an ELF symbol. More...

#include <Symbol.hpp>

Inheritance diagram for LIEF::ELF::Symbol:
Inheritance graph
[legend]
Collaboration diagram for LIEF::ELF::Symbol:
Collaboration graph
[legend]

Public Member Functions

 Symbol (const details::Elf32_Sym &header, ARCH arch)
 
 Symbol (const details::Elf64_Sym &header, ARCH arch)
 
 Symbol (std::string name, ELF_SYMBOL_TYPES type=ELF_SYMBOL_TYPES::STT_NOTYPE, SYMBOL_BINDINGS binding=SYMBOL_BINDINGS::STB_WEAK, uint8_t other=0, uint16_t shndx=0, uint64_t value=0, uint64_t size=0)
 
Symboloperator= (Symbol other)
 
 Symbol (const Symbol &other)
 
void swap (Symbol &other)
 
ELF_SYMBOL_TYPES type () const
 The symbol's type provides a general classification for the associated entity.
 
SYMBOL_BINDINGS 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.
 
ELF_SYMBOL_VISIBILITY visibility () const
 Symbol visibility.
 
Sectionsection ()
 Section associated with the symbol or a nullptr if it does not exist.
 
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 .
 
SymbolVersionsymbol_version ()
 Return the SymbolVersion associated with this symbol. If there is no symbol version, return a nullptr.
 
const SymbolVersionsymbol_version () const
 
std::string demangled_name () const
 Symbol's unmangled name. If not available, it returns an empty string.
 
void type (ELF_SYMBOL_TYPES type)
 
void binding (SYMBOL_BINDINGS binding)
 
void other (uint8_t other)
 
void visibility (ELF_SYMBOL_VISIBILITY visibility)
 
void information (uint8_t info)
 
void shndx (uint16_t idx)
 
void value (uint64_t value) override
 
void size (uint64_t size) override
 
void shndx (SYMBOL_SECTION_INDEX idx)
 
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 (std::string name)
 
 Symbol (std::string name, uint64_t value)
 
 Symbol (std::string name, uint64_t value, uint64_t size)
 
 Symbol (const Symbol &)
 
Symboloperator= (const Symbol &)
 
void swap (Symbol &other)
 
virtual const std::string & name () const
 Return the symbol's name.
 
virtual std::string & name ()
 
virtual void name (const 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 (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
 

Additional Inherited Members

- 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 > > >
 

Detailed Description

Class which represents an ELF symbol.

Member Function Documentation

◆ accept()

void LIEF::ELF::Symbol::accept ( Visitor visitor) const
overridevirtual

Implements LIEF::Object.

◆ shndx()

uint16_t LIEF::ELF::Symbol::shndx ( ) const

◆ size() [1/2]

uint64_t LIEF::ELF::Symbol::size ( ) const
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.

◆ size() [2/2]

void LIEF::ELF::Symbol::size ( uint64_t  size)
inlineoverridevirtual

Reimplemented from LIEF::Symbol.

◆ value() [1/2]

uint64_t LIEF::ELF::Symbol::value ( ) const
inlineoverridevirtual

This member has slightly different interpretations:

  • In relocatable files, value holds alignment constraints for a symbol for which section index is SHN_COMMON
  • In relocatable files, value holds a section offset for a defined symbol. That is, value is an offset from the beginning of the section associated with this symbol.
  • In executable and shared object files, value holds a virtual address. To make these files's symbols more useful for the dynamic linker, the section offset (file interpretation) gives way to a virtual address (memory interpretation) for which the section number is irrelevant.

Reimplemented from LIEF::Symbol.

◆ value() [2/2]

void LIEF::ELF::Symbol::value ( uint64_t  value)
inlineoverridevirtual

Reimplemented from LIEF::Symbol.


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