LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LIEF::MachO::FunctionStarts Class Reference

Class which represents the LC_FUNCTION_STARTS command. More...

#include <FunctionStarts.hpp>

Inheritance diagram for LIEF::MachO::FunctionStarts:
Collaboration diagram for LIEF::MachO::FunctionStarts:

Public Member Functions

 FunctionStarts ()=default
 
 FunctionStarts (const details::linkedit_data_command &cmd)
 
FunctionStartsoperator= (const FunctionStarts &copy)=default
 
 FunctionStarts (const FunctionStarts &copy)=default
 
std::unique_ptr< LoadCommandclone () const override
 
uint32_t data_offset () const
 Offset in the __LINKEDIT SegmentCommand where start functions are located.
 
uint32_t data_size () const
 Size of the functions list in the binary.
 
const std::vector< uint64_t > & functions () const
 Addresses of every function entry point in the executable.
 
std::vector< uint64_t > & functions ()
 
void add_function (uint64_t address)
 Add a new function.
 
void data_offset (uint32_t offset)
 
void data_size (uint32_t size)
 
void functions (std::vector< uint64_t > funcs)
 
span< const uint8_t > content () const
 
span< uint8_t > content ()
 
 ~FunctionStarts () override=default
 
void accept (Visitor &visitor) const override
 
std::ostream & print (std::ostream &os) const override
 
- Public Member Functions inherited from LIEF::MachO::LoadCommand
 LoadCommand ()=default
 
 LoadCommand (const details::load_command &command)
 
 LoadCommand (LoadCommand::TYPE type, uint32_t size)
 
LoadCommandoperator= (const LoadCommand &copy)=default
 
 LoadCommand (const LoadCommand &copy)=default
 
void swap (LoadCommand &other) noexcept
 
 ~LoadCommand () override=default
 
LoadCommand::TYPE command () const
 Command type.
 
uint32_t size () const
 Size of the command (should be greather than sizeof(load_command))
 
span< const uint8_t > data () const
 Raw command.
 
uint64_t command_offset () const
 Offset of the command within the Load Command Table
 
void data (raw_t data)
 
void command (LoadCommand::TYPE command)
 
void size (uint32_t size)
 
void command_offset (uint64_t offset)
 
void accept (Visitor &visitor) const override
 
template<class T >
const T * cast () const
 
template<class T >
T * cast ()
 
- Public Member Functions inherited from LIEF::Object
 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
 
virtual ~Object ()
 

Static Public Member Functions

static bool classof (const LoadCommand *cmd)
 
- Static Public Member Functions inherited from LIEF::MachO::LoadCommand
static bool is_linkedit_data (const LoadCommand &cmd)
 

Additional Inherited Members

- Public Types inherited from LIEF::MachO::LoadCommand
enum class  TYPE : uint64_t {
  UNKNOWN = 0 , SEGMENT = 0x00000001u , SYMTAB = 0x00000002u , SYMSEG = 0x00000003u ,
  THREAD = 0x00000004u , UNIXTHREAD = 0x00000005u , LOADFVMLIB = 0x00000006u , IDFVMLIB = 0x00000007u ,
  IDENT = 0x00000008u , FVMFILE = 0x00000009u , PREPAGE = 0x0000000Au , DYSYMTAB = 0x0000000Bu ,
  LOAD_DYLIB = 0x0000000Cu , ID_DYLIB = 0x0000000Du , LOAD_DYLINKER = 0x0000000Eu , ID_DYLINKER = 0x0000000Fu ,
  PREBOUND_DYLIB = 0x00000010u , ROUTINES = 0x00000011u , SUB_FRAMEWORK = 0x00000012u , SUB_UMBRELLA = 0x00000013u ,
  SUB_CLIENT = 0x00000014u , SUB_LIBRARY = 0x00000015u , TWOLEVEL_HINTS = 0x00000016u , PREBIND_CKSUM = 0x00000017u ,
  LOAD_WEAK_DYLIB = 0x80000018u , SEGMENT_64 = 0x00000019u , ROUTINES_64 = 0x0000001Au , UUID = 0x0000001Bu ,
  RPATH = 0x8000001Cu , CODE_SIGNATURE = 0x0000001Du , SEGMENT_SPLIT_INFO = 0x0000001Eu , REEXPORT_DYLIB = 0x8000001Fu ,
  LAZY_LOAD_DYLIB = 0x00000020u , ENCRYPTION_INFO = 0x00000021u , DYLD_INFO = 0x00000022u , DYLD_INFO_ONLY = 0x80000022u ,
  LOAD_UPWARD_DYLIB = 0x80000023u , VERSION_MIN_MACOSX = 0x00000024u , VERSION_MIN_IPHONEOS = 0x00000025u , FUNCTION_STARTS = 0x00000026u ,
  DYLD_ENVIRONMENT = 0x00000027u , MAIN = 0x80000028u , DATA_IN_CODE = 0x00000029u , SOURCE_VERSION = 0x0000002Au ,
  DYLIB_CODE_SIGN_DRS = 0x0000002Bu , ENCRYPTION_INFO_64 = 0x0000002Cu , LINKER_OPTION = 0x0000002Du , LINKER_OPTIMIZATION_HINT = 0x0000002Eu ,
  VERSION_MIN_TVOS = 0x0000002Fu , VERSION_MIN_WATCHOS = 0x00000030u , NOTE = 0x00000031u , BUILD_VERSION = 0x00000032u ,
  DYLD_EXPORTS_TRIE = 0x80000033u , DYLD_CHAINED_FIXUPS = 0x80000034u , FILESET_ENTRY = 0x80000035u , ATOM_INFO = 0x00000036u ,
  LIEF_UNKNOWN = 0xffee0001u
}
 
using raw_t = std::vector<uint8_t>
 
- 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 the LC_FUNCTION_STARTS command.

This command is an array of ULEB128 encoded values

Constructor & Destructor Documentation

◆ FunctionStarts() [1/3]

LIEF::MachO::FunctionStarts::FunctionStarts ( )
default

◆ FunctionStarts() [2/3]

LIEF::MachO::FunctionStarts::FunctionStarts ( const details::linkedit_data_command & cmd)

◆ FunctionStarts() [3/3]

LIEF::MachO::FunctionStarts::FunctionStarts ( const FunctionStarts & copy)
default

◆ ~FunctionStarts()

LIEF::MachO::FunctionStarts::~FunctionStarts ( )
overridedefault

Member Function Documentation

◆ accept()

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

Implements LIEF::Object.

◆ add_function()

void LIEF::MachO::FunctionStarts::add_function ( uint64_t address)
inline

Add a new function.

◆ classof()

static bool LIEF::MachO::FunctionStarts::classof ( const LoadCommand * cmd)
inlinestatic

◆ clone()

std::unique_ptr< LoadCommand > LIEF::MachO::FunctionStarts::clone ( ) const
inlineoverridevirtual

Reimplemented from LIEF::MachO::LoadCommand.

◆ content() [1/2]

span< uint8_t > LIEF::MachO::FunctionStarts::content ( )
inline

◆ content() [2/2]

span< const uint8_t > LIEF::MachO::FunctionStarts::content ( ) const
inline

◆ data_offset() [1/2]

uint32_t LIEF::MachO::FunctionStarts::data_offset ( ) const
inline

Offset in the __LINKEDIT SegmentCommand where start functions are located.

◆ data_offset() [2/2]

void LIEF::MachO::FunctionStarts::data_offset ( uint32_t offset)
inline

◆ data_size() [1/2]

uint32_t LIEF::MachO::FunctionStarts::data_size ( ) const
inline

Size of the functions list in the binary.

◆ data_size() [2/2]

void LIEF::MachO::FunctionStarts::data_size ( uint32_t size)
inline

◆ functions() [1/3]

std::vector< uint64_t > & LIEF::MachO::FunctionStarts::functions ( )
inline

◆ functions() [2/3]

const std::vector< uint64_t > & LIEF::MachO::FunctionStarts::functions ( ) const
inline

Addresses of every function entry point in the executable.

This allows functions to exist for which there are no entries in the symbol table.

Warning
The address is relative to the __TEXT segment

◆ functions() [3/3]

void LIEF::MachO::FunctionStarts::functions ( std::vector< uint64_t > funcs)
inline

◆ operator=()

FunctionStarts & LIEF::MachO::FunctionStarts::operator= ( const FunctionStarts & copy)
default

◆ print()

std::ostream & LIEF::MachO::FunctionStarts::print ( std::ostream & os) const
overridevirtual

Reimplemented from LIEF::MachO::LoadCommand.


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