From 6f9b2b32476dbd3453e296bea54726d469e471c0 Mon Sep 17 00:00:00 2001 From: Gary Guo Date: Mon, 25 Apr 2022 14:06:30 +0100 Subject: Stop exporting rust_eh_personality and friends from cdylib --- .../rustc_codegen_ssa/src/back/symbol_export.rs | 24 ++++++++-------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'compiler/rustc_codegen_ssa/src') 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(); -- cgit 1.4.1-3-g733a5