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

Class that represents a relocation presents in the MachO object file (.o). Usually, this kind of relocation is found in the MachO::Section. More...

#include <RelocationObject.hpp>

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

Public Member Functions

 RelocationObject (const details::relocation_info &relocinfo)
 
 RelocationObject (const details::scattered_relocation_info &scattered_relocinfo)
 
RelocationObjectoperator= (RelocationObject other)
 
 RelocationObject (const RelocationObject &other)
 
void swap (RelocationObject &other)
 
RelocationObjectclone () const override
 
bool is_pc_relative () const override
 Whether the relocation is PC relative.
 
size_t size () const override
 Size of the relocation.
 
uint64_t address () const override
 Address where the relocation is applied This address is relative to the start of the section where the relocation takes place.
 
bool is_scattered () const
 true if the relocation is a scattered one
 
int32_t value () const
 For scattered relocations: The address of the relocatable expression for the item in the file that needs to be updated if the address is changed.
 
RELOCATION_ORIGINS origin () const override
 Origin of the relocation. For this object it should be RELOCATION_ORIGINS::ORIGIN_RELOC_TABLE)
 
void pc_relative (bool val) override
 
void size (size_t size) override
 
void value (int32_t value)
 
void accept (Visitor &visitor) const override
 
std::ostream & print (std::ostream &os) const override
 
 Relocation ()
 
 Relocation (uint64_t address, uint8_t type)
 
 Relocation (const Relocation &other)
 
- Public Member Functions inherited from LIEF::MachO::Relocation
 Relocation (uint64_t address, uint8_t type)
 
Relocationoperator= (const Relocation &other)
 
 Relocation (const Relocation &other)
 
void swap (Relocation &other)
 
virtual uint8_t type () const
 Type of the relocation according to the Relocation::architecture and/or the Relocation::origin.
 
CPU_TYPES architecture () const
 Achitecture targeted by this relocation.
 
bool has_symbol () const
 true if the relocation has a symbol associated with
 
Symbolsymbol ()
 Symbol associated with the relocation, if any, otherwise a nullptr.
 
const Symbolsymbol () const
 
bool has_section () const
 true if the relocation has a section associated with
 
Sectionsection ()
 Section associated with the relocation, if any, otherwise a nullptr.
 
const Sectionsection () const
 
bool has_segment () const
 true if the relocation has a SegmentCommand associated with
 
SegmentCommandsegment ()
 SegmentCommand associated with the relocation, if any, otherwise a nullptr.
 
const SegmentCommandsegment () const
 
virtual void type (uint8_t type)
 
- Public Member Functions inherited from LIEF::Relocation
 Relocation (uint64_t address, uint8_t size)
 Constructor from a relocation's address and size.
 
Relocationoperator= (const Relocation &)
 
 Relocation (const Relocation &)
 
void swap (Relocation &other)
 
virtual void address (uint64_t address)
 
virtual bool operator< (const Relocation &rhs) const
 Comparaison based on the Relocation's address
 
virtual bool operator<= (const Relocation &rhs) const
 Comparaison based on the Relocation's address
 
virtual bool operator> (const Relocation &rhs) const
 Comparaison based on the Relocation's address
 
virtual bool operator>= (const Relocation &rhs) const
 Comparaison based on the Relocation's address
 
- 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 bool classof (const Relocation &r)
 

Additional Inherited Members

- 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 that represents a relocation presents in the MachO object file (.o). Usually, this kind of relocation is found in the MachO::Section.

See also
RelocationDyld

Member Function Documentation

◆ accept()

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

Reimplemented from LIEF::MachO::Relocation.

◆ address()

uint64_t LIEF::MachO::RelocationObject::address ( ) const
overridevirtual

Address where the relocation is applied This address is relative to the start of the section where the relocation takes place.

Reimplemented from LIEF::Relocation.

◆ clone()

RelocationObject * LIEF::MachO::RelocationObject::clone ( ) const
overridevirtual

◆ is_pc_relative()

bool LIEF::MachO::RelocationObject::is_pc_relative ( ) const
overridevirtual

Whether the relocation is PC relative.

Implements LIEF::MachO::Relocation.

◆ origin()

RELOCATION_ORIGINS LIEF::MachO::RelocationObject::origin ( ) const
overridevirtual

Origin of the relocation. For this object it should be RELOCATION_ORIGINS::ORIGIN_RELOC_TABLE)

Implements LIEF::MachO::Relocation.

◆ pc_relative()

void LIEF::MachO::RelocationObject::pc_relative ( bool val)
overridevirtual

◆ print()

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

Reimplemented from LIEF::MachO::Relocation.

◆ size() [1/2]

size_t LIEF::MachO::RelocationObject::size ( ) const
overridevirtual

Size of the relocation.

Reimplemented from LIEF::Relocation.

◆ size() [2/2]

void LIEF::MachO::RelocationObject::size ( size_t size)
overridevirtual

Reimplemented from LIEF::Relocation.

◆ value()

int32_t LIEF::MachO::RelocationObject::value ( ) const

For scattered relocations: The address of the relocatable expression for the item in the file that needs to be updated if the address is changed.

For relocatable expressions with the difference of two section addresses, the address from which to subtract (in mathematical terms, the minuend) is contained in the first relocation entry and the address to subtract (the subtrahend) is contained in the second relocation entry.


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