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