llvm-project/lld/test/wasm/export-all.s
Sam Clegg 3f411e9773 [lld][WebAssembly] Fix --export-all when __stack_pointer is present
With https://reviews.llvm.org/D87537 we made it an error
to import or export a mutable global with the +mutable-globals
feature present.  However the scan was of the entire symbol
table rather than just the imports or exports and the filter
didn't match exaclyt meaning the `__stack_pointer` (a mutable
global) was always triggering with error when the `--export-all`
flag was used.

This also revealed that we didn't have any test coverage for
the `--export-all` flag.

This change fixes the current breakage on the emscripten-releases
roller.

Differential Revision: https://reviews.llvm.org/D87663
2020-09-15 06:17:01 -07:00

49 lines
1.6 KiB
ArmAsm

# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s
# RUN: wasm-ld --export-all -o %t.wasm %t.o
# RUN: obj2yaml %t.wasm | FileCheck %s
.globl _start
_start:
.functype _start () -> ()
i32.const 3
global.set __stack_pointer
end_function
foo:
.functype foo () -> (i32)
i32.const 42
end_function
.globaltype __stack_pointer, i32
# CHECK: - Type: EXPORT
# CHECK-NEXT: Exports:
# CHECK-NEXT: - Name: memory
# CHECK-NEXT: Kind: MEMORY
# CHECK-NEXT: Index: 0
# CHECK-NEXT: - Name: __wasm_call_ctors
# CHECK-NEXT: Kind: FUNCTION
# CHECK-NEXT: Index: 0
# CHECK-NEXT: - Name: _start
# CHECK-NEXT: Kind: FUNCTION
# CHECK-NEXT: Index: 1
# CHECK-NEXT: - Name: __dso_handle
# CHECK-NEXT: Kind: GLOBAL
# CHECK-NEXT: Index: 1
# CHECK-NEXT: - Name: __data_end
# CHECK-NEXT: Kind: GLOBAL
# CHECK-NEXT: Index: 2
# CHECK-NEXT: - Name: __global_base
# CHECK-NEXT: Kind: GLOBAL
# CHECK-NEXT: Index: 3
# CHECK-NEXT: - Name: __heap_base
# CHECK-NEXT: Kind: GLOBAL
# CHECK-NEXT: Index: 4
# CHECK-NEXT: - Name: __memory_base
# CHECK-NEXT: Kind: GLOBAL
# CHECK-NEXT: Index: 5
# CHECK-NEXT: - Name: __table_base
# CHECK-NEXT: Kind: GLOBAL
# CHECK-NEXT: Index: 6