1#! /bin/sh 2 3# Copyright (C) 2007-2015 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@" 28exeext=@host_exeext@ 29fast_install=@enable_fast_install@ 30objdir=@objdir@ 31 32invoked=`basename "$0"` 33id=$invoked 34case "$invoked" in 35 as) 36 original=$ORIGINAL_AS_FOR_TARGET 37 prog=as-new$exeext 38 dir=gas 39 ;; 40 collect-ld) 41 # Check -fuse-ld=bfd and -fuse-ld=gold 42 case " $* " in 43 *\ -fuse-ld=bfd\ *) 44 original=$ORIGINAL_LD_BFD_FOR_TARGET 45 ;; 46 *\ -fuse-ld=gold\ *) 47 original=$ORIGINAL_LD_GOLD_FOR_TARGET 48 ;; 49 *) 50 # when using a linker plugin, gcc will always pass '-plugin' as the 51 # first or second option to the linker. 52 if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then 53 original=$ORIGINAL_PLUGIN_LD_FOR_TARGET 54 else 55 original=$ORIGINAL_LD_FOR_TARGET 56 fi 57 ;; 58 esac 59 prog=ld-new$exeext 60 if test "$original" = ../gold/ld-new$exeext; then 61 dir=gold 62 # No need to handle relink since gold doesn't use libtool. 63 fast_install=yes 64 else 65 dir=ld 66 fi 67 id=ld 68 ;; 69 nm) 70 original=$ORIGINAL_NM_FOR_TARGET 71 prog=nm-new$exeext 72 dir=binutils 73 ;; 74esac 75 76case "$original" in 77 ../*) 78 # compute absolute path of the location of this script 79 tdir=`dirname "$0"` 80 scriptdir=`cd "$tdir" && pwd` 81 82 if test -x $scriptdir/../$dir/$prog; then 83 test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"} 84 85 # if libtool did everything it needs to do, there's a fast path 86 lt_prog=$scriptdir/../$dir/$objdir/lt-$prog 87 test -x $lt_prog && exec $lt_prog ${1+"$@"} 88 89 # libtool has not relinked ld-new yet, but we cannot just use the 90 # previous stage (because then the relinking would just never happen!). 91 # So we take extra care to use prev-ld/ld-new *on recursive calls*. 92 eval LT_RCU="\${LT_RCU_$id}" 93 test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} 94 95 eval LT_RCU_$id=1 96 export LT_RCU_$id 97 $scriptdir/../$dir/$prog ${1+"$@"} 98 result=$? 99 exit $result 100 101 else 102 exec $scriptdir/../prev-$dir/$prog ${1+"$@"} 103 fi 104 ;; 105 *) 106 exec $original ${1+"$@"} 107 ;; 108esac 109