Skip to content

Commit a259163

Browse files
committed
Avoid rustc_serialize in linker.rs
1 parent 62a4f91 commit a259163

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

compiler/rustc_codegen_ssa/src/back/linker.rs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use rustc_hir::def_id::{CrateNum, LOCAL_CRATE};
1414
use rustc_middle::middle::dependency_format::Linkage;
1515
use rustc_middle::middle::exported_symbols::{ExportedSymbol, SymbolExportInfo, SymbolExportKind};
1616
use rustc_middle::ty::TyCtxt;
17-
use rustc_serialize::{json, Encoder};
1817
use rustc_session::config::{self, CrateType, DebugInfo, LinkerPluginLto, Lto, OptLevel, Strip};
1918
use rustc_session::Session;
2019
use rustc_span::symbol::Symbol;
@@ -1147,26 +1146,24 @@ impl<'a> Linker for EmLinker<'a> {
11471146
}
11481147

11491148
fn export_symbols(&mut self, _tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) {
1149+
use std::fmt::Write;
1150+
11501151
debug!("EXPORTED SYMBOLS:");
11511152

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+
11521164
self.cmd.arg("-s");
11531165

11541166
let mut arg = OsString::from("EXPORTED_FUNCTIONS=");
1155-
let mut encoded = String::new();
1156-
1157-
{
1158-
let mut encoder = json::Encoder::new(&mut encoded);
1159-
let res = encoder.emit_seq(symbols.len(), |encoder| {
1160-
for (i, sym) in symbols.iter().enumerate() {
1161-
encoder.emit_seq_elt(i, |encoder| encoder.emit_str(&("_".to_owned() + sym)))?;
1162-
}
1163-
Ok(())
1164-
});
1165-
if let Err(e) = res {
1166-
self.sess.fatal(&format!("failed to encode exported symbols: {}", e));
1167-
}
1168-
}
1169-
debug!("{}", encoded);
11701167
arg.push(encoded);
11711168

11721169
self.cmd.arg(arg);

0 commit comments

Comments
 (0)