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 +# 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" 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) ||