File tree Expand file tree Collapse file tree 3 files changed +32
-0
lines changed
compiler/rustc_codegen_ssa/src/back
tests/run-make/pdb-alt-path Expand file tree Collapse file tree 3 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -929,6 +929,15 @@ impl<'a> Linker for MsvcLinker<'a> {
929929 // from the CodeView line tables in the object files.
930930 self . cmd . arg ( "/DEBUG" ) ;
931931
932+ // Default to emitting only the file name of the PDB file into
933+ // the binary instead of the full path. Emitting the full path
934+ // may leak private information (such as user names).
935+ // See https://github.com/rust-lang/rust/issues/87825.
936+ //
937+ // This default behavior can be overridden by explicitly passing
938+ // `-Clink-arg=/PDBALTPATH:...` to rustc.
939+ self . cmd . arg ( "/PDBALTPATH:%_PDB%" ) ;
940+
932941 // This will cause the Microsoft linker to embed .natvis info into the PDB file
933942 let natvis_dir_path = self . sess . sysroot . join ( "lib\\ rustlib\\ etc" ) ;
934943 if let Ok ( natvis_dir) = fs:: read_dir ( & natvis_dir_path) {
Original file line number Diff line number Diff line change 1+ include ../tools.mk
2+
3+ # only-windows-msvc
4+
5+ all :
6+ # Test that we don't have the full path to the PDB file in the binary
7+ $(RUSTC ) main.rs -g --crate-name my_crate_name --crate-type bin
8+ $(CGREP ) " my_crate_name.pdb" < $(TMPDIR ) /my_crate_name.exe
9+ $(CGREP ) -v " \\ my_crate_name.pdb" < $(TMPDIR ) /my_crate_name.exe
10+
11+ # Test that backtraces still can find debuginfo by checking that they contain symbol names and
12+ # source locations.
13+ RUST_BACKTRACE="full" $(TMPDIR)/my_crate_name.exe &> $(TMPDIR)/backtrace.txt || exit 0
14+ $(CGREP) "my_crate_name::main" < $(TMPDIR)/backtrace.txt
15+ $(CGREP) "pdb-alt-path\\main.rs:2" < $(TMPDIR)/backtrace.txt
16+
17+ # Test that explicitly passed `-Clink-arg=/PDBALTPATH:...` is respected
18+ $(RUSTC) main.rs -g --crate-name my_crate_name --crate-type bin -Clink-arg=/PDBALTPATH:abcdefg.pdb
19+ $(CGREP) "abcdefg.pdb" < $(TMPDIR)/my_crate_name.exe
20+ $(CGREP) -v "my_crate_name.pdb" < $(TMPDIR)/my_crate_name.exe
Original file line number Diff line number Diff line change 1+ fn main ( ) {
2+ panic ! ( "backtrace please" ) ;
3+ }
You can’t perform that action at this time.
0 commit comments