31 "invalid range list offset 0x%" PRIx32, *offset_ptr);
34 if (AddressSize != 4 && AddressSize != 8)
36 "invalid address size: %" PRIu8, AddressSize);
48 if (*offset_ptr != prev_offset + 2 * AddressSize) {
51 "invalid range list entry at offset 0x%" PRIx32,
56 Entries.push_back(Entry);
63 const char *format_str = (AddressSize == 4
64 ?
"%08x %08" PRIx64
" %08" PRIx64
"\n" 65 :
"%08x %016" PRIx64
" %016" PRIx64
"\n");
66 OS <<
format(format_str, Offset, RLE.StartAddress, RLE.EndAddress);
68 OS <<
format(
"%08x <End of list>\n", Offset);
75 if (RLE.isBaseAddressSelectionEntry(AddressSize)) {
76 BaseAddr = {RLE.EndAddress, RLE.SectionIndex};
81 E.
LowPC = RLE.StartAddress;
This class represents lattice values for constants.
uint64_t SectionIndex
A section index this range belongs to.
void dump(raw_ostream &OS) const
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
DWARFAddressRangesVector getAbsoluteRanges(llvm::Optional< SectionedAddress > BaseAddr) const
getAbsoluteRanges - Returns absolute address ranges defined by this range list.
static ErrorSuccess success()
Create a success value.
uint64_t EndAddress
An ending address offset.
bool isEndOfListEntry() const
The end of any given range list is marked by an end of list entry, which consists of a 0 for the begi...
std::vector< DWARFAddressRange > DWARFAddressRangesVector
DWARFAddressRangesVector - represents a set of absolute address ranges.
Lightweight error class with error context and mandatory checking.
This class implements an extremely fast bulk output stream that can only output to a stream...
uint64_t StartAddress
A beginning address offset.
Error createStringError(std::error_code EC, char const *Fmt, const Ts &... Vals)
Create formatted StringError object.
Error extract(const DWARFDataExtractor &data, uint32_t *offset_ptr)