@@ -14,7 +14,6 @@ use rustc_hir::def_id::{CrateNum, LOCAL_CRATE};
1414use rustc_middle:: middle:: dependency_format:: Linkage ;
1515use rustc_middle:: middle:: exported_symbols:: { ExportedSymbol , SymbolExportInfo , SymbolExportKind } ;
1616use rustc_middle:: ty:: TyCtxt ;
17- use rustc_serialize:: { json, Encoder } ;
1817use rustc_session:: config:: { self , CrateType , DebugInfo , LinkerPluginLto , Lto , OptLevel , Strip } ;
1918use rustc_session:: Session ;
2019use 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