37f422f4ac
These global TLS symbols are shared across all shared libraries and therefor should not be assumed to be local to the current module. Also add new error in the linker when TLS relocations are used against undefined symbols. TLS relocations are offsets into the current modules tls data segment, and don't make sense for undefined symbols which are modeled as global imports. Fixes: https://github.com/emscripten-core/emscripten/issues/13398 Differential Revision: https://reviews.llvm.org/D119630
30 lines
732 B
ArmAsm
30 lines
732 B
ArmAsm
# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s
|
|
# RUN: not wasm-ld --shared-memory %t.o -o %t.wasm 2>&1 | FileCheck %s
|
|
|
|
.globl _start
|
|
_start:
|
|
.functype _start () -> ()
|
|
i32.const foo@TLSREL
|
|
i32.const bar@TLSREL
|
|
i32.const baz@TLSREL
|
|
drop
|
|
drop
|
|
drop
|
|
end_function
|
|
|
|
.section .data,"",@
|
|
.globl foo
|
|
foo:
|
|
.int32 0
|
|
.size foo, 4
|
|
|
|
.section .bss,"",@
|
|
.globl bar
|
|
bar:
|
|
.int32 0
|
|
.size bar, 4
|
|
|
|
# CHECK: relocation R_WASM_MEMORY_ADDR_TLS_SLEB cannot be used against `foo` in non-TLS section: .data
|
|
# CHECK: relocation R_WASM_MEMORY_ADDR_TLS_SLEB cannot be used against `bar` in non-TLS section: .bss
|
|
# CHECK: relocation R_WASM_MEMORY_ADDR_TLS_SLEB cannot be used against an undefined symbol `baz`
|