diff options
-rw-r--r-- | lib/MC/MCAtom.cpp | 2 | ||||
-rw-r--r-- | test/Object/X86/objdump-cfg-invalid-opcode.yaml | 48 |
2 files changed, 49 insertions, 1 deletions
diff --git a/lib/MC/MCAtom.cpp b/lib/MC/MCAtom.cpp index 17a7468..6510289 100644 --- a/lib/MC/MCAtom.cpp +++ b/lib/MC/MCAtom.cpp @@ -44,7 +44,7 @@ void MCAtom::remapForSplit(uint64_t SplitPt, void MCDataAtom::addData(const MCData &D) { Data.push_back(D); - if (Data.size() > Begin - End) + if (Data.size() > Begin - End - 1) remap(Begin, End + 1); } diff --git a/test/Object/X86/objdump-cfg-invalid-opcode.yaml b/test/Object/X86/objdump-cfg-invalid-opcode.yaml new file mode 100644 index 0000000..ad2de84 --- /dev/null +++ b/test/Object/X86/objdump-cfg-invalid-opcode.yaml @@ -0,0 +1,48 @@ +# RUN: yaml2obj -format=elf %s | llvm-objdump -d -yaml-cfg=%t - && FileCheck --check-prefix=CFG < %t %s +# REQUIRES: shell +# +# Generated from: +# main: +# .LBL0_1: +# movq 8(%rsi), %rax +# <invalid opcode: 06> + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Content: "488B460806" + +## 0000000000000000 <main>: + +#CFG: Atoms: +#CFG: - StartAddress: 0x0000000000000000 +#CFG: Size: 4 +#CFG: Type: Text + +## 0: 48 8b 46 08 mov 0x8(%rsi),%rax +#CFG: - Inst: MOV64rm +#CFG: Size: 4 +#CFG: Ops: [ RRAX, RRSI, I1, R, I8, R ] + + +#CFG: - StartAddress: 0x0000000000000004 +#CFG: Size: 1 +#CFG: Type: Data + +## 4: 06 (bad) +#CFG: Content: 06 + +Symbols: + Global: + - Name: main + Type: STT_FUNC + Section: .text + Value: 0x0 + Size: 5 |