From 4020363746052c8fffeda5e21b5a1c2e6b428921 Mon Sep 17 00:00:00 2001 From: Ahmed Bougacha Date: Wed, 21 Aug 2013 19:40:28 +0000 Subject: [PATCH] MC CFG: Remap enough for data too, analoguous to r188873. llvm-svn: 188925 --- llvm/lib/MC/MCAtom.cpp | 2 +- .../Object/X86/objdump-cfg-invalid-opcode.yaml | 48 ++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 llvm/test/Object/X86/objdump-cfg-invalid-opcode.yaml diff --git a/llvm/lib/MC/MCAtom.cpp b/llvm/lib/MC/MCAtom.cpp index 17a7468..6510289 100644 --- a/llvm/lib/MC/MCAtom.cpp +++ b/llvm/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/llvm/test/Object/X86/objdump-cfg-invalid-opcode.yaml b/llvm/test/Object/X86/objdump-cfg-invalid-opcode.yaml new file mode 100644 index 0000000..ad2de84 --- /dev/null +++ b/llvm/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 +# + +!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
: + +#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 -- 2.7.4