Index: test/tools/llvm-objdump/X86/Inputs/debug-info-fileinfo.S =================================================================== --- /dev/null +++ test/tools/llvm-objdump/X86/Inputs/debug-info-fileinfo.S @@ -0,0 +1,15 @@ +// clang -g debug-info-fileinfo.S -o debug-info-fileinfo.exe -nostdlib + + +.text + +.global _start; .type _start, STT_FUNC; _start: + ret + +.global foo; .type foo, STT_FUNC; foo: + # foo + # bar + # baz + nop + nop + ret Index: test/tools/llvm-objdump/X86/debug-info-fileinfo.test =================================================================== --- /dev/null +++ test/tools/llvm-objdump/X86/debug-info-fileinfo.test @@ -0,0 +1,3 @@ +// RUN: llvm-objdump -S %p/Inputs/debug-info-fileinfo.exe.elf-x86_64 | FileCheck %s + +// CHECK: Disassembly of section .text: Index: tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- tools/llvm-objdump/llvm-objdump.cpp +++ tools/llvm-objdump/llvm-objdump.cpp @@ -485,10 +485,13 @@ auto FileBuffer = SourceCache.find(LineInfo.FileName); if (FileBuffer != SourceCache.end()) { auto LineBuffer = LineCache.find(LineInfo.FileName); - if (LineBuffer != LineCache.end()) + if (LineBuffer != LineCache.end()) { + if (LineInfo.Line > LineBuffer->second.size()) + return; // Vector begins at 0, line numbers are non-zero OS << Delimiter << LineBuffer->second[LineInfo.Line - 1].ltrim() << "\n"; + } } } OldLineInfo = LineInfo;