|
LIEF: Library to Instrument Executable Formats Version 0.17.1
|
Class that represents a Mach-O relocation. More...
#include <Relocation.hpp>


Public Types | |
| 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>>> |
Public Member Functions | |
| 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 std::unique_ptr< Relocation > | clone () const =0 |
| virtual bool | is_pc_relative () const =0 |
| Indicates whether the item containing the address to be relocated is part of a CPU instruction that uses PC-relative addressing. | |
| 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. | |
| virtual ORIGIN | origin () const =0 |
| Origin of the 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 | pc_relative (bool val)=0 |
| virtual void | type (uint8_t type) |
| void | accept (Visitor &visitor) const override |
| virtual std::ostream & | print (std::ostream &os) const |
| virtual uint64_t | address () const |
| Relocation's address. | |
| virtual void | address (uint64_t address) |
| virtual size_t | size () const |
| Relocation size in bits. | |
| virtual void | size (size_t size) |
| 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) |
| void | accept (Visitor &visitor) const override |
| Method so that the visitor can visit us. | |
| 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) |
| Object (Object &&other) noexcept=default | |
| Object & | operator= (Object &&other) noexcept=default |
| 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 Attributes | |
| static constexpr auto | R_SCATTERED = uint32_t(0x80000000) |
| static constexpr auto | R_ABS = uint32_t(0) |
Class that represents a Mach-O relocation.
|
strong |
|
default |
| LIEF::MachO::Relocation::Relocation | ( | uint64_t | address, |
| uint8_t | type ) |
| LIEF::MachO::Relocation::Relocation | ( | const Relocation & | other | ) |
References Relocation().
|
overridedefault |
|
overridevirtual |
Implements LIEF::Object.
Reimplemented in LIEF::MachO::RelocationDyld, LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
|
inlinevirtual |
Relocation's address.
Reimplemented from LIEF::Relocation.
Reimplemented in LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
Referenced by Relocation().
|
inlinevirtual |
Reimplemented from LIEF::Relocation.
Reimplemented in LIEF::MachO::RelocationFixup.
|
inline |
Achitecture targeted by this relocation.
|
inline |
References Relocation().
|
inline |
|
pure virtual |
Implemented in LIEF::MachO::RelocationDyld, LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
|
inline |
true if the relocation has a section associated with
References section().
|
inline |
true if the relocation has a SegmentCommand associated with
References segment().
|
inline |
true if the relocation has a symbol associated with
References symbol().
|
pure virtual |
Indicates whether the item containing the address to be relocated is part of a CPU instruction that uses PC-relative addressing.
For addresses contained in PC-relative instructions, the CPU adds the address of the instruction to the address contained in the instruction.
Implemented in LIEF::MachO::RelocationDyld, LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
| Relocation & LIEF::MachO::Relocation::operator= | ( | const Relocation & | other | ) |
References Relocation().
|
pure virtual |
Origin of the relocation.
Implemented in LIEF::MachO::RelocationDyld, LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
Referenced by LIEF::MachO::RelocationDyld::classof(), LIEF::MachO::RelocationFixup::classof(), and LIEF::MachO::RelocationObject::classof().
|
pure virtual |
Implemented in LIEF::MachO::RelocationDyld, LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
|
virtual |
Reimplemented in LIEF::MachO::RelocationDyld, LIEF::MachO::RelocationFixup, and LIEF::MachO::RelocationObject.
Referenced by LIEF::MachO::RelocationDyld::print(), and LIEF::MachO::RelocationObject::print().
|
inline |
Section associated with the relocation, if any, otherwise a nullptr.
Referenced by has_section().
|
inline |
|
inline |
SegmentCommand associated with the relocation, if any, otherwise a nullptr.
Referenced by has_segment().
|
inline |
|
inlinevirtual |
Relocation size in bits.
Reimplemented from LIEF::Relocation.
Reimplemented in LIEF::MachO::RelocationObject.
|
inlinevirtual |
Reimplemented from LIEF::Relocation.
Reimplemented in LIEF::MachO::RelocationObject.
|
noexcept |
References Relocation().
|
inline |
Symbol associated with the relocation, if any, otherwise a nullptr.
Referenced by has_symbol().
|
inline |
|
inlinevirtual |
Type of the relocation according to the Relocation::architecture and/or the Relocation::origin.
See:
Referenced by Relocation(), and type().
|
virtual |
References type().
|
staticconstexpr |
|
staticconstexpr |