MC CFG: Remap enough for data too, analoguous to r188873.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 21 Aug 2013 19:40:28 +0000 (19:40 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 21 Aug 2013 19:40:28 +0000 (19:40 +0000)
llvm-svn: 188925

llvm/lib/MC/MCAtom.cpp
llvm/test/Object/X86/objdump-cfg-invalid-opcode.yaml [new file with mode: 0644]

index 17a7468..6510289 100644 (file)
@@ -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 (file)
index 0000000..ad2de84
--- /dev/null
@@ -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