summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2017-09-27 09:33:45 +0000
committerJonas Devlieghere <jonas@devlieghere.com>2017-09-27 09:33:45 +0000
commit65af0f958418dd20932c2dc5ea650f8b45448353 (patch)
treeaad7a27e7dcde3158f20462fb6138198f35e01b8
parent2064e8227723542cd0f1a5ed71f69a5e388e7f5f (diff)
downloadbcm5719-llvm-65af0f958418dd20932c2dc5ea650f8b45448353.tar.gz
bcm5719-llvm-65af0f958418dd20932c2dc5ea650f8b45448353.zip
[dwarfdump] Add support for -debug-line=OFFSET
This patch adds support for passing an offset to -debug-line. Differential revision: https://reviews.llvm.org/D38240 llvm-svn: 314288
-rw-r--r--llvm/lib/DebugInfo/DWARF/DWARFContext.cpp3
-rw-r--r--llvm/test/DebugInfo/Generic/lto-comp-dir.ll4
-rw-r--r--llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll8
-rw-r--r--llvm/test/tools/llvm-dwarfdump/X86/debug_line_offset.test28
4 files changed, 40 insertions, 3 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
index 8bb47c94d54..f6c8499c94e 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
@@ -331,12 +331,15 @@ void DWARFContext::dump(
if (!CUDIE)
continue;
if (auto StmtOffset = toSectionOffset(CUDIE.find(DW_AT_stmt_list))) {
+ if (DumpOffset && *StmtOffset != *DumpOffset)
+ continue;
DWARFDataExtractor lineData(*DObj, DObj->getLineSection(),
isLittleEndian(), savedAddressByteSize);
DWARFDebugLine::LineTable LineTable;
uint32_t Offset = *StmtOffset;
// Verbose dumping is done during parsing and not on the intermediate
// representation.
+ OS << "debug_line[" << format("%16.16" PRIx64, Offset) << "]\n";
if (DumpOpts.Verbose) {
LineTable.parse(lineData, &Offset, &OS);
} else {
diff --git a/llvm/test/DebugInfo/Generic/lto-comp-dir.ll b/llvm/test/DebugInfo/Generic/lto-comp-dir.ll
index c624d4f181d..10766495e85 100644
--- a/llvm/test/DebugInfo/Generic/lto-comp-dir.ll
+++ b/llvm/test/DebugInfo/Generic/lto-comp-dir.ll
@@ -8,12 +8,14 @@
; to refer to it.
; CHECK: .debug_line contents:
+; CHECK-NEXT: debug_line[0000000000000000]
; CHECK-NEXT: Line table prologue:
; CHECK-NOT: include_directories
; CHECK: file_names[ 1] 0 {{.*}} a.cpp
; CHECK-NOT: file_names
-; CHECK: Line table prologue:
+; CHECK: debug_line[0000000000000039]
+; CHECK-NEXT: Line table prologue:
; CHECK-NOT: include_directories
; CHECK: file_names[ 1] 0 {{.*}} b.cpp
; CHECK-NOT: file_names
diff --git a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
index 40678e95041..a7a9bda000f 100644
--- a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
+++ b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
@@ -24,10 +24,12 @@
; CHECK: .debug_line contents:
+; CHECK-NEXT: debug_line[0000000000000000]
; CHECK-NEXT: Line table prologue:
; CHECK-NEXT: total_length: 0x00000038
; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple.c
-; CHECK: Line table prologue:
+; CHECK: debug_line[000000000000003c]
+; CHECK-NEXT: Line table prologue:
; CHECK-NEXT: total_length: 0x00000039
; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple2.c
; CHECK-NOT: file_names
@@ -41,10 +43,12 @@
; DWARF3: .debug_line contents:
+; DWARF3-NEXT: debug_line[0000000000000000]
; DWARF3-NEXT: Line table prologue:
; DWARF3-NEXT: total_length: 0x00000038
; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple.c
-; DWARF3: Line table prologue:
+; DWARF3: debug_line[000000000000003c]
+; DWARF3-NEXT: Line table prologue:
; DWARF3-NEXT: total_length: 0x00000039
; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple2.c
; DWARF3-NOT: file_names
diff --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_line_offset.test b/llvm/test/tools/llvm-dwarfdump/X86/debug_line_offset.test
new file mode 100644
index 00000000000..4b73134fdf1
--- /dev/null
+++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_line_offset.test
@@ -0,0 +1,28 @@
+RUN: llvm-dwarfdump %S/../../dsymutil/Inputs/basic-lto-dw4.macho.x86_64.o \
+RUN: -debug-line=0x0 | FileCheck %s --check-prefix=CHECK-A
+
+CHECK-A: debug_line[0000000000000000]
+CHECK-A: Address Line Column File ISA Discriminator Flags
+CHECK-A-NET: ------------------ ------ ------ ------ --- ------------- -------------
+CHECK-A-NET: 0x0000000000000000 26 0 1 0 0 is_stmt
+CHECK-A-NET: 0x0000000000000004 27 10 1 0 0 is_stmt prologue_end
+CHECK-A-NET: 0x0000000000000009 27 3 1 0 0
+CHECK-A-NET: 0x0000000000000074 27 3 1 0 0 end_sequence
+CHECK-A-NOT: debug_line[000000000000009a]
+
+RUN: llvm-dwarfdump %S/../../dsymutil/Inputs/basic-lto-dw4.macho.x86_64.o \
+RUN: -debug-line=0x9a | FileCheck %s --check-prefix=CHECK-B
+
+CHECK-B-NOT: debug_line[0000000000000000]
+CHECK-B: debug_line[000000000000009a]
+CHECK-B: Address Line Column File ISA Discriminator Flags
+CHECK-B-NEXT: ------------------ ------ ------ ------ --- ------------- -------------
+CHECK-B-NEXT: 0x0000000000000050 16 0 1 0 0 is_stmt
+CHECK-B-NEXT: 0x0000000000000054 12 10 1 0 0 is_stmt prologue_end
+CHECK-B-NEXT: 0x000000000000005a 17 7 1 0 0 is_stmt
+CHECK-B-NEXT: 0x000000000000005f 12 10 1 0 0 is_stmt
+CHECK-B-NEXT: 0x0000000000000067 20 1 1 0 0 is_stmt
+CHECK-B-NEXT: 0x0000000000000069 19 18 1 0 0 is_stmt
+CHECK-B-NEXT: 0x000000000000006b 19 10 1 0 0
+CHECK-B-NEXT: 0x0000000000000072 20 1 1 0 0 is_stmt
+CHECK-B-NEXT: 0x0000000000000074 20 1 1 0 0 is_stmt end_sequence
OpenPOWER on IntegriCloud