diff --git a/build/tools/build-gcc.sh b/build/tools/build-gcc.sh
index aa353d39cbbd8bbc70fe0ec87f842e4c5d191abf..2ecd9575d3d50ef262a560488057748bc9e3d86a 100755
--- a/build/tools/build-gcc.sh
+++ b/build/tools/build-gcc.sh
@@ -504,18 +504,25 @@ done
 
 # $1: Source file prefix (e.g. 'c++')
 # $2: Destination file prefix (e.g. 'g++')
+# $3: Alternative file prefix if $2 doesn't exist (eg. ld.bfd)
 do_relink_bin () {
+    local DST_FILE=$2
+    if [ ! -f "$TOOLCHAIN_PATH/bin/$ABI_CONFIGURE_TARGET-$DST_FILE$HOST_EXE" ]; then
+        DST_FILE=$3
+    fi
+    if [ ! -f "$TOOLCHAIN_PATH/bin/$ABI_CONFIGURE_TARGET-$DST_FILE$HOST_EXE" ]; then
+        echo "ERROR: Can't relink $1 to $DST_FILE because $DST_FILE doesn't exist"
+        exit 1
+    fi
     do_relink \
         $TOOLCHAIN_PATH/bin/$ABI_CONFIGURE_TARGET-$1$HOST_EXE \
-        $ABI_CONFIGURE_TARGET-$2$HOST_EXE
+        $ABI_CONFIGURE_TARGET-$DST_FILE$HOST_EXE
 }
 
 do_relink_bin c++ g++
 do_relink_bin gcc-$GCC_VERSION gcc
-# Gold is the default except for 4.4.3
-if [ "$GCC_VERSION" != "4.4.3" ]; then
-    do_relink_bin ld ld.gold
-fi
+# symlink ld to either ld.gold or ld.bfd
+do_relink_bin ld ld.gold ld.bfd
 
 # copy SOURCES file if present
 if [ -f "$SRC_DIR/SOURCES" ]; then
diff --git a/build/tools/build-host-gcc.sh b/build/tools/build-host-gcc.sh
index 6e89ce32fdad6cc40ac82450fbc432bc2b96aa61..990e9dcee6da1b344f141726ddad522cb6c318be 100755
--- a/build/tools/build-host-gcc.sh
+++ b/build/tools/build-host-gcc.sh
@@ -1579,8 +1579,10 @@ install_gcc ()
     # Also relink a few files under $INSTALL_DIR/bin/
     do_relink "$INSTALL_DIR"/bin/$TARGET-c++ $TARGET-g++ &&
     do_relink "$INSTALL_DIR"/bin/$TARGET-gcc-$GCC_VERSION $TARGET-gcc &&
-    if [ "$GCC_VERSION" != "4.4.3" ]; then
+    if [ -f "$INSTALL_DIR"/bin/$TARGET-ld.gold ]; then
       do_relink "$INSTALL_DIR"/bin/$TARGET-ld $TARGET-ld.gold
+    else
+      do_relink "$INSTALL_DIR"/bin/$TARGET-ld $TARGET-ld.bfd
     fi
     fail_panic