[DwarfDump] -debug-line=offset applies to .dwo too.
llvm-svn: 318856
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
index cd7a81f..5893f22 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
@@ -379,9 +379,11 @@
if (It != LineToUnit.end())
U = It->second;
DWARFDebugLine::LineTable LineTable;
+ unsigned OldOffset = Offset;
if (!LineTable.Prologue.parse(LineData, &Offset, U))
break;
- LineTable.dump(OS);
+ if (!DumpOffset || OldOffset == *DumpOffset)
+ LineTable.dump(OS);
}
}
diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-line-dwo.cc b/llvm/test/DebugInfo/Inputs/dwarfdump-line-dwo.cc
deleted file mode 100644
index 2784ae2..0000000
--- a/llvm/test/DebugInfo/Inputs/dwarfdump-line-dwo.cc
+++ /dev/null
@@ -1,10 +0,0 @@
-struct foo {
-};
-
-foo f;
-
-// Built with GCC
-// $ mkdir -p /tmp/dbginfo
-// $ cp dwarfdump-line-dwo.cc /tmp/dbginfo
-// $ cd /tmp/dbginfo
-// $ g++ -c -fdebug-types-section dwarfdump-line-dwo.cc -o <output>
diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-line-dwo.elf-x86-64 b/llvm/test/DebugInfo/Inputs/dwarfdump-line-dwo.elf-x86-64
deleted file mode 100644
index 9f1d267..0000000
--- a/llvm/test/DebugInfo/Inputs/dwarfdump-line-dwo.elf-x86-64
+++ /dev/null
Binary files differ
diff --git a/llvm/test/DebugInfo/X86/dwarfdump-line-dwo.s b/llvm/test/DebugInfo/X86/dwarfdump-line-dwo.s
new file mode 100644
index 0000000..b2b7802
--- /dev/null
+++ b/llvm/test/DebugInfo/X86/dwarfdump-line-dwo.s
@@ -0,0 +1,97 @@
+# Dump the complete .debug_line.dwo, then just one part.
+#
+# RUN: llvm-mc -triple x86_64-unknown-unknown -filetype=obj %s -o %t.o
+# RUN: llvm-dwarfdump -debug-line %t.o | FileCheck %s --check-prefixes=PART1,PART2
+# RUN: llvm-dwarfdump -debug-line=0x32 %t.o | FileCheck %s --check-prefix=PART2
+
+ .section .debug_line.dwo,"",@progbits
+LH_1_start:
+ .long LH_1_end-LH_1_version # Length of Unit
+LH_1_version:
+ .short 4 # DWARF version number
+ .long LH_1_header_end-LH_1_params # Length of Prologue
+LH_1_params:
+ .byte 1 # Minimum Instruction Length
+ .byte 1 # Maximum Operations per Instruction
+ .byte 1 # Default is_stmt
+ .byte -5 # Line Base
+ .byte 14 # Line Range
+ .byte 13 # Opcode Base
+ .byte 0 # Standard Opcode Lengths
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ # Directory table
+ .asciz "Directory1"
+ .byte 0
+ # File table
+ .asciz "File1" # File name
+ .byte 1 # Directory index
+ .byte 0x41 # Timestamp
+ .byte 0x42 # File Size
+ .byte 0 # End of list
+LH_1_header_end:
+ # Line number program, which is empty.
+LH_1_end:
+
+# PART1: Line table prologue:
+# PART1-NEXT: total_length: 0x0000002e
+# PART1-NEXT: version: 4
+# PART1-NEXT: prologue_length: 0x00000028
+# PART1: include_directories[ 1] = 'Directory1'
+# PART1: file_names[ 1] {{.*}} File1
+
+# Second line table.
+LH_2_start:
+ .long LH_2_end-LH_2_version # Length of Unit
+LH_2_version:
+ .short 4 # DWARF version number
+ .long LH_2_header_end-LH_2_params # Length of Prologue
+LH_2_params:
+ .byte 1 # Minimum Instruction Length
+ .byte 1 # Maximum Operations per Instruction
+ .byte 1 # Default is_stmt
+ .byte -5 # Line Base
+ .byte 14 # Line Range
+ .byte 13 # Opcode Base
+ .byte 0 # Standard Opcode Lengths
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ # Directory table
+ .asciz "Dir2"
+ .byte 0
+ # File table
+ .asciz "File2" # File name
+ .byte 1 # Directory index
+ .byte 0x14 # Timestamp
+ .byte 0x24 # File Size
+ .byte 0 # End of list
+LH_2_header_end:
+ # Line number program, which is empty.
+LH_2_end:
+
+# PART2: Line table prologue:
+# PART2-NEXT: total_length: 0x00000028
+# PART2-NEXT: version: 4
+# PART2-NEXT: prologue_length: 0x00000022
+# PART2-NOT: prologue:
+# PART2: include_directories[ 1] = 'Dir2'
+# PART2: file_names[ 1] {{.*}} File2
+# PART2-NOT: prologue:
diff --git a/llvm/test/DebugInfo/dwarfdump-line-dwo.test b/llvm/test/DebugInfo/dwarfdump-line-dwo.test
deleted file mode 100644
index 491728e..0000000
--- a/llvm/test/DebugInfo/dwarfdump-line-dwo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-RUN: llvm-dwarfdump -v %p/Inputs/dwarfdump-line-dwo.elf-x86-64 | FileCheck %s
-
-CHECK: .debug_line.dwo contents:
-CHECK: version: 4
-CHECK: max_ops_per_inst: 1
-CHECK: file_names[ 1]{{.*}}dwarfdump-line-dwo.cc