]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/wasm/weak-symbols.ll
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / wasm / weak-symbols.ll
1 ; RUN: llc -filetype=obj %p/Inputs/weak-symbol1.ll -o %t1.o
2 ; RUN: llc -filetype=obj %p/Inputs/weak-symbol2.ll -o %t2.o
3 ; RUN: llc -filetype=obj %s -o %t.o
4 ; RUN: wasm-ld -no-gc-sections -o %t.wasm %t.o %t1.o %t2.o
5 ; RUN: obj2yaml %t.wasm | FileCheck %s
6
7 target triple = "wasm32-unknown-unknown"
8
9 declare i32 @weakFn() local_unnamed_addr
10 @weakGlobal = external global i32
11
12 define void @_start() local_unnamed_addr {
13 entry:
14   %call = call i32 @weakFn()
15   %val = load i32, i32* @weakGlobal, align 4
16   ret void
17 }
18
19 ; CHECK:      --- !WASM
20 ; CHECK-NEXT: FileHeader:
21 ; CHECK-NEXT:   Version:         0x00000001
22 ; CHECK-NEXT: Sections:
23 ; CHECK-NEXT:   - Type:            TYPE
24 ; CHECK-NEXT:     Signatures:
25 ; CHECK-NEXT:       - Index:           0
26 ; CHECK-NEXT:         ReturnType:      NORESULT
27 ; CHECK-NEXT:         ParamTypes:
28 ; CHECK-NEXT:       - Index:           1
29 ; CHECK-NEXT:         ReturnType:      I32
30 ; CHECK-NEXT:         ParamTypes:
31 ; CHECK-NEXT:   - Type:            FUNCTION
32 ; CHECK-NEXT:     FunctionTypes:   [ 0, 0, 1, 1, 1, 1 ]
33 ; CHECK-NEXT:   - Type:            TABLE
34 ; CHECK-NEXT:     Tables:
35 ; CHECK-NEXT:       - ElemType:        ANYFUNC
36 ; CHECK-NEXT:         Limits:
37 ; CHECK-NEXT:           Flags:           [ HAS_MAX ]
38 ; CHECK-NEXT:           Initial:         0x00000002
39 ; CHECK-NEXT:           Maximum:         0x00000002
40 ; CHECK-NEXT:   - Type:            MEMORY
41 ; CHECK-NEXT:     Memories:
42 ; CHECK-NEXT:       - Initial:         0x00000002
43 ; CHECK-NEXT:   - Type:            GLOBAL
44 ; CHECK-NEXT:     Globals:
45 ; CHECK-NEXT:       - Index:           0
46 ; CHECK-NEXT:         Type:            I32
47 ; CHECK-NEXT:         Mutable:         true
48 ; CHECK-NEXT:         InitExpr:
49 ; CHECK-NEXT:           Opcode:          I32_CONST
50 ; CHECK-NEXT:           Value:           66576
51 ; CHECK-NEXT:       - Index:           1
52 ; CHECK-NEXT:         Type:            I32
53 ; CHECK-NEXT:         Mutable:         false
54 ; CHECK-NEXT:         InitExpr:
55 ; CHECK-NEXT:           Opcode:          I32_CONST
56 ; CHECK-NEXT:           Value:           66576
57 ; CHECK-NEXT:       - Index:           2
58 ; CHECK-NEXT:         Type:            I32
59 ; CHECK-NEXT:         Mutable:         false
60 ; CHECK-NEXT:         InitExpr:
61 ; CHECK-NEXT:           Opcode:          I32_CONST
62 ; CHECK-NEXT:           Value:           1032
63 ; CHECK-NEXT:       - Index:           3
64 ; CHECK-NEXT:         Type:            I32
65 ; CHECK-NEXT:         Mutable:         false
66 ; CHECK-NEXT:         InitExpr:
67 ; CHECK-NEXT:           Opcode:          I32_CONST
68 ; CHECK-NEXT:           Value:           1024
69 ; CHECK-NEXT:   - Type:            EXPORT
70 ; CHECK-NEXT:     Exports:
71 ; CHECK-NEXT:       - Name:            memory
72 ; CHECK-NEXT:         Kind:            MEMORY
73 ; CHECK-NEXT:         Index:           0
74 ; CHECK-NEXT:       - Name:            __heap_base
75 ; CHECK-NEXT:         Kind:            GLOBAL
76 ; CHECK-NEXT:         Index:           1
77 ; CHECK-NEXT:       - Name:            __data_end
78 ; CHECK-NEXT:         Kind:            GLOBAL
79 ; CHECK-NEXT:         Index:           2
80 ; CHECK-NEXT:       - Name:            _start
81 ; CHECK-NEXT:         Kind:            FUNCTION
82 ; CHECK-NEXT:         Index:           1
83 ; CHECK-NEXT:       - Name:            weakFn
84 ; CHECK-NEXT:         Kind:            FUNCTION
85 ; CHECK-NEXT:         Index:           2
86 ; CHECK-NEXT:       - Name:            exportWeak1
87 ; CHECK-NEXT:         Kind:            FUNCTION
88 ; CHECK-NEXT:         Index:           3
89 ; CHECK-NEXT:       - Name:            weakGlobal
90 ; CHECK-NEXT:         Kind:            GLOBAL
91 ; CHECK-NEXT:         Index:           3
92 ; CHECK-NEXT:       - Name:            exportWeak2
93 ; CHECK-NEXT:         Kind:            FUNCTION
94 ; CHECK-NEXT:         Index:           5
95 ; CHECK-NEXT:   - Type:            ELEM
96 ; CHECK-NEXT:     Segments:
97 ; CHECK-NEXT:       - Offset:
98 ; CHECK-NEXT:           Opcode:          I32_CONST
99 ; CHECK-NEXT:           Value:           1
100 ; CHECK-NEXT:         Functions:       [ 2 ]
101 ; CHECK-NEXT:   - Type:            CODE
102 ; CHECK-NEXT:     Functions:
103 ; CHECK-NEXT:       - Index:           0
104 ; CHECK-NEXT:         Locals:
105 ; CHECK-NEXT:         Body:            0B
106 ; CHECK-NEXT:       - Index:           1
107 ; CHECK-NEXT:         Locals:
108 ; CHECK-NEXT:         Body:            1082808080001A0B
109 ; CHECK-NEXT:       - Index:           2
110 ; CHECK-NEXT:         Locals:
111 ; CHECK-NEXT:         Body:            41010B
112 ; CHECK-NEXT:       - Index:           3
113 ; CHECK-NEXT:         Locals:
114 ; CHECK-NEXT:         Body:            4181808080000B
115 ; CHECK-NEXT:       - Index:           4
116 ; CHECK-NEXT:         Locals:
117 ; CHECK-NEXT:         Body:            41020B
118 ; CHECK-NEXT:       - Index:           5
119 ; CHECK-NEXT:         Locals:
120 ; CHECK-NEXT:         Body:            4181808080000B
121 ; CHECK-NEXT:   - Type:            DATA
122 ; CHECK-NEXT:     Segments:
123 ; CHECK-NEXT:       - SectionOffset:   7
124 ; CHECK-NEXT:         MemoryIndex:     0
125 ; CHECK-NEXT:         Offset:
126 ; CHECK-NEXT:           Opcode:          I32_CONST
127 ; CHECK-NEXT:           Value:           1024
128 ; CHECK-NEXT:         Content:         '0100000002000000'
129 ; CHECK-NEXT:   - Type:            CUSTOM
130 ; CHECK-NEXT:     Name:            name
131 ; CHECK-NEXT:     FunctionNames:
132 ; CHECK-NEXT:       - Index:           0
133 ; CHECK-NEXT:         Name:            __wasm_call_ctors
134 ; CHECK-NEXT:       - Index:           1
135 ; CHECK-NEXT:         Name:            _start
136 ; CHECK-NEXT:       - Index:           2
137 ; CHECK-NEXT:         Name:            weakFn
138 ; CHECK-NEXT:       - Index:           3
139 ; CHECK-NEXT:         Name:            exportWeak1
140 ; CHECK-NEXT:       - Index:           4
141 ; CHECK-NEXT:         Name:            weakFn
142 ; CHECK-NEXT:       - Index:           5
143 ; CHECK-NEXT:         Name:            exportWeak2
144 ; CHECK-NEXT: ...