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