forked from OSchip/llvm-project
79 lines
2.3 KiB
YAML
79 lines
2.3 KiB
YAML
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: wasm-ld --shared-memory -o %t.wasm %t.o
|
|
|
|
# Verify compatability with older object files that didn't mark individual
|
|
# symbols as TLS. In this case the symbol `bar` is being used in a TLS-only
|
|
# relocation (R_WASM_MEMORY_ADDR_TLS_SLEB) but is not itself marked as TLS.
|
|
# However, because it is defined in a section (`.mydata`) that *is* marked as
|
|
# TLS we implicitly mark bar as TLS.
|
|
#
|
|
# We had a regression where llvm-13-generated object files were being rejected
|
|
# with: "R_WASM_MEMORY_ADDR_TLS_SLEB cannot be used against non-TLS symbol"
|
|
# This test verifies that this error is not triggered.
|
|
|
|
--- !WASM
|
|
FileHeader:
|
|
Version: 0x1
|
|
Sections:
|
|
- Type: TYPE
|
|
Signatures:
|
|
- Index: 0
|
|
ParamTypes: []
|
|
ReturnTypes: []
|
|
- Type: IMPORT
|
|
Imports:
|
|
- Module: env
|
|
Field: __linear_memory
|
|
Kind: MEMORY
|
|
Memory:
|
|
Minimum: 0x1
|
|
- Type: FUNCTION
|
|
FunctionTypes: [ 0 ]
|
|
- Type: DATACOUNT
|
|
Count: 1
|
|
- Type: CODE
|
|
Relocations:
|
|
- Type: R_WASM_MEMORY_ADDR_TLS_SLEB
|
|
Index: 1
|
|
Offset: 0x4
|
|
Functions:
|
|
- Index: 0
|
|
Locals: []
|
|
Body: 4180808080001A0B
|
|
- Type: DATA
|
|
Segments:
|
|
- SectionOffset: 6
|
|
InitFlags: 0
|
|
Offset:
|
|
Opcode: I32_CONST
|
|
Value: 0
|
|
Content: '00000000'
|
|
- Type: CUSTOM
|
|
Name: linking
|
|
Version: 2
|
|
SymbolTable:
|
|
- Index: 0
|
|
Kind: FUNCTION
|
|
Name: _start
|
|
Flags: [ ]
|
|
Function: 0
|
|
- Index: 1
|
|
Kind: DATA
|
|
Name: bar
|
|
Flags: [ ]
|
|
Segment: 0
|
|
Size: 4
|
|
SegmentInfo:
|
|
- Index: 0
|
|
Name: .mydata
|
|
Alignment: 0
|
|
Flags: [ TLS ]
|
|
- Type: CUSTOM
|
|
Name: target_features
|
|
Features:
|
|
- Prefix: USED
|
|
Name: "atomics"
|
|
- Prefix: USED
|
|
Name: "bulk-memory"
|
|
...
|