diff options
Diffstat (limited to 'gcc-4.4.0/gcc/exec-tool.in')
-rw-r--r-- | gcc-4.4.0/gcc/exec-tool.in | 107 |
1 files changed, 82 insertions, 25 deletions
diff --git a/gcc-4.4.0/gcc/exec-tool.in b/gcc-4.4.0/gcc/exec-tool.in index f58516340..65670e6a9 100644 --- a/gcc-4.4.0/gcc/exec-tool.in +++ b/gcc-4.4.0/gcc/exec-tool.in @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. # This file is part of GCC. # GCC is free software; you can redistribute it and/or modify @@ -21,10 +21,12 @@ ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@" ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@" +ORIGINAL_GOLD_FOR_TARGET="@ORIGINAL_GOLD_FOR_TARGET@" ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@" exeext=@host_exeext@ fast_install=@enable_fast_install@ objdir=@objdir@ +version="1.1" invoked=`basename "$0"` case "$invoked" in @@ -33,48 +35,103 @@ case "$invoked" in prog=as-new$exeext dir=gas ;; - collect-ld) - original=$ORIGINAL_LD_FOR_TARGET - prog=ld-new$exeext - dir=ld - ;; nm) original=$ORIGINAL_NM_FOR_TARGET prog=nm-new$exeext dir=binutils ;; + collect-ld) + prog=ld-new$exeext + # Look for the a command line option + # specifying the linker to be used. + case " $* " in + *\ -use-gold\ *) + original=$ORIGINAL_GOLD_FOR_TARGET + dir=gold + ;; + *\ -use-ld\ * | *\ -use-ld.bfd\ *) + original=$ORIGINAL_LD_FOR_TARGET + dir=ld + ;; + *) + original=$ORIGINAL_LD_FOR_TARGET + dir=ld + ;; + esac + + # If the selected linker has not been configured then + # try using the others, in the order LD, GOLD. + if test x"$original" = x; then + if test x"$ORIGINAL_LD_FOR_TARGET" != x; then + original=$ORIGINAL_LD_FOR_TARGET + dir=ld + elif test x"$ORIGINAL_GOLD_FOR_TARGET" != x; then + original=$ORIGINAL_GOLD_FOR_TARGET + dir=gold + # Otherwise do nothing - the case statement below + # will issue an error message for us. + fi + fi + ;; esac case "$original" in ../*) - # compute absolute path of the location of this script + # Compute absolute path to 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*. - test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} - - LT_RCU=1; export LT_RCU - $scriptdir/../$dir/$prog ${1+"$@"} - result=$? - exit $result + if test "$fast_install" = yes; then + # If libtool did everything it needs to do, there's a fast path. + lt_prog=$scriptdir/../$dir/$objdir/lt-$prog + if test -x $lt_prog; then + original=$lt_prog + else + # 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*. + if test x"$LT_RCU" = x"1"; then + original=$scriptdir/../prev-$dir/$prog + else + LT_RCU=1; export LT_RCU + case " $* " in + *\ -v\ *) + echo "$invoked $version" + echo $scriptdir/../$dir/$prog $* + ;; + esac + $scriptdir/../$dir/$prog ${1+"$@"} + result=$? + exit $result + fi + fi + else + original=$scriptdir/../$dir/$prog + fi else - exec $scriptdir/../prev-$dir/$prog ${1+"$@"} + original=$scriptdir/../prev-$dir/$prog fi ;; - *) - exec "$original" ${1+"$@"} + "") + echo "$invoked: executable not configured" + exit 1 ;; esac +# If -v has been used then display our version number +# and then echo the command we are about to invoke. +case " $* " in + *\ -v\ *) + echo "$invoked $version" + echo $original $* + ;; +esac +if test -x $original; then + exec "$original" ${1+"$@"} +else + echo "$invoked: unable to locate executable: $original" + exit 1 +fi |