llvm-project/lld/test/wasm/shared-memory.yaml
Sam Clegg 1bb79875e4 [lld][WebAssembly] Set memory limits correctly for PIC + shared memory
Don't early return from layoutMemory in PIC mode before we have set the
memory limits.

This matters in particular with shared-memory + PIC because shared
memories require maximum size.

Secondly, when we need a maximum, but the user does not supply one,
default to MAX_INT rather than 0 (defaulting to zero is completely
useless and means that building with -shared didn't previously work at
all without --maximum-memory, because zero is never big enough).

This is part of an ongoing effort to enable dynamic linking with
threads in emscripten.

See https://github.com/emscripten-core/emscripten/issues/3494

Differential Revision: https://reviews.llvm.org/D92528
2020-12-03 18:14:28 -08:00

75 lines
2.6 KiB
YAML

# RUN: yaml2obj %s -o %t1.o
# RUN: wasm-ld --no-entry --shared-memory --features=atomics,bulk-memory %t1.o -o - | obj2yaml | FileCheck %s --check-prefix SHARED
# RUN: not wasm-ld --no-entry --shared-memory --max-memory=100000 %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-UNALIGNED
# RUN: not wasm-ld --no-entry --shared-memory --max-memory=131072 --features=bulk-memory %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-NO-ATOMICS
# RUN: not wasm-ld --no-entry --shared-memory --max-memory=131072 --features=atomics %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-NO-BULK-MEM
# RUN: wasm-ld --relocatable --features=atomics %t1.o -o - | obj2yaml | FileCheck %s --check-prefix ATOMICS-RELOCATABLE
# RUN: wasm-ld --no-entry --shared-memory --max-memory=131072 --features=atomics,bulk-memory %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:
Index: 0
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-UNALIGNED: maximum memory must be 65536-byte aligned{{$}}
# SHARED-NO-ATOMICS: 'atomics' feature must be used in order to use shared memory
# SHARED-NO-BULK-MEM: 'bulk-memory' feature must be used in order to use shared memory
# ATOMICS-RELOCATABLE: - Type: MEMORY
# ATOMICS-RELOCATABLE-NEXT: Memories:
# ATOMICS-RELOCATABLE-NEXT: Initial: 0x1
# ATOMICS-RELOCATABLE-NEXT: - Type:
# SHARED: - Type: MEMORY
# SHARED-NEXT: Memories:
# SHARED-NEXT: - Flags: [ HAS_MAX, IS_SHARED ]
# SHARED-NEXT: Initial: 0x2
# SHARED-NEXT: Maximum: 0x2