Skip to content

Commit 5cc3593

Browse files
committed
Fix emscripten linker invocation
1 parent 606848a commit 5cc3593

File tree

3 files changed

+8
-13
lines changed

3 files changed

+8
-13
lines changed

Diff for: Cargo.lock

+1
Original file line numberDiff line numberDiff line change
@@ -3686,6 +3686,7 @@ dependencies = [
36863686
"rustc_span",
36873687
"rustc_symbol_mangling",
36883688
"rustc_target",
3689+
"serde_json",
36893690
"smallvec",
36903691
"snap",
36913692
"tempfile",

Diff for: compiler/rustc_codegen_ssa/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobserver = "0.1.22"
1616
tempfile = "3.2"
1717
thorin-dwp = "0.2"
1818
pathdiff = "0.2.0"
19+
serde_json = "1.0.59"
1920
snap = "1"
2021
smallvec = { version = "1.6.1", features = ["union", "may_dangle"] }
2122
regex = "1.4"

Diff for: compiler/rustc_codegen_ssa/src/back/linker.rs

+6-13
Original file line numberDiff line numberDiff line change
@@ -1146,24 +1146,17 @@ impl<'a> Linker for EmLinker<'a> {
11461146
}
11471147

11481148
fn export_symbols(&mut self, _tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) {
1149-
use std::fmt::Write;
1150-
11511149
debug!("EXPORTED SYMBOLS:");
11521150

1153-
let mut encoded = "[".to_string();
1154-
let mut symbols = symbols.iter();
1155-
if let Some(first_symbol) = symbols.next() {
1156-
write!(encoded, "{:?}", first_symbol).unwrap();
1157-
}
1158-
for symbol in symbols {
1159-
write!(encoded, ",{:?}", symbol).unwrap();
1160-
}
1161-
encoded.push(']');
1162-
debug!("{}", encoded);
1163-
11641151
self.cmd.arg("-s");
11651152

11661153
let mut arg = OsString::from("EXPORTED_FUNCTIONS=");
1154+
let encoded = serde_json::to_string(
1155+
&symbols.iter().map(|sym| "_".to_owned() + sym).collect::<Vec<_>>(),
1156+
)
1157+
.unwrap();
1158+
debug!("{}", encoded);
1159+
11671160
arg.push(encoded);
11681161

11691162
self.cmd.arg(arg);

0 commit comments

Comments
 (0)