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