LIEF: Library to Instrument Executable Formats Version 0.17.0
|
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>
Public Member Functions | |
RelocationObject ()=default | |
RelocationObject (const details::relocation_info &relocinfo) | |
RelocationObject (const details::scattered_relocation_info &scattered_relocinfo) | |
RelocationObject & | operator= (const RelocationObject &other)=default |
RelocationObject (const RelocationObject &other)=default | |
void | swap (RelocationObject &other) noexcept |
~RelocationObject () override=default | |
std::unique_ptr< Relocation > | clone () 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. | |
ORIGIN | origin () const override |
Origin of the relocation. For this object it should be Relocation::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 ()=default | |
Relocation (uint64_t address, uint8_t type) | |
Relocation (const Relocation &other) | |
Public Member Functions inherited from LIEF::MachO::Relocation | |
Relocation ()=default | |
Relocation (uint64_t address, uint8_t type) | |
Relocation & | operator= (const Relocation &other) |
Relocation (const Relocation &other) | |
void | swap (Relocation &other) noexcept |
~Relocation () override=default | |
virtual uint8_t | type () const |
Type of the relocation according to the Relocation::architecture and/or the Relocation::origin. | |
Header::CPU_TYPE | architecture () const |
Achitecture targeted by this relocation. | |
bool | has_symbol () const |
true if the relocation has a symbol associated with | |
Symbol * | symbol () |
Symbol associated with the relocation, if any, otherwise a nullptr. | |
const Symbol * | symbol () const |
bool | has_section () const |
true if the relocation has a section associated with | |
Section * | section () |
Section associated with the relocation, if any, otherwise a nullptr. | |
const Section * | section () const |
bool | has_segment () const |
true if the relocation has a SegmentCommand associated with | |
SegmentCommand * | segment () |
SegmentCommand associated with the relocation, if any, otherwise a nullptr. | |
const SegmentCommand * | segment () const |
template<class T > | |
const T * | cast () const |
template<class T > | |
T * | cast () |
virtual void | type (uint8_t type) |
virtual void | address (uint64_t address) |
Public Member Functions inherited from LIEF::Relocation | |
Relocation ()=default | |
Relocation (uint64_t address, uint8_t size) | |
Constructor from a relocation's address and size. | |
~Relocation () override=default | |
Relocation & | operator= (const Relocation &)=default |
Relocation (const Relocation &)=default | |
void | swap (Relocation &other) |
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 () | |
Object (const Object &other) | |
Object & | operator= (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 Relocation &r) |
Additional Inherited Members | |
Public Types inherited from LIEF::MachO::Relocation | |
enum class | ORIGIN { UNKNOWN = 0 , DYLDINFO = 1 , RELOC_TABLE = 2 , CHAINED_FIXUPS = 3 } |
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>>> |
Static Public Attributes inherited from LIEF::MachO::Relocation | |
static constexpr auto | R_SCATTERED = uint32_t(0x80000000) |
static constexpr auto | R_ABS = uint32_t(0) |
Class that represents a relocation presents in the MachO object file (.o
). Usually, this kind of relocation is found in the MachO::Section.
|
default |
LIEF::MachO::RelocationObject::RelocationObject | ( | const details::relocation_info & | relocinfo | ) |
LIEF::MachO::RelocationObject::RelocationObject | ( | const details::scattered_relocation_info & | scattered_relocinfo | ) |
|
default |
|
overridedefault |
|
overridevirtual |
Reimplemented from LIEF::MachO::Relocation.
|
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::MachO::Relocation.
|
inlinestatic |
References LIEF::MachO::Relocation::origin().
|
inlineoverridevirtual |
Implements LIEF::MachO::Relocation.
|
inlineoverridevirtual |
Whether the relocation is PC relative.
Implements LIEF::MachO::Relocation.
|
inline |
true
if the relocation is a scattered one
|
default |
|
inlineoverridevirtual |
Origin of the relocation. For this object it should be Relocation::ORIGIN::RELOC_TABLE)
Implements LIEF::MachO::Relocation.
|
inlineoverridevirtual |
Implements LIEF::MachO::Relocation.
|
inlineoverridevirtual |
Reimplemented from LIEF::MachO::Relocation.
|
default |
LIEF::MachO::Relocation::Relocation | ( | const Relocation & | other | ) |
LIEF::MachO::Relocation::Relocation | ( | uint64_t | address, |
uint8_t | type ) |
|
overridevirtual |
Size of the relocation.
Reimplemented from LIEF::MachO::Relocation.
|
overridevirtual |
Reimplemented from LIEF::MachO::Relocation.
|
noexcept |
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.
void LIEF::MachO::RelocationObject::value | ( | int32_t | value | ) |