diff options
| author | Andy Wang <cbeuw.andy@gmail.com> | 2021-05-01 12:28:45 +0100 |
|---|---|---|
| committer | Andy Wang <cbeuw.andy@gmail.com> | 2021-05-05 15:31:32 +0100 |
| commit | 0ac9ca4f88c03e6fc507ab8937573dca1ccfd2ed (patch) | |
| tree | 3ea40c134bb503668dc11c20c687dc76a7b81316 /compiler/rustc_metadata/src/rmeta/decoder.rs | |
| parent | 5417b45c2676dcd396f007bd89ed0cd55d085768 (diff) | |
| download | rust-0ac9ca4f88c03e6fc507ab8937573dca1ccfd2ed.tar.gz rust-0ac9ca4f88c03e6fc507ab8937573dca1ccfd2ed.zip | |
Add -Z simulate-remapped-rust-src-base option to simulate path virutalisation during bootstrapping
Diffstat (limited to 'compiler/rustc_metadata/src/rmeta/decoder.rs')
| -rw-r--r-- | compiler/rustc_metadata/src/rmeta/decoder.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/decoder.rs b/compiler/rustc_metadata/src/rmeta/decoder.rs index 4cb90d5a6d6..493c9dc9563 100644 --- a/compiler/rustc_metadata/src/rmeta/decoder.rs +++ b/compiler/rustc_metadata/src/rmeta/decoder.rs @@ -1707,6 +1707,31 @@ impl<'a, 'tcx> CrateMetadataRef<'a> { .. } = source_file_to_import; + // If this file is under $sysroot/lib/rustlib/src/ but has not been remapped + // during rust bootstrapping by `remap-debuginfo = true`, and the user + // wish to simulate that behaviour by -Z simulate-remapped-rust-src-base, + // then we change `name` to a similar state as if the rust was bootstrapped + // with `remap-debuginfo = true`. + // This is useful for testing so that tests about the effects of + // `try_to_translate_virtual_to_real` don't have to worry about how the + // compiler is bootstrapped. + if let Some(virtual_dir) = + &sess.opts.debugging_opts.simulate_remapped_rust_src_base + { + if let Some(real_dir) = &sess.opts.real_rust_source_base_dir { + if let rustc_span::FileName::Real(ref mut old_name) = name { + if let rustc_span::RealFileName::LocalPath(local) = old_name { + if let Ok(rest) = local.strip_prefix(real_dir) { + *old_name = rustc_span::RealFileName::Remapped { + local_path: None, + virtual_name: virtual_dir.join(rest), + }; + } + } + } + } + } + // If this file's path has been remapped to `/rustc/$hash`, // we might be able to reverse that (also see comments above, // on `try_to_translate_virtual_to_real`). |
