[PATCH] D32466: [llvm-objdump] Don't attempt to print lines beyond the end of file
Petr Hosek via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 25 12:09:28 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL301347: [llvm-objdump] Don't attempt to print lines beyond the end of file (authored by phosek).
Changed prior to commit:
https://reviews.llvm.org/D32466?vs=96600&id=96615#toc
Repository:
rL LLVM
https://reviews.llvm.org/D32466
Files:
llvm/trunk/test/tools/llvm-objdump/X86/Inputs/debug-info-fileinfo.exe.elf-x86_64
llvm/trunk/test/tools/llvm-objdump/X86/debug-info-fileinfo.test
llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
Index: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/trunk/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;
Index: llvm/trunk/test/tools/llvm-objdump/X86/debug-info-fileinfo.test
===================================================================
--- llvm/trunk/test/tools/llvm-objdump/X86/debug-info-fileinfo.test
+++ llvm/trunk/test/tools/llvm-objdump/X86/debug-info-fileinfo.test
@@ -0,0 +1,27 @@
+# Check that debug info line number pointing beyond the end of the file
+# doesn't cause a segmentation fault in llvm-objdump.
+
+# To rebuild the input: clang -g debug-info-fileinfo.S -o debug-info-fileinfo.exe -nostdlib
+
+# RUN: llvm-objdump -S %p/Inputs/debug-info-fileinfo.exe.elf-x86_64 | FileCheck %s
+
+# CHECK: Disassembly of section .text:
+# CHECK: _start
+# CHECK-NEXT: 400078: c3 retq
+# CHECK: foo
+# CHECK-NEXT: 400079: 90 nop
+# CHECK-NEXT: 40007a: 90 nop
+# CHECK-NEXT: 40007b: c3 retq
+
+.text
+
+.global _start; .type _start, STT_FUNC; _start:
+ ret
+
+.global foo; .type foo, STT_FUNC; foo:
+ # foo
+ # bar
+ # baz
+ nop
+ nop
+ ret
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32466.96615.patch
Type: text/x-patch
Size: 1791 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170425/b76c3880/attachment.bin>
More information about the llvm-commits
mailing list