LLVM  10.0.0svn
Public Member Functions | List of all members
llvm::DWARFDataExtractor Class Reference

A DataExtractor (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"

Inheritance diagram for llvm::DWARFDataExtractor:
Inheritance graph
[legend]
Collaboration diagram for llvm::DWARFDataExtractor:
Collaboration graph
[legend]

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. More...
 
 DWARFDataExtractor (StringRef Data, bool IsLittleEndian, uint8_t AddressSize)
 Constructor for cases when there are no relocations. More...
 
uint64_t getRelocatedValue (uint32_t Size, uint64_t *Off, uint64_t *SectionIndex=nullptr, Error *Err=nullptr) const
 Extracts a value and applies a relocation to the result if one exists for the given offset. More...
 
uint64_t getRelocatedAddress (uint64_t *Off, uint64_t *SecIx=nullptr) const
 Extracts an address-sized value and applies a relocation to the result if one exists for the given offset. More...
 
uint64_t getRelocatedAddress (Cursor &C, uint64_t *SecIx=nullptr) const
 
Optional< uint64_t > getEncodedPointer (uint64_t *Offset, uint8_t Encoding, uint64_t AbsPosOffset=0) const
 Extracts a DWARF-encoded pointer in Offset using Encoding. More...
 
size_t size () const
 
- Public Member Functions inherited from llvm::DataExtractor
 DataExtractor (StringRef Data, bool IsLittleEndian, uint8_t AddressSize)
 Construct with a buffer that is owned by the caller. More...
 
 DataExtractor (ArrayRef< uint8_t > Data, bool IsLittleEndian, uint8_t AddressSize)
 
StringRef getData () const
 Get the data pointed to by this extractor. More...
 
bool isLittleEndian () const
 Get the endianness for this extractor. More...
 
uint8_t getAddressSize () const
 Get the address size for this extractor. More...
 
void setAddressSize (uint8_t Size)
 Set the address size for this extractor. More...
 
const chargetCStr (uint64_t *offset_ptr) const
 Extract a C string from *offset_ptr. More...
 
StringRef getCStrRef (uint64_t *offset_ptr) const
 Extract a C string from *offset_ptr. More...
 
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. More...
 
uint64_t getUnsigned (Cursor &C, uint32_t Size) const
 Extract an unsigned integer of the given size from the location given by the cursor. More...
 
int64_t getSigned (uint64_t *offset_ptr, uint32_t size) const
 Extract an signed integer of size byte_size from *offset_ptr. More...
 
uint64_t getAddress (uint64_t *offset_ptr) const
 Extract an pointer from *offset_ptr. More...
 
uint64_t getAddress (Cursor &C) const
 Extract a pointer-sized unsigned integer from the location given by the cursor. More...
 
uint8_t getU8 (uint64_t *offset_ptr, Error *Err=nullptr) const
 Extract a uint8_t value from *offset_ptr. More...
 
uint8_t getU8 (Cursor &C) const
 Extract a single uint8_t value from the location given by the cursor. More...
 
uint8_t * getU8 (uint64_t *offset_ptr, uint8_t *dst, uint32_t count) const
 Extract count uint8_t values from *offset_ptr. More...
 
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. More...
 
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. More...
 
uint16_t getU16 (uint64_t *offset_ptr, Error *Err=nullptr) const
 Extract a uint16_t value from *offset_ptr. More...
 
uint16_t getU16 (Cursor &C) const
 Extract a single uint16_t value from the location given by the cursor. More...
 
uint16_t * getU16 (uint64_t *offset_ptr, uint16_t *dst, uint32_t count) const
 Extract count uint16_t values from *offset_ptr. More...
 
uint32_t getU24 (uint64_t *offset_ptr) const
 Extract a 24-bit unsigned value from *offset_ptr and return it in a uint32_t. More...
 
uint32_t getU32 (uint64_t *offset_ptr, Error *Err=nullptr) const
 Extract a uint32_t value from *offset_ptr. More...
 
uint32_t getU32 (Cursor &C) const
 Extract a single uint32_t value from the location given by the cursor. More...
 
uint32_tgetU32 (uint64_t *offset_ptr, uint32_t *dst, uint32_t count) const
 Extract count uint32_t values from *offset_ptr. More...
 
uint64_t getU64 (uint64_t *offset_ptr, Error *Err=nullptr) const
 Extract a uint64_t value from *offset_ptr. More...
 
uint64_t getU64 (Cursor &C) const
 Extract a single uint64_t value from the location given by the cursor. More...
 
uint64_t * getU64 (uint64_t *offset_ptr, uint64_t *dst, uint32_t count) const
 Extract count uint64_t values from *offset_ptr. More...
 
int64_t getSLEB128 (uint64_t *offset_ptr) const
 Extract a signed LEB128 value from *offset_ptr. More...
 
uint64_t getULEB128 (uint64_t *offset_ptr, llvm::Error *Err=nullptr) const
 Extract a unsigned LEB128 value from *offset_ptr. More...
 
uint64_t getULEB128 (Cursor &C) const
 Extract an unsigned ULEB128 value from the location given by the cursor. More...
 
void skip (Cursor &C, uint64_t Length) const
 Advance the Cursor position by the given number of bytes. More...
 
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. More...
 
bool isValidOffset (uint64_t offset) const
 Test the validity of offset. More...
 
bool isValidOffsetForDataOfSize (uint64_t offset, uint64_t length) const
 Test the availability of length bytes of data from offset. More...
 
bool isValidOffsetForAddress (uint64_t offset) const
 Test the availability of enough bytes of data for a pointer from offset. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from llvm::DataExtractor
static uint64_t & getOffset (Cursor &C)
 
static ErrorgetError (Cursor &C)
 

Detailed Description

A DataExtractor (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 20 of file DWARFDataExtractor.h.

Constructor & Destructor Documentation

◆ DWARFDataExtractor() [1/2]

llvm::DWARFDataExtractor::DWARFDataExtractor ( const DWARFObject Obj,
const DWARFSection Section,
bool  IsLittleEndian,
uint8_t  AddressSize 
)
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 27 of file DWARFDataExtractor.h.

References llvm::Data.

◆ DWARFDataExtractor() [2/2]

llvm::DWARFDataExtractor::DWARFDataExtractor ( StringRef  Data,
bool  IsLittleEndian,
uint8_t  AddressSize 
)
inline

Constructor for cases when there are no relocations.

Definition at line 33 of file DWARFDataExtractor.h.

References getRelocatedValue(), and Size.

Member Function Documentation

◆ getEncodedPointer()

Optional< uint64_t > DWARFDataExtractor::getEncodedPointer ( uint64_t *  Offset,
uint8_t  Encoding,
uint64_t  AbsPosOffset = 0 
) const

◆ getRelocatedAddress() [1/2]

uint64_t llvm::DWARFDataExtractor::getRelocatedAddress ( uint64_t *  Off,
uint64_t *  SecIx = nullptr 
) const
inline

Extracts an address-sized value and applies a relocation to the result if one exists for the given offset.

Definition at line 44 of file DWARFDataExtractor.h.

References llvm::DataExtractor::getAddressSize(), and getRelocatedValue().

Referenced by llvm::dwarf::CFIProgram::parse(), llvm::DWARFDebugLine::LineTable::parse(), llvm::DWARFDebugFrame::parse(), and llvm::DWARFDebugLoc::parseOneLocationList().

◆ getRelocatedAddress() [2/2]

uint64_t llvm::DWARFDataExtractor::getRelocatedAddress ( Cursor C,
uint64_t *  SecIx = nullptr 
) const
inline

◆ getRelocatedValue()

uint64_t DWARFDataExtractor::getRelocatedValue ( uint32_t  Size,
uint64_t *  Off,
uint64_t *  SectionIndex = nullptr,
Error Err = nullptr 
) const

◆ size()

size_t llvm::DWARFDataExtractor::size ( ) const
inline

Definition at line 59 of file DWARFDataExtractor.h.

References llvm::DWARFSection::Data, and llvm::StringRef::size().


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