diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2017-09-29 15:41:22 +0000 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2017-09-29 15:41:22 +0000 |
commit | 0fbd59fa1265d5e03a95ec6ec7561b965ae453b8 (patch) | |
tree | e7a350f3c60c4732a1e6bea8ef0ad5e7a6fcaac4 | |
parent | da47d9d5d0e924ba929b86489b5a3892b0b454e2 (diff) |
[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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314523 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h | 2 | ||||
-rw-r--r-- | lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp | 5 | ||||
-rw-r--r-- | lib/DebugInfo/DWARF/DWARFVerifier.cpp | 11 | ||||
-rw-r--r-- | test/tools/llvm-dwarfdump/X86/verify_die_ranges.s | 2 |
4 files changed, 11 insertions, 9 deletions
diff --git a/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h b/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h index 0d97c2169e8..f9ec96366a5 100644 --- a/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h +++ b/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h @@ -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>; diff --git a/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp b/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp index 62bd5af4e64..f0b7ec2751d 100644 --- a/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp +++ b/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp @@ -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; diff --git a/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/lib/DebugInfo/DWARF/DWARFVerifier.cpp index 7f5ef1567ca..27e6a05e6dd 100644 --- a/lib/DebugInfo/DWARF/DWARFVerifier.cpp +++ b/lib/DebugInfo/DWARF/DWARFVerifier.cpp @@ -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; } } diff --git a/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s b/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s index 903f9e9ed02..540db462b13 100644 --- a/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s +++ b/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s @@ -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 |