LLVM 22.0.0git
|
A DWARFDataExtractor (typically for an in-memory copy of an object-file section) plus a relocation map for that section, if there is one. More...
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
Public Member Functions | |
DWARFDataExtractor (const DWARFObject &Obj, const DWARFSection &Section, bool IsLittleEndian, uint8_t AddressSize) | |
Constructor for the normal case of extracting data from a DWARF section. | |
DWARFDataExtractor (const DWARFDataExtractor &Other, size_t Length) | |
Truncating constructor. | |
uint64_t | getRelocatedValueImpl (uint32_t Size, uint64_t *Off, uint64_t *SecNdx, Error *Err) const |
Extracts a value and applies a relocation to the result if one exists for the given offset. | |
DWARFDataExtractorBase (StringRef Data, bool IsLittleEndian, uint8_t AddressSize) | |
DWARFDataExtractorBase (ArrayRef< uint8_t > Data, bool IsLittleEndian, uint8_t AddressSize) | |
DWARFDataExtractorBase (const DWARFDataExtractorBase &Other, size_t Length) | |
Truncating constructor. | |
![]() | |
DWARFDataExtractorBase (StringRef Data, bool IsLittleEndian, uint8_t AddressSize) | |
DWARFDataExtractorBase (ArrayRef< uint8_t > Data, bool IsLittleEndian, uint8_t AddressSize) | |
DWARFDataExtractorBase (const DWARFDataExtractorBase &Other, size_t Length) | |
Truncating constructor. | |
uint64_t | getRelocatedValue (uint32_t Size, uint64_t *Off, uint64_t *SectionIndex=nullptr, Error *Err=nullptr) const |
Extracts a value and returns it as adjusted by the Relocator. | |
uint64_t | getRelocatedValue (Cursor &C, uint32_t Size, uint64_t *SectionIndex=nullptr) const |
uint64_t | getRelocatedAddress (uint64_t *Off, uint64_t *SecIx=nullptr) const |
Extracts an address-sized value. | |
uint64_t | getRelocatedAddress (Cursor &C, uint64_t *SecIx=nullptr) const |
std::pair< uint64_t, dwarf::DwarfFormat > | getInitialLength (uint64_t *Off, Error *Err=nullptr) const |
Extracts the DWARF "initial length" field, which can either be a 32-bit value smaller than 0xfffffff0, or the value 0xffffffff followed by a 64-bit length. | |
std::pair< uint64_t, dwarf::DwarfFormat > | getInitialLength (Cursor &C) const |
std::optional< uint64_t > | getEncodedPointer (uint64_t *Offset, uint8_t Encoding, uint64_t PCRelOffset) const |
Extracts a DWARF-encoded pointer in Offset using Encoding . | |
![]() | |
DataExtractor (StringRef Data, bool IsLittleEndian, uint8_t AddressSize) | |
Construct with a buffer that is owned by the caller. | |
DataExtractor (ArrayRef< uint8_t > Data, bool IsLittleEndian, uint8_t AddressSize) | |
StringRef | getData () const |
Get the data pointed to by this extractor. | |
bool | isLittleEndian () const |
Get the endianness for this extractor. | |
uint8_t | getAddressSize () const |
Get the address size for this extractor. | |
void | setAddressSize (uint8_t Size) |
Set the address size for this extractor. | |
const char * | getCStr (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a C string from *offset_ptr. | |
const char * | getCStr (Cursor &C) const |
Extract a C string from the location given by the cursor. | |
LLVM_ABI StringRef | getCStrRef (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a C string from *offset_ptr. | |
StringRef | getCStrRef (Cursor &C) const |
Extract a C string (as a StringRef) from the location given by the cursor. | |
LLVM_ABI StringRef | getFixedLengthString (uint64_t *OffsetPtr, uint64_t Length, StringRef TrimChars={"\0", 1}) const |
Extract a fixed length string from *OffsetPtr and consume Length bytes. | |
LLVM_ABI StringRef | getBytes (uint64_t *OffsetPtr, uint64_t Length, Error *Err=nullptr) const |
Extract a fixed number of bytes from the specified offset. | |
StringRef | getBytes (Cursor &C, uint64_t Length) |
Extract a fixed number of bytes from the location given by the cursor. | |
LLVM_ABI uint64_t | getUnsigned (uint64_t *offset_ptr, uint32_t byte_size, Error *Err=nullptr) const |
Extract an unsigned integer of size byte_size from *offset_ptr. | |
uint64_t | getUnsigned (Cursor &C, uint32_t Size) const |
Extract an unsigned integer of the given size from the location given by the cursor. | |
LLVM_ABI int64_t | getSigned (uint64_t *offset_ptr, uint32_t size) const |
Extract an signed integer of size byte_size from *offset_ptr. | |
uint64_t | getAddress (uint64_t *offset_ptr) const |
Extract an pointer from *offset_ptr. | |
uint64_t | getAddress (Cursor &C) const |
Extract a pointer-sized unsigned integer from the location given by the cursor. | |
LLVM_ABI uint8_t | getU8 (uint64_t *offset_ptr, Error *Err=nullptr) const |
Extract a uint8_t value from *offset_ptr. | |
uint8_t | getU8 (Cursor &C) const |
Extract a single uint8_t value from the location given by the cursor. | |
LLVM_ABI uint8_t * | getU8 (uint64_t *offset_ptr, uint8_t *dst, uint32_t count) const |
Extract count uint8_t values from *offset_ptr. | |
LLVM_ABI uint8_t * | getU8 (Cursor &C, uint8_t *Dst, uint32_t Count) const |
Extract Count uint8_t values from the location given by the cursor and store them into the destination buffer. | |
void | getU8 (Cursor &C, SmallVectorImpl< uint8_t > &Dst, uint32_t Count) const |
Extract Count uint8_t values from the location given by the cursor and store them into the destination vector. | |
int8_t | getS8 (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a int8_t value from *OffsetPtr. | |
int8_t | getS8 (Cursor &C) const |
Extract a int8_t value from *OffsetPtr. | |
LLVM_ABI uint16_t | getU16 (uint64_t *offset_ptr, Error *Err=nullptr) const |
Extract a uint16_t value from *offset_ptr. | |
uint16_t | getU16 (Cursor &C) const |
Extract a single uint16_t value from the location given by the cursor. | |
LLVM_ABI uint16_t * | getU16 (uint64_t *offset_ptr, uint16_t *dst, uint32_t count) const |
Extract count uint16_t values from *offset_ptr. | |
int16_t | getS16 (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a int16_t value from *OffsetPtr. | |
int16_t | getS16 (Cursor &C) const |
Extract a int16_t value from *OffsetPtr. | |
LLVM_ABI uint32_t | getU24 (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a 24-bit unsigned value from *offset_ptr and return it in a uint32_t. | |
uint32_t | getU24 (Cursor &C) const |
Extract a single 24-bit unsigned value from the location given by the cursor. | |
LLVM_ABI uint32_t | getU32 (uint64_t *offset_ptr, Error *Err=nullptr) const |
Extract a uint32_t value from *offset_ptr. | |
uint32_t | getU32 (Cursor &C) const |
Extract a single uint32_t value from the location given by the cursor. | |
LLVM_ABI uint32_t * | getU32 (uint64_t *offset_ptr, uint32_t *dst, uint32_t count) const |
Extract count uint32_t values from *offset_ptr. | |
int32_t | getS32 (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a int32_t value from *OffsetPtr. | |
int32_t | getS32 (Cursor &C) const |
Extract a int32_t value from *OffsetPtr. | |
LLVM_ABI uint64_t | getU64 (uint64_t *offset_ptr, Error *Err=nullptr) const |
Extract a uint64_t value from *offset_ptr. | |
uint64_t | getU64 (Cursor &C) const |
Extract a single uint64_t value from the location given by the cursor. | |
LLVM_ABI uint64_t * | getU64 (uint64_t *offset_ptr, uint64_t *dst, uint32_t count) const |
Extract count uint64_t values from *offset_ptr. | |
int64_t | getS64 (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a int64_t value from *OffsetPtr. | |
int64_t | getS64 (Cursor &C) const |
Extract a int64_t value from *OffsetPtr. | |
LLVM_ABI int64_t | getSLEB128 (uint64_t *OffsetPtr, Error *Err=nullptr) const |
Extract a signed LEB128 value from *offset_ptr. | |
int64_t | getSLEB128 (Cursor &C) const |
Extract an signed LEB128 value from the location given by the cursor. | |
LLVM_ABI uint64_t | getULEB128 (uint64_t *offset_ptr, llvm::Error *Err=nullptr) const |
Extract a unsigned LEB128 value from *offset_ptr. | |
uint64_t | getULEB128 (Cursor &C) const |
Extract an unsigned LEB128 value from the location given by the cursor. | |
LLVM_ABI void | skip (Cursor &C, uint64_t Length) const |
Advance the Cursor position by the given number of bytes. | |
bool | eof (const Cursor &C) const |
Return true iff the cursor is at the end of the buffer, regardless of the error state of the cursor. | |
bool | isValidOffset (uint64_t offset) const |
Test the validity of offset. | |
bool | isValidOffsetForDataOfSize (uint64_t offset, uint64_t length) const |
Test the availability of length bytes of data from offset. | |
bool | isValidOffsetForAddress (uint64_t offset) const |
Test the availability of enough bytes of data for a pointer from offset. | |
size_t | size () const |
Return the number of bytes in the underlying buffer. | |
Additional Inherited Members | |
![]() | |
static uint64_t & | getOffset (Cursor &C) |
static Error & | getError (Cursor &C) |
A DWARFDataExtractor (typically for an in-memory copy of an object-file section) plus a relocation map for that section, if there is one.
Definition at line 23 of file DWARFDataExtractor.h.
|
inline |
Constructor for the normal case of extracting data from a DWARF section.
The DWARFSection's lifetime must be at least as long as the extractor's.
Definition at line 32 of file DWARFDataExtractor.h.
|
inline |
Truncating constructor.
Definition at line 38 of file DWARFDataExtractor.h.
|
inline |
Definition at line 30 of file DWARFDataExtractorSimple.h.
|
inline |
Truncating constructor.
Definition at line 37 of file DWARFDataExtractorSimple.h.
|
inline |
Definition at line 27 of file DWARFDataExtractorSimple.h.
|
inline |
Extracts a value and applies a relocation to the result if one exists for the given offset.
Definition at line 45 of file DWARFDataExtractor.h.
References E, llvm::DWARFObject::find(), llvm::DataExtractor::getUnsigned(), llvm::object::resolveRelocation(), Size, and llvm::object::SectionedAddress::UndefSection.