aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7/gcc/exec-tool.in
blob: f19a251e8dfd5786f3aec0e9ea16042a67cc068c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#! /bin/sh

# 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
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.

# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

# Invoke as, ld or nm from the build tree.

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
case "$invoked" in
  as)
    original=$ORIGINAL_AS_FOR_TARGET
    prog=as-new$exeext
    dir=gas
    ;;
  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
        ;;
      *\ -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)
    original=$ORIGINAL_NM_FOR_TARGET
    prog=nm-new$exeext
    dir=binutils
    ;;
esac

case "$original" in
  ../*)
    # compute absolute path of the location of this script
    tdir=`dirname "$0"`
    scriptdir=`cd "$tdir" && pwd`

    if test -x $scriptdir/../$dir/$prog; then
      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
      original=$scriptdir/../prev-$dir/$prog
    fi
    ;;
  "")
    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