blob: 0dc6203dd0026392e56938ae1ea0ee145e3d87fa (
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
# This file is a shell script fragment that supplies the information
# necessary to tailor a template configure script into the configure
# script appropriate for this directory. For more information, check
# any existing configure script.
srctrigger=ldmain.c
srcname="linker"
target_dependent=true
# per-host:
. ${srcdir}/../bfd/configure.host
host_makefile_frag=
if [ -f ${srcdir}/config/${my_host}.mh ] ; then
host_makefile_frag=config/${my_host}.mh
fi
# per-target:
# Canonicalize the secondary target names.
if [ -n "$with_targets" ]; then
for targ in `echo $with_targets | sed 's/,/ /g'`
do
result=`$configsub $targ 2>/dev/null`
if [ -n "$result" ]; then
canon_targets="$canon_targets $result"
else
# Allow targets that config.sub doesn't recognize, like "all".
canon_targets="$canon_targets $targ"
fi
done
fi
all_targets=false
for targ in $target $canon_targets
do
case "${targ}" in
sparc-sun-sunos4*) ld_target=sun4 ;;
sparclite*-*-coff) ld_target=coff-sparc ;;
sparclite*-fujitsu-*) ld_target=sun4 ;;
sparc*-*-aout) ld_target=sun4 ;;
sparc*-*-coff) ld_target=coff-sparc ;;
sparc*-*-elf) ld_target=sun4sol2 ;;
sparc*-*-lynxos*) ld_target=sparc-lynx ;;
sparc*-*-solaris2*) ld_target=sun4sol2 ;;
sparc*-wrs-vxworks*) ld_target=sun4 ;;
sparc*-*-netware) ld_target=sun4sol2 ;;
i960-wrs-vxworks5.0*) ld_target=i960 ;;
i960-wrs-vxworks5*) ld_target=i960coff ;;
i960-wrs-vxworks*) ld_target=i960 ;;
i960-intel-nindy) ld_target=i960 ;;
m68*-sun-sunos[34]*) ld_target=sun3 ;;
m68*-wrs-vxworks*) ld_target=vxworks68 ;;
m68*-ericsson-ose) ld_target=ose68 ;;
*-tandem-none) ld_target=st2000 ;; # FIXME needs better name
i[34]86-*-vsta) ld_target=vsta ;;
i[34]86-*-go32) ld_target=i386-go32 ;;
i[34]86-*-aix*) ld_target=i386-coff ;;
i[34]86-*-sco*) ld_target=i386-coff ;;
i[34]86-*-lynxos*) ld_target=i386-lynx ;;
i[34]86-*-coff) ld_target=i386-coff ;;
i[34]86-*-bsd) ld_target=i386-bsd ;;
i[34]86-*-bsd386) ld_target=i386-bsd ;;
i[34]86-*-aout) ld_target=i386-aout ;;
i[34]86-*-linux) ld_target=i386-linux ;;
i[34]86-*-sysv4*) ld_target=i386-elf ;;
i[34]86-*-unixware) ld_target=i386-elf ;;
i[34]86-*-netware) ld_target=i386-elf ;;
i[34]86-*-elf*) ld_target=i386-elf ;;
i[34]86-*-sysv*) ld_target=i386-coff ;;
i[34]86-*-mach*) ld_target=i386-mach ;;
i[34]86-*-gnu*) ld_target=i386-mach ;;
m8*-*-*) ld_target=m88k-bcs ;;
a29k-*-udi) ld_target=sa29200 ;;
a29k-*-ebmon) ld_target=ebmon29k ;;
a29k-*-*) ld_target=coff-a29k ;;
h8300-*-hms) ld_target=coff-h8300 ;;
h8300h-*-hms) ld_target=cf-h8300h ;;
h8500-*-hms) ld_target=coff-h8500 ;;
sh-*-*) ld_target=coff-sh ;;
m68k-sony-*) ld_target=news ;;
m68k-hp-bsd*) ld_target=hp300bsd ;;
m68k-motorola-sysv*) ld_target=delta68 ;;
m68*-*-aout) ld_target=m68k ;;
m68*-*-coff) ld_target=m68k-coff ;;
m68*-*-hpux) ld_target=hp300hpux ;;
m68*-*-lynxos*) ld_target=m68k-lynx ;;
m68*-*-*)
echo '***' "Unknown m68k target vendor for ld:" ${target_vendor} 1>&2
exit 1 ;;
hppa*-*-*elf*) ld_target=hppaelf ;;
vax-dec-ultrix* | vax-dec-bsd*) ld_target=vax ;;
mips*-dec-ultrix*) ld_target=mips-lit ;;
mips*-sgi-irix5*) ld_target=mipsb-elf32 ;;
mips*-sgi-irix*) ld_target=mips-big ;;
mips*el-idt-ecoff*) ld_target=mipsl-idt ;;
mips*-idt-ecoff*) ld_target=mips-idt ;;
mips*-dec-bsd*) ld_target=mipsbsd ;;
mips*-*-elf*) ld_target=mipsb-elf32 ;;
alpha-*-osf*) ld_target=alpha ;;
alpha-*-netware*) ld_target=alpha ;;
z8k-*-sim | z8k-*-coff) ld_target=z8ksim ;;
powerpc-*-elf*) ld_target=ppc-elf32 ;;
# start-sanitize-powerpc-netware
powerpc-*-netware*) ld_target=ppc-elf32 ;;
# end-sanitize-powerpc-netware
*-*-aout) ld_target=${target_cpu}-${target_vendor} ;;
*-*-coff) ld_target=${target_cpu}-${target_vendor} ;;
*-*-netware) ld_target=${target_cpu}-elf ;;
all) ld_target=all ;;
esac
if [ "x$ld_target" = "xall" ]; then
all_targets=true
else
if [ ! -f ${srcdir}/config/${ld_target}.mt ] ; then
echo '***' No file ${srcdir}/config/${ld_target}.mt 1>&2
echo '***' GNU LD does not support target ${ld_target} 1>&2
echo '***' Look in ld/configure.in for supported targets 1>&2
exit 1
fi
if [ "x$targ" = "x$target" ]; then
target_makefile_frag=${srcdir}/config/${ld_target}.mt
else
target_extra_frags="$target_extra_frags ${srcdir}/config/${ld_target}.mt"
fi
fi
done
# We don't do any links based on the target system, just makefile config.
# post-target:
rm -f Makefile.tmp Makefile.2
mv Makefile Makefile.tmp
if [ x${all_targets} = xfalse ]; then
allfrags="$target_makefile_frag $target_extra_frags"
# The emulations in all the configured targets.
tb=`sed -n '
s/EMUL[ ]*=[ ]*\([^ ]*\)/em_\1.o/p
' $allfrags`
# uniq the list.
f=""
for i in $tb ; do
case " $f " in
*" $i "*) ;;
*) f="$f $i" ;;
esac
done
tb="$f"
echo "EMULATION_OFILES = $tb" >> Makefile.2
else # all_targets is true
echo 'EMULATION_OFILES = $(ALL_EMULATIONS)' >> Makefile.2
fi # all_targets is true
cat Makefile.tmp >> Makefile.2
rm -f Makefile.tmp
mv Makefile.2 Makefile
mkdir ldscripts 2>/dev/null
|