diff options
Diffstat (limited to 'gcc-4.7/gcc/exec-tool.in')
-rw-r--r-- | gcc-4.7/gcc/exec-tool.in | 116 |
1 files changed, 88 insertions, 28 deletions
diff --git a/gcc-4.7/gcc/exec-tool.in b/gcc-4.7/gcc/exec-tool.in index 8a1077573..f19a251e8 100644 --- a/gcc-4.7/gcc/exec-tool.in +++ b/gcc-4.7/gcc/exec-tool.in @@ -21,11 +21,13 @@ 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_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_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"` id=$invoked @@ -36,15 +38,44 @@ case "$invoked" in dir=gas ;; collect-ld) - # when using a linker plugin, gcc will always pass '-plugin' as the - # first or second option to the linker. - if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then - original=$ORIGINAL_PLUGIN_LD_FOR_TARGET - else - original=$ORIGINAL_LD_FOR_TARGET - fi prog=ld-new$exeext - dir=ld + # 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 + ;; + *\ -plugin\ *) + original=$ORIGINAL_PLUGIN_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 PLUGIN-LD, LD, GOLD. + if test x"$original" = x; then + if test x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" != x; then + original=$ORIGINAL_PLUGIN_LD_FOR_TARGET + dir=ld + elif 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 id=ld ;; nm) @@ -61,29 +92,58 @@ case "$original" in 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*. - eval LT_RCU="\${LT_RCU_$id}" - test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} - - eval LT_RCU_$id=1 - export LT_RCU_$id - $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*. + eval LT_RCU="\${LT_RCU_$id}" + if test x"$LT_RCU" = x"1"; then + original=$scriptdir/../prev-$dir/$prog + else + eval LT_RCU_$id=1 + export LT_RCU_$id + 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 |