From a438b617183924fa0c8d047da4123d52eb6f26ce Mon Sep 17 00:00:00 2001 From: Gerolf Hoflehner Date: Mon, 12 Feb 2018 07:19:05 +0000 Subject: [PATCH] [MC] Issue error message when data region is not terminated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@324868 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MachObjectWriter.cpp | 8 +++++++- test/MC/X86/check-end-of-data-region.s | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 test/MC/X86/check-end-of-data-region.s diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp index c7eaa76ace3..25f451cd4fa 100644 --- a/lib/MC/MachObjectWriter.cpp +++ b/lib/MC/MachObjectWriter.cpp @@ -945,7 +945,13 @@ void MachObjectWriter::writeObject(MCAssembler &Asm, 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() << ")" diff --git a/test/MC/X86/check-end-of-data-region.s b/test/MC/X86/check-end-of-data-region.s new file mode 100644 index 00000000000..3f7d9b617ef --- /dev/null +++ b/test/MC/X86/check-end-of-data-region.s @@ -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 -- 2.11.0