PR binutils/4797
[deliverable/binutils-gdb.git] / ld / emultempl / gld960.em
CommitLineData
252b5132
RH
1# This shell script emits a C file. -*- C -*-
2# It does some substitutions.
3cat >e${EMULATION_NAME}.c <<EOF
3db64b00 4/* Copyright 1991, 1992, 1994, 1999, 2000, 2001, 2002, 2003, 2005, 2007
48f6162b 5 Free Software Foundation, Inc.
252b5132 6
f96b4a7b 7 This file is part of the GNU Binutils.
252b5132 8
f96b4a7b
NC
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
252b5132 13
f96b4a7b
NC
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
252b5132 18
f96b4a7b
NC
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
22 MA 02110-1301, USA. */
252b5132 23
252b5132 24
f96b4a7b 25/* Emulate the Intel's port of gld. */
252b5132 26
252b5132 27#include "sysdep.h"
3db64b00 28#include "bfd.h"
252b5132
RH
29#include "libiberty.h"
30#include "bfdlink.h"
31
32#include "ld.h"
252b5132
RH
33#include "ldmisc.h"
34#include "ldmain.h"
35
b71e2778
AM
36#include "ldexp.h"
37#include "ldlang.h"
38#include "ldfile.h"
39#include "ldemul.h"
40
0c7a8e5a 41static void gld960_before_parse (void)
252b5132
RH
42{
43 char *env ;
44 env = getenv("G960LIB");
45 if (env) {
b34976b6 46 ldfile_add_library_path(env, FALSE);
252b5132
RH
47 }
48 env = getenv("G960BASE");
49 if (env)
b34976b6 50 ldfile_add_library_path (concat (env, "/lib", (const char *) NULL), FALSE);
252b5132
RH
51 ldfile_output_architecture = bfd_arch_i960;
52}
53
252b5132 54static void
0c7a8e5a 55gld960_set_output_arch (void)
252b5132
RH
56{
57 bfd_set_arch_mach(output_bfd, ldfile_output_architecture, bfd_mach_i960_core);
58}
59
60static char *
0c7a8e5a 61gld960_choose_target (int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
252b5132 62{
252b5132
RH
63 char *from_outside = getenv(TARGET_ENVIRON);
64 output_filename = "b.out";
65
66 if (from_outside != (char *)NULL)
67 return from_outside;
68
69 return "b.out.little";
252b5132
RH
70}
71
72static char *
0c7a8e5a 73gld960_get_script (int *isfile)
252b5132
RH
74EOF
75
76if test -n "$COMPILE_IN"
77then
78# Scripts compiled in.
79
80# sed commands to quote an ld script as a C string.
597e2591 81sc="-f stringify.sed"
252b5132
RH
82
83cat >>e${EMULATION_NAME}.c <<EOF
0c7a8e5a 84{
252b5132
RH
85 *isfile = 0;
86
1049f94e 87 if (link_info.relocatable && config.build_constructors)
597e2591 88 return
252b5132 89EOF
b34976b6 90sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c
1049f94e 91echo ' ; else if (link_info.relocatable) return' >> e${EMULATION_NAME}.c
b34976b6
AM
92sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c
93echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c
94sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c
95echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
96sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c
97echo ' ; else return' >> e${EMULATION_NAME}.c
98sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c
99echo '; }' >> e${EMULATION_NAME}.c
252b5132
RH
100
101else
102# Scripts read from the filesystem.
103
104cat >>e${EMULATION_NAME}.c <<EOF
0c7a8e5a 105{
252b5132
RH
106 *isfile = 1;
107
1049f94e 108 if (link_info.relocatable && config.build_constructors)
252b5132 109 return "ldscripts/${EMULATION_NAME}.xu";
1049f94e 110 else if (link_info.relocatable)
252b5132
RH
111 return "ldscripts/${EMULATION_NAME}.xr";
112 else if (!config.text_read_only)
113 return "ldscripts/${EMULATION_NAME}.xbn";
114 else if (!config.magic_demand_paged)
115 return "ldscripts/${EMULATION_NAME}.xn";
116 else
117 return "ldscripts/${EMULATION_NAME}.x";
118}
119EOF
120
121fi
122
123cat >>e${EMULATION_NAME}.c <<EOF
124
0c7a8e5a 125struct ld_emulation_xfer_struct ld_gld960_emulation =
252b5132
RH
126{
127 gld960_before_parse,
128 syslib_default,
129 hll_default,
130 after_parse_default,
131 after_open_default,
132 after_allocation_default,
133 gld960_set_output_arch,
134 gld960_choose_target,
135 before_allocation_default,
136 gld960_get_script,
137 "960",
e1c47aa4 138 "",
1e035701 139 finish_default,
e1c47aa4
AM
140 NULL, /* create output section statements */
141 NULL, /* open dynamic archive */
142 NULL, /* place orphan */
143 NULL, /* set symbols */
144 NULL, /* parse args */
3bcf5557
AM
145 NULL, /* add_options */
146 NULL, /* handle_option */
e1c47aa4
AM
147 NULL, /* unrecognized file */
148 NULL, /* list options */
40d109bf 149 NULL, /* recognized file */
fac1652d
AM
150 NULL, /* find_potential_libraries */
151 NULL /* new_vers_pattern */
252b5132
RH
152};
153EOF
This page took 0.317986 seconds and 4 git commands to generate.