[PATCH] D73531: [llvm-objdump] avoid crash disassembling unknown instruction
Sjoerd Meijer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 30 06:40:29 PST 2020
SjoerdMeijer updated this revision to Diff 241437.
SjoerdMeijer added a comment.
Now with a test case (and a comment)!
yaml2obj is a cool tool (I didn't know about but will be very useful)
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73531/new/
https://reviews.llvm.org/D73531
Files:
llvm/test/tools/llvm-objdump/ARM/unknown-instr.test
llvm/tools/llvm-objdump/llvm-objdump.cpp
Index: llvm/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -1431,6 +1431,14 @@
outs() << CommentStream.str();
Comments.clear();
+ // If disassembly has failed, continue with the next instruction, to
+ // avoid analysing invalid/incomplete instruction information.
+ if (!Disassembled) {
+ outs() << "\n";
+ Index += Size;
+ continue;
+ }
+
// Try to resolve the target of a call, tail call, etc. to a specific
// symbol.
if (MIA && (MIA->isCall(Inst) || MIA->isUnconditionalBranch(Inst) ||
Index: llvm/test/tools/llvm-objdump/ARM/unknown-instr.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-objdump/ARM/unknown-instr.test
@@ -0,0 +1,19 @@
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-objdump -D -triple=thumbv8.1m.main-none-eabi -mattr=+mve %t | FileCheck %s
+
+# CHECK: 00000000 .text:
+# CHECK-NEXT: 0: fa 33 adds r3, #250
+# CHECK-NEXT: 2: fe 0c lsrs r6, r7, #19
+# CHECK-NEXT: 4: cb <unknown>
+# CHECK-NEXT: 5: f3 f7 8b be b.w #-49898
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_ARM
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Content: "fa33fe0ccbf3f78bbe"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73531.241437.patch
Type: text/x-patch
Size: 1549 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200130/3f94a216/attachment-0001.bin>
More information about the llvm-commits
mailing list