[MC][WebAssembly] Error on data symbols in the text section.

Previously we had an assert but this can actually occur in valid user
code so we need to handle this in release builds too.

Differential Revision: https://reviews.llvm.org/D67997

llvm-svn: 372934
This commit is contained in:
Sam Clegg 2019-09-25 23:33:16 +00:00
parent f8804047af
commit 079cba04bf
2 changed files with 16 additions and 1 deletions

View File

@ -1350,7 +1350,9 @@ uint64_t WasmObjectWriter::writeObject(MCAssembler &Asm,
report_fatal_error(".size expression must be evaluatable");
auto &DataSection = static_cast<MCSectionWasm &>(WS.getSection());
assert(DataSection.isWasmData());
if (!DataSection.isWasmData())
report_fatal_error("data symbols must live in a data section: " +
WS.getName());
// For each data symbol, export it in the symtab as a reference to the
// corresponding Wasm data segment.

View File

@ -0,0 +1,13 @@
; RUN: not llc -filetype=obj %s -o /dev/null 2>&1 | FileCheck %s
; CHECK: data symbols must live in a data section: data_symbol
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown"
@data_symbol = constant [1024 x i32] zeroinitializer, section ".text", align 16
define hidden i32 @main() local_unnamed_addr #0 {
entry:
%0 = load i32, i32* getelementptr inbounds ([1024 x i32], [1024 x i32]* @data_symbol, i32 0, i32 10)
ret i32 %0
}