1#! /bin/sh 2 3# Copyright (C) 2007-2020 Free Software Foundation, Inc. 4# This file is part of GCC. 5 6# GCC is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 3, or (at your option) 9# any later version. 10 11# GCC is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15 16# You should have received a copy of the GNU General Public License 17# along with GCC; see the file COPYING3. If not see 18# <http://www.gnu.org/licenses/>. 19 20# Invoke as, ld or nm from the build tree. 21 22ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@" 23ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@" 24ORIGINAL_LD_BFD_FOR_TARGET="@ORIGINAL_LD_BFD_FOR_TARGET@" 25ORIGINAL_LD_GOLD_FOR_TARGET="@ORIGINAL_LD_GOLD_FOR_TARGET@" 26ORIGINAL_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_FOR_TARGET@" 27ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@" 28ORIGINAL_DSYMUTIL_FOR_TARGET="@ORIGINAL_DSYMUTIL_FOR_TARGET@" 29exeext=@host_exeext@ 30fast_install=@enable_fast_install@ 31objdir=@objdir@ 32 33invoked=`basename "$0"` 34id=$invoked 35case "$invoked" in 36 as) 37 original=$ORIGINAL_AS_FOR_TARGET 38 prog=as-new$exeext 39 dir=gas 40 ;; 41 collect-ld) 42 # Check -fuse-ld=bfd and -fuse-ld=gold 43 case " $* " in 44 *\ -fuse-ld=bfd\ *) 45 original=$ORIGINAL_LD_BFD_FOR_TARGET 46 ;; 47 *\ -fuse-ld=gold\ *) 48 original=$ORIGINAL_LD_GOLD_FOR_TARGET 49 ;; 50 *) 51 # when using a linker plugin, gcc will always pass '-plugin' as the 52 # first or second option to the linker. 53 if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then 54 original=$ORIGINAL_PLUGIN_LD_FOR_TARGET 55 else 56 original=$ORIGINAL_LD_FOR_TARGET 57 fi 58 ;; 59 esac 60 prog=ld-new$exeext 61 if test "$original" = ../gold/ld-new$exeext; then 62 dir=gold 63 # No need to handle relink since gold doesn't use libtool. 64 fast_install=yes 65 else 66 dir=ld 67 fi 68 id=ld 69 ;; 70 nm) 71 original=$ORIGINAL_NM_FOR_TARGET 72 prog=nm-new$exeext 73 dir=binutils 74 ;; 75 dsymutil) 76 original=$ORIGINAL_DSYMUTIL_FOR_TARGET 77 # We do not build this in tree - but still want to be able to execute 78 # a configured version from the build dir. 79 prog= 80 dir= 81 ;; 82esac 83 84case "$original" in 85 ../*) 86 # compute absolute path of the location of this script 87 tdir=`dirname "$0"` 88 scriptdir=`cd "$tdir" && pwd` 89 90 if test -x $scriptdir/../$dir/$prog; then 91 test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"} 92 93 # if libtool did everything it needs to do, there's a fast path 94 lt_prog=$scriptdir/../$dir/$objdir/lt-$prog 95 test -x $lt_prog && exec $lt_prog ${1+"$@"} 96 97 # libtool has not relinked ld-new yet, but we cannot just use the 98 # previous stage (because then the relinking would just never happen!). 99 # So we take extra care to use prev-ld/ld-new *on recursive calls*. 100 eval LT_RCU="\${LT_RCU_$id}" 101 test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} 102 103 eval LT_RCU_$id=1 104 export LT_RCU_$id 105 $scriptdir/../$dir/$prog ${1+"$@"} 106 result=$? 107 exit $result 108 109 else 110 exec $scriptdir/../prev-$dir/$prog ${1+"$@"} 111 fi 112 ;; 113 *) 114 exec $original ${1+"$@"} 115 ;; 116esac 117