#! /bin/sh # Copyright (C) 2007-2024 Free Software Foundation, Inc. # This file is part of GCC. # GCC is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # GCC is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with GCC; see the file COPYING3. If not see # . # Invoke as, ld or nm from the build tree. ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@" ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@" ORIGINAL_LD_BFD_FOR_TARGET="@ORIGINAL_LD_BFD_FOR_TARGET@" ORIGINAL_LD_GOLD_FOR_TARGET="@ORIGINAL_LD_GOLD_FOR_TARGET@" ORIGINAL_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_FOR_TARGET@" ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@" ORIGINAL_DSYMUTIL_FOR_TARGET="@ORIGINAL_DSYMUTIL_FOR_TARGET@" exeext=@host_exeext@ fast_install=@enable_fast_install@ objdir=@objdir@ invoked=`basename "$0"` id=$invoked case "$invoked" in as) original=$ORIGINAL_AS_FOR_TARGET prog=as-new$exeext dir=gas ;; collect-ld) # Check -fuse-ld=bfd and -fuse-ld=gold case " $* " in *\ -fuse-ld=bfd\ *) original=$ORIGINAL_LD_BFD_FOR_TARGET ;; *\ -fuse-ld=gold\ *) original=$ORIGINAL_LD_GOLD_FOR_TARGET ;; *) # when using a linker plugin, gcc will always pass '-plugin' as the # first or second option to the linker. if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then original=$ORIGINAL_PLUGIN_LD_FOR_TARGET else original=$ORIGINAL_LD_FOR_TARGET fi ;; esac prog=ld-new$exeext if test "$original" = ../gold/ld-new$exeext; then dir=gold # No need to handle relink since gold doesn't use libtool. fast_install=yes else dir=ld fi id=ld ;; nm) original=$ORIGINAL_NM_FOR_TARGET prog=nm-new$exeext dir=binutils ;; dsymutil) original=$ORIGINAL_DSYMUTIL_FOR_TARGET # We do not build this in tree - but still want to be able to execute # a configured version from the build dir. prog= dir= ;; esac if test -z "$original" then echo "$0: \$original is unset" >&2 echo "This probably means there is no '$invoked' for the target." >&2 echo "For a cross-compiler, you probably need to install Binutils first." >&2 exit 1 fi case "$original" in ../*) # compute absolute path of the location of this script tdir=`dirname "$0"` scriptdir=`cd "$tdir" && pwd` if test -x $scriptdir/../$dir/$prog; then test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"} # if libtool did everything it needs to do, there's a fast path lt_prog=$scriptdir/../$dir/$objdir/lt-$prog test -x $lt_prog && exec $lt_prog ${1+"$@"} # libtool has not relinked ld-new yet, but we cannot just use the # previous stage (because then the relinking would just never happen!). # So we take extra care to use prev-ld/ld-new *on recursive calls*. eval LT_RCU="\${LT_RCU_$id}" test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} eval LT_RCU_$id=1 export LT_RCU_$id $scriptdir/../$dir/$prog ${1+"$@"} result=$? exit $result else exec $scriptdir/../prev-$dir/$prog ${1+"$@"} fi ;; *) exec $original ${1+"$@"} ;; esac