summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2017-09-29 15:41:22 +0000
committerJonas Devlieghere <jonas@devlieghere.com>2017-09-29 15:41:22 +0000
commita15f25d325f7c2e354b19e0fc80a40e99892d93c (patch)
tree0b08f39b27515b31453f4d928a438ff5a87be595
parentce4ddd06dad33ce272dce9784a0edd1d957ab208 (diff)
downloadbcm5719-llvm-a15f25d325f7c2e354b19e0fc80a40e99892d93c.tar.gz
bcm5719-llvm-a15f25d325f7c2e354b19e0fc80a40e99892d93c.zip
[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
-rw-r--r--llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h2
-rw-r--r--llvm/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp5
-rw-r--r--llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp11
-rw-r--r--llvm/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s2
4 files changed, 11 insertions, 9 deletions
diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
index 0d97c2169e8..f9ec96366a5 100644
--- a/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
+++ b/llvm/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/llvm/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp
index 62bd5af4e64..f0b7ec2751d 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp
+++ b/llvm/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/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index 7f5ef1567ca..27e6a05e6dd 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/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/llvm/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s b/llvm/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s
index 903f9e9ed02..540db462b13 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/verify_die_ranges.s
+++ b/llvm/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
OpenPOWER on IntegriCloud