Skip to content

Symbolize line zero as if no source info is available #124846

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
3 changes: 2 additions & 1 deletion llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/tools/llvm-symbolizer/skip-line-zero.s
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions llvm/test/tools/llvm-symbolizer/sym-verbose.test
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down