diff options
author | Alan Modra <amodra@gmail.com> | 2018-04-11 18:46:05 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2018-04-11 21:49:30 +0930 |
commit | a8eb42a8b7d48ff6bd12ac83b0e31967b4f5abf1 (patch) | |
tree | 60b19da93f47532605aea14cc4cec88b442c43f6 /ld/emultempl | |
parent | c43b2c546be1fead208b816b59c8bdcdf9562571 (diff) | |
download | gdb-a8eb42a8b7d48ff6bd12ac83b0e31967b4f5abf1.zip gdb-a8eb42a8b7d48ff6bd12ac83b0e31967b4f5abf1.tar.gz gdb-a8eb42a8b7d48ff6bd12ac83b0e31967b4f5abf1.tar.bz2 |
Remove i860, i960, bout and aout-adobe targets
Plus remove a few leftovers from the 29k support.
include/
* aout/adobe.h: Delete.
* aout/reloc.h: Delete.
* coff/i860.h: Delete.
* coff/i960.h: Delete.
* elf/i860.h: Delete.
* elf/i960.h: Delete.
* opcode/i860.h: Delete.
* opcode/i960.h: Delete.
* aout/aout64.h (enum reloc_type): Trim off 29k and other unused values.
* aout/ar.h (ARMAGB): Remove.
* coff/internal.h (struct internal_aouthdr, struct internal_scnhdr,
union internal_auxent): Remove i960 support.
bfd/
* aout-adobe.c: Delete.
* bout.c: Delete.
* coff-i860.c: Delete.
* coff-i960.c: Delete.
* cpu-i860.c: Delete.
* cpu-i960.c: Delete.
* elf32-i860.c: Delete.
* elf32-i960.c: Delete.
* hosts/i860mach3.h: Delete.
* Makefile.am: Remove i860, i960, bout, and adobe support.
* archures.c: Remove i860 and i960 support.
* coffcode.h: Likewise.
* reloc.c: Likewise.
* aoutx.h: Comment updates.
* archive.c: Remove BOUT and i960 support.
* bfd.c: Remove BOUT support.
* coffswap.h: Remove i960 support.
* config.bfd: Remove i860, i960 and adobe targets.
* configure.ac: Remove adode, bout, i860, i960, icoff targets.
* targets.c: Likewise.
* ieee.c: Remove i960 support.
* mach-o.c: Remove i860 support.
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* configure: Regenerate.
* libbfd.h: Regenerate.
* po/SRC-POTFILES.in: Regenerate.
opcodes/
* opcodes/i860-dis.c: Delete.
* opcodes/i960-dis.c: Delete.
* Makefile.am: Remove i860 and i960 support.
* configure.ac: Likewise.
* disassemble.c: Likewise.
* disassemble.h: Likewise.
* Makefile.in: Regenerate.
* configure: Regenerate.
* po/POTFILES.in: Regenerate.
binutils/
* ieee.c: Remove i960 support.
* od-macho.c: Remove i860 support.
* readelf.c: Remove i860 and i960 support.
* testsuite/binutils-all/objcopy.exp: Likewise.
* testsuite/binutils-all/objdump.exp: Likewise.
* testsuite/lib/binutils-common.exp: Likewise.
gas/
* config/aout_gnu.h: Delete.
* config/tc-i860.c: Delete.
* config/tc-i860.h: Delete.
* config/tc-i960.c: Delete.
* config/tc-i960.h: Delete.
* doc/c-i860.texi: Delete.
* doc/c-i960.texi: Delete.
* testsuite/gas/i860/README.i860: Delete.
* testsuite/gas/i860/bitwise.d: Delete.
* testsuite/gas/i860/bitwise.s: Delete.
* testsuite/gas/i860/branch.d: Delete.
* testsuite/gas/i860/branch.s: Delete.
* testsuite/gas/i860/bte.d: Delete.
* testsuite/gas/i860/bte.s: Delete.
* testsuite/gas/i860/dir-align01.d: Delete.
* testsuite/gas/i860/dir-align01.s: Delete.
* testsuite/gas/i860/dir-intel01.d: Delete.
* testsuite/gas/i860/dir-intel01.s: Delete.
* testsuite/gas/i860/dir-intel02.d: Delete.
* testsuite/gas/i860/dir-intel02.s: Delete.
* testsuite/gas/i860/dir-intel03-err.l: Delete.
* testsuite/gas/i860/dir-intel03-err.s: Delete.
* testsuite/gas/i860/dual01.d: Delete.
* testsuite/gas/i860/dual01.s: Delete.
* testsuite/gas/i860/dual02-err.l: Delete.
* testsuite/gas/i860/dual02-err.s: Delete.
* testsuite/gas/i860/dual03.d: Delete.
* testsuite/gas/i860/dual03.s: Delete.
* testsuite/gas/i860/fldst01.d: Delete.
* testsuite/gas/i860/fldst01.s: Delete.
* testsuite/gas/i860/fldst02.d: Delete.
* testsuite/gas/i860/fldst02.s: Delete.
* testsuite/gas/i860/fldst03.d: Delete.
* testsuite/gas/i860/fldst03.s: Delete.
* testsuite/gas/i860/fldst04.d: Delete.
* testsuite/gas/i860/fldst04.s: Delete.
* testsuite/gas/i860/fldst05.d: Delete.
* testsuite/gas/i860/fldst05.s: Delete.
* testsuite/gas/i860/fldst06.d: Delete.
* testsuite/gas/i860/fldst06.s: Delete.
* testsuite/gas/i860/fldst07.d: Delete.
* testsuite/gas/i860/fldst07.s: Delete.
* testsuite/gas/i860/fldst08.d: Delete.
* testsuite/gas/i860/fldst08.s: Delete.
* testsuite/gas/i860/float01.d: Delete.
* testsuite/gas/i860/float01.s: Delete.
* testsuite/gas/i860/float02.d: Delete.
* testsuite/gas/i860/float02.s: Delete.
* testsuite/gas/i860/float03.d: Delete.
* testsuite/gas/i860/float03.s: Delete.
* testsuite/gas/i860/float04.d: Delete.
* testsuite/gas/i860/float04.s: Delete.
* testsuite/gas/i860/form.d: Delete.
* testsuite/gas/i860/form.s: Delete.
* testsuite/gas/i860/i860.exp: Delete.
* testsuite/gas/i860/iarith.d: Delete.
* testsuite/gas/i860/iarith.s: Delete.
* testsuite/gas/i860/ldst01.d: Delete.
* testsuite/gas/i860/ldst01.s: Delete.
* testsuite/gas/i860/ldst02.d: Delete.
* testsuite/gas/i860/ldst02.s: Delete.
* testsuite/gas/i860/ldst03.d: Delete.
* testsuite/gas/i860/ldst03.s: Delete.
* testsuite/gas/i860/ldst04.d: Delete.
* testsuite/gas/i860/ldst04.s: Delete.
* testsuite/gas/i860/ldst05.d: Delete.
* testsuite/gas/i860/ldst05.s: Delete.
* testsuite/gas/i860/ldst06.d: Delete.
* testsuite/gas/i860/ldst06.s: Delete.
* testsuite/gas/i860/pfam.d: Delete.
* testsuite/gas/i860/pfam.s: Delete.
* testsuite/gas/i860/pfmam.d: Delete.
* testsuite/gas/i860/pfmam.s: Delete.
* testsuite/gas/i860/pfmsm.d: Delete.
* testsuite/gas/i860/pfmsm.s: Delete.
* testsuite/gas/i860/pfsm.d: Delete.
* testsuite/gas/i860/pfsm.s: Delete.
* testsuite/gas/i860/pseudo-ops01.d: Delete.
* testsuite/gas/i860/pseudo-ops01.s: Delete.
* testsuite/gas/i860/regress01.d: Delete.
* testsuite/gas/i860/regress01.s: Delete.
* testsuite/gas/i860/shift.d: Delete.
* testsuite/gas/i860/shift.s: Delete.
* testsuite/gas/i860/simd.d: Delete.
* testsuite/gas/i860/simd.s: Delete.
* testsuite/gas/i860/system.d: Delete.
* testsuite/gas/i860/system.s: Delete.
* testsuite/gas/i860/xp.d: Delete.
* testsuite/gas/i860/xp.s: Delete.
* Makefile.am: Remove i860 and i960 support.
* configure.tgt: Likewise.
* doc/Makefile.am: Likewise.
* doc/all.texi: Likewise.
* testsuite/gas/all/gas.exp
* config/obj-coff.h: Remove i960 support.
* doc/internals.texi: Likewise.
* expr.c: Likewise.
* read.c: Likewise.
* write.c: Likewise.
* write.h: Likewise.
* testsuite/gas/lns/lns.exp: Likewise.
* testsuite/gas/symver/symver.exp: Likewise.
* config/tc-m68k.c: Remove BOUT support.
* config/tc-score.c: Likewise.
* config/tc-score7.c: Likewise.
* config/tc-sparc.c: Likewise.
* symbols.c: Likewise.
* doc/h8.texi: Likewise.
* configure.ac: Remove BOUT and i860 support.
* doc/as.texinfo: Remove BOUT, i860 and i960 support
* Makefile.in: Regenerate.
* config.in: Regenerate.
* configure: Regenerate.
* doc/Makefile.in: Regenerate.
* po/POTFILES.in: Regenerate.
ld/
* emulparams/coff_i860.sh: Delete.
* emulparams/elf32_i860.sh: Delete.
* emulparams/elf32_i960.sh: Delete.
* emulparams/gld960.sh: Delete.
* emulparams/gld960coff.sh: Delete.
* emulparams/lnk960.sh: Delete.
* emultempl/gld960.em: Delete.
* emultempl/gld960c.em: Delete.
* emultempl/lnk960.em: Delete.
* scripttempl/i860coff.sc: Delete.
* scripttempl/i960.sc: Delete.
* ld.texinfo: Remove i960 support.
* Makefile.am: Remove i860 and i960 support.
* configure.tgt: Likewise.
* testsuite/ld-discard/extern.d: Likewise.
* testsuite/ld-discard/start.d: Likewise.
* testsuite/ld-discard/static.d: Likewise.
* testsuite/ld-elf/compressed1d.d: Likewise.
* testsuite/ld-elf/group1.d: Likewise.
* testsuite/ld-elf/group3b.d: Likewise.
* testsuite/ld-elf/group8a.d: Likewise.
* testsuite/ld-elf/group8b.d: Likewise.
* testsuite/ld-elf/group9a.d: Likewise.
* testsuite/ld-elf/group9b.d: Likewise.
* testsuite/ld-elf/linkonce2.d: Likewise.
* testsuite/ld-elf/merge.d: Likewise.
* testsuite/ld-elf/merge2.d: Likewise.
* testsuite/ld-elf/merge3.d: Likewise.
* testsuite/ld-elf/orphan-10.d: Likewise.
* testsuite/ld-elf/orphan-11.d: Likewise.
* testsuite/ld-elf/orphan-12.d: Likewise.
* testsuite/ld-elf/orphan-9.d: Likewise.
* testsuite/ld-elf/orphan-region.d: Likewise.
* testsuite/ld-elf/orphan.d: Likewise.
* testsuite/ld-elf/orphan3.d: Likewise.
* testsuite/ld-elf/pr12851.d: Likewise.
* testsuite/ld-elf/pr12975.d: Likewise.
* testsuite/ld-elf/pr13177.d: Likewise.
* testsuite/ld-elf/pr13195.d: Likewise.
* testsuite/ld-elf/pr17550a.d: Likewise.
* testsuite/ld-elf/pr17550b.d: Likewise.
* testsuite/ld-elf/pr17550c.d: Likewise.
* testsuite/ld-elf/pr17550d.d: Likewise.
* testsuite/ld-elf/pr17615.d: Likewise.
* testsuite/ld-elf/pr20528a.d: Likewise.
* testsuite/ld-elf/pr20528b.d: Likewise.
* testsuite/ld-elf/pr21562a.d: Likewise.
* testsuite/ld-elf/pr21562b.d: Likewise.
* testsuite/ld-elf/pr21562c.d: Likewise.
* testsuite/ld-elf/pr21562d.d: Likewise.
* testsuite/ld-elf/pr21562i.d: Likewise.
* testsuite/ld-elf/pr21562j.d: Likewise.
* testsuite/ld-elf/pr21562k.d: Likewise.
* testsuite/ld-elf/pr21562l.d: Likewise.
* testsuite/ld-elf/pr21562m.d: Likewise.
* testsuite/ld-elf/pr21562n.d: Likewise.
* testsuite/ld-elf/pr22677.d: Likewise.
* testsuite/ld-elf/pr22836-1a.d: Likewise.
* testsuite/ld-elf/pr22836-1b.d: Likewise.
* testsuite/ld-elf/pr349.d: Likewise.
* testsuite/ld-elf/sec-to-seg.exp: Likewise.
* testsuite/ld-elf/sec64k.exp: Likewise.
* testsuite/ld-elf/warn1.d: Likewise.
* testsuite/ld-elf/warn2.d: Likewise.
* testsuite/ld-elf/warn3.d: Likewise.
* testsuite/lib/ld-lib.exp: Likewise.
* Makefile.in: Regenerate.
* po/BLD-POTFILES.in: Regenerate.
Diffstat (limited to 'ld/emultempl')
-rw-r--r-- | ld/emultempl/gld960.em | 155 | ||||
-rw-r--r-- | ld/emultempl/gld960c.em | 168 | ||||
-rw-r--r-- | ld/emultempl/lnk960.em | 349 |
3 files changed, 0 insertions, 672 deletions
diff --git a/ld/emultempl/gld960.em b/ld/emultempl/gld960.em deleted file mode 100644 index f0f7b04..0000000 --- a/ld/emultempl/gld960.em +++ /dev/null @@ -1,155 +0,0 @@ -# This shell script emits a C file. -*- C -*- -# It does some substitutions. -fragment <<EOF -/* Copyright (C) 1991-2018 Free Software Foundation, Inc. - - This file is part of the GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - - -/* Emulate the Intel's port of gld. */ - -#include "sysdep.h" -#include "bfd.h" -#include "libiberty.h" -#include "bfdlink.h" - -#include "ld.h" -#include "ldmisc.h" -#include "ldmain.h" - -#include "ldexp.h" -#include "ldlang.h" -#include "ldfile.h" -#include "ldemul.h" - -static void gld960_before_parse (void) -{ - 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; -} - -static void -gld960_set_output_arch (void) -{ - bfd_set_arch_mach (link_info.output_bfd, - ldfile_output_architecture, bfd_mach_i960_core); -} - -static char * -gld960_choose_target (int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) -{ - char *from_outside = getenv(TARGET_ENVIRON); - output_filename = "b.out"; - - if (from_outside != (char *)NULL) - return from_outside; - - return "b.out.little"; -} - -static char * -gld960_get_script (int *isfile) -EOF - -if test x"$COMPILE_IN" = xyes -then -# Scripts compiled in. - -# sed commands to quote an ld script as a C string. -sc="-f stringify.sed" - -fragment <<EOF -{ - *isfile = 0; - - if (bfd_link_relocatable (&link_info) && config.build_constructors) - return -EOF -sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c -echo ' ; else if (bfd_link_relocatable (&link_info)) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c -echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c -echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c -echo ' ; else return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c -echo '; }' >> e${EMULATION_NAME}.c - -else -# Scripts read from the filesystem. - -fragment <<EOF -{ - *isfile = 1; - - if (bfd_link_relocatable (&link_info) && config.build_constructors) - return "ldscripts/${EMULATION_NAME}.xu"; - else if (bfd_link_relocatable (&link_info)) - return "ldscripts/${EMULATION_NAME}.xr"; - else if (!config.text_read_only) - return "ldscripts/${EMULATION_NAME}.xbn"; - else if (!config.magic_demand_paged) - return "ldscripts/${EMULATION_NAME}.xn"; - else - return "ldscripts/${EMULATION_NAME}.x"; -} -EOF - -fi - -fragment <<EOF - -struct ld_emulation_xfer_struct ld_gld960_emulation = -{ - gld960_before_parse, - syslib_default, - hll_default, - after_parse_default, - after_open_default, - after_check_relocs_default, - after_allocation_default, - gld960_set_output_arch, - gld960_choose_target, - before_allocation_default, - gld960_get_script, - "960", - "", - finish_default, - NULL, /* create output section statements */ - NULL, /* open dynamic archive */ - NULL, /* place orphan */ - NULL, /* set symbols */ - NULL, /* parse args */ - NULL, /* add_options */ - NULL, /* handle_option */ - NULL, /* unrecognized file */ - NULL, /* list options */ - NULL, /* recognized file */ - NULL, /* find_potential_libraries */ - NULL, /* new_vers_pattern */ - NULL /* extra_map_file_text */ -}; -EOF diff --git a/ld/emultempl/gld960c.em b/ld/emultempl/gld960c.em deleted file mode 100644 index 5507e10..0000000 --- a/ld/emultempl/gld960c.em +++ /dev/null @@ -1,168 +0,0 @@ -# This shell script emits a C file. -*- C -*- -# It does some substitutions. -fragment <<EOF -/* Copyright (C) 1991-2018 Free Software Foundation, Inc. - - This file is part of the GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - - -/* Emulate the Intel's port of gld. */ - -#include "sysdep.h" -#include "bfd.h" -#include "libiberty.h" -#include "safe-ctype.h" -#include "bfdlink.h" - -#include "ld.h" -#include "ldmisc.h" -#include "ldmain.h" - -#include "ldexp.h" -#include "ldlang.h" -#include "ldfile.h" -#include "ldemul.h" - -static void gld960_before_parse (void) -{ - 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; -} - -static void -gld960_set_output_arch (void) -{ - 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++) - *s1 = TOLOWER (*s1); - ldfile_set_output_arch (s, bfd_arch_unknown); - free (s); - } - - set_output_arch_default (); -} - -static char * -gld960_choose_target (int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) -{ - char *from_outside = getenv(TARGET_ENVIRON); - output_filename = "b.out"; - - if (from_outside != (char *)NULL) - return from_outside; - - return "coff-Intel-little"; -} - -static char * -gld960_get_script (int *isfile) -EOF - -if test x"$COMPILE_IN" = xyes -then -# Scripts compiled in. - -# sed commands to quote an ld script as a C string. -sc="-f stringify.sed" - -fragment <<EOF -{ - *isfile = 0; - - if (bfd_link_relocatable (&link_info) && config.build_constructors) - return -EOF -sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c -echo ' ; else if (bfd_link_relocatable (&link_info)) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c -echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c -echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c -echo ' ; else return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c -echo '; }' >> e${EMULATION_NAME}.c - -else -# Scripts read from the filesystem. - -fragment <<EOF -{ - *isfile = 1; - - if (bfd_link_relocatable (&link_info) && config.build_constructors) - return "ldscripts/${EMULATION_NAME}.xu"; - else if (bfd_link_relocatable (&link_info)) - return "ldscripts/${EMULATION_NAME}.xr"; - else if (!config.text_read_only) - return "ldscripts/${EMULATION_NAME}.xbn"; - else if (!config.magic_demand_paged) - return "ldscripts/${EMULATION_NAME}.xn"; - else - return "ldscripts/${EMULATION_NAME}.x"; -} -EOF - -fi - -fragment <<EOF - -struct ld_emulation_xfer_struct ld_gld960coff_emulation = -{ - gld960_before_parse, - syslib_default, - hll_default, - after_parse_default, - after_open_default, - after_check_relocs_default, - after_allocation_default, - gld960_set_output_arch, - gld960_choose_target, - before_allocation_default, - gld960_get_script, - "960coff", - "", - finish_default, - NULL, /* create output section statements */ - NULL, /* open dynamic archive */ - NULL, /* place orphan */ - NULL, /* set symbols */ - NULL, /* parse args */ - NULL, /* add_options */ - NULL, /* handle_option */ - NULL, /* unrecognized file */ - NULL, /* list options */ - NULL, /* recognized file */ - NULL, /* find_potential_libraries */ - NULL, /* new_vers_pattern */ - NULL /* extra_map_file_text */ -}; -EOF diff --git a/ld/emultempl/lnk960.em b/ld/emultempl/lnk960.em deleted file mode 100644 index b9ba51d..0000000 --- a/ld/emultempl/lnk960.em +++ /dev/null @@ -1,349 +0,0 @@ -# This shell script emits a C file. -*- C -*- -# It does some substitutions. -fragment <<EOF -/* intel coff loader emulation specific stuff - Copyright (C) 1991-2018 Free Software Foundation, Inc. - Written by Steve Chamberlain steve@cygnus.com - - This file is part of the GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "libiberty.h" -#include "bfd.h" -#include "bfdlink.h" - -/*#include "archures.h"*/ -#include "ld.h" -#include "ldmain.h" -#include "ldmisc.h" -#include "ldexp.h" -#include "ldlang.h" -#include "ldfile.h" -#include "ldemul.h" - -typedef struct lib_list { - char *name; - struct lib_list *next; -} lib_list_type; - -static lib_list_type *hll_list; -static lib_list_type **hll_list_tail = &hll_list; - -static lib_list_type *syslib_list; -static lib_list_type **syslib_list_tail = &syslib_list; - - -static void -append (lib_list_type ***list, char *name) -{ - lib_list_type *element = (lib_list_type *) xmalloc (sizeof (lib_list_type)); - - element->name = name; - element->next = (lib_list_type *) NULL; - **list = element; - *list = &element->next; - -} - -static bfd_boolean had_hll = FALSE; -static bfd_boolean had_hll_name = FALSE; - -static void -lnk960_hll (char *name) -{ - had_hll = TRUE; - if (name != (char *) NULL) - { - had_hll_name = TRUE; - append (&hll_list_tail, name); - } -} - -static void -lnk960_syslib (char *name) -{ - append (&syslib_list_tail, name); -} - - -static void -lnk960_before_parse (void) -{ - char *name = getenv ("I960BASE"); - - if (name == (char *) NULL) - { - name = getenv("G960BASE"); - if (name == (char *) NULL) - einfo (_("%F%P: I960BASE and G960BASE not set\n")); - } - - ldfile_add_library_path (concat (name, "/lib", (const char *) NULL), FALSE); - ldfile_output_architecture = bfd_arch_i960; - ldfile_output_machine = bfd_mach_i960_core; -} - -static void -add_on (lib_list_type *list, lang_input_file_enum_type search) -{ - while (list) - { - lang_add_input_file (list->name, search, (char *) NULL); - list = list->next; - } -} - -static void -lnk960_after_parse (void) -{ - /* If there has been no arch, default to -KB */ - if (ldfile_output_machine_name[0] == 0) - ldfile_add_arch ("KB"); - - /* if there has been no hll list then add our own */ - - if (had_hll && !had_hll_name) - { - append (&hll_list_tail, "cg"); - if (ldfile_output_machine == bfd_mach_i960_ka_sa - || ldfile_output_machine == bfd_mach_i960_ca) - append (&hll_list_tail, "fpg"); - } - - add_on (hll_list, lang_input_file_is_l_enum); - add_on (syslib_list, lang_input_file_is_search_file_enum); -} - -/* Create a symbol with the given name with the value of the - address of first byte of the section named. - - If the symbol already exists, then do nothing. */ - -static void -symbol_at_beginning_of (const char *secname, const char *name) -{ - struct bfd_link_hash_entry *h; - - h = bfd_link_hash_lookup (link_info.hash, name, TRUE, TRUE, TRUE); - if (h == NULL) - einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); - - if (h->type == bfd_link_hash_new - || h->type == bfd_link_hash_undefined) - { - asection *sec; - - h->type = bfd_link_hash_defined; - - sec = bfd_get_section_by_name (link_info.output_bfd, secname); - if (sec == NULL) - sec = bfd_abs_section_ptr; - h->u.def.value = 0; - h->u.def.section = sec; - } -} - -/* Create a symbol with the given name with the value of the - address of the first byte after the end of the section named. - - If the symbol already exists, then do nothing. */ - -static void -symbol_at_end_of (const char *secname, const char *name) -{ - struct bfd_link_hash_entry *h; - - h = bfd_link_hash_lookup (link_info.hash, name, TRUE, TRUE, TRUE); - if (h == NULL) - einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); - - if (h->type == bfd_link_hash_new - || h->type == bfd_link_hash_undefined) - { - asection *sec; - - h->type = bfd_link_hash_defined; - - sec = bfd_get_section_by_name (link_info.output_bfd, secname); - if (sec == NULL) - sec = bfd_abs_section_ptr; - h->u.def.value = sec->size; - h->u.def.section = sec; - } -} - -static void -lnk960_after_allocation (void) -{ - if (!bfd_link_relocatable (&link_info)) - { - symbol_at_end_of (".text", "_etext"); - symbol_at_end_of (".data", "_edata"); - symbol_at_beginning_of (".bss", "_bss_start"); - symbol_at_end_of (".bss", "_end"); - } -} - - -static struct - { - unsigned long number; - char *name; - } -machine_table[] = -{ - { bfd_mach_i960_core ,"CORE" }, - { bfd_mach_i960_kb_sb ,"KB" }, - { bfd_mach_i960_kb_sb ,"SB" }, - { bfd_mach_i960_mc ,"MC" }, - { bfd_mach_i960_xa ,"XA" }, - { bfd_mach_i960_ca ,"CA" }, - { bfd_mach_i960_ka_sa ,"KA" }, - { bfd_mach_i960_ka_sa ,"SA" }, - { bfd_mach_i960_jx ,"JX" }, - { bfd_mach_i960_hx ,"HX" }, - - { bfd_mach_i960_core ,"core" }, - { bfd_mach_i960_kb_sb ,"kb" }, - { bfd_mach_i960_kb_sb ,"sb" }, - { bfd_mach_i960_mc ,"mc" }, - { bfd_mach_i960_xa ,"xa" }, - { bfd_mach_i960_ca ,"ca" }, - { bfd_mach_i960_ka_sa ,"ka" }, - { bfd_mach_i960_ka_sa ,"sa" }, - { bfd_mach_i960_jx ,"jx" }, - { bfd_mach_i960_hx ,"hx" }, - - { 0, (char *) NULL } -}; - -static void -lnk960_set_output_arch (void) -{ - /* Set the output architecture and machine if possible */ - unsigned int i; - ldfile_output_machine = bfd_mach_i960_core; - for (i= 0; machine_table[i].name != (char*) NULL; i++) - { - if (strcmp (ldfile_output_machine_name, machine_table[i].name) == 0) - { - ldfile_output_machine = machine_table[i].number; - break; - } - } - bfd_set_arch_mach (link_info.output_bfd, ldfile_output_architecture, - ldfile_output_machine); -} - -static char * -lnk960_choose_target (int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) -{ - char *from_outside = getenv (TARGET_ENVIRON); - if (from_outside != (char *) NULL) - return from_outside; -#ifdef LNK960_LITTLE - return "coff-Intel-little"; -#else - return "coff-Intel-big"; -#endif -} - -static char * -lnk960_get_script (int *isfile) -EOF - -if test x"$COMPILE_IN" = xyes -then -# Scripts compiled in. - -# sed commands to quote an ld script as a C string. -sc="-f stringify.sed" - -fragment <<EOF -{ - *isfile = 0; - - if (bfd_link_relocatable (&link_info) && config.build_constructors) - return -EOF -sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c -echo ' ; else if (bfd_link_relocatable (&link_info)) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c -echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c -echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c -echo ' ; else return' >> e${EMULATION_NAME}.c -sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c -echo '; }' >> e${EMULATION_NAME}.c - -else -# Scripts read from the filesystem. - -fragment <<EOF -{ - *isfile = 1; - - if (bfd_link_relocatable (&link_info) && config.build_constructors) - return "ldscripts/${EMULATION_NAME}.xu"; - else if (bfd_link_relocatable (&link_info)) - return "ldscripts/${EMULATION_NAME}.xr"; - else if (!config.text_read_only) - return "ldscripts/${EMULATION_NAME}.xbn"; - else if (!config.magic_demand_paged) - return "ldscripts/${EMULATION_NAME}.xn"; - else - return "ldscripts/${EMULATION_NAME}.x"; -} -EOF - -fi - -fragment <<EOF - -struct ld_emulation_xfer_struct ld_lnk960_emulation = -{ - lnk960_before_parse, - lnk960_syslib, - lnk960_hll, - lnk960_after_parse, - after_open_default, - after_check_relocs_default, - lnk960_after_allocation, - lnk960_set_output_arch, - lnk960_choose_target, - before_allocation_default, - lnk960_get_script, - "lnk960", - "", - finish_default, - NULL, /* create output section statements */ - NULL, /* open dynamic archive */ - NULL, /* place orphan */ - NULL, /* set symbols */ - NULL, /* parse args */ - NULL, /* add_options */ - NULL, /* handle_option */ - NULL, /* unrecognized file */ - NULL, /* list options */ - NULL, /* recognized file */ - NULL, /* find_potential_libraries */ - NULL, /* new_vers_pattern */ - NULL /* extra_map_file_text */ -}; -EOF |