[llvm] r324868 - [MC] Issue error message when data region is not terminated

Gerolf Hoflehner via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 11 23:19:05 PST 2018


Author: ghoflehner
Date: Sun Feb 11 23:19:05 2018
New Revision: 324868

URL: http://llvm.org/viewvc/llvm-project?rev=324868&view=rev
Log:
[MC] Issue error message when data region is not terminated

Added:
    llvm/trunk/test/MC/X86/check-end-of-data-region.s
Modified:
    llvm/trunk/lib/MC/MachObjectWriter.cpp

Modified: llvm/trunk/lib/MC/MachObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MachObjectWriter.cpp?rev=324868&r1=324867&r2=324868&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MachObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/MachObjectWriter.cpp Sun Feb 11 23:19:05 2018
@@ -945,7 +945,13 @@ void MachObjectWriter::writeObject(MCAss
          it != ie; ++it) {
     const DataRegionData *Data = &(*it);
     uint64_t Start = getSymbolAddress(*Data->Start, Layout);
-    uint64_t End = getSymbolAddress(*Data->End, Layout);
+    uint64_t End;
+    if (Data->End) 
+      End = getSymbolAddress(*Data->End, Layout);
+    else
+      report_fatal_error("Data region not terminated");
+
+
     DEBUG(dbgs() << "data in code region-- kind: " << Data->Kind
                  << "  start: " << Start << "(" << Data->Start->getName() << ")"
                  << "  end: " << End << "(" << Data->End->getName() << ")"

Added: llvm/trunk/test/MC/X86/check-end-of-data-region.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/check-end-of-data-region.s?rev=324868&view=auto
==============================================================================
--- llvm/trunk/test/MC/X86/check-end-of-data-region.s (added)
+++ llvm/trunk/test/MC/X86/check-end-of-data-region.s Sun Feb 11 23:19:05 2018
@@ -0,0 +1,8 @@
+// RUN: not llvm-mc -triple=x86_64-apple-darwin -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+.align 4
+.data_region jt32
+foo:
+     .long 0
+
+// CHECK-ERROR: LLVM ERROR: Data region not terminated




More information about the llvm-commits mailing list