diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2022-02-05 14:42:56 -0500 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2022-02-05 15:17:54 -0500 |
| commit | a1c261cd096c9c2ebfffa7049e29c06914784c04 (patch) | |
| tree | 806401cb7dd013afbb540160fdcf520d03aa433a /compiler/rustc_driver/src | |
| parent | cb18e83e8512be69b26fcb67ae66d81e5b7a4383 (diff) | |
| download | rust-a1c261cd096c9c2ebfffa7049e29c06914784c04.tar.gz rust-a1c261cd096c9c2ebfffa7049e29c06914784c04.zip | |
Store rlink data in opaque binary format on disk
Diffstat (limited to 'compiler/rustc_driver/src')
| -rw-r--r-- | compiler/rustc_driver/src/lib.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/rustc_driver/src/lib.rs b/compiler/rustc_driver/src/lib.rs index acf221a08ee..ca4e7b5142e 100644 --- a/compiler/rustc_driver/src/lib.rs +++ b/compiler/rustc_driver/src/lib.rs @@ -29,7 +29,7 @@ use rustc_log::stdout_isatty; use rustc_metadata::locator; use rustc_save_analysis as save; use rustc_save_analysis::DumpHandler; -use rustc_serialize::json::{self, ToJson}; +use rustc_serialize::json::ToJson; use rustc_session::config::{nightly_options, CG_OPTIONS, DB_OPTIONS}; use rustc_session::config::{ErrorOutputType, Input, OutputType, PrintRequest, TrimmedDefPaths}; use rustc_session::cstore::MetadataLoader; @@ -595,10 +595,12 @@ impl RustcDefaultCalls { // FIXME: #![crate_type] and #![crate_name] support not implemented yet sess.init_crate_types(collect_crate_types(sess, &[])); let outputs = compiler.build_output_filenames(sess, &[]); - let rlink_data = fs::read_to_string(file).unwrap_or_else(|err| { + let rlink_data = fs::read(file).unwrap_or_else(|err| { sess.fatal(&format!("failed to read rlink file: {}", err)); }); - let codegen_results: CodegenResults = json::decode(&rlink_data); + let mut decoder = rustc_serialize::opaque::Decoder::new(&rlink_data, 0); + let codegen_results: CodegenResults = + rustc_serialize::Decodable::decode(&mut decoder); let result = compiler.codegen_backend().link(sess, codegen_results, &outputs); abort_on_err(result, sess); } else { |
