Use protected symbols when building rustc_driver

This commit is contained in:
David Lattimore 2024-10-27 13:54:31 +11:00
parent 759e07f063
commit 00da974c5c

View File

@ -1057,6 +1057,14 @@ pub fn rustc_cargo(
cargo.rustflag("-l").rustflag("Enzyme-19"); cargo.rustflag("-l").rustflag("Enzyme-19");
} }
// Building with protected visibility reduces the number of dynamic relocations needed, giving
// us a faster startup time. However GNU ld < 2.40 will error if we try to link a shared object
// with direct references to protected symbols, so for now we only use protected symbols if
// linking with LLD is enabled.
if builder.build.config.lld_mode.is_used() {
cargo.rustflag("-Zdefault-visibility=protected");
}
// We currently don't support cross-crate LTO in stage0. This also isn't hugely necessary // We currently don't support cross-crate LTO in stage0. This also isn't hugely necessary
// and may just be a time sink. // and may just be a time sink.
if compiler.stage != 0 { if compiler.stage != 0 {