Summary: Makes it a linker error if the "atomics" feature is used but the user does not opt in to shared memory or if "atomics" is disallowed but the user does opt in to shared memory. Also check that an appropriate max memory size is supplied if shared memory is used. Reviewers: sbc100, aheejin Subscribers: dschuff, jgravelle-google, sunfish, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59281 llvm-svn: 357310
76 lines
2.6 KiB
YAML
76 lines
2.6 KiB
YAML
# RUN: yaml2obj %s -o %t1.o
|
|
|
|
# RUN: not wasm-ld --no-entry --shared-memory %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-NO-MAX
|
|
|
|
# RUN: not wasm-ld --no-entry --shared-memory --max-memory=100000 %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-UNALIGNED
|
|
|
|
# RUN: wasm-ld --no-entry --shared-memory --max-memory=131072 %t1.o -o - | obj2yaml | FileCheck %s --check-prefix SHARED
|
|
|
|
# RUN: not wasm-ld --no-entry --features=atomics %t1.o -o - 2>&1 | FileCheck %s --check-prefix ATOMICS-NO-SHARED
|
|
|
|
# RUN: not wasm-ld --no-entry --features=atomics --shared-memory %t1.o -o - 2>&1 | FileCheck %s --check-prefix ATOMICS-NO-MAX
|
|
|
|
# RUN: not wasm-ld --no-entry --features=atomics --shared-memory --max-memory=100000 %t1.o -o - 2>&1 | FileCheck %s --check-prefix ATOMICS-UNALIGNED
|
|
|
|
# RUN: wasm-ld --no-entry --features=atomics --shared-memory --max-memory=131072 %t1.o -o - | obj2yaml | FileCheck %s --check-prefix SHARED
|
|
|
|
|
|
--- !WASM
|
|
FileHeader:
|
|
Version: 0x00000001
|
|
Sections:
|
|
- Type: IMPORT
|
|
Imports:
|
|
- Module: env
|
|
Field: __linear_memory
|
|
Kind: MEMORY
|
|
Memory:
|
|
Initial: 0x00000001
|
|
- Module: env
|
|
Field: __indirect_function_table
|
|
Kind: TABLE
|
|
Table:
|
|
ElemType: FUNCREF
|
|
Limits:
|
|
Initial: 0x00000000
|
|
- Type: DATA
|
|
Segments:
|
|
- SectionOffset: 6
|
|
InitFlags: 0
|
|
Offset:
|
|
Opcode: I32_CONST
|
|
Value: 0
|
|
Content: 68656C6C6F0A00
|
|
- Type: CUSTOM
|
|
Name: linking
|
|
Version: 2
|
|
SymbolTable:
|
|
- Index: 0
|
|
Kind: DATA
|
|
Name: hello_str
|
|
Flags: [ ]
|
|
Segment: 0
|
|
Size: 7
|
|
SegmentInfo:
|
|
- Index: 0
|
|
Name: .rodata.hello_str
|
|
Alignment: 0
|
|
Flags: [ ]
|
|
...
|
|
|
|
# SHARED-NO-MAX: maximum memory too small, 66560 bytes needed{{$}}
|
|
|
|
# SHARED-UNALIGNED: maximum memory must be 65536-byte aligned{{$}}
|
|
|
|
# SHARED: - Type: MEMORY
|
|
# SHARED-NEXT: Memories:
|
|
# SHARED-NEXT: - Flags: [ HAS_MAX, IS_SHARED ]
|
|
# SHARED-NEXT: Initial: 0x00000002
|
|
# SHARED-NEXT: Maximum: 0x00000002
|
|
|
|
# ATOMICS-NO-SHARED: 'atomics' feature is used, so --shared-memory must be used{{$}}
|
|
|
|
# ATOMICS-NO-MAX: maximum memory too small, 66560 bytes needed{{$}}
|
|
|
|
# ATOMICS-UNALIGNED: maximum memory must be 65536-byte aligned{{$}}
|