Index: llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp =================================================================== --- llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp @@ -331,12 +331,15 @@ 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 { Index: llvm/trunk/test/DebugInfo/Generic/lto-comp-dir.ll =================================================================== --- llvm/trunk/test/DebugInfo/Generic/lto-comp-dir.ll +++ llvm/trunk/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 Index: llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll =================================================================== --- llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll +++ llvm/trunk/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 Index: llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_line_offset.test =================================================================== --- llvm/trunk/test/tools/llvm-dwarfdump/X86/debug_line_offset.test +++ llvm/trunk/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