@@ -1583,12 +1583,21 @@ fn crt_objects_fallback(sess: &Session, crate_type: CrateType) -> bool {
1583
1583
fn add_pre_link_objects (
1584
1584
cmd : & mut dyn Linker ,
1585
1585
sess : & Session ,
1586
+ flavor : LinkerFlavor ,
1586
1587
link_output_kind : LinkOutputKind ,
1587
1588
self_contained : bool ,
1588
1589
) {
1590
+ // FIXME: we are currently missing some infra here (per-linker-flavor CRT objects),
1591
+ // so Fuchsia has to be special-cased.
1589
1592
let opts = & sess. target ;
1590
- let objects =
1591
- if self_contained { & opts. pre_link_objects_fallback } else { & opts. pre_link_objects } ;
1593
+ let empty = Default :: default ( ) ;
1594
+ let objects = if self_contained {
1595
+ & opts. pre_link_objects_fallback
1596
+ } else if !( sess. target . os == "fuchsia" && flavor == LinkerFlavor :: Gcc ) {
1597
+ & opts. pre_link_objects
1598
+ } else {
1599
+ & empty
1600
+ } ;
1592
1601
for obj in objects. get ( & link_output_kind) . iter ( ) . copied ( ) . flatten ( ) {
1593
1602
cmd. add_object ( & get_object_file_path ( sess, obj, self_contained) ) ;
1594
1603
}
@@ -1914,7 +1923,7 @@ fn linker_with_args<'a>(
1914
1923
// ------------ Object code and libraries, order-dependent ------------
1915
1924
1916
1925
// Pre-link CRT objects.
1917
- add_pre_link_objects ( cmd, sess, link_output_kind, crt_objects_fallback) ;
1926
+ add_pre_link_objects ( cmd, sess, flavor , link_output_kind, crt_objects_fallback) ;
1918
1927
1919
1928
add_linked_symbol_object (
1920
1929
cmd,
@@ -2070,7 +2079,10 @@ fn add_order_independent_options(
2070
2079
2071
2080
add_link_script ( cmd, sess, tmpdir, crate_type) ;
2072
2081
2073
- if sess. target . os == "fuchsia" && crate_type == CrateType :: Executable {
2082
+ if sess. target . os == "fuchsia"
2083
+ && crate_type == CrateType :: Executable
2084
+ && flavor != LinkerFlavor :: Gcc
2085
+ {
2074
2086
let prefix = if sess. opts . unstable_opts . sanitizer . contains ( SanitizerSet :: ADDRESS ) {
2075
2087
"asan/"
2076
2088
} else {
0 commit comments