diff options
| author | Sebastian Poeplau <poeplau@adacore.com> | 2025-08-01 13:22:06 +0200 |
|---|---|---|
| committer | Sebastian Poeplau <poeplau@adacore.com> | 2025-08-06 13:24:43 +0200 |
| commit | b4d923cea0509933b1fb859930cb20784251f9be (patch) | |
| tree | 58b8486ceb371d81ba02a30cbc56b9f954596866 /compiler/rustc_codegen_ssa/src | |
| parent | 868bdde25b030e0b71a29a5dbc04a891036e702e (diff) | |
Embed GDB pretty printers in rlibs and dylibs
Instead of collecting pretty printers transitively when building executables/staticlibs/cdylibs, let the debugger find each crate's pretty printers via its .debug_gdb_scripts section. This covers the case where libraries defining custom pretty printers are loaded dynamically.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/base.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index eb21468650c..b4556ced0b3 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -609,7 +609,15 @@ pub fn collect_debugger_visualizers_transitive( ) -> BTreeSet<DebuggerVisualizerFile> { tcx.debugger_visualizers(LOCAL_CRATE) .iter() - .chain(tcx.crates(()).iter().flat_map(|&cnum| tcx.debugger_visualizers(cnum))) + .chain( + tcx.crates(()) + .iter() + .filter(|&cnum| { + let used_crate_source = tcx.used_crate_source(*cnum); + used_crate_source.rlib.is_some() || used_crate_source.rmeta.is_some() + }) + .flat_map(|&cnum| tcx.debugger_visualizers(cnum)), + ) .filter(|visualizer| visualizer.visualizer_type == visualizer_type) .cloned() .collect::<BTreeSet<_>>() |
