Skip to content

Commit 5e7662e

Browse files
[llvm-debuginfo-analyzer] Incorrect DW_AT_call_line/DW_AT_call_file. (#115701)
The code dealing with DW_AT_call_line/DW_AT_call_file is in the wrong place. The correct functions were call, but with incorrect values: DW_AT_call_line <-- Filename Index DW_AT_call_file <-- Line number
1 parent 1ca64c5 commit 5e7662e

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1742,7 +1742,7 @@ DWARF - Clang (Linux)
17421742
[003] 3 {Variable} 'Var_1' -> 'int'
17431743
[002] 11 {Function} extern not_inlined 'test' -> 'int'
17441744
[003] 12 {Variable} 'A' -> 'int'
1745-
[003] 14 {InlinedFunction} inlined 'InlineFunction' -> 'int'
1745+
[003] 13 {InlinedFunction} inlined 'InlineFunction' -> 'int'
17461746
[004] {Block}
17471747
[005] {Variable} 'Var_2' -> 'int'
17481748
[004] {Parameter} 'Param' -> 'int'

llvm/lib/DebugInfo/LogicalView/Readers/LVDWARFReader.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,12 @@ void LVDWARFReader::processOneAttribute(const DWARFDie &Die,
304304
CurrentElement->setBitSize(*FormValue.getAsUnsignedConstant());
305305
break;
306306
case dwarf::DW_AT_call_file:
307-
CurrentElement->setCallFilenameIndex(GetAsUnsignedConstant());
307+
CurrentElement->setCallFilenameIndex(IncrementFileIndex
308+
? GetAsUnsignedConstant() + 1
309+
: GetAsUnsignedConstant());
308310
break;
309311
case dwarf::DW_AT_call_line:
310-
CurrentElement->setCallLineNumber(IncrementFileIndex
311-
? GetAsUnsignedConstant() + 1
312-
: GetAsUnsignedConstant());
312+
CurrentElement->setCallLineNumber(GetAsUnsignedConstant());
313313
break;
314314
case dwarf::DW_AT_comp_dir:
315315
CompileUnit->setCompilationDirectory(dwarf::toStringRef(FormValue));

llvm/test/tools/llvm-debuginfo-analyzer/DWARF/05-dwarf-incorrect-lexical-scope-variable.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
; ONE-NEXT: [003] 3 {Variable} 'Var_1' -> 'int'
5151
; ONE-NEXT: [002] 11 {Function} extern not_inlined 'test' -> 'int'
5252
; ONE-NEXT: [003] 12 {Variable} 'A' -> 'int'
53-
; ONE-NEXT: [003] 14 {InlinedFunction} not_inlined 'InlineFunction' -> 'int'
53+
; ONE-NEXT: [003] 13 {InlinedFunction} not_inlined 'InlineFunction' -> 'int'
5454
; ONE-NEXT: [004] {Block}
5555
; ONE-NEXT: [005] {Variable} 'Var_2' -> 'int'
5656
; ONE-NEXT: [004] {Parameter} 'Param' -> 'int'

0 commit comments

Comments
 (0)