source: trunk/binutils/ld/emultempl/generic.em@ 3399

Last change on this file since 3399 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 4.6 KB
Line 
1# This shell script emits a C file. -*- C -*-
2# It does some substitutions.
3cat >e${EMULATION_NAME}.c <<EOF
4/* This file is is generated by a shell script. DO NOT EDIT! */
5
6/* emulate the original gld for the given ${EMULATION_NAME}
7 Copyright 1991, 1992, 1994, 1996, 2000, 2001, 2002
8 Free Software Foundation, Inc.
9 Written by Steve Chamberlain steve@cygnus.com
10
11This file is part of GLD, the Gnu Linker.
12
13This program is free software; you can redistribute it and/or modify
14it under the terms of the GNU General Public License as published by
15the Free Software Foundation; either version 2 of the License, or
16(at your option) any later version.
17
18This program is distributed in the hope that it will be useful,
19but WITHOUT ANY WARRANTY; without even the implied warranty of
20MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21GNU General Public License for more details.
22
23You should have received a copy of the GNU General Public License
24along with this program; if not, write to the Free Software
25Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
26
27#define TARGET_IS_${EMULATION_NAME}
28
29#include "bfd.h"
30#include "sysdep.h"
31#include "bfdlink.h"
32
33#include "ld.h"
34#include "ldmain.h"
35#include "ldmisc.h"
36
37#include "ldexp.h"
38#include "ldlang.h"
39#include "ldfile.h"
40#include "ldemul.h"
41
42static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
43static char *gld${EMULATION_NAME}_get_script PARAMS ((int *isfile));
44
45EOF
46
47# Import any needed special functions and/or overrides.
48#
49if test -n "$EXTRA_EM_FILE" ; then
50. ${srcdir}/emultempl/${EXTRA_EM_FILE}.em
51fi
52
53if test x"$LDEMUL_BEFORE_PARSE" != xgld"$EMULATION_NAME"_before_parse; then
54cat >>e${EMULATION_NAME}.c <<EOF
55
56static void
57gld${EMULATION_NAME}_before_parse()
58{
59#ifndef TARGET_ /* I.e., if not generic. */
60 ldfile_set_output_arch ("`echo ${ARCH}`");
61#endif /* not TARGET_ */
62}
63
64EOF
65fi
66
67if test x"$LDEMUL_GET_SCRIPT" != xgld"$EMULATION_NAME"_get_script; then
68cat >>e${EMULATION_NAME}.c <<EOF
69
70static char *
71gld${EMULATION_NAME}_get_script(isfile)
72 int *isfile;
73EOF
74
75if test -n "$COMPILE_IN"
76then
77# Scripts compiled in.
78
79# sed commands to quote an ld script as a C string.
80sc="-f stringify.sed"
81
82cat >>e${EMULATION_NAME}.c <<EOF
83{
84 *isfile = 0;
85
86 if (link_info.relocateable && config.build_constructors)
87 return
88EOF
89sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c
90echo ' ; else if (link_info.relocateable) return' >> e${EMULATION_NAME}.c
91sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c
92echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c
93sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c
94echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
95sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c
96echo ' ; else return' >> e${EMULATION_NAME}.c
97sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c
98echo '; }' >> e${EMULATION_NAME}.c
99
100else
101# Scripts read from the filesystem.
102
103cat >>e${EMULATION_NAME}.c <<EOF
104{
105 *isfile = 1;
106
107 if (link_info.relocateable && config.build_constructors)
108 return "ldscripts/${EMULATION_NAME}.xu";
109 else if (link_info.relocateable)
110 return "ldscripts/${EMULATION_NAME}.xr";
111 else if (!config.text_read_only)
112 return "ldscripts/${EMULATION_NAME}.xbn";
113 else if (!config.magic_demand_paged)
114 return "ldscripts/${EMULATION_NAME}.xn";
115 else
116 return "ldscripts/${EMULATION_NAME}.x";
117}
118EOF
119fi
120fi
121
122cat >>e${EMULATION_NAME}.c <<EOF
123
124struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
125{
126 ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse},
127 ${LDEMUL_SYSLIB-syslib_default},
128 ${LDEMUL_HLL-hll_default},
129 ${LDEMUL_AFTER_PARSE-after_parse_default},
130 ${LDEMUL_AFTER_OPEN-after_open_default},
131 ${LDEMUL_AFTER_ALLOCATION-after_allocation_default},
132 ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default},
133 ${LDEMUL_CHOOSE_TARGET-ldemul_default_target},
134 ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default},
135 ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script},
136 "${EMULATION_NAME}",
137 "${OUTPUT_FORMAT}",
138 ${LDEMUL_FINISH-NULL},
139 ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL},
140 ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL},
141 ${LDEMUL_PLACE_ORPHAN-NULL},
142 ${LDEMUL_SET_SYMBOLS-NULL},
143 ${LDEMUL_PARSE_ARGS-NULL},
144 NULL, /* add_options */
145 NULL, /* handle_option */
146 ${LDEMUL_UNRECOGNIZED_FILE-NULL},
147 ${LDEMUL_LIST_OPTIONS-NULL},
148 ${LDEMUL_RECOGNIZED_FILE-NULL},
149 ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL},
150 ${LDEMUL_NEW_VERS_PATTERN-NULL}
151};
152EOF
Note: See TracBrowser for help on using the repository browser.