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

#include <LinkEdit.hpp>

Inheritance diagram for LIEF::MachO::LinkEdit:
Collaboration diagram for LIEF::MachO::LinkEdit:

Public Member Functions

LinkEditoperator= (LinkEdit other)
 
 LinkEdit (const LinkEdit &copy)=default
 
void swap (LinkEdit &other) noexcept
 
std::unique_ptr< LoadCommandclone () const override
 
 ~LinkEdit () override=default
 
 SegmentCommand ()
 
 SegmentCommand (const details::segment_command_32 &cmd)
 
 SegmentCommand (const details::segment_command_64 &cmd)
 
 SegmentCommand (const SegmentCommand &copy)
 
 SegmentCommand (std::string name, content_t content)
 
 SegmentCommand (std::string name)
 
- Public Member Functions inherited from LIEF::MachO::SegmentCommand
 SegmentCommand ()
 
 SegmentCommand (const details::segment_command_32 &cmd)
 
 SegmentCommand (const details::segment_command_64 &cmd)
 
SegmentCommandoperator= (SegmentCommand other)
 
 SegmentCommand (const SegmentCommand &copy)
 
 SegmentCommand (std::string name, content_t content)
 
 SegmentCommand (std::string name)
 
void swap (SegmentCommand &other) noexcept
 
std::unique_ptr< LoadCommandclone () const override
 
 ~SegmentCommand () override
 
const std::string & name () const
 Name of the segment (e.g. __TEXT)
 
uint64_t virtual_address () const
 Absolute virtual base address of the segment.
 
uint64_t virtual_size () const
 Virtual size of the segment.
 
uint64_t file_size () const
 Size of this segment in the binary file.
 
uint64_t file_offset () const
 Offset of the data of this segment in the file.
 
uint32_t max_protection () const
 The maximum of protections for this segment (cf. VM_PROTECTIONS)
 
uint32_t init_protection () const
 The initial protections of this segment (cf. VM_PROTECTIONS)
 
uint32_t numberof_sections () const
 The number of sections associated with this segment.
 
uint32_t flags () const
 Flags associated with this segment (cf. SegmentCommand::FLAGS)
 
it_sections sections ()
 Return an iterator over the MachO::Section linked to this segment.
 
it_const_sections sections () const
 
it_relocations relocations ()
 Return an iterator over the MachO::Relocation linked to this segment.
 
it_const_relocations relocations () const
 
const Sectionget_section (const std::string &name) const
 Get the section with the given name.
 
Sectionget_section (const std::string &name)
 
span< const uint8_t > content () const
 The raw content of this segment.
 
std::unique_ptr< SpanStreamstream () const
 Return a stream over the content of this segment.
 
int8_t index () const
 The original index of this segment or -1 if not defined.
 
void name (std::string name)
 
void virtual_address (uint64_t virtual_address)
 
void virtual_size (uint64_t virtual_size)
 
void file_offset (uint64_t file_offset)
 
void file_size (uint64_t file_size)
 
void max_protection (uint32_t max_protection)
 
void init_protection (uint32_t init_protection)
 
void numberof_sections (uint32_t nb_section)
 
void flags (uint32_t flags)
 
void content (content_t data)
 
Sectionadd_section (const Section &section)
 Add a new section in this segment.
 
void remove_all_sections ()
 Remove all the sections linked to this segment.
 
bool has (const Section &section) const
 Check if the current segment embeds the given section.
 
bool has_section (const std::string &section_name) const
 Check if the current segment embeds the given section name.
 
bool is (VM_PROTECTIONS prot) const
 
std::ostream & print (std::ostream &os) const override
 
void accept (Visitor &visitor) 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)
 
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 bool segmentof (const SegmentCommand &segment)
 
- Static Public Member Functions inherited from LIEF::MachO::SegmentCommand
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::SegmentCommand
enum class  FLAGS : uint64_t {
  HIGHVM = 0x1u , FVMLIB = 0x2u , NORELOC = 0x4u , PROTECTED_VERSION_1 = 0x8u ,
  READ_ONLY = 0x10u
}
 
enum class  VM_PROTECTIONS { READ = 0x1 , WRITE = 0x2 , EXECUTE = 0x4 }
 Values for segment_command.initprot. From <mach/vm_prot.h> More...
 
using content_t = std::vector<uint8_t>
 
using sections_t = std::vector<std::unique_ptr<Section>>
 Internal container for storing Mach-O Section.
 
using it_sections = ref_iterator<sections_t&, Section*>
 Iterator which outputs Section&.
 
using it_const_sections = const_ref_iterator<const sections_t&, const Section*>
 Iterator which outputs const Section&.
 
using relocations_t = std::vector<std::unique_ptr<Relocation>>
 Internal container for storing Mach-O Relocation.
 
using it_relocations = ref_iterator<relocations_t&, Relocation*>
 Iterator which outputs Relocation&.
 
using it_const_relocations = const_ref_iterator<const relocations_t&, const Relocation*>
 Iterator which outputs const Relocation&.
 
- 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>>>
 

Constructor & Destructor Documentation

◆ LinkEdit()

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

◆ ~LinkEdit()

LIEF::MachO::LinkEdit::~LinkEdit ( )
overridedefault

Member Function Documentation

◆ classof()

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

◆ clone()

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

Reimplemented from LIEF::MachO::LoadCommand.

◆ operator=()

LinkEdit & LIEF::MachO::LinkEdit::operator= ( LinkEdit other)

◆ SegmentCommand() [1/6]

LIEF::MachO::SegmentCommand::SegmentCommand ( )

◆ SegmentCommand() [2/6]

LIEF::MachO::SegmentCommand::SegmentCommand ( const details::segment_command_32 & cmd)

◆ SegmentCommand() [3/6]

LIEF::MachO::SegmentCommand::SegmentCommand ( const details::segment_command_64 & cmd)

◆ SegmentCommand() [4/6]

LIEF::MachO::SegmentCommand::SegmentCommand ( const SegmentCommand & copy)

◆ SegmentCommand() [5/6]

LIEF::MachO::SegmentCommand::SegmentCommand ( std::string name)

◆ SegmentCommand() [6/6]

LIEF::MachO::SegmentCommand::SegmentCommand ( std::string name,
content_t content )

◆ segmentof()

static bool LIEF::MachO::LinkEdit::segmentof ( const SegmentCommand & segment)
inlinestatic

◆ swap()

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

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