16#ifndef LIEF_MACHO_SYMBOL_H
17#define LIEF_MACHO_SYMBOL_H
73 enum class TYPE : uint32_t{
82 static constexpr uint32_t TYPE_MASK = 0x0e;
86 Symbol(
const details::nlist_32& cmd);
87 Symbol(
const details::nlist_64& cmd);
102 return TYPE(type_ & TYPE_MASK);
108 return numberof_sections_;
119 return export_info() !=
nullptr;
134 return binding_info() !=
nullptr;
140 return binding_info_;
144 return binding_info_;
152 return type() == TYPE::UNDEFINED;
179 numberof_sections_ = nbsections;
197 this->library_ = &library;
201 uint8_t numberof_sections_ = 0;
202 uint16_t description_ = 0;
204 BindingInfo* binding_info_ =
nullptr;
205 ExportInfo* export_info_ =
nullptr;
207 DylibCommand* library_ =
nullptr;
209 ORIGIN origin_ = ORIGIN::UNKNOWN;
210 CATEGORY category_ = CATEGORY::NONE;
Class used to parse a single binary (i.e. non-FAT)
Definition BinaryParser.hpp:74
Class which represents a MachO binary.
Definition MachO/Binary.hpp:77
Class that provides an interface over a binding operation.
Definition BindingInfo.hpp:38
Class which represents a library dependency.
Definition DylibCommand.hpp:34
Class that provides an interface over the Dyld export info.
Definition ExportInfo.hpp:38
Class that represents a Symbol in a Mach-O file.
Definition MachO/Symbol.hpp:47
ORIGIN
Definition MachO/Symbol.hpp:66
void description(uint16_t desc)
Definition MachO/Symbol.hpp:181
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 ...
Definition MachO/Symbol.hpp:107
bool is_external() const
True if the symbol is defined as an external symbol.
Definition MachO/Symbol.hpp:151
const DylibCommand * library() const
Return the library in which the symbol is defined. It returns a null pointer if the library can't be ...
Definition MachO/Symbol.hpp:157
static const Symbol & indirect_local()
std::string demangled_name() const
Try to demangle the symbol or return an empty string if it is not possible.
void raw_type(uint8_t type)
Definition MachO/Symbol.hpp:175
void swap(Symbol &other) noexcept
Symbol(const details::nlist_32 &cmd)
~Symbol() override=default
void accept(Visitor &visitor) const override
CATEGORY
Category of the symbol when the symbol comes from the LC_SYMTAB command. The category is defined acco...
Definition MachO/Symbol.hpp:56
uint16_t description() const
Return information about the symbol (SYMBOL_DESCRIPTIONS)
Definition MachO/Symbol.hpp:112
TYPE
Definition MachO/Symbol.hpp:73
Symbol(const details::nlist_64 &cmd)
void numberof_sections(uint8_t nbsections)
Definition MachO/Symbol.hpp:178
bool has_export_info() const
True if the symbol is associated with an ExportInfo This value is set when the symbol comes from the ...
Definition MachO/Symbol.hpp:118
BindingInfo * binding_info()
Definition MachO/Symbol.hpp:143
friend std::ostream & operator<<(std::ostream &os, const Symbol &symbol)
ORIGIN origin() const
Return the origin of the symbol: from LC_SYMTAB command or from the Dyld information.
Definition MachO/Symbol.hpp:166
uint8_t raw_type() const
Raw value of nlist_xx.n_type
Definition MachO/Symbol.hpp:96
static const Symbol & indirect_abs()
ExportInfo * export_info()
Definition MachO/Symbol.hpp:127
Symbol & operator=(Symbol other)
CATEGORY category() const
Category of the symbol according to the LC_DYSYMTAB command.
Definition MachO/Symbol.hpp:171
Symbol(const Symbol &other)
const ExportInfo * export_info() const
Return the ExportInfo associated with this symbol (or nullptr if not present)
Definition MachO/Symbol.hpp:124
const BindingInfo * binding_info() const
Return the BindingInfo associated with this symbol (or nullptr if not present)
Definition MachO/Symbol.hpp:139
bool has_binding_info() const
True if the symbol is associated with a BindingInfo This value is set when the symbol comes from the ...
Definition MachO/Symbol.hpp:133
DylibCommand * library()
Definition MachO/Symbol.hpp:161
TYPE type() const
Type as defined by nlist_xx.n_type & N_TYPE
Definition MachO/Symbol.hpp:101
This class represents a symbol in an executable format.
Definition Abstract/Symbol.hpp:28
Definition Visitor.hpp:224
const char * to_string(BuildToolVersion::TOOLS tool)
LIEF namespace.
Definition Abstract/Binary.hpp:32
#define LIEF_API
Definition visibility.h:41