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

Class that represents a Symbol in a Mach-O file. More...

#include <Symbol.hpp>

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

Public Types

enum class  CATEGORY {
  NONE = 0 , LOCAL , EXTERNAL , UNDEFINED ,
  INDIRECT_ABS , INDIRECT_LOCAL
}
 Category of the symbol when the symbol comes from the LC_SYMTAB command. The category is defined according to the LC_DYSYMTAB (DynamicSymbolCommand) command.
 
- 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 (const details::nlist_32 &cmd)
 
 Symbol (const details::nlist_64 &cmd)
 
Symboloperator= (Symbol other)
 
 Symbol (const Symbol &other)
 
void swap (Symbol &other)
 
uint8_t type () const
 
uint8_t numberof_sections () const
 It returns the number of sections in which this symbol can be found. If the symbol can't be found in any section, it returns 0 (NO_SECT)
 
uint16_t description () const
 Return information about the symbol (SYMBOL_DESCRIPTIONS)
 
bool has_export_info () const
 True if the symbol is associated with an ExportInfo This value is set when the symbol comes from the Dyld Export trie.
 
const ExportInfoexport_info () const
 Return the ExportInfo associated with this symbol (or nullptr if not present)
 
ExportInfoexport_info ()
 
bool has_binding_info () const
 True if the symbol is associated with a BindingInfo This value is set when the symbol comes from the Dyld symbol bindings.
 
const BindingInfobinding_info () const
 Return the BindingInfo associated with this symbol (or nullptr if not present)
 
BindingInfobinding_info ()
 
std::string demangled_name () const
 Try to demangle the symbol or return an empty string if it is not possible.
 
bool is_external () const
 True if the symbol is defined as an external symbol.
 
const DylibCommandlibrary () const
 Return the library in which the symbol is defined. It returns a null pointer if the library can't be resolved.
 
DylibCommandlibrary ()
 
SYMBOL_ORIGINS origin () const
 Return the origin of the symbol: from LC_SYMTAB command or from the Dyld information.
 
CATEGORY category () const
 Category of the symbol according to the LC_DYSYMTAB command.
 
void type (uint8_t type)
 
void numberof_sections (uint8_t nbsections)
 
void description (uint16_t desc)
 
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.
 
virtual uint64_t value () const
 
virtual void value (uint64_t value)
 
virtual uint64_t size () const
 This size of the symbol (when applicable)
 
virtual void size (uint64_t value)
 
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
 

Static Public Member Functions

static const Symbolindirect_abs ()
 
static const Symbolindirect_local ()
 

Detailed Description

Class that represents a Symbol in a Mach-O file.

A Mach-O symbol can come from:

  1. The symbols command (LC_SYMTAB / SymbolCommand)
  2. The Dyld Export trie
  3. The Dyld Symbol bindings

Member Function Documentation

◆ accept()

void LIEF::MachO::Symbol::accept ( Visitor & visitor) const
overridevirtual

Implements LIEF::Object.

◆ binding_info()

const BindingInfo * LIEF::MachO::Symbol::binding_info ( ) const

Return the BindingInfo associated with this symbol (or nullptr if not present)

See also
has_binding_info

◆ export_info()

const ExportInfo * LIEF::MachO::Symbol::export_info ( ) const

Return the ExportInfo associated with this symbol (or nullptr if not present)

See also
has_export_info

◆ is_external()

bool LIEF::MachO::Symbol::is_external ( ) const

True if the symbol is defined as an external symbol.

This function check if the flag N_LIST_TYPES::N_UNDF is set


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