[dwarfdump][NFC] Consistent printing of address ranges

This implement the insertion operator for DWARF address ranges so they
are consistently printed as [LowPC, HighPC).

While a dump method might have felt more consistent, it is used
exclusively for printing error messages in the verifier and never used
for actual dumping. Hence this approach is more intuitive and creates
less clutter at the call sites.

Differential revision: https://reviews.llvm.org/D38395

llvm-svn: 314523
This commit is contained in:
Jonas Devlieghere 2017-09-29 15:41:22 +00:00
parent ce4ddd06da
commit a15f25d325
4 changed files with 11 additions and 9 deletions

View File

@ -57,6 +57,8 @@ static inline bool operator<(const DWARFAddressRange &LHS,
return std::tie(LHS.LowPC, LHS.HighPC) < std::tie(RHS.LowPC, RHS.HighPC);
}
raw_ostream &operator<<(raw_ostream &OS, const DWARFAddressRange &R);
/// DWARFAddressRangesVector - represents a set of absolute address ranges.
using DWARFAddressRangesVector = std::vector<DWARFAddressRange>;

View File

@ -17,6 +17,11 @@
using namespace llvm;
raw_ostream &llvm::operator<<(raw_ostream &OS, const DWARFAddressRange &R) {
return OS << format("[0x%16.16" PRIx64 ", 0x%16.16" PRIx64 ")", R.LowPC,
R.HighPC);
}
void DWARFDebugRangeList::clear() {
Offset = -1U;
AddressSize = 0;

View File

@ -315,9 +315,7 @@ unsigned DWARFVerifier::verifyDieRanges(const DWARFDie &Die,
for (auto Range : Ranges) {
if (!Range.valid()) {
++NumErrors;
error() << format("Invalid address range [0x%08" PRIx64 " - 0x%08" PRIx64
"].\n",
Range.LowPC, Range.HighPC);
error() << "Invalid address range " << Range << "\n";
continue;
}
@ -325,11 +323,8 @@ unsigned DWARFVerifier::verifyDieRanges(const DWARFDie &Die,
const auto IntersectingRange = RI.insert(Range);
if (IntersectingRange != RI.Ranges.end()) {
++NumErrors;
error() << format("DIE has overlapping address ranges: [0x%08" PRIx64
" - 0x%08" PRIx64 "] and [0x%08" PRIx64
" - 0x%08" PRIx64 "].\n",
Range.LowPC, Range.HighPC, IntersectingRange->LowPC,
IntersectingRange->HighPC);
error() << "DIE has overlapping address ranges: " << Range << " and "
<< *IntersectingRange << "\n";
break;
}
}

View File

@ -3,7 +3,7 @@
# RUN: | FileCheck %s
# CHECK: Verifying .debug_info Unit Header Chain...
# CHECK-NEXT: error: Invalid address range [0x00000007 - 0x00000006].
# CHECK-NEXT: error: Invalid address range [0x0000000000000007, 0x0000000000000006)
.section __TEXT,__text,regular,pure_instructions
.macosx_version_min 10, 12