2
2
3
3
@global1 = global i32 1025 , align 8
4
4
5
+ declare void @func0 ()
5
6
declare void @func1 ()
6
-
7
7
declare void @func2 ()
8
+ declare void @func3 ()
8
9
9
- @llvm.global_ctors = appending global [1 x { i32 , void ()*, i8* }] [{ i32 , void ()*, i8* } { i32 65535 , void ()* @func1 , i8* null }]
10
+ @llvm.global_ctors = appending global [2 x { i32 , void ()*, i8* }] [{ i32 , void ()*, i8* } { i32 65535 , void ()* @func0 , i8* null }, { i32 , void ()*, i8* } { i32 42 , void ()* @func1 , i8* null }]
10
11
11
- @llvm.global_dtors = appending global [1 x { i32 , void ()*, i8* }] [{ i32 , void ()*, i8* } { i32 65535 , void ()* @func2 , i8* null }]
12
+ @llvm.global_dtors = appending global [2 x { i32 , void ()*, i8* }] [{ i32 , void ()*, i8* } { i32 65535 , void ()* @func2 , i8* null }, { i32 , void ()*, i8* } { i32 42 , void ()* @func3 , i8* null }]
12
13
13
14
14
15
; CHECK: - Type: IMPORT
15
16
; CHECK-NEXT: Imports:
16
17
; CHECK-NEXT: - Module: env
17
18
; CHECK-NEXT: Field: __linear_memory
18
19
; CHECK-NEXT: Kind: MEMORY
19
- ; CHECK-NEXT: Memory:
20
+ ; CHECK-NEXT: Memory:
20
21
; CHECK-NEXT: Initial: 0x00000001
21
22
; CHECK-NEXT: - Module: env
22
23
; CHECK-NEXT: Field: __indirect_function_table
23
24
; CHECK-NEXT: Kind: TABLE
24
- ; CHECK-NEXT: Table:
25
+ ; CHECK-NEXT: Table:
25
26
; CHECK-NEXT: ElemType: ANYFUNC
26
- ; CHECK-NEXT: Limits:
27
+ ; CHECK-NEXT: Limits:
27
28
; CHECK-NEXT: Initial: 0x00000002
28
29
; CHECK-NEXT: - Module: env
29
- ; CHECK-NEXT: Field: func1
30
+ ; CHECK-NEXT: Field: func3
31
+ ; CHECK-NEXT: Kind: FUNCTION
32
+ ; CHECK-NEXT: SigIndex: 1
33
+ ; CHECK-NEXT: - Module: env
34
+ ; CHECK-NEXT: Field: __dso_handle
35
+ ; CHECK-NEXT: Kind: GLOBAL
36
+ ; CHECK-NEXT: GlobalType: I32
37
+ ; CHECK-NEXT: GlobalMutable: false
38
+ ; CHECK-NEXT: - Module: env
39
+ ; CHECK-NEXT: Field: __cxa_atexit
30
40
; CHECK-NEXT: Kind: FUNCTION
31
- ; CHECK-NEXT: SigIndex: 0
41
+ ; CHECK-NEXT: SigIndex: 2
32
42
; CHECK-NEXT: - Module: env
33
43
; CHECK-NEXT: Field: func2
34
44
; CHECK-NEXT: Kind: FUNCTION
35
- ; CHECK-NEXT: SigIndex: 0
45
+ ; CHECK-NEXT: SigIndex: 1
46
+ ; CHECK-NEXT: - Module: env
47
+ ; CHECK-NEXT: Field: func1
48
+ ; CHECK-NEXT: Kind: FUNCTION
49
+ ; CHECK-NEXT: SigIndex: 1
50
+ ; CHECK-NEXT: - Module: env
51
+ ; CHECK-NEXT: Field: func0
52
+ ; CHECK-NEXT: Kind: FUNCTION
53
+ ; CHECK-NEXT: SigIndex: 1
54
+ ; CHECK-NEXT: - Type: FUNCTION
55
+ ; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 1 ]
36
56
; CHECK-NEXT: - Type: GLOBAL
37
57
; CHECK-NEXT: Globals:
38
58
; CHECK-NEXT: - Type: I32
@@ -42,64 +62,117 @@ declare void @func2()
42
62
; CHECK-NEXT: Value: 0
43
63
; CHECK-NEXT: - Type: EXPORT
44
64
; CHECK-NEXT: Exports:
65
+ ; CHECK-NEXT: - Name: .Lcall_dtors.42
66
+ ; CHECK-NEXT: Kind: FUNCTION
67
+ ; CHECK-NEXT: Index: 5
68
+ ; CHECK-NEXT: - Name: .Lregister_call_dtors.42
69
+ ; CHECK-NEXT: Kind: FUNCTION
70
+ ; CHECK-NEXT: Index: 6
71
+ ; CHECK-NEXT: - Name: .Lcall_dtors
72
+ ; CHECK-NEXT: Kind: FUNCTION
73
+ ; CHECK-NEXT: Index: 7
74
+ ; CHECK-NEXT: - Name: .Lregister_call_dtors
75
+ ; CHECK-NEXT: Kind: FUNCTION
76
+ ; CHECK-NEXT: Index: 8
45
77
; CHECK-NEXT: - Name: global1
46
78
; CHECK-NEXT: Kind: GLOBAL
47
- ; CHECK-NEXT: Index: 0
79
+ ; CHECK-NEXT: Index: 1
48
80
; CHECK-NEXT: - Type: ELEM
49
81
; CHECK-NEXT: Segments:
50
82
; CHECK-NEXT: - Offset:
51
83
; CHECK-NEXT: Opcode: I32_CONST
52
84
; CHECK-NEXT: Value: 0
53
- ; CHECK-NEXT: Functions: [ 0, 1 ]
54
- ; CHECK-NEXT: - Type: DATA
85
+ ; CHECK-NEXT: Functions: [ 5, 7 ]
86
+ ; CHECK-NEXT: - Type: CODE
55
87
; CHECK-NEXT: Relocations:
56
- ; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_I32
88
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
89
+ ; CHECK-NEXT: Index: 0
90
+ ; CHECK-NEXT: Offset: 0x00000004
91
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
57
92
; CHECK-NEXT: Index: 0
58
93
; CHECK-NEXT: Offset: 0x0000000F
59
- ; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_I32
94
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB
95
+ ; CHECK-NEXT: Index: 0
96
+ ; CHECK-NEXT: Offset: 0x00000017
97
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
98
+ ; CHECK-NEXT: Index: 1
99
+ ; CHECK-NEXT: Offset: 0x0000001D
100
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
101
+ ; CHECK-NEXT: Index: 2
102
+ ; CHECK-NEXT: Offset: 0x0000002C
103
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
60
104
; CHECK-NEXT: Index: 1
61
- ; CHECK-NEXT: Offset: 0x00000018
105
+ ; CHECK-NEXT: Offset: 0x00000037
106
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB
107
+ ; CHECK-NEXT: Index: 0
108
+ ; CHECK-NEXT: Offset: 0x0000003F
109
+ ; CHECK-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
110
+ ; CHECK-NEXT: Index: 1
111
+ ; CHECK-NEXT: Offset: 0x00000045
112
+ ; CHECK-NEXT: Functions:
113
+ ; CHECK-NEXT: - Locals:
114
+ ; CHECK-NEXT: Body: 1080808080000B
115
+ ; CHECK-NEXT: - Locals:
116
+ ; CHECK-NEXT: Body: 0240418080808000410041FFFFFFFF7F1081808080000D000F0B00000B
117
+ ; CHECK-NEXT: - Locals:
118
+ ; CHECK-NEXT: Body: 1082808080000B
119
+ ; CHECK-NEXT: - Locals:
120
+ ; CHECK-NEXT: Body: 0240418180808000410041FFFFFFFF7F1081808080000D000F0B00000B
121
+ ; CHECK-NEXT: - Type: DATA
62
122
; CHECK-NEXT: Segments:
63
123
; CHECK-NEXT: - SectionOffset: 6
64
124
; CHECK-NEXT: MemoryIndex: 0
65
125
; CHECK-NEXT: Offset:
66
126
; CHECK-NEXT: Opcode: I32_CONST
67
127
; CHECK-NEXT: Value: 0
68
128
; CHECK-NEXT: Content: '01040000'
69
- ; CHECK-NEXT: - SectionOffset: 15
70
- ; CHECK-NEXT: MemoryIndex: 0
71
- ; CHECK-NEXT: Offset:
72
- ; CHECK-NEXT: Opcode: I32_CONST
73
- ; CHECK-NEXT: Value: 4
74
- ; CHECK-NEXT: Content: '00000000'
75
- ; CHECK-NEXT: - SectionOffset: 24
76
- ; CHECK-NEXT: MemoryIndex: 0
77
- ; CHECK-NEXT: Offset:
78
- ; CHECK-NEXT: Opcode: I32_CONST
79
- ; CHECK-NEXT: Value: 8
80
- ; CHECK-NEXT: Content: '01000000'
81
129
; CHECK-NEXT: - Type: CUSTOM
82
130
; CHECK-NEXT: Name: name
83
131
; CHECK-NEXT: FunctionNames:
84
132
; CHECK-NEXT: - Index: 0
85
- ; CHECK-NEXT: Name: func1
133
+ ; CHECK-NEXT: Name: func3
86
134
; CHECK-NEXT: - Index: 1
135
+ ; CHECK-NEXT: Name: __cxa_atexit
136
+ ; CHECK-NEXT: - Index: 2
87
137
; CHECK-NEXT: Name: func2
138
+ ; CHECK-NEXT: - Index: 3
139
+ ; CHECK-NEXT: Name: func1
140
+ ; CHECK-NEXT: - Index: 4
141
+ ; CHECK-NEXT: Name: func0
142
+ ; CHECK-NEXT: - Index: 5
143
+ ; CHECK-NEXT: Name: .Lcall_dtors.42
144
+ ; CHECK-NEXT: - Index: 6
145
+ ; CHECK-NEXT: Name: .Lregister_call_dtors.42
146
+ ; CHECK-NEXT: - Index: 7
147
+ ; CHECK-NEXT: Name: .Lcall_dtors
148
+ ; CHECK-NEXT: - Index: 8
149
+ ; CHECK-NEXT: Name: .Lregister_call_dtors
88
150
; CHECK-NEXT: - Type: CUSTOM
89
151
; CHECK-NEXT: Name: linking
90
- ; CHECK-NEXT: DataSize: 12
91
- ; CHECK-NEXT: SegmentInfo:
152
+ ; CHECK-NEXT: DataSize: 4
153
+ ; CHECK-NEXT: SymbolInfo:
154
+ ; CHECK-NEXT: - Name: __dso_handle
155
+ ; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN ]
156
+ ; CHECK-NEXT: - Name: .Lcall_dtors.42
157
+ ; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
158
+ ; CHECK-NEXT: - Name: .Lregister_call_dtors.42
159
+ ; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
160
+ ; CHECK-NEXT: - Name: .Lcall_dtors
161
+ ; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
162
+ ; CHECK-NEXT: - Name: .Lregister_call_dtors
163
+ ; CHECK-NEXT: Flags: [ BINDING_LOCAL ]
164
+ ; CHECK-NEXT: SegmentInfo:
92
165
; CHECK-NEXT: - Index: 0
93
166
; CHECK-NEXT: Name: .data.global1
94
167
; CHECK-NEXT: Alignment: 8
95
168
; CHECK-NEXT: Flags: [ ]
96
- ; CHECK-NEXT: - Index: 1
97
- ; CHECK-NEXT: Name: .init_array
98
- ; CHECK-NEXT: Alignment: 4
99
- ; CHECK-NEXT: Flags: [ ]
100
- ; CHECK-NEXT: - Index: 2
101
- ; CHECK-NEXT: Name: .fini_array
102
- ; CHECK-NEXT: Alignment: 4
103
- ; CHECK-NEXT: Flags: [ ]
169
+ ; CHECK-NEXT: InitFunctions:
170
+ ; CHECK-NEXT: - Priority: 42
171
+ ; CHECK-NEXT: FunctionIndex: 3
172
+ ; CHECK-NEXT: - Priority: 42
173
+ ; CHECK-NEXT: FunctionIndex: 6
174
+ ; CHECK-NEXT: - Priority: 65535
175
+ ; CHECK-NEXT: FunctionIndex: 4
176
+ ; CHECK-NEXT: - Priority: 65535
177
+ ; CHECK-NEXT: FunctionIndex: 8
104
178
; CHECK-NEXT: ...
105
-
0 commit comments