]>
Commit | Line | Data |
---|---|---|
bdbe7091 | 1 | #! /bin/sh |
2 | ||
fbd26352 | 3 | # Copyright (C) 2007-2019 Free Software Foundation, Inc. |
bdbe7091 | 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 | |
8c4c00c1 | 8 | # the Free Software Foundation; either version 3, or (at your option) |
bdbe7091 | 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 | |
8c4c00c1 | 17 | # along with GCC; see the file COPYING3. If not see |
18 | # <http://www.gnu.org/licenses/>. | |
bdbe7091 | 19 | |
20 | # Invoke as, ld or nm from the build tree. | |
21 | ||
22 | ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@" | |
23 | ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@" | |
9b4ea463 | 24 | ORIGINAL_LD_BFD_FOR_TARGET="@ORIGINAL_LD_BFD_FOR_TARGET@" |
25 | ORIGINAL_LD_GOLD_FOR_TARGET="@ORIGINAL_LD_GOLD_FOR_TARGET@" | |
a93e9832 | 26 | ORIGINAL_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_FOR_TARGET@" |
bdbe7091 | 27 | ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@" |
28 | exeext=@host_exeext@ | |
794723c1 | 29 | fast_install=@enable_fast_install@ |
30 | objdir=@objdir@ | |
bdbe7091 | 31 | |
32 | invoked=`basename "$0"` | |
76dcfb3a | 33 | id=$invoked |
bdbe7091 | 34 | case "$invoked" in |
35 | as) | |
36 | original=$ORIGINAL_AS_FOR_TARGET | |
37 | prog=as-new$exeext | |
38 | dir=gas | |
39 | ;; | |
40 | collect-ld) | |
9b4ea463 | 41 | # Check -fuse-ld=bfd and -fuse-ld=gold |
42 | case " $* " in | |
43 | *\ -fuse-ld=bfd\ *) | |
44 | original=$ORIGINAL_LD_BFD_FOR_TARGET | |
45 | ;; | |
46 | *\ -fuse-ld=gold\ *) | |
47 | original=$ORIGINAL_LD_GOLD_FOR_TARGET | |
48 | ;; | |
49 | *) | |
50 | # when using a linker plugin, gcc will always pass '-plugin' as the | |
51 | # first or second option to the linker. | |
52 | if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then | |
53 | original=$ORIGINAL_PLUGIN_LD_FOR_TARGET | |
54 | else | |
55 | original=$ORIGINAL_LD_FOR_TARGET | |
56 | fi | |
57 | ;; | |
58 | esac | |
59 | prog=ld-new$exeext | |
60 | if test "$original" = ../gold/ld-new$exeext; then | |
61 | dir=gold | |
62 | # No need to handle relink since gold doesn't use libtool. | |
63 | fast_install=yes | |
a93e9832 | 64 | else |
9b4ea463 | 65 | dir=ld |
a93e9832 | 66 | fi |
76dcfb3a | 67 | id=ld |
bdbe7091 | 68 | ;; |
69 | nm) | |
70 | original=$ORIGINAL_NM_FOR_TARGET | |
71 | prog=nm-new$exeext | |
72 | dir=binutils | |
73 | ;; | |
74 | esac | |
75 | ||
76 | case "$original" in | |
77 | ../*) | |
78 | # compute absolute path of the location of this script | |
79 | tdir=`dirname "$0"` | |
80 | scriptdir=`cd "$tdir" && pwd` | |
81 | ||
82 | if test -x $scriptdir/../$dir/$prog; then | |
794723c1 | 83 | test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"} |
84 | ||
85 | # if libtool did everything it needs to do, there's a fast path | |
86 | lt_prog=$scriptdir/../$dir/$objdir/lt-$prog | |
87 | test -x $lt_prog && exec $lt_prog ${1+"$@"} | |
88 | ||
89 | # libtool has not relinked ld-new yet, but we cannot just use the | |
90 | # previous stage (because then the relinking would just never happen!). | |
91 | # So we take extra care to use prev-ld/ld-new *on recursive calls*. | |
76dcfb3a | 92 | eval LT_RCU="\${LT_RCU_$id}" |
5346190f | 93 | test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} |
794723c1 | 94 | |
76dcfb3a | 95 | eval LT_RCU_$id=1 |
96 | export LT_RCU_$id | |
794723c1 | 97 | $scriptdir/../$dir/$prog ${1+"$@"} |
98 | result=$? | |
794723c1 | 99 | exit $result |
100 | ||
bdbe7091 | 101 | else |
102 | exec $scriptdir/../prev-$dir/$prog ${1+"$@"} | |
103 | fi | |
104 | ;; | |
105 | *) | |
f3599371 | 106 | exec $original ${1+"$@"} |
bdbe7091 | 107 | ;; |
108 | esac |