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...
 
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: