OSDN Git Service

[llvm-objdump] Handle invalid instruction gracefully on ARM
authorEugene Leviant <eleviant@accesssoftek.com>
Thu, 29 Jun 2017 15:38:47 +0000 (15:38 +0000)
committerEugene Leviant <eleviant@accesssoftek.com>
Thu, 29 Jun 2017 15:38:47 +0000 (15:38 +0000)
Differential revision: https://reviews.llvm.org/D34813

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306687 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/Disassembler/ARMDisassembler.cpp
test/tools/llvm-objdump/ARM/invalid-instruction.s [new file with mode: 0644]

index 5857262..5ab236b 100644 (file)
@@ -486,7 +486,7 @@ DecodeStatus ARMDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
     }
   }
 
-  Size = 0;
+  Size = 4;
   return MCDisassembler::Fail;
 }
 
diff --git a/test/tools/llvm-objdump/ARM/invalid-instruction.s b/test/tools/llvm-objdump/ARM/invalid-instruction.s
new file mode 100644 (file)
index 0000000..a63300c
--- /dev/null
@@ -0,0 +1,9 @@
+@RUN: llvm-mc -triple arm-unknown-linux -filetype=obj %s | llvm-objdump -d - | FileCheck %s
+
+.text
+  b l0
+  .inst 0xffffffff
+l0:
+
+@CHECK:            0: 00 00 00 ea   b #0 <l0>
+@CHECK-NEXT:       4: ff ff ff ff  <unknown>