configure: Disable LD_NO_GOLD logic when cross-compiling
authorBen Gamari <ben@smart-cactus.org>
Wed, 12 Dec 2018 17:17:21 +0000 (12:17 -0500)
committerBen Gamari <ben@smart-cactus.org>
Thu, 13 Dec 2018 04:25:02 +0000 (23:25 -0500)
This is generally terrible: see #16025. In short, we previously just blindly
used an un-prefixed ld for LD_NO_GOLD. This is blatantly wrong. Ideally we would
actually verify that ld.gold is indeed broken (by binutils #22266) before
insisting on using another linker but sadly we cannot do so when cross-compiling
since this would require running host code.

For now we simply disable the LD_NO_GOLD logic when cross-compiling and hope
that the user has verified that their ld.gold isn't affected by #22266.

aclocal.m4

index 447fd61..7aa3fb4 100644 (file)
@@ -2408,7 +2408,11 @@ AC_DEFUN([FIND_LD],[
                    FP_CC_LINKER_FLAG_TRY(bfd, $2) ;;
               "GNU gold"*)
                    FP_CC_LINKER_FLAG_TRY(gold, $2)
-                   LD_NO_GOLD=ld
+                   if test "$cross_compiling" = "yes"; then
+                       AC_MSG_NOTICE([Using ld.gold and assuming that it is not affected by binutils issue 22266]);
+                   else
+                       LD_NO_GOLD=ld;
+                   fi
                    ;;
               "LLD"*)
                    FP_CC_LINKER_FLAG_TRY(lld, $2) ;;