brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · df049ce Raw
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