From c65c21e1ffd1e02d9970a4bca0b7e384788a50f0 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 16 Apr 2018 22:14:01 +0930 Subject: [PATCH] various i386-aout and i386-coff target removal Also tidies some other aout leftovers in binutils-common.exp. bfd/ * Makefile.am: Remove support for assorted i386 aout and coff targets. * config.bfd: Likewise. * configure.ac: Likewise. * doc/bfdint.texi: Likewise. * targets.c: Likewise. * freebsd.h: Delete. * i386dynix.c: Delete. * i386freebsd.c: Delete. * i386linux.c: Delete. * i386mach3.c: Delete. * i386netbsd.c: Delete. * i386os9k.c: Delete. * Makefile.in: Regenerate. * configure: Regenerate. * po/SRC-POTFILES.in: Regenerate. binutils/ * testsuite/lib/binutils-common.exp: Remove support for assorted aout targets. gas/ * Makefile.am: Remove support for assorted i386 aout and coff targets. * config/obj-elf.c: Likewise. * config/tc-i386.h: Likewise. * configure.ac: Likewise. * configure.tgt: Likewise. * config/te-dynix.h: Delete. * config/te-i386aix.h: Delete. * config/te-mach.h: Delete. * Makefile.in: Regenerate. * config.in: Regenerate. * configure: Regenerate. * po/POTFILES.in: Regenerate. include/ * aout/dynix3.h: Delete. ld/ * Makefile.am: Remove support for assorted i386 aout and coff targets. * configure.tgt: Likewise. * testsuite/ld-discard/discard.exp: Likewise. * testsuite/ld-elf/binutils.exp: Likewise. * testsuite/ld-elf/tls.exp: Likewise. * testsuite/ld-elf/tls_common.exp: Likewise. * testsuite/ld-elfvers/vers.exp: Likewise. * testsuite/ld-elfvsb/elfvsb.exp: Likewise. * testsuite/ld-elfweak/elfweak.exp: Likewise. * testsuite/ld-gc/abi-note.d: Likewise. * testsuite/ld-gc/pr19167.d: Likewise. * testsuite/ld-gc/pr20022.d: Likewise. * testsuite/ld-gc/start.d: Likewise. * testsuite/ld-gc/stop.d: Likewise. * testsuite/ld-i386/i386.exp: Likewise. * testsuite/ld-ifunc/binutils.exp: Likewise. * testsuite/ld-ifunc/ifunc.exp: Likewise. * testsuite/ld-linkonce/linkonce.exp: Likewise. * testsuite/ld-plugin/lto.exp: Likewise. * testsuite/ld-scripts/empty-address-2a.d: Likewise. * testsuite/ld-scripts/empty-address-2b.d: Likewise. * testsuite/ld-scripts/phdrs2.exp: Likewise. * testsuite/ld-scripts/section-match-1.d: Likewise. * testsuite/ld-shared/shared.exp: Likewise. * testsuite/ld-size/size.exp: Likewise. * testsuite/ld-sparc/sparc.exp: Likewise. * emulparams/i386coff.sh: Delete. * emulparams/i386linux.sh: Delete. * emulparams/i386mach.sh: Delete. * emulparams/i386nbsd.sh: Delete. * emulparams/vsta.sh: Delete. * scripttempl/i386coff.sc: Delete. * Makefile.in: Regenerate. * po/BLD-POTFILES.in: Regenerate. --- bfd/ChangeLog | 18 + bfd/Makefile.am | 14 +- bfd/Makefile.in | 20 +- bfd/config.bfd | 98 +-- bfd/configure | 6 - bfd/configure.ac | 6 - bfd/doc/bfdint.texi | 10 +- bfd/freebsd.h | 100 --- bfd/i386dynix.c | 82 --- bfd/i386freebsd.c | 38 -- bfd/i386linux.c | 733 --------------------- bfd/i386mach3.c | 73 -- bfd/i386netbsd.c | 38 -- bfd/i386os9k.c | 242 ------- bfd/po/SRC-POTFILES.in | 7 - bfd/targets.c | 21 - binutils/ChangeLog | 5 + binutils/testsuite/lib/binutils-common.exp | 26 +- gas/ChangeLog | 15 + gas/Makefile.am | 3 - gas/Makefile.in | 3 - gas/config.in | 3 - gas/config/obj-elf.c | 97 --- gas/config/tc-i386.h | 5 - gas/config/te-dynix.h | 26 - gas/config/te-i386aix.h | 38 -- gas/config/te-mach.h | 21 - gas/configure | 8 - gas/configure.ac | 6 - gas/configure.tgt | 27 +- gas/po/POTFILES.in | 3 - include/ChangeLog | 4 + include/aout/dynix3.h | 87 --- ld/ChangeLog | 37 ++ ld/Makefile.am | 24 - ld/Makefile.in | 30 - ld/configure.tgt | 34 +- ld/emulparams/i386coff.sh | 5 - ld/emulparams/i386linux.sh | 9 - ld/emulparams/i386mach.sh | 9 - ld/emulparams/i386nbsd.sh | 6 - ld/emulparams/vsta.sh | 10 - ld/po/BLD-POTFILES.in | 6 - ld/scripttempl/i386coff.sc | 57 -- ld/testsuite/ld-discard/discard.exp | 5 - ld/testsuite/ld-elf/binutils.exp | 11 +- ld/testsuite/ld-elf/tls.exp | 5 - ld/testsuite/ld-elf/tls_common.exp | 5 - ld/testsuite/ld-elfvers/vers.exp | 5 - ld/testsuite/ld-elfvsb/elfvsb.exp | 5 - ld/testsuite/ld-elfweak/elfweak.exp | 6 - ld/testsuite/ld-gc/abi-note.d | 1 - ld/testsuite/ld-gc/pr19167.d | 2 +- ld/testsuite/ld-gc/pr20022.d | 3 +- ld/testsuite/ld-gc/start.d | 2 +- ld/testsuite/ld-gc/stop.d | 2 +- ld/testsuite/ld-i386/i386.exp | 6 +- ld/testsuite/ld-ifunc/binutils.exp | 6 +- ld/testsuite/ld-ifunc/ifunc.exp | 6 +- ld/testsuite/ld-linkonce/linkonce.exp | 5 - ld/testsuite/ld-plugin/lto.exp | 5 +- ld/testsuite/ld-scripts/empty-address-2a.d | 2 +- ld/testsuite/ld-scripts/empty-address-2b.d | 2 +- ld/testsuite/ld-scripts/phdrs2.exp | 5 - ld/testsuite/ld-scripts/section-match-1.d | 2 +- ld/testsuite/ld-shared/shared.exp | 5 - ld/testsuite/ld-size/size.exp | 8 +- ld/testsuite/ld-sparc/sparc.exp | 4 +- 68 files changed, 138 insertions(+), 2080 deletions(-) delete mode 100644 bfd/freebsd.h delete mode 100644 bfd/i386dynix.c delete mode 100644 bfd/i386freebsd.c delete mode 100644 bfd/i386linux.c delete mode 100644 bfd/i386mach3.c delete mode 100644 bfd/i386netbsd.c delete mode 100644 bfd/i386os9k.c delete mode 100644 gas/config/te-dynix.h delete mode 100644 gas/config/te-i386aix.h delete mode 100644 gas/config/te-mach.h delete mode 100644 include/aout/dynix3.h delete mode 100644 ld/emulparams/i386coff.sh delete mode 100644 ld/emulparams/i386linux.sh delete mode 100644 ld/emulparams/i386mach.sh delete mode 100644 ld/emulparams/i386nbsd.sh delete mode 100644 ld/emulparams/vsta.sh delete mode 100644 ld/scripttempl/i386coff.sc diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b53adc1531..afa66e0c5f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,21 @@ +2018-04-18 Alan Modra + + * Makefile.am: Remove support for assorted i386 aout and coff targets. + * config.bfd: Likewise. + * configure.ac: Likewise. + * doc/bfdint.texi: Likewise. + * targets.c: Likewise. + * freebsd.h: Delete. + * i386dynix.c: Delete. + * i386freebsd.c: Delete. + * i386linux.c: Delete. + * i386mach3.c: Delete. + * i386netbsd.c: Delete. + * i386os9k.c: Delete. + * Makefile.in: Regenerate. + * configure: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + 2018-04-17 Andrew Sadek Microblaze Target: PIC data text relative diff --git a/bfd/Makefile.am b/bfd/Makefile.am index d964055bf9..2008e12dcb 100644 --- a/bfd/Makefile.am +++ b/bfd/Makefile.am @@ -359,14 +359,8 @@ BFD32_BACKENDS = \ elfxx-tilegx.lo \ i386aout.lo \ i386bsd.lo \ - i386dynix.lo \ - i386freebsd.lo \ - i386linux.lo \ i386lynx.lo \ - i386mach3.lo \ i386msdos.lo \ - i386netbsd.lo \ - i386os9k.lo \ mach-o.lo \ mach-o-i386.lo \ mach-o-arm.lo \ @@ -508,14 +502,8 @@ BFD32_BACKENDS_CFILES = \ elfxx-tilegx.c \ i386aout.c \ i386bsd.c \ - i386dynix.c \ - i386freebsd.c \ - i386linux.c \ i386lynx.c \ - i386mach3.c \ i386msdos.c \ - i386netbsd.c \ - i386os9k.c \ mach-o.c \ mach-o-i386.c \ mach-o-arm.c \ @@ -700,7 +688,7 @@ SOURCE_HFILES = \ aout-target.h aoutx.h coffcode.h coffswap.h ecoffswap.h \ elf-bfd.h elf-hppa.h elf-linux-core.h elf32-hppa.h \ elf64-hppa.h elfcode.h elfcore.h \ - freebsd.h genlink.h go32stub.h \ + genlink.h go32stub.h \ libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \ libpei.h libxcoff.h mach-o.h \ netbsd.h ns32k.h \ diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 5176a32df9..6ac276e310 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -693,14 +693,8 @@ BFD32_BACKENDS = \ elfxx-tilegx.lo \ i386aout.lo \ i386bsd.lo \ - i386dynix.lo \ - i386freebsd.lo \ - i386linux.lo \ i386lynx.lo \ - i386mach3.lo \ i386msdos.lo \ - i386netbsd.lo \ - i386os9k.lo \ mach-o.lo \ mach-o-i386.lo \ mach-o-arm.lo \ @@ -842,14 +836,8 @@ BFD32_BACKENDS_CFILES = \ elfxx-tilegx.c \ i386aout.c \ i386bsd.c \ - i386dynix.c \ - i386freebsd.c \ - i386linux.c \ i386lynx.c \ - i386mach3.c \ i386msdos.c \ - i386netbsd.c \ - i386os9k.c \ mach-o.c \ mach-o-i386.c \ mach-o-arm.c \ @@ -1035,7 +1023,7 @@ SOURCE_HFILES = \ aout-target.h aoutx.h coffcode.h coffswap.h ecoffswap.h \ elf-bfd.h elf-hppa.h elf-linux-core.h elf32-hppa.h \ elf64-hppa.h elfcode.h elfcore.h \ - freebsd.h genlink.h go32stub.h \ + genlink.h go32stub.h \ libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \ libpei.h libxcoff.h mach-o.h \ netbsd.h ns32k.h \ @@ -1432,14 +1420,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hpux-core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386aout.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386bsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386dynix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386linux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386lynx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386mach3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386msdos.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386netbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386os9k.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ihex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irix-core.Plo@am__quote@ diff --git a/bfd/config.bfd b/bfd/config.bfd index 6f48ae1036..38bfdfda10 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -53,29 +53,11 @@ case $targ in echo "*** Use or1k-*-elf or or1k-*-linux as the target instead" >&2 exit 1 ;; - i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu | \ mips*-*-irix5* | mips*-*-irix6*) # Not obsolete ;; arm*-*-aout | \ arm*-*-coff | \ - i[3-7]86-*-sco3.2v5*coff | \ - i[3-7]86-*-sysv4* | i[3-7]86-*-unixware* | \ - i[3-7]86-*-sco3.2v5* | \ - i[3-7]86-*-dgux* | i[3-7]86-*-sysv5* | \ - i[3-7]86-*-chorus* | \ - i[3-7]86-*-sysv* | i[3-7]86-*-isc* | i[3-7]86-*-sco* | i[3-7]86-*-coff | \ - i[3-7]86-*-aix* | \ - i[3-7]86-sequent-bsd* | \ - i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \ - i[3-7]86-*-freebsd[12] | \ - i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \ - i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3] | \ - i[3-7]86-*-linux*aout* | \ - i[3-7]86-*-mach* | i[3-7]86-*-osf1mk* | \ - i[3-7]86-*-os9k | \ - i[3-7]86-none-* | \ - i[3-7]86-*-aout* | i[3-7]86*-*-vsta* | \ mips*-big-* | \ mips*-dec-* | mips*el-*-ecoff* | \ mips*-*-ecoff* | \ @@ -94,7 +76,7 @@ case $targ in esac case $targ in - m68*-*-netbsdelf*) + *-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu) # Not obsolete ;; *-adobe-* | \ @@ -111,6 +93,23 @@ case $targ in h8300*-*-coff | \ h8500*-*-coff | \ hppa*-*-rtems* | \ + i[3-7]86-*-unixware* | \ + i[3-7]86-*-dgux* | \ + i[3-7]86-*-chorus* | \ + i[3-7]86-*-sysv* | \ + i[3-7]86-*-isc* | \ + i[3-7]86-*-sco* | \ + i[3-7]86-*-coff | \ + i[3-7]86-*-aix* | \ + i[3-7]86-sequent-bsd* | \ + i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | i[3-7]86-*-freebsd[12] | \ + i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \ + i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3] | \ + i[3-7]86-*-linux*aout* | \ + i[3-7]86-*-mach* | i[3-7]86-*-osf1mk* | \ + i[3-7]86-*-os9k | \ + i[3-7]86-none-* | \ + i[3-7]86-*-aout* | i[3-7]86*-*-vsta* | \ i370-* | \ i860-*-* | \ i960-*-* | \ @@ -587,13 +586,7 @@ case "${targ}" in targ_selvecs=hppa_elf32_vec ;; - i[3-7]86-*-sco3.2v5*coff) - targ_defvec=i386_coff_vec - targ_selvecs=i386_elf32_vec - ;; - i[3-7]86-*-sysv4* | i[3-7]86-*-unixware* | \ - i[3-7]86-*-elf* | i[3-7]86-*-sco3.2v5* | \ - i[3-7]86-*-dgux* | i[3-7]86-*-sysv5* | i[3-7]86-*-rtems*) + i[3-7]86-*-elf* | i[3-7]86-*-rtems*) targ_defvec=i386_elf32_vec targ_selvecs="iamcu_elf32_vec i386_coff_vec" ;; @@ -622,10 +615,6 @@ case "${targ}" in targ_defvec=i386_elf32_vec targ_selvecs=iamcu_elf32_vec ;; - i[3-7]86-*-chorus*) - targ_defvec=i386_elf32_vec - targ_selvecs=iamcu_elf32_vec - ;; i[3-7]86-*-dicos*) targ_defvec=i386_elf32_vec targ_selvecs=iamcu_elf32_vec @@ -635,20 +624,12 @@ case "${targ}" in targ_defvec=i386_coff_go32_vec targ_selvecs="i386_coff_go32stubbed_vec i386_aout_vec" ;; - i[3-7]86-*-sysv* | i[3-7]86-*-isc* | i[3-7]86-*-sco* | i[3-7]86-*-coff | \ - i[3-7]86-*-aix*) - targ_defvec=i386_coff_vec - ;; i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*) targ_defvec=i386_mach_o_vec targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" targ64_selvecs=x86_64_mach_o_vec targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch" ;; - i[3-7]86-sequent-bsd*) - targ_defvec=i386_aout_dynix_vec - targ_underscore=yes - ;; i[3-7]86-*-bsd*) targ_defvec=i386_aout_bsd_vec targ_underscore=yes @@ -658,12 +639,6 @@ case "${targ}" in targ_selvecs=iamcu_elf32_vec targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec" ;; - i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \ - i[3-7]86-*-freebsd[12]) - targ_defvec=i386_aout_fbsd_vec - targ_selvecs=i386_aout_bsd_vec - targ_underscore=yes - ;; i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu) targ_defvec=i386_elf32_fbsd_vec targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_pei_vec i386_coff_vec" @@ -676,31 +651,20 @@ case "${targ}" in ;; i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu) targ_defvec=i386_elf32_vec - targ_selvecs="i386_aout_nbsd_vec iamcu_elf32_vec" + targ_selvecs="iamcu_elf32_vec" targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec" ;; i[3-7]86-*-netbsdpe*) targ_defvec=i386_pe_vec targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec" ;; - i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \ - i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3]) - targ_defvec=i386_aout_nbsd_vec - targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_aout_bsd_vec" - targ_underscore=yes - ;; i[3-7]86-*-openbsd*) targ_defvec=i386_elf32_vec - targ_selvecs="iamcu_elf32_vec i386_aout_nbsd_vec" - ;; - i[3-7]86-*-linux*aout*) - targ_defvec=i386_aout_linux_vec - targ_selvecs="i386_elf32_vec iamcu_elf32_vec" - targ_underscore=yes + targ_selvecs="iamcu_elf32_vec" ;; i[3-7]86-*-linux-*) targ_defvec=i386_elf32_vec - targ_selvecs="iamcu_elf32_vec i386_aout_linux_vec i386_pei_vec" + targ_selvecs="iamcu_elf32_vec i386_pei_vec" targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" ;; i[3-7]86-*-nacl*) @@ -747,12 +711,12 @@ case "${targ}" in ;; x86_64-*-netbsd* | x86_64-*-openbsd*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_aout_nbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-linux-*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_aout_linux_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-nacl*) @@ -785,14 +749,6 @@ case "${targ}" in targ_defvec=i386_elf32_vec targ_selvecs=iamcu_elf32_vec ;; - i[3-7]86-*-mach* | i[3-7]86-*-osf1mk*) - targ_defvec=i386_aout_mach3_vec - targ_cflags=-DSTAT_FOR_EXEC - targ_underscore=yes - ;; - i[3-7]86-*-os9k) - targ_defvec=i386_aout_os9k_vec - ;; i[3-7]86-*-msdos*) targ_defvec=i386_aout_vec targ_selvecs=i386_msdos_vec @@ -824,12 +780,6 @@ case "${targ}" in targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec" targ_underscore=yes ;; - i[3-7]86-none-*) - targ_defvec=i386_coff_vec - ;; - i[3-7]86-*-aout* | i[3-7]86*-*-vsta*) - targ_defvec=i386_aout_vec - ;; i[3-7]86-*-vxworks*) targ_defvec=i386_elf32_vxworks_vec targ_underscore=yes diff --git a/bfd/configure b/bfd/configure index 1e1c26b422..ecfbff1765 100755 --- a/bfd/configure +++ b/bfd/configure @@ -14398,13 +14398,7 @@ do hppa_som_vec) tb="$tb som.lo" ;; i386_aout_vec) tb="$tb i386aout.lo aout32.lo" ;; i386_aout_bsd_vec) tb="$tb i386bsd.lo aout32.lo" ;; - i386_aout_dynix_vec) tb="$tb i386dynix.lo aout32.lo" ;; - i386_aout_fbsd_vec) tb="$tb i386freebsd.lo aout32.lo" ;; - i386_aout_linux_vec) tb="$tb i386linux.lo aout32.lo" ;; i386_aout_lynx_vec) tb="$tb i386lynx.lo lynx-core.lo aout32.lo" ;; - i386_aout_mach3_vec) tb="$tb i386mach3.lo aout32.lo" ;; - i386_aout_nbsd_vec) tb="$tb i386netbsd.lo aout32.lo" ;; - i386_aout_os9k_vec) tb="$tb i386os9k.lo aout32.lo" ;; i386_coff_vec) tb="$tb coff-i386.lo $coff" ;; i386_coff_go32_vec) tb="$tb coff-go32.lo $coff" ;; i386_coff_go32stubbed_vec) tb="$tb coff-stgo32.lo $coff" ;; diff --git a/bfd/configure.ac b/bfd/configure.ac index 49252c71e9..38f568ecaa 100644 --- a/bfd/configure.ac +++ b/bfd/configure.ac @@ -475,13 +475,7 @@ do hppa_som_vec) tb="$tb som.lo" ;; i386_aout_vec) tb="$tb i386aout.lo aout32.lo" ;; i386_aout_bsd_vec) tb="$tb i386bsd.lo aout32.lo" ;; - i386_aout_dynix_vec) tb="$tb i386dynix.lo aout32.lo" ;; - i386_aout_fbsd_vec) tb="$tb i386freebsd.lo aout32.lo" ;; - i386_aout_linux_vec) tb="$tb i386linux.lo aout32.lo" ;; i386_aout_lynx_vec) tb="$tb i386lynx.lo lynx-core.lo aout32.lo" ;; - i386_aout_mach3_vec) tb="$tb i386mach3.lo aout32.lo" ;; - i386_aout_nbsd_vec) tb="$tb i386netbsd.lo aout32.lo" ;; - i386_aout_os9k_vec) tb="$tb i386os9k.lo aout32.lo" ;; i386_coff_vec) tb="$tb coff-i386.lo $coff" ;; i386_coff_go32_vec) tb="$tb coff-go32.lo $coff" ;; i386_coff_go32stubbed_vec) tb="$tb coff-stgo32.lo $coff" ;; diff --git a/bfd/doc/bfdint.texi b/bfd/doc/bfdint.texi index bcab35ef2d..4d36381cea 100644 --- a/bfd/doc/bfdint.texi +++ b/bfd/doc/bfdint.texi @@ -1098,17 +1098,9 @@ This file is the source for the generated files @file{elf32-target.h} and @file{elf64-target.h}, one of which is included by every ELF target. It defines the ELF target vector. -@item freebsd.h -@cindex @file{freebsd.h} -Presumably intended to be included by all FreeBSD targets, but in fact -there is only one such target, @samp{i386-freebsd}. This defines a -function used to set the right magic number for FreeBSD, as well as -various macros, and includes @file{aout-target.h}. - @item netbsd.h @cindex @file{netbsd.h} -Like @file{freebsd.h}, except that there are several files which include -it. +Used by all netbsd aout targets. Several other files include it. @item peicode.h @cindex @file{peicode.h} diff --git a/bfd/freebsd.h b/bfd/freebsd.h deleted file mode 100644 index 8bb36fe242..0000000000 --- a/bfd/freebsd.h +++ /dev/null @@ -1,100 +0,0 @@ -/* BFD back-end definitions used by all FreeBSD targets. - Copyright (C) 1990-2018 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - 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. */ - - -/* FreeBSD ZMAGIC files never have the header in the text. */ -#define N_HEADER_IN_TEXT(x) 0 - -/* ZMAGIC files start at offset 0. Does not apply to QMAGIC files. */ -#define TEXT_START_ADDR 0 - -#define N_GETMAGIC_NET(execp) \ - ((execp)->a_info & 0xffff) -#define N_GETMID_NET(execp) \ - (((execp)->a_info >> 16) & 0x3ff) -#define N_GETFLAG_NET(exexp) \ - (((execp)->a_info >> 26) & 0x3f) - -#define N_MACHTYPE(execp) \ - ((enum machine_type) \ - ((N_GETMAGIC_NET (execp) == ZMAGIC) ? N_GETMID_NET (execp) : \ - ((execp)->a_info >> 16) & 0x3ff)) -#define N_FLAGS(execp) \ - ((N_GETMAGIC_NET (execp) == ZMAGIC) ? N_GETFLAG_NET (execp) : \ - ((execp)->a_info >> 26) & 0x3f) - -#define N_SET_INFO(execp, magic, type, flags) \ - ((execp)->a_info = ((magic) & 0xffff) \ - | (((int)(type) & 0x3ff) << 16) \ - | (((flags) & 0x3f) << 26)) -#define N_SET_MACHTYPE(execp, machtype) \ - ((execp)->a_info = \ - ((execp)->a_info & 0xfb00ffff) | ((((int) (machtype)) & 0x3ff) << 16)) -#define N_SET_FLAGS(execp, flags) \ - ((execp)->a_info = \ - ((execp)->a_info & 0x03ffffff) | ((flags & 0x03f) << 26)) - -#include "sysdep.h" -#include "bfd.h" -#include "libbfd.h" -#include "libaout.h" - -/* On FreeBSD, the magic number is always in i386 (little-endian) - format. I think. */ -#define SWAP_MAGIC(ext) bfd_getl32 (ext) - -#define MY_write_object_contents MY (write_object_contents) -static bfd_boolean MY (write_object_contents) (bfd *); - -#include "aout-target.h" - -/* Write an object file. - Section contents have already been written. We write the - file header, symbols, and relocation. */ - -static bfd_boolean -MY (write_object_contents) (bfd *abfd) -{ - struct external_exec exec_bytes; - struct internal_exec *execp = exec_hdr (abfd); - - obj_reloc_entry_size (abfd) = RELOC_STD_SIZE; - - /* Magic number, maestro, please! */ - switch (bfd_get_arch(abfd)) - { - case bfd_arch_sparc: - N_SET_MACHTYPE (execp, M_SPARC_NETBSD); - break; - case bfd_arch_i386: - N_SET_MACHTYPE (execp, M_386_NETBSD); - break; - case bfd_arch_ns32k: - N_SET_MACHTYPE (execp, M_532_NETBSD); - break; - default: - N_SET_MACHTYPE (execp, M_UNKNOWN); - break; - } - - WRITE_HEADERS (abfd, execp); - - return TRUE; -} diff --git a/bfd/i386dynix.c b/bfd/i386dynix.c deleted file mode 100644 index fbdcd69d77..0000000000 --- a/bfd/i386dynix.c +++ /dev/null @@ -1,82 +0,0 @@ -/* BFD back-end for i386 a.out binaries under dynix. - Copyright (C) 1994-2018 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - 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. */ - - -/* This BFD is currently only tested with gdb, writing object files - may not work. */ - -#define TEXT_START_ADDR 4096 -#define TARGET_PAGE_SIZE 4096 -#define SEGMENT_SIZE TARGET_PAGE_SIZE - -#include "aout/dynix3.h" - -#define DEFAULT_ARCH bfd_arch_i386 -#define MACHTYPE_OK(mtype) ((mtype) == M_386 || (mtype) == M_UNKNOWN) - -/* Do not "beautify" the CONCAT* macro args. Traditional C will not - remove whitespace added here, and thus will fail to concatenate - the tokens. */ -#define MY(OP) CONCAT2 (i386_aout_dynix_,OP) -#define TARGETNAME "a.out-i386-dynix" -#define NAME(x,y) CONCAT3 (i386dynix,_32_,y) -#define ARCH_SIZE 32 -#define NAME_swap_exec_header_in NAME(i386dynix_32_,swap_exec_header_in) -#define MY_get_section_contents aout_32_get_section_contents - -/* aoutx.h requires definitions for NMAGIC, BMAGIC and QMAGIC. */ -#define NMAGIC 0 -#define BMAGIC OMAGIC -#define QMAGIC XMAGIC - -#include "aoutx.h" - -/* (Ab)use some fields in the internal exec header to be able to read - executables that contain shared data. */ - -#define a_shdata a_tload -#define a_shdrsize a_dload - -void -i386dynix_32_swap_exec_header_in (bfd *abfd, - struct external_exec *raw_bytes, - struct internal_exec *execp) -{ - struct external_exec *bytes = (struct external_exec *)raw_bytes; - - /* The internal_exec structure has some fields that are unused in this - configuration (IE for i960), so ensure that all such uninitialized - fields are zero'd out. There are places where two of these structs - are memcmp'd, and thus the contents do matter. */ - memset (execp, 0, sizeof (struct internal_exec)); - /* Now fill in fields in the execp, from the bytes in the raw data. */ - execp->a_info = H_GET_32 (abfd, bytes->e_info); - execp->a_text = GET_WORD (abfd, bytes->e_text); - execp->a_data = GET_WORD (abfd, bytes->e_data); - execp->a_bss = GET_WORD (abfd, bytes->e_bss); - execp->a_syms = GET_WORD (abfd, bytes->e_syms); - execp->a_entry = GET_WORD (abfd, bytes->e_entry); - execp->a_trsize = GET_WORD (abfd, bytes->e_trsize); - execp->a_drsize = GET_WORD (abfd, bytes->e_drsize); - execp->a_shdata = GET_WORD (abfd, bytes->e_shdata); - execp->a_shdrsize = GET_WORD (abfd, bytes->e_shdrsize); -} - -#include "aout-target.h" diff --git a/bfd/i386freebsd.c b/bfd/i386freebsd.c deleted file mode 100644 index 04152034f1..0000000000 --- a/bfd/i386freebsd.c +++ /dev/null @@ -1,38 +0,0 @@ -/* BFD back-end for FreeBSD/386 a.out-ish binaries. - Copyright (C) 1990-2018 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - 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. */ - -#define BYTES_IN_WORD 4 -#undef TARGET_IS_BIG_ENDIAN_P - -#define TARGET_PAGE_SIZE 4096 -#define SEGMENT_SIZE TARGET_PAGE_SIZE - -#define DEFAULT_ARCH bfd_arch_i386 -#define MACHTYPE_OK(mtype) ((mtype) == M_386_NETBSD || (mtype) == M_UNKNOWN) - -/* Do not "beautify" the CONCAT* macro args. Traditional C will not - remove whitespace added here, and thus will fail to concatenate - the tokens. */ -#define MY(OP) CONCAT2 (i386_aout_fbsd_,OP) - -/* This needs to start with a.out so GDB knows it is an a.out variant. */ -#define TARGETNAME "a.out-i386-freebsd" - -#include "freebsd.h" diff --git a/bfd/i386linux.c b/bfd/i386linux.c deleted file mode 100644 index 0887ecb4c8..0000000000 --- a/bfd/i386linux.c +++ /dev/null @@ -1,733 +0,0 @@ -/* BFD back-end for linux flavored i386 a.out binaries. - Copyright (C) 1992-2018 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - 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. */ - -#define TARGET_PAGE_SIZE 4096 -#define ZMAGIC_DISK_BLOCK_SIZE 1024 -#define SEGMENT_SIZE TARGET_PAGE_SIZE -#define TEXT_START_ADDR 0x0 - -#define MACHTYPE_OK(mtype) ((mtype) == M_386 || (mtype) == M_UNKNOWN) - -#include "sysdep.h" -#include "bfd.h" -#include "libbfd.h" -#include "aout/aout64.h" -#include "aout/stab_gnu.h" -#include "aout/ar.h" -#include "libaout.h" /* BFD a.out internal data structures */ - -#define DEFAULT_ARCH bfd_arch_i386 - -/* Do not "beautify" the CONCAT* macro args. Traditional C will not - remove whitespace added here, and thus will fail to concatenate - the tokens. */ -#define MY(OP) CONCAT2 (i386_aout_linux_,OP) -#define TARGETNAME "a.out-i386-linux" - -extern const bfd_target MY(vec); - -/* We always generate QMAGIC files in preference to ZMAGIC files. It - would be possible to make this a linker option, if that ever - becomes important. */ - -static void MY_final_link_callback - (bfd *, file_ptr *, file_ptr *, file_ptr *); -static bfd_boolean i386linux_bfd_final_link - (bfd *, struct bfd_link_info *); -static bfd_boolean i386linux_write_object_contents (bfd *); - -static bfd_boolean -i386linux_bfd_final_link (bfd *abfd, struct bfd_link_info *info) -{ - obj_aout_subformat (abfd) = q_magic_format; - return NAME(aout,final_link) (abfd, info, MY_final_link_callback); -} - -#define MY_bfd_final_link i386linux_bfd_final_link - -/* Set the machine type correctly. */ - -static bfd_boolean -i386linux_write_object_contents (bfd *abfd) -{ - struct external_exec exec_bytes; - struct internal_exec *execp = exec_hdr (abfd); - - N_SET_MACHTYPE (execp, M_386); - - obj_reloc_entry_size (abfd) = RELOC_STD_SIZE; - - WRITE_HEADERS (abfd, execp); - - return TRUE; -} - -#define MY_write_object_contents i386linux_write_object_contents - -/* Code to link against Linux a.out shared libraries. */ - -/* See if a symbol name is a reference to the global offset table. */ - -#ifndef GOT_REF_PREFIX -#define GOT_REF_PREFIX "__GOT_" -#endif - -#define IS_GOT_SYM(name) (CONST_STRNEQ (name, GOT_REF_PREFIX)) - -/* See if a symbol name is a reference to the procedure linkage table. */ - -#ifndef PLT_REF_PREFIX -#define PLT_REF_PREFIX "__PLT_" -#endif - -#define IS_PLT_SYM(name) (CONST_STRNEQ (name, PLT_REF_PREFIX)) - -/* This string is used to generate specialized error messages. */ - -#ifndef NEEDS_SHRLIB -#define NEEDS_SHRLIB "__NEEDS_SHRLIB_" -#endif - -/* This special symbol is a set vector that contains a list of - pointers to fixup tables. It will be present in any dynamically - linked file. The linker generated fixup table should also be added - to the list, and it should always appear in the second slot (the - first one is a dummy with a magic number that is defined in - crt0.o). */ - -#ifndef SHARABLE_CONFLICTS -#define SHARABLE_CONFLICTS "__SHARABLE_CONFLICTS__" -#endif - -/* We keep a list of fixups. The terminology is a bit strange, but - each fixup contains two 32 bit numbers. A regular fixup contains - an address and a pointer, and at runtime we should store the - address at the location pointed to by the pointer. A builtin fixup - contains two pointers, and we should read the address using one - pointer and store it at the location pointed to by the other - pointer. Builtin fixups come into play when we have duplicate - __GOT__ symbols for the same variable. The builtin fixup will copy - the GOT pointer from one over into the other. */ - -struct fixup -{ - struct fixup *next; - struct linux_link_hash_entry *h; - bfd_vma value; - - /* Nonzero if this is a jump instruction that needs to be fixed, - zero if this is just a pointer */ - char jump; - - char builtin; -}; - -/* We don't need a special hash table entry structure, but we do need - to keep some information between linker passes, so we use a special - hash table. */ - -struct linux_link_hash_entry -{ - struct aout_link_hash_entry root; -}; - -struct linux_link_hash_table -{ - struct aout_link_hash_table root; - - /* First dynamic object found in link. */ - bfd *dynobj; - - /* Number of fixups. */ - size_t fixup_count; - - /* Number of builtin fixups. */ - size_t local_builtins; - - /* List of fixups. */ - struct fixup *fixup_list; -}; - -/* Routine to create an entry in an Linux link hash table. */ - -static struct bfd_hash_entry * -linux_link_hash_newfunc (struct bfd_hash_entry *entry, - struct bfd_hash_table *table, - const char *string) -{ - struct linux_link_hash_entry *ret = (struct linux_link_hash_entry *) entry; - - /* Allocate the structure if it has not already been allocated by a - subclass. */ - if (ret == (struct linux_link_hash_entry *) NULL) - ret = ((struct linux_link_hash_entry *) - bfd_hash_allocate (table, sizeof (struct linux_link_hash_entry))); - if (ret == NULL) - return (struct bfd_hash_entry *) ret; - - /* Call the allocation method of the superclass. */ - ret = ((struct linux_link_hash_entry *) - NAME(aout,link_hash_newfunc) ((struct bfd_hash_entry *) ret, - table, string)); - if (ret != NULL) - { - /* Set local fields; there aren't any. */ - } - - return (struct bfd_hash_entry *) ret; -} - -/* Create a Linux link hash table. */ - -static struct bfd_link_hash_table * -linux_link_hash_table_create (bfd *abfd) -{ - struct linux_link_hash_table *ret; - bfd_size_type amt = sizeof (struct linux_link_hash_table); - - ret = (struct linux_link_hash_table *) bfd_zmalloc (amt); - if (ret == (struct linux_link_hash_table *) NULL) - return (struct bfd_link_hash_table *) NULL; - if (!NAME(aout,link_hash_table_init) (&ret->root, abfd, - linux_link_hash_newfunc, - sizeof (struct linux_link_hash_entry))) - { - free (ret); - return (struct bfd_link_hash_table *) NULL; - } - - return &ret->root.root; -} - -/* Look up an entry in a Linux link hash table. */ - -#define linux_link_hash_lookup(table, string, create, copy, follow) \ - ((struct linux_link_hash_entry *) \ - aout_link_hash_lookup (&(table)->root, (string), (create), (copy),\ - (follow))) - -/* Traverse a Linux link hash table. */ - -#define linux_link_hash_traverse(table, func, info) \ - (aout_link_hash_traverse \ - (&(table)->root, \ - (bfd_boolean (*) (struct aout_link_hash_entry *, void *)) (func), \ - (info))) - -/* Get the Linux link hash table from the info structure. This is - just a cast. */ - -#define linux_hash_table(p) ((struct linux_link_hash_table *) ((p)->hash)) - -/* Store the information for a new fixup. */ - -static struct fixup * -new_fixup (struct bfd_link_info *info, - struct linux_link_hash_entry *h, - bfd_vma value, - int builtin) -{ - struct fixup *f; - - f = (struct fixup *) bfd_hash_allocate (&info->hash->table, - sizeof (struct fixup)); - if (f == NULL) - return f; - f->next = linux_hash_table (info)->fixup_list; - linux_hash_table (info)->fixup_list = f; - f->h = h; - f->value = value; - f->builtin = builtin; - f->jump = 0; - ++linux_hash_table (info)->fixup_count; - return f; -} - -/* We come here once we realize that we are going to link to a shared - library. We need to create a special section that contains the - fixup table, and we ultimately need to add a pointer to this into - the set vector for SHARABLE_CONFLICTS. At this point we do not - know the size of the section, but that's OK - we just need to - create it for now. */ - -static bfd_boolean -linux_link_create_dynamic_sections (bfd *abfd, - struct bfd_link_info *info ATTRIBUTE_UNUSED) -{ - flagword flags; - asection *s; - - /* Note that we set the SEC_IN_MEMORY flag. */ - flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY; - - /* We choose to use the name ".linux-dynamic" for the fixup table. - Why not? */ - s = bfd_make_section_with_flags (abfd, ".linux-dynamic", flags); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, 2)) - return FALSE; - s->size = 0; - s->contents = 0; - - return TRUE; -} - -/* Function to add a single symbol to the linker hash table. This is - a wrapper around _bfd_generic_link_add_one_symbol which handles the - tweaking needed for dynamic linking support. */ - -static bfd_boolean -linux_add_one_symbol (struct bfd_link_info *info, - bfd *abfd, - const char *name, - flagword flags, - asection *section, - bfd_vma value, - const char *string, - bfd_boolean copy, - bfd_boolean collect, - struct bfd_link_hash_entry **hashp) -{ - struct linux_link_hash_entry *h; - bfd_boolean insert; - - /* Look up and see if we already have this symbol in the hash table. - If we do, and the defining entry is from a shared library, we - need to create the dynamic sections. - - FIXME: What if abfd->xvec != info->output_bfd->xvec? We may - want to be able to link Linux a.out and ELF objects together, - but serious confusion is possible. */ - - insert = FALSE; - - if (! bfd_link_relocatable (info) - && linux_hash_table (info)->dynobj == NULL - && strcmp (name, SHARABLE_CONFLICTS) == 0 - && (flags & BSF_CONSTRUCTOR) != 0 - && abfd->xvec == info->output_bfd->xvec) - { - if (! linux_link_create_dynamic_sections (abfd, info)) - return FALSE; - linux_hash_table (info)->dynobj = abfd; - insert = TRUE; - } - - if (bfd_is_abs_section (section) - && abfd->xvec == info->output_bfd->xvec) - { - h = linux_link_hash_lookup (linux_hash_table (info), name, FALSE, - FALSE, FALSE); - if (h != NULL - && (h->root.root.type == bfd_link_hash_defined - || h->root.root.type == bfd_link_hash_defweak)) - { - struct fixup *f; - - if (hashp != NULL) - *hashp = (struct bfd_link_hash_entry *) h; - - f = new_fixup (info, h, value, ! IS_PLT_SYM (name)); - if (f == NULL) - return FALSE; - f->jump = IS_PLT_SYM (name); - - return TRUE; - } - } - - /* Do the usual procedure for adding a symbol. */ - if (! _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, - value, string, copy, collect, - hashp)) - return FALSE; - - /* Insert a pointer to our table in the set vector. The dynamic - linker requires this information */ - if (insert) - { - asection *s; - - /* Here we do our special thing to add the pointer to the - dynamic section in the SHARABLE_CONFLICTS set vector. */ - s = bfd_get_section_by_name (linux_hash_table (info)->dynobj, - ".linux-dynamic"); - BFD_ASSERT (s != NULL); - - if (! (_bfd_generic_link_add_one_symbol - (info, linux_hash_table (info)->dynobj, SHARABLE_CONFLICTS, - BSF_GLOBAL | BSF_CONSTRUCTOR, s, (bfd_vma) 0, NULL, - FALSE, FALSE, NULL))) - return FALSE; - } - - return TRUE; -} - -/* We will crawl the hash table and come here for every global symbol. - We will examine each entry and see if there are indications that we - need to add a fixup. There are two possible cases - one is where - you have duplicate definitions of PLT or GOT symbols - these will - have already been caught and added as "builtin" fixups. If we find - that the corresponding non PLT/GOT symbol is also present, we - convert it to a regular fixup instead. - - This function is called via linux_link_hash_traverse. */ - -static bfd_boolean -linux_tally_symbols (struct linux_link_hash_entry *h, void * data) -{ - struct bfd_link_info *info = (struct bfd_link_info *) data; - struct fixup *f, *f1; - int is_plt; - struct linux_link_hash_entry *h1, *h2; - bfd_boolean exists; - - if (h->root.root.type == bfd_link_hash_undefined - && CONST_STRNEQ (h->root.root.root.string, NEEDS_SHRLIB)) - { - const char *name; - char *p; - char *alloc = NULL; - - name = h->root.root.root.string + sizeof NEEDS_SHRLIB - 1; - p = strrchr (name, '_'); - if (p != NULL) - alloc = (char *) bfd_malloc ((bfd_size_type) strlen (name) + 1); - - if (p == NULL || alloc == NULL) - _bfd_error_handler (_("output file requires shared library `%s'"), - name); - else - { - strcpy (alloc, name); - p = strrchr (alloc, '_'); - *p++ = '\0'; - _bfd_error_handler - (_("output file requires shared library `%s.so.%s'"), - alloc, p); - free (alloc); - } - - abort (); - } - - /* If this symbol is not a PLT/GOT, we do not even need to look at it */ - is_plt = IS_PLT_SYM (h->root.root.root.string); - - if (is_plt || IS_GOT_SYM (h->root.root.root.string)) - { - /* Look up this symbol twice. Once just as a regular lookup, - and then again following all of the indirect links until we - reach a real symbol. */ - h1 = linux_link_hash_lookup (linux_hash_table (info), - (h->root.root.root.string - + sizeof PLT_REF_PREFIX - 1), - FALSE, FALSE, TRUE); - /* h2 does not follow indirect symbols. */ - h2 = linux_link_hash_lookup (linux_hash_table (info), - (h->root.root.root.string - + sizeof PLT_REF_PREFIX - 1), - FALSE, FALSE, FALSE); - - /* The real symbol must exist but if it is also an ABS symbol, - there is no need to have a fixup. This is because they both - came from the same library. If on the other hand, we had to - use an indirect symbol to get to the real symbol, we add the - fixup anyway, since there are cases where these symbols come - from different shared libraries */ - if (h1 != NULL - && (((h1->root.root.type == bfd_link_hash_defined - || h1->root.root.type == bfd_link_hash_defweak) - && ! bfd_is_abs_section (h1->root.root.u.def.section)) - || h2->root.root.type == bfd_link_hash_indirect)) - { - /* See if there is a "builtin" fixup already present - involving this symbol. If so, convert it to a regular - fixup. In the end, this relaxes some of the requirements - about the order of performing fixups. */ - exists = FALSE; - for (f1 = linux_hash_table (info)->fixup_list; - f1 != NULL; - f1 = f1->next) - { - if ((f1->h != h && f1->h != h1) - || (! f1->builtin && ! f1->jump)) - continue; - if (f1->h == h1) - exists = TRUE; - if (! exists - && bfd_is_abs_section (h->root.root.u.def.section)) - { - f = new_fixup (info, h1, f1->h->root.root.u.def.value, 0); - f->jump = is_plt; - } - f1->h = h1; - f1->jump = is_plt; - f1->builtin = 0; - exists = TRUE; - } - if (! exists - && bfd_is_abs_section (h->root.root.u.def.section)) - { - f = new_fixup (info, h1, h->root.root.u.def.value, 0); - if (f == NULL) - { - /* FIXME: No way to return error. */ - abort (); - } - f->jump = is_plt; - } - } - - /* Quick and dirty way of stripping these symbols from the - symtab. */ - if (bfd_is_abs_section (h->root.root.u.def.section)) - h->root.written = TRUE; - } - - return TRUE; -} - -/* This is called to set the size of the .linux-dynamic section is. - It is called by the Linux linker emulation before_allocation - routine. We have finished reading all of the input files, and now - we just scan the hash tables to find out how many additional fixups - are required. */ - -bfd_boolean -bfd_i386linux_size_dynamic_sections (bfd *output_bfd, - struct bfd_link_info *info) -{ - struct fixup *f; - asection *s; - - if (output_bfd->xvec != &MY(vec)) - return TRUE; - - /* First find the fixups... */ - linux_link_hash_traverse (linux_hash_table (info), - linux_tally_symbols, - info); - - /* If there are builtin fixups, leave room for a marker. This is - used by the dynamic linker so that it knows that all that follow - are builtin fixups instead of regular fixups. */ - for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next) - { - if (f->builtin) - { - ++linux_hash_table (info)->fixup_count; - ++linux_hash_table (info)->local_builtins; - break; - } - } - - if (linux_hash_table (info)->dynobj == NULL) - { - if (linux_hash_table (info)->fixup_count > 0) - abort (); - return TRUE; - } - - /* Allocate memory for our fixup table. We will fill it in later. */ - s = bfd_get_section_by_name (linux_hash_table (info)->dynobj, - ".linux-dynamic"); - if (s != NULL) - { - s->size = linux_hash_table (info)->fixup_count + 1; - s->size *= 8; - s->contents = (bfd_byte *) bfd_zalloc (output_bfd, s->size); - if (s->contents == NULL) - return FALSE; - } - - return TRUE; -} - -/* We come here once we are ready to actually write the fixup table to - the output file. Scan the fixup tables and so forth and generate - the stuff we need. */ - -static bfd_boolean -linux_finish_dynamic_link (bfd *output_bfd, - struct bfd_link_info *info) -{ - asection *s, *os, *is; - bfd_byte *fixup_table; - struct linux_link_hash_entry *h; - struct fixup *f; - unsigned int new_addr; - int section_offset; - unsigned int fixups_written; - - if (linux_hash_table (info)->dynobj == NULL) - return TRUE; - - s = bfd_get_section_by_name (linux_hash_table (info)->dynobj, - ".linux-dynamic"); - BFD_ASSERT (s != NULL); - os = s->output_section; - fixups_written = 0; - -#ifdef LINUX_LINK_DEBUG - printf ("Fixup table file offset: %x VMA: %x\n", - os->filepos + s->output_offset, - os->vma + s->output_offset); -#endif - - fixup_table = s->contents; - bfd_put_32 (output_bfd, - (bfd_vma) linux_hash_table (info)->fixup_count, fixup_table); - fixup_table += 4; - - /* Fill in fixup table. */ - for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next) - { - if (f->builtin) - continue; - - if (f->h->root.root.type != bfd_link_hash_defined - && f->h->root.root.type != bfd_link_hash_defweak) - { - _bfd_error_handler - (_("symbol %s not defined for fixups"), - f->h->root.root.root.string); - continue; - } - - is = f->h->root.root.u.def.section; - section_offset = is->output_section->vma + is->output_offset; - new_addr = f->h->root.root.u.def.value + section_offset; - -#ifdef LINUX_LINK_DEBUG - printf ("Fixup(%d) %s: %x %x\n",f->jump, f->h->root.root.string, - new_addr, f->value); -#endif - - if (f->jump) - { - /* Relative address */ - new_addr = new_addr - (f->value + 5); - bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table); - fixup_table += 4; - bfd_put_32 (output_bfd, f->value + 1, fixup_table); - fixup_table += 4; - } - else - { - bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table); - fixup_table += 4; - bfd_put_32 (output_bfd, f->value, fixup_table); - fixup_table += 4; - } - ++fixups_written; - } - - if (linux_hash_table (info)->local_builtins != 0) - { - /* Special marker so we know to switch to the other type of fixup */ - bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table); - fixup_table += 4; - bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table); - fixup_table += 4; - ++fixups_written; - for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next) - { - if (! f->builtin) - continue; - - if (f->h->root.root.type != bfd_link_hash_defined - && f->h->root.root.type != bfd_link_hash_defweak) - { - _bfd_error_handler - (_("symbol %s not defined for fixups"), - f->h->root.root.root.string); - continue; - } - - is = f->h->root.root.u.def.section; - section_offset = is->output_section->vma + is->output_offset; - new_addr = f->h->root.root.u.def.value + section_offset; - -#ifdef LINUX_LINK_DEBUG - printf ("Fixup(B) %s: %x %x\n", f->h->root.root.string, - new_addr, f->value); -#endif - - bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table); - fixup_table += 4; - bfd_put_32 (output_bfd, f->value, fixup_table); - fixup_table += 4; - ++fixups_written; - } - } - - if (linux_hash_table (info)->fixup_count != fixups_written) - { - _bfd_error_handler (_("warning: fixup count mismatch")); - while (linux_hash_table (info)->fixup_count > fixups_written) - { - bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table); - fixup_table += 4; - bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table); - fixup_table += 4; - ++fixups_written; - } - } - - h = linux_link_hash_lookup (linux_hash_table (info), - "__BUILTIN_FIXUPS__", - FALSE, FALSE, FALSE); - - if (h != NULL - && (h->root.root.type == bfd_link_hash_defined - || h->root.root.type == bfd_link_hash_defweak)) - { - is = h->root.root.u.def.section; - section_offset = is->output_section->vma + is->output_offset; - new_addr = h->root.root.u.def.value + section_offset; - -#ifdef LINUX_LINK_DEBUG - printf ("Builtin fixup table at %x\n", new_addr); -#endif - - bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table); - } - else - bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table); - - if (bfd_seek (output_bfd, (file_ptr) (os->filepos + s->output_offset), - SEEK_SET) != 0) - return FALSE; - - if (bfd_bwrite (s->contents, s->size, output_bfd) != s->size) - return FALSE; - - return TRUE; -} - -#define MY_bfd_link_hash_table_create linux_link_hash_table_create -#define MY_add_one_symbol linux_add_one_symbol -#define MY_finish_dynamic_link linux_finish_dynamic_link - -#define MY_zmagic_contiguous 1 - -#include "aout-target.h" diff --git a/bfd/i386mach3.c b/bfd/i386mach3.c deleted file mode 100644 index bffbf0c050..0000000000 --- a/bfd/i386mach3.c +++ /dev/null @@ -1,73 +0,0 @@ -/* BFD back-end for i386 a.out binaries. - Copyright (C) 1990-2018 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - 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. */ - - -/* This is for Mach 3, which uses a.out, not Mach-O. */ - -/* There is no magic number or anything which lets us distinguish this target - from i386aout or i386bsd. So this target is only useful if it is the - default target. */ - -#define TARGET_PAGE_SIZE 1 -#define SEGMENT_SIZE 0x1000 -#define TEXT_START_ADDR 0x10000 -#define ARCH 32 -/* This macro is only relevant when N_MAGIC(x) == ZMAGIC. */ -#define N_HEADER_IN_TEXT(x) 1 - -#define N_TXTSIZE(x) ((x)->a_text) - -#include "sysdep.h" -#include "bfd.h" -#include "libbfd.h" -#include "aout/aout64.h" -#include "aout/stab_gnu.h" -#include "aout/ar.h" -#include "libaout.h" /* BFD a.out internal data structures */ - -#define DEFAULT_ARCH bfd_arch_i386 - -/* Do not "beautify" the CONCAT* macro args. Traditional C will not - remove whitespace added here, and thus will fail to concatenate - the tokens. */ -#define MY(OP) CONCAT2 (i386_aout_mach3_,OP) -#define TARGETNAME "a.out-mach3" - -static bfd_boolean MY (set_sizes) (bfd *); -#define MY_backend_data &MY(backend_data) - -static const struct aout_backend_data MY(backend_data) = -{ - 0, /* zmagic contiguous */ - 1, /* text incl header */ - 0, /* entry is text address */ - 0, /* exec_hdr_flags */ - 0, /* text vma? */ - MY(set_sizes), - 1, /* exec header not counted */ - 0, /* add_dynamic_symbols */ - 0, /* add_one_symbol */ - 0, /* link_dynamic_object */ - 0, /* write_dynamic_symbol */ - 0, /* check_dynamic_reloc */ - 0 /* finish_dynamic_link */ -}; - -#include "aout-target.h" diff --git a/bfd/i386netbsd.c b/bfd/i386netbsd.c deleted file mode 100644 index 989fb301da..0000000000 --- a/bfd/i386netbsd.c +++ /dev/null @@ -1,38 +0,0 @@ -/* BFD back-end for NetBSD/386 a.out-ish binaries. - Copyright (C) 1990-2018 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - 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. */ - -#define BYTES_IN_WORD 4 -#undef TARGET_IS_BIG_ENDIAN_P - -#define TARGET_PAGE_SIZE 4096 -#define SEGMENT_SIZE TARGET_PAGE_SIZE - -#define DEFAULT_ARCH bfd_arch_i386 -#define DEFAULT_MID M_386_NETBSD - -/* Do not "beautify" the CONCAT* macro args. Traditional C will not - remove whitespace added here, and thus will fail to concatenate - the tokens. */ -#define MY(OP) CONCAT2 (i386_aout_nbsd_,OP) - -/* This needs to start with a.out so GDB knows it is an a.out variant. */ -#define TARGETNAME "a.out-i386-netbsd" - -#include "netbsd.h" diff --git a/bfd/i386os9k.c b/bfd/i386os9k.c deleted file mode 100644 index 1c8ef847d4..0000000000 --- a/bfd/i386os9k.c +++ /dev/null @@ -1,242 +0,0 @@ -/* BFD back-end for os9000 i386 binaries. - Copyright (C) 1990-2018 Free Software Foundation, Inc. - Written by Cygnus Support. - - This file is part of BFD, the Binary File Descriptor library. - - 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 "bfd.h" -#include "libbfd.h" -#include "bfdlink.h" -#include "libaout.h" /* BFD a.out internal data structures */ -#include "os9k.h" - -/* Swaps the information in an executable header taken from a raw byte - stream memory image, into the internal exec_header structure. */ -static bfd_boolean -os9k_swap_exec_header_in (bfd *abfd, - mh_com *raw_bytes, - struct internal_exec *execp) -{ - mh_com *bytes = (mh_com *) raw_bytes; - unsigned int dload, dmemsize, dmemstart; - - /* Now fill in fields in the execp, from the bytes in the raw data. */ - execp->a_info = H_GET_16 (abfd, bytes->m_sync); - execp->a_syms = 0; - execp->a_entry = H_GET_32 (abfd, bytes->m_exec); - execp->a_talign = 2; - execp->a_dalign = 2; - execp->a_balign = 2; - - dload = H_GET_32 (abfd, bytes->m_idata); - execp->a_data = dload + 8; - - if (bfd_seek (abfd, (file_ptr) dload, SEEK_SET) != 0 - || (bfd_bread (&dmemstart, (bfd_size_type) sizeof (dmemstart), abfd) - != sizeof (dmemstart)) - || (bfd_bread (&dmemsize, (bfd_size_type) sizeof (dmemsize), abfd) - != sizeof (dmemsize))) - return FALSE; - - execp->a_tload = 0; - execp->a_dload = H_GET_32 (abfd, (unsigned char *) &dmemstart); - execp->a_text = dload - execp->a_tload; - execp->a_data = H_GET_32 (abfd, (unsigned char *) &dmemsize); - execp->a_bss = H_GET_32 (abfd, bytes->m_data) - execp->a_data; - - execp->a_trsize = 0; - execp->a_drsize = 0; - - return TRUE; -} - - -/* Finish up the opening of a b.out file for reading. Fill in all the - fields that are not handled by common code. */ - -static const bfd_target * -os9k_callback (bfd *abfd) -{ - struct internal_exec *execp = exec_hdr (abfd); - unsigned long bss_start; - - /* Architecture and machine type. */ - bfd_set_arch_mach (abfd, bfd_arch_i386, 0); - - /* The positions of the string table and symbol table. */ - obj_str_filepos (abfd) = 0; - obj_sym_filepos (abfd) = 0; - - /* The alignments of the sections. */ - obj_textsec (abfd)->alignment_power = execp->a_talign; - obj_datasec (abfd)->alignment_power = execp->a_dalign; - obj_bsssec (abfd)->alignment_power = execp->a_balign; - - /* The starting addresses of the sections. */ - obj_textsec (abfd)->vma = execp->a_tload; - obj_datasec (abfd)->vma = execp->a_dload; - - /* And reload the sizes, since the aout module zaps them. */ - obj_textsec (abfd)->size = execp->a_text; - - bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section. */ - obj_bsssec (abfd)->vma = align_power (bss_start, execp->a_balign); - - /* The file positions of the sections. */ - obj_textsec (abfd)->filepos = execp->a_entry; - obj_datasec (abfd)->filepos = execp->a_dload; - - /* The file positions of the relocation info *** - obj_textsec (abfd)->rel_filepos = N_TROFF (execp); - obj_datasec (abfd)->rel_filepos = N_DROFF (execp); */ - - adata (abfd).page_size = 1; /* Not applicable. */ - adata (abfd).segment_size = 1;/* Not applicable. */ - adata (abfd).exec_bytes_size = MHCOM_BYTES_SIZE; - - return abfd->xvec; -} - -static const bfd_target * -os9k_object_p (bfd *abfd) -{ - struct internal_exec anexec; - mh_com exec_bytes; - - if (bfd_bread (&exec_bytes, (bfd_size_type) MHCOM_BYTES_SIZE, abfd) - != MHCOM_BYTES_SIZE) - { - if (bfd_get_error () != bfd_error_system_call) - bfd_set_error (bfd_error_wrong_format); - return 0; - } - - anexec.a_info = H_GET_16 (abfd, exec_bytes.m_sync); - if (N_BADMAG (&anexec)) - { - bfd_set_error (bfd_error_wrong_format); - return 0; - } - - if (! os9k_swap_exec_header_in (abfd, &exec_bytes, &anexec)) - { - if (bfd_get_error () != bfd_error_system_call) - bfd_set_error (bfd_error_wrong_format); - return NULL; - } - return aout_32_some_aout_object_p (abfd, &anexec, os9k_callback); -} - -static int -os9k_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info ATTRIBUTE_UNUSED) -{ - return sizeof (struct internal_exec); -} - - - -#define aout_32_close_and_cleanup aout_32_bfd_free_cached_info - -#define aout_32_find_line _bfd_nosymbols_find_line -#define aout_32_get_symbol_version_string \ - _bfd_nosymbols_get_symbol_version_string -#define aout_32_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol - -#define aout_32_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup -#define aout_32_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup - -#define aout_32_get_section_contents_in_window \ - _bfd_generic_get_section_contents_in_window - -#define aout_32_set_reloc _bfd_generic_set_reloc - -#define os9k_bfd_get_relocated_section_contents \ - bfd_generic_get_relocated_section_contents -#define os9k_bfd_relax_section bfd_generic_relax_section -#define os9k_bfd_gc_sections bfd_generic_gc_sections -#define os9k_bfd_lookup_section_flags bfd_generic_lookup_section_flags -#define os9k_bfd_merge_sections bfd_generic_merge_sections -#define os9k_bfd_is_group_section bfd_generic_is_group_section -#define os9k_bfd_discard_group bfd_generic_discard_group -#define os9k_section_already_linked \ - _bfd_generic_section_already_linked -#define os9k_bfd_define_common_symbol bfd_generic_define_common_symbol -#define os9k_bfd_define_start_stop bfd_generic_define_start_stop -#define os9k_bfd_link_hash_table_create _bfd_generic_link_hash_table_create -#define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols -#define os9k_bfd_link_just_syms _bfd_generic_link_just_syms -#define os9k_bfd_copy_link_hash_symbol_type \ - _bfd_generic_copy_link_hash_symbol_type -#define os9k_bfd_final_link _bfd_generic_final_link -#define os9k_bfd_link_split_section _bfd_generic_link_split_section -#define os9k_bfd_link_check_relocs _bfd_generic_link_check_relocs - -const bfd_target i386_aout_os9k_vec = - { - "i386os9k", /* name */ - bfd_target_os9k_flavour, - BFD_ENDIAN_LITTLE, /* data byte order is little */ - BFD_ENDIAN_LITTLE, /* hdr byte order is little */ - (HAS_RELOC | EXEC_P | WP_TEXT), /* object flags */ - (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD), /* section flags */ - 0, /* symbol leading char */ - ' ', /* ar_pad_char */ - 16, /* ar_max_namelen */ - 0, /* match priority. */ - - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */ - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ - { /* bfd_check_format */ - _bfd_dummy_target, - os9k_object_p, - bfd_generic_archive_p, - _bfd_dummy_target - }, - { /* bfd_set_format */ - _bfd_bool_bfd_false_error, - _bfd_bool_bfd_false_error, - _bfd_generic_mkarchive, - _bfd_bool_bfd_false_error - }, - { /* bfd_write_contents */ - _bfd_bool_bfd_false_error, - _bfd_bool_bfd_false_error, - _bfd_write_archive_contents, - _bfd_bool_bfd_false_error - }, - - BFD_JUMP_TABLE_GENERIC (aout_32), - BFD_JUMP_TABLE_COPY (_bfd_generic), - BFD_JUMP_TABLE_CORE (_bfd_nocore), - BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd), - BFD_JUMP_TABLE_SYMBOLS (aout_32), - BFD_JUMP_TABLE_RELOCS (aout_32), - BFD_JUMP_TABLE_WRITE (aout_32), - BFD_JUMP_TABLE_LINK (os9k), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), - - NULL, - - NULL, - }; diff --git a/bfd/po/SRC-POTFILES.in b/bfd/po/SRC-POTFILES.in index 62339ec1bf..f7ce38726c 100644 --- a/bfd/po/SRC-POTFILES.in +++ b/bfd/po/SRC-POTFILES.in @@ -231,21 +231,14 @@ elfxx-tilegx.c elfxx-x86.c elfxx-x86.c format.c -freebsd.h genlink.h go32stub.h hash.c hpux-core.c i386aout.c i386bsd.c -i386dynix.c -i386freebsd.c -i386linux.c i386lynx.c -i386mach3.c i386msdos.c -i386netbsd.c -i386os9k.c ihex.c init.c irix-core.c diff --git a/bfd/targets.c b/bfd/targets.c index cce8b74a62..c03efe0ee6 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -650,13 +650,7 @@ extern const bfd_target hppa_elf64_linux_vec; extern const bfd_target hppa_som_vec; extern const bfd_target i386_aout_vec; extern const bfd_target i386_aout_bsd_vec; -extern const bfd_target i386_aout_dynix_vec; -extern const bfd_target i386_aout_fbsd_vec; -extern const bfd_target i386_aout_linux_vec; extern const bfd_target i386_aout_lynx_vec; -extern const bfd_target i386_aout_mach3_vec; -extern const bfd_target i386_aout_nbsd_vec; -extern const bfd_target i386_aout_os9k_vec; extern const bfd_target i386_coff_vec; extern const bfd_target i386_coff_go32_vec; extern const bfd_target i386_coff_go32stubbed_vec; @@ -1014,22 +1008,7 @@ static const bfd_target * const _bfd_target_vector[] = &i386_aout_vec, &i386_aout_bsd_vec, -#if 0 - &i386_aout_dynix_vec, -#endif - &i386_aout_fbsd_vec, -#if 0 - /* Since a.out files lack decent magic numbers, no way to recognize - which kind of a.out file it is. */ - &i386_aout_linux_vec, -#endif &i386_aout_lynx_vec, -#if 0 - /* No distinguishing features for Mach 3 executables. */ - &i386_aout_mach3_vec, -#endif - &i386_aout_nbsd_vec, - &i386_aout_os9k_vec, &i386_coff_vec, &i386_coff_go32_vec, &i386_coff_go32stubbed_vec, diff --git a/binutils/ChangeLog b/binutils/ChangeLog index b5dc8a6e50..3d28535d88 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2018-04-18 Alan Modra + + * testsuite/lib/binutils-common.exp: Remove support for assorted + aout targets. + 2018-04-17 Nick Clifton PR 23063 diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp index 9c5754ea35..8708030a23 100644 --- a/binutils/testsuite/lib/binutils-common.exp +++ b/binutils/testsuite/lib/binutils-common.exp @@ -54,27 +54,18 @@ proc is_elf_format {} { return 0 } - if { [istarget *-*-linux*aout*] - || [istarget *-*-linux*ecoff*] - || [istarget *-*-linux*oldld*] - || [istarget *-*-rtemscoff*] - || [istarget i?86-*-freebsd\[12\].*] } { + if { [istarget *-*-linux*ecoff*] + || [istarget *-*-rtemscoff*] } { return 0 } if { ![istarget *-*-netbsdelf*] - && ( [istarget *-*-netbsd*aout*] - || [istarget *-*-netbsdpe*] - || [istarget arm*-*-netbsd*] - || [istarget i*86-*-netbsd*] - || [istarget vax-*-netbsd*] + && ( [istarget vax-*-netbsd*] || [istarget ns32k-*-netbsd*]) } { return 0 } if { [istarget arm-*-openbsd*] - || [istarget i386-*-openbsd\[0-2\].*] - || [istarget i386-*-openbsd3.\[0-2\]] || [istarget ns32k-*-openbsd*] || [istarget vax-*-openbsd*] } { return 0 @@ -86,22 +77,13 @@ proc is_elf_format {} { # True if the object format is known to be a.out. # proc is_aout_format {} { - if { [istarget *-*-*\[ab\]out*] - || [istarget *-*-linux*oldld*] + if { [istarget *-*-*aout*] || [istarget *-*-bsd*] || [istarget *-*-msdos*] || [istarget arm-*-netbsd*] || [istarget arm-*-openbsd*] - || [istarget arm-*-riscix*] - || [istarget i?86-*-freebsd\[12\].*] - || [istarget i?86-*-netbsd*] - || [istarget i?86-*-openbsd\[0-2\]*] - || [istarget i?86-*-openbsd3.\[0-2\]*] - || [istarget i?86-*-vsta] - || [istarget i?86-*-mach*] || [istarget ns32k-*-*] || [istarget pdp11-*-*] - || [istarget vax-dec-ultrix*] || [istarget vax-*-netbsd] } { return 1 } diff --git a/gas/ChangeLog b/gas/ChangeLog index 1fb5c1ff16..8cc56b4e7a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,18 @@ +2018-04-18 Alan Modra + + * Makefile.am: Remove support for assorted i386 aout and coff targets. + * config/obj-elf.c: Likewise. + * config/tc-i386.h: Likewise. + * configure.ac: Likewise. + * configure.tgt: Likewise. + * config/te-dynix.h: Delete. + * config/te-i386aix.h: Delete. + * config/te-mach.h: Delete. + * Makefile.in: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + * po/POTFILES.in: Regenerate. + 2018-04-18 Alan Modra * configure.tgt: Remove *-*-bsd* entry. diff --git a/gas/Makefile.am b/gas/Makefile.am index a50fd69fc3..fa0f65cab3 100644 --- a/gas/Makefile.am +++ b/gas/Makefile.am @@ -306,7 +306,6 @@ TARG_ENV_HFILES = \ config/te-armfbsdeabi.h \ config/te-armfbsdvfp.h \ config/te-armlinuxeabi.h \ - config/te-dynix.h \ config/te-freebsd.h \ config/te-generic.h \ config/te-gnu.h \ @@ -314,11 +313,9 @@ TARG_ENV_HFILES = \ config/te-hppa.h \ config/te-hppa64.h \ config/te-hppalinux64.h \ - config/te-i386aix.h \ config/te-ia64aix.h \ config/te-interix.h \ config/te-lynx.h \ - config/te-mach.h \ config/te-macos.h \ config/te-nbsd.h \ config/te-nbsd532.h \ diff --git a/gas/Makefile.in b/gas/Makefile.in index a9847fa67a..873e917c87 100644 --- a/gas/Makefile.in +++ b/gas/Makefile.in @@ -602,7 +602,6 @@ TARG_ENV_HFILES = \ config/te-armfbsdeabi.h \ config/te-armfbsdvfp.h \ config/te-armlinuxeabi.h \ - config/te-dynix.h \ config/te-freebsd.h \ config/te-generic.h \ config/te-gnu.h \ @@ -610,11 +609,9 @@ TARG_ENV_HFILES = \ config/te-hppa.h \ config/te-hppa64.h \ config/te-hppalinux64.h \ - config/te-i386aix.h \ config/te-ia64aix.h \ config/te-interix.h \ config/te-lynx.h \ - config/te-mach.h \ config/te-macos.h \ config/te-nbsd.h \ config/te-nbsd532.h \ diff --git a/gas/config.in b/gas/config.in index fff48d9f59..fcadc4ae5c 100644 --- a/gas/config.in +++ b/gas/config.in @@ -268,9 +268,6 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define if defaulting to ELF on SCO 5. */ -#undef SCO_ELF - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 5870447d37..3a7e39eac2 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -2647,103 +2647,6 @@ elf_frob_file_after_relocs (void) #endif /* NEED_ECOFF_DEBUG */ } -#ifdef SCO_ELF - -/* Heavily plagiarized from obj_elf_version. The idea is to emit the - SCO specific identifier in the .notes section to satisfy the SCO - linker. - - This looks more complicated than it really is. As opposed to the - "obvious" solution, this should handle the cross dev cases - correctly. (i.e, hosting on a 64 bit big endian processor, but - generating SCO Elf code) Efficiency isn't a concern, as there - should be exactly one of these sections per object module. - - SCO OpenServer 5 identifies it's ELF modules with a standard ELF - .note section. - - int_32 namesz = 4 ; Name size - int_32 descsz = 12 ; Descriptive information - int_32 type = 1 ; - char name[4] = "SCO" ; Originator name ALWAYS SCO + NULL - int_32 version = (major ver # << 16) | version of tools ; - int_32 source = (tool_id << 16 ) | 1 ; - int_32 info = 0 ; These are set by the SCO tools, but we - don't know enough about the source - environment to set them. SCO ld currently - ignores them, and recommends we set them - to zero. */ - -#define SCO_MAJOR_VERSION 0x1 -#define SCO_MINOR_VERSION 0x1 - -void -sco_id (void) -{ - - char *name; - unsigned int c; - char ch; - char *p; - asection *seg = now_seg; - subsegT subseg = now_subseg; - Elf_Internal_Note i_note; - Elf_External_Note e_note; - asection *note_secp = NULL; - int i, len; - - /* create the .note section */ - - note_secp = subseg_new (".note", 0); - bfd_set_section_flags (stdoutput, - note_secp, - SEC_HAS_CONTENTS | SEC_READONLY); - - /* process the version string */ - - i_note.namesz = 4; - i_note.descsz = 12; /* 12 descriptive bytes */ - i_note.type = NT_VERSION; /* Contains a version string */ - - p = frag_more (sizeof (i_note.namesz)); - md_number_to_chars (p, i_note.namesz, 4); - - p = frag_more (sizeof (i_note.descsz)); - md_number_to_chars (p, i_note.descsz, 4); - - p = frag_more (sizeof (i_note.type)); - md_number_to_chars (p, i_note.type, 4); - - p = frag_more (4); - strcpy (p, "SCO"); - - /* Note: this is the version number of the ELF we're representing */ - p = frag_more (4); - md_number_to_chars (p, (SCO_MAJOR_VERSION << 16) | (SCO_MINOR_VERSION), 4); - - /* Here, we pick a magic number for ourselves (yes, I "registered" - it with SCO. The bottom bit shows that we are compat with the - SCO ABI. */ - p = frag_more (4); - md_number_to_chars (p, 0x4c520000 | 0x0001, 4); - - /* If we knew (or cared) what the source language options were, we'd - fill them in here. SCO has given us permission to ignore these - and just set them to zero. */ - p = frag_more (4); - md_number_to_chars (p, 0x0000, 4); - - frag_align (2, 0, 0); - - /* We probably can't restore the current segment, for there likely - isn't one yet... */ - if (seg && subseg) - subseg_set (seg, subseg); - -} - -#endif /* SCO_ELF */ - static void elf_generate_asm_lineno (void) { diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h index c7c53bea61..833047980b 100644 --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -266,11 +266,6 @@ struct i386_tc_frag_data } \ while (0) -#ifdef SCO_ELF -#define tc_init_after_args() sco_id () -extern void sco_id (void); -#endif - #define WORKING_DOT_WORD 1 /* How to generate NOPs for .nop direct directive. */ diff --git a/gas/config/te-dynix.h b/gas/config/te-dynix.h deleted file mode 100644 index a695dfa66e..0000000000 --- a/gas/config/te-dynix.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 2007-2018 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS 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, - or (at your option) any later version. - - GAS 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 GAS; see the file COPYING. If not, write to the Free - Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* This is for i386-sequent-bsd. The assembler probably does not - actually work, as the support in BFD is not complete as of this - writing. See bfd/i386-dynix.c. */ - -#define TE_DYNIX 1 - -#include "obj-format.h" diff --git a/gas/config/te-i386aix.h b/gas/config/te-i386aix.h deleted file mode 100644 index 790b0bc1da..0000000000 --- a/gas/config/te-i386aix.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2007-2018 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS 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, - or (at your option) any later version. - - GAS 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 GAS; see the file COPYING. If not, write to the Free - Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* This file is te-i386aix.h and is built from pieces of code from - Minh Tran-Le by rich@cygnus.com. */ - -#define TE_I386AIX 1 - -#include "obj-format.h" - -/* Define KEEP_RELOC_INFO so that the strip reloc info flag F_RELFLG is - not used in the filehdr for COFF output. */ -#define KEEP_RELOC_INFO - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 79 - * End: - */ - -/* end of te-i386aix.h */ diff --git a/gas/config/te-mach.h b/gas/config/te-mach.h deleted file mode 100644 index 1ca6800d67..0000000000 --- a/gas/config/te-mach.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2007-2018 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS 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, - or (at your option) any later version. - - GAS 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 GAS; see the file COPYING. If not, write to the Free - Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TE_Mach -#include "obj-format.h" diff --git a/gas/configure b/gas/configure index cd48cee3bb..a45e531fec 100755 --- a/gas/configure +++ b/gas/configure @@ -12223,14 +12223,6 @@ _ACEOF generic_target=${cpu_type}-${target_vendor}-${target_os} case ${generic_target} in - i386-*-sco3.2v5*) - if test ${this_target} = $target; then - -$as_echo "#define SCO_ELF 1" >>confdefs.h - - fi - ;; - i386-*-msdosdjgpp* \ | i386-*-go32* \ | i386-go32-rtems*) diff --git a/gas/configure.ac b/gas/configure.ac index 1e9bc350a3..4a84f16f51 100644 --- a/gas/configure.ac +++ b/gas/configure.ac @@ -190,12 +190,6 @@ for this_target in $target $canon_targets ; do generic_target=${cpu_type}-${target_vendor}-${target_os} case ${generic_target} in - i386-*-sco3.2v5*) - if test ${this_target} = $target; then - AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.]) - fi - ;; - i386-*-msdosdjgpp* \ | i386-*-go32* \ | i386-go32-rtems*) diff --git a/gas/configure.tgt b/gas/configure.tgt index 93e7994e6e..c43a4423f1 100644 --- a/gas/configure.tgt +++ b/gas/configure.tgt @@ -212,11 +212,8 @@ case ${generic_target} in h8300-*-elf) fmt=elf ;; h8300-*-linux*) fmt=elf em=linux ;; - i386-ibm-aix*) fmt=coff em=i386aix ;; - i386-sequent-bsd*) fmt=aout em=dynix ;; i386-*-beospe*) fmt=coff em=pe ;; i386-*-beos*) fmt=elf ;; - i386-*-coff) fmt=coff ;; i386-*-elfiamcu) fmt=elf arch=iamcu ;; i386-*-elf*) fmt=elf ;; i386-*-fuchsia*) fmt=elf ;; @@ -226,45 +223,23 @@ case ${generic_target} in case ${cpu} in x86_64*) arch=x86_64:32 ;; esac ;; - i386-*-netbsd0.8) fmt=aout em=386bsd ;; i386-*-netbsdpe*) fmt=coff em=pe ;; i386-*-netbsd*-gnu* | \ i386-*-knetbsd*-gnu | \ - i386-*-netbsdelf*) fmt=elf em=nbsd ;; - i386-*-netbsd*) - case ${cpu} in - x86_64) fmt=elf em=nbsd ;; - *) fmt=aout em=nbsd ;; - esac ;; - i386-*-openbsd[0-2].* | \ - i386-*-openbsd3.[0-2]) fmt=aout em=nbsd ;; + i386-*-netbsd* | \ i386-*-openbsd*) fmt=elf em=nbsd ;; - i386-*-linux*aout*) fmt=aout em=linux ;; - i386-*-linux*oldld) fmt=aout em=linux ;; - i386-*-linux*coff*) fmt=coff em=linux ;; i386-*-linux-*) fmt=elf em=linux case ${cpu}-${os} in x86_64*-linux-gnux32) arch=x86_64:32 ;; esac ;; i386-*-lynxos*) fmt=elf em=lynx ;; i386-*-redox*) fmt=elf ;; - i386-*-sysv[45]*) fmt=elf ;; i386-*-solaris*) fmt=elf em=solaris ;; - i386-*-freebsdaout*) fmt=aout em=386bsd ;; - i386-*-freebsd[12].*) fmt=aout em=386bsd ;; - i386-*-freebsd[12]) fmt=aout em=386bsd ;; i386-*-freebsd* \ | i386-*-kfreebsd*-gnu) fmt=elf em=freebsd ;; - i386-*-sysv*) fmt=coff ;; - i386-*-sco3.2v5*coff) fmt=coff ;; - i386-*-isc*) fmt=coff ;; - i386-*-sco3.2v5*) fmt=elf ;; - i386-*-sco3.2*) fmt=coff ;; - i386-*-vsta) fmt=aout ;; i386-*-msdosdjgpp* \ | i386-*-go32*) fmt=coff em=go32 ;; i386-*-gnu*) fmt=elf em=gnu ;; - i386-*-mach*) fmt=aout em=mach ;; i386-*-msdos*) fmt=aout ;; i386-*-moss*) fmt=elf ;; i386-*-pe) fmt=coff em=pe ;; diff --git a/gas/po/POTFILES.in b/gas/po/POTFILES.in index 91b1d4cd5b..1d0e6d9001 100644 --- a/gas/po/POTFILES.in +++ b/gas/po/POTFILES.in @@ -181,7 +181,6 @@ config/te-armeabi.h config/te-armfbsdeabi.h config/te-armfbsdvfp.h config/te-armlinuxeabi.h -config/te-dynix.h config/te-freebsd.h config/te-generic.h config/te-gnu.h @@ -189,11 +188,9 @@ config/te-go32.h config/te-hppa.h config/te-hppa64.h config/te-hppalinux64.h -config/te-i386aix.h config/te-ia64aix.h config/te-interix.h config/te-lynx.h -config/te-mach.h config/te-macos.h config/te-nbsd.h config/te-nbsd532.h diff --git a/include/ChangeLog b/include/ChangeLog index 9764aa80ca..2c2321d11e 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2018-04-18 Alan Modra + + * aout/dynix3.h: Delete. + 2018-04-17 Andrew Sadek Microblaze Target: PIC data text relative diff --git a/include/aout/dynix3.h b/include/aout/dynix3.h deleted file mode 100644 index ca6cf1ba4b..0000000000 --- a/include/aout/dynix3.h +++ /dev/null @@ -1,87 +0,0 @@ -/* a.out specifics for Sequent Symmetry running Dynix 3.x - - Copyright (C) 2001-2018 Free Software Foundation, Inc. - - 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. */ - -#ifndef A_OUT_DYNIX3_H -#define A_OUT_DYNIX3_H - -#define external_exec dynix_external_exec - -/* struct exec for Dynix 3 - - a_gdtbl and a_bootstrap are only for standalone binaries. - Shared data fields are not supported by the kernel as of Dynix 3.1, - but are supported by Dynix compiler programs. */ -struct dynix_external_exec - { - unsigned char e_info[4]; - unsigned char e_text[4]; - unsigned char e_data[4]; - unsigned char e_bss[4]; - unsigned char e_syms[4]; - unsigned char e_entry[4]; - unsigned char e_trsize[4]; - unsigned char e_drsize[4]; - unsigned char e_g_code[8]; - unsigned char e_g_data[8]; - unsigned char e_g_desc[8]; - unsigned char e_shdata[4]; - unsigned char e_shbss[4]; - unsigned char e_shdrsize[4]; - unsigned char e_bootstrap[44]; - unsigned char e_reserved[12]; - unsigned char e_version[4]; - }; - -#define EXEC_BYTES_SIZE (128) - -/* All executables under Dynix are demand paged with read-only text, - Thus no NMAGIC. - - ZMAGIC has a page of 0s at virtual 0, - XMAGIC has an invalid page at virtual 0. */ -#define OMAGIC 0x12eb /* .o */ -#define ZMAGIC 0x22eb /* zero @ 0, demand load */ -#define XMAGIC 0x32eb /* invalid @ 0, demand load */ -#define SMAGIC 0x42eb /* standalone, not supported here */ - -#define N_BADMAG(x) ((OMAGIC != N_MAGIC(x)) && \ - (ZMAGIC != N_MAGIC(x)) && \ - (XMAGIC != N_MAGIC(x)) && \ - (SMAGIC != N_MAGIC(x))) - -#define N_ADDRADJ(x) ((ZMAGIC == N_MAGIC(x) || XMAGIC == N_MAGIC(x)) ? 0x1000 : 0) - -#define N_TXTOFF(x) (EXEC_BYTES_SIZE) -#define N_DATOFF(x) (N_TXTOFF(x) + N_TXTSIZE(x)) -#define N_SHDATOFF(x) (N_DATOFF(x) + (x)->a_data) -#define N_TRELOFF(x) (N_SHDATOFF(x) + (x)->a_shdata) -#define N_DRELOFF(x) (N_TRELOFF(x) + (x)->a_trsize) -#define N_SHDRELOFF(x) (N_DRELOFF(x) + (x)->a_drsize) -#define N_SYMOFF(x) (N_SHDRELOFF(x) + (x)->a_shdrsize) -#define N_STROFF(x) (N_SYMOFF(x) + (x)->a_syms) - -#define N_TXTADDR(x) \ - (((OMAGIC == N_MAGIC(x)) || (SMAGIC == N_MAGIC(x))) ? 0 \ - : TEXT_START_ADDR + EXEC_BYTES_SIZE) - -#define N_TXTSIZE(x) \ - (((OMAGIC == N_MAGIC(x)) || (SMAGIC == N_MAGIC(x))) ? ((x)->a_text) \ - : ((x)->a_text - N_ADDRADJ(x) - EXEC_BYTES_SIZE)) - -#endif /* A_OUT_DYNIX3_H */ diff --git a/ld/ChangeLog b/ld/ChangeLog index 8514750299..a101489d18 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,40 @@ +2018-04-18 Alan Modra + + * Makefile.am: Remove support for assorted i386 aout and coff targets. + * configure.tgt: Likewise. + * testsuite/ld-discard/discard.exp: Likewise. + * testsuite/ld-elf/binutils.exp: Likewise. + * testsuite/ld-elf/tls.exp: Likewise. + * testsuite/ld-elf/tls_common.exp: Likewise. + * testsuite/ld-elfvers/vers.exp: Likewise. + * testsuite/ld-elfvsb/elfvsb.exp: Likewise. + * testsuite/ld-elfweak/elfweak.exp: Likewise. + * testsuite/ld-gc/abi-note.d: Likewise. + * testsuite/ld-gc/pr19167.d: Likewise. + * testsuite/ld-gc/pr20022.d: Likewise. + * testsuite/ld-gc/start.d: Likewise. + * testsuite/ld-gc/stop.d: Likewise. + * testsuite/ld-i386/i386.exp: Likewise. + * testsuite/ld-ifunc/binutils.exp: Likewise. + * testsuite/ld-ifunc/ifunc.exp: Likewise. + * testsuite/ld-linkonce/linkonce.exp: Likewise. + * testsuite/ld-plugin/lto.exp: Likewise. + * testsuite/ld-scripts/empty-address-2a.d: Likewise. + * testsuite/ld-scripts/empty-address-2b.d: Likewise. + * testsuite/ld-scripts/phdrs2.exp: Likewise. + * testsuite/ld-scripts/section-match-1.d: Likewise. + * testsuite/ld-shared/shared.exp: Likewise. + * testsuite/ld-size/size.exp: Likewise. + * testsuite/ld-sparc/sparc.exp: Likewise. + * emulparams/i386coff.sh: Delete. + * emulparams/i386linux.sh: Delete. + * emulparams/i386mach.sh: Delete. + * emulparams/i386nbsd.sh: Delete. + * emulparams/vsta.sh: Delete. + * scripttempl/i386coff.sc: Delete. + * Makefile.in: Regenerate. + * po/BLD-POTFILES.in: Regenerate. + 2018-04-17 Andrew Sadek Microblaze Target: PIC data text relative diff --git a/ld/Makefile.am b/ld/Makefile.am index 4ae2c0fa8a..9a4a49fc57 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -305,17 +305,12 @@ ALL_EMULATION_SOURCES = \ ehppalinux.c \ ehppanbsd.c \ ehppaobsd.c \ - ei386aout.c \ ei386beos.c \ ei386bsd.c \ - ei386coff.c \ ei386go32.c \ - ei386linux.c \ ei386lynx.c \ - ei386mach.c \ ei386moss.c \ ei386msdos.c \ - ei386nbsd.c \ ei386nto.c \ ei386pe.c \ ei386pe_posix.c \ @@ -381,7 +376,6 @@ ALL_EMULATION_SOURCES = \ ev850_rh850.c \ evanilla.c \ evaxnbsd.c \ - evsta.c \ exgateelf.c \ ez80.c \ ez8001.c \ @@ -1362,39 +1356,24 @@ ehppaobsd.c: $(srcdir)/emulparams/hppaobsd.sh \ $(ELF_DEPS) $(srcdir)/emultempl/hppaelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} -ei386aout.c: $(srcdir)/emulparams/i386aout.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386beos.c: $(srcdir)/emulparams/i386beos.sh \ $(srcdir)/emultempl/beos.em $(srcdir)/scripttempl/i386beos.sc ${GEN_DEPENDS} ei386bsd.c: $(srcdir)/emulparams/i386bsd.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} -ei386coff.c: $(srcdir)/emulparams/i386coff.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386coff.sc ${GEN_DEPENDS} - ei386go32.c: $(srcdir)/emulparams/i386go32.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386go32.sc ${GEN_DEPENDS} -ei386linux.c: $(srcdir)/emulparams/i386linux.sh \ - $(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386lynx.c: $(srcdir)/emulparams/i386lynx.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} -ei386mach.c: $(srcdir)/emulparams/i386mach.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386moss.c: $(srcdir)/emulparams/i386moss.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ei386msdos.c: $(srcdir)/emulparams/i386msdos.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386msdos.sc ${GEN_DEPENDS} -ei386nbsd.c: $(srcdir)/emulparams/i386nbsd.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386nto.c: $(srcdir)/emulparams/i386nto.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1673,9 +1652,6 @@ evanilla.c: $(srcdir)/emulparams/vanilla.sh \ evaxnbsd.c: $(srcdir)/emulparams/vaxnbsd.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} -evsta.c: $(srcdir)/emulparams/vsta.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - exgateelf.c: $(srcdir)/emulparams/xgateelf.sh \ $(srcdir)/emultempl/generic.em $(ELF_DEPS) \ $(srcdir)/scripttempl/elfxgate.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index 3353448552..53353cbef5 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -674,17 +674,12 @@ ALL_EMULATION_SOURCES = \ ehppalinux.c \ ehppanbsd.c \ ehppaobsd.c \ - ei386aout.c \ ei386beos.c \ ei386bsd.c \ - ei386coff.c \ ei386go32.c \ - ei386linux.c \ ei386lynx.c \ - ei386mach.c \ ei386moss.c \ ei386msdos.c \ - ei386nbsd.c \ ei386nto.c \ ei386pe.c \ ei386pe_posix.c \ @@ -750,7 +745,6 @@ ALL_EMULATION_SOURCES = \ ev850_rh850.c \ evanilla.c \ evaxnbsd.c \ - evsta.c \ exgateelf.c \ ez80.c \ ez8001.c \ @@ -1288,17 +1282,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppalinux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppanbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppaobsd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386aout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386beos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386bsd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386coff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386go32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386lynx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386mach.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386moss.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386msdos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386nbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386nto.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386pe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386pe_posix.Po@am__quote@ @@ -1367,7 +1356,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ev850_rh850.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evanilla.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evaxnbsd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evsta.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exgateelf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez80.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ez8001.Po@am__quote@ @@ -2872,39 +2860,24 @@ ehppaobsd.c: $(srcdir)/emulparams/hppaobsd.sh \ $(ELF_DEPS) $(srcdir)/emultempl/hppaelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} -ei386aout.c: $(srcdir)/emulparams/i386aout.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386beos.c: $(srcdir)/emulparams/i386beos.sh \ $(srcdir)/emultempl/beos.em $(srcdir)/scripttempl/i386beos.sc ${GEN_DEPENDS} ei386bsd.c: $(srcdir)/emulparams/i386bsd.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} -ei386coff.c: $(srcdir)/emulparams/i386coff.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386coff.sc ${GEN_DEPENDS} - ei386go32.c: $(srcdir)/emulparams/i386go32.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386go32.sc ${GEN_DEPENDS} -ei386linux.c: $(srcdir)/emulparams/i386linux.sh \ - $(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386lynx.c: $(srcdir)/emulparams/i386lynx.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} -ei386mach.c: $(srcdir)/emulparams/i386mach.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386moss.c: $(srcdir)/emulparams/i386moss.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ei386msdos.c: $(srcdir)/emulparams/i386msdos.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386msdos.sc ${GEN_DEPENDS} -ei386nbsd.c: $(srcdir)/emulparams/i386nbsd.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - ei386nto.c: $(srcdir)/emulparams/i386nto.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -3183,9 +3156,6 @@ evanilla.c: $(srcdir)/emulparams/vanilla.sh \ evaxnbsd.c: $(srcdir)/emulparams/vaxnbsd.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} -evsta.c: $(srcdir)/emulparams/vsta.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} - exgateelf.c: $(srcdir)/emulparams/xgateelf.sh \ $(srcdir)/emultempl/generic.em $(ELF_DEPS) \ $(srcdir)/scripttempl/elfxgate.sc ${GEN_DEPENDS} diff --git a/ld/configure.tgt b/ld/configure.tgt index 93bd07f548..0dde29e3e0 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -232,14 +232,9 @@ hppa*-*-netbsd*) targ_emul=hppanbsd ;; hppa*-*-openbsd*) targ_emul=hppaobsd ;; i[3-7]86-*-nto-qnx*) targ_emul=i386nto ;; -i[3-7]86-*-vsta) targ_emul=vsta ;; i[3-7]86-*-go32) targ_emul=i386go32 ;; i[3-7]86-*-msdosdjgpp*) targ_emul=i386go32 ;; -i[3-7]86-*-aix*) targ_emul=i386coff ;; -i[3-7]86-*-sco*) targ_emul=i386coff ;; -i[3-7]86-*-isc*) targ_emul=i386coff ;; i[3-7]86-*-lynxos*) targ_emul=i386lynx ;; -i[3-7]86-*-coff) targ_emul=i386coff ;; i[3-7]86-*-aros*) targ_emul=elf_i386 targ_extra_emuls=elf_iamcu ;; i[3-7]86-*-rdos*) targ_emul=elf_i386 @@ -249,28 +244,18 @@ x86_64-*-cloudabi*) targ_emul=elf_x86_64_cloudabi ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; i[3-7]86-*-bsd386) targ_emul=i386bsd ;; i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; -i[3-7]86-*-aout) targ_emul=i386aout ;; -i[3-7]86-*-linux*aout*) targ_emul=i386linux - targ_extra_emuls="elf_i386 elf_iamcu" - tdir_elf_iamcu=`echo ${targ_alias} | sed -e 's/aout//'` - tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'` ;; -i[3-7]86-*-linux*oldld) targ_emul=i386linux - targ_extra_emuls="elf_i386 elf_iamcu" ;; i[3-7]86-*-linux-*) targ_emul=elf_i386 - targ_extra_emuls="i386linux elf_iamcu" + targ_extra_emuls="elf_iamcu" targ64_extra_emuls="elf_x86_64 elf32_x86_64 elf_l1om elf_k1om" - targ64_extra_libpath="elf_x86_64 elf32_x86_64" - tdir_i386linux=${targ_alias}aout ;; + targ64_extra_libpath="elf_x86_64 elf32_x86_64" ;; x86_64-*-linux-gnux32) targ_emul=elf32_x86_64 - targ_extra_emuls="elf_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k1om" + targ_extra_emuls="elf_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om" targ_extra_libpath="elf_i386 elf_iamcu elf_x86_64 elf_l1om elf_k1om" - tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` tdir_elf_iamcu=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` ;; x86_64-*-linux-*) targ_emul=elf_x86_64 - targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k1om" + targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om" targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om" - tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'` tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;; i[3-7]86-*-redox*) targ_emul=elf_i386 targ_extra_emuls=elf_x86_64 ;; @@ -297,13 +282,11 @@ i[3-7]86-*-netbsdelf* | \ i[3-7]86-*-netbsd*-gnu* | \ i[3-7]86-*-knetbsd*-gnu) targ_emul=elf_i386 - targ_extra_emuls="elf_iamcu i386nbsd" ;; + targ_extra_emuls="elf_iamcu" ;; i[3-7]86-*-netbsdpe*) targ_emul=i386pe targ_extra_ofiles="deffilep.o pe-dll.o" ;; -i[3-7]86-*-netbsd*) targ_emul=i386nbsd - targ_extra_emuls=elf_i386 ;; x86_64-*-netbsd*) targ_emul=elf_x86_64 - targ_extra_emuls="elf_i386 elf_iamcu i386nbsd elf_l1om elf_k1om" + targ_extra_emuls="elf_i386 elf_iamcu elf_l1om elf_k1om" tdir_elf_iamcu=`echo ${targ_alias} | \ sed -e 's/x86_64/i386/'` case "${tdir_elf_iamcu}" in @@ -330,8 +313,6 @@ x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia*) tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;; i[3-7]86-*-kaos*) targ_emul=elf_i386 ;; -i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | i[3-7]86-*-freebsd[12]) - targ_emul=i386bsd ;; i[3-7]86-*-dragonfly*) targ_emul=elf_i386 targ_extra_emuls="elf_iamcu i386bsd" ;; x86_64-*-dragonfly*) targ_emul=elf_x86_64 @@ -349,9 +330,6 @@ x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) | sed -e 's/x86_64/i386/'` tdir_elf_i386=`echo ${targ_alias} \ | sed -e 's/x86_64/i386/'` ;; -i[3-7]86-*-sysv*) targ_emul=i386coff ;; -i[3-7]86-*-ptx*) targ_emul=i386coff ;; -i[3-7]86-*-mach*) targ_emul=i386mach ;; i[3-7]86-*-gnu*) targ_emul=elf_i386 targ_extra_emuls=elf_iamcu ;; i[3-7]86-*-msdos*) targ_emul=i386msdos; targ_extra_emuls=i386aout ;; diff --git a/ld/emulparams/i386coff.sh b/ld/emulparams/i386coff.sh deleted file mode 100644 index 3417b7d3e9..0000000000 --- a/ld/emulparams/i386coff.sh +++ /dev/null @@ -1,5 +0,0 @@ -SCRIPT_NAME=i386coff -OUTPUT_FORMAT="coff-i386" -TEXT_START_ADDR=0x1000000 -TARGET_PAGE_SIZE=0x1000000 -ARCH=i386 diff --git a/ld/emulparams/i386linux.sh b/ld/emulparams/i386linux.sh deleted file mode 100644 index 7b7463a112..0000000000 --- a/ld/emulparams/i386linux.sh +++ /dev/null @@ -1,9 +0,0 @@ -SCRIPT_NAME=aout -OUTPUT_FORMAT="a.out-i386-linux" -TARGET_PAGE_SIZE=0x1000 -TEXT_START_ADDR=0x1020 -case ${LD_FLAG} in - n|N) TEXT_START_ADDR=0 ;; -esac -ARCH=i386 -TEMPLATE_NAME=linux diff --git a/ld/emulparams/i386mach.sh b/ld/emulparams/i386mach.sh deleted file mode 100644 index dc446021e2..0000000000 --- a/ld/emulparams/i386mach.sh +++ /dev/null @@ -1,9 +0,0 @@ -SCRIPT_NAME=aout -OUTPUT_FORMAT="a.out-mach3" -TEXT_START_ADDR=0x10020 -case ${LD_FLAG} in - n|N) TEXT_START_ADDR=0x10000 ;; -esac -SEGMENT_SIZE=0x1000 -PAD_TEXT=t -ARCH=i386 diff --git a/ld/emulparams/i386nbsd.sh b/ld/emulparams/i386nbsd.sh deleted file mode 100644 index a9e6a38303..0000000000 --- a/ld/emulparams/i386nbsd.sh +++ /dev/null @@ -1,6 +0,0 @@ -SCRIPT_NAME=aout -TEXT_START_ADDR=0x1020 -OUTPUT_FORMAT="a.out-i386-netbsd" -TARGET_PAGE_SIZE=0x1000 -ARCH=i386 -EXECUTABLE_SYMBOLS='__DYNAMIC = 0;' diff --git a/ld/emulparams/vsta.sh b/ld/emulparams/vsta.sh deleted file mode 100644 index 0610f305bb..0000000000 --- a/ld/emulparams/vsta.sh +++ /dev/null @@ -1,10 +0,0 @@ -SCRIPT_NAME=aout -OUTPUT_FORMAT="a.out-i386" -TEXT_START_ADDR=0x1020 -TARGET_PAGE_SIZE=0x1000 -SEGMENT_SIZE=0x400000 -case ${LD_FLAG} in - n|N) TEXT_START_ADDR=0 ;; -esac -ARCH=i386 - diff --git a/ld/po/BLD-POTFILES.in b/ld/po/BLD-POTFILES.in index 732cfb9a6a..5de4e8d175 100644 --- a/ld/po/BLD-POTFILES.in +++ b/ld/po/BLD-POTFILES.in @@ -220,17 +220,12 @@ ehppaelf.c ehppalinux.c ehppanbsd.c ehppaobsd.c -ei386aout.c ei386beos.c ei386bsd.c -ei386coff.c ei386go32.c -ei386linux.c ei386lynx.c -ei386mach.c ei386moss.c ei386msdos.c -ei386nbsd.c ei386nto.c ei386pe.c ei386pe_posix.c @@ -299,7 +294,6 @@ ev850.c ev850_rh850.c evanilla.c evaxnbsd.c -evsta.c exgateelf.c ez80.c ez8001.c diff --git a/ld/scripttempl/i386coff.sc b/ld/scripttempl/i386coff.sc deleted file mode 100644 index 7dd82b285e..0000000000 --- a/ld/scripttempl/i386coff.sc +++ /dev/null @@ -1,57 +0,0 @@ -# Linker script for 386 COFF. This works on SVR3.2 and SCO Unix 3.2.2. -# Ian Taylor . -# -# Copyright (C) 2014-2018 Free Software Foundation, Inc. -# -# Copying and distribution of this file, with or without modification, -# are permitted in any medium without royalty provided the copyright -# notice and this notice are preserved. - -test -z "$ENTRY" && ENTRY=_start -# These are substituted in as variables in order to get '}' in a shell -# conditional expansion. -INIT='.init : { *(.init) }' -FINI='.fini : { *(.fini) }' - -cat <