Fix flags when using clang as linker for Fuchsia · rust-lang/rust@55d5dcb (original) (raw)
`@@ -1551,12 +1551,21 @@ fn crt_objects_fallback(sess: &Session, crate_type: CrateType) -> bool {
`
1551
1551
`fn add_pre_link_objects(
`
1552
1552
`cmd: &mut dyn Linker,
`
1553
1553
`sess: &Session,
`
``
1554
`+
flavor: LinkerFlavor,
`
1554
1555
`link_output_kind: LinkOutputKind,
`
1555
1556
`self_contained: bool,
`
1556
1557
`) {
`
``
1558
`+
// FIXME: we are currently missing some infra here (per-linker-flavor CRT objects),
`
``
1559
`+
// so Fuchsia has to be special-cased.
`
1557
1560
`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
`+
};
`
1560
1569
`for obj in objects.get(&link_output_kind).iter().copied().flatten() {
`
1561
1570
` cmd.add_object(&get_object_file_path(sess, obj, self_contained));
`
1562
1571
`}
`
`@@ -1881,7 +1890,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>(
`
1881
1890
`// ------------ Object code and libraries, order-dependent ------------
`
1882
1891
``
1883
1892
`// 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);
`
1885
1894
``
1886
1895
`add_linked_symbol_object(
`
1887
1896
` cmd,
`
`@@ -2018,7 +2027,10 @@ fn add_order_independent_options(
`
2018
2027
``
2019
2028
`add_link_script(cmd, sess, tmpdir, crate_type);
`
2020
2029
``
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
`+
{
`
2022
2034
`let prefix = if sess.opts.unstable_opts.sanitizer.contains(SanitizerSet::ADDRESS) {
`
2023
2035
`"asan/"
`
2024
2036
`} else {
`