xref: /llvm-project/lld/test/wasm/gc-imports.s (revision 9647a6f719ee4b1c23eea7aef368c1dcd5317949)
1# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %s -o %t.o
2# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %S/Inputs/undefined-globals.s -o %t_globals.o
3# RUN: wasm-ld --allow-undefined -o %t1.wasm %t.o %t_globals.o
4
5.functype unused_undef_function (i64) -> (i64)
6.functype used_undef_function () -> (i32)
7.functype use_undef_global () -> (i64)
8
9foo:
10  .functype foo (i64) -> (i64)
11  local.get 0
12  call unused_undef_function
13  end_function
14
15.globl _start
16
17_start:
18  .functype _start () -> ()
19  call used_undef_function
20  drop
21  call use_undef_global
22  drop
23  end_function
24
25# RUN: obj2yaml %t1.wasm | FileCheck %s
26
27# CHECK:        - Type:            IMPORT
28# CHECK-NEXT:     Imports:
29# CHECK-NEXT:       - Module:          env
30# CHECK-NEXT:         Field:           used_undef_function
31# CHECK-NEXT:         Kind:            FUNCTION
32# CHECK-NEXT:         SigIndex:        0
33# CHECK-NEXT:       - Module:          env
34# CHECK-NEXT:         Field:           used_undef_global
35# CHECK-NEXT:         Kind:            GLOBAL
36# CHECK-NEXT:         GlobalType:      I64
37# CHECK-NEXT:         GlobalMutable:   false
38# CHECK-NEXT:   - Type:
39# CHECK:        - Type:            CUSTOM
40# CHECK-NEXT:     Name:            name
41# CHECK-NEXT:     FunctionNames:
42# CHECK-NEXT:       - Index:           0
43# CHECK-NEXT:         Name:            used_undef_function
44# CHECK-NEXT:       - Index:           1
45# CHECK-NEXT:         Name:            _start
46# CHECK-NEXT:       - Index:           2
47# CHECK-NEXT:         Name:            use_undef_global
48# CHECK-NEXT:     GlobalNames:
49# CHECK-NEXT:       - Index:           0
50# CHECK-NEXT:         Name:            used_undef_global
51# CHECK-NEXT:       - Index:           1
52# CHECK-NEXT:         Name:            __stack_pointer
53# CHECK-NEXT: ...
54
55# RUN: wasm-ld --no-gc-sections --allow-undefined \
56# RUN:     -o %t1.no-gc.wasm %t.o %t_globals.o
57# RUN: obj2yaml %t1.no-gc.wasm | FileCheck %s -check-prefix=NO-GC
58
59# NO-GC:        - Type:            IMPORT
60# NO-GC-NEXT:     Imports:
61# NO-GC-NEXT:       - Module:          env
62# NO-GC-NEXT:         Field:           unused_undef_function
63# NO-GC-NEXT:         Kind:            FUNCTION
64# NO-GC-NEXT:         SigIndex:        0
65# NO-GC-NEXT:       - Module:          env
66# NO-GC-NEXT:         Field:           used_undef_function
67# NO-GC-NEXT:         Kind:            FUNCTION
68# NO-GC-NEXT:         SigIndex:        1
69# NO-GC-NEXT:       - Module:          env
70# NO-GC-NEXT:         Field:           unused_undef_global
71# NO-GC-NEXT:         Kind:            GLOBAL
72# NO-GC-NEXT:         GlobalType:      I64
73# NO-GC-NEXT:         GlobalMutable:   false
74# NO-GC-NEXT:       - Module:          env
75# NO-GC-NEXT:         Field:           used_undef_global
76# NO-GC-NEXT:         Kind:            GLOBAL
77# NO-GC-NEXT:         GlobalType:      I64
78# NO-GC-NEXT:         GlobalMutable:   false
79# NO-GC-NEXT:   - Type:
80# NO-GC:        - Type:            CUSTOM
81# NO-GC-NEXT:     Name:            name
82# NO-GC-NEXT:     FunctionNames:
83# NO-GC-NEXT:       - Index:           0
84# NO-GC-NEXT:         Name:            unused_undef_function
85# NO-GC-NEXT:       - Index:           1
86# NO-GC-NEXT:         Name:            used_undef_function
87# NO-GC-NEXT:       - Index:           2
88# NO-GC-NEXT:         Name:            __wasm_call_ctors
89# NO-GC-NEXT:       - Index:           3
90# NO-GC-NEXT:         Name:            foo
91# NO-GC-NEXT:       - Index:           4
92# NO-GC-NEXT:         Name:            _start
93# NO-GC-NEXT:       - Index:           5
94# NO-GC-NEXT:         Name:            use_undef_global
95# NO-GC-NEXT:     GlobalNames:
96# NO-GC-NEXT:       - Index:           0
97# NO-GC-NEXT:         Name:            unused_undef_global
98# NO-GC-NEXT:       - Index:           1
99# NO-GC-NEXT:         Name:            used_undef_global
100# NO-GC-NEXT:       - Index:           2
101# NO-GC-NEXT:         Name:            __stack_pointer
102# NO-GC-NEXT: ...
103