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

Based class for the Mach-O load commands. More...

#include <LoadCommand.hpp>

Inheritance diagram for LIEF::MachO::LoadCommand:
Collaboration diagram for LIEF::MachO::LoadCommand:

Public Types

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

Public Member Functions

 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
 
virtual std::unique_ptr< LoadCommandclone () const
 
 ~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)
 
virtual std::ostream & print (std::ostream &os) const
 
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 is_linkedit_data (const LoadCommand &cmd)
 

Detailed Description

Based class for the Mach-O load commands.

Member Typedef Documentation

◆ raw_t

using LIEF::MachO::LoadCommand::raw_t = std::vector<uint8_t>

Member Enumeration Documentation

◆ TYPE

enum class LIEF::MachO::LoadCommand::TYPE : uint64_t
strong
Enumerator
UNKNOWN 
SEGMENT 
SYMTAB 
SYMSEG 
THREAD 
UNIXTHREAD 
LOADFVMLIB 
IDFVMLIB 
IDENT 
FVMFILE 
PREPAGE 
DYSYMTAB 
LOAD_DYLIB 
ID_DYLIB 
LOAD_DYLINKER 
ID_DYLINKER 
PREBOUND_DYLIB 
ROUTINES 
SUB_FRAMEWORK 
SUB_UMBRELLA 
SUB_CLIENT 
SUB_LIBRARY 
TWOLEVEL_HINTS 
PREBIND_CKSUM 
LOAD_WEAK_DYLIB 
SEGMENT_64 
ROUTINES_64 
UUID 
RPATH 
CODE_SIGNATURE 
SEGMENT_SPLIT_INFO 
REEXPORT_DYLIB 
LAZY_LOAD_DYLIB 
ENCRYPTION_INFO 
DYLD_INFO 
DYLD_INFO_ONLY 
LOAD_UPWARD_DYLIB 
VERSION_MIN_MACOSX 
VERSION_MIN_IPHONEOS 
FUNCTION_STARTS 
DYLD_ENVIRONMENT 
MAIN 
DATA_IN_CODE 
SOURCE_VERSION 
DYLIB_CODE_SIGN_DRS 
ENCRYPTION_INFO_64 
LINKER_OPTION 
LINKER_OPTIMIZATION_HINT 
VERSION_MIN_TVOS 
VERSION_MIN_WATCHOS 
NOTE 
BUILD_VERSION 
DYLD_EXPORTS_TRIE 
DYLD_CHAINED_FIXUPS 
FILESET_ENTRY 
LIEF_UNKNOWN 

Constructor & Destructor Documentation

◆ LoadCommand() [1/4]

LIEF::MachO::LoadCommand::LoadCommand ( )
default

◆ LoadCommand() [2/4]

LIEF::MachO::LoadCommand::LoadCommand ( const details::load_command & command)

◆ LoadCommand() [3/4]

LIEF::MachO::LoadCommand::LoadCommand ( LoadCommand::TYPE type,
uint32_t size )
inline

◆ LoadCommand() [4/4]

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

◆ ~LoadCommand()

LIEF::MachO::LoadCommand::~LoadCommand ( )
overridedefault

Member Function Documentation

◆ accept()

◆ cast() [1/2]

template<class T >
T * LIEF::MachO::LoadCommand::cast ( )
inline

◆ cast() [2/2]

template<class T >
const T * LIEF::MachO::LoadCommand::cast ( ) const
inline

◆ clone()

◆ command() [1/2]

◆ command() [2/2]

void LIEF::MachO::LoadCommand::command ( LoadCommand::TYPE command)
inline

◆ command_offset() [1/2]

uint64_t LIEF::MachO::LoadCommand::command_offset ( ) const
inline

Offset of the command within the Load Command Table

◆ command_offset() [2/2]

void LIEF::MachO::LoadCommand::command_offset ( uint64_t offset)
inline

◆ data() [1/2]

span< const uint8_t > LIEF::MachO::LoadCommand::data ( ) const
inline

Raw command.

◆ data() [2/2]

void LIEF::MachO::LoadCommand::data ( raw_t data)
inline

◆ is_linkedit_data()

static bool LIEF::MachO::LoadCommand::is_linkedit_data ( const LoadCommand & cmd)
static

◆ operator=()

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

◆ print()

◆ size() [1/2]

uint32_t LIEF::MachO::LoadCommand::size ( ) const
inline

Size of the command (should be greather than sizeof(load_command))

◆ size() [2/2]

void LIEF::MachO::LoadCommand::size ( uint32_t size)
inline

◆ swap()

void LIEF::MachO::LoadCommand::swap ( LoadCommand & other)
noexcept

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