diff options
| author | Gary Guo <gary@garyguo.net> | 2022-04-25 14:06:30 +0100 |
|---|---|---|
| committer | Gary Guo <gary@garyguo.net> | 2022-04-25 14:06:30 +0100 |
| commit | 6f9b2b32476dbd3453e296bea54726d469e471c0 (patch) | |
| tree | 6dfb22ce00d64bb94e1ff99ff183edb261c165de /compiler/rustc_codegen_ssa | |
| parent | 1af3e0a65e5c390ce46c4be9d3b9132768278ce9 (diff) | |
| download | rust-6f9b2b32476dbd3453e296bea54726d469e471c0.tar.gz rust-6f9b2b32476dbd3453e296bea54726d469e471c0.zip | |
Stop exporting rust_eh_personality and friends from cdylib
Diffstat (limited to 'compiler/rustc_codegen_ssa')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/symbol_export.rs | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs index 2fa6778cca4..10d70b11746 100644 --- a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs +++ b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs @@ -105,24 +105,18 @@ fn reachable_non_generics_provider(tcx: TyCtxt<'_>, cnum: CrateNum) -> DefIdMap< } }) .map(|def_id| { - let export_level = if special_runtime_crate { + let (export_level, used) = if special_runtime_crate { let name = tcx.symbol_name(Instance::mono(tcx, def_id.to_def_id())).name; - // We can probably do better here by just ensuring that - // it has hidden visibility rather than public - // visibility, as this is primarily here to ensure it's - // not stripped during LTO. - // - // In general though we won't link right if these - // symbols are stripped, and LTO currently strips them. - match name { + // We won't link right if these symbols are stripped during LTO. + let used = match name { "rust_eh_personality" | "rust_eh_register_frames" - | "rust_eh_unregister_frames" => - SymbolExportLevel::C, - _ => SymbolExportLevel::Rust, - } + | "rust_eh_unregister_frames" => true, + _ => false, + }; + (SymbolExportLevel::Rust, used) } else { - symbol_export_level(tcx, def_id.to_def_id()) + (symbol_export_level(tcx, def_id.to_def_id()), false) }; let codegen_attrs = tcx.codegen_fn_attrs(def_id.to_def_id()); debug!( @@ -142,7 +136,7 @@ fn reachable_non_generics_provider(tcx: TyCtxt<'_>, cnum: CrateNum) -> DefIdMap< SymbolExportKind::Text }, used: codegen_attrs.flags.contains(CodegenFnAttrFlags::USED) - || codegen_attrs.flags.contains(CodegenFnAttrFlags::USED_LINKER), + || codegen_attrs.flags.contains(CodegenFnAttrFlags::USED_LINKER) || used, }) }) .collect(); |
