Sam Clegg 44177e5fb2 [WebAssembly] Add explict TLS symbol flag
As before we maintain backwards compat with older object files
by also infering the TLS flag based on the name of the segment.

This change is was split out from https://reviews.llvm.org/D108877.

Differential Revision: https://reviews.llvm.org/D109426
2021-09-09 10:03:30 -04:00

77 lines
2.7 KiB
ArmAsm

# RUN: llvm-mc -triple=wasm64-unknown-unknown < %s | FileCheck %s
# RUN: llvm-mc -triple=wasm64-unknown-unknown -filetype=obj -o %t.o < %s
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=CHECK-OBJ --match-full-lines
.globaltype __tls_base, i64
tls_store:
.functype tls_store (i32) -> ()
# CHECK: global.get __tls_base
# CHECK-NEXT: i64.const tls1@TLSREL
# CHECK-NEXT: i64.add
# CHECK-NEXT: local.get 0
# CHECK-NEXT: i32.store 0
global.get __tls_base
i64.const tls1@TLSREL
i64.add
local.get 0
i32.store 0
end_function
.section .tls.foo,"T",@
# CHECK: .tls.foo,"T",@
tls1:
.int32 42
.size tls1, 4
.section custom_tls,"T",@
# CHECK: custom_tls,"T",@
tls2:
.int32 43
.size tls2, 4
# CHECK-OBJ: - Type: CODE
# CHECK-OBJ-NEXT: Relocations:
# CHECK-OBJ-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB
# CHECK-OBJ-NEXT: Index: 1
# CHECK-OBJ-NEXT: Offset: 0x4
# CHECK-OBJ-NEXT: - Type: R_WASM_MEMORY_ADDR_TLS_SLEB64
# CHECK-OBJ-NEXT: Index: 2
# CHECK-OBJ-NEXT: Offset: 0xA
# CHECK-OBJ: - Type: CUSTOM
# CHECK-OBJ-NEXT: Name: linking
# CHECK-OBJ-NEXT: Version: 2
# CHECK-OBJ-NEXT: SymbolTable:
# CHECK-OBJ-NEXT: - Index: 0
# CHECK-OBJ-NEXT: Kind: FUNCTION
# CHECK-OBJ-NEXT: Name: tls_store
# CHECK-OBJ-NEXT: Flags: [ BINDING_LOCAL ]
# CHECK-OBJ-NEXT: Function: 0
# CHECK-OBJ-NEXT: - Index: 1
# CHECK-OBJ-NEXT: Kind: GLOBAL
# CHECK-OBJ-NEXT: Name: __tls_base
# CHECK-OBJ-NEXT: Flags: [ UNDEFINED ]
# CHECK-OBJ-NEXT: Global: 0
# CHECK-OBJ-NEXT: - Index: 2
# CHECK-OBJ-NEXT: Kind: DATA
# CHECK-OBJ-NEXT: Name: tls1
# CHECK-OBJ-NEXT: Flags: [ BINDING_LOCAL, TLS ]
# CHECK-OBJ-NEXT: Segment: 0
# CHECK-OBJ-NEXT: Size: 4
# CHECK-OBJ-NEXT: - Index: 3
# CHECK-OBJ-NEXT: Kind: DATA
# CHECK-OBJ-NEXT: Name: tls2
# CHECK-OBJ-NEXT: Flags: [ BINDING_LOCAL, TLS ]
# CHECK-OBJ-NEXT: Segment: 1
# CHECK-OBJ-NEXT: Size: 4
# CHECK-OBJ-NEXT: SegmentInfo:
# CHECK-OBJ-NEXT: - Index: 0
# CHECK-OBJ-NEXT: Name: .tls.foo
# CHECK-OBJ-NEXT: Alignment: 0
# CHECK-OBJ-NEXT: Flags: [ TLS ]
# CHECK-OBJ-NEXT: - Index: 1
# CHECK-OBJ-NEXT: Name: custom_tls
# CHECK-OBJ-NEXT: Alignment: 0
# CHECK-OBJ-NEXT: Flags: [ TLS ]