LLVM: llvm::DataExtractor Class Reference (original) (raw)
#include "[llvm/Support/DataExtractor.h](DataExtractor%5F8h%5Fsource.html)"
| Classes | |
|---|---|
| class | Cursor |
| A class representing a position in a DataExtractor, as well as any error encountered during extraction. More... |
| Public Member Functions | |
|---|---|
| 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. |
Definition at line 38 of file DataExtractor.h.
| llvm::DataExtractor::DataExtractor ( StringRef Data, bool IsLittleEndian, uint8_t AddressSize ) | inline |
|---|
◆ DataExtractor() [2/2]
◆ eof()
Return true iff the cursor is at the end of the buffer, regardless of the error state of the cursor.
The only way both eof and error states can be true is if one attempts a read while the cursor is at the very end of the data buffer.
Definition at line 710 of file DataExtractor.h.
References llvm::CallingConv::C, and size().
◆ getAddress() [1/2]
Extract a pointer-sized unsigned integer from the location given by the cursor.
In case of an extraction error, or if the cursor is already in an error state, zero is returned.
Definition at line 331 of file DataExtractor.h.
References llvm::CallingConv::C, and getUnsigned().
◆ getAddress() [2/2]
Extract an pointer from *offset_ptr.
Extract a single pointer from the data and update the offset pointed to by offset_ptr. The size of the extracted pointer is getAddressSize(), so the address size has to be set correctly prior to extracting any pointer values.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|
Returns
The extracted pointer value as a 64 integer.
Definition at line 324 of file DataExtractor.h.
References getUnsigned().
◆ getAddressSize()
| uint8_t llvm::DataExtractor::getAddressSize ( ) const | inline |
|---|
◆ getBytes() [1/2]
◆ getBytes() [2/2]
Extract a fixed number of bytes from the specified offset.
Returns a StringRef for the bytes from the data at the offset pointed to by OffsetPtr. A fixed length C string will be extracted and the OffsetPtr will be advanced by Length bytes.
Parameters
| [in,out] | OffsetPtr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in] | Length | The number of bytes to extract. If there are not enough bytes in the data to extract all of the bytes, the offset will be left unmodified. |
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
A StringRef for the extracted bytes. If the offset pointed to by OffsetPtr is out of bounds, or if the offset plus the length is out of bounds, a default-initialized StringRef will be returned.
Definition at line 181 of file DataExtractor.cpp.
References isError(), and llvm::Length.
Referenced by llvm::AMDGPUDisassembler::decodeKernelDescriptorDirective(), getBytes(), getFixedLengthString(), and getUUID().
◆ getCStr() [1/2]
◆ getCStr() [2/2]
Extract a C string from *offset_ptr.
Returns a pointer to a C String from the data at the offset pointed to by offset_ptr. A variable length NULL terminated C string will be extracted and the offset_ptr will be updated with the offset of the byte that follows the NULL terminator byte.
Parameters
| [in,out] | OffsetPtr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
A pointer to the C string value in the data. If the offset pointed to by offset_ptr is out of bounds, or if the offset plus the length of the C string is out of bounds, NULL will be returned.
Definition at line 126 of file DataExtractor.h.
References llvm::StringRef::data(), and getCStrRef().
Referenced by llvm::DWARFContext::dump(), dumpStringOffsetsSection(), llvm::DWARFFormValue::getAsCString(), getIndexedString(), llvm::DWARFDebugLine::LineTable::parse(), and llvm::DWARFFormValue::skipValue().
◆ getCStrRef() [1/2]
◆ getCStrRef() [2/2]
Extract a C string from *offset_ptr.
Returns a StringRef for the C String from the data at the offset pointed to by offset_ptr. A variable length NULL terminated C string will be extracted and the offset_ptr will be updated with the offset of the byte that follows the NULL terminator byte.
Parameters
| [in,out] | OffsetPtr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
A StringRef for the C string value in the data. If the offset pointed to by offset_ptr is out of bounds, or if the offset plus the length of the C string is out of bounds, a default-initialized StringRef will be returned.
Definition at line 156 of file DataExtractor.cpp.
References llvm::createStringError(), llvm::illegal_byte_sequence, isError(), and llvm::StringRef::npos.
Referenced by llvm::DWARFDebugPubTable::extract(), getCStr(), getCStr(), getCStrRef(), and parseV2DirFileTables().
◆ getData()
| StringRef llvm::DataExtractor::getData ( ) const | inline |
|---|
◆ getError()
| Error & llvm::DataExtractor::getError ( Cursor & C) | inlinestaticprotected |
|---|
◆ getFixedLengthString()
Extract a fixed length string from *OffsetPtr and consume Length bytes.
Returns a StringRef for the string from the data at the offset pointed to by OffsetPtr. A fixed length C string will be extracted and the OffsetPtr will be advanced by Length bytes.
Parameters
| [in,out] | OffsetPtr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in] | Length | The length of the fixed length string to extract. If there are not enough bytes in the data to extract the full string, the offset will be left unmodified. |
| [in] | TrimChars | A set of characters to trim from the end of the string. Fixed length strings are commonly either NULL terminated by one or more zero bytes. Some clients have one or more spaces at the end of the string, but a good default is to trim the NULL characters. |
Returns
A StringRef for the C string value in the data. If the offset pointed to by OffsetPtr is out of bounds, or if the offset plus the length of the C string is out of bounds, a default-initialized StringRef will be returned.
Definition at line 174 of file DataExtractor.cpp.
References getBytes(), llvm::Length, and llvm::StringRef::trim().
Referenced by getUUID().
◆ getOffset()
| uint64_t & llvm::DataExtractor::getOffset ( Cursor & C) | inlinestaticprotected |
|---|
◆ getS16() [1/2]
| int16_t llvm::DataExtractor::getS16 ( Cursor & C) const | inline |
|---|
Extract a int16_t value from *OffsetPtr.
In case of an extraction error, or if the cursor is already in an error state, zero is returned and the offset is left unmodified.
Definition at line 483 of file DataExtractor.h.
References llvm::CallingConv::C, and getU16().
◆ getS16() [2/2]
| int16_t llvm::DataExtractor::getS16 ( uint64_t * OffsetPtr, Error * Err = nullptr ) const | inline |
|---|
Extract a int16_t value from *OffsetPtr.
In case of an extraction error, or if error is already set, zero is returned and the offset is left unmodified.
Definition at line 476 of file DataExtractor.h.
References getU16().
Referenced by getSigned().
◆ getS32() [1/2]
| int32_t llvm::DataExtractor::getS32 ( Cursor & C) const | inline |
|---|
Extract a int32_t value from *OffsetPtr.
In case of an extraction error, or if the cursor is already in an error state, zero is returned and the offset is left unmodified.
Definition at line 576 of file DataExtractor.h.
References llvm::CallingConv::C, and getU32().
◆ getS32() [2/2]
| int32_t llvm::DataExtractor::getS32 ( uint64_t * OffsetPtr, Error * Err = nullptr ) const | inline |
|---|
Extract a int32_t value from *OffsetPtr.
In case of an extraction error, or if error is already set, zero is returned and the offset is left unmodified.
Definition at line 569 of file DataExtractor.h.
References getU32().
Referenced by getSigned().
◆ getS64() [1/2]
| int64_t llvm::DataExtractor::getS64 ( Cursor & C) const | inline |
|---|
Extract a int64_t value from *OffsetPtr.
In case of an extraction error, or if the cursor is already in an error state, zero is returned and the offset is left unmodified.
Definition at line 641 of file DataExtractor.h.
References llvm::CallingConv::C, and getU64().
◆ getS64() [2/2]
| int64_t llvm::DataExtractor::getS64 ( uint64_t * OffsetPtr, Error * Err = nullptr ) const | inline |
|---|
Extract a int64_t value from *OffsetPtr.
In case of an extraction error, or if error is already set, zero is returned and the offset is left unmodified.
Definition at line 634 of file DataExtractor.h.
References getU64().
Referenced by getSigned().
◆ getS8() [1/2]
| int8_t llvm::DataExtractor::getS8 ( Cursor & C) const | inline |
|---|
Extract a int8_t value from *OffsetPtr.
In case of an extraction error, or if the cursor is already in an error state, zero is returned and the offset is left unmodified.
Definition at line 416 of file DataExtractor.h.
References llvm::CallingConv::C, and getU8().
◆ getS8() [2/2]
| int8_t llvm::DataExtractor::getS8 ( uint64_t * OffsetPtr, Error * Err = nullptr ) const | inline |
|---|
Extract a int8_t value from *OffsetPtr.
In case of an extraction error, or if error is already set, zero is returned and the offset is left unmodified.
Definition at line 409 of file DataExtractor.h.
References getU8().
Referenced by getSigned().
◆ getSigned()
Extract an signed integer of size byte_size from *offset_ptr.
Extract a single signed integer value (sign extending if required) and update the offset pointed to by offset_ptr. The size of the extracted integer is specified by the byte_size argument. byte_size should have a value greater than or equal to one and less than or equal to eight since the return value is 64 bits wide. Any byte_size values less than 1 or greater than 8 will result in nothing being extracted, and zero being returned.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in] | size | The size in bytes of the integer to extract. |
Returns
The sign extended signed integer value that was extracted, or zero on failure.
Definition at line 142 of file DataExtractor.cpp.
References getS16(), getS32(), getS64(), getS8(), and llvm_unreachable.
Referenced by llvm::DWARFDataExtractorBase< Relocator >::getEncodedPointer(), and loadNaiveFormatLog().
◆ getSLEB128() [1/2]
| int64_t llvm::DataExtractor::getSLEB128 ( Cursor & C) const | inline |
|---|
◆ getSLEB128() [2/2]
| int64_t DataExtractor::getSLEB128 | ( | uint64_t * | OffsetPtr, |
|---|---|---|---|
| Error * | Err = nullptr ) const |
Extract a signed LEB128 value from *offset_ptr.
Extracts an signed LEB128 number from this object's data starting at the offset pointed to by offset_ptr. The offset pointed to by offset_ptr will be updated with the offset of the byte following the last extracted byte.
Parameters
| [in,out] | OffsetPtr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted signed integer value.
Definition at line 225 of file DataExtractor.cpp.
References llvm::decodeSLEB128(), and getLEB128().
Referenced by llvm::DWARFDataExtractorBase< Relocator >::getEncodedPointer(), llvm::DWARFDebugLine::LineTable::parse(), and llvm::DWARFFormValue::skipValue().
◆ getU16() [1/3]
◆ getU16() [2/3]
Extract a uint16_t value from *offset_ptr.
Extract a single uint16_t from the binary data at the offset pointed to by offset_ptr, and update the offset on success.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted uint16_t value.
Definition at line 93 of file DataExtractor.cpp.
Referenced by llvm::AMDGPUDisassembler::decodeKernelDescriptorDirective(), llvm::DWARFDebugNames::Header::extract(), llvm::DWARFDebugPubTable::extract(), llvm::DWARFUnitHeader::extract(), getIndexedString(), getS16(), getS16(), getUnsigned(), llvm::DWARFVerifier::handleDebugStrOffsets(), loadNaiveFormatLog(), llvm::xray::loadTrace(), llvm::DWARFDebugLine::Prologue::parse(), llvm::parseInfoSectionUnitHeader(), llvm::xray::readBinaryFormatHeader(), and llvm::DWARFFormValue::skipValue().
◆ getU16() [3/3]
Extract count uint16_t values from *offset_ptr.
Extract count uint16_t values from the binary data at the offset pointed to by offset_ptr, and advance the offset on success. The extracted values are copied into dst.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [out] | dst | A buffer to copy count uint16_t values into. dst must be large enough to hold all requested data. |
| [in] | count | The number of uint16_t values to extract. |
Returns
dst if all values were properly extracted and copied, NULL otherise.
Definition at line 97 of file DataExtractor.cpp.
References llvm::count().
◆ getU24() [1/2]
Extract a single 24-bit unsigned value from the location given by the cursor.
In case of an extraction error, or if the cursor is already in an error state, zero is returned.
Definition at line 511 of file DataExtractor.h.
References llvm::CallingConv::C, and getU24().
Referenced by getU24().
◆ getU24() [2/2]
Extract a 24-bit unsigned value from *offset_ptr and return it in a uint32_t.
Extract 3 bytes from the binary data at the offset pointed to by offset_ptr, construct a uint32_t from them and update the offset on success.
Parameters
| [in,out] | OffsetPtr | A pointer to an offset within the data that will be advanced by the 3 bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted 24-bit value represented in a uint32_t.
Definition at line 102 of file DataExtractor.cpp.
References llvm::Uint24::getAsUint32(), and llvm::sys::IsLittleEndianHost.
Referenced by getIndexedString().
◆ getU32() [1/3]
◆ getU32() [2/3]
Extract a uint32_t value from *offset_ptr.
Extract a single uint32_t from the binary data at the offset pointed to by offset_ptr, and update the offset on success.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted uint32_t value.
Definition at line 108 of file DataExtractor.cpp.
Referenced by debugStrOffsetsHeaderSize(), llvm::AMDGPUDisassembler::decodeKernelDescriptorDirective(), llvm::DWARFDebugNames::Header::extract(), getIndexedString(), getS32(), getS32(), getUnsigned(), getUUID(), loadNaiveFormatLog(), llvm::parseInfoSectionUnitHeader(), llvm::xray::readBinaryFormatHeader(), and llvm::DWARFFormValue::skipValue().
◆ getU32() [3/3]
Extract count uint32_t values from *offset_ptr.
Extract count uint32_t values from the binary data at the offset pointed to by offset_ptr, and advance the offset on success. The extracted values are copied into dst.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [out] | dst | A buffer to copy count uint32_t values into. dst must be large enough to hold all requested data. |
| [in] | count | The number of uint32_t values to extract. |
Returns
dst if all values were properly extracted and copied, NULL otherise.
Definition at line 112 of file DataExtractor.cpp.
References llvm::count().
◆ getU64() [1/3]
◆ getU64() [2/3]
Extract a uint64_t value from *offset_ptr.
Extract a single uint64_t from the binary data at the offset pointed to by offset_ptr, and update the offset on success.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted uint64_t value.
Definition at line 117 of file DataExtractor.cpp.
Referenced by llvm::DWARFUnitHeader::extract(), getCUIdentifiers(), getS64(), getS64(), getUnsigned(), loadNaiveFormatLog(), llvm::parseInfoSectionUnitHeader(), and llvm::xray::readBinaryFormatHeader().
◆ getU64() [3/3]
Extract count uint64_t values from *offset_ptr.
Extract count uint64_t values from the binary data at the offset pointed to by offset_ptr, and advance the offset on success. The extracted values are copied into dst.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [out] | dst | A buffer to copy count uint64_t values into. dst must be large enough to hold all requested data. |
| [in] | count | The number of uint64_t values to extract. |
Returns
dst if all values were properly extracted and copied, NULL otherise.
Definition at line 121 of file DataExtractor.cpp.
References llvm::count().
◆ getU8() [1/5]
◆ getU8() [2/5]
Extract Count uint8_t values from the location given by the cursor and store them into the destination vector.
The vector is resized to fit the extracted data. In case of an extraction error, or if the cursor is already in an error state, the destination vector is left unchanged and cursor is placed into an error state.
Definition at line 397 of file DataExtractor.h.
References llvm::CallingConv::C, llvm::Count, getU8(), and isValidOffsetForDataOfSize().
◆ getU8() [3/5]
Extract Count uint8_t values from the location given by the cursor and store them into the destination buffer.
In case of an extraction error, or if the cursor is already in an error state, a nullptr is returned and the destination buffer is left unchanged.
Definition at line 89 of file DataExtractor.cpp.
References llvm::CallingConv::C, and llvm::Count.
◆ getU8() [4/5]
Extract a uint8_t value from *offset_ptr.
Extract a single uint8_t from the binary data at the offset pointed to by offset_ptr, and advance the offset on success.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted uint8_t value.
Definition at line 80 of file DataExtractor.cpp.
Referenced by llvm::DWARFDebugNames::Header::extract(), llvm::DWARFDebugPubTable::extract(), llvm::DWARFUnitHeader::extract(), getCUAbbrev(), getCUIdentifiers(), getIndexedString(), getS8(), getS8(), getU8(), getUnsigned(), loadNaiveFormatLog(), llvm::DWARFDebugLine::LineTable::parse(), llvm::DWARFDebugLine::Prologue::parse(), llvm::parseInfoSectionUnitHeader(), parseV5EntryFormat(), and llvm::DWARFFormValue::skipValue().
◆ getU8() [5/5]
Extract count uint8_t values from *offset_ptr.
Extract count uint8_t values from the binary data at the offset pointed to by offset_ptr, and advance the offset on success. The extracted values are copied into dst.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [out] | dst | A buffer to copy count uint8_t values into. dst must be large enough to hold all requested data. |
| [in] | count | The number of uint8_t values to extract. |
Returns
dst if all values were properly extracted and copied, NULL otherise.
Definition at line 84 of file DataExtractor.cpp.
References llvm::count().
◆ getULEB128() [1/2]
◆ getULEB128() [2/2]
Extract a unsigned LEB128 value from *offset_ptr.
Extracts an unsigned LEB128 number from this object's data starting at the offset pointed to by offset_ptr. The offset pointed to by offset_ptr will be updated with the offset of the byte following the last extracted byte.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The extracted unsigned integer value.
Definition at line 221 of file DataExtractor.cpp.
References llvm::decodeULEB128(), and getLEB128().
Referenced by llvm::DWARFDie::dump(), llvm::DWARFDebugInfoEntry::extractFast(), getCUAbbrev(), getCUIdentifiers(), llvm::DWARFDataExtractorBase< Relocator >::getEncodedPointer(), llvm::DWARFDebugNames::NameIndex::getEntry(), getIndexedString(), llvm::DWARFDebugLine::LineTable::parse(), parseV2DirFileTables(), parseV5DirFileTables(), parseV5EntryFormat(), llvm::object::MachOObjectFile::ReadULEB128s(), and llvm::DWARFFormValue::skipValue().
◆ getUnsigned() [1/2]
Extract an unsigned integer of the given size from the location given by the cursor.
In case of an extraction error, or if the cursor is already in an error state, zero is returned.
Definition at line 278 of file DataExtractor.h.
References llvm::CallingConv::C, getUnsigned(), and Size.
◆ getUnsigned() [2/2]
Extract an unsigned integer of size byte_size from *offset_ptr.
Extract a single unsigned integer value and update the offset pointed to by offset_ptr. The size of the extracted integer is specified by the byte_size argument. byte_size should have a value greater than or equal to one and less than or equal to eight since the return value is 64 bits wide. Any byte_size values less than 1 or greater than 8 will result in nothing being extracted, and zero being returned.
Parameters
| [in,out] | offset_ptr | A pointer to an offset within the data that will be advanced by the appropriate number of bytes if the value is extracted correctly. If the offset is out of bounds or there are not enough bytes to extract this value, the offset will be left unmodified. |
|---|---|---|
| [in] | byte_size | The size in byte of the integer to extract. |
| [in,out] | Err | A pointer to an Error object. Upon return the Error object is set to indicate the result (success/failure) of the function. If the Error object is already set when calling this function, no extraction is performed. |
Returns
The unsigned integer value that was extracted, or zero on failure.
Definition at line 126 of file DataExtractor.cpp.
References getU16(), getU32(), getU64(), getU8(), and llvm_unreachable.
Referenced by llvm::DWARFDebugPubTable::extract(), llvm::DWARFUnitHeader::extract(), getAddress(), getAddress(), llvm::DWARFDataExtractorBase< Relocator >::getEncodedPointer(), llvm::DWARFDataExtractor::getRelocatedValueImpl(), llvm::DWARFDataExtractorSimple::getRelocatedValueImpl(), and getUnsigned().
◆ isLittleEndian()
| bool llvm::DataExtractor::isLittleEndian ( ) const | inline |
|---|
◆ isValidOffset()
| bool llvm::DataExtractor::isValidOffset ( uint64_t offset) const | inline |
|---|
Test the validity of offset.
Returns
true if offset is a valid offset into the data in this object, false otherwise.
Definition at line 717 of file DataExtractor.h.
References size().
Referenced by llvm::DWARFContext::dump(), llvm::DWARFDie::dump(), dumpAddrSection(), dumpRnglistsSection(), llvm::DWARFUnitHeader::extract(), llvm::DWARFDebugInfoEntry::extractFast(), llvm::DWARFDebugNames::NameIndex::getEntry(), llvm::DWARFDebugLine::getOrParseLineTable(), isValidOffsetForDataOfSize(), loadNaiveFormatLog(), and llvm::parseInfoSectionUnitHeader().
◆ isValidOffsetForAddress()
| bool llvm::DataExtractor::isValidOffsetForAddress ( uint64_t offset) const | inline |
|---|
Test the availability of enough bytes of data for a pointer from offset.
The size of a pointer is getAddressSize().
Returns
true if offset is a valid offset and there are enough bytes for a pointer available at that offset, false otherwise.
Definition at line 735 of file DataExtractor.h.
References isValidOffsetForDataOfSize().
◆ isValidOffsetForDataOfSize()
◆ setAddressSize()
| void llvm::DataExtractor::setAddressSize ( uint8_t Size) | inline |
|---|
◆ size()
| size_t llvm::DataExtractor::size ( ) const | inline |
|---|
◆ skip()
The documentation for this class was generated from the following files:
- include/llvm/Support/DataExtractor.h
- lib/Support/DataExtractor.cpp