@@ -1551,12 +1551,21 @@ fn crt_objects_fallback(sess: &Session, crate_type: CrateType) -> bool {
15511551fn add_pre_link_objects (
15521552 cmd : & mut dyn Linker ,
15531553 sess : & Session ,
1554+ flavor : LinkerFlavor ,
15541555 link_output_kind : LinkOutputKind ,
15551556 self_contained : bool ,
15561557) {
1558+ // FIXME: we are currently missing some infra here (per-linker-flavor CRT objects),
1559+ // so Fuchsia has to be special-cased.
15571560 let opts = & sess. target ;
1558- let objects =
1559- if self_contained { & opts. pre_link_objects_fallback } else { & opts. pre_link_objects } ;
1561+ let empty = Default :: default ( ) ;
1562+ let objects = if self_contained {
1563+ & opts. pre_link_objects_fallback
1564+ } else if !( sess. target . os == "fuchsia" && flavor == LinkerFlavor :: Gcc ) {
1565+ & opts. pre_link_objects
1566+ } else {
1567+ & empty
1568+ } ;
15601569 for obj in objects. get ( & link_output_kind) . iter ( ) . copied ( ) . flatten ( ) {
15611570 cmd. add_object ( & get_object_file_path ( sess, obj, self_contained) ) ;
15621571 }
@@ -1881,7 +1890,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>(
18811890 // ------------ Object code and libraries, order-dependent ------------
18821891
18831892 // Pre-link CRT objects.
1884- add_pre_link_objects ( cmd, sess, link_output_kind, crt_objects_fallback) ;
1893+ add_pre_link_objects ( cmd, sess, flavor , link_output_kind, crt_objects_fallback) ;
18851894
18861895 add_linked_symbol_object (
18871896 cmd,
@@ -2018,7 +2027,10 @@ fn add_order_independent_options(
20182027
20192028 add_link_script ( cmd, sess, tmpdir, crate_type) ;
20202029
2021- if sess. target . os == "fuchsia" && crate_type == CrateType :: Executable {
2030+ if sess. target . os == "fuchsia"
2031+ && crate_type == CrateType :: Executable
2032+ && flavor != LinkerFlavor :: Gcc
2033+ {
20222034 let prefix = if sess. opts . unstable_opts . sanitizer . contains ( SanitizerSet :: ADDRESS ) {
20232035 "asan/"
20242036 } else {
0 commit comments