diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp index 99e1642ff23ad..15eac10688f18 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp @@ -1869,7 +1869,7 @@ DWARFContext::getInliningInfoForAddress(object::SectionedAddress Address, LineTable->getFileLineInfoForAddress( {Address.Address, Address.SectionIndex}, Spec.ApproximateLine, CU->getCompilationDir(), Spec.FLIKind, Frame); - } else { + } else if (CallLine != 0) { // Otherwise, use call file, call line and call column from // previous DIE in inlined chain. if (LineTable) diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp index 939a5163d55ab..a30ae163fa5a9 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp @@ -1508,7 +1508,8 @@ bool DWARFDebugLine::LineTable::getFileLineInfoForAddress( return false; // Take file number and line/column from the row. const auto &Row = Rows[RowIndex]; - if (!getFileNameByIndex(Row.File, CompDir, Kind, Result.FileName)) + if (Row.Line == 0 || + !getFileNameByIndex(Row.File, CompDir, Kind, Result.FileName)) return false; Result.Line = Row.Line; Result.Column = Row.Column; diff --git a/llvm/test/tools/llvm-symbolizer/skip-line-zero.s b/llvm/test/tools/llvm-symbolizer/skip-line-zero.s index e9fbea558e0eb..74dfb5cdc1aae 100644 --- a/llvm/test/tools/llvm-symbolizer/skip-line-zero.s +++ b/llvm/test/tools/llvm-symbolizer/skip-line-zero.s @@ -20,13 +20,13 @@ ## Check that without '--skip-line-zero', line zero is displayed for a line-table entry which has no source correspondence. # RUN: llvm-symbolizer --obj=%t.o -f=none 0x16d4 | FileCheck --strict-whitespace --match-full-lines --check-prefix=DISABLE %s -# DISABLE:main.c:0:0 +# DISABLE:??:0:0 ## Check that the '--skip-line-zero' does not cross sequence boundaries. ## If it fails to find in the current sequence then line zero is returned for the queried address. # RUN: llvm-symbolizer --obj=%t.o -f=none --skip-line-zero 0x16c0 | FileCheck --strict-whitespace --match-full-lines --check-prefix=FAIL-ACROSS-SEQ %s -# FAIL-ACROSS-SEQ:main.c:0:0 +# FAIL-ACROSS-SEQ:??:0:0 ## Check that with '--skip-line-zero', the last non-zero line in the current sequence is displayed. # RUN: llvm-symbolizer --obj=%t.o -f=none --skip-line-zero 0x1717 | FileCheck --strict-whitespace --match-full-lines --check-prefix=WITHIN-SEQ %s diff --git a/llvm/test/tools/llvm-symbolizer/sym-verbose.test b/llvm/test/tools/llvm-symbolizer/sym-verbose.test index 831fd6c7f0507..224c317f558a1 100644 --- a/llvm/test/tools/llvm-symbolizer/sym-verbose.test +++ b/llvm/test/tools/llvm-symbolizer/sym-verbose.test @@ -50,13 +50,12 @@ CHECK-NEXT: Column: 0 CHECK: 0x4005ad CHECK-NEXT: foo -CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c +CHECK-NEXT: Filename: ?? CHECK-NEXT: Function start filename: /tmp{{[\\/]}}discrim.c CHECK-NEXT: Function start line: 4 CHECK-NEXT: Function start address: 0x400590 CHECK-NEXT: Line: 0 -CHECK-NEXT: Column: 30 -CHECK-NEXT: Discriminator: 4 +CHECK-NEXT: Column: 0 CHECK-NEXT: main CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c CHECK-NEXT: Function start filename: /tmp{{[\\/]}}discrim.c