1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
# Test in default mode
# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s
# RUN: not wasm-ld --export=missing -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-ERROR %s
# RUN: wasm-ld --export=hidden_function -o %t.wasm %t.o
# RUN: obj2yaml %t.wasm | FileCheck %s
# Now test in Emscripten mode
# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-emscripten -o %t.o %s
# RUN: not wasm-ld --export=missing -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-ERROR %s
# RUN: wasm-ld --export=hidden_function -o %t.wasm %t.o
# RUN: obj2yaml %t.wasm | FileCheck %s --check-prefixes=CHECK,EMSCRIPTEN
# Not exported by default, but forced via commandline
.hidden hidden_function
.globl hidden_function
hidden_function:
.functype hidden_function () -> (i32)
i32.const 0
end_function
# Not exported by default
.globl default_function
default_function:
.functype default_function () -> (i32)
i32.const 0
end_function
# Exported in emscripten mode which treats .no_dead_strip as a signal to export
.no_dead_strip used_function
.globl used_function
used_function:
.functype used_function () -> (i32)
i32.const 0
end_function
# Exported by default
.globl _start
_start:
.functype _start () -> ()
end_function
# CHECK-ERROR: error: symbol exported via --export not found: missing
# CHECK-NOT: - Name: default_function
# CHECK: - Type: EXPORT
# CHECK-NEXT: Exports:
# CHECK-NEXT: - Name: memory
# CHECK-NEXT: Kind: MEMORY
# CHECK-NEXT: Index: 0
# CHECK-NEXT: - Name: hidden_function
# CHECK-NEXT: Kind: FUNCTION
# CHECK-NEXT: Index: 0
# EMSCRIPTEN-NEXT: - Name: used_function
# EMSCRIPTEN-NEXT: Kind: FUNCTION
# EMSCRIPTEN-NEXT: Index: 1
# CHECK-NEXT: - Name: _start
# CHECK-NEXT: Kind: FUNCTION
# CHECK-NEXT: Index: 2
# CHECK-NEXT: - Type: CODE
|