86 lines · plain
1# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s2# RUN: wasm-ld --experimental-pic -shared -o %t.wasm %t.o3# RUN: obj2yaml %t.wasm | FileCheck %s4# RUN: llvm-objdump -d %t.wasm | FileCheck %s -check-prefix=ASM5 6# Verify the weakly defined fuctions (weak_func) are both imported and exported,7# and that internal usage (direct call) always uses the imported version.8# Hidden functions, even if weak, should not be imported or exported.9 10.globl weak_func11.weak weak_func12weak_func:13 .functype weak_func () -> (i32)14 i32.const 015 end_function16 17.globl hidden_weak_func18.hidden hidden_weak_func19.weak hidden_weak_func20hidden_weak_func:21 .functype hidden_weak_func () -> (i32)22 i32.const 4223 end_function24 25.globl call_weak26call_weak:27# ASM: <call_weak>:28 .functype call_weak () -> (i32)29 call weak_func30# ASM: 10 80 80 80 80 00 call 031 drop32 call hidden_weak_func33# ASM: 10 83 80 80 80 00 call 334 end_function35# ASM-NEXT: 0b end36 37# CHECK: - Type: IMPORT38# CHECK-NEXT: Imports:39# CHECK-NEXT: - Module: env40# CHECK-NEXT: Field: memory41# CHECK-NEXT: Kind: MEMORY42# CHECK-NEXT: Memory:43# CHECK-NEXT: Minimum: 0x044# CHECK-NEXT: - Module: env45# CHECK-NEXT: Field: __memory_base46# CHECK-NEXT: Kind: GLOBAL47# CHECK-NEXT: GlobalType: I3248# CHECK-NEXT: GlobalMutable: false49# CHECK-NEXT: - Module: env50# CHECK-NEXT: Field: __table_base51# CHECK-NEXT: Kind: GLOBAL52# CHECK-NEXT: GlobalType: I3253# CHECK-NEXT: GlobalMutable: false54# CHECK-NEXT: - Module: env55# CHECK-NEXT: Field: weak_func56# CHECK-NEXT: Kind: FUNCTION57# CHECK-NEXT: SigIndex: 058# CHECK-NEXT: - Type: FUNCTION59 60# CHECK: - Type: EXPORT61# CHECK-NEXT: Exports:62# CHECK-NEXT: - Name: __wasm_call_ctors63# CHECK-NEXT: Kind: FUNCTION64# CHECK-NEXT: Index: 165# CHECK-NEXT: - Name: weak_func66# CHECK-NEXT: Kind: FUNCTION67# CHECK-NEXT: Index: 268# CHECK-NEXT: - Name: call_weak69# CHECK-NEXT: Kind: FUNCTION70# CHECK-NEXT: Index: 471# CHECK-NEXT: - Type: CODE72 73# CHECK: - Type: CUSTOM74# CHECK-NEXT: Name: name75# CHECK-NEXT: FunctionNames:76# CHECK-NEXT: - Index: 077# CHECK-NEXT: Name: weak_func78# CHECK-NEXT: - Index: 179# CHECK-NEXT: Name: __wasm_call_ctors80# CHECK-NEXT: - Index: 281# CHECK-NEXT: Name: weak_func82# CHECK-NEXT: - Index: 383# CHECK-NEXT: Name: hidden_weak_func84# CHECK-NEXT: - Index: 485# CHECK-NEXT: Name: call_weak86