@@ -5801,13 +5801,13 @@ def test_bad_function_pointer_cast(self, opts, wasm, safe):
5801
5801
self.assertContained('function signature mismatch', output)
5802
5802
5803
5803
def test_bad_export(self):
5804
- for m in ('', ' '):
5804
+ for exports in ('_main ', '_main,foo '):
5805
5805
self.clear()
5806
- cmd = [EMCC, test_file('hello_world.c'), '-sEXPORTED_FUNCTIONS=["' + m + '_main"] ']
5806
+ cmd = [EMCC, test_file('hello_world.c'), f '-sEXPORTED_FUNCTIONS={exports} ']
5807
5807
print(cmd)
5808
5808
stderr = self.run_process(cmd, stderr=PIPE, check=False).stderr
5809
- if m :
5810
- self.assertContained('undefined exported symbol: " _main "', stderr)
5809
+ if 'foo' in exports :
5810
+ self.assertContained('undefined exported symbol: "foo "', stderr)
5811
5811
else:
5812
5812
self.assertContained('hello, world!', self.run_js('a.out.js'))
5813
5813
@@ -11350,13 +11350,13 @@ def test_dash_s_list_parsing(self):
11350
11350
# Simple one-per-line response file format
11351
11351
11352
11352
# stray slash
11353
- ("EXPORTED_FUNCTIONS=['_a', '_b', \\'_c', '_d']", '''undefined exported symbol : "\\\\'_c'"'''),
11353
+ ("EXPORTED_FUNCTIONS=['_a', '_b', \\'_c', '_d']", '''invalid export name : "\\\\'_c'"'''),
11354
11354
# stray slash
11355
- ("EXPORTED_FUNCTIONS=['_a', '_b',\\ '_c', '_d']", '''undefined exported symbol : "\\\\ '_c'"'''),
11355
+ ("EXPORTED_FUNCTIONS=['_a', '_b',\\ '_c', '_d']", '''invalid export name : "\\\\ '_c'"'''),
11356
11356
# stray slash
11357
- ('EXPORTED_FUNCTIONS=["_a", "_b", \\"_c", "_d"]', 'undefined exported symbol : "\\\\"_c""'),
11357
+ ('EXPORTED_FUNCTIONS=["_a", "_b", \\"_c", "_d"]', 'invalid export name : "\\\\"_c""'),
11358
11358
# stray slash
11359
- ('EXPORTED_FUNCTIONS=["_a", "_b",\\ "_c", "_d"]', 'undefined exported symbol : "\\\\ "_c"'),
11359
+ ('EXPORTED_FUNCTIONS=["_a", "_b",\\ "_c", "_d"]', 'invalid export name : "\\\\ "_c"'),
11360
11360
# missing comma
11361
11361
('EXPORTED_FUNCTIONS=["_a", "_b" "_c", "_d"]', 'wasm-ld: error: symbol exported via --export not found: b" "_c'),
11362
11362
]:
@@ -16114,7 +16114,11 @@ def test_cxx20_modules_std_headers(self):
16114
16114
def test_invalid_export_name(self):
16115
16115
create_file('test.c', '__attribute__((export_name("my.func"))) void myfunc() {}')
16116
16116
err = self.expect_fail([EMCC, 'test.c'])
16117
- self.assertContained('emcc: error: invalid export name: "my.func"', err)
16117
+ self.assertContained('emcc: error: invalid export name: "_my.func"', err)
16118
+
16119
+ # When we are generating only wasm and not JS we don't need exports to
16120
+ # be valid JS symbols.
16121
+ self.run_process([EMCC, 'test.c', '--no-entry', '-o', 'out.wasm'])
16118
16122
16119
16123
# GCC (and clang) and JavaScript also allow $ in symbol names
16120
16124
create_file('valid.c', '''
0 commit comments