File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed
compiler/rustc_codegen_ssa/src/back Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -1876,6 +1876,21 @@ pub(crate) fn linked_symbols(
1876
1876
}
1877
1877
}
1878
1878
1879
+ match tcx. sess . lto ( ) {
1880
+ Lto :: No | Lto :: ThinLocal => { }
1881
+ Lto :: Thin | Lto :: Fat => {
1882
+ // We really only need symbols from upstream rlibs to end up in the linked symbols list.
1883
+ // The rest are in separate object files which the linker will always link in and
1884
+ // doesn't have rules around the order in which they need to appear.
1885
+ // When doing LTO, some of the symbols in the linked symbols list may end up getting
1886
+ // internalized, which then prevents referencing them from symbols.o. When doing LTO,
1887
+ // all object files that get linked in will be local object files rather than pulled in
1888
+ // from rlibs, so an empty linked symbols list works fine to avoid referencing all those
1889
+ // internalized symbols from symbols.o.
1890
+ return Vec :: new ( ) ;
1891
+ }
1892
+ }
1893
+
1879
1894
let mut symbols = Vec :: new ( ) ;
1880
1895
1881
1896
let export_threshold = symbol_export:: crates_export_threshold ( & [ crate_type] ) ;
You can’t perform that action at this time.
0 commit comments