| # 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" |
| ... |