Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d0a8834

Browse files
authored
[lld][WebAssembly] Honor export flags in addOptionalGlobalSymbol. NFC (#178754)
This change updates addOptionalGlobalSymbol to match addOptionalDataSymbol. The effected tests here are all using the `--export-all` flag.
1 parent 78e22cb commit d0a8834

4 files changed

Lines changed: 69 additions & 36 deletions

File tree

lld/test/wasm/export-all.s

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,28 +30,35 @@ foo:
3030
# CHECK-NEXT: Index: 1
3131
# CHECK-NEXT: - Name: __dso_handle
3232
# CHECK-NEXT: Kind: GLOBAL
33-
# CHECK-NEXT: Index: 1
33+
# CHECK-NEXT: Index: 2
3434
# CHECK-NEXT: - Name: __data_end
3535
# CHECK-NEXT: Kind: GLOBAL
36-
# CHECK-NEXT: Index: 2
36+
# CHECK-NEXT: Index: 3
3737
# CHECK-NEXT: - Name: __stack_low
3838
# CHECK-NEXT: Kind: GLOBAL
39-
# CHECK-NEXT: Index: 3
39+
# CHECK-NEXT: Index: 4
4040
# CHECK-NEXT: - Name: __stack_high
4141
# CHECK-NEXT: Kind: GLOBAL
42-
# CHECK-NEXT: Index: 4
42+
# CHECK-NEXT: Index: 5
4343
# CHECK-NEXT: - Name: __global_base
4444
# CHECK-NEXT: Kind: GLOBAL
45-
# CHECK-NEXT: Index: 5
45+
# CHECK-NEXT: Index: 6
4646
# CHECK-NEXT: - Name: __heap_base
4747
# CHECK-NEXT: Kind: GLOBAL
48-
# CHECK-NEXT: Index: 6
48+
# CHECK-NEXT: Index: 7
4949
# CHECK-NEXT: - Name: __heap_end
5050
# CHECK-NEXT: Kind: GLOBAL
51-
# CHECK-NEXT: Index: 7
51+
# CHECK-NEXT: Index: 8
5252
# CHECK-NEXT: - Name: __memory_base
5353
# CHECK-NEXT: Kind: GLOBAL
54-
# CHECK-NEXT: Index: 8
54+
# CHECK-NEXT: Index: 9
5555
# CHECK-NEXT: - Name: __table_base
5656
# CHECK-NEXT: Kind: GLOBAL
57-
# CHECK-NEXT: Index: 9
57+
# CHECK-NEXT: Index: 10
58+
# CHECK-NEXT: - Name: __wasm_first_page_end
59+
# CHECK-NEXT: Kind: GLOBAL
60+
# CHECK-NEXT: Index: 11
61+
# CHECK-NEXT: - Name: __tls_base
62+
# CHECK-NEXT: Kind: GLOBAL
63+
# CHECK-NEXT: Index: 1
64+
# CHECK-NEXT: - Type: CODE

lld/test/wasm/mutable-global-exports.s

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,40 +81,43 @@ _start:
8181
# CHECK-ALL-NEXT: Index: 1
8282
# CHECK-ALL-NEXT: - Name: foo_global
8383
# CHECK-ALL-NEXT: Kind: GLOBAL
84-
# CHECK-ALL-NEXT: Index: 1
84+
# CHECK-ALL-NEXT: Index: 2
8585
# CHECK-ALL-NEXT: - Name: bar_global
8686
# CHECK-ALL-NEXT: Kind: GLOBAL
87-
# CHECK-ALL-NEXT: Index: 2
87+
# CHECK-ALL-NEXT: Index: 3
8888
# CHECK-ALL-NEXT: - Name: __dso_handle
8989
# CHECK-ALL-NEXT: Kind: GLOBAL
90-
# CHECK-ALL-NEXT: Index: 3
90+
# CHECK-ALL-NEXT: Index: 4
9191
# CHECK-ALL-NEXT: - Name: __data_end
9292
# CHECK-ALL-NEXT: Kind: GLOBAL
93-
# CHECK-ALL-NEXT: Index: 4
93+
# CHECK-ALL-NEXT: Index: 5
9494
# CHECK-ALL-NEXT: - Name: __stack_low
9595
# CHECK-ALL-NEXT: Kind: GLOBAL
96-
# CHECK-ALL-NEXT: Index: 5
96+
# CHECK-ALL-NEXT: Index: 6
9797
# CHECK-ALL-NEXT: - Name: __stack_high
9898
# CHECK-ALL-NEXT: Kind: GLOBAL
99-
# CHECK-ALL-NEXT: Index: 6
99+
# CHECK-ALL-NEXT: Index: 7
100100
# CHECK-ALL-NEXT: - Name: __global_base
101101
# CHECK-ALL-NEXT: Kind: GLOBAL
102-
# CHECK-ALL-NEXT: Index: 7
102+
# CHECK-ALL-NEXT: Index: 8
103103
# CHECK-ALL-NEXT: - Name: __heap_base
104104
# CHECK-ALL-NEXT: Kind: GLOBAL
105-
# CHECK-ALL-NEXT: Index: 8
105+
# CHECK-ALL-NEXT: Index: 9
106106
# CHECK-ALL-NEXT: - Name: __heap_end
107107
# CHECK-ALL-NEXT: Kind: GLOBAL
108-
# CHECK-ALL-NEXT: Index: 9
108+
# CHECK-ALL-NEXT: Index: 10
109109
# CHECK-ALL-NEXT: - Name: __memory_base
110110
# CHECK-ALL-NEXT: Kind: GLOBAL
111-
# CHECK-ALL-NEXT: Index: 10
111+
# CHECK-ALL-NEXT: Index: 11
112112
# CHECK-ALL-NEXT: - Name: __table_base
113113
# CHECK-ALL-NEXT: Kind: GLOBAL
114-
# CHECK-ALL-NEXT: Index: 11
114+
# CHECK-ALL-NEXT: Index: 12
115115
# CHECK-ALL-NEXT: - Name: __wasm_first_page_end
116116
# CHECK-ALL-NEXT: Kind: GLOBAL
117-
# CHECK-ALL-NEXT: Index: 12
117+
# CHECK-ALL-NEXT: Index: 13
118+
# CHECK-ALL-NEXT: - Name: __tls_base
119+
# CHECK-ALL-NEXT: Kind: GLOBAL
120+
# CHECK-ALL-NEXT: Index: 1
118121
# CHECK-ALL-NEXT: - Type: CODE
119122

120123
# CHECK-ALL: Name: target_features

lld/test/wasm/pic-static.s

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -102,58 +102,79 @@ ret32_ptr:
102102
# CHECK-NEXT: Opcode: I32_CONST
103103
# CHECK-NEXT: Value: 65536
104104

105-
# GOT.func.ret32
105+
# __tls_base
106106
# CHECK-NEXT: - Index: 1
107107
# CHECK-NEXT: Type: I32
108108
# CHECK-NEXT: Mutable: false
109109
# CHECK-NEXT: InitExpr:
110110
# CHECK-NEXT: Opcode: I32_CONST
111-
# CHECK-NEXT: Value: 1
111+
# CHECK-NEXT: Value: 0
112112

113-
# GOT.func.missing_function
113+
# GOT.func.internal.ret32
114114
# CHECK-NEXT: - Index: 2
115115
# CHECK-NEXT: Type: I32
116116
# CHECK-NEXT: Mutable: false
117117
# CHECK-NEXT: InitExpr:
118118
# CHECK-NEXT: Opcode: I32_CONST
119-
# CHECK-NEXT: Value: 2
119+
# CHECK-NEXT: Value: 1
120120

121-
# __table_base
121+
# GOT.func.missing_function
122122
# CHECK-NEXT: - Index: 3
123123
# CHECK-NEXT: Type: I32
124124
# CHECK-NEXT: Mutable: false
125125
# CHECK-NEXT: InitExpr:
126126
# CHECK-NEXT: Opcode: I32_CONST
127-
# CHECK-NEXT: Value: 1
127+
# CHECK-NEXT: Value: 2
128128

129-
# GOT.mem.missing_float
129+
# GOT.data.internal.__table_base
130130
# CHECK-NEXT: - Index: 4
131131
# CHECK-NEXT: Type: I32
132132
# CHECK-NEXT: Mutable: false
133133
# CHECK-NEXT: InitExpr:
134134
# CHECK-NEXT: Opcode: I32_CONST
135-
# CHECK-NEXT: Value: 0
135+
# CHECK-NEXT: Value: 1
136136

137-
# GOT.mem.global_float
137+
# GOT.mem.missing_float
138138
# CHECK-NEXT: - Index: 5
139139
# CHECK-NEXT: Type: I32
140140
# CHECK-NEXT: Mutable: false
141141
# CHECK-NEXT: InitExpr:
142142
# CHECK-NEXT: Opcode: I32_CONST
143-
# CHECK-NEXT: Value: 65536
143+
# CHECK-NEXT: Value: 0
144144

145-
# GOT.mem.ret32_ptr
145+
# GOT.mem.global_float
146146
# CHECK-NEXT: - Index: 6
147147
# CHECK-NEXT: Type: I32
148148
# CHECK-NEXT: Mutable: false
149149
# CHECK-NEXT: InitExpr:
150150
# CHECK-NEXT: Opcode: I32_CONST
151-
# CHECK-NEXT: Value: 65544
151+
# CHECK-NEXT: Value: 65536
152152

153-
# __memory_base
153+
# GOT.mem.ret32_ptr
154154
# CHECK-NEXT: - Index: 7
155155
# CHECK-NEXT: Type: I32
156156
# CHECK-NEXT: Mutable: false
157157
# CHECK-NEXT: InitExpr:
158158
# CHECK-NEXT: Opcode: I32_CONST
159-
# CHECK-NEXT: Value: 0
159+
# CHECK-NEXT: Value: 65544
160+
161+
# CHECK: GlobalNames:
162+
# CHECK-NEXT: - Index: 0
163+
# CHECK-NEXT: Name: __stack_pointer
164+
# CHECK-NEXT: - Index: 1
165+
# CHECK-NEXT: Name: __tls_base
166+
# CHECK-NEXT: - Index: 2
167+
# CHECK-NEXT: Name: GOT.func.internal.ret32
168+
# CHECK-NEXT: - Index: 3
169+
# CHECK-NEXT: Name: GOT.func.internal.missing_function
170+
# CHECK-NEXT: - Index: 4
171+
# CHECK-NEXT: Name: GOT.data.internal.__table_base
172+
# CHECK-NEXT: - Index: 5
173+
# CHECK-NEXT: Name: GOT.data.internal.missing_float
174+
# CHECK-NEXT: - Index: 6
175+
# CHECK-NEXT: Name: GOT.data.internal.global_float
176+
# CHECK-NEXT: - Index: 7
177+
# CHECK-NEXT: Name: GOT.data.internal.ret32_ptr
178+
# CHECK-NEXT: - Index: 8
179+
# CHECK-NEXT: Name: GOT.data.internal.__memory_base
180+
# CHECK-NEXT: DataSegmentNames:

lld/wasm/SymbolTable.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,9 @@ DefinedGlobal *SymbolTable::addSyntheticGlobal(StringRef name, uint32_t flags,
268268
DefinedGlobal *SymbolTable::addOptionalGlobalSymbol(StringRef name,
269269
InputGlobal *global) {
270270
Symbol *s = find(name);
271-
if (!s || s->isDefined())
271+
if (!s && (ctx.arg.exportAll || ctx.arg.exportedSymbols.contains(name)))
272+
s = insertName(name).first;
273+
else if (!s || s->isDefined())
272274
return nullptr;
273275
LLVM_DEBUG(dbgs() << "addOptionalGlobalSymbol: " << name << " -> " << global
274276
<< "\n");

0 commit comments

Comments
 (0)