From d0d5edba84930baf71277350a33839ea42f45eac Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 12 Dec 1996 22:06:51 +0000 Subject: [PATCH] * emultempl/gld960c.em: Include . (gld960_set_output_arch): Get the machine type from the -A option if there is one, rather than always using core. PR 11255. --- ld/ChangeLog | 10 +++ ld/emultempl/gld960c.em | 191 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+) create mode 100644 ld/emultempl/gld960c.em diff --git a/ld/ChangeLog b/ld/ChangeLog index b0c2f64548e..9be565265ac 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,13 @@ +Thu Dec 12 17:04:55 1996 Ian Lance Taylor + + * emultempl/gld960c.em: Include . + (gld960_set_output_arch): Get the machine type from the -A option + if there is one, rather than always using core. + +Sat Dec 7 10:07:51 1996 Jeffrey A Law (law@cygnus.com) + + * emulparms/mn10300.sh: Handle leading underscores. + Thu Dec 5 13:45:58 1996 Ian Lance Taylor * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Only diff --git a/ld/emultempl/gld960c.em b/ld/emultempl/gld960c.em new file mode 100644 index 00000000000..662afce93d1 --- /dev/null +++ b/ld/emultempl/gld960c.em @@ -0,0 +1,191 @@ +# This shell script emits a C file. -*- C -*- +# It does some substitutions. +cat >e${EMULATION_NAME}.c < +#include "bfd.h" +#include "sysdep.h" +#include "libiberty.h" +#include "bfdlink.h" + +#include "ld.h" +#include "ldemul.h" +#include "ldfile.h" +#include "ldmisc.h" +#include "ldmain.h" + +#ifdef GNU960 + +static void +gld960_before_parse() +{ + static char *env_variables[] = { "G960LIB", "G960BASE", 0 }; + char **p; + char *env ; + + for ( p = env_variables; *p; p++ ){ + env = (char *) getenv(*p); + if (env) { + ldfile_add_library_path (concat (env, + "/lib/libcoff", + (const char *) NULL), + false); + } + } + ldfile_output_architecture = bfd_arch_i960; +} + +#else /* not GNU960 */ + +static void gld960_before_parse() +{ + char *env ; + env = getenv("G960LIB"); + if (env) { + ldfile_add_library_path(env, false); + } + env = getenv("G960BASE"); + if (env) + ldfile_add_library_path (concat (env, "/lib", (const char *) NULL), + false); + ldfile_output_architecture = bfd_arch_i960; +} + +#endif /* GNU960 */ + + +static void +gld960_set_output_arch() +{ + if (ldfile_output_machine_name != NULL + && *ldfile_output_machine_name != '\0') + { + char *s, *s1; + + s = concat ("i960:", ldfile_output_machine_name, (char *) NULL); + for (s1 = s; *s1 != '\0'; s1++) + if (isupper ((unsigned char) *s1)) + *s1 = tolower ((unsigned char) *s1); + ldfile_set_output_arch (s); + free (s); + } + + set_output_arch_default (); +} + +static char * +gld960_choose_target() +{ +#ifdef GNU960 + + output_filename = "b.out"; + return bfd_make_targ_name(BFD_BOUT_FORMAT, 0); + +#else + + char *from_outside = getenv(TARGET_ENVIRON); + output_filename = "b.out"; + + if (from_outside != (char *)NULL) + return from_outside; + + return "coff-Intel-little"; + +#endif +} + +static char * +gld960_get_script(isfile) + int *isfile; +EOF + +if test -n "$COMPILE_IN" +then +# Scripts compiled in. + +# sed commands to quote an ld script as a C string. +sc='s/["\\]/\\&/g +s/$/\\n\\/ +1s/^/"/ +$s/$/n"/ +' + +cat >>e${EMULATION_NAME}.c <>e${EMULATION_NAME}.c <>e${EMULATION_NAME}.c <