summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/binutils/binutils.in8
-rw-r--r--scripts/build/binutils/binutils.sh5
2 files changed, 13 insertions, 0 deletions
diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in
index 2a28d22..425fb04 100644
--- a/config/binutils/binutils.in
+++ b/config/binutils/binutils.in
@@ -80,6 +80,12 @@ config ARCH_arm
config ARCH_x86
select BINUTILS_GOLD_SUPPORTS_ARCH
+# Force using the BFD linker if needed
+# This is the case for some C libraries (eg. glibc and
+# eglibc at least) and affected components can select this
+config BINUTILS_FORCE_LD_BFD
+ bool
+
choice
bool
prompt "Linkers to enable"
@@ -95,6 +101,7 @@ config BINUTILS_LINKER_GOLD
prompt "gold"
depends on BINUTILS_HAS_GOLD
depends on BINUTILS_GOLD_SUPPORTS_ARCH
+ depends on ! BINUTILS_FORCE_LD_BFD
depends on EXPERIMENTAL
select BINUTILS_GOLD_INSTALLED
help
@@ -125,6 +132,7 @@ config BINUTILS_LINKER_GOLD_LD
depends on EXPERIMENTAL
select BINUTILS_GOLD_INSTALLED
select BINUTILS_LINKER_BOTH
+ select BINUTILS_LD_WRAPPER if BINUTILS_FORCE_LD_BFD
help
Both the historical ld and the new gold linkers will be
installed, with gold being the default linker used.
diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh
index 67a6196..dc8f81e 100644
--- a/scripts/build/binutils/binutils.sh
+++ b/scripts/build/binutils/binutils.sh
@@ -96,6 +96,11 @@ do_binutils() {
chmod +x "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ld"
cp -a "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ld" \
"${CT_PREFIX_DIR}/${CT_TARGET}/bin/ld"
+
+ # If needed, force using ld.bfd during the toolchain build
+ if [ "${CT_BINUTILS_FORCE_LD_BFD}" = "y" ]; then
+ export CTNG_LD_IS=bfd
+ fi
fi
# Make those new tools available to the core C compilers to come.