+2018-04-16 Alan Modra <amodra@gmail.com>
+
+ * Makefile.am: Remove m68k-aout and m68k-coff support.
+ * aoutf1.h: Likewise.
+ * aoutx.h: Likewise.
+ * archive.c: Likewise.
+ * bfd-in.h: Likewise.
+ * bfd.c: Likewise.
+ * coffcode.h: Likewise.
+ * coffswap.h: Likewise.
+ * config.bfd: Likewise.
+ * configure.ac: Likewise.
+ * configure.host: Likewise.
+ * doc/bfd.texinfo: Likewise.
+ * doc/bfdint.texi: Likewise.
+ * freebsd.h: Likewise.
+ * gen-aout.c: Likewise.
+ * hpux-core.c: Likewise.
+ * libaout.h: Likewise.
+ * libbfd-in.h: Likewise.
+ * pdp11.c: Likewise.
+ * peicode.h: Likewise.
+ * riscix.c: Likewise.
+ * targets.c: Likewise.
+ * aout0.c: Delete.
+ * coff-apollo.c: Delete.
+ * coff-aux.c: Delete.
+ * coff-m68k.c: Delete.
+ * coff-svm68k.c: Delete.
+ * coff-u68k.c: Delete.
+ * hosts/delta68.h: Delete.
+ * hosts/hp300bsd.h: Delete.
+ * hosts/m68kaux.h: Delete.
+ * hosts/news.h: Delete.
+ * hp300bsd.c: Delete.
+ * hp300hpux.c: Delete.
+ * liboasys.h: Delete.
+ * m68k4knetbsd.c: Delete.
+ * m68klinux.c: Delete.
+ * m68knetbsd.c: Delete.
+ * oasys.c: Delete.
+ * versados.c: Delete.
+ * Makefile.in: Regenerate.
+ * bfd-in2.h: Regenerate.
+ * configure: Regenerate.
+ * libbfd.h: Regenerate.
+ * po/SRC-POTFILES.in: Regenerate.
+
2018-04-16 Alan Modra <amodra@gmail.com>
* Makefile.am: Remove sh5 and sh64 support.
aout-ns32k.lo \
aout-sparcle.lo \
aout-tic30.lo \
- aout0.lo \
aout32.lo \
armnetbsd.lo \
cf-i386lynx.lo \
cf-sparclynx.lo \
- coff-apollo.lo \
coff-arm.lo \
- coff-aux.lo \
coff-go32.lo \
coff-i386.lo \
- coff-m68k.lo \
coff-mips.lo \
coff-rs6000.lo \
coff-sh.lo \
coff-sparc.lo \
coff-stgo32.lo \
- coff-svm68k.lo \
coff-tic30.lo \
coff-tic4x.lo \
coff-tic54x.lo \
coff-tic80.lo \
- coff-u68k.lo \
coff-z80.lo \
coff-z8k.lo \
coffgen.lo \
elfxx-tilegx.lo \
epoc-pe-arm.lo \
epoc-pei-arm.lo \
- hp300bsd.lo \
- hp300hpux.lo \
i386aout.lo \
i386bsd.lo \
i386dynix.lo \
i386msdos.lo \
i386netbsd.lo \
i386os9k.lo \
- m68k4knetbsd.lo \
- m68klinux.lo \
- m68knetbsd.lo \
mach-o.lo \
mach-o-i386.lo \
mach-o-arm.lo \
mipsbsd.lo \
ns32knetbsd.lo \
- oasys.lo \
pc532-mach.lo \
pdp11.lo \
pe-arm-wince.lo \
sunos.lo \
vax1knetbsd.lo \
vaxnetbsd.lo \
- versados.lo \
vms-lib.lo \
vms-misc.lo \
wasm-module.lo \
aout-ns32k.c \
aout-sparcle.c \
aout-tic30.c \
- aout0.c \
aout32.c \
armnetbsd.c \
cf-i386lynx.c \
cf-sparclynx.c \
- coff-apollo.c \
coff-arm.c \
- coff-aux.c \
coff-go32.c \
coff-i386.c \
- coff-m68k.c \
coff-mips.c \
coff-rs6000.c \
coff-sh.c \
coff-sparc.c \
coff-stgo32.c \
- coff-svm68k.c \
coff-tic30.c \
coff-tic4x.c \
coff-tic54x.c \
coff-tic80.c \
- coff-u68k.c \
coff-z80.c \
coff-z8k.c \
coffgen.c \
elfxx-tilegx.c \
epoc-pe-arm.c \
epoc-pei-arm.c \
- hp300bsd.c \
- hp300hpux.c \
i386aout.c \
i386bsd.c \
i386dynix.c \
i386msdos.c \
i386netbsd.c \
i386os9k.c \
- m68k4knetbsd.c \
- m68klinux.c \
- m68knetbsd.c \
mach-o.c \
mach-o-i386.c \
mach-o-arm.c \
mipsbsd.c \
ns32knetbsd.c \
- oasys.c \
pc532-mach.c \
pdp11.c \
pe-arm-wince.c \
sunos.c \
vax1knetbsd.c \
vaxnetbsd.c \
- versados.c \
vms-lib.c \
vms-misc.c \
wasm-module.c \
elf64-hppa.h elfcode.h elfcore.h \
freebsd.h genlink.h go32stub.h \
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
- liboasys.h libpei.h libxcoff.h mach-o.h \
+ libpei.h libxcoff.h mach-o.h \
netbsd.h ns32k.h \
pef.h pef-traceback.h peicode.h som.h version.h \
vms.h xsym.h
aout-ns32k.lo \
aout-sparcle.lo \
aout-tic30.lo \
- aout0.lo \
aout32.lo \
armnetbsd.lo \
cf-i386lynx.lo \
cf-sparclynx.lo \
- coff-apollo.lo \
coff-arm.lo \
- coff-aux.lo \
coff-go32.lo \
coff-i386.lo \
- coff-m68k.lo \
coff-mips.lo \
coff-rs6000.lo \
coff-sh.lo \
coff-sparc.lo \
coff-stgo32.lo \
- coff-svm68k.lo \
coff-tic30.lo \
coff-tic4x.lo \
coff-tic54x.lo \
coff-tic80.lo \
- coff-u68k.lo \
coff-z80.lo \
coff-z8k.lo \
coffgen.lo \
elfxx-tilegx.lo \
epoc-pe-arm.lo \
epoc-pei-arm.lo \
- hp300bsd.lo \
- hp300hpux.lo \
i386aout.lo \
i386bsd.lo \
i386dynix.lo \
i386msdos.lo \
i386netbsd.lo \
i386os9k.lo \
- m68k4knetbsd.lo \
- m68klinux.lo \
- m68knetbsd.lo \
mach-o.lo \
mach-o-i386.lo \
mach-o-arm.lo \
mipsbsd.lo \
ns32knetbsd.lo \
- oasys.lo \
pc532-mach.lo \
pdp11.lo \
pe-arm-wince.lo \
sunos.lo \
vax1knetbsd.lo \
vaxnetbsd.lo \
- versados.lo \
vms-lib.lo \
vms-misc.lo \
wasm-module.lo \
aout-ns32k.c \
aout-sparcle.c \
aout-tic30.c \
- aout0.c \
aout32.c \
armnetbsd.c \
cf-i386lynx.c \
cf-sparclynx.c \
- coff-apollo.c \
coff-arm.c \
- coff-aux.c \
coff-go32.c \
coff-i386.c \
- coff-m68k.c \
coff-mips.c \
coff-rs6000.c \
coff-sh.c \
coff-sparc.c \
coff-stgo32.c \
- coff-svm68k.c \
coff-tic30.c \
coff-tic4x.c \
coff-tic54x.c \
coff-tic80.c \
- coff-u68k.c \
coff-z80.c \
coff-z8k.c \
coffgen.c \
elfxx-tilegx.c \
epoc-pe-arm.c \
epoc-pei-arm.c \
- hp300bsd.c \
- hp300hpux.c \
i386aout.c \
i386bsd.c \
i386dynix.c \
i386msdos.c \
i386netbsd.c \
i386os9k.c \
- m68k4knetbsd.c \
- m68klinux.c \
- m68knetbsd.c \
mach-o.c \
mach-o-i386.c \
mach-o-arm.c \
mipsbsd.c \
ns32knetbsd.c \
- oasys.c \
pc532-mach.c \
pdp11.c \
pe-arm-wince.c \
sunos.c \
vax1knetbsd.c \
vaxnetbsd.c \
- versados.c \
vms-lib.c \
vms-misc.c \
wasm-module.c \
elf64-hppa.h elfcode.h elfcore.h \
freebsd.h genlink.h go32stub.h \
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
- liboasys.h libpei.h libxcoff.h mach-o.h \
+ libpei.h libxcoff.h mach-o.h \
netbsd.h ns32k.h \
pef.h pef-traceback.h peicode.h som.h version.h \
vms.h xsym.h
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-ns32k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-sparcle.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-tic30.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout0.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout32.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archive.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cf-sparclynx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cisco-core.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-alpha.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-apollo.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-arm.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-aux.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-bfd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-go32.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-i386.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-m68k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-mips.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-rs6000.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-sh.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-sparc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-stgo32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-svm68k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic30.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic4x.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic54x.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic80.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-u68k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-x86_64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z80.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z8k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoc-pei-arm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hp300bsd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hp300hpux.Plo@am__quote@
@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)/libbfd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linker.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lynx-core.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68k4knetbsd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68klinux.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68knetbsd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-aarch64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-arm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-i386.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmo.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netbsd-core.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ns32knetbsd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oasys.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opncls.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf-core.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc532-mach.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vax1knetbsd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vaxnetbsd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verilog.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versados.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-alpha.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-lib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-misc.Plo@am__quote@
+++ /dev/null
-/* BFD backend for SunOS style a.out with flags set to 0
- 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. */
-
-#define TARGETNAME "a.out-zero-big"
-
-/* 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 (aout0_be_,OP)
-
-#include "sysdep.h"
-#include "bfd.h"
-
-#define MY_exec_hdr_flags 0
-
-#define MACHTYPE_OK(mtype) \
- ((mtype) == M_UNKNOWN || (mtype) == M_68010 || (mtype) == M_68020)
-
-/* Include the usual a.out support. */
-#include "aoutf1.h"
probably no longer reject a NewsOS object. <ian@cygnus.com>. */
#ifndef MACHTYPE_OK
#define MACHTYPE_OK(mtype) \
- (((mtype) == M_SPARC && bfd_lookup_arch (bfd_arch_sparc, 0) != NULL) \
- || (((mtype) == M_UNKNOWN || (mtype) == M_68010 || (mtype) == M_68020) \
- && bfd_lookup_arch (bfd_arch_m68k, 0) != NULL))
+ ((mtype) == M_SPARC && bfd_lookup_arch (bfd_arch_sparc, 0) != NULL)
#endif
/* The file @code{aoutf1.h} contains the code for BFD's
switch (machtype)
{
- case M_UNKNOWN:
- /* Some Sun3s make magic numbers without cpu types in them, so
- we'll default to the 68000. */
- arch = bfd_arch_m68k;
- machine = bfd_mach_m68000;
- break;
-
- case M_68010:
- case M_HP200:
- arch = bfd_arch_m68k;
- machine = bfd_mach_m68010;
- break;
-
- case M_68020:
- case M_HP300:
- arch = bfd_arch_m68k;
- machine = bfd_mach_m68020;
- break;
-
case M_SPARC:
arch = bfd_arch_sparc;
machine = 0;
machine = 0;
break;
- case M_HPUX:
- arch = bfd_arch_m68k;
- machine = 0;
- break;
-
default:
arch = bfd_arch_obscure;
machine = 0;
/* Magic number, maestro, please! */
switch (bfd_get_arch (abfd))
{
- case bfd_arch_m68k:
- switch (bfd_get_mach (abfd))
- {
- case bfd_mach_m68000:
- N_SET_MACHTYPE (execp, M_UNKNOWN);
- break;
- case bfd_mach_m68010:
- N_SET_MACHTYPE (execp, M_68010);
- break;
- default:
- case bfd_mach_m68020:
- N_SET_MACHTYPE (execp, M_68020);
- break;
- }
- break;
case bfd_arch_sparc:
switch (bfd_get_mach (abfd))
{
adata (abfd).segment_size = 0x2000;
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
return TRUE;
- case bfd_arch_m68k:
- adata (abfd).page_size = 0x2000;
- adata (abfd).segment_size = 0x20000;
- adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
- return TRUE;
}
}
oldrawptr = abfd->tdata.aout_data;
abfd->tdata.aout_data = rawptr;
- /* Copy the contents of the old tdata struct.
- In particular, we want the subformat, since for hpux it was set in
- hp300hpux.c:swap_exec_header_in and will be used in
- hp300hpux.c:callback. */
+ /* Copy the contents of the old tdata struct. */
if (oldrawptr != NULL)
*abfd->tdata.aout_data = *oldrawptr;
arch_flags = M_SPARCLET;
break;
- case bfd_arch_m68k:
- switch (machine)
- {
- case 0: arch_flags = M_68010; break;
- case bfd_mach_m68000: arch_flags = M_UNKNOWN; *unknown = FALSE; break;
- case bfd_mach_m68010: arch_flags = M_68010; break;
- case bfd_mach_m68020: arch_flags = M_68020; break;
- default: arch_flags = M_UNKNOWN; break;
- }
- break;
-
case bfd_arch_i386:
if (machine == 0
|| machine == bfd_mach_i386_i386
FIXME: At this point we do not know how much space the symbol
table will require. This will not work for any (nonstandard)
a.out target that needs to know the symbol table size before it
- can compute the relocation file positions. This may or may not
- be the case for the hp300hpux target, for example. */
+ can compute the relocation file positions. */
(*callback) (abfd, &aout_info.treloff, &aout_info.dreloff,
&aout_info.symoff);
obj_textsec (abfd)->rel_filepos = aout_info.treloff;
return TRUE;
}
\f
-/* Returns FALSE on error, TRUE otherwise. */
-/* Flavor 2 of a bsd armap, similar to bfd_slurp_bsd_armap except the
- header is in a slightly different order and the map name is '/'.
- This flavour is used by hp300hpux. */
-
-#define HPUX_SYMDEF_COUNT_SIZE 2
-
-bfd_boolean
-bfd_slurp_bsd_armap_f2 (bfd *abfd)
-{
- struct areltdata *mapdata;
- char nextname[17];
- unsigned int counter;
- bfd_byte *raw_armap, *rbase;
- struct artdata *ardata = bfd_ardata (abfd);
- char *stringbase;
- unsigned int stringsize;
- unsigned int left;
- bfd_size_type amt;
- carsym *set;
- int i = bfd_bread (nextname, 16, abfd);
-
- if (i == 0)
- return TRUE;
- if (i != 16)
- return FALSE;
-
- /* The archive has at least 16 bytes in it. */
- if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0)
- return FALSE;
-
- if (CONST_STRNEQ (nextname, "__.SYMDEF ")
- || CONST_STRNEQ (nextname, "__.SYMDEF/ ")) /* Old Linux archives. */
- return do_slurp_bsd_armap (abfd);
-
- if (! CONST_STRNEQ (nextname, "/ "))
- {
- bfd_has_map (abfd) = FALSE;
- return TRUE;
- }
-
- mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
- if (mapdata == NULL)
- return FALSE;
-
- if (mapdata->parsed_size < HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE)
- {
- free (mapdata);
- wrong_format:
- bfd_set_error (bfd_error_wrong_format);
- byebye:
- return FALSE;
- }
- left = mapdata->parsed_size - HPUX_SYMDEF_COUNT_SIZE - BSD_STRING_COUNT_SIZE;
-
- amt = mapdata->parsed_size;
- free (mapdata);
-
- raw_armap = (bfd_byte *) bfd_zalloc (abfd, amt);
- if (raw_armap == NULL)
- goto byebye;
-
- if (bfd_bread (raw_armap, amt, abfd) != amt)
- {
- if (bfd_get_error () != bfd_error_system_call)
- bfd_set_error (bfd_error_malformed_archive);
- goto byebye;
- }
-
- ardata->symdef_count = H_GET_16 (abfd, raw_armap);
-
- ardata->cache = 0;
-
- stringsize = H_GET_32 (abfd, raw_armap + HPUX_SYMDEF_COUNT_SIZE);
- if (stringsize > left)
- goto wrong_format;
- left -= stringsize;
-
- /* Skip sym count and string sz. */
- stringbase = ((char *) raw_armap
- + HPUX_SYMDEF_COUNT_SIZE
- + BSD_STRING_COUNT_SIZE);
- rbase = (bfd_byte *) stringbase + stringsize;
- amt = ardata->symdef_count * BSD_SYMDEF_SIZE;
- if (amt > left)
- goto wrong_format;
-
- ardata->symdefs = (struct carsym *) bfd_alloc (abfd, amt);
- if (!ardata->symdefs)
- return FALSE;
-
- for (counter = 0, set = ardata->symdefs;
- counter < ardata->symdef_count;
- counter++, set++, rbase += BSD_SYMDEF_SIZE)
- {
- set->name = H_GET_32 (abfd, rbase) + stringbase;
- set->file_offset = H_GET_32 (abfd, rbase + BSD_SYMDEF_OFFSET_SIZE);
- }
-
- ardata->first_file_filepos = bfd_tell (abfd);
- /* Pad to an even boundary if you have to. */
- ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
- /* FIXME, we should provide some way to free raw_ardata when
- we are done using the strings from it. For now, it seems
- to be allocated on an objalloc anyway... */
- bfd_has_map (abfd) = TRUE;
- return TRUE;
-}
-\f
/** Extended name table.
Normally archives support only 14-character filenames.
extern bfd_boolean bfd_i386linux_size_dynamic_sections
(bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_m68klinux_size_dynamic_sections
- (bfd *, struct bfd_link_info *);
extern bfd_boolean bfd_sparclinux_size_dynamic_sections
(bfd *, struct bfd_link_info *);
extern bfd_boolean bfd_coff_set_symbol_class
(bfd *, struct bfd_symbol *, unsigned int);
-extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
- (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
-
/* ARM VFP11 erratum workaround support. */
typedef enum
{
extern bfd_boolean bfd_i386linux_size_dynamic_sections
(bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_m68klinux_size_dynamic_sections
- (bfd *, struct bfd_link_info *);
extern bfd_boolean bfd_sparclinux_size_dynamic_sections
(bfd *, struct bfd_link_info *);
extern bfd_boolean bfd_coff_set_symbol_class
(bfd *, struct bfd_symbol *, unsigned int);
-extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
- (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
-
/* ARM VFP11 erratum workaround support. */
typedef enum
{
{
struct aout_data_struct *aout_data;
struct artdata *aout_ar_data;
- struct _oasys_data *oasys_obj_data;
- struct _oasys_ar_data *oasys_ar_data;
struct coff_tdata *coff_obj_data;
struct pe_tdata *pe_obj_data;
struct xcoff_tdata *xcoff_obj_data;
bfd_target_ecoff_flavour,
bfd_target_xcoff_flavour,
bfd_target_elf_flavour,
- bfd_target_oasys_flavour,
bfd_target_tekhex_flavour,
bfd_target_srec_flavour,
bfd_target_verilog_flavour,
. {
. struct aout_data_struct *aout_data;
. struct artdata *aout_ar_data;
-. struct _oasys_data *oasys_obj_data;
-. struct _oasys_ar_data *oasys_ar_data;
. struct coff_tdata *coff_obj_data;
. struct pe_tdata *pe_obj_data;
. struct xcoff_tdata *xcoff_obj_data;
+++ /dev/null
-/* BFD back-end for Apollo 68000 COFF binaries.
- Copyright (C) 1990-2018 Free Software Foundation, Inc.
- By Troy Rollo (troy@cbme.unsw.edu.au)
- Based on m68k standard COFF version 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 "coff/apollo.h"
-#include "coff/internal.h"
-#include "libcoff.h"
-
-#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
-
-#ifdef ONLY_DECLARE_RELOCS
-extern reloc_howto_type apollocoff_howto_table[];
-#else
-reloc_howto_type apollocoff_howto_table[] =
- {
- HOWTO (R_RELBYTE, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, 0, "8", TRUE, 0x000000ff,0x000000ff, FALSE),
- HOWTO (R_RELWORD, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, 0, "16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
- HOWTO (R_RELLONG, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, 0, "32", TRUE, 0xffffffff,0xffffffff, FALSE),
- HOWTO (R_PCRBYTE, 0, 0, 8, TRUE, 0, complain_overflow_signed, 0, "DISP8", TRUE, 0x000000ff,0x000000ff, FALSE),
- HOWTO (R_PCRWORD, 0, 1, 16, TRUE, 0, complain_overflow_signed, 0, "DISP16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
- HOWTO (R_PCRLONG, 0, 2, 32, TRUE, 0, complain_overflow_signed, 0, "DISP32", TRUE, 0xffffffff,0xffffffff, FALSE),
- HOWTO (R_RELLONG_NEG, 0, -2, 32, FALSE, 0, complain_overflow_bitfield, 0, "-32", TRUE, 0xffffffff,0xffffffff, FALSE),
- };
-#endif /* not ONLY_DECLARE_RELOCS */
-
-#ifndef BADMAG
-#define BADMAG(x) M68KBADMAG(x)
-#endif
-#define APOLLO_M68 1 /* Customize coffcode.h */
-
-/* Turn a howto into a reloc number. */
-
-extern void apollo_rtype2howto (arelent *, int);
-extern int apollo_howto2rtype (reloc_howto_type *);
-#ifndef ONLY_DECLARE_RELOCS
-
-void
-apollo_rtype2howto (arelent *internal, int relocentry)
-{
- switch (relocentry)
- {
- case R_RELBYTE: internal->howto = apollocoff_howto_table + 0; break;
- case R_RELWORD: internal->howto = apollocoff_howto_table + 1; break;
- case R_RELLONG: internal->howto = apollocoff_howto_table + 2; break;
- case R_PCRBYTE: internal->howto = apollocoff_howto_table + 3; break;
- case R_PCRWORD: internal->howto = apollocoff_howto_table + 4; break;
- case R_PCRLONG: internal->howto = apollocoff_howto_table + 5; break;
- case R_RELLONG_NEG: internal->howto = apollocoff_howto_table + 6; break;
- }
-}
-
-int
-apollo_howto2rtype (reloc_howto_type *internal)
-{
- if (internal->pc_relative)
- {
- switch (internal->bitsize)
- {
- case 32: return R_PCRLONG;
- case 16: return R_PCRWORD;
- case 8: return R_PCRBYTE;
- }
- }
- else
- {
- switch (internal->bitsize)
- {
- case 32: return R_RELLONG;
- case 16: return R_RELWORD;
- case 8: return R_RELBYTE;
- }
- }
- return R_RELLONG;
-}
-#endif /* not ONLY_DECLARE_RELOCS */
-
-#define RTYPE2HOWTO(internal, relocentry) \
- apollo_rtype2howto (internal, (relocentry)->r_type)
-
-#define SELECT_RELOC(external, internal) \
- external.r_type = apollo_howto2rtype (internal);
-
-#define bfd_pe_print_pdata NULL
-
-#include "coffcode.h"
-
-#ifndef TARGET_SYM
-#define TARGET_SYM m68k_coff_apollo_vec
-#endif
-
-#ifndef TARGET_NAME
-#define TARGET_NAME "apollo-m68k"
-#endif
-
-#ifdef NAMES_HAVE_UNDERSCORE
-CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, 0, 0, '_', NULL, COFF_SWAP_TABLE)
-#else
-CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, 0, 0, 0, NULL, COFF_SWAP_TABLE)
-#endif
+++ /dev/null
-/* BFD back-end for Apple M68K COFF A/UX 3.x files.
- Copyright (C) 1996-2018 Free Software Foundation, Inc.
- Written by Richard Henderson <rth@tamu.edu>.
-
- 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_SYM m68k_coff_aux_vec
-#define TARGET_NAME "coff-m68k-aux"
-
-#ifndef TARG_AUX
-#define TARG_AUX
-#endif
-
-#define COFF_LONG_FILENAMES
-
-/* 4k pages */
-#define COFF_PAGE_SIZE 0x1000
-
-/* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */
-#define BSS_NOLOAD_IS_SHARED_LIBRARY
-
-#define STATIC_RELOCS
-
-#define COFF_COMMON_ADDEND
-
-#include "sysdep.h"
-#include "bfd.h"
-
-#define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
-static bfd_boolean
-coff_m68k_aux_link_add_one_symbol
- (struct bfd_link_info *, bfd *, const char *, flagword, asection *,
- bfd_vma, const char *, bfd_boolean, bfd_boolean,
- struct bfd_link_hash_entry **);
-
-#ifndef bfd_pe_print_pdata
-#define bfd_pe_print_pdata NULL
-#endif
-
-#include "coff/aux-coff.h" /* override coff/internal.h and coff/m68k.h */
-#include "coff-m68k.c"
-
-/* We need non-absolute symbols to override absolute symbols. This
- mirrors Apple's "solution" to let a static library symbol override
- a shared library symbol. On the whole not a good thing, given how
- shared libraries work here, but can work if you are careful with
- what you include in the shared object. */
-
-static bfd_boolean
-coff_m68k_aux_link_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 bfd_link_hash_entry *h, *inh, *t;
-
- if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0
- && !bfd_is_und_section (section)
- && !bfd_is_com_section (section))
- {
- /* The new symbol is a definition or an indirect definition */
-
- /* This bit copied from linker.c */
- if (hashp != NULL && *hashp != NULL)
- h = *hashp;
- else
- {
- h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
- if (h == NULL)
- {
- if (hashp != NULL)
- *hashp = NULL;
- return FALSE;
- }
- }
-
- if (hashp != (struct bfd_link_hash_entry **) NULL)
- *hashp = h;
- /* end duplication from linker.c */
-
- t = h;
- inh = NULL;
- if (h->type == bfd_link_hash_indirect)
- {
- inh = h->u.i.link;
- t = inh;
- }
-
- if (t->type == bfd_link_hash_defined)
- {
- asection *msec = t->u.def.section;
- bfd_boolean special = FALSE;
-
- if (bfd_is_abs_section (msec) && !bfd_is_abs_section (section))
- {
- t->u.def.section = section;
- t->u.def.value = value;
- special = TRUE;
- }
- else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
- special = TRUE;
-
- if (special)
- {
- if (info->notice_all
- || (info->notice_hash != NULL
- && bfd_hash_lookup (info->notice_hash, name,
- FALSE, FALSE) != NULL))
- {
- if (!(*info->callbacks->notice) (info, h, inh,
- abfd, section, value, flags))
- return FALSE;
- }
-
- return TRUE;
- }
- }
- }
-
- /* If we didn't exit early, finish processing in the generic routine */
- return _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section,
- value, string, copy, collect,
- hashp);
-}
+++ /dev/null
-/* BFD back-end for Motorola 68000 COFF 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 "coff/m68k.h"
-#include "coff/internal.h"
-#include "libcoff.h"
-
-/* This source file is compiled multiple times for various m68k COFF
- variants. The following macros control its behaviour:
-
- TARGET_SYM
- The C name of the BFD target vector. The default is m68k_coff_vec.
- TARGET_NAME
- The user visible target name. The default is "coff-m68k".
- NAMES_HAVE_UNDERSCORE
- Whether symbol names have an underscore.
- ONLY_DECLARE_RELOCS
- Only declare the relocation howto array. Don't actually compile
- it. The actual array will be picked up in another version of the
- file.
- STATIC_RELOCS
- Make the relocation howto array, and associated functions, static.
- COFF_COMMON_ADDEND
- If this is defined, then, for a relocation against a common
- symbol, the object file holds the value (the size) of the common
- symbol. If this is not defined, then, for a relocation against a
- common symbol, the object file holds zero. */
-
-#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
-
-#ifndef COFF_PAGE_SIZE
-/* The page size is a guess based on ELF. */
-#define COFF_PAGE_SIZE 0x2000
-#endif
-
-#ifndef COFF_COMMON_ADDEND
-#define RELOC_SPECIAL_FN 0
-#else
-static bfd_reloc_status_type m68kcoff_common_addend_special_fn
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-
-#define RELOC_SPECIAL_FN m68kcoff_common_addend_special_fn
-#endif
-
-static bfd_boolean m68k_coff_is_local_label_name (bfd *, const char *);
-
-/* On the delta, a symbol starting with L% is local. We won't see
- such a symbol on other platforms, so it should be safe to always
- consider it local here. */
-
-static bfd_boolean
-m68k_coff_is_local_label_name (bfd *abfd, const char *name)
-{
- if (name[0] == 'L' && name[1] == '%')
- return TRUE;
-
- return _bfd_coff_is_local_label_name (abfd, name);
-}
-
-#ifndef STATIC_RELOCS
-/* Clean up namespace. */
-#define m68kcoff_howto_table _bfd_m68kcoff_howto_table
-#define m68k_rtype2howto _bfd_m68kcoff_rtype2howto
-#define m68k_howto2rtype _bfd_m68kcoff_howto2rtype
-#define m68k_reloc_type_lookup _bfd_m68kcoff_reloc_type_lookup
-#define m68k_reloc_name_lookup _bfd_m68kcoff_reloc_name_lookup
-#endif
-
-#ifdef ONLY_DECLARE_RELOCS
-extern reloc_howto_type m68kcoff_howto_table[];
-#else
-#ifdef STATIC_RELOCS
-static
-#endif
-reloc_howto_type m68kcoff_howto_table[] =
- {
- HOWTO (R_RELBYTE, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "8", TRUE, 0x000000ff,0x000000ff, FALSE),
- HOWTO (R_RELWORD, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
- HOWTO (R_RELLONG, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "32", TRUE, 0xffffffff,0xffffffff, FALSE),
- HOWTO (R_PCRBYTE, 0, 0, 8, TRUE, 0, complain_overflow_signed, RELOC_SPECIAL_FN, "DISP8", TRUE, 0x000000ff,0x000000ff, FALSE),
- HOWTO (R_PCRWORD, 0, 1, 16, TRUE, 0, complain_overflow_signed, RELOC_SPECIAL_FN, "DISP16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
- HOWTO (R_PCRLONG, 0, 2, 32, TRUE, 0, complain_overflow_signed, RELOC_SPECIAL_FN, "DISP32", TRUE, 0xffffffff,0xffffffff, FALSE),
- HOWTO (R_RELLONG_NEG, 0, -2, 32, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "-32", TRUE, 0xffffffff,0xffffffff, FALSE),
- };
-#endif /* not ONLY_DECLARE_RELOCS */
-
-#ifndef BADMAG
-#define BADMAG(x) M68KBADMAG(x)
-#endif
-#define M68 1 /* Customize coffcode.h */
-
-/* Turn a howto into a reloc number */
-
-#ifdef ONLY_DECLARE_RELOCS
-extern void m68k_rtype2howto (arelent *internal, int relocentry);
-extern int m68k_howto2rtype (reloc_howto_type *);
-extern reloc_howto_type * m68k_reloc_type_lookup
- (bfd *, bfd_reloc_code_real_type);
-extern reloc_howto_type * m68k_reloc_name_lookup (bfd *, const char *);
-#else
-
-#ifdef STATIC_RELOCS
-#define STAT_REL static
-#else
-#define STAT_REL
-#endif
-
-STAT_REL void m68k_rtype2howto (arelent *, int);
-STAT_REL int m68k_howto2rtype (reloc_howto_type *);
-STAT_REL reloc_howto_type * m68k_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
-STAT_REL reloc_howto_type * m68k_reloc_name_lookup (bfd *, const char *);
-
-STAT_REL void
-m68k_rtype2howto (arelent *internal, int relocentry)
-{
- switch (relocentry)
- {
- case R_RELBYTE: internal->howto = m68kcoff_howto_table + 0; break;
- case R_RELWORD: internal->howto = m68kcoff_howto_table + 1; break;
- case R_RELLONG: internal->howto = m68kcoff_howto_table + 2; break;
- case R_PCRBYTE: internal->howto = m68kcoff_howto_table + 3; break;
- case R_PCRWORD: internal->howto = m68kcoff_howto_table + 4; break;
- case R_PCRLONG: internal->howto = m68kcoff_howto_table + 5; break;
- case R_RELLONG_NEG: internal->howto = m68kcoff_howto_table + 6; break;
- default: internal->howto = NULL; break;
- }
-}
-
-STAT_REL int
-m68k_howto2rtype (reloc_howto_type * internal)
-{
- if (internal->pc_relative)
- {
- switch (internal->bitsize)
- {
- case 32: return R_PCRLONG;
- case 16: return R_PCRWORD;
- case 8: return R_PCRBYTE;
- }
- }
- else
- {
- switch (internal->bitsize)
- {
- case 32: return R_RELLONG;
- case 16: return R_RELWORD;
- case 8: return R_RELBYTE;
- }
- }
- return R_RELLONG;
-}
-
-STAT_REL reloc_howto_type *
-m68k_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
- bfd_reloc_code_real_type code)
-{
- switch (code)
- {
- default: return NULL;
- case BFD_RELOC_8: return m68kcoff_howto_table + 0;
- case BFD_RELOC_16: return m68kcoff_howto_table + 1;
- case BFD_RELOC_CTOR:
- case BFD_RELOC_32: return m68kcoff_howto_table + 2;
- case BFD_RELOC_8_PCREL: return m68kcoff_howto_table + 3;
- case BFD_RELOC_16_PCREL: return m68kcoff_howto_table + 4;
- case BFD_RELOC_32_PCREL: return m68kcoff_howto_table + 5;
- /* FIXME: There doesn't seem to be a code for R_RELLONG_NEG. */
- }
- /*NOTREACHED*/
-}
-
-STAT_REL reloc_howto_type *
-m68k_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
- const char *r_name)
-{
- unsigned int i;
-
- for (i = 0;
- i < sizeof (m68kcoff_howto_table) / sizeof (m68kcoff_howto_table[0]);
- i++)
- if (m68kcoff_howto_table[i].name != NULL
- && strcasecmp (m68kcoff_howto_table[i].name, r_name) == 0)
- return &m68kcoff_howto_table[i];
-
- return NULL;
-}
-
-#endif /* not ONLY_DECLARE_RELOCS */
-
-#define RTYPE2HOWTO(internal, relocentry) \
- m68k_rtype2howto(internal, (relocentry)->r_type)
-
-#define SELECT_RELOC(external, internal) \
- external.r_type = m68k_howto2rtype (internal)
-
-#define coff_bfd_reloc_type_lookup m68k_reloc_type_lookup
-#define coff_bfd_reloc_name_lookup m68k_reloc_name_lookup
-
-#ifndef COFF_COMMON_ADDEND
-#ifndef coff_rtype_to_howto
-
-#define coff_rtype_to_howto m68kcoff_rtype_to_howto
-
-static reloc_howto_type *
-m68kcoff_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
- asection *sec,
- struct internal_reloc *rel,
- struct coff_link_hash_entry *h ATTRIBUTE_UNUSED,
- struct internal_syment *sym ATTRIBUTE_UNUSED,
- bfd_vma *addendp)
-{
- arelent relent;
- reloc_howto_type *howto;
-
- relent.howto = NULL;
- RTYPE2HOWTO (&relent, rel);
-
- howto = relent.howto;
-
- if (howto != NULL && howto->pc_relative)
- *addendp += sec->vma;
-
- return howto;
-}
-
-#endif /* ! defined (coff_rtype_to_howto) */
-#endif /* ! defined (COFF_COMMON_ADDEND) */
-\f
-#ifdef COFF_COMMON_ADDEND
-
-/* If COFF_COMMON_ADDEND is defined, then when using m68k COFF the
- value stored in the .text section for a reference to a common
- symbol is the value itself plus any desired offset. (taken from
- work done by Ian Taylor, Cygnus Support, for I386 COFF). */
-
-/* If we are producing relocatable output, we need to do some
- adjustments to the object file that are not done by the
- bfd_perform_relocation function. This function is called by every
- reloc type to make any required adjustments. */
-
-static bfd_reloc_status_type
-m68kcoff_common_addend_special_fn (bfd *abfd,
- arelent *reloc_entry,
- asymbol *symbol,
- void * data,
- asection *input_section ATTRIBUTE_UNUSED,
- bfd *output_bfd,
- char **error_message ATTRIBUTE_UNUSED)
-{
- symvalue diff;
-
- if (output_bfd == (bfd *) NULL)
- return bfd_reloc_continue;
-
- if (bfd_is_com_section (symbol->section))
- {
- /* We are relocating a common symbol. The current value in the
- object file is ORIG + OFFSET, where ORIG is the value of the
- common symbol as seen by the object file when it was compiled
- (this may be zero if the symbol was undefined) and OFFSET is
- the offset into the common symbol (normally zero, but may be
- non-zero when referring to a field in a common structure).
- ORIG is the negative of reloc_entry->addend, which is set by
- the CALC_ADDEND macro below. We want to replace the value in
- the object file with NEW + OFFSET, where NEW is the value of
- the common symbol which we are going to put in the final
- object file. NEW is symbol->value. */
- diff = symbol->value + reloc_entry->addend;
- }
- else
- {
- /* For some reason bfd_perform_relocation always effectively
- ignores the addend for a COFF target when producing
- relocatable output. This seems to be always wrong for 386
- COFF, so we handle the addend here instead. */
- diff = reloc_entry->addend;
- }
-
-#define DOIT(x) \
- x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
-
- if (diff != 0)
- {
- reloc_howto_type *howto = reloc_entry->howto;
- unsigned char *addr = (unsigned char *) data + reloc_entry->address;
-
- if (! bfd_reloc_offset_in_range (howto, abfd, input_section,
- reloc_entry->address
- * bfd_octets_per_byte (abfd)))
- return bfd_reloc_outofrange;
-
- switch (howto->size)
- {
- case 0:
- {
- char x = bfd_get_8 (abfd, addr);
- DOIT (x);
- bfd_put_8 (abfd, x, addr);
- }
- break;
-
- case 1:
- {
- short x = bfd_get_16 (abfd, addr);
- DOIT (x);
- bfd_put_16 (abfd, (bfd_vma) x, addr);
- }
- break;
-
- case 2:
- {
- long x = bfd_get_32 (abfd, addr);
- DOIT (x);
- bfd_put_32 (abfd, (bfd_vma) x, addr);
- }
- break;
-
- default:
- abort ();
- }
- }
-
- /* Now let bfd_perform_relocation finish everything up. */
- return bfd_reloc_continue;
-}
-
-/* Compute the addend of a reloc. If the reloc is to a common symbol,
- the object file contains the value of the common symbol. By the
- time this is called, the linker may be using a different symbol
- from a different object file with a different value. Therefore, we
- hack wildly to locate the original symbol from this file so that we
- can make the correct adjustment. This macro sets coffsym to the
- symbol from the original file, and uses it to set the addend value
- correctly. If this is not a common symbol, the usual addend
- calculation is done, except that an additional tweak is needed for
- PC relative relocs.
- FIXME: This macro refers to symbols and asect; these are from the
- calling function, not the macro arguments. */
-
-#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
- { \
- coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
- if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
- coffsym = (obj_symbols (abfd) \
- + (cache_ptr->sym_ptr_ptr - symbols)); \
- else if (ptr) \
- coffsym = coff_symbol_from (ptr); \
- if (coffsym != (coff_symbol_type *) NULL \
- && coffsym->native->u.syment.n_scnum == 0) \
- cache_ptr->addend = - coffsym->native->u.syment.n_value; \
- else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
- && ptr->section != (asection *) NULL) \
- cache_ptr->addend = - (ptr->section->vma + ptr->value); \
- else \
- cache_ptr->addend = 0; \
- if (ptr && (reloc.r_type == R_PCRBYTE \
- || reloc.r_type == R_PCRWORD \
- || reloc.r_type == R_PCRLONG)) \
- cache_ptr->addend += asect->vma; \
- }
-
-#ifndef coff_rtype_to_howto
-
-/* coff-m68k.c uses the special COFF backend linker. We need to
- adjust common symbols. */
-
-static reloc_howto_type *
-m68kcoff_common_addend_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
- asection *sec,
- struct internal_reloc *rel,
- struct coff_link_hash_entry *h,
- struct internal_syment *sym,
- bfd_vma *addendp)
-{
- arelent relent;
- reloc_howto_type *howto;
-
- relent.howto = NULL;
- RTYPE2HOWTO (&relent, rel);
-
- howto = relent.howto;
-
- if (howto->pc_relative)
- *addendp += sec->vma;
-
- if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0)
- {
- /* This is a common symbol. The section contents include the
- size (sym->n_value) as an addend. The relocate_section
- function will be adding in the final value of the symbol. We
- need to subtract out the current size in order to get the
- correct result. */
- BFD_ASSERT (h != NULL);
- *addendp -= sym->n_value;
- }
-
- /* If the output symbol is common (in which case this must be a
- relocatable link), we need to add in the final size of the
- common symbol. */
- if (h != NULL && h->root.type == bfd_link_hash_common)
- *addendp += h->root.u.c.size;
-
- return howto;
-}
-
-#define coff_rtype_to_howto m68kcoff_common_addend_rtype_to_howto
-
-#endif /* ! defined (coff_rtype_to_howto) */
-
-#endif /* COFF_COMMON_ADDEND */
-
-#if !defined ONLY_DECLARE_RELOCS && ! defined STATIC_RELOCS
-/* Given a .data section and a .emreloc in-memory section, store
- relocation information into the .emreloc section which can be
- used at runtime to relocate the section. This is called by the
- linker when the --embedded-relocs switch is used. This is called
- after the add_symbols entry point has been called for all the
- objects, and before the final_link entry point is called. */
-
-bfd_boolean
-bfd_m68k_coff_create_embedded_relocs (bfd *abfd,
- struct bfd_link_info *info,
- asection *datasec,
- asection *relsec,
- char **errmsg)
-{
- char *extsyms;
- bfd_size_type symesz;
- struct internal_reloc *irel, *irelend;
- bfd_byte *p;
- bfd_size_type amt;
-
- BFD_ASSERT (! bfd_link_relocatable (info));
-
- *errmsg = NULL;
-
- if (datasec->reloc_count == 0)
- return TRUE;
-
- extsyms = obj_coff_external_syms (abfd);
- symesz = bfd_coff_symesz (abfd);
-
- irel = _bfd_coff_read_internal_relocs (abfd, datasec, TRUE, NULL, FALSE,
- NULL);
- irelend = irel + datasec->reloc_count;
-
- amt = (bfd_size_type) datasec->reloc_count * 12;
- relsec->contents = (bfd_byte *) bfd_alloc (abfd, amt);
- if (relsec->contents == NULL)
- return FALSE;
-
- p = relsec->contents;
-
- for (; irel < irelend; irel++, p += 12)
- {
- asection *targetsec;
-
- /* We are going to write a four byte longword into the runtime
- reloc section. The longword will be the address in the data
- section which must be relocated. It is followed by the name
- of the target section NUL-padded or truncated to 8
- characters. */
-
- /* We can only relocate absolute longword relocs at run time. */
- if (irel->r_type != R_RELLONG)
- {
- *errmsg = _("unsupported relocation type");
- bfd_set_error (bfd_error_bad_value);
- return FALSE;
- }
-
- if (irel->r_symndx == -1)
- targetsec = bfd_abs_section_ptr;
- else
- {
- struct coff_link_hash_entry *h;
-
- h = obj_coff_sym_hashes (abfd)[irel->r_symndx];
- if (h == NULL)
- {
- struct internal_syment isym;
-
- bfd_coff_swap_sym_in (abfd, extsyms + symesz * irel->r_symndx,
- &isym);
- targetsec = coff_section_from_bfd_index (abfd, isym.n_scnum);
- }
- else if (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- targetsec = h->root.u.def.section;
- else
- targetsec = NULL;
- }
-
- bfd_put_32 (abfd,
- (irel->r_vaddr - datasec->vma + datasec->output_offset), p);
- memset (p + 4, 0, 8);
- if (targetsec != NULL)
- strncpy ((char *) p + 4, targetsec->output_section->name, 8);
- }
-
- return TRUE;
-}
-#endif /* neither ONLY_DECLARE_RELOCS not STATIC_RELOCS */
-\f
-#define coff_bfd_is_local_label_name m68k_coff_is_local_label_name
-
-#define coff_relocate_section _bfd_coff_generic_relocate_section
-
-#ifndef bfd_pe_print_pdata
-#define bfd_pe_print_pdata NULL
-#endif
-
-#include "coffcode.h"
-
-#ifndef TARGET_SYM
-#define TARGET_SYM m68k_coff_vec
-#endif
-
-#ifndef TARGET_NAME
-#define TARGET_NAME "coff-m68k"
-#endif
-
-#ifdef NAMES_HAVE_UNDERSCORE
-CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, D_PAGED, 0, '_', NULL, COFF_SWAP_TABLE)
-#else
-CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, D_PAGED, 0, 0, NULL, COFF_SWAP_TABLE)
-#endif
+++ /dev/null
-/* BFD back-end for Motorola sysv68
- Copyright (C) 1997-2018 Free Software Foundation, Inc.
- Written by Philippe De Muyter <phdm@info.ucl.ac.be>.
-
- 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_SYM m68k_coff_sysv_vec
-#define TARGET_NAME "coff-m68k-sysv"
-#define STATIC_RELOCS
-#define COFF_COMMON_ADDEND
-
-#include "coff-m68k.c"
+++ /dev/null
-/* BFD back-end for Motorola 68000 COFF binaries having underscore with name.
- 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. */
-
-#define TARGET_SYM m68k_coff_un_vec
-#define TARGET_NAME "coff-m68k-un"
-
-#define NAMES_HAVE_UNDERSCORE
-
-/* define this to not have multiple copy of m68k_rtype2howto
- in the executable file */
-#define ONLY_DECLARE_RELOCS
-
-/* This magic number indicates that the names have underscores.
- Other 68k magic numbers indicate that the names do not have
- underscores. */
-#define BADMAG(x) ((x).f_magic != MC68KBCSMAGIC)
-
-#include "coff-m68k.c"
case I386MAGIC:
case I386PTXMAGIC:
case I386AIXMAGIC: /* Danbury PS/2 AIX C Compiler. */
- case LYNXCOFFMAGIC: /* Shadows the m68k Lynx number below, sigh. */
+ case LYNXCOFFMAGIC:
arch = bfd_arch_i386;
break;
#endif
}
break;
#endif
-#ifdef MC68MAGIC
- case MC68MAGIC:
- case M68MAGIC:
-#ifdef MC68KBCSMAGIC
- case MC68KBCSMAGIC:
-#endif
-#ifdef APOLLOM68KMAGIC
- case APOLLOM68KMAGIC:
-#endif
-#ifdef LYNXCOFFMAGIC
- case LYNXCOFFMAGIC:
-#endif
- arch = bfd_arch_m68k;
- machine = bfd_mach_m68020;
- break;
-#endif
#ifdef Z80MAGIC
case Z80MAGIC:
arch = bfd_arch_z80;
return TRUE;
#endif
-#ifdef MC68MAGIC
- case bfd_arch_m68k:
-#ifdef APOLLOM68KMAGIC
- *magicp = APOLLO_COFF_VERSION_NUMBER;
-#else
- /* NAMES_HAVE_UNDERSCORE may be defined by coff-u68k.c. */
-#ifdef NAMES_HAVE_UNDERSCORE
- *magicp = MC68KBCSMAGIC;
-#else
- *magicp = MC68MAGIC;
-#endif
-#endif
-#ifdef LYNXOS
- /* Just overwrite the usual value if we're doing Lynx. */
- *magicp = LYNXCOFFMAGIC;
-#endif
- return TRUE;
-#endif
-
#ifdef SH_ARCH_MAGIC_BIG
case bfd_arch_sh:
#ifdef COFF_IMAGE_WITH_PE
#define __A_MAGIC_SET__
#endif /* TIC80 */
-#if APOLLO_M68
-#define __A_MAGIC_SET__
- internal_a.magic = APOLLO_COFF_VERSION_NUMBER;
-#endif
-
-#if defined(M68) || defined(M68K)
-#define __A_MAGIC_SET__
-#if defined(LYNXOS)
- internal_a.magic = LYNXCOFFMAGIC;
-#else
-#if defined(TARG_AUX)
- internal_a.magic = (abfd->flags & D_PAGED ? PAGEMAGICPEXECPAGED :
- abfd->flags & WP_TEXT ? PAGEMAGICPEXECSWAPPED :
- PAGEMAGICEXECSWAPPED);
-#else
-#if defined (PAGEMAGICPEXECPAGED)
- internal_a.magic = PAGEMAGICPEXECPAGED;
-#endif
-#endif /* TARG_AUX */
-#endif /* LYNXOS */
-#endif /* M68 || M68K */
-
#if defined(ARM)
#define __A_MAGIC_SET__
internal_a.magic = ZMAGIC;
aouthdr_int->data_start =
GET_AOUTHDR_DATA_START (abfd, aouthdr_ext->data_start);
-#ifdef APOLLO_M68
- H_PUT_32 (abfd, aouthdr_int->o_inlib, aouthdr_ext->o_inlib);
- H_PUT_32 (abfd, aouthdr_int->o_sri, aouthdr_ext->o_sri);
- H_PUT_32 (abfd, aouthdr_int->vid[0], aouthdr_ext->vid);
- H_PUT_32 (abfd, aouthdr_int->vid[1], aouthdr_ext->vid + 4);
-#endif
-
#ifdef RS6000COFF_C
#ifdef XCOFF64
aouthdr_int->o_toc = H_GET_64 (abfd, aouthdr_ext->o_toc);
i[3-7]86-*-os9k | \
i[3-7]86-none-* | \
i[3-7]86-*-aout* | i[3-7]86*-*-vsta* | \
- m68*-motorola-sysv* | m68*-hp-bsd* | m68*-*-aout* | \
- m68*-*-coff* | m68*-*-sysv* | \
- m68*-*-hpux* | \
- m68*-*-linux*aout* | \
- m68*-hp*-netbsd* | \
- m68*-*-netbsdaout* | \
- m68*-*-sunos* | m68*-*-os68k* | m68*-*-vxworks* | m68*-netx-* | \
- m68*-*-bsd* | m68*-*-vsta* | \
- m68*-ericsson-* | \
- m68*-*-psos* | \
mips*-big-* | \
mips*-dec-* | mips*el-*-ecoff* | \
mips*-*-ecoff* | \
esac
case $targ in
+ m68*-*-netbsdelf*)
+ # Not obsolete
+ ;;
*-adobe-* | \
*-go32-rtems* | \
*-sony-* | \
i370-* | \
i860-*-* | \
i960-*-* | \
+ m68*-*-*bsd* | \
+ m68*-*-aout* | \
+ m68*-*-coff* | \
+ m68*-*-hpux* | \
+ m68*-*-linux*aout* | \
m68*-*-lynxos* | \
+ m68*-*-os68k* | \
+ m68*-*-psos* | \
+ m68*-*-sunos* | \
+ m68*-*-sysv* | \
+ m68*-*-vsta* | \
+ m68*-*-vxworks* | \
m68*-apollo-* | \
m68*-apple-aux* | \
m68*-bull-sysv* | \
+ m68*-ericsson-* | \
+ m68*-motorola-sysv* | \
+ m68*-netx-* | \
m88*-*-* | \
maxq-*-coff | \
mips*el-*-rtems* | \
fido-*-elf* )
targ_defvec=m68k_elf32_vec
- targ_selvecs="m68k_coff_vec"
;;
fr30-*-elf)
targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
;;
- m68*-motorola-sysv*)
- targ_defvec=m68k_coff_sysv_vec
- ;;
- m68*-hp-bsd*)
- targ_defvec=m68k_aout_hp300bsd_vec
- targ_underscore=yes
- ;;
- m68*-*-aout*)
- targ_defvec=aout0_be_vec
- # We include core_cisco_be_vec here, rather than making a separate cisco
- # configuration, so that cisco-core.c gets routinely tested at
- # least for compilation.
- targ_selvecs="core_cisco_be_vec"
- targ_underscore=yes
- ;;
- m68*-*-elf* | m68*-*-sysv4* | m68*-*-rtems* | m68*-*-uclinux*)
- targ_defvec=m68k_elf32_vec
- targ_selvecs="m68k_coff_vec"
- ;;
- m68*-*-coff* | m68*-*-sysv*)
- targ_defvec=m68k_coff_vec
- targ_selvecs="m68k_coff_vec m68k_versados_vec"
- ;;
- m68*-*-hpux*)
- targ_defvec=m68k_aout_hp300hpux_vec
- targ_underscore=yes
- ;;
- m68*-*-linux*aout*)
- targ_defvec=m68k_aout_linux_vec
- targ_selvecs=m68k_elf32_vec
- targ_underscore=yes
- ;;
- m68*-*-linux-*)
+ m68*-*-*)
targ_defvec=m68k_elf32_vec
- targ_selvecs=m68k_aout_linux_vec
- ;;
- m68*-*-gnu*)
- targ_defvec=m68k_elf32_vec
- # targ_selvecs=m68kmach3_vec
- # targ_cflags=-DSTAT_FOR_EXEC
- ;;
- m68*-hp*-netbsd*)
- targ_defvec=m68k_aout_4knbsd_vec
- targ_selvecs="m68k_aout_nbsd_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
- targ_underscore=yes
- ;;
- m68*-*-netbsdelf*)
- targ_defvec=m68k_elf32_vec
- targ_selvecs="m68k_aout_nbsd_vec m68k_aout_4knbsd_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
- ;;
- m68*-*-netbsdaout* | m68*-*-netbsd*)
- targ_defvec=m68k_aout_nbsd_vec
- targ_selvecs="m68k_aout_4knbsd_vec m68k_elf32_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
- targ_underscore=yes
- ;;
- m68*-*-openbsd*)
- targ_defvec=m68k_aout_nbsd_vec
- targ_selvecs="m68k_aout_4knbsd_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
- targ_underscore=yes
- ;;
- m68*-*-sunos* | m68*-*-os68k* | m68*-*-vxworks* | m68*-netx-* | \
- m68*-*-bsd* | m68*-*-vsta*)
- targ_defvec=sparc_aout_sunos_be_vec
- targ_underscore=yes
- ;;
- m68*-ericsson-*)
- targ_defvec=sparc_aout_sunos_be_vec
- targ_selvecs="m68k_coff_vec m68k_versados_vec tekhex_vec"
- targ_underscore=yes
- ;;
- m68*-cbm-*)
- targ_defvec=m68k_elf32_vec
- targ_selvecs=m68k_coff_vec
- ;;
- m68*-*-psos*)
- targ_defvec=m68k_elf32_vec
- targ_underscore=yes
;;
mcore-*-elf)
m32r_elf32_linux_le_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
m68hc11_elf32_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
m68hc12_elf32_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
- m68k_aout_4knbsd_vec) tb="$tb m68k4knetbsd.lo aout32.lo" ;;
- m68k_aout_hp300bsd_vec) tb="$tb hp300bsd.lo aout32.lo" ;;
- m68k_aout_hp300hpux_vec) tb="$tb hp300hpux.lo aout32.lo" ;;
- m68k_aout_linux_vec) tb="$tb m68klinux.lo aout32.lo" ;;
- m68k_aout_nbsd_vec) tb="$tb m68knetbsd.lo aout32.lo" ;;
- m68k_coff_vec) tb="$tb coff-m68k.lo $coff" ;;
- m68k_coff_apollo_vec) tb="$tb coff-apollo.lo $coffgen" ;;
- m68k_coff_aux_vec) tb="$tb coff-aux.lo coff-m68k.lo $coff" ;;
- m68k_coff_sysv_vec) tb="$tb coff-svm68k.lo $coff" ;;
- m68k_coff_un_vec) tb="$tb coff-u68k.lo coff-m68k.lo $coff" ;;
m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
- m68k_versados_vec) tb="$tb versados.lo" ;;
mach_o_be_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
mach_o_le_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
mach_o_fat_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/riscos.h"'
;;
- m68*-bull*-sysv*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/dpx2.h"'
- ;;
- m68*-hp-hpux*) COREFILE=hpux-core.lo ;;
- m68*-hp-bsd*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/hp300bsd.h"'
- ;;
m68*-*-linux-*)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/m68klinux.h"'
;;
- m68*-motorola-sysv*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/delta68.h"'
- ;;
- m68*-*-netbsd* | m68*-*-openbsd*)
+ m68*-*-netbsd*)
COREFILE=netbsd-core.lo
;;
- m68*-apple-aux*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/m68kaux.h"'
- ;;
ns32k-pc532-mach)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/pc532mach.h"'
m32r_elf32_linux_le_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
m68hc11_elf32_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
m68hc12_elf32_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
- m68k_aout_4knbsd_vec) tb="$tb m68k4knetbsd.lo aout32.lo" ;;
- m68k_aout_hp300bsd_vec) tb="$tb hp300bsd.lo aout32.lo" ;;
- m68k_aout_hp300hpux_vec) tb="$tb hp300hpux.lo aout32.lo" ;;
- m68k_aout_linux_vec) tb="$tb m68klinux.lo aout32.lo" ;;
- m68k_aout_nbsd_vec) tb="$tb m68knetbsd.lo aout32.lo" ;;
- m68k_coff_vec) tb="$tb coff-m68k.lo $coff" ;;
- m68k_coff_apollo_vec) tb="$tb coff-apollo.lo $coffgen" ;;
- m68k_coff_aux_vec) tb="$tb coff-aux.lo coff-m68k.lo $coff" ;;
- m68k_coff_sysv_vec) tb="$tb coff-svm68k.lo $coff" ;;
- m68k_coff_un_vec) tb="$tb coff-u68k.lo coff-m68k.lo $coff" ;;
m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
- m68k_versados_vec) tb="$tb versados.lo" ;;
mach_o_be_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
mach_o_le_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
mach_o_fat_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/riscos.h"'
;;
- m68*-bull*-sysv*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/dpx2.h"'
- ;;
- m68*-hp-hpux*) COREFILE=hpux-core.lo ;;
- m68*-hp-bsd*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/hp300bsd.h"'
- ;;
m68*-*-linux-*)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/m68klinux.h"'
;;
- m68*-motorola-sysv*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/delta68.h"'
- ;;
- m68*-*-netbsd* | m68*-*-openbsd*)
+ m68*-*-netbsd*)
COREFILE=netbsd-core.lo
;;
- m68*-apple-aux*)
- COREFILE=trad-core.lo
- TRAD_HEADER='"hosts/m68kaux.h"'
- ;;
ns32k-pc532-mach)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/pc532mach.h"'
mips*-*-sysv*) HDEFINES="-G 4" ;;
mips*-*-riscos*) HDEFINES="-G 4" ;;
-m68*-hp-hpux*) HDEFINES=-DHOST_HP300HPUX ;;
-
# Some Solaris systems (osol0906 at least) have a libc that doesn't recognise
# the "MS-ANSI" code page name, so we define an override for CP_ACP (sets the
# default code page used by windres/windmc when not specified by a commandline
* elf :: elf backends
* mmo :: mmo backend
@ignore
-* oasys :: oasys backends
* srecord :: s-record backend
@end ignore
@end menu
ECOFF.
@item bfd_target_elf_flavour
ELF.
-@item bfd_target_oasys_flavour
-OASYS.
@item bfd_target_tekhex_flavour
Tektronix hex format.
@item bfd_target_srec_flavour
/* Magic number, maestro, please! */
switch (bfd_get_arch(abfd))
{
- case bfd_arch_m68k:
- if (strcmp (abfd->xvec->name, "a.out-m68k4k-netbsd") == 0)
- N_SET_MACHTYPE (execp, M_68K4K_NETBSD);
- else
- N_SET_MACHTYPE (execp, M_68K_NETBSD);
- break;
case bfd_arch_sparc:
N_SET_MACHTYPE (execp, M_SPARC_NETBSD);
break;
#ifdef vax
arch = "vax";
-#endif
-#ifdef m68k
- arch = "m68k";
#endif
if (arch[0] == '1')
{
+++ /dev/null
-/* Copyright (C) 2005-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. */
-
-/* Definitions for a Motorola Delta 3300 box running System V R3.0.
- Contributed by manfred@lts.sel.alcatel.de. */
-
-#include <sys/param.h>
-
-/* Definitions used by trad-core.c. */
-#define NBPG NBPC
-#define HOST_DATA_START_ADDR u.u_exdata.ux_datorg
-#define HOST_TEXT_START_ADDR u.u_exdata.ux_txtorg
-/* User's stack, copied from sys/param.h */
-#define HOST_STACK_END_ADDR USRSTACK
-#define UPAGES USIZE
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(abfd) \
- abfd->tdata.trad_core_data->u.u_abort
+++ /dev/null
-/* Copyright (C) 2007-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. */
-
-#include <sys/param.h>
-#ifdef BSD4_4
-#define NO_CORE_COMMAND
-#endif
-
-#define HOST_PAGE_SIZE NBPG
-#define HOST_SEGMENT_SIZE NBPG /* Data seg start addr rounds to NBPG */
-#define HOST_MACHINE_ARCH bfd_arch_m68k
-/* #define HOST_MACHINE_MACHINE */
-
-#define HOST_TEXT_START_ADDR 0
-#define HOST_STACK_END_ADDR 0xfff00000
-#define HOST_BIG_ENDIAN_P
+++ /dev/null
-/* Copyright (C) 2007-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. */
-
-/* Definitions for an Apple Macintosh running A/UX 3.x. */
-
-#include <sys/param.h>
-#include <sys/page.h>
-
-/* Definitions used by trad-core.c. */
-#define NBPG NBPP
-
-#define HOST_DATA_START_ADDR u.u_exdata.ux_datorg
-#define HOST_TEXT_START_ADDR u.u_exdata.ux_txtorg
-#define HOST_STACK_END_ADDR 0x100000000
-
-#define UPAGES USIZE
-
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(abfd) \
- (abfd->tdata.trad_core_data->u.u_arg[0])
+++ /dev/null
-/* Copyright (C) 2007-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. */
-
-/* Sony News running NewsOS 3.2. */
-
-#include <machine/vmparam.h>
-
-#define HOST_PAGE_SIZE NBPG
-#define HOST_SEGMENT_SIZE NBPG
-#define HOST_MACHINE_ARCH bfd_arch_m68k
-#define HOST_TEXT_START_ADDR 0
-#define HOST_STACK_END_ADDR (KERNBASE - (UPAGES * NBPG))
+++ /dev/null
-/* BFD back-end for HP 9000/300 (68000-based) machines running BSD Unix.
- 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_IS_BIG_ENDIAN_P
-#define N_HEADER_IN_TEXT(x) 0
-#define ENTRY_CAN_BE_ZERO
-#define TEXT_START_ADDR 0
-#define TARGET_PAGE_SIZE 4096
-#define SEGMENT_SIZE TARGET_PAGE_SIZE
-#define DEFAULT_ARCH bfd_arch_m68k
-
-/* 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 (m68k_aout_hp300bsd_,OP)
-#define TARGETNAME "a.out-hp300bsd"
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "libaout.h"
-
-#include "aout-target.h"
+++ /dev/null
-/* BFD backend for hp-ux 9000/300
- Copyright (C) 1990-2018 Free Software Foundation, Inc.
- Written by Glenn Engel.
-
- 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. */
-
-
-/* hpux native ------------> | |
- | hp300hpux bfd | ----------> hpux w/gnu ext
- hpux w/gnu extension ----> | |
-
- Support for the 9000/[34]00 has several limitations.
- 1. Shared libraries are not supported.
- 2. The output format from this bfd is not usable by native tools.
-
- The primary motivation for writing this bfd was to allow use of
- gdb and gcc for host based debugging and not to mimic the hp-ux tools
- in every detail. This leads to a significant simplification of the
- code and a leap in performance. The decision to not output hp native
- compatible objects was further strengthened by the fact that the richness
- of the gcc compiled objects could not be represented without loss of
- information. For example, while the hp format supports the concept of
- secondary symbols, it does not support indirect symbols. Another
- reason is to maintain backwards compatibility with older implementations
- of gcc on hpux which used 'hpxt' to translate .a and .o files into a
- format which could be readily understood by the gnu linker and gdb.
- This allows reading hp secondary symbols and converting them into
- indirect symbols but the reverse it not always possible.
-
- Another example of differences is that the hp format stores symbol offsets
- in the object code while the gnu utilities use a field in the
- relocation record for this. To support the hp native format, the object
- code would need to be patched with the offsets when producing .o files.
-
- The basic technique taken in this implementation is to #include the code
- from aoutx.h and aout-target.h with appropriate #defines to override
- code where a unique implementation is needed:
-
- {
- #define a bunch of stuff
- #include <aoutx.h>
-
- implement a bunch of functions
-
- #include "aout-target.h"
- }
-
- The hp symbol table is a bit different than other a.out targets. Instead
- of having an array of nlist items and an array of strings, hp's format
- has them mixed together in one structure. In addition, the strings are
- not null terminated. It looks something like this:
-
- nlist element 1
- string1
- nlist element 2
- string2
- ...
-
- The whole symbol table is read as one chunk and then we march thru it
- and convert it to canonical form. As we march thru the table, we copy
- the nlist data into the internal form and we compact the strings and null
- terminate them, using storage from the already allocated symbol table:
-
- string1
- null
- string2
- null
- */
-
-/* @@ Is this really so different from normal a.out that it needs to include
- aoutx.h? We should go through this file sometime and see what can be made
- more dependent on aout32.o and what might need to be broken off and accessed
- through the backend_data field. Or, maybe we really do need such a
- completely separate implementation. I don't have time to investigate this
- much further right now. [raeburn:19930428.2124EST] */
-/* @@ Also, note that there wind up being two versions of some routines, with
- different names, only one of which actually gets used. For example:
- slurp_symbol_table
- swap_std_reloc_in
- slurp_reloc_table
- canonicalize_symtab
- get_symtab_upper_bound
- canonicalize_reloc
- mkobject
- This should also be fixed. */
-
-#define TARGETNAME "a.out-hp300hpux"
-
-/* 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 (m68k_aout_hp300hpux_,OP)
-
-#define external_exec hp300hpux_exec_bytes
-#define external_nlist hp300hpux_nlist_bytes
-
-#include "aout/hp300hpux.h"
-
-/* define these so we can compile unused routines in aoutx.h */
-#define e_strx e_shlib
-#define e_other e_length
-#define e_desc e_almod
-
-#define AR_PAD_CHAR '/'
-#define TARGET_IS_BIG_ENDIAN_P
-#define DEFAULT_ARCH bfd_arch_m68k
-
-#define MY_get_section_contents aout_32_get_section_contents
-#define MY_slurp_armap bfd_slurp_bsd_armap_f2
-
-/***********************************************/
-/* provide overrides for routines in this file */
-/***********************************************/
-/* these don't use MY because that causes problems within JUMP_TABLE
- (CONCAT2 winds up being expanded recursively, which ANSI C compilers
- will not do). */
-#define MY_canonicalize_symtab m68k_aout_hp300hpux_canonicalize_symtab
-#define MY_get_symtab_upper_bound m68k_aout_hp300hpux_get_symtab_upper_bound
-#define MY_canonicalize_reloc m68k_aout_hp300hpux_canonicalize_reloc
-#define MY_write_object_contents m68k_aout_hp300hpux_write_object_contents
-
-#define MY_read_minisymbols _bfd_generic_read_minisymbols
-#define MY_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
-
-#define MY_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
-#define MY_bfd_link_add_symbols _bfd_generic_link_add_symbols
-#define MY_final_link_callback unused
-#define MY_bfd_final_link _bfd_generic_final_link
-
-/* Until and unless we convert the slurp_reloc and slurp_symtab
- routines in this file, we can not use the default aout
- free_cached_info routine which assumes that the relocs and symtabs
- were allocated using malloc. */
-#define MY_bfd_free_cached_info _bfd_bool_bfd_true
-
-#define m68k_aout_hp300hpux_write_syms aout_32_write_syms
-
-#define MY_callback MY(callback)
-
-#define MY_exec_hdr_flags 0x2
-
-#define NAME_swap_exec_header_in NAME(hp300hpux_32_,swap_exec_header_in)
-
-#define HP_SYMTYPE_UNDEFINED 0x00
-#define HP_SYMTYPE_ABSOLUTE 0x01
-#define HP_SYMTYPE_TEXT 0x02
-#define HP_SYMTYPE_DATA 0x03
-#define HP_SYMTYPE_BSS 0x04
-#define HP_SYMTYPE_COMMON 0x05
-
-#define HP_SYMTYPE_TYPE 0x0F
-#define HP_SYMTYPE_FILENAME 0x1F
-
-#define HP_SYMTYPE_ALIGN 0x10
-#define HP_SYMTYPE_EXTERNAL 0x20
-#define HP_SECONDARY_SYMBOL 0x40
-
-/* RELOCATION DEFINITIONS */
-#define HP_RSEGMENT_TEXT 0x00
-#define HP_RSEGMENT_DATA 0x01
-#define HP_RSEGMENT_BSS 0x02
-#define HP_RSEGMENT_EXTERNAL 0x03
-#define HP_RSEGMENT_PCREL 0x04
-#define HP_RSEGMENT_RDLT 0x05
-#define HP_RSEGMENT_RPLT 0x06
-#define HP_RSEGMENT_NOOP 0x3F
-
-#define HP_RLENGTH_BYTE 0x00
-#define HP_RLENGTH_WORD 0x01
-#define HP_RLENGTH_LONG 0x02
-#define HP_RLENGTH_ALIGN 0x03
-
-#define NAME(x,y) CONCAT3 (hp300hpux,_32_,y)
-#define ARCH_SIZE 32
-
-/* aoutx.h requires definitions for BMAGIC and QMAGIC. */
-#define BMAGIC HPUX_DOT_O_MAGIC
-#define QMAGIC 0314
-
-#include "aoutx.h"
-
-static const bfd_target * MY (callback) (bfd *);
-static bfd_boolean MY (write_object_contents) (bfd *);
-static void convert_sym_type
- (struct external_nlist *, aout_symbol_type *, bfd *);
-
-bfd_boolean MY (slurp_symbol_table) (bfd *);
-void MY (swap_std_reloc_in)
- (bfd *, struct hp300hpux_reloc *, arelent *, asymbol **, bfd_size_type);
-bfd_boolean MY (slurp_reloc_table)
- (bfd *, sec_ptr, asymbol **);
-long MY (canonicalize_symtab) (bfd *, asymbol **);
-long MY (get_symtab_upper_bound) (bfd *);
-long MY (canonicalize_reloc) (bfd *, sec_ptr, arelent **, asymbol **);
-
-/* Since the hpux symbol table has nlist elements interspersed with
- strings and we need to insert som strings for secondary symbols, we
- give ourselves a little extra padding up front to account for
- this. Note that for each non-secondary symbol we process, we gain
- 9 bytes of space for the discarded nlist element (one byte used for
- null). SYM_EXTRA_BYTES is the extra space. */
-#define SYM_EXTRA_BYTES 1024
-
-/* Set parameters about this a.out file that are machine-dependent.
- This routine is called from some_aout_object_p just before it returns. */
-static const bfd_target *
-MY (callback) (bfd *abfd)
-{
- struct internal_exec *execp = exec_hdr (abfd);
-
- /* Calculate the file positions of the parts of a newly read aout header */
- obj_textsec (abfd)->size = N_TXTSIZE (execp);
-
- /* The virtual memory addresses of the sections */
- obj_textsec (abfd)->vma = N_TXTADDR (execp);
- obj_datasec (abfd)->vma = N_DATADDR (execp);
- obj_bsssec (abfd)->vma = N_BSSADDR (execp);
-
- obj_textsec (abfd)->lma = obj_textsec (abfd)->vma;
- obj_datasec (abfd)->lma = obj_datasec (abfd)->vma;
- obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma;
-
- /* The file offsets of the sections */
- obj_textsec (abfd)->filepos = N_TXTOFF (execp);
- obj_datasec (abfd)->filepos = N_DATOFF (execp);
-
- /* The file offsets of the relocation info */
- obj_textsec (abfd)->rel_filepos = N_TRELOFF (execp);
- obj_datasec (abfd)->rel_filepos = N_DRELOFF (execp);
-
- /* The file offsets of the string table and symbol table. */
- obj_sym_filepos (abfd) = N_SYMOFF (execp);
- obj_str_filepos (abfd) = N_STROFF (execp);
-
- /* Determine the architecture and machine type of the object file. */
-#ifdef SET_ARCH_MACH
- SET_ARCH_MACH (abfd, execp);
-#else
- bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0);
-#endif
-
- if (obj_aout_subformat (abfd) == gnu_encap_format)
- {
- /* The file offsets of the relocation info */
- obj_textsec (abfd)->rel_filepos = N_GNU_TRELOFF (execp);
- obj_datasec (abfd)->rel_filepos = N_GNU_DRELOFF (execp);
-
- /* The file offsets of the string table and symbol table. */
- obj_sym_filepos (abfd) = N_GNU_SYMOFF (execp);
- obj_str_filepos (abfd) = (obj_sym_filepos (abfd) + execp->a_syms);
-
- abfd->flags |= HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS;
- bfd_get_symcount (abfd) = execp->a_syms / 12;
- obj_symbol_entry_size (abfd) = 12;
- obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
- }
-
- return abfd->xvec;
-}
-
-extern bfd_boolean aout_32_write_syms (bfd *);
-
-static bfd_boolean
-MY (write_object_contents) (bfd * abfd)
-{
- struct external_exec exec_bytes;
- struct internal_exec *execp = exec_hdr (abfd);
-
- memset (&exec_bytes, 0, sizeof (exec_bytes));
-
- obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
-
- if (adata (abfd).magic == undecided_magic)
- NAME (aout,adjust_sizes_and_vmas) (abfd);
- execp->a_syms = 0;
-
- execp->a_entry = bfd_get_start_address (abfd);
-
- execp->a_trsize = ((obj_textsec (abfd)->reloc_count) *
- obj_reloc_entry_size (abfd));
- execp->a_drsize = ((obj_datasec (abfd)->reloc_count) *
- obj_reloc_entry_size (abfd));
-
- N_SET_MACHTYPE (execp, 0xc);
- N_SET_FLAGS (execp, aout_backend_info (abfd)->exec_hdr_flags);
-
- NAME (aout,swap_exec_header_out) (abfd, execp, &exec_bytes);
-
- /* update fields not covered by default swap_exec_header_out */
-
- /* this is really the sym table size but we store it in drelocs */
- H_PUT_32 (abfd, (bfd_get_symcount (abfd) * 12), exec_bytes.e_drelocs);
-
- if (bfd_seek (abfd, (file_ptr) 0, FALSE) != 0
- || (bfd_bwrite (&exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE, abfd)
- != EXEC_BYTES_SIZE))
- return FALSE;
-
- /* Write out the symbols, and then the relocs. We must write out
- the symbols first so that we know the symbol indices. */
-
- if (bfd_get_symcount (abfd) != 0)
- {
- /* Skip the relocs to where we want to put the symbols. */
- if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (execp) + execp->a_drsize),
- SEEK_SET) != 0)
- return FALSE;
- }
-
- if (!MY (write_syms) (abfd))
- return FALSE;
-
- if (bfd_get_symcount (abfd) != 0)
- {
- if (bfd_seek (abfd, (file_ptr) N_TRELOFF (execp), SEEK_CUR) != 0)
- return FALSE;
- if (!NAME (aout,squirt_out_relocs) (abfd, obj_textsec (abfd)))
- return FALSE;
- if (bfd_seek (abfd, (file_ptr) N_DRELOFF (execp), SEEK_CUR) != 0)
- return FALSE;
- if (!NAME (aout,squirt_out_relocs) (abfd, obj_datasec (abfd)))
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Convert the hp symbol type to be the same as aout64.h usage so we
- can piggyback routines in aoutx.h. */
-
-static void
-convert_sym_type (struct external_nlist *sym_pointer ATTRIBUTE_UNUSED,
- aout_symbol_type *cache_ptr,
- bfd *abfd ATTRIBUTE_UNUSED)
-{
- int name_type;
- int new_type;
-
- name_type = (cache_ptr->type);
- new_type = 0;
-
- if ((name_type & HP_SYMTYPE_ALIGN) != 0)
- {
- /* iou_error ("aligned symbol encountered: %s", name);*/
- name_type = 0;
- }
-
- if (name_type == HP_SYMTYPE_FILENAME)
- new_type = N_FN;
- else
- {
- switch (name_type & HP_SYMTYPE_TYPE)
- {
- case HP_SYMTYPE_UNDEFINED:
- new_type = N_UNDF;
- break;
-
- case HP_SYMTYPE_ABSOLUTE:
- new_type = N_ABS;
- break;
-
- case HP_SYMTYPE_TEXT:
- new_type = N_TEXT;
- break;
-
- case HP_SYMTYPE_DATA:
- new_type = N_DATA;
- break;
-
- case HP_SYMTYPE_BSS:
- new_type = N_BSS;
- break;
-
- case HP_SYMTYPE_COMMON:
- new_type = N_COMM;
- break;
-
- default:
- abort ();
- break;
- }
- if (name_type & HP_SYMTYPE_EXTERNAL)
- new_type |= N_EXT;
-
- if (name_type & HP_SECONDARY_SYMBOL)
- {
- switch (new_type)
- {
- default:
- abort ();
- case N_UNDF | N_EXT:
- /* If the value is nonzero, then just treat this as a
- common symbol. I don't know if this is correct in
- all cases, but it is more correct than treating it as
- a weak undefined symbol. */
- if (cache_ptr->symbol.value == 0)
- new_type = N_WEAKU;
- break;
- case N_ABS | N_EXT:
- new_type = N_WEAKA;
- break;
- case N_TEXT | N_EXT:
- new_type = N_WEAKT;
- break;
- case N_DATA | N_EXT:
- new_type = N_WEAKD;
- break;
- case N_BSS | N_EXT:
- new_type = N_WEAKB;
- break;
- }
- }
- }
- cache_ptr->type = new_type;
-
-}
-
-/*
-DESCRIPTION
- Swaps the information in an executable header taken from a raw
- byte stream memory image, into the internal exec_header
- structure.
-*/
-
-void
-NAME (aout,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);
-
- /***************************************************************/
- /* check the header to see if it was generated by a bfd output */
- /* this is detected rather bizarrely by requiring a bunch of */
- /* header fields to be zero and an old unused field (now used) */
- /* to be set. */
- /***************************************************************/
- do
- {
- long syms;
- struct aout_data_struct *rawptr;
- bfd_size_type amt;
-
- if (H_GET_32 (abfd, bytes->e_passize) != 0)
- break;
- if (H_GET_32 (abfd, bytes->e_syms) != 0)
- break;
- if (H_GET_32 (abfd, bytes->e_supsize) != 0)
- break;
-
- syms = H_GET_32 (abfd, bytes->e_drelocs);
- if (syms == 0)
- break;
-
- /* OK, we've passed the test as best as we can determine */
- execp->a_syms = syms;
-
- /* allocate storage for where we will store this result */
- amt = sizeof (*rawptr);
- rawptr = (struct aout_data_struct *) bfd_zalloc (abfd, amt);
-
- if (rawptr == NULL)
- return;
- abfd->tdata.aout_data = rawptr;
- obj_aout_subformat (abfd) = gnu_encap_format;
- }
- while (0);
-}
-
-/* The hp symbol table is a bit different than other a.out targets. Instead
- of having an array of nlist items and an array of strings, hp's format
- has them mixed together in one structure. In addition, the strings are
- not null terminated. It looks something like this:
-
- nlist element 1
- string1
- nlist element 2
- string2
- ...
-
- The whole symbol table is read as one chunk and then we march thru it
- and convert it to canonical form. As we march thru the table, we copy
- the nlist data into the internal form and we compact the strings and null
- terminate them, using storage from the already allocated symbol table:
-
- string1
- null
- string2
- null
- ...
-*/
-
-bfd_boolean
-MY (slurp_symbol_table) (bfd *abfd)
-{
- bfd_size_type symbol_bytes;
- struct external_nlist *syms;
- struct external_nlist *sym_pointer;
- struct external_nlist *sym_end;
- char *strings;
- aout_symbol_type *cached;
- unsigned num_syms = 0;
- bfd_size_type amt;
-
- /* If there's no work to be done, don't do any */
- if (obj_aout_symbols (abfd) != (aout_symbol_type *) NULL)
- return TRUE;
- symbol_bytes = exec_hdr (abfd)->a_syms;
-
- amt = symbol_bytes + SYM_EXTRA_BYTES;
- strings = (char *) bfd_alloc (abfd, amt);
- if (!strings)
- return FALSE;
- syms = (struct external_nlist *) (strings + SYM_EXTRA_BYTES);
- if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
- || bfd_bread (syms, symbol_bytes, abfd) != symbol_bytes)
- {
- bfd_release (abfd, syms);
- return FALSE;
- }
-
- sym_end = (struct external_nlist *) (((char *) syms) + symbol_bytes);
-
- /* first, march thru the table and figure out how many symbols there are */
- for (sym_pointer = syms; sym_pointer < sym_end; sym_pointer++, num_syms++)
- {
- /* skip over the embedded symbol. */
- sym_pointer = (struct external_nlist *) (((char *) sym_pointer) +
- sym_pointer->e_length[0]);
- }
-
- /* now that we know the symbol count, update the bfd header */
- bfd_get_symcount (abfd) = num_syms;
-
- amt = num_syms;
- amt *= sizeof (aout_symbol_type);
- cached = (aout_symbol_type *) bfd_zalloc (abfd, amt);
- if (cached == NULL && num_syms != 0)
- return FALSE;
-
- /* as we march thru the hp symbol table, convert it into a list of
- null terminated strings to hold the symbol names. Make sure any
- assignment to the strings pointer is done after we're thru using
- the nlist so we don't overwrite anything important. */
-
- /* OK, now walk the new symtable, caching symbol properties */
- {
- aout_symbol_type *cache_ptr = cached;
- /* Run through table and copy values */
- for (sym_pointer = syms, cache_ptr = cached;
- sym_pointer < sym_end; sym_pointer++, cache_ptr++)
- {
- unsigned int length;
- cache_ptr->symbol.the_bfd = abfd;
- cache_ptr->symbol.value = GET_SWORD (abfd, sym_pointer->e_value);
- cache_ptr->desc = bfd_get_16 (abfd, sym_pointer->e_almod);
- cache_ptr->type = bfd_get_8 (abfd, sym_pointer->e_type);
- cache_ptr->symbol.udata.p = NULL;
- length = bfd_get_8 (abfd, sym_pointer->e_length);
- cache_ptr->other = length; /* other not used, save length here */
-
- convert_sym_type (sym_pointer, cache_ptr, abfd);
- if (!translate_from_native_sym_flags (abfd, cache_ptr))
- return FALSE;
-
- /********************************************************/
- /* for hpux, the 'length' value indicates the length of */
- /* the symbol name which follows the nlist entry. */
- /********************************************************/
- if (length)
- {
- /**************************************************************/
- /* the hp string is not null terminated so we create a new one*/
- /* by copying the string to overlap the just vacated nlist */
- /* structure before it in memory. */
- /**************************************************************/
- cache_ptr->symbol.name = strings;
- memcpy (strings, sym_pointer + 1, length);
- strings[length] = '\0';
- strings += length + 1;
- }
- else
- cache_ptr->symbol.name = (char *) NULL;
-
- /* skip over the embedded symbol. */
- sym_pointer = (struct external_nlist *) (((char *) sym_pointer) +
- length);
- }
- }
-
- obj_aout_symbols (abfd) = cached;
-
- return TRUE;
-}
-
-void
-MY (swap_std_reloc_in) (bfd *abfd,
- struct hp300hpux_reloc *bytes,
- arelent *cache_ptr,
- asymbol **symbols,
- bfd_size_type symcount ATTRIBUTE_UNUSED)
-{
- int r_index;
- int r_extern = 0;
- unsigned int r_length;
- int r_pcrel = 0;
- struct aoutdata *su = &(abfd->tdata.aout_data->a);
-
- cache_ptr->address = H_GET_32 (abfd, bytes->r_address);
- r_index = H_GET_16 (abfd, bytes->r_index);
-
- switch (bytes->r_type[0])
- {
- case HP_RSEGMENT_TEXT:
- r_index = N_TEXT;
- break;
- case HP_RSEGMENT_DATA:
- r_index = N_DATA;
- break;
- case HP_RSEGMENT_BSS:
- r_index = N_BSS;
- break;
- case HP_RSEGMENT_EXTERNAL:
- r_extern = 1;
- break;
- case HP_RSEGMENT_PCREL:
- r_extern = 1;
- r_pcrel = 1;
- break;
- case HP_RSEGMENT_RDLT:
- break;
- case HP_RSEGMENT_RPLT:
- break;
- case HP_RSEGMENT_NOOP:
- break;
- default:
- abort ();
- break;
- }
-
- switch (bytes->r_length[0])
- {
- case HP_RLENGTH_BYTE:
- r_length = 0;
- break;
- case HP_RLENGTH_WORD:
- r_length = 1;
- break;
- case HP_RLENGTH_LONG:
- r_length = 2;
- break;
- default:
- abort ();
- break;
- }
-
- cache_ptr->howto = howto_table_std + r_length + 4 * r_pcrel;
- /* FIXME-soon: Roll baserel, jmptable, relative bits into howto setting */
-
- /* This macro uses the r_index value computed above */
- if (r_pcrel && r_extern)
- {
- /* The GNU linker assumes any offset from beginning of section */
- /* is already incorporated into the image while the HP linker */
- /* adds this in later. Add it in now... */
- MOVE_ADDRESS (-cache_ptr->address);
- }
- else
- {
- MOVE_ADDRESS (0);
- }
-}
-
-bfd_boolean
-MY (slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols)
-{
- bfd_size_type count;
- bfd_size_type reloc_size;
- void * relocs;
- arelent *reloc_cache;
- size_t each_size;
- struct hp300hpux_reloc *rptr;
- unsigned int counter;
- arelent *cache_ptr;
-
- if (asect->relocation)
- return TRUE;
-
- if (asect->flags & SEC_CONSTRUCTOR)
- return TRUE;
-
- if (asect == obj_datasec (abfd))
- {
- reloc_size = exec_hdr (abfd)->a_drsize;
- goto doit;
- }
-
- if (asect == obj_textsec (abfd))
- {
- reloc_size = exec_hdr (abfd)->a_trsize;
- goto doit;
- }
-
- bfd_set_error (bfd_error_invalid_operation);
- return FALSE;
-
-doit:
- if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
- return FALSE;
- each_size = obj_reloc_entry_size (abfd);
-
- count = reloc_size / each_size;
-
- reloc_cache = (arelent *) bfd_zalloc (abfd, count * sizeof (arelent));
- if (!reloc_cache && count != 0)
- return FALSE;
-
- relocs = bfd_alloc (abfd, reloc_size);
- if (!relocs && reloc_size != 0)
- {
- bfd_release (abfd, reloc_cache);
- return FALSE;
- }
-
- if (bfd_bread (relocs, reloc_size, abfd) != reloc_size)
- {
- bfd_release (abfd, relocs);
- bfd_release (abfd, reloc_cache);
- return FALSE;
- }
-
- rptr = (struct hp300hpux_reloc *) relocs;
- counter = 0;
- cache_ptr = reloc_cache;
-
- for (; counter < count; counter++, rptr++, cache_ptr++)
- {
- MY (swap_std_reloc_in) (abfd, rptr, cache_ptr, symbols,
- (bfd_size_type) bfd_get_symcount (abfd));
- }
-
- bfd_release (abfd, relocs);
- asect->relocation = reloc_cache;
- asect->reloc_count = count;
- return TRUE;
-}
-
-/************************************************************************/
-/* The following functions are identical to functions in aoutx.h except */
-/* they refer to MY(func) rather than NAME(aout,func) and they also */
-/* call aout_32 versions if the input file was generated by gcc */
-/************************************************************************/
-
-long aout_32_canonicalize_symtab (bfd *, asymbol **);
-long aout_32_get_symtab_upper_bound (bfd *);
-long aout_32_canonicalize_reloc (bfd *, sec_ptr, arelent **, asymbol **);
-
-long
-MY (canonicalize_symtab) (bfd *abfd, asymbol **location)
-{
- unsigned int counter = 0;
- aout_symbol_type *symbase;
-
- if (obj_aout_subformat (abfd) == gnu_encap_format)
- return aout_32_canonicalize_symtab (abfd, location);
-
- if (!MY (slurp_symbol_table) (abfd))
- return -1;
-
- for (symbase = obj_aout_symbols (abfd); counter++ < bfd_get_symcount (abfd);)
- *(location++) = (asymbol *) (symbase++);
- *location++ = 0;
- return bfd_get_symcount (abfd);
-}
-
-long
-MY (get_symtab_upper_bound) (bfd *abfd)
-{
- if (obj_aout_subformat (abfd) == gnu_encap_format)
- return aout_32_get_symtab_upper_bound (abfd);
- if (!MY (slurp_symbol_table) (abfd))
- return -1;
-
- return (bfd_get_symcount (abfd) + 1) * (sizeof (aout_symbol_type *));
-}
-
-long
-MY (canonicalize_reloc) (bfd *abfd,
- sec_ptr section,
- arelent **relptr,
- asymbol **symbols)
-{
- arelent *tblptr = section->relocation;
- unsigned int count;
-
- if (obj_aout_subformat (abfd) == gnu_encap_format)
- return aout_32_canonicalize_reloc (abfd, section, relptr, symbols);
-
- if (!(tblptr || MY (slurp_reloc_table) (abfd, section, symbols)))
- return -1;
-
- if (section->flags & SEC_CONSTRUCTOR)
- {
- arelent_chain *chain = section->constructor_chain;
- for (count = 0; count < section->reloc_count; count++)
- {
- *relptr++ = &chain->relent;
- chain = chain->next;
- }
- }
- else
- {
- tblptr = section->relocation;
-
- for (count = 0; count++ < section->reloc_count;)
- {
- *relptr++ = tblptr++;
- }
- }
- *relptr = 0;
-
- return section->reloc_count;
-}
-
-#include "aout-target.h"
#include "bfd.h"
#include "libbfd.h"
-#if defined (HOST_HPPAHPUX) || defined (HOST_HP300HPUX) || defined (HOST_HPPAMPEIX)
+#if defined (HOST_HPPAHPUX) || defined (HOST_HPPAMPEIX)
/* FIXME: sys/core.h doesn't exist for HPUX version 7. HPUX version
5, 6, and 7 core files seem to be standard trad-core.c type core
enum aout_subformat {
default_format = 0,
- /* Used on HP 9000/300 running HP/UX. See hp300hpux.c. */
+ /* Used on HP 9000/300 running HP/UX. */
gnu_encap_format,
/* Used on Linux, 386BSD, etc. See include/aout/aout64.h. */
q_magic_format
(bfd *);
bfd_boolean bfd_slurp_armap
(bfd *);
-bfd_boolean bfd_slurp_bsd_armap_f2
- (bfd *);
#define bfd_slurp_bsd_armap bfd_slurp_armap
#define bfd_slurp_coff_armap bfd_slurp_armap
bfd_boolean _bfd_archive_64_bit_slurp_armap
(bfd *);
bfd_boolean bfd_slurp_armap
(bfd *);
-bfd_boolean bfd_slurp_bsd_armap_f2
- (bfd *);
#define bfd_slurp_bsd_armap bfd_slurp_armap
#define bfd_slurp_coff_armap bfd_slurp_armap
bfd_boolean _bfd_archive_64_bit_slurp_armap
+++ /dev/null
-/* BFD internal declarations for Oasys file format handling.
- Copyright (C) 1990-2018 Free Software Foundation, Inc.
- Scrawled by Steve Chamberlain of 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. */
-
-typedef struct _oasys_symbol
-{
- asymbol symbol;
-} oasys_symbol_type;
-
-typedef struct _oasys_reloc {
- arelent relent;
- struct _oasys_reloc *next;
- unsigned int symbol;
-} oasys_reloc_type;
-
-
-#define oasys_symbol(x) ((oasys_symbol_type *)(x))
-#define oasys_per_section(x) ((oasys_per_section_type *)(x->used_by_bfd))
-
-typedef struct _oasys_per_section
-{
- asection *section;
- bfd_byte *data;
- bfd_vma offset;
- bfd_boolean had_vma;
- oasys_reloc_type **reloc_tail_ptr;
- bfd_vma pc;
-
-
- file_ptr current_pos;
- unsigned int current_byte;
- bfd_boolean initialized;
-} oasys_per_section_type;
-
-#define NSECTIONS 10
-
-typedef struct _oasys_ar_obstack {
- file_ptr file_offset;
- bfd *abfd;
-} oasys_ar_obstack_type;
-
-
-typedef struct _oasys_module_info {
- file_ptr pos;
- unsigned int size;
- bfd *abfd;
- char *name;
-} oasys_module_info_type;
-
-typedef struct _oasys_ar_data {
- oasys_module_info_type *module;
- unsigned int module_count;
- unsigned int module_index;
-} oasys_ar_data_type;
-
-typedef struct _oasys_data {
- char *strings;
- asymbol *symbols;
- unsigned int symbol_string_length;
- asection *sections[OASYS_MAX_SEC_COUNT];
- file_ptr first_data_record;
-} oasys_data_type;
-
-#define OASYS_DATA(abfd) ((abfd)->tdata.oasys_obj_data)
-#define OASYS_AR_DATA(abfd) ((abfd)->tdata.oasys_ar_data)
-
+++ /dev/null
-/* BFD back-end for NetBSD/m68k 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 TARGET_IS_BIG_ENDIAN_P
-
-#define TARGET_PAGE_SIZE 0x1000
-
-#define DEFAULT_ARCH bfd_arch_m68k
-#define DEFAULT_MID M_68K4K_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 (m68k_aout_4knbsd_,OP)
-
-/* This needs to start with a.out so GDB knows it is an a.out variant. */
-#define TARGETNAME "a.out-m68k4k-netbsd"
-
-#include "netbsd.h"
+++ /dev/null
-/* BFD back-end for linux flavored m68k 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_68020 || (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 TARGET_IS_BIG_ENDIAN_P
-#define DEFAULT_ARCH bfd_arch_m68k
-
-/* 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 (m68k_aout_linux_,OP)
-#define TARGETNAME "a.out-m68k-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
-m68klinux_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 m68klinux_bfd_final_link
-
-/* Set the machine type correctly. */
-
-static bfd_boolean
-m68klinux_write_object_contents (bfd *abfd)
-{
- struct external_exec exec_bytes;
- struct internal_exec *execp = exec_hdr (abfd);
-
- N_SET_MACHTYPE (execp, M_68020);
-
- obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
-
- WRITE_HEADERS (abfd, execp);
-
- return TRUE;
-}
-
-#define MY_write_object_contents m68klinux_write_object_contents
-\f
-/* 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)
- {
- bfd_set_error (bfd_error_no_memory);
- 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
- /* xgettext:c-format */
- (_("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_m68klinux_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)
- {
- bfd_set_error (bfd_error_no_memory);
- 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)
- {
- bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table);
- fixup_table += 4;
- bfd_put_32 (output_bfd, f->value + 2, 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"
+++ /dev/null
-/* BFD back-end for NetBSD/m68k 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 TARGET_IS_BIG_ENDIAN_P
-
-/* Our m68k ports use either 4K or 8K pages, but object files always
- assume 8K page alignment so they will work on all m68k machines. */
-#define TARGET_PAGE_SIZE 0x2000
-
-#define DEFAULT_ARCH bfd_arch_m68k
-#define DEFAULT_MID M_68K_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 (m68k_aout_nbsd_,OP)
-
-/* This needs to start with a.out so GDB knows it is an a.out variant. */
-#define TARGETNAME "a.out-m68k-netbsd"
-
-#include "netbsd.h"
+++ /dev/null
-/* BFD back-end for oasys objects.
- Copyright (C) 1990-2018 Free Software Foundation, Inc.
- Written by Steve Chamberlain of Cygnus Support, <sac@cygnus.com>.
-
- 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 UNDERSCORE_HACK 1
-#include "sysdep.h"
-#include "bfd.h"
-#include "safe-ctype.h"
-#include "libbfd.h"
-#include "oasys.h"
-#include "liboasys.h"
-#include "libiberty.h"
-
-/* Read in all the section data and relocation stuff too. */
-
-static bfd_boolean
-oasys_read_record (bfd *abfd, oasys_record_union_type *record)
-{
- bfd_size_type amt = sizeof (record->header);
-
- if (bfd_bread ((void *) record, amt, abfd) != amt)
- return FALSE;
-
- amt = record->header.length - sizeof (record->header);
- if ((long) amt <= 0)
- return TRUE;
- if (bfd_bread ((void *) ((char *) record + sizeof (record->header)), amt, abfd)
- != amt)
- return FALSE;
- return TRUE;
-}
-
-static size_t
-oasys_string_length (oasys_record_union_type *record)
-{
- return record->header.length
- - ((char *) record->symbol.name - (char *) record);
-}
-
-/* Slurp the symbol table by reading in all the records at the start file
- till we get to the first section record.
-
- We'll sort the symbolss into two lists, defined and undefined. The
- undefined symbols will be placed into the table according to their
- refno.
-
- We do this by placing all undefined symbols at the front of the table
- moving in, and the defined symbols at the end of the table moving back. */
-
-static bfd_boolean
-oasys_slurp_symbol_table (bfd *const abfd)
-{
- oasys_record_union_type record;
- oasys_data_type *data = OASYS_DATA (abfd);
- bfd_boolean loop = TRUE;
- asymbol *dest_defined;
- asymbol *dest;
- char *string_ptr;
- bfd_size_type amt;
-
- if (data->symbols != NULL)
- return TRUE;
-
- /* Buy enough memory for all the symbols and all the names. */
- amt = abfd->symcount;
- amt *= sizeof (asymbol);
- data->symbols = bfd_alloc (abfd, amt);
-
- amt = data->symbol_string_length;
-#ifdef UNDERSCORE_HACK
- /* Buy 1 more char for each symbol to keep the underscore in. */
- amt += abfd->symcount;
-#endif
- data->strings = bfd_alloc (abfd, amt);
-
- if (!data->symbols || !data->strings)
- return FALSE;
-
- dest_defined = data->symbols + abfd->symcount - 1;
-
- string_ptr = data->strings;
- if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
- return FALSE;
- while (loop)
- {
- if (! oasys_read_record (abfd, &record))
- return FALSE;
-
- switch (record.header.type)
- {
- case oasys_record_is_header_enum:
- break;
- case oasys_record_is_local_enum:
- case oasys_record_is_symbol_enum:
- {
- int flag = record.header.type == (int) oasys_record_is_local_enum ?
- (BSF_LOCAL) : (BSF_GLOBAL | BSF_EXPORT);
-
- size_t length = oasys_string_length (&record);
- switch (record.symbol.relb & RELOCATION_TYPE_BITS)
- {
- case RELOCATION_TYPE_ABS:
- dest = dest_defined--;
- dest->section = bfd_abs_section_ptr;
- dest->flags = 0;
-
- break;
- case RELOCATION_TYPE_REL:
- dest = dest_defined--;
- dest->section =
- OASYS_DATA (abfd)->sections[record.symbol.relb &
- RELOCATION_SECT_BITS];
- if (record.header.type == (int) oasys_record_is_local_enum)
- {
- dest->flags = BSF_LOCAL;
- if (dest->section == (asection *) (~0))
- {
- /* It seems that sometimes internal symbols are tied up, but
- still get output, even though there is no
- section */
- dest->section = 0;
- }
- }
- else
- dest->flags = flag;
- break;
- case RELOCATION_TYPE_UND:
- dest = data->symbols + H_GET_16 (abfd, record.symbol.refno);
- dest->section = bfd_und_section_ptr;
- break;
- case RELOCATION_TYPE_COM:
- dest = dest_defined--;
- dest->name = string_ptr;
- dest->the_bfd = abfd;
- dest->section = bfd_com_section_ptr;
- break;
- default:
- dest = dest_defined--;
- BFD_ASSERT (FALSE);
- break;
- }
- dest->name = string_ptr;
- dest->the_bfd = abfd;
- dest->udata.p = NULL;
- dest->value = H_GET_32 (abfd, record.symbol.value);
-
-#ifdef UNDERSCORE_HACK
- if (record.symbol.name[0] != '_')
- {
- string_ptr[0] = '_';
- string_ptr++;
- }
-#endif
- memcpy (string_ptr, record.symbol.name, length);
-
- string_ptr[length] = 0;
- string_ptr += length + 1;
- }
- break;
- default:
- loop = FALSE;
- }
- }
- return TRUE;
-}
-
-static long
-oasys_get_symtab_upper_bound (bfd *const abfd)
-{
- if (! oasys_slurp_symbol_table (abfd))
- return -1;
-
- return (abfd->symcount + 1) * (sizeof (oasys_symbol_type *));
-}
-
-extern const bfd_target oasys_vec;
-
-static long
-oasys_canonicalize_symtab (bfd *abfd, asymbol **location)
-{
- asymbol *symbase;
- unsigned int counter;
-
- if (! oasys_slurp_symbol_table (abfd))
- return -1;
-
- symbase = OASYS_DATA (abfd)->symbols;
- for (counter = 0; counter < abfd->symcount; counter++)
- *(location++) = symbase++;
-
- *location = 0;
- return abfd->symcount;
-}
-
-/* Archive stuff. */
-
-static const bfd_target *
-oasys_archive_p (bfd *abfd)
-{
- oasys_archive_header_type header;
- oasys_extarchive_header_type header_ext;
- unsigned int i;
- file_ptr filepos;
- bfd_size_type amt;
-
- amt = sizeof (header_ext);
- if (bfd_seek (abfd, (file_ptr) 0, 0) != 0
- || bfd_bread ((void *) &header_ext, amt, abfd) != amt)
- {
- if (bfd_get_error () != bfd_error_system_call)
- bfd_set_error (bfd_error_wrong_format);
- return NULL;
- }
-
- header.version = H_GET_32 (abfd, header_ext.version);
- header.mod_count = H_GET_32 (abfd, header_ext.mod_count);
- header.mod_tbl_offset = H_GET_32 (abfd, header_ext.mod_tbl_offset);
- header.sym_tbl_size = H_GET_32 (abfd, header_ext.sym_tbl_size);
- header.sym_count = H_GET_32 (abfd, header_ext.sym_count);
- header.sym_tbl_offset = H_GET_32 (abfd, header_ext.sym_tbl_offset);
- header.xref_count = H_GET_32 (abfd, header_ext.xref_count);
- header.xref_lst_offset = H_GET_32 (abfd, header_ext.xref_lst_offset);
-
- /* There isn't a magic number in an Oasys archive, so the best we
- can do to verify reasonableness is to make sure that the values in
- the header are too weird. */
-
- if (header.version > 10000
- || header.mod_count > 10000
- || header.sym_count > 100000
- || header.xref_count > 100000)
- return NULL;
-
- /* That all worked, let's buy the space for the header and read in
- the headers. */
- {
- oasys_ar_data_type *ar;
- oasys_module_info_type *module;
- oasys_module_table_type record;
-
- amt = sizeof (oasys_ar_data_type);
- ar = bfd_alloc (abfd, amt);
-
- amt = header.mod_count;
- amt *= sizeof (oasys_module_info_type);
- module = bfd_alloc (abfd, amt);
-
- if (!ar || !module)
- return NULL;
-
- abfd->tdata.oasys_ar_data = ar;
- ar->module = module;
- ar->module_count = header.mod_count;
-
- filepos = header.mod_tbl_offset;
- for (i = 0; i < header.mod_count; i++)
- {
- oasys_extmodule_table_type_b_type record_ext;
-
- if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
- return NULL;
-
- /* There are two ways of specifying the archive header. */
- amt = sizeof (record_ext);
- if (bfd_bread ((void *) &record_ext, amt, abfd) != amt)
- return NULL;
-
- record.mod_size = H_GET_32 (abfd, record_ext.mod_size);
- record.file_offset = H_GET_32 (abfd, record_ext.file_offset);
-
- record.dep_count = H_GET_32 (abfd, record_ext.dep_count);
- record.depee_count = H_GET_32 (abfd, record_ext.depee_count);
- record.sect_count = H_GET_32 (abfd, record_ext.sect_count);
- record.module_name_size = H_GET_32 (abfd,
- record_ext.mod_name_length);
-
- amt = record.module_name_size;
- module[i].name = bfd_alloc (abfd, amt + 1);
- if (!module[i].name)
- return NULL;
- if (bfd_bread ((void *) module[i].name, amt, abfd) != amt)
- return NULL;
- module[i].name[record.module_name_size] = 0;
- filepos += (sizeof (record_ext)
- + record.dep_count * 4
- + record.module_name_size + 1);
-
- module[i].size = record.mod_size;
- module[i].pos = record.file_offset;
- module[i].abfd = 0;
- }
- }
- return abfd->xvec;
-}
-
-static bfd_boolean
-oasys_mkobject (bfd *abfd)
-{
- bfd_size_type amt = sizeof (oasys_data_type);
-
- abfd->tdata.oasys_obj_data = bfd_alloc (abfd, amt);
-
- return abfd->tdata.oasys_obj_data != NULL;
-}
-
-/* The howto table is build using the top two bits of a reloc byte to
- index into it. The bits are PCREL,WORD/LONG. */
-
-static reloc_howto_type howto_table[] =
-{
-
- HOWTO (0, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, 0, "abs16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
- HOWTO (0, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, 0, "abs32", TRUE, 0xffffffff, 0xffffffff, FALSE),
- HOWTO (0, 0, 1, 16, TRUE, 0, complain_overflow_signed, 0, "pcrel16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
- HOWTO (0, 0, 2, 32, TRUE, 0, complain_overflow_signed, 0, "pcrel32", TRUE, 0xffffffff, 0xffffffff, FALSE)
-};
-
-/* Read in all the section data and relocation stuff too. */
-
-static bfd_boolean
-oasys_slurp_section_data (bfd *const abfd)
-{
- oasys_record_union_type record;
- oasys_data_type *data = OASYS_DATA (abfd);
- bfd_boolean loop = TRUE;
- oasys_per_section_type *per;
- asection *s;
- bfd_size_type amt;
-
- /* See if the data has been slurped already. */
- for (s = abfd->sections; s != NULL; s = s->next)
- {
- per = oasys_per_section (s);
- if (per->initialized)
- return TRUE;
- }
-
- if (data->first_data_record == 0)
- return TRUE;
-
- if (bfd_seek (abfd, data->first_data_record, SEEK_SET) != 0)
- return FALSE;
-
- while (loop)
- {
- if (! oasys_read_record (abfd, &record))
- return FALSE;
-
- switch (record.header.type)
- {
- case oasys_record_is_header_enum:
- break;
- case oasys_record_is_data_enum:
- {
- bfd_byte *src = record.data.data;
- bfd_byte *end_src = ((bfd_byte *) & record) + record.header.length;
- bfd_byte *dst_ptr;
- bfd_byte *dst_base_ptr;
- unsigned int relbit;
- unsigned int count;
- asection *section =
- data->sections[record.data.relb & RELOCATION_SECT_BITS];
- bfd_vma dst_offset;
-
- per = oasys_per_section (section);
-
- if (! per->initialized)
- {
- arelent **relpp;
-
- per->data = bfd_zalloc (abfd, section->size);
- if (!per->data)
- return FALSE;
- relpp = §ion->relocation;
- per->reloc_tail_ptr = (oasys_reloc_type **) relpp;
- per->had_vma = FALSE;
- per->initialized = TRUE;
- section->reloc_count = 0;
- section->flags = SEC_ALLOC;
- }
-
- dst_offset = H_GET_32 (abfd, record.data.addr);
- if (! per->had_vma)
- {
- /* Take the first vma we see as the base. */
- section->vma = dst_offset;
- per->had_vma = TRUE;
- }
-
- dst_offset -= section->vma;
-
- dst_base_ptr = oasys_per_section (section)->data;
- dst_ptr = oasys_per_section (section)->data +
- dst_offset;
-
- if (src < end_src)
- section->flags |= SEC_LOAD | SEC_HAS_CONTENTS;
-
- while (src < end_src)
- {
- unsigned char mod_byte = *src++;
- size_t gap = end_src - src;
-
- count = 8;
- if (mod_byte == 0 && gap >= 8)
- {
- dst_ptr[0] = src[0];
- dst_ptr[1] = src[1];
- dst_ptr[2] = src[2];
- dst_ptr[3] = src[3];
- dst_ptr[4] = src[4];
- dst_ptr[5] = src[5];
- dst_ptr[6] = src[6];
- dst_ptr[7] = src[7];
- dst_ptr += 8;
- src += 8;
- }
- else
- {
- for (relbit = 1; count-- != 0 && src < end_src; relbit <<= 1)
- {
- if (relbit & mod_byte)
- {
- unsigned char reloc = *src;
- /* This item needs to be relocated. */
- switch (reloc & RELOCATION_TYPE_BITS)
- {
- case RELOCATION_TYPE_ABS:
- break;
-
- case RELOCATION_TYPE_REL:
- {
- /* Relocate the item relative to the section. */
- oasys_reloc_type *r;
-
- amt = sizeof (oasys_reloc_type);
- r = bfd_alloc (abfd, amt);
- if (!r)
- return FALSE;
- *(per->reloc_tail_ptr) = r;
- per->reloc_tail_ptr = &r->next;
- r->next = NULL;
- /* Reference to undefined symbol. */
- src++;
- /* There is no symbol. */
- r->symbol = 0;
- /* Work out the howto. */
- abort ();
- r->relent.address = dst_ptr - dst_base_ptr;
- r->relent.howto = &howto_table[reloc >> 6];
- r->relent.sym_ptr_ptr = NULL;
- section->reloc_count++;
-
- /* Fake up the data to look like
- it's got the -ve pc in it, this
- makes it much easier to convert
- into other formats. This is done
- by hitting the addend. */
- if (r->relent.howto->pc_relative)
- r->relent.addend -= dst_ptr - dst_base_ptr;
- }
- break;
-
- case RELOCATION_TYPE_UND:
- {
- oasys_reloc_type *r;
-
- amt = sizeof (oasys_reloc_type);
- r = bfd_alloc (abfd, amt);
- if (!r)
- return FALSE;
- *(per->reloc_tail_ptr) = r;
- per->reloc_tail_ptr = &r->next;
- r->next = NULL;
- /* Reference to undefined symbol. */
- src++;
- /* Get symbol number. */
- r->symbol = (src[0] << 8) | src[1];
- /* Work out the howto. */
- abort ();
-
- r->relent.addend = 0;
- r->relent.address = dst_ptr - dst_base_ptr;
- r->relent.howto = &howto_table[reloc >> 6];
- r->relent.sym_ptr_ptr = NULL;
- section->reloc_count++;
-
- src += 2;
- /* Fake up the data to look like
- it's got the -ve pc in it, this
- makes it much easier to convert
- into other formats. This is done
- by hitting the addend. */
- if (r->relent.howto->pc_relative)
- r->relent.addend -= dst_ptr - dst_base_ptr;
- }
- break;
- case RELOCATION_TYPE_COM:
- BFD_FAIL ();
- }
- }
- *dst_ptr++ = *src++;
- }
- }
- }
- }
- break;
- case oasys_record_is_local_enum:
- case oasys_record_is_symbol_enum:
- case oasys_record_is_section_enum:
- break;
- default:
- loop = FALSE;
- }
- }
-
- return TRUE;
-
-}
-
-#define MAX_SECS 16
-
-static const bfd_target *
-oasys_object_p (bfd *abfd)
-{
- oasys_data_type *oasys;
- oasys_data_type *save = OASYS_DATA (abfd);
- bfd_boolean loop = TRUE;
- bfd_boolean had_usefull = FALSE;
-
- abfd->tdata.oasys_obj_data = 0;
- oasys_mkobject (abfd);
- oasys = OASYS_DATA (abfd);
- memset ((void *) oasys->sections, 0xff, sizeof (oasys->sections));
-
- /* Point to the start of the file. */
- if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
- goto fail;
- oasys->symbol_string_length = 0;
-
- /* Inspect the records, but only keep the section info -
- remember the size of the symbols. */
- oasys->first_data_record = 0;
- while (loop)
- {
- oasys_record_union_type record;
- if (! oasys_read_record (abfd, &record))
- goto fail;
- if ((size_t) record.header.length < (size_t) sizeof (record.header))
- goto fail;
-
- switch ((oasys_record_enum_type) (record.header.type))
- {
- case oasys_record_is_header_enum:
- had_usefull = TRUE;
- break;
- case oasys_record_is_symbol_enum:
- case oasys_record_is_local_enum:
- /* Count symbols and remember their size for a future malloc. */
- abfd->symcount++;
- oasys->symbol_string_length += 1 + oasys_string_length (&record);
- had_usefull = TRUE;
- break;
- case oasys_record_is_section_enum:
- {
- asection *s;
- char *buffer;
- unsigned int section_number;
-
- if (record.section.header.length != sizeof (record.section))
- goto fail;
-
- buffer = bfd_alloc (abfd, (bfd_size_type) 3);
- if (!buffer)
- goto fail;
- section_number = record.section.relb & RELOCATION_SECT_BITS;
- sprintf (buffer, "%u", section_number);
- s = bfd_make_section (abfd, buffer);
- oasys->sections[section_number] = s;
- switch (record.section.relb & RELOCATION_TYPE_BITS)
- {
- case RELOCATION_TYPE_ABS:
- case RELOCATION_TYPE_REL:
- break;
- case RELOCATION_TYPE_UND:
- case RELOCATION_TYPE_COM:
- BFD_FAIL ();
- }
-
- s->size = H_GET_32 (abfd, record.section.value);
- s->vma = H_GET_32 (abfd, record.section.vma);
- s->flags = 0;
- had_usefull = TRUE;
- }
- break;
- case oasys_record_is_data_enum:
- oasys->first_data_record = bfd_tell (abfd) - record.header.length;
- /* Fall through. */
- case oasys_record_is_debug_enum:
- case oasys_record_is_module_enum:
- case oasys_record_is_named_section_enum:
- case oasys_record_is_end_enum:
- if (! had_usefull)
- goto fail;
- loop = FALSE;
- break;
- default:
- goto fail;
- }
- }
- oasys->symbols = NULL;
-
- /* Oasys support several architectures, but I can't see a simple way
- to discover which one is in a particular file - we'll guess. */
- bfd_default_set_arch_mach (abfd, bfd_arch_m68k, 0);
- if (abfd->symcount != 0)
- abfd->flags |= HAS_SYMS;
-
- /* We don't know if a section has data until we've read it. */
- oasys_slurp_section_data (abfd);
-
- return abfd->xvec;
-
-fail:
- (void) bfd_release (abfd, oasys);
- abfd->tdata.oasys_obj_data = save;
- return NULL;
-}
-
-
-static void
-oasys_get_symbol_info (bfd *ignore_abfd ATTRIBUTE_UNUSED,
- asymbol *symbol,
- symbol_info *ret)
-{
- bfd_symbol_info (symbol, ret);
-
- if (!symbol->section)
- ret->type = (symbol->flags & BSF_LOCAL) ? 'a' : 'A';
-}
-
-static void
-oasys_print_symbol (bfd *abfd, void * afile, asymbol *symbol, bfd_print_symbol_type how)
-{
- FILE *file = (FILE *) afile;
-
- switch (how)
- {
- case bfd_print_symbol_name:
- case bfd_print_symbol_more:
- fprintf (file, "%s", symbol->name);
- break;
- case bfd_print_symbol_all:
- {
- const char *section_name = symbol->section == NULL ?
- (const char *) "*abs" : symbol->section->name;
-
- bfd_print_symbol_vandf (abfd, (void *) file, symbol);
-
- fprintf (file, " %-5s %s",
- section_name,
- symbol->name);
- }
- break;
- }
-}
-
-static bfd_boolean
-oasys_new_section_hook (bfd *abfd, asection *newsect)
-{
- if (!newsect->used_by_bfd)
- {
- newsect->used_by_bfd
- = bfd_alloc (abfd, (bfd_size_type) sizeof (oasys_per_section_type));
- if (!newsect->used_by_bfd)
- return FALSE;
- }
- oasys_per_section (newsect)->data = NULL;
- oasys_per_section (newsect)->section = newsect;
- oasys_per_section (newsect)->offset = 0;
- oasys_per_section (newsect)->initialized = FALSE;
- newsect->alignment_power = 1;
-
- /* Turn the section string into an index. */
- sscanf (newsect->name, "%u", &newsect->target_index);
-
- return _bfd_generic_new_section_hook (abfd, newsect);
-}
-
-
-static long
-oasys_get_reloc_upper_bound (bfd *abfd, sec_ptr asect)
-{
- if (! oasys_slurp_section_data (abfd))
- return -1;
- return (asect->reloc_count + 1) * sizeof (arelent *);
-}
-
-static bfd_boolean
-oasys_get_section_contents (bfd *abfd,
- sec_ptr section,
- void * location,
- file_ptr offset,
- bfd_size_type count)
-{
- oasys_per_section_type *p = oasys_per_section (section);
-
- oasys_slurp_section_data (abfd);
-
- if (! p->initialized)
- (void) memset (location, 0, (size_t) count);
- else
- (void) memcpy (location, (void *) (p->data + offset), (size_t) count);
-
- return TRUE;
-}
-
-static long
-oasys_canonicalize_reloc (bfd *ignore_abfd ATTRIBUTE_UNUSED,
- sec_ptr section,
- arelent **relptr,
- asymbol **symbols ATTRIBUTE_UNUSED)
-{
- unsigned int reloc_count = 0;
- oasys_reloc_type *src = (oasys_reloc_type *) (section->relocation);
-
- if (src != NULL)
- abort ();
-
- *relptr = NULL;
- return section->reloc_count = reloc_count;
-}
-
-
-/* Writing. */
-
-/* Calculate the checksum and write one record. */
-
-static bfd_boolean
-oasys_write_record (bfd *abfd,
- oasys_record_enum_type type,
- oasys_record_union_type *record,
- size_t size)
-{
- int checksum;
- size_t i;
- unsigned char *ptr;
-
- record->header.length = size;
- record->header.type = (int) type;
- record->header.check_sum = 0;
- record->header.fill = 0;
- ptr = (unsigned char *) &record->pad[0];
- checksum = 0;
- for (i = 0; i < size; i++)
- checksum += *ptr++;
- record->header.check_sum = 0xff & (-checksum);
- if (bfd_bwrite ((void *) record, (bfd_size_type) size, abfd) != size)
- return FALSE;
- return TRUE;
-}
-
-
-/* Write out all the symbols. */
-
-static bfd_boolean
-oasys_write_syms (bfd *abfd)
-{
- unsigned int count;
- asymbol **generic = bfd_get_outsymbols (abfd);
- unsigned int sym_index = 0;
-
- for (count = 0; count < bfd_get_symcount (abfd); count++)
- {
- oasys_symbol_record_type symbol;
- asymbol *const g = generic[count];
- const char *src = g->name;
- char *dst = symbol.name;
- unsigned int l = 0;
-
- if (bfd_is_com_section (g->section))
- {
- symbol.relb = RELOCATION_TYPE_COM;
- H_PUT_16 (abfd, sym_index, symbol.refno);
- sym_index++;
- }
- else if (bfd_is_abs_section (g->section))
- {
- symbol.relb = RELOCATION_TYPE_ABS;
- H_PUT_16 (abfd, 0, symbol.refno);
- }
- else if (bfd_is_und_section (g->section))
- {
- symbol.relb = RELOCATION_TYPE_UND;
- H_PUT_16 (abfd, sym_index, symbol.refno);
- /* Overload the value field with the output sym_index number */
- sym_index++;
- }
- else if (g->flags & BSF_DEBUGGING)
- /* Throw it away. */
- continue;
- else
- {
- if (g->section == NULL)
- /* Sometime, the oasys tools give out a symbol with illegal
- bits in it, we'll output it in the same broken way. */
- symbol.relb = RELOCATION_TYPE_REL | 0;
- else
- symbol.relb = RELOCATION_TYPE_REL | g->section->output_section->target_index;
-
- H_PUT_16 (abfd, 0, symbol.refno);
- }
-
-#ifdef UNDERSCORE_HACK
- if (src[l] == '_')
- dst[l++] = '.';
-#endif
- while (src[l])
- {
- dst[l] = src[l];
- l++;
- }
-
- H_PUT_32 (abfd, g->value, symbol.value);
-
- if (g->flags & BSF_LOCAL)
- {
- if (! oasys_write_record (abfd,
- oasys_record_is_local_enum,
- (oasys_record_union_type *) & symbol,
- offsetof (oasys_symbol_record_type,
- name[0]) + l))
- return FALSE;
- }
- else
- {
- if (! oasys_write_record (abfd,
- oasys_record_is_symbol_enum,
- (oasys_record_union_type *) & symbol,
- offsetof (oasys_symbol_record_type,
- name[0]) + l))
- return FALSE;
- }
- g->value = sym_index - 1;
- }
-
- return TRUE;
-}
-
-/* Write a section header for each section. */
-
-static bfd_boolean
-oasys_write_sections (bfd *abfd)
-{
- asection *s;
- static oasys_section_record_type out;
-
- for (s = abfd->sections; s != NULL; s = s->next)
- {
- if (!ISDIGIT (s->name[0]))
- {
- _bfd_error_handler
- /* xgettext:c-format */
- (_("%pB: can not represent section `%pA' in oasys"), abfd, s);
- bfd_set_error (bfd_error_nonrepresentable_section);
- return FALSE;
- }
- out.relb = RELOCATION_TYPE_REL | s->target_index;
- H_PUT_32 (abfd, s->size, out.value);
- H_PUT_32 (abfd, s->vma, out.vma);
-
- if (! oasys_write_record (abfd,
- oasys_record_is_section_enum,
- (oasys_record_union_type *) & out,
- sizeof (out)))
- return FALSE;
- }
- return TRUE;
-}
-
-static bfd_boolean
-oasys_write_header (bfd *abfd)
-{
- /* Create and write the header. */
- oasys_header_record_type r;
- size_t length = strlen (abfd->filename);
-
- if (length > (size_t) sizeof (r.module_name))
- length = sizeof (r.module_name);
- else if (length < (size_t) sizeof (r.module_name))
- (void) memset (r.module_name + length, ' ',
- sizeof (r.module_name) - length);
-
- (void) memcpy (r.module_name, abfd->filename, length);
-
- r.version_number = OASYS_VERSION_NUMBER;
- r.rev_number = OASYS_REV_NUMBER;
-
- return oasys_write_record (abfd, oasys_record_is_header_enum,
- (oasys_record_union_type *) & r,
- offsetof (oasys_header_record_type,
- description[0]));
-}
-
-static bfd_boolean
-oasys_write_end (bfd *abfd)
-{
- oasys_end_record_type end;
- unsigned char null = 0;
-
- end.relb = RELOCATION_TYPE_ABS;
- H_PUT_32 (abfd, abfd->start_address, end.entry);
- H_PUT_16 (abfd, 0, end.fill);
- end.zero = 0;
- if (! oasys_write_record (abfd,
- oasys_record_is_end_enum,
- (oasys_record_union_type *) & end,
- sizeof (end)))
- return FALSE;
-
- return bfd_bwrite ((void *) &null, (bfd_size_type) 1, abfd) == 1;
-}
-
-static int
-comp (const void * ap, const void * bp)
-{
- arelent *a = *((arelent **) ap);
- arelent *b = *((arelent **) bp);
-
- return a->address - b->address;
-}
-
-static bfd_boolean
-oasys_write_data (bfd *abfd)
-{
- asection *s;
-
- for (s = abfd->sections; s != NULL; s = s->next)
- {
- if (s->flags & SEC_LOAD)
- {
- bfd_byte *raw_data = oasys_per_section (s)->data;
- oasys_data_record_type processed_data;
- bfd_size_type current_byte_index = 0;
- unsigned int relocs_to_go = s->reloc_count;
- arelent **p = s->orelocation;
-
- if (s->reloc_count != 0)
- /* Sort the reloc records so it's easy to insert the relocs into the
- data. */
- qsort (s->orelocation, s->reloc_count, sizeof (arelent **), comp);
-
- current_byte_index = 0;
- processed_data.relb = s->target_index | RELOCATION_TYPE_REL;
-
- while (current_byte_index < s->size)
- {
- /* Scan forwards by eight bytes or however much is left and see if
- there are any relocations going on. */
- bfd_byte *mod = &processed_data.data[0];
- bfd_byte *dst = &processed_data.data[1];
-
- unsigned int i = 0;
- *mod = 0;
-
- H_PUT_32 (abfd, s->vma + current_byte_index,
- processed_data.addr);
-
- /* Don't start a relocation unless you're sure you can finish it
- within the same data record. The worst case relocation is a
- 4-byte relocatable value which is split across two modification
- bytes (1 relocation byte + 2 symbol reference bytes + 2 data +
- 1 modification byte + 2 data = 8 bytes total). That's where
- the magic number 8 comes from. */
- while (current_byte_index < s->size && dst <=
- & processed_data.data[sizeof (processed_data.data) - 8])
- {
- if (relocs_to_go != 0)
- {
- arelent *r = *p;
-
- /* There is a relocation, is it for this byte ? */
- if (r->address == current_byte_index)
- abort ();
- }
-
- /* If this is coming from an unloadable section then copy
- zeros. */
- if (raw_data == NULL)
- *dst++ = 0;
- else
- *dst++ = *raw_data++;
-
- if (++i >= 8)
- {
- i = 0;
- mod = dst++;
- *mod = 0;
- }
- current_byte_index++;
- }
-
- /* Don't write a useless null modification byte. */
- if (dst == mod + 1)
- --dst;
-
- if (! (oasys_write_record
- (abfd, oasys_record_is_data_enum,
- ((oasys_record_union_type *) &processed_data),
- (size_t) (dst - (bfd_byte *) &processed_data))))
- return FALSE;
- }
- }
- }
-
- return TRUE;
-}
-
-static bfd_boolean
-oasys_write_object_contents (bfd *abfd)
-{
- if (! oasys_write_header (abfd))
- return FALSE;
- if (! oasys_write_syms (abfd))
- return FALSE;
- if (! oasys_write_sections (abfd))
- return FALSE;
- if (! oasys_write_data (abfd))
- return FALSE;
- if (! oasys_write_end (abfd))
- return FALSE;
- return TRUE;
-}
-
-/* Set section contents is complicated with OASYS since the format is
- not a byte image, but a record stream. */
-
-static bfd_boolean
-oasys_set_section_contents (bfd *abfd,
- sec_ptr section,
- const void * location,
- file_ptr offset,
- bfd_size_type count)
-{
- if (count != 0)
- {
- if (oasys_per_section (section)->data == NULL)
- {
- oasys_per_section (section)->data = bfd_alloc (abfd, section->size);
- if (!oasys_per_section (section)->data)
- return FALSE;
- }
- (void) memcpy ((void *) (oasys_per_section (section)->data + offset),
- location, (size_t) count);
- }
- return TRUE;
-}
-
-
-
-/* Native-level interface to symbols. */
-
-/* We read the symbols into a buffer, which is discarded when this
- function exits. We read the strings into a buffer large enough to
- hold them all plus all the cached symbol entries. */
-
-static asymbol *
-oasys_make_empty_symbol (bfd *abfd)
-{
- bfd_size_type amt = sizeof (oasys_symbol_type);
- oasys_symbol_type *new_symbol_type = bfd_zalloc (abfd, amt);
-
- if (!new_symbol_type)
- return NULL;
- new_symbol_type->symbol.the_bfd = abfd;
- return &new_symbol_type->symbol;
-}
-
-/* User should have checked the file flags; perhaps we should return
- BFD_NO_MORE_SYMBOLS if there are none? */
-
-static bfd *
-oasys_openr_next_archived_file (bfd *arch, bfd *prev)
-{
- oasys_ar_data_type *ar = OASYS_AR_DATA (arch);
- oasys_module_info_type *p;
-
- /* Take the next one from the arch state, or reset. */
- if (prev == NULL)
- /* Reset the index - the first two entries are bogus. */
- ar->module_index = 0;
-
- p = ar->module + ar->module_index;
- ar->module_index++;
-
- if (ar->module_index <= ar->module_count)
- {
- if (p->abfd == NULL)
- {
- p->abfd = _bfd_create_empty_archive_element_shell (arch);
- p->abfd->origin = p->pos;
- p->abfd->filename = xstrdup (p->name);
-
- /* Fixup a pointer to this element for the member. */
- p->abfd->arelt_data = (void *) p;
- }
- return p->abfd;
- }
-
- bfd_set_error (bfd_error_no_more_archived_files);
- return NULL;
-}
-
-#define oasys_find_nearest_line _bfd_nosymbols_find_nearest_line
-#define oasys_find_line _bfd_nosymbols_find_line
-#define oasys_find_inliner_info _bfd_nosymbols_find_inliner_info
-
-static int
-oasys_generic_stat_arch_elt (bfd *abfd, struct stat *buf)
-{
- oasys_module_info_type *mod = (oasys_module_info_type *) abfd->arelt_data;
-
- if (mod == NULL)
- {
- bfd_set_error (bfd_error_invalid_operation);
- return -1;
- }
-
- buf->st_size = mod->size;
- buf->st_mode = 0666;
- return 0;
-}
-
-static int
-oasys_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
- struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-#define oasys_close_and_cleanup _bfd_generic_close_and_cleanup
-#define oasys_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
-#define oasys_slurp_armap _bfd_bool_bfd_true
-#define oasys_slurp_extended_name_table _bfd_bool_bfd_true
-#define oasys_construct_extended_name_table \
- _bfd_noarchive_construct_extended_name_table
-#define oasys_truncate_arname bfd_dont_truncate_arname
-#define oasys_write_armap _bfd_noarchive_write_armap
-#define oasys_read_ar_hdr _bfd_ptr_bfd_null_error
-#define oasys_write_ar_hdr _bfd_noarchive_write_ar_hdr
-#define oasys_get_elt_at_index _bfd_generic_get_elt_at_index
-#define oasys_update_armap_timestamp _bfd_bool_bfd_true
-#define oasys_bfd_is_local_label_name bfd_generic_is_local_label_name
-#define oasys_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
-#define oasys_get_lineno _bfd_nosymbols_get_lineno
-#define oasys_get_symbol_version_string _bfd_nosymbols_get_symbol_version_string
-#define oasys_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
-#define oasys_read_minisymbols _bfd_generic_read_minisymbols
-#define oasys_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
-#define oasys_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
-#define oasys_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup
-#define oasys_set_arch_mach bfd_default_set_arch_mach
-#define oasys_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
-#define oasys_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
-#define oasys_bfd_relax_section bfd_generic_relax_section
-#define oasys_bfd_gc_sections bfd_generic_gc_sections
-#define oasys_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define oasys_bfd_merge_sections bfd_generic_merge_sections
-#define oasys_bfd_is_group_section bfd_generic_is_group_section
-#define oasys_bfd_discard_group bfd_generic_discard_group
-#define oasys_section_already_linked _bfd_generic_section_already_linked
-#define oasys_bfd_define_common_symbol bfd_generic_define_common_symbol
-#define oasys_bfd_define_start_stop bfd_generic_define_start_stop
-#define oasys_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
-#define oasys_bfd_link_add_symbols _bfd_generic_link_add_symbols
-#define oasys_bfd_link_just_syms _bfd_generic_link_just_syms
-#define oasys_bfd_copy_link_hash_symbol_type \
- _bfd_generic_copy_link_hash_symbol_type
-#define oasys_bfd_final_link _bfd_generic_final_link
-#define oasys_bfd_link_split_section _bfd_generic_link_split_section
-#define oasys_bfd_link_check_relocs _bfd_generic_link_check_relocs
-#define oasys_set_reloc _bfd_generic_set_reloc
-
-const bfd_target oasys_vec =
-{
- "oasys", /* Name. */
- bfd_target_oasys_flavour,
- BFD_ENDIAN_BIG, /* Target byte order. */
- BFD_ENDIAN_BIG, /* Target headers byte order. */
- (HAS_RELOC | EXEC_P | /* Object flags. */
- HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
- (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
- | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
- 0, /* Leading underscore. */
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Headers. */
-
- {_bfd_dummy_target,
- oasys_object_p, /* bfd_check_format. */
- oasys_archive_p,
- _bfd_dummy_target,
- },
- { /* bfd_set_format. */
- _bfd_bool_bfd_false_error,
- oasys_mkobject,
- _bfd_generic_mkarchive,
- _bfd_bool_bfd_false_error
- },
- { /* bfd_write_contents. */
- _bfd_bool_bfd_false_error,
- oasys_write_object_contents,
- _bfd_write_archive_contents,
- _bfd_bool_bfd_false_error,
- },
-
- BFD_JUMP_TABLE_GENERIC (oasys),
- BFD_JUMP_TABLE_COPY (_bfd_generic),
- BFD_JUMP_TABLE_CORE (_bfd_nocore),
- BFD_JUMP_TABLE_ARCHIVE (oasys),
- BFD_JUMP_TABLE_SYMBOLS (oasys),
- BFD_JUMP_TABLE_RELOCS (oasys),
- BFD_JUMP_TABLE_WRITE (oasys),
- BFD_JUMP_TABLE_LINK (oasys),
- BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
- NULL,
-
- NULL
-};
oldrawptr = abfd->tdata.aout_data;
abfd->tdata.aout_data = rawptr;
- /* Copy the contents of the old tdata struct.
- In particular, we want the subformat, since for hpux it was set in
- hp300hpux.c:swap_exec_header_in and will be used in
- hp300hpux.c:callback. */
+ /* Copy the contents of the old tdata struct. */
if (oldrawptr != NULL)
*abfd->tdata.aout_data = *oldrawptr;
arch_flags = M_SPARCLET;
break;
- case bfd_arch_m68k:
- switch (machine)
- {
- case 0: arch_flags = M_68010; break;
- case bfd_mach_m68000: arch_flags = M_UNKNOWN; *unknown = FALSE; break;
- case bfd_mach_m68010: arch_flags = M_68010; break;
- case bfd_mach_m68020: arch_flags = M_68020; break;
- default: arch_flags = M_UNKNOWN; break;
- }
- break;
-
case bfd_arch_i386:
if (machine == 0
|| machine == bfd_mach_i386_i386
FIXME: At this point we do not know how much space the symbol
table will require. This will not work for any (nonstandard)
a.out target that needs to know the symbol table size before it
- can compute the relocation file positions. This may or may not
- be the case for the hp300hpux target, for example. */
+ can compute the relocation file positions. */
(*callback) (abfd, &aout_info.treloff, &aout_info.dreloff,
&aout_info.symoff);
obj_textsec (abfd)->rel_filepos = aout_info.treloff;
#endif
break;
- case IMAGE_FILE_MACHINE_M68K:
-#ifdef MC68AGIC
- magic = MC68MAGIC;
-#endif
- break;
-
case IMAGE_FILE_MACHINE_R3000:
case IMAGE_FILE_MACHINE_R4000:
case IMAGE_FILE_MACHINE_R10000:
aout-sparcle.c
aout-target.h
aout-tic30.c
-aout0.c
aout32.c
aout64.c
aoutf1.h
cf-sparclynx.c
cisco-core.c
coff-alpha.c
-coff-apollo.c
coff-arm.c
-coff-aux.c
coff-bfd.c
coff-go32.c
coff-i386.c
-coff-m68k.c
coff-mips.c
coff-rs6000.c
coff-sh.c
coff-sparc.c
coff-stgo32.c
-coff-svm68k.c
coff-tic30.c
coff-tic4x.c
coff-tic54x.c
coff-tic80.c
-coff-u68k.c
coff-x86_64.c
coff-z80.c
coff-z8k.c
genlink.h
go32stub.h
hash.c
-hp300bsd.c
-hp300hpux.c
hpux-core.c
i386aout.c
i386bsd.c
libcoff.h
libecoff.h
libhppa.h
-liboasys.h
libpei.h
libxcoff.h
linker.c
lynx-core.c
-m68k4knetbsd.c
-m68klinux.c
-m68knetbsd.c
mach-o-aarch64.c
mach-o-arm.c
mach-o-i386.c
netbsd.h
ns32k.h
ns32knetbsd.c
-oasys.c
opncls.c
osf-core.c
pc532-mach.c
vax1knetbsd.c
vaxnetbsd.c
verilog.c
-versados.c
version.h
vms-alpha.c
vms-lib.c
oldrawptr = abfd->tdata.aout_data;
abfd->tdata.aout_data = rawptr;
- /* Copy the contents of the old tdata struct.
- In particular, we want the subformat, since for hpux it was set in
- hp300hpux.c:swap_exec_header_in and will be used in
- hp300hpux.c:callback. */
+ /* Copy the contents of the old tdata struct. */
if (oldrawptr != NULL)
*abfd->tdata.aout_data = *oldrawptr;
. bfd_target_ecoff_flavour,
. bfd_target_xcoff_flavour,
. bfd_target_elf_flavour,
-. bfd_target_oasys_flavour,
. bfd_target_tekhex_flavour,
. bfd_target_srec_flavour,
. bfd_target_verilog_flavour,
extern const bfd_target alpha_vms_vec;
extern const bfd_target alpha_vms_lib_txt_vec;
extern const bfd_target am33_elf32_linux_vec;
-extern const bfd_target aout0_be_vec;
extern const bfd_target aout64_vec;
extern const bfd_target aout_vec;
extern const bfd_target arc_elf32_be_vec;
extern const bfd_target m32r_elf32_linux_le_vec;
extern const bfd_target m68hc11_elf32_vec;
extern const bfd_target m68hc12_elf32_vec;
-extern const bfd_target m68k_aout_4knbsd_vec;
-extern const bfd_target m68k_aout_hp300bsd_vec;
-extern const bfd_target m68k_aout_hp300hpux_vec;
-extern const bfd_target m68k_aout_linux_vec;
-extern const bfd_target m68k_aout_nbsd_vec;
-extern const bfd_target m68k_coff_vec;
-extern const bfd_target m68k_coff_apollo_vec;
-extern const bfd_target m68k_coff_aux_vec;
-extern const bfd_target m68k_coff_sysv_vec;
-extern const bfd_target m68k_coff_un_vec;
extern const bfd_target m68k_elf32_vec;
-extern const bfd_target m68k_versados_vec;
extern const bfd_target mach_o_be_vec;
extern const bfd_target mach_o_le_vec;
extern const bfd_target mach_o_fat_vec;
extern const bfd_target nios2_elf32_le_vec;
extern const bfd_target ns32k_aout_pc532mach_vec;
extern const bfd_target ns32k_aout_pc532nbsd_vec;
-extern const bfd_target oasys_vec;
extern const bfd_target or1k_elf32_vec;
extern const bfd_target pdp11_aout_vec;
extern const bfd_target pef_vec;
&am33_elf32_linux_vec,
- &aout0_be_vec,
#ifdef BFD64
&aout64_vec, /* Only compiled if host has long-long support. */
#endif
&m68hc11_elf32_vec,
&m68hc12_elf32_vec,
-#if 0
- &m68k_aout_4knbsd_vec,
- /* Clashes with sparc_aout_sunos_be_vec magic no. */
- &m68k_aout_hp300bsd_vec,
-#endif
- &m68k_aout_hp300hpux_vec,
-#if 0
- /* Since a.out files lack decent magic numbers, no way to recognize
- which kind of a.out file it is. */
- &m68k_aout_linux_vec,
-#endif
- &m68k_aout_nbsd_vec,
- &m68k_coff_vec,
-#if 0
- &m68k_coff_apollo_vec,
- &m68k_coff_aux_vec,
-#endif
- &m68k_coff_sysv_vec,
- &m68k_coff_un_vec,
&m68k_elf32_vec,
- &m68k_versados_vec,
&mach_o_be_vec,
&mach_o_le_vec,
&ns32k_aout_pc532mach_vec,
&ns32k_aout_pc532nbsd_vec,
-#if 0
- /* We have no oasys tools anymore, so we can't test any of this
- anymore. If you want to test the stuff yourself, go ahead...
- steve@cygnus.com
- Worse, since there is no magic number for archives, there
- can be annoying target mis-matches. */
- &oasys_vec,
-#endif
-
&or1k_elf32_vec,
&pdp11_aout_vec,
case bfd_target_ecoff_flavour: return "ECOFF";
case bfd_target_xcoff_flavour: return "XCOFF";
case bfd_target_elf_flavour: return "ELF";
- case bfd_target_oasys_flavour: return "Oasys";
case bfd_target_tekhex_flavour: return "Tekhex";
case bfd_target_srec_flavour: return "Srec";
case bfd_target_verilog_flavour: return "Verilog";
+++ /dev/null
-/* BFD back-end for VERSAdos-E objects.
- Copyright (C) 1995-2018 Free Software Foundation, Inc.
- Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
-
- Versados is a Motorola trademark.
-
- 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. */
-
-/*
- SUBSECTION
- VERSAdos-E relocatable object file format
-
- DESCRIPTION
-
- This module supports reading of VERSAdos relocatable
- object files.
-
- A VERSAdos file looks like contains
-
- o Identification Record
- o External Symbol Definition Record
- o Object Text Record
- o End Record. */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "libiberty.h"
-
-
-#define VHEADER '1'
-#define VESTDEF '2'
-#define VOTR '3'
-#define VEND '4'
-
-#define ES_BASE 17 /* First symbol has esdid 17. */
-
-/* Per file target dependent information. */
-
-/* One for each section. */
-struct esdid
-{
- asection *section; /* Ptr to bfd version. */
- unsigned char *contents; /* Used to build image. */
- bfd_size_type content_size; /* The size of the contents buffer. */
- int pc;
- int relocs; /* Reloc count, valid end of pass 1. */
- int donerel; /* Have relocs been translated. */
-};
-
-typedef struct versados_data_struct
-{
- int es_done; /* Count of symbol index, starts at ES_BASE. */
- asymbol *symbols; /* Pointer to local symbols. */
- char *strings; /* Strings of all the above. */
- int stringlen; /* Len of string table (valid end of pass1). */
- int nsecsyms; /* Number of sections. */
-
- int ndefs; /* Number of exported symbols (they dont get esdids). */
- int nrefs; /* Number of imported symbols (valid end of pass1). */
-
- int ref_idx; /* Current processed value of the above. */
- int def_idx;
-
- int pass_2_done;
-
- struct esdid e[16]; /* Per section info. */
- int alert; /* To see if we're trampling. */
- asymbol *rest[256 - 16]; /* Per symbol info. */
-}
-tdata_type;
-
-#define VDATA(abfd) (abfd->tdata.versados_data)
-#define EDATA(abfd, n) (abfd->tdata.versados_data->e[(n) < 16 ? (n) : 0])
-#define RDATA(abfd, n) (abfd->tdata.versados_data->rest[(n) < 240 ? (n) : 0])
-
-struct ext_otr
-{
- unsigned char size;
- char type;
- unsigned char map[4];
- unsigned char esdid;
- unsigned char data[200];
-};
-
-struct ext_vheader
-{
- unsigned char size;
- char type; /* Record type. */
- char name[10]; /* Module name. */
- char rev; /* Module rev number. */
- char lang;
- char vol[4];
- char user[2];
- char cat[8];
- char fname[8];
- char ext[2];
- char time[3];
- char date[3];
- char rest[211];
-};
-
-struct ext_esd
-{
- unsigned char size;
- char type;
- unsigned char esd_entries[1];
-};
-
-#define ESD_ABS 0
-#define ESD_COMMON 1
-#define ESD_STD_REL_SEC 2
-#define ESD_SHRT_REL_SEC 3
-#define ESD_XDEF_IN_SEC 4
-#define ESD_XDEF_IN_ABS 5
-#define ESD_XREF_SEC 6
-#define ESD_XREF_SYM 7
-
-union ext_any
-{
- unsigned char size;
- struct ext_vheader header;
- struct ext_esd esd;
- struct ext_otr otr;
-};
-
-/* Initialize by filling in the hex conversion array. */
-
-/* Set up the tdata information. */
-
-static bfd_boolean
-versados_mkobject (bfd *abfd)
-{
- if (abfd->tdata.versados_data == NULL)
- {
- bfd_size_type amt = sizeof (tdata_type);
- tdata_type *tdata = bfd_zalloc (abfd, amt);
-
- if (tdata == NULL)
- return FALSE;
- abfd->tdata.versados_data = tdata;
- tdata->symbols = NULL;
- VDATA (abfd)->alert = 0x12345678;
- }
-
- bfd_default_set_arch_mach (abfd, bfd_arch_m68k, 0);
- return TRUE;
-}
-
-/* Report a problem in an S record file. FIXME: This probably should
- not call fprintf, but we really do need some mechanism for printing
- error messages. */
-
-static asymbol *
-versados_new_symbol (bfd *abfd,
- int snum,
- const char *name,
- bfd_vma val,
- asection *sec)
-{
- asymbol *n = VDATA (abfd)->symbols + snum;
- n->name = name;
- n->value = val;
- n->section = sec;
- n->the_bfd = abfd;
- n->flags = 0;
- return n;
-}
-
-static bfd_boolean
-get_record (bfd *abfd, union ext_any *ptr)
-{
- if (bfd_bread (&ptr->size, (bfd_size_type) 1, abfd) != 1
- || (bfd_bread ((char *) ptr + 1, (bfd_size_type) ptr->size, abfd)
- != ptr->size))
- return FALSE;
-
- {
- bfd_size_type amt = ptr->size + 1;
-
- if (amt < sizeof (* ptr))
- memset ((char *) ptr + amt, 0, sizeof (* ptr) - amt);
- }
-
- return TRUE;
-}
-
-static int
-get_4 (unsigned char **pp)
-{
- unsigned char *p = *pp;
-
- *pp += 4;
- return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | (p[3] << 0);
-}
-
-static void
-get_10 (unsigned char **pp, char *name)
-{
- char *p = (char *) *pp;
- int len = 10;
-
- *pp += len;
- while (*p != ' ' && len)
- {
- *name++ = *p++;
- len--;
- }
- *name = 0;
-}
-
-static char *
-new_symbol_string (bfd *abfd, const char *name)
-{
- char *n = VDATA (abfd)->strings;
-
- strcpy (VDATA (abfd)->strings, name);
- VDATA (abfd)->strings += strlen (VDATA (abfd)->strings) + 1;
- return n;
-}
-
-static void
-process_esd (bfd *abfd, struct ext_esd *esd, int pass)
-{
- /* Read through the ext def for the est entries. */
- int togo = esd->size - 2;
- bfd_vma size;
- bfd_vma start;
- asection *sec;
- char name[11];
- unsigned char *ptr = esd->esd_entries;
- unsigned char *end = ptr + togo;
-
- while (ptr < end)
- {
- int scn = *ptr & 0xf;
- int typ = (*ptr >> 4) & 0xf;
-
- /* Declare this section. */
- sprintf (name, "%d", scn);
- sec = bfd_make_section_old_way (abfd, strdup (name));
- sec->target_index = scn;
- EDATA (abfd, scn).section = sec;
- ptr++;
-
- switch (typ)
- {
- default:
- abort ();
- case ESD_XREF_SEC:
- case ESD_XREF_SYM:
- {
- int snum = VDATA (abfd)->ref_idx++;
- get_10 (&ptr, name);
- if (pass == 1)
- VDATA (abfd)->stringlen += strlen (name) + 1;
- else
- {
- int esidx;
- asymbol *s;
- char *n = new_symbol_string (abfd, name);
-
- s = versados_new_symbol (abfd, snum, n, (bfd_vma) 0,
- bfd_und_section_ptr);
- esidx = VDATA (abfd)->es_done++;
- RDATA (abfd, esidx - ES_BASE) = s;
- }
- }
- break;
-
- case ESD_ABS:
- size = get_4 (&ptr);
- (void) size;
- start = get_4 (&ptr);
- (void) start;
- break;
- case ESD_STD_REL_SEC:
- case ESD_SHRT_REL_SEC:
- sec->size = get_4 (&ptr);
- sec->flags |= SEC_ALLOC;
- break;
- case ESD_XDEF_IN_ABS:
- sec = bfd_abs_section_ptr;
- /* Fall through. */
- case ESD_XDEF_IN_SEC:
- {
- int snum = VDATA (abfd)->def_idx++;
- bfd_vma val;
-
- get_10 (&ptr, name);
- val = get_4 (&ptr);
- if (pass == 1)
- /* Just remember the symbol. */
- VDATA (abfd)->stringlen += strlen (name) + 1;
- else
- {
- asymbol *s;
- char *n = new_symbol_string (abfd, name);
-
- s = versados_new_symbol (abfd, snum + VDATA (abfd)->nrefs, n,
- val, sec);
- s->flags |= BSF_GLOBAL;
- }
- }
- break;
- }
- }
-}
-
-#define R_RELWORD 1
-#define R_RELLONG 2
-#define R_RELWORD_NEG 3
-#define R_RELLONG_NEG 4
-
-reloc_howto_type versados_howto_table[] =
-{
- HOWTO (R_RELWORD, 0, 1, 16, FALSE,
- 0, complain_overflow_dont, 0,
- "+v16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
- HOWTO (R_RELLONG, 0, 2, 32, FALSE,
- 0, complain_overflow_dont, 0,
- "+v32", TRUE, 0xffffffff, 0xffffffff, FALSE),
-
- HOWTO (R_RELWORD_NEG, 0, -1, 16, FALSE,
- 0, complain_overflow_dont, 0,
- "-v16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
- HOWTO (R_RELLONG_NEG, 0, -2, 32, FALSE,
- 0, complain_overflow_dont, 0,
- "-v32", TRUE, 0xffffffff, 0xffffffff, FALSE),
-};
-
-static int
-get_offset (unsigned int len, unsigned char *ptr)
-{
- int val = 0;
-
- if (len)
- {
- unsigned int i;
-
- val = *ptr++;
- if (val & 0x80)
- val |= ~0xff;
- for (i = 1; i < len; i++)
- val = (val << 8) | *ptr++;
- }
-
- return val;
-}
-
-static void
-process_otr (bfd *abfd, struct ext_otr *otr, int pass)
-{
- unsigned long shift;
- unsigned char *srcp = otr->data;
- unsigned char *endp = (unsigned char *) otr + otr->size;
- unsigned int bits = (otr->map[0] << 24)
- | (otr->map[1] << 16)
- | (otr->map[2] << 8)
- | (otr->map[3] << 0);
-
- struct esdid *esdid;
- unsigned char *contents;
- bfd_boolean need_contents = FALSE;
- unsigned int dst_idx;
-
- /* PR 17512: file: ac7da425. */
- if (otr->esdid == 0)
- return;
-
- esdid = &EDATA (abfd, otr->esdid - 1);
- contents = esdid->contents;
- dst_idx = esdid->pc;
-
- for (shift = ((unsigned long) 1 << 31); shift && srcp < endp; shift >>= 1)
- {
- if (bits & shift)
- {
- int flag = *srcp++;
- int esdids = (flag >> 5) & 0x7;
- int sizeinwords = ((flag >> 3) & 1) ? 2 : 1;
- unsigned int offsetlen = flag & 0x7;
- int j;
-
- /* PR 21591: Check for invalid lengths. */
- if (srcp + esdids + offsetlen >= endp)
- return;
-
- if (esdids == 0)
- {
- /* A zero esdid means the new pc is the offset given. */
- dst_idx += get_offset (offsetlen, srcp);
- srcp += offsetlen;
- }
- else
- {
- int val = get_offset (offsetlen, srcp + esdids);
-
- if (pass == 1)
- need_contents = TRUE;
- else if (contents && dst_idx < esdid->content_size - sizeinwords * 2)
- for (j = 0; j < sizeinwords * 2; j++)
- {
- contents[dst_idx + (sizeinwords * 2) - j - 1] = val;
- val >>= 8;
- }
-
- for (j = 0; j < esdids; j++)
- {
- int id = *srcp++;
-
- if (id)
- {
- int rn = EDATA (abfd, otr->esdid - 1).relocs++;
-
- if (pass == 1)
- {
- /* This is the first pass over the data,
- just remember that we need a reloc. */
- }
- else
- {
- arelent *n;
-
- /* PR 17512: file: 54f733e0. */
- if (EDATA (abfd, otr->esdid - 1).section == NULL)
- continue;
- n = EDATA (abfd, otr->esdid - 1).section->relocation + rn;
- n->address = dst_idx;
- n->sym_ptr_ptr = (asymbol **) (size_t) id;
- n->addend = 0;
- n->howto = versados_howto_table + ((j & 1) * 2) + (sizeinwords - 1);
- }
- }
- }
- srcp += offsetlen;
- dst_idx += sizeinwords * 2;
- }
- }
- else
- {
- need_contents = TRUE;
-
- if (esdid->section && contents && dst_idx < esdid->content_size - 1)
- if (pass == 2)
- {
- /* Absolute code, comes in 16 bit lumps. */
- contents[dst_idx] = srcp[0];
- contents[dst_idx + 1] = srcp[1];
- }
-
- dst_idx += 2;
- srcp += 2;
- }
- }
-
- EDATA (abfd, otr->esdid - 1).pc = dst_idx;
-
- if (!contents && need_contents)
- {
- if (esdid->section)
- {
- bfd_size_type size;
-
- size = esdid->section->size;
- esdid->contents = bfd_alloc (abfd, size);
- esdid->content_size = size;
- }
- else
- esdid->contents = NULL;
- }
-}
-
-static bfd_boolean
-versados_scan (bfd *abfd)
-{
- bfd_boolean loop = TRUE;
- int i;
- int j;
- int nsecs = 0;
- bfd_size_type amt;
-
- VDATA (abfd)->stringlen = 0;
- VDATA (abfd)->nrefs = 0;
- VDATA (abfd)->ndefs = 0;
- VDATA (abfd)->ref_idx = 0;
- VDATA (abfd)->def_idx = 0;
- VDATA (abfd)->pass_2_done = 0;
-
- while (loop)
- {
- union ext_any any;
-
- if (!get_record (abfd, &any))
- return FALSE;
- switch (any.header.type)
- {
- case VHEADER:
- break;
- case VEND:
- loop = FALSE;
- break;
- case VESTDEF:
- process_esd (abfd, &any.esd, 1);
- break;
- case VOTR:
- process_otr (abfd, &any.otr, 1);
- break;
- }
- }
-
- /* Now allocate space for the relocs and sections. */
- VDATA (abfd)->nrefs = VDATA (abfd)->ref_idx;
- VDATA (abfd)->ndefs = VDATA (abfd)->def_idx;
- VDATA (abfd)->ref_idx = 0;
- VDATA (abfd)->def_idx = 0;
-
- abfd->symcount = VDATA (abfd)->nrefs + VDATA (abfd)->ndefs;
-
- for (i = 0; i < 16; i++)
- {
- struct esdid *esdid = &EDATA (abfd, i);
-
- if (esdid->section)
- {
- amt = (bfd_size_type) esdid->relocs * sizeof (arelent);
- esdid->section->relocation = bfd_alloc (abfd, amt);
- esdid->pc = 0;
-
- if (esdid->contents)
- esdid->section->flags |= SEC_HAS_CONTENTS | SEC_LOAD;
-
- esdid->section->reloc_count = esdid->relocs;
- if (esdid->relocs)
- esdid->section->flags |= SEC_RELOC;
-
- esdid->relocs = 0;
-
- /* Add an entry into the symbol table for it. */
- nsecs++;
- VDATA (abfd)->stringlen += strlen (esdid->section->name) + 1;
- }
- }
-
- abfd->symcount += nsecs;
-
- amt = abfd->symcount;
- amt *= sizeof (asymbol);
- VDATA (abfd)->symbols = bfd_alloc (abfd, amt);
-
- amt = VDATA (abfd)->stringlen;
- VDATA (abfd)->strings = bfd_alloc (abfd, amt);
-
- if ((VDATA (abfd)->symbols == NULL && abfd->symcount > 0)
- || (VDATA (abfd)->strings == NULL && VDATA (abfd)->stringlen > 0))
- return FALSE;
-
- /* Actually fill in the section symbols,
- we stick them at the end of the table. */
- for (j = VDATA (abfd)->nrefs + VDATA (abfd)->ndefs, i = 0; i < 16; i++)
- {
- struct esdid *esdid = &EDATA (abfd, i);
- asection *sec = esdid->section;
-
- if (sec)
- {
- asymbol *s = VDATA (abfd)->symbols + j;
- s->name = new_symbol_string (abfd, sec->name);
- s->section = sec;
- s->flags = BSF_LOCAL;
- s->value = 0;
- s->the_bfd = abfd;
- j++;
- }
- }
-
- if (abfd->symcount)
- abfd->flags |= HAS_SYMS;
-
- /* Set this to nsecs - since we've already planted the section
- symbols. */
- VDATA (abfd)->nsecsyms = nsecs;
-
- VDATA (abfd)->ref_idx = 0;
-
- return TRUE;
-}
-
-/* Check whether an existing file is a versados file. */
-
-static const bfd_target *
-versados_object_p (bfd *abfd)
-{
- struct ext_vheader ext;
- unsigned char len;
- tdata_type *tdata_save;
-
- if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
- return NULL;
-
- if (bfd_bread (&len, (bfd_size_type) 1, abfd) != 1)
- {
- if (bfd_get_error () != bfd_error_system_call)
- bfd_set_error (bfd_error_wrong_format);
- return NULL;
- }
-
- /* PR 17512: file: 726-2128-0.004. */
- if (len < 13)
- {
- bfd_set_error (bfd_error_wrong_format);
- return NULL;
- }
-
- if (bfd_bread (&ext.type, (bfd_size_type) len, abfd) != len)
- {
- if (bfd_get_error () != bfd_error_system_call)
- bfd_set_error (bfd_error_wrong_format);
- return NULL;
- }
-
- /* We guess that the language field will never be larger than 10.
- In sample files, it is always either 0 or 1. Checking for this
- prevents confusion with Intel Hex files. */
- if (ext.type != VHEADER
- || ext.lang > 10)
- {
- bfd_set_error (bfd_error_wrong_format);
- return NULL;
- }
-
- /* OK, looks like a record, build the tdata and read in. */
- tdata_save = abfd->tdata.versados_data;
- if (!versados_mkobject (abfd) || !versados_scan (abfd))
- {
- abfd->tdata.versados_data = tdata_save;
- return NULL;
- }
-
- return abfd->xvec;
-}
-
-static bfd_boolean
-versados_pass_2 (bfd *abfd)
-{
- union ext_any any;
-
- if (VDATA (abfd)->pass_2_done)
- return 1;
-
- if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
- return 0;
-
- VDATA (abfd)->es_done = ES_BASE;
-
- /* Read records till we get to where we want to be. */
- while (1)
- {
- get_record (abfd, &any);
- switch (any.header.type)
- {
- case VEND:
- VDATA (abfd)->pass_2_done = 1;
- return 1;
- case VESTDEF:
- process_esd (abfd, &any.esd, 2);
- break;
- case VOTR:
- process_otr (abfd, &any.otr, 2);
- break;
- }
- }
-}
-
-static bfd_boolean
-versados_get_section_contents (bfd *abfd,
- asection *section,
- void * location,
- file_ptr offset,
- bfd_size_type count)
-{
- struct esdid *esdid;
-
- if (!versados_pass_2 (abfd))
- return FALSE;
-
- esdid = &EDATA (abfd, section->target_index);
-
- if (esdid->contents == NULL
- || offset < 0
- || (bfd_size_type) offset > esdid->content_size
- || offset + count > esdid->content_size)
- return FALSE;
-
- memcpy (location, esdid->contents + offset, (size_t) count);
-
- return TRUE;
-}
-
-#define versados_get_section_contents_in_window \
- _bfd_generic_get_section_contents_in_window
-
-static bfd_boolean
-versados_set_section_contents (bfd *abfd ATTRIBUTE_UNUSED,
- sec_ptr section ATTRIBUTE_UNUSED,
- const void * location ATTRIBUTE_UNUSED,
- file_ptr offset ATTRIBUTE_UNUSED,
- bfd_size_type bytes_to_do ATTRIBUTE_UNUSED)
-{
- return FALSE;
-}
-
-static int
-versados_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
- struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-/* Return the amount of memory needed to read the symbol table. */
-
-static long
-versados_get_symtab_upper_bound (bfd *abfd)
-{
- return (bfd_get_symcount (abfd) + 1) * sizeof (asymbol *);
-}
-
-/* Return the symbol table. */
-
-static long
-versados_canonicalize_symtab (bfd *abfd, asymbol **alocation)
-{
- unsigned int symcount = bfd_get_symcount (abfd);
- unsigned int i;
- asymbol *s;
-
- versados_pass_2 (abfd);
-
- for (i = 0, s = VDATA (abfd)->symbols;
- i < symcount;
- s++, i++)
- *alocation++ = s;
-
- *alocation = NULL;
-
- return symcount;
-}
-
-static void
-versados_get_symbol_info (bfd *abfd ATTRIBUTE_UNUSED,
- asymbol *symbol,
- symbol_info *ret)
-{
- bfd_symbol_info (symbol, ret);
-}
-
-static void
-versados_print_symbol (bfd *abfd,
- void * afile,
- asymbol *symbol,
- bfd_print_symbol_type how)
-{
- FILE *file = (FILE *) afile;
-
- switch (how)
- {
- case bfd_print_symbol_name:
- fprintf (file, "%s", symbol->name);
- break;
- default:
- bfd_print_symbol_vandf (abfd, (void *) file, symbol);
- fprintf (file, " %-5s %s",
- symbol->section->name,
- symbol->name);
- }
-}
-
-static long
-versados_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED,
- sec_ptr asect)
-{
- return (asect->reloc_count + 1) * sizeof (arelent *);
-}
-
-static long
-versados_canonicalize_reloc (bfd *abfd,
- sec_ptr section,
- arelent **relptr,
- asymbol **symbols)
-{
- unsigned int count;
- arelent *src;
-
- versados_pass_2 (abfd);
- src = section->relocation;
-
- if (!EDATA (abfd, section->target_index).donerel)
- {
- EDATA (abfd, section->target_index).donerel = 1;
- /* Translate from indexes to symptr ptrs. */
- for (count = 0; count < section->reloc_count; count++)
- {
- int esdid = (int) (size_t) src[count].sym_ptr_ptr;
-
- if (esdid == 0)
- src[count].sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
- else if (esdid < ES_BASE)
- {
- /* Section relative thing. */
- struct esdid *e = &EDATA (abfd, esdid - 1);
-
- /* PR 17512: file:cd92277c. */
- if (e->section)
- src[count].sym_ptr_ptr = e->section->symbol_ptr_ptr;
- else
- src[count].sym_ptr_ptr = bfd_und_section_ptr->symbol_ptr_ptr;
- }
- /* PR 17512: file:3757-2936-0.004. */
- else if ((unsigned) (esdid - ES_BASE) >= bfd_get_symcount (abfd))
- src[count].sym_ptr_ptr = bfd_und_section_ptr->symbol_ptr_ptr;
- else
- src[count].sym_ptr_ptr = symbols + esdid - ES_BASE;
- }
- }
-
- for (count = 0; count < section->reloc_count; count++)
- *relptr++ = src++;
-
- *relptr = 0;
- return section->reloc_count;
-}
-
-#define versados_close_and_cleanup _bfd_generic_close_and_cleanup
-#define versados_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
-#define versados_new_section_hook _bfd_generic_new_section_hook
-#define versados_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
-#define versados_bfd_is_local_label_name bfd_generic_is_local_label_name
-#define versados_get_lineno _bfd_nosymbols_get_lineno
-#define versados_find_nearest_line _bfd_nosymbols_find_nearest_line
-#define versados_find_line _bfd_nosymbols_find_line
-#define versados_find_inliner_info _bfd_nosymbols_find_inliner_info
-#define versados_get_symbol_version_string _bfd_nosymbols_get_symbol_version_string
-#define versados_make_empty_symbol _bfd_generic_make_empty_symbol
-#define versados_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
-#define versados_read_minisymbols _bfd_generic_read_minisymbols
-#define versados_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
-#define versados_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
-#define versados_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup
-#define versados_set_arch_mach bfd_default_set_arch_mach
-#define versados_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
-#define versados_bfd_relax_section bfd_generic_relax_section
-#define versados_bfd_gc_sections bfd_generic_gc_sections
-#define versados_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define versados_bfd_merge_sections bfd_generic_merge_sections
-#define versados_bfd_is_group_section bfd_generic_is_group_section
-#define versados_bfd_discard_group bfd_generic_discard_group
-#define versados_section_already_linked _bfd_generic_section_already_linked
-#define versados_bfd_define_common_symbol bfd_generic_define_common_symbol
-#define versados_bfd_define_start_stop bfd_generic_define_start_stop
-#define versados_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
-#define versados_bfd_link_add_symbols _bfd_generic_link_add_symbols
-#define versados_bfd_link_just_syms _bfd_generic_link_just_syms
-#define versados_bfd_copy_link_hash_symbol_type \
- _bfd_generic_copy_link_hash_symbol_type
-#define versados_bfd_final_link _bfd_generic_final_link
-#define versados_bfd_link_split_section _bfd_generic_link_split_section
-#define versados_bfd_link_check_relocs _bfd_generic_link_check_relocs
-#define versados_set_reloc _bfd_generic_set_reloc
-
-const bfd_target m68k_versados_vec =
-{
- "versados", /* Name. */
- bfd_target_versados_flavour,
- BFD_ENDIAN_BIG, /* Target byte order. */
- BFD_ENDIAN_BIG, /* Target headers byte order. */
- (HAS_RELOC | EXEC_P | /* Object flags. */
- HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
- (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
- | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
- 0, /* Leading underscore. */
- ' ', /* AR_pad_char. */
- 16, /* AR_max_namelen. */
- 0, /* match priority. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Headers. */
-
- {
- _bfd_dummy_target,
- versados_object_p, /* bfd_check_format. */
- _bfd_dummy_target,
- _bfd_dummy_target,
- },
- {
- _bfd_bool_bfd_false_error,
- versados_mkobject,
- _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 (versados),
- BFD_JUMP_TABLE_COPY (_bfd_generic),
- BFD_JUMP_TABLE_CORE (_bfd_nocore),
- BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
- BFD_JUMP_TABLE_SYMBOLS (versados),
- BFD_JUMP_TABLE_RELOCS (versados),
- BFD_JUMP_TABLE_WRITE (versados),
- BFD_JUMP_TABLE_LINK (versados),
- BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
- NULL,
-
- NULL
-};
+2018-04-16 Alan Modra <amodra@gmail.com>
+
+ * testsuite/binutils-all/copy-2.d: Remove m68k-aout and m68k-coff
+ support.
+ * testsuite/binutils-all/copy-3.d: Likewise.
+ * testsuite/binutils-all/objcopy.exp: Likewise.
+ * testsuite/lib/binutils-common.exp: Likewise.
+
2018-04-16 Alan Modra <amodra@gmail.com>
* testsuite/binutils-all/objcopy.exp: Remove sh5 and sh64 support.
#objcopy: --set-section-flags foo=contents,alloc,load,code
#name: copy with setting section flags 2
#source: copytest.s
-#not-target: *-*-*aout *-*-aix* h8300-*-* hppa*-*-hpux* m68k-*-netbsd m68k-*-openbsd* mips-*-ultrix* mips-*-osf* mips-*-ecoff* mips-*-irix mips-*-irix[2-4] mips-*-riscos* ns32k-*-netbsd
+#not-target: *-*-*aout *-*-aix* h8300-*-* hppa*-*-hpux* mips-*-ultrix* mips-*-osf* mips-*-ecoff* mips-*-irix mips-*-irix[2-4] mips-*-riscos* ns32k-*-netbsd
# Note - we use copytest.s and a section named "foo" rather
# than .text because for some file formats (eg PE) the .text
# section has a fixed set of flags and these cannot be changed.
#objcopy: --set-section-flags .text=alloc,data
#name: copy with setting section flags 3
#source: bintest.s
-#not-target: *-*-*aout *-*-*coff *-*-cygwin* *-*-darwin *-*-mingw* *-*-go32 *-*-*pe hppa*-*-hpux* m68k-*-netbsd m68k-*-openbsd* ns32k-*-netbsd powerpc-*-aix* rs6000-*-* rx-*-*
+#not-target: *-*-*aout *-*-*coff *-*-cygwin* *-*-darwin *-*-mingw* *-*-go32 *-*-*pe hppa*-*-hpux* ns32k-*-netbsd powerpc-*-aix* rs6000-*-* rx-*-*
# The .text # section in PE/COFF has a fixed set of flags and these
# cannot be changed. We skip it for them.
# differently. Those systems should use setup_xfail here.
setup_xfail "hppa*-*-*"
- setup_xfail "m68*-*-*coff" "m68*-*-hpux*" "m68*-*-lynxos*"
- setup_xfail "m68*-*-sysv*" "m68*-apple-aux*"
setup_xfail "m8*-*"
setup_xfail "sh-*-coff*"
setup_xfail "tic80-*-*"
clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*"
- clear_xfail "m68*-*-sysv4*"
if [string equal "" $exec_output] then {
pass "objcopy ($testname)"
|| [istarget arm*-*-netbsd*]
|| [istarget sparc-*-netbsd*]
|| [istarget i*86-*-netbsd*]
- || [istarget m68*-*-netbsd*]
|| [istarget vax-*-netbsd*]
|| [istarget ns32k-*-netbsd*]) } {
return 0
if { [istarget arm-*-openbsd*]
|| [istarget i386-*-openbsd\[0-2\].*]
|| [istarget i386-*-openbsd3.\[0-2\]]
- || [istarget m68*-*-openbsd*]
|| [istarget ns32k-*-openbsd*]
|| [istarget sparc-*-openbsd\[0-2\].*]
|| [istarget sparc-*-openbsd3.\[0-1\]]
|| [istarget i?86-*-openbsd3.\[0-2\]*]
|| [istarget i?86-*-vsta]
|| [istarget i?86-*-mach*]
- || [istarget m68*-*-netbsd*]
- || [istarget m68*-*-openbsd*]
|| [istarget ns32k-*-*]
|| [istarget pdp11-*-*]
|| [istarget sparc*-*-sunos4*]
+2018-04-16 Alan Modra <amodra@gmail.com>
+
+ * Makefile.am: Remove m68k-aout and m68k-coff support.
+ * config/tc-m68k.c: Likewise.
+ * config/tc-m68k.h: Likewise.
+ * configure.ac: Likewise.
+ * configure.tgt: Likewise.
+ * testsuite/gas/all/weakref1u.d: Likewise.
+ * testsuite/gas/m68k/all.exp: Likewise.
+ * testsuite/gas/m68k/br-isaa.d: Likewise.
+ * testsuite/gas/m68k/br-isab.d: Likewise.
+ * testsuite/gas/m68k/br-isac.d: Likewise.
+ * config/te-psos.h: Delete.
+ * config/te-sun3.h: Delete.
+ * testsuite/gas/m68k-coff/gas.exp: Delete.
+ * testsuite/gas/m68k-coff/p2389.s: Delete.
+ * testsuite/gas/m68k-coff/p2389a.s: Delete.
+ * testsuite/gas/m68k-coff/p2430.s: Delete.
+ * testsuite/gas/m68k-coff/p2430a.s: Delete.
+ * testsuite/gas/m68k-coff/t1.s: Delete.
+ * testsuite/gas/m68k/p3041.d: Delete.
+ * testsuite/gas/m68k/p3041.s: Delete.
+ * testsuite/gas/m68k/p3041data.d: Delete.
+ * testsuite/gas/m68k/p3041data.s: Delete.
+ * testsuite/gas/m68k/p3041pcrel.d: Delete.
+ * testsuite/gas/m68k/p3041pcrel.s: Delete.
+ * testsuite/gas/m68k/t2.d: Delete.
+ * Makefile.in: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * po/POTFILES.in: Regenerate.
+
2018-04-16 Alan Modra <amodra@gmail.com>
* Makefile.am: Remove sh5 and sh64 support.
config/te-nbsd532.h \
config/te-pc532mach.h \
config/te-pe.h \
- config/te-psos.h \
config/te-riscix.h \
config/te-solaris.h \
config/te-sparcaout.h \
- config/te-sun3.h \
config/te-svr4.h \
config/te-symbian.h \
config/te-tmips.h \
config/te-nbsd532.h \
config/te-pc532mach.h \
config/te-pe.h \
- config/te-psos.h \
config/te-riscix.h \
config/te-solaris.h \
config/te-sparcaout.h \
- config/te-sun3.h \
config/te-svr4.h \
config/te-symbian.h \
config/te-tmips.h \
*/
#undef LT_OBJDIR
-/* Using m68k COFF? */
-#undef M68KCOFF
-
/* Default CPU for MIPS targets. */
#undef MIPS_CPU_STRING_DEFAULT
#include "opcode/m68k.h"
#include "m68k-parse.h"
-
-#if defined (OBJ_ELF)
#include "elf/m68k.h"
-#endif
-
-#ifdef M68KCOFF
-#include "obj-coff.h"
-#endif
-#ifdef OBJ_ELF
static void m68k_elf_cons (int);
-#endif
/* This string holds the chars that always start a comment. If the
pre-processor is disabled, these aren't very useful. The macro
significance of some values (in the branch instruction, for
example). */
int pcrel_fix;
-#ifdef OBJ_ELF
/* Whether this expression needs special pic relocation, and if
so, which. */
enum pic_relocation pic_reloc;
-#endif
}
reloc[5]; /* Five is enough??? */
};
the_ins.reloc[the_ins.nrel].exp = exp->exp;
the_ins.reloc[the_ins.nrel].wid = width;
the_ins.reloc[the_ins.nrel].pcrel_fix = pc_fix;
-#ifdef OBJ_ELF
the_ins.reloc[the_ins.nrel].pic_reloc = exp->pic_reloc;
-#endif
the_ins.reloc[the_ins.nrel++].pcrel = pc_rel;
}
{"even", s_even, 0},
{"skip", s_space, 0},
{"proc", s_proc, 0},
-#if defined (TE_SUN3) || defined (OBJ_ELF)
{"align", s_align_bytes, 0},
-#endif
-#ifdef OBJ_ELF
{"swbeg", s_ignore, 0},
{"long", m68k_elf_cons, 4},
-#endif
{"extend", float_cons, 'x'},
{"ldouble", float_cons, 'x'},
{"dsb", s_space, 1},
{"xdef", s_globl, 0},
-#ifdef OBJ_ELF
{"align", s_align_bytes, 0},
-#else
- {"align", s_align_ptwo, 0},
-#endif
-#ifdef M68KCOFF
- {"sect", obj_coff_section, 0},
- {"section", obj_coff_section, 0},
-#endif
{0, 0, 0}
};
|| (*s == ':' \
&& alt_notend_table[(unsigned char) s[1]])))
-#ifdef OBJ_ELF
/* Return zero if the reference to SYMBOL from within the same segment may
be relaxed. */
}
}
-#else /* !OBJ_ELF */
-
-#define get_reloc_code(SIZE,PCREL,OTHER) NO_RELOC
-
-/* PR gas/3041 Weak symbols are not relaxable
- because they must be treated as extern. */
-#define relaxable_symbol(symbol) (!(S_IS_WEAK (symbol)))
-
-#endif /* OBJ_ELF */
-
arelent *
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
{
reloc->sym_ptr_ptr = XNEW (asymbol *);
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
-#ifndef OBJ_ELF
- if (OUTPUT_FLAVOR == bfd_target_aout_flavour
- && fixp->fx_addsy
- && S_IS_WEAK (fixp->fx_addsy)
- && ! bfd_is_und_section (S_GET_SEGMENT (fixp->fx_addsy)))
- {
- /* PR gas/3041 References to weak symbols must be treated as extern
- in order to be overridable by the linker, even if they are defined
- in the same object file. So the original addend must be written
- "as is" into the output section without further processing.
- The addend value must be hacked here in order to force
- bfd_install_relocation() to write the original value into the
- output section.
- 1) MD_APPLY_SYM_VALUE() is set to 1 for m68k/a.out, so the symbol
- value has already been added to the addend in fixup_segment(). We
- have to remove it.
- 2) bfd_install_relocation() will incorrectly treat this symbol as
- resolved, so it will write the symbol value plus its addend and
- section VMA. As a workaround we can tweak the addend value here in
- order to get the original value in the section after the call to
- bfd_install_relocation(). */
- reloc->addend = fixp->fx_addnumber
- /* Fix because of MD_APPLY_SYM_VALUE() */
- - S_GET_VALUE (fixp->fx_addsy)
- /* Fix for bfd_install_relocation() */
- - (S_GET_VALUE (fixp->fx_addsy)
- + S_GET_SEGMENT (fixp->fx_addsy)->vma);
- }
- else if (fixp->fx_pcrel)
- reloc->addend = fixp->fx_addnumber;
- else
- reloc->addend = 0;
-#else
if (!fixp->fx_pcrel)
reloc->addend = fixp->fx_addnumber;
else
+ fixp->fx_pcrel_adjust
+ fixp->fx_addnumber
+ md_pcrel_from (fixp));
-#endif
reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
gas_assert (reloc->howto != 0);
if (opP->reg == PC)
{
if (opP->disp.size == SIZE_LONG
-#ifdef OBJ_ELF
/* If the displacement needs pic
relocation it cannot be relaxed. */
- || opP->disp.pic_reloc != pic_none
-#endif
- )
+ || opP->disp.pic_reloc != pic_none)
{
addword (0x0170);
add_fix ('l', &opP->disp, 1, 2);
&& opP->reg == PC
&& isvar (&opP->disp)
&& subs (&opP->disp) == NULL
-#ifdef OBJ_ELF
/* If the displacement needs pic
relocation it cannot be relaxed. */
- && opP->disp.pic_reloc == pic_none
-#endif
- )
+ && opP->disp.pic_reloc == pic_none)
{
/* The code in md_convert_frag_1 needs to be
able to adjust nextword. Call frag_grow
if (isvar (&opP->disp)
&& !subs (&opP->disp)
&& adds (&opP->disp)
-#ifdef OBJ_ELF
/* If the displacement needs pic relocation it
cannot be relaxed. */
&& opP->disp.pic_reloc == pic_none
-#endif
&& !flag_long_jumps
&& !strchr ("~%&$?", s[0]))
{
var_branch:
if (subs (&opP->disp) /* We can't relax it. */
-#ifdef OBJ_ELF
/* If the displacement needs pic relocation it cannot be
relaxed. */
- || opP->disp.pic_reloc != pic_none
-#endif
- || 0)
+ || opP->disp.pic_reloc != pic_none)
{
if (!have_disp)
as_warn (_("Can't use long branches on this architecture"));
current_label = NULL;
}
-#ifdef OBJ_ELF
/* Tie dwarf2 debug info to the address at the start of the insn. */
dwarf2_emit_insn (0);
-#endif
if (the_ins.nfrag == 0)
{
init_regtable ();
-#ifdef OBJ_ELF
record_alignment (text_section, 2);
record_alignment (data_section, 2);
record_alignment (bss_section, 2);
-#endif
}
\f
labels = n;
current_label = n;
-#ifdef OBJ_ELF
dwarf2_emit_label (sym);
-#endif
}
/* This is called when a value that is not an instruction is emitted. */
if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
fixP->fx_done = 1;
-#ifdef OBJ_ELF
if (fixP->fx_addsy)
{
memset (buf, 0, fixP->fx_size);
return;
}
-#elif defined(OBJ_AOUT)
- /* PR gas/3041 Do not fix frags referencing a weak symbol. */
- if (fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy))
- {
- memset (buf, 0, fixP->fx_size);
- fixP->fx_addnumber = val; /* Remember value for emit_reloc. */
- return;
- }
-#endif
if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return md_relax_table[fragP->fr_subtype].rlx_length;
}
-#if defined(OBJ_AOUT)
-/* the bit-field entries in the relocation_info struct plays hell
- with the byte-order problems of cross-assembly. So as a hack,
- I added this mach. dependent ri twiddler. Ugly, but it gets
- you there. -KWK */
-/* on m68k: first 4 bytes are normal unsigned long, next three bytes
- are symbolnum, most sig. byte first. Last byte is broken up with
- bit 7 as pcrel, bits 6 & 5 as length, bit 4 as pcrel, and the lower
- nibble as nuthin. (on Sun 3 at least) */
-/* Translate the internal relocation information into target-specific
- format. */
-#ifdef comment
-void
-md_ri_to_chars (char *the_bytes, struct reloc_info_generic *ri)
-{
- /* This is easy. */
- md_number_to_chars (the_bytes, ri->r_address, 4);
- /* Now the fun stuff. */
- the_bytes[4] = (ri->r_symbolnum >> 16) & 0x0ff;
- the_bytes[5] = (ri->r_symbolnum >> 8) & 0x0ff;
- the_bytes[6] = ri->r_symbolnum & 0x0ff;
- the_bytes[7] = (((ri->r_pcrel << 7) & 0x80)
- | ((ri->r_length << 5) & 0x60)
- | ((ri->r_extern << 4) & 0x10));
-}
-
-#endif
-
-#endif /* OBJ_AOUT */
-
#ifndef WORKING_DOT_WORD
int md_short_jump_size = 4;
int md_long_jump_size = 6;
Invocation line includes a switch not recognized by the base assembler.
*/
-#ifdef OBJ_ELF
const char *md_shortopts = "lSA:m:kQ:V";
-#else
-const char *md_shortopts = "lSA:m:k";
-#endif
struct option md_longopts[] = {
#define OPTION_PIC (OPTION_MD_BASE)
valueT
md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size)
{
-#ifdef OBJ_AOUT
- /* For a.out, force the section size to be aligned. If we don't do
- this, BFD will align it for us, but it will not write out the
- final bytes of the section. This may be a bug in BFD, but it is
- easier to fix it here since that is how the other a.out targets
- work. */
- int align;
-
- align = bfd_get_section_alignment (stdoutput, segment);
- size = ((size + (1 << align) - 1) & (-((valueT) 1 << align)));
-#endif
-
return size;
}
return fixP->fx_where + fixP->fx_frag->fr_address - adjust;
}
-#ifdef OBJ_ELF
void
m68k_elf_final_processing (void)
{
input_line_pointer--;
demand_empty_rest_of_line ();
}
-#endif
int
tc_m68k_regname_to_dw2regnum (const char *regname)
#define TARGET_BYTES_BIG_ENDIAN 1
-#ifdef OBJ_AOUT
-#ifdef TE_SUN3
-#define TARGET_FORMAT "a.out-sunos-big"
-#endif
-#ifdef TE_NetBSD
-#define TARGET_FORMAT "a.out-m68k-netbsd"
-#endif
-#ifdef TE_LINUX
-#define TARGET_FORMAT "a.out-m68k-linux"
-#endif
-#ifndef TARGET_FORMAT
-#define TARGET_FORMAT "a.out-zero-big"
-#endif
-#endif
-
-#ifdef OBJ_ELF
#define TARGET_FORMAT "elf32-m68k"
-#endif
-
-#ifdef TE_APOLLO
-#define COFF_MAGIC APOLLOM68KMAGIC
-#define COFF_AOUTHDR_MAGIC APOLLO_COFF_VERSION_NUMBER
-#undef OBJ_COFF_OMIT_OPTIONAL_HEADER
-#endif
-
-#ifdef TE_AUX
-#define TARGET_FORMAT "coff-m68k-aux"
-#endif
-#ifdef TE_DELTA
-#define TARGET_FORMAT "coff-m68k-sysv"
-#endif
-
-#ifndef COFF_MAGIC
-#define COFF_MAGIC MC68MAGIC
-#endif
#define TARGET_ARCH bfd_arch_m68k
#define tc_comment_chars m68k_comment_chars
#define REGISTER_PREFIX '%'
#endif
-#if !defined (REGISTER_PREFIX_OPTIONAL)
-#if defined (M68KCOFF) || defined (OBJ_ELF)
+#ifndef REGISTER_PREFIX_OPTIONAL
#define REGISTER_PREFIX_OPTIONAL 0
-#else /* ! (COFF || ELF) */
-#define REGISTER_PREFIX_OPTIONAL 1
-#endif /* ! (COFF || ELF) */
-#endif /* not def REGISTER_PREFIX and not def OPTIONAL_REGISTER_PREFIX */
-
-#ifdef TE_DELTA
-/* On the Delta, `%' can occur within a label name, but not as the
- initial character. */
-#define LEX_PCT LEX_NAME
-/* On the Delta, `~' can start a label name, but is converted to '.'. */
-#define LEX_TILDE LEX_BEGIN_NAME
-#define tc_canonicalize_symbol_name(s) ((*(s) == '~' ? *(s) = '.' : '.'), s)
-/* On the Delta, dots are not required before pseudo-ops. */
-#define NO_PSEUDO_DOT 1
#endif
extern void m68k_mri_mode_change (int);
#define RELAX_RELOC_PC16 BFD_RELOC_16_PCREL
#define RELAX_RELOC_PC32 BFD_RELOC_32_PCREL
-#ifdef OBJ_ELF
#define tc_fix_adjustable(X) tc_m68k_fix_adjustable(X)
extern int tc_m68k_fix_adjustable (struct fix *);
#define elf_tc_final_processing m68k_elf_final_processing
extern void m68k_elf_final_processing (void);
-#endif
#define DIFF_EXPR_OK
#define md_operand(x)
-#define TARGET_ARCH bfd_arch_m68k
-
extern struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table
+++ /dev/null
-/* 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-psos.h for embedded systems running pSOS.
- Contributed by Martin Anantharaman (martin@mail.imech.uni-duisburg.de). */
-
-#define TE_PSOS
-
-/* Added these, because if we don't know what we're targeting we may
- need an assembler version of libgcc, and that will use local
- labels. */
-#define LOCAL_LABELS_DOLLAR 1
-#define LOCAL_LABELS_FB 1
-
-/* This makes GAS more versatile and blocks some ELF'isms in
- tc-m68k.h. */
-#define REGISTER_PREFIX_OPTIONAL 1
-
-#include "obj-format.h"
+++ /dev/null
-/* te-sun3.h -- Sun-3 target environment declarations.
- Copyright (C) 1987-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 header file contains the #defines specific
- to SUN computer SUN 3 series computers. (The only kind
- we have around here, unfortunately.)
-
- Rumor has it that this file will work on the Sun-2 if the assembler
- is called with -m68010 This is not tested. */
-
-#define TE_SUN3 1
-
-#define LOCAL_LABELS_DOLLAR 1
-#define LOCAL_LABELS_FB 1
-
-/* Could also be :
- #define S_LOCAL_NAME(s) (S_GET_NAME(s)[0] == '.' &&
- S_GET_NAME(s)[1] == 'L' ||
- S_GET_NAME(s)[1] == '.')
- */
-
-#include "obj-format.h"
-
-/*
- * Local Variables:
- * comment-column: 0
- * fill-column: 131
- * End:
- */
-
-/* end of te-sun3.h */
case ${target_cpu_type} in
i386)
$as_echo "#define I386COFF 1" >>confdefs.h
- ;;
- m68k)
-$as_echo "#define M68KCOFF 1" >>confdefs.h
;;
x86_64)
$as_echo "#define I386COFF 1" >>confdefs.h
coff)
case ${target_cpu_type} in
i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
- m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
esac
;;
m68hc11-*-* | m6811-*-*) fmt=elf ;;
m68hc12-*-* | m6812-*-*) fmt=elf ;;
- m68k-*-aout) fmt=aout bfd_gas=yes ;;
m68k-*-elf*) fmt=elf ;;
m68k-*-sysv4*) fmt=elf em=svr4 ;;
m68k-*-linux-*) fmt=elf em=linux ;;
m68k-*-uclinux*) fmt=elf em=uclinux ;;
m68k-*-gnu*) fmt=elf ;;
m68k-*-netbsdelf*) fmt=elf em=nbsd ;;
- m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
- m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
- m68k-*-psos*) fmt=elf em=psos;;
mep-*-elf) fmt=elf ;;
config/te-nbsd532.h
config/te-pc532mach.h
config/te-pe.h
-config/te-psos.h
config/te-riscix.h
config/te-solaris.h
config/te-sparcaout.h
-config/te-sun3.h
config/te-svr4.h
config/te-symbian.h
config/te-tmips.h
#source: weakref1.s
# aout turns undefined into *ABS* symbols.
# see weakref1.d for comments on the other not-targets
-#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd* ns32k-*-netbsd alpha*-*-osf* *-*-ecoff
+#not-target: *-*-*aout ns32k-*-netbsd alpha*-*-osf* *-*-ecoff
# the rest of this file is generated with the following script:
# # script begin
+++ /dev/null
-# Copyright (C) 2012-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.
-
-#
-# Some m68k-coff tests
-#
-if [istarget m68*-*-coff] then {
- gas_test "p2430.s" "" $stdoptlist "local branch not in text section"
-
- gas_test "p2430a.s" "" $stdoptlist "local branch not in text section"
-
- gas_test "t1.s" "" $stdoptlist "multiple .file directives"
-
- gas_test "p2389.s" "" $stdoptlist "bss fill"
-
- setup_xfail m68*-*-coff
- gas_test_error "p2389a.s" "" "detect bss fill with non-zero data"
-}
+++ /dev/null
-# I reached a point where the file looks
-# clean and complies with gas syntax, but it core dumps gas. Here's a
-# little gdb info:
-#
-# Program terminated with signal 11, Segmentation fault.
-# #0 0x6323c in memcpy ()
-# (gdb) bt
-# #0 0x6323c in memcpy ()
-# #1 0xf2b0 in fill_section (abfd=0xeaee8, filehdr=0x8a7f4,
-# file_cursor=0xf7fff654) at obj-format.c:534
-# #2 0x112a8 in write_object_file () at obj-format.c:1786
-# #3 0x13ef8 in main (argc=5, argv=0xf7fff7bc) at ../../p3/gas/as.c:310
-# (gdb)
-#
-# gas did manage to create the .o file at this point.
-
- .bss
-
-_ASIC_INT_TBL: .space 32,0 | keep interrupt routines here
+++ /dev/null
- .bss
-
-_ASIC_INT_TBL: .space 32,1 | keep interrupt routines here
+++ /dev/null
-# This differs from p2430a.s (the customer's actual source file) only
-# in whitespace and comments. Strangely, this file gave no problems...
-
- .sect foo
-tag:
- bra tag
+++ /dev/null
- .sect foo
-
-tag:
- bra tag
+++ /dev/null
-# 1 "libgcc1.S"
-# 42 "libxyz1.S"
-# 259 "libgcc1.S"
- .text
- .proc
-|#PROC# 04
- .globl __mulsi3
- __mulsi3 :
-|#PROLOGUE# 0
- link %a6 ,#0
- addl #-LF14, %sp
- moveml #LS14, %sp @
-|#PROLOGUE# 1
- movew %a6 @(0x8), %d0
- muluw %a6 @(0xe), %d0
- movew %a6 @(0xa), %d1
- muluw %a6 @(0xc), %d1
- addw %d1 , %d0
- lsll #8, %d0
- lsll #8, %d0
- movew %a6 @(0xa), %d1
- muluw %a6 @(0xe), %d1
- addl %d1 , %d0
- jra LE14
-LE14:
-|#PROLOGUE# 2
- moveml %sp @, #LS14
- unlk %a6
-|#PROLOGUE# 3
- rts
- LF14 = 4
- LS14 = 0x0002
- LFF14 = 0
-# 354 "libgcc1.S"
- LSS14 = 0x0
- LV14 = 0
}
if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
gas_test "t2.s" "" "" "cross-section branch"
- if [istarget m68*-motorola-sysv] then {
- run_dump_test t2
- }
gas_test "pic1.s" "" "" "PIC generation"
gas_test_error "p2410.s" "" "out-of-range 'bras'"
- # Reloc types etc. need changing for aout and coff to pass.
- setup_xfail "*-*"
- clear_xfail "*-*-*elf*" "*-*-sysv4*" "*-*-rtems*" "*-*-*linux*" "*-*-*gnu*" "*-*-psos*"
run_dump_test pcrel
# Since fido is basically CPU32, it does not support those
run_dump_test mcf-fpu
run_dump_test mcf-trap
run_dump_test mcf-wdebug
- if { [istarget *-*-elf] || [istarget *-*-linux*] } then {
- run_dump_test arch-cpu-1
- }
+ run_dump_test arch-cpu-1
run_dump_test cpu32
run_dump_test br-isaa
gas_test_error "p13050-1.s" "-march=isab" "moveb (d8,An,Xi),(d16,An) unsupported on isab"
run_dump_test p13050-2
- if { [istarget *-*-*aout] || [istarget *-*-netbsd] || [istarget *-*-openbsd*] } then {
- run_dump_test p3041
- run_dump_test p3041data
- run_dump_test p3041pcrel
- }
-
set testname "68000 operands"
gas_run "operands.s" "-m68000" "2>err.out"
if ![string match "child process exited abnormally" $comp_output] then {
#name: br-isaa.d
#objdump: -dr
#as: -march=isaa -pcrel
-#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd*
.*: file format .*
#name: br-isab.d
#objdump: -dr
#as: -march=isab -pcrel
-#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd*
.*: file format .*
#name: br-isac.d
#objdump: -dr
#as: -march=isac -pcrel
-#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd*
.*: file format .*
+++ /dev/null
-#name: PR 3041
-#objdump: -tdr
-
-.*: file format .*
-
-SYMBOL TABLE:
-00000036 w \.text 0000 00 0f mytext
-0000003e w \.data 0000 00 10 mydata
-0000004a w \.bss 0000 00 11 mybss
-
-Disassembly of section \.text:
-
-00000000 <.*>:
- 0: 41f9 0000 0000 lea 0 <.*>,%a0
- 2: 32 mytext
- 6: 41f9 0000 0002 lea 2 <.*>,%a0
- 8: 32 mytext
- c: 41f9 ffff fffc lea fffffffc <.*>,%a0
- e: 32 mytext
- 12: 41f9 0000 0000 lea 0 <.*>,%a0
- 14: 32 mydata
- 18: 41f9 0000 0003 lea 3 <.*>,%a0
- 1a: 32 mydata
- 1e: 41f9 ffff ffff lea ffffffff <.*>,%a0
- 20: 32 mydata
- 24: 41f9 0000 0000 lea 0 <.*>,%a0
- 26: 32 mybss
- 2a: 41f9 0000 0001 lea 1 <.*>,%a0
- 2c: 32 mybss
- 30: 41f9 ffff fffe lea fffffffe <.*>,%a0
- 32: 32 mybss
-
-00000036 <mytext>:
- 36: 4e71 nop
- 38: 4e71 nop
- 3a: 4e71 nop
+++ /dev/null
- lea mytext,%a0
- lea mytext+2,%a0
- lea mytext-4,%a0
- lea mydata,%a0
- lea mydata+3,%a0
- lea mydata-1,%a0
- lea mybss,%a0
- lea mybss+1,%a0
- lea mybss-2,%a0
- .weak mytext
-mytext:
- nop
- nop
- nop
-
- .data
- .word 0x8081
- .weak mydata
-mydata:
- .word 0x8283
- .word 0x8485
-
- .bss
- .skip 6
- .weak mybss
-mybss:
- .skip 2
+++ /dev/null
-#name: PR 3041 data
-#objdump: -trs
-
-.*: file format .*
-
-SYMBOL TABLE:
-00000006 w \.text 0000 00 0f mytext
-00000014 w \.data 0000 00 10 mydata
-00000040 w \.bss 0000 00 11 mybss
-
-RELOCATION RECORDS FOR \[\.data\]:
-OFFSET TYPE VALUE
-00000004 32 mytext
-00000008 32 mytext
-0000000c 32 mytext
-00000010 32 mydata
-00000014 32 mydata
-00000018 32 mydata
-0000001c 32 mybss
-00000020 32 mybss
-00000024 32 mybss
-
-Contents of section .text:
- 0000 4e714e71 4e714e71 .*
-Contents of section .data:
- 0008 12345678 00000000 00000001 fffffffd .*
- 0018 00000000 00000003 fffffffe 00000000 .*
- 0028 00000002 ffffffff .*
+++ /dev/null
- .text
- nop
- nop
- nop
- .weak mytext
-mytext:
- nop
-
- .data
- .long 0x12345678
- .long mytext
- .long mytext+1
- .weak mydata
-mydata:
- .long mytext-3
- .long mydata
- .long mydata+3
- .long mydata-2
- .long mybss
- .long mybss+2
- .long mybss-1
-
- .bss
- .skip 16
- .weak mybss
-mybss:
- .word 1
+++ /dev/null
-#name: PR 3041 pcrel
-#as: -m68000
-#objdump: -tdr
-
-.*: file format .*
-
-SYMBOL TABLE:
-00000024 w \.text 0000 00 0f mytext
-0000002e w \.data 0000 00 10 mydata
-0000003a w \.bss 0000 00 11 mybss
-
-Disassembly of section \.text:
-
-00000000 <.*>:
- 0: 41fa fffe lea %pc@\(0 <.*>\),%a0
- 2: DISP16 mytext
- 4: 41fa fffc lea %pc@\(2 <.*>\),%a0
- 6: DISP16 mytext
- 8: 41fa fff2 lea %pc@\(fffffffc <.*>\),%a0
- a: DISP16 mytext
- c: 41fa fff2 lea %pc@\(0 <.*>\),%a0
- e: DISP16 mydata
- 10: 41fa fff1 lea %pc@\(3 <.*>\),%a0
- 12: DISP16 mydata
- 14: 41fa ffe9 lea %pc@\(ffffffff <.*>\),%a0
- 16: DISP16 mydata
- 18: 41fa ffe6 lea %pc@\(0 <.*>\),%a0
- 1a: DISP16 mybss
- 1c: 41fa ffe3 lea %pc@\(1 <.*>\),%a0
- 1e: DISP16 mybss
- 20: 41fa ffdc lea %pc@\(fffffffe <.*>\),%a0
- 22: DISP16 mybss
-
-00000024 <mytext>:
- 24: 4e71 nop
- 26: 4e71 nop
- 28: 4e71 nop
- 2a: 4e71 nop
+++ /dev/null
- lea mytext(%pc),%a0
- lea mytext+2(%pc),%a0
- lea mytext-4(%pc),%a0
- lea mydata(%pc),%a0
- lea mydata+3(%pc),%a0
- lea mydata-1(%pc),%a0
- lea mybss(%pc),%a0
- lea mybss+1(%pc),%a0
- lea mybss-2(%pc),%a0
- .weak mytext
-mytext:
- nop
- nop
- nop
- nop
-
- .data
- .word 0x8081
- .weak mydata
-mydata:
- .word 0x8283
- .word 0x8485
-
- .bss
- .skip 6
- .weak mybss
-mybss:
- .skip 2
+++ /dev/null
-#PROG: nm
-#name: presence of section symbols
-
-00000012 b .bss
-0000000e d .data
-00000000 t .text
-0000000e d loop1
-00000000 t loop2
+2018-04-16 Alan Modra <amodra@gmail.com>
+
+ * aout/host.h: Remove m68k-aout and m68k-coff support.
+ * aout/hp300hpux.h: Delete.
+ * coff/apollo.h: Delete.
+ * coff/aux-coff.h: Delete.
+ * coff/m68k.h: Delete.
+
2018-04-16 Alan Modra <amodra@gmail.com>
* dis-asm.h: Remove sh5 and sh64 support.
It is up to you to define SEGMENT_SIZE on machines not listed here. */
#ifndef SEGMENT_SIZE
-#if defined(hp300) || defined(pyr)
+#if defined(pyr)
#define SEGMENT_SIZE page_size
#endif
#define SEGMENT_SIZE 0x20000
#endif
-#if defined(m68k) && defined(PORTAR)
-#define TARGET_PAGE_SIZE 0x400
-#define SEGMENT_SIZE TARGET_PAGE_SIZE
-#endif
-
#endif /*!defined(SEGMENT_SIZE)*/
+++ /dev/null
-/* Special version of <a.out.h> for use under HP-UX.
- Copyright (C) 1988-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. */
-
-struct hp300hpux_exec_bytes
-{
- unsigned char e_info[4]; /* a_machtype/a_magic */
- unsigned char e_spare1[4];
- unsigned char e_spare2[4];
- unsigned char e_text[4]; /* length of text, in bytes */
- unsigned char e_data[4]; /* length of data, in bytes */
- unsigned char e_bss[4]; /* length of uninitialized data area , in bytes */
- unsigned char e_trsize[4]; /* length of relocation info for text, in bytes*/
- unsigned char e_drsize[4]; /* length of relocation info for data, in bytes*/
- unsigned char e_passize[4];/* HP = pascal interface size */
- unsigned char e_syms[4]; /* HP = symbol table size */
- unsigned char e_spare5[4]; /* HP = debug name table size */
- unsigned char e_entry[4]; /* start address */
- unsigned char e_spare6[4]; /* HP = source line table size */
- unsigned char e_supsize[4];/* HP = value table size */
- unsigned char e_drelocs[4];
- unsigned char e_extension[4]; /* file offset of extension */
-};
-#define EXEC_BYTES_SIZE 64
-
-struct hp300hpux_nlist_bytes
-{
- unsigned char e_value[4];
- unsigned char e_type[1];
- unsigned char e_length[1]; /* Length of ascii symbol name. */
- unsigned char e_almod[2]; /* Alignment mod. */
- unsigned char e_shlib[2]; /* Info about dynamic linking. */
-};
-#define EXTERNAL_NLIST_SIZE 10
-
-struct hp300hpux_reloc
-{
- unsigned char r_address[4];/* offset of data to relocate */
- unsigned char r_index[2]; /* symbol table index of symbol */
- unsigned char r_type[1]; /* relocation type */
- unsigned char r_length[1]; /* length of item to reloc */
-};
-
-struct hp300hpux_header_extension
-{
- unsigned char e_syms[4];
- unsigned char unique_headers[12*4];
- unsigned char e_header[2]; /* Type of header. */
- unsigned char e_version[2]; /* Version. */
- unsigned char e_size[4]; /* Bytes following. */
- unsigned char e_extension[4];/* File offset of next extension. */
-};
-#define EXTERNAL_EXTENSION_HEADER_SIZE (16*4)
-
-/* HPUX separates object files (0x106) and impure executables (0x107)
- but the bfd code does not distinguish between them. Since we want to
- read hpux .o files, we add an special define and use it below in
- offset and address calculations. */
-
-#define HPUX_DOT_O_MAGIC 0x106
-#define OMAGIC 0x107 /* Object file or impure executable. */
-#define NMAGIC 0x108 /* Code indicating pure executable. */
-#define ZMAGIC 0x10B /* Demand-paged executable. */
-
-#define N_HEADER_IN_TEXT(x) 0
-
-#if 0 /* libaout.h only uses the lower 8 bits. */
-#define HP98x6_ID 0x20A
-#define HP9000S200_ID 0x20C
-#endif
-#define HP98x6_ID 0x0A
-#define HP9000S200_ID 0x0C
-
-#define N_BADMAG(x) ((_N_BADMAG (x)) || (_N_BADMACH (x)))
-
-#define N_DATADDR(x) \
- ((N_MAGIC (x) == OMAGIC || N_MAGIC (x) == HPUX_DOT_O_MAGIC) \
- ? (N_TXTADDR (x) + N_TXTSIZE (x)) \
- : (N_SEGSIZE (x) + ((N_TXTADDR (x) + N_TXTSIZE (x) - 1) \
- & ~ (bfd_vma) (N_SEGSIZE (x) - 1))))
-
-#define _N_BADMACH(x) \
- (((N_MACHTYPE (x)) != HP9000S200_ID) && ((N_MACHTYPE (x)) != HP98x6_ID))
-
-#define _N_BADMAG(x) (N_MAGIC(x) != HPUX_DOT_O_MAGIC \
- && N_MAGIC(x) != OMAGIC \
- && N_MAGIC(x) != NMAGIC \
- && N_MAGIC(x) != ZMAGIC )
-
-#undef _N_HDROFF
-#define _N_HDROFF(x) (SEGMENT_SIZE - (sizeof (struct exec)))
-
-#undef N_DATOFF
-#undef N_PASOFF
-#undef N_SYMOFF
-#undef N_SUPOFF
-#undef N_TRELOFF
-#undef N_DRELOFF
-#undef N_STROFF
-
-#define N_DATOFF(x) ( N_TXTOFF(x) + N_TXTSIZE(x) )
-#define N_PASOFF(x) ( N_DATOFF(x) + (x)->a_data)
-#define N_SYMOFF(x) ( N_PASOFF(x) /* + (x)->a_passize*/ )
-#define N_SUPOFF(x) ( N_SYMOFF(x) + (x)->a_syms )
-#define N_TRELOFF(x) ( N_SUPOFF(x) /* + (x)->a_supsize*/ )
-#define N_DRELOFF(x) ( N_TRELOFF(x) + (x)->a_trsize )
-#define N_EXTHOFF(x) ( N_DRELOFF(x) /* + (x)->a_drsize */)
-#define N_STROFF(x) ( 0 /* no string table */ )
-
-/* Use these when the file has gnu symbol tables. */
-#define N_GNU_TRELOFF(x) (N_DATOFF(x) + (x)->a_data)
-#define N_GNU_DRELOFF(x) (N_GNU_TRELOFF(x) + (x)->a_trsize)
-#define N_GNU_SYMOFF(x) (N_GNU_DRELOFF(x) + (x)->a_drsize)
-
-#define TARGET_PAGE_SIZE 0x1000
-#define SEGMENT_SIZE 0x1000
-#define TEXT_START_ADDR 0
+++ /dev/null
-/* coff information for Apollo M68K
-
- 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. */
-
-#define DO_NOT_DEFINE_AOUTHDR
-#define L_LNNO_SIZE 2
-#include "coff/external.h"
-
-/* Motorola 68000/68008/68010/68020 */
-#define MC68MAGIC 0520
-#define MC68KWRMAGIC 0520 /* writeable text segments */
-#define MC68TVMAGIC 0521
-#define MC68KROMAGIC 0521 /* readonly shareable text segments */
-#define MC68KPGMAGIC 0522 /* demand paged text segments */
-#define M68MAGIC 0210
-#define M68TVMAGIC 0211
-
-/* Apollo 68000-based machines have a different magic number. This comes
- * from /usr/include/apollo/filehdr.h
- */
-#define APOLLOM68KMAGIC 0627
-
-#define OMAGIC M68MAGIC
-#define M68KBADMAG(x) (((x).f_magic!=MC68MAGIC) && ((x).f_magic!=MC68KWRMAGIC) && ((x).f_magic!=MC68TVMAGIC) && \
- ((x).f_magic!=MC68KROMAGIC) && ((x).f_magic!=MC68KPGMAGIC) && ((x).f_magic!=M68MAGIC) && ((x).f_magic!=M68TVMAGIC) && \
- ((x).f_magic!=APOLLOM68KMAGIC) )
-
-/********************** AOUT "OPTIONAL HEADER" **********************/
-
-typedef struct
-{
- char magic[2]; /* type of file */
- char vstamp[2]; /* version stamp */
- char tsize[4]; /* text size in bytes, padded to FW bdry*/
- char dsize[4]; /* initialized data " " */
- char bsize[4]; /* uninitialized data " " */
- char entry[4]; /* entry pt. */
- char text_start[4]; /* base of text used for this file */
- char data_start[4]; /* base of data used for this file */
- char o_sri[4]; /* Apollo specific - .sri data pointer */
- char o_inlib[4]; /* Apollo specific - .inlib data pointer */
- char vid[8]; /* Apollo specific - 64 bit version ID */
-}
-AOUTHDR;
-
-#define APOLLO_COFF_VERSION_NUMBER 1 /* the value of the aouthdr magic */
-#define AOUTHDRSZ 44
-#define AOUTSZ 44
-
-/* Apollo allowa for larger section names by allowing
- them to be in the string table. */
-
-/* If s_zeores is all zeroes, s_offset gives the real
- location of the name in the string table. */
-
-#define s_zeroes section_name.s_name
-#define s_offset (section_name.s_name+4)
-
-/* More names of "special" sections. */
-#define _TV ".tv"
-#define _INIT ".init"
-#define _FINI ".fini"
-#define _LINES ".lines"
-#define _BLOCKS ".blocks"
-#define _SRI ".sri" /* Static Resource Information (systype,
- et al.) */
-#define _MIR ".mir" /* Module Information Records */
-#define _APTV ".aptv" /* Apollo-style transfer vectors. */
-#define _INLIB ".inlib" /* Shared Library information */
-#define _RWDI ".rwdi" /* Read/write data initialization directives for
- compressed sections */
-#define _UNWIND ".unwind" /* Stack unwind information */
-
-/********************** RELOCATION DIRECTIVES **********************/
-
-struct external_reloc
-{
- char r_vaddr[4];
- char r_symndx[4];
- char r_type[2];
-#ifdef M68K_COFF_OFFSET
- char r_offset[4];
-#endif
-
-};
-
-#define RELOC struct external_reloc
-
-#ifdef M68K_COFF_OFFSET
-#define RELSZ 14
-#else
-#define RELSZ 10
-#endif
-
-/* Apollo specific STYP flags */
-
-#define STYP_RELOCATED_NOT_LOADED 0x00010000 /* Section is relocated normally during linking, but need
- not be loaded during program execution */
-#define STYP_DEBUG 0x00020000 /* debug section */
-#define STYP_OVERLAY 0x00040000 /* Section is overlayed */
-#define STYP_INSTRUCTION 0x00200000 /* Section contains executable code */
-
-#define STYP_ZERO 0x00800000 /* Section is initialized to zero */
-#define STYP_INSTALLED 0x02000000 /* Section should be installable in KGT */
-#define STYP_LOOK_INSTALLED 0x04000000 /* Look for section in KGT */
-#define STYP_SECALIGN1 0x08000000 /* Specially aligned section */
-#define STYP_SECALIGN2 0x10000000 /* " " " */
-#define STYP_COMPRESSED 0x20000000 /* No section data per se (s_scnptr = 0), but there are
- initialization directives for it in .rwdi section
- (used in conjunction with STYP_BSS) */
+++ /dev/null
-/* Modifications of internal.h and m68k.h needed by A/UX
-
- 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.
-
- Suggested by Ian Lance Taylor <ian@cygnus.com> */
-
-#ifndef GNU_COFF_AUX_H
-#define GNU_COFF_AUX_H 1
-
-#include "coff/internal.h"
-#include "coff/m68k.h"
-
-/* Section contains 64-byte padded pathnames of shared libraries */
-#undef STYP_LIB
-#define STYP_LIB 0x200
-
-/* Section contains shared library initialization code */
-#undef STYP_INIT
-#define STYP_INIT 0x400
-
-/* Section contains .ident information */
-#undef STYP_IDENT
-#define STYP_IDENT 0x800
-
-/* Section types used by bfd and gas not defined (directly) by A/UX */
-#undef STYP_OVER
-#define STYP_OVER 0
-#undef STYP_INFO
-#define STYP_INFO STYP_IDENT
-
-/* Traditional name of the section tagged with STYP_LIB */
-#define _LIB ".lib"
-
-#endif /* GNU_COFF_AUX_H */
+++ /dev/null
-/* coff information for M68K
-
- 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 GNU_COFF_M68K_H
-#define GNU_COFF_M68K_H 1
-
-#define L_LNNO_SIZE 2
-#include "coff/external.h"
-
-/* Motorola 68000/68008/68010/68020 */
-#define MC68MAGIC 0520
-#define MC68KWRMAGIC 0520 /* writeable text segments */
-#define MC68TVMAGIC 0521
-#define MC68KROMAGIC 0521 /* readonly shareable text segments */
-#define MC68KPGMAGIC 0522 /* demand paged text segments */
-#define M68MAGIC 0210
-#define M68TVMAGIC 0211
-
-/* This is the magic of the Bull dpx/2 */
-#define MC68KBCSMAGIC 0526
-
-/* This is Lynx's all-platform magic number for executables. */
-
-#define LYNXCOFFMAGIC 0415
-
-#define OMAGIC M68MAGIC
-
-/* This intentionally does not include MC68KBCSMAGIC; it only includes
- magic numbers which imply that names do not have underscores. */
-#define M68KBADMAG(x) (((x).f_magic != MC68MAGIC) \
- && ((x).f_magic != MC68KWRMAGIC) \
- && ((x).f_magic != MC68TVMAGIC) \
- && ((x).f_magic != MC68KROMAGIC) \
- && ((x).f_magic != MC68KPGMAGIC) \
- && ((x).f_magic != M68MAGIC) \
- && ((x).f_magic != M68TVMAGIC) \
- && ((x).f_magic != LYNXCOFFMAGIC))
-
-/* Magic numbers for the a.out header. */
-
-#define PAGEMAGICEXECSWAPPED 0407 /* executable (swapped) */
-#define PAGEMAGICPEXECSWAPPED 0410 /* pure executable (swapped) */
-#define PAGEMAGICPEXECTSHLIB 0443 /* pure executable (target shared library) */
-#define PAGEMAGICPEXECPAGED 0413 /* pure executable (paged) */
-
-/********************** RELOCATION DIRECTIVES **********************/
-
-struct external_reloc
-{
- char r_vaddr[4];
- char r_symndx[4];
- char r_type[2];
-#ifdef M68K_COFF_OFFSET
- char r_offset[4];
-#endif
-};
-
-#define RELOC struct external_reloc
-
-#ifdef M68K_COFF_OFFSET
-#define RELSZ 14
-#else
-#define RELSZ 10
-#endif
-
-#endif /* GNU_COFF_M68K_H */
+2018-04-16 Alan Modra <amodra@gmail.com>
+
+ * Makefile.am: Remove m68k-aout and m68k-coff support.
+ * configure.tgt: Likewise.
+ * emultempl/m68kelf.em: Likewise.
+ * ld.texinfo: Likewise.
+ * mri.c: Likewise.
+ * emulparams/delta68.sh: Delete.
+ * emulparams/hp300bsd.sh: Delete.
+ * emulparams/hp3hpux.sh: Delete.
+ * emulparams/m68k4knbsd.sh: Delete.
+ * emulparams/m68kaout.sh: Delete.
+ * emulparams/m68kaux.sh: Delete.
+ * emulparams/m68kcoff.sh: Delete.
+ * emulparams/m68klinux.sh: Delete.
+ * emulparams/m68knbsd.sh: Delete.
+ * emulparams/m68kpsos.sh: Delete.
+ * emulparams/sun3.sh: Delete.
+ * emultempl/m68kcoff.em: Delete.
+ * scripttempl/delta68.sc: Delete.
+ * scripttempl/m68kaux.sc: Delete.
+ * scripttempl/m68kcoff.sc: Delete.
+ * scripttempl/psos.sc: Delete.
+ * testsuite/ld-versados/t1-1.ro: Delete.
+ * testsuite/ld-versados/t1-2.ro: Delete.
+ * testsuite/ld-versados/t1.ld: Delete.
+ * testsuite/ld-versados/t1.ook: Delete.
+ * testsuite/ld-versados/t2-1.ro: Delete.
+ * testsuite/ld-versados/t2-2.ro: Delete.
+ * testsuite/ld-versados/t2-3.ro: Delete.
+ * testsuite/ld-versados/t2.ld: Delete.
+ * testsuite/ld-versados/t2.ook: Delete.
+ * testsuite/ld-versados/versados.exp: Delete.
+ * Makefile.in: Regenerate.
+ * po/BLD-POTFILES.in: Regenerate.
+
2018-04-16 Alan Modra <amodra@gmail.com>
* Makefile.am: Remove sh5 and sh64 support.
ed30v_e.c \
ed30v_o.c \
ed30velf.c \
- edelta68.c \
eelf32_dlx.c \
eelf32_sparc.c \
eelf32_sparc_sol2.c \
eh8300sxelf.c \
eh8300sxelf_linux.c \
eh8300sxnelf.c \
- ehp300bsd.c \
- ehp3hpux.c \
ehppaelf.c \
ehppalinux.c \
ehppanbsd.c \
em68hc11elfb.c \
em68hc12elf.c \
em68hc12elfb.c \
- em68k4knbsd.c \
- em68kaout.c \
- em68kaux.c \
- em68kcoff.c \
em68kelf.c \
em68kelfnbsd.c \
- em68klinux.c \
- em68knbsd.c \
- em68kpsos.c \
emcorepe.c \
emn10200.c \
emn10300.c \
esparcaout.c \
esparclinux.c \
esparcnbsd.c \
- esun3.c \
esun4.c \
etic30aout.c \
etic30coff.c \
ed30velf.c: $(srcdir)/emulparams/d30velf.sh \
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/elfd30v.sc ${GEN_DEPENDS}
-edelta68.c: $(srcdir)/emulparams/delta68.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
-
eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS}
$(srcdir)/emulparams/h8300elf.sh \
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
-ehp300bsd.c: $(srcdir)/emulparams/hp300bsd.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-ehp3hpux.c: $(srcdir)/emulparams/hp3hpux.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
ehppaelf.c: $(srcdir)/emulparams/hppaelf.sh \
$(ELF_DEPS) $(srcdir)/emultempl/hppaelf.em \
$(srcdir)/scripttempl/hppaelf.sc ${GEN_DEPENDS}
$(srcdir)/emultempl/m68hc1xelf.em $(ELF_DEPS) \
$(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
-em68k4knbsd.c: $(srcdir)/emulparams/m68k4knbsd.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68kaout.c: $(srcdir)/emulparams/m68kaout.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
-
-em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
- $(srcdir)/emultempl/m68kcoff.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
-
em68kelf.c: $(srcdir)/emulparams/m68kelf.sh \
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
-em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
- $(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68knbsd.c: $(srcdir)/emulparams/m68knbsd.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68kpsos.c: $(srcdir)/emulparams/m68kpsos.sh \
- $(ELF_DEPS) $(srcdir)/scripttempl/psos.sc ${GEN_DEPENDS}
-
emcorepe.c: $(srcdir)/emulparams/mcorepe.sh \
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS}
esparcnbsd.c: $(srcdir)/emulparams/sparcnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-esun3.c: $(srcdir)/emulparams/sun3.sh \
- $(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
esun4.c: $(srcdir)/emulparams/sun4.sh \
$(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
ed30v_e.c \
ed30v_o.c \
ed30velf.c \
- edelta68.c \
eelf32_dlx.c \
eelf32_sparc.c \
eelf32_sparc_sol2.c \
eh8300sxelf.c \
eh8300sxelf_linux.c \
eh8300sxnelf.c \
- ehp300bsd.c \
- ehp3hpux.c \
ehppaelf.c \
ehppalinux.c \
ehppanbsd.c \
em68hc11elfb.c \
em68hc12elf.c \
em68hc12elfb.c \
- em68k4knbsd.c \
- em68kaout.c \
- em68kaux.c \
- em68kcoff.c \
em68kelf.c \
em68kelfnbsd.c \
- em68klinux.c \
- em68knbsd.c \
- em68kpsos.c \
emcorepe.c \
emn10200.c \
emn10300.c \
esparcaout.c \
esparclinux.c \
esparcnbsd.c \
- esun3.c \
esun4.c \
etic30aout.c \
etic30coff.c \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed30v_e.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed30v_o.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed30velf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edelta68.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32_dlx.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32_sparc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32_sparc_sol2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300sxelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300sxelf_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300sxnelf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehp300bsd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehp3hpux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppa64linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppaelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppalinux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68hc11elfb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68hc12elf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68hc12elfb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68k4knbsd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kaout.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kaux.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kcoff.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kelfnbsd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68klinux.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68knbsd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kpsos.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emcorepe.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emmo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emn10200.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esparcaout.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esparclinux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esparcnbsd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esun3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esun4.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/etic30aout.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/etic30coff.Po@am__quote@
ed30velf.c: $(srcdir)/emulparams/d30velf.sh \
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/elfd30v.sc ${GEN_DEPENDS}
-edelta68.c: $(srcdir)/emulparams/delta68.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
-
eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS}
$(srcdir)/emulparams/h8300elf.sh \
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
-ehp300bsd.c: $(srcdir)/emulparams/hp300bsd.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-ehp3hpux.c: $(srcdir)/emulparams/hp3hpux.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
ehppaelf.c: $(srcdir)/emulparams/hppaelf.sh \
$(ELF_DEPS) $(srcdir)/emultempl/hppaelf.em \
$(srcdir)/scripttempl/hppaelf.sc ${GEN_DEPENDS}
$(srcdir)/emultempl/m68hc1xelf.em $(ELF_DEPS) \
$(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
-em68k4knbsd.c: $(srcdir)/emulparams/m68k4knbsd.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68kaout.c: $(srcdir)/emulparams/m68kaout.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
-
-em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
- $(srcdir)/emultempl/m68kcoff.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
-
em68kelf.c: $(srcdir)/emulparams/m68kelf.sh \
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
-em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
- $(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68knbsd.c: $(srcdir)/emulparams/m68knbsd.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
-em68kpsos.c: $(srcdir)/emulparams/m68kpsos.sh \
- $(ELF_DEPS) $(srcdir)/scripttempl/psos.sc ${GEN_DEPENDS}
-
emcorepe.c: $(srcdir)/emulparams/mcorepe.sh \
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS}
esparcnbsd.c: $(srcdir)/emulparams/sparcnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-esun3.c: $(srcdir)/emulparams/sun3.sh \
- $(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
-
esun4.c: $(srcdir)/emulparams/sun4.sh \
$(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
m68hc12-*-*|m6812-*-*) targ_emul=m68hc12elf
targ_extra_emuls="m68hc12elfb m68hc11elf m68hc11elfb" ;;
-m68*-sun-sunos[34]*) targ_emul=sun3 ;;
-m68*-wrs-vxworks*) targ_emul=sun3 ;;
-m68*-ericsson-ose) targ_emul=sun3 ;;
-m68*-apple-aux*) targ_emul=m68kaux ;;
-m68k-hp-bsd*) targ_emul=hp300bsd ;;
-m68*-motorola-sysv*) targ_emul=delta68 ;;
-m68*-*-aout) targ_emul=m68kaout ;;
-m68*-*-coff) targ_emul=m68kcoff ;;
-m68*-*-elf | m68*-*-rtems*)
- targ_emul=m68kelf ;;
-m68*-*-hpux*) targ_emul=hp3hpux ;;
-m68k-*-linux*aout*) targ_emul=m68klinux
- targ_extra_emuls=m68kelf
- tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'` ;;
-m68k-*-linux-*) targ_emul=m68kelf
- targ_extra_emuls=m68klinux
- tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'` ;;
-m68k-*-uclinux*) targ_emul=m68kelf ;;
-m68*-*-gnu*) targ_emul=m68kelf ;;
-m68*-*-netbsd*4k*) targ_emul=m68k4knbsd
- targ_extra_emuls="m68knbsd m68kelfnbsd" ;;
-m68*-*-netbsdelf*) targ_emul=m68kelfnbsd
- targ_extra_emuls="m68knbsd m68k4knbsd" ;;
-m68*-*-netbsdaout* | m68*-*-netbsd*)
- targ_emul=m68knbsd
- targ_extra_emuls="m68kelfnbsd m68k4knbsd" ;;
-m68*-*-psos*) targ_emul=m68kpsos ;;
+m68*-*-netbsdelf*) targ_emul=m68kelfnbsd ;;
+m68*-*-*) targ_emul=m68kelf ;;
mcore-*-pe) targ_emul=mcorepe ;
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
mcore-*-elf) targ_emul=elf32mcore
+++ /dev/null
-SCRIPT_NAME=delta68
-OUTPUT_FORMAT="coff-m68k-sysv"
-TEXT_START_ADDR=0x2000
-PAGE_SIZE=0x1000000
-ARCH=m68k
+++ /dev/null
-SCRIPT_NAME=aout
-OUTPUT_FORMAT="a.out-hp300bsd"
-TEXT_START_ADDR=0
-TARGET_PAGE_SIZE=4096
-ARCH=m68k
+++ /dev/null
-SCRIPT_NAME=aout
-OUTPUT_FORMAT="a.out-hp300hpux"
-TEXT_START_ADDR=0
-TARGET_PAGE_SIZE=4096
-ARCH=m68k
-STACKZERO="___stack_zero = 0x2000; __DYNAMIC = 0;"
-# This is needed for HPUX 9.0; it is unnecessary but harmless for 8.0.
-SHLIB_PATH="___dld_shlib_path = 0;"
+++ /dev/null
-SCRIPT_NAME=aout
-TEXT_START_ADDR=0x1020
-case ${LD_FLAG} in
- n|N) TEXT_START_ADDR=0x1000 ;;
-esac
-OUTPUT_FORMAT="a.out-m68k4k-netbsd"
-TARGET_PAGE_SIZE=0x1000
-ARCH=m68k
-EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
+++ /dev/null
-SCRIPT_NAME=aout
-OUTPUT_FORMAT="a.out-zero-big"
-TEXT_START_ADDR=0x2020
-TARGET_PAGE_SIZE=0x2000
-SEGMENT_SIZE=0x20000
-ARCH=m68k
+++ /dev/null
-SCRIPT_NAME=m68kaux
-OUTPUT_FORMAT="coff-m68k-aux"
-SEGMENT_SIZE=0x40000
-TARGET_PAGE_SIZE=0x1000
-TEXT_START_ADDR="$SEGMENT_SIZE + SIZEOF_HEADERS"
-NON_PAGED_TEXT_START_ADDR=SIZEOF_HEADERS
-DATA_ALIGNMENT_="(. & (-$SEGMENT_SIZE | $TARGET_PAGE_SIZE-1)) + $SEGMENT_SIZE"
-ARCH=m68k
+++ /dev/null
-SCRIPT_NAME=m68kcoff
-OUTPUT_FORMAT="coff-m68k"
-TEXT_START_ADDR=0x1000000
-TARGET_PAGE_SIZE=0x1000000
-ARCH=m68k
-TEMPLATE_NAME=m68kcoff
+++ /dev/null
-SCRIPT_NAME=aout
-OUTPUT_FORMAT="a.out-m68k-linux"
-TARGET_PAGE_SIZE=0x1000
-TEXT_START_ADDR=0x1020
-case ${LD_FLAG} in
- n|N) TEXT_START_ADDR=0 ;;
-esac
-ARCH=m68k
-TEMPLATE_NAME=linux
+++ /dev/null
-SCRIPT_NAME=aout
-TEXT_START_ADDR=0x2020
-case ${LD_FLAG} in
- n|N) TEXT_START_ADDR=0x2000 ;;
-esac
-OUTPUT_FORMAT="a.out-m68k-netbsd"
-TARGET_PAGE_SIZE=0x2000
-ARCH=m68k
-EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
+++ /dev/null
-SCRIPT_NAME=psos
-OUTPUT_FORMAT="elf32-m68k"
-TEXT_START_ADDR=0x20000
-MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
-ARCH=m68k
-TEMPLATE_NAME=elf32
+++ /dev/null
-SCRIPT_NAME=aout
-OUTPUT_FORMAT="a.out-sunos-big"
-TEXT_START_ADDR=0x2020
-case ${LD_FLAG} in
- n|N) TEXT_START_ADDR=0x2000 ;;
-esac
-TARGET_PAGE_SIZE=0x2000
-SEGMENT_SIZE=0x20000
-ARCH=m68k
-TEMPLATE_NAME=sunos
+++ /dev/null
-# This shell script emits a C file. -*- C -*-
-# It does some substitutions.
-fragment <<EOF
-/* This file is is generated by a shell script. DO NOT EDIT! */
-
-/* Handle embedded relocs for m68k.
- Copyright (C) 2000-2018 Free Software Foundation, Inc.
- Written by Michael Sokolov <msokolov@ivan.Harhan.ORG>, based on generic.em
- by Steve Chamberlain <steve@cygnus.com>, embedded relocs code based on
- mipsecoff.em by Ian Lance Taylor <ian@cygnus.com> (now removed).
-
- This file is part of the GNU Binutils.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-#define TARGET_IS_${EMULATION_NAME}
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "bfdlink.h"
-
-#include "ld.h"
-#include "ldmain.h"
-#include "ldexp.h"
-#include "ldlang.h"
-#include "ldfile.h"
-#include "ldemul.h"
-#include "ldmisc.h"
-
-static void check_sections (bfd *, asection *, void *);
-
-static void
-gld${EMULATION_NAME}_before_parse (void)
-{
-#ifndef TARGET_ /* I.e., if not generic. */
- ldfile_set_output_arch ("`echo ${ARCH}`", bfd_arch_unknown);
-#endif /* not TARGET_ */
-}
-
-/* This function is run after all the input files have been opened.
- We create a .emreloc section for each input file with a non zero
- .data section. The BFD backend will fill in these sections with
- magic numbers which can be used to relocate the data section at run
- time. */
-
-static void
-gld${EMULATION_NAME}_after_open (void)
-{
- bfd *abfd;
-
- after_open_default ();
-
- if (! command_line.embedded_relocs
- || bfd_link_relocatable (&link_info))
- return;
-
- for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next)
- {
- asection *datasec;
-
- /* As first-order business, make sure that each input BFD is COFF. It
- better be, as we are directly calling a COFF backend function. */
- if (bfd_get_flavour (abfd) != bfd_target_coff_flavour)
- einfo (_("%F%P: %pB: all input objects must be COFF "
- "for --embedded-relocs\n"));
-
- datasec = bfd_get_section_by_name (abfd, ".data");
-
- /* Note that we assume that the reloc_count field has already
- been set up. We could call bfd_get_reloc_upper_bound, but
- that returns the size of a memory buffer rather than a reloc
- count. We do not want to call bfd_canonicalize_reloc,
- because although it would always work it would force us to
- read in the relocs into BFD canonical form, which would waste
- a significant amount of time and memory. */
- if (datasec != NULL && datasec->reloc_count > 0)
- {
- asection *relsec;
-
- relsec = bfd_make_section_with_flags (abfd, ".emreloc",
- (SEC_ALLOC
- | SEC_LOAD
- | SEC_HAS_CONTENTS
- | SEC_IN_MEMORY));
- if (relsec == NULL
- || ! bfd_set_section_alignment (abfd, relsec, 2)
- || ! bfd_set_section_size (abfd, relsec,
- datasec->reloc_count * 12))
- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
- }
-
- /* Double check that all other data sections are empty, as is
- required for embedded PIC code. */
- bfd_map_over_sections (abfd, check_sections, datasec);
- }
-}
-
-/* Check that of the data sections, only the .data section has
- relocs. This is called via bfd_map_over_sections. */
-
-static void
-check_sections (bfd *abfd, asection *sec, void *datasec)
-{
- if ((bfd_get_section_flags (abfd, sec) & SEC_DATA)
- && sec != datasec
- && sec->reloc_count != 0)
- einfo (_("%X%P: %pB: section %s has relocs; can not use --embedded-relocs\n"),
- abfd, bfd_get_section_name (abfd, sec));
-}
-
-/* This function is called after the section sizes and offsets have
- been set. If we are generating embedded relocs, it calls a special
- BFD backend routine to do the work. */
-
-static void
-gld${EMULATION_NAME}_after_allocation (void)
-{
- bfd *abfd;
-
- if (! command_line.embedded_relocs
- || bfd_link_relocatable (&link_info))
- return;
-
- for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next)
- {
- asection *datasec, *relsec;
- char *errmsg;
-
- datasec = bfd_get_section_by_name (abfd, ".data");
-
- if (datasec == NULL || datasec->reloc_count == 0)
- continue;
-
- relsec = bfd_get_section_by_name (abfd, ".emreloc");
- ASSERT (relsec != NULL);
-
- if (! bfd_m68k_coff_create_embedded_relocs (abfd, &link_info,
- datasec, relsec,
- &errmsg))
- {
- if (errmsg == NULL)
- einfo (_("%X%P: %pB: can not create runtime reloc information: %E\n"),
- abfd);
- else
- einfo (_("%X%P: %pB: can not create runtime reloc information: %s\n"),
- abfd, errmsg);
- }
- }
-}
-
-static char *
-gld${EMULATION_NAME}_get_script (int *isfile)
-EOF
-
-if test x"$COMPILE_IN" = xyes
-then
-# Scripts compiled in.
-
-# sed commands to quote an ld script as a C string.
-sc="-f stringify.sed"
-
-fragment <<EOF
-{
- *isfile = 0;
-
- if (bfd_link_relocatable (&link_info) && config.build_constructors)
- return
-EOF
-sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c
-echo ' ; else if (bfd_link_relocatable (&link_info)) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c
-echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c
-echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c
-echo ' ; else return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c
-echo '; }' >> e${EMULATION_NAME}.c
-
-else
-# Scripts read from the filesystem.
-
-fragment <<EOF
-{
- *isfile = 1;
-
- if (bfd_link_relocatable (&link_info) && config.build_constructors)
- return "ldscripts/${EMULATION_NAME}.xu";
- else if (bfd_link_relocatable (&link_info))
- return "ldscripts/${EMULATION_NAME}.xr";
- else if (!config.text_read_only)
- return "ldscripts/${EMULATION_NAME}.xbn";
- else if (!config.magic_demand_paged)
- return "ldscripts/${EMULATION_NAME}.xn";
- else
- return "ldscripts/${EMULATION_NAME}.x";
-}
-EOF
-
-fi
-
-fragment <<EOF
-
-struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
-{
- gld${EMULATION_NAME}_before_parse,
- syslib_default,
- hll_default,
- after_parse_default,
- after_check_relocs_default,
- gld${EMULATION_NAME}_after_open,
- gld${EMULATION_NAME}_after_allocation,
- set_output_arch_default,
- ldemul_default_target,
- before_allocation_default,
- gld${EMULATION_NAME}_get_script,
- "${EMULATION_NAME}",
- "${OUTPUT_FORMAT}",
- finish_default,
- NULL, /* create output section statements */
- NULL, /* open dynamic archive */
- NULL, /* place orphan */
- NULL, /* set symbols */
- NULL, /* parse args */
- NULL, /* add_options */
- NULL, /* handle_option */
- NULL, /* unrecognized file */
- NULL, /* list options */
- NULL, /* recognized file */
- NULL, /* find_potential_libraries */
- NULL, /* new_vers_pattern */
- NULL /* extra_map_file_text */
-};
-EOF
{
asection *datasec;
- /* As first-order business, make sure that each input BFD is either
- COFF or ELF. We need to call a special BFD backend function to
- generate the embedded relocs, and we have such functions only for
- COFF and ELF. */
- if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
- && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
- einfo (_("%F%P: %pB: all input objects must be COFF or ELF "
+ if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+ einfo (_("%F%P: %pB: all input objects must be ELF "
"for --embedded-relocs\n"));
datasec = bfd_get_section_by_name (abfd, ".data");
relsec = bfd_get_section_by_name (abfd, ".emreloc");
ASSERT (relsec != NULL);
- if (bfd_get_flavour (abfd) == bfd_target_coff_flavour)
- {
- if (! bfd_m68k_coff_create_embedded_relocs (abfd, &link_info,
- datasec, relsec,
- &errmsg))
- {
- if (errmsg == NULL)
- einfo (_("%X%P: %pB: can not create "
- "runtime reloc information: %E\n"),
- abfd);
- else
- einfo (_("%X%P: %pB: can not create "
- "runtime reloc information: %s\n"),
- abfd, errmsg);
- }
- }
- else if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
{
if (! bfd_m68k_elf32_create_embedded_relocs (abfd, &link_info,
datasec, relsec,
@cindex @code{FORMAT} (MRI)
@item FORMAT @var{output-format}
Similar to the @code{OUTPUT_FORMAT} command in the more general linker
-language, but restricted to one of these output formats:
-
-@enumerate
-@item
-S-records, if @var{output-format} is @samp{S}
-
-@item
-COFF (the @samp{coff-m68k} variant in BFD), if @var{output-format} is
-@samp{COFF}
-@end enumerate
+language, but restricted to S-records, if @var{output-format} is @samp{S}
@cindex @code{LIST} (MRI)
@item LIST @var{anything}@dots{}
if (strcmp (name, "S") == 0)
lang_add_output_format ("srec", NULL, NULL, 1);
- else if (strcmp (name, "COFF") == 0)
- lang_add_output_format ("coff-m68k", NULL, NULL, 1);
-
else
einfo (_("%F%P: unknown format type %s\n"), name);
}
ed30v_e.c
ed30v_o.c
ed30velf.c
-edelta68.c
eelf32_dlx.c
eelf32_sparc.c
eelf32_sparc_sol2.c
eh8300sxelf.c
eh8300sxelf_linux.c
eh8300sxnelf.c
-ehp300bsd.c
-ehp3hpux.c
ehppa64linux.c
ehppaelf.c
ehppalinux.c
em68hc11elfb.c
em68hc12elf.c
em68hc12elfb.c
-em68k4knbsd.c
-em68kaout.c
-em68kaux.c
-em68kcoff.c
em68kelf.c
em68kelfnbsd.c
-em68klinux.c
-em68knbsd.c
-em68kpsos.c
emcorepe.c
emmo.c
emn10200.c
esparcaout.c
esparclinux.c
esparcnbsd.c
-esun3.c
esun4.c
etic30aout.c
etic30coff.c
+++ /dev/null
-# 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.
-
-cat <<EOF
-/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
-
- Copying and distribution of this script, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. */
-
-OUTPUT_FORMAT("${OUTPUT_FORMAT}")
-OUTPUT_ARCH(${ARCH})
-${RELOCATING+ENTRY (_start)}
-${RELOCATING+${LIB_SEARCH_DIRS}}
-
-SECTIONS
-{
- .text ${RELOCATING+ 0x2000 + SIZEOF_HEADERS} :
- {
- ${RELOCATING+ __.text.start = .};
- *(.text)
- ${RELOCATING+ etext = .;}
- ${RELOCATING+ _etext = .;}
- ${RELOCATING+ __.text.end = .};
- ${CONSTRUCTING+ __CTOR_LIST__ = .;}
- ${CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)}
- ${CONSTRUCTING+ *(.ctors)}
- ${CONSTRUCTING+ LONG(0)}
- ${CONSTRUCTING+ __CTOR_END__ = .;}
- ${CONSTRUCTING+ __DTOR_LIST__ = .;}
- ${CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)}
- ${CONSTRUCTING+ *(.dtors)}
- ${CONSTRUCTING+ LONG(0)}
- ${CONSTRUCTING+ __DTOR_END__ = .;}
- }
- .data ${RELOCATING+ SIZEOF(.text) + ADDR(.text) + 0x400000} :
- {
- ${RELOCATING+ __.data.start = .};
- *(.data)
- ${RELOCATING+ edata = .};
- ${RELOCATING+ _edata = .};
- ${RELOCATING+ __.data.end = .};
- }
- .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
- {
- ${RELOCATING+ __.bss.start = .};
- *(.bss)
- *(COMMON)
- ${RELOCATING+ __.bss.end = .};
- ${RELOCATING+ end = ALIGN(0x8)};
- ${RELOCATING+ _end = ALIGN(0x8)};
- }
- .comment ${RELOCATING+ 0} :
- {
- *(.comment)
- }
-}
-EOF
+++ /dev/null
-# Linker script for A/UX.
-#
-# 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
-INIT='.init : { *(.init) }'
-FINI='.fini : { *(.fini) }'
-CTORS='.ctors : { *(.ctors) }'
-DTORS='.dtors : { *(.dtors) }'
-
-cat <<EOF
-/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
-
- Copying and distribution of this script, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. */
-
-OUTPUT_FORMAT("${OUTPUT_FORMAT}")
-${LIB_SEARCH_DIRS}
-
-${RELOCATING+ENTRY (${ENTRY})}
-
-SECTIONS
-{
- .text ${RELOCATING+ $TEXT_START_ADDR} : {
- ${RELOCATING+ *(.init)}
- ${RELOCATING+ *(.fini)}
- *(.text)
- ${RELOCATING+ . = ALIGN(4);}
- ${RELOCATING+ *(.ctors)}
- ${RELOCATING+ *(.dtors)}
- ${RELOCATING+ etext = .;}
- ${RELOCATING+ _etext = .;}
- } =0x4E714E71
- .data ${RELOCATING+ $DATA_ALIGNMENT} : {
- *(.data)
- ${RELOCATING+ edata = .;}
- ${RELOCATING+ _edata = .;}
- }
- .bss : {
- *(.bss)
- *(COMMON)
- ${RELOCATING+ end = .;}
- ${RELOCATING+ _end = .;}
- }
- ${RELOCATING- ${INIT}}
- ${RELOCATING- ${FINI}}
- ${RELOCATING- ${CTORS}}
- ${RELOCATING- ${DTORS}}
-
- .comment 0 ${RELOCATING+(NOLOAD)} : { [ .comment ] [ .ident ] }
- .stab 0 ${RELOCATING+(NOLOAD)} : { [ .stab ] }
- .stabstr 0 ${RELOCATING+(NOLOAD)} : { [ .stabstr ] }
-}
-EOF
+++ /dev/null
-# 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.
-
-cat <<EOF
-/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
-
- Copying and distribution of this script, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. */
-
-OUTPUT_FORMAT("${OUTPUT_FORMAT}")
-${LIB_SEARCH_DIRS}
-PROVIDE (__stack = 0);
-SECTIONS
-{
- .text ${RELOCATING+ 0x1000000} : {
- *(.text)
- ${CONSTRUCTING+ . = ALIGN(4);}
- ${RELOCATING+ etext = .;}
- ${CONSTRUCTING+ __CTOR_LIST__ = .;}
- ${CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)}
- ${CONSTRUCTING+ *(.ctors)}
- ${CONSTRUCTING+ LONG(0)}
- ${CONSTRUCTING+ __CTOR_END__ = .;}
- ${CONSTRUCTING+ __DTOR_LIST__ = .;}
- ${CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)}
- ${CONSTRUCTING+ *(.dtors)}
- ${CONSTRUCTING+ LONG(0)}
- ${CONSTRUCTING+ __DTOR_END__ = .;}
- }
- .data : {
- *(.data)
- ${RELOCATING+ edata = .};
- }
- .bss : {
- ${RELOCATING+ __bss_start = .};
- *(.bss)
- *(COMMON)
- ${RELOCATING+ end = ALIGN(0x8)};
- ${RELOCATING+ _end = ALIGN(0x8)};
- }
- .stab 0 ${RELOCATING+(NOLOAD)} :
- {
- [ .stab ]
- }
- .stabstr 0 ${RELOCATING+(NOLOAD)} :
- {
- [ .stabstr ]
- }
-}
-EOF
+++ /dev/null
-# 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.
-
-cat <<EOF
-/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
-
- Copying and distribution of this script, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. */
-
-OUTPUT_FORMAT(${OUTPUT_FORMAT})
-OUTPUT_ARCH(${ARCH})
-${RELOCATING+${LIB_SEARCH_DIRS}}
-
-SECTIONS
-{
- .text ${RELOCATING:-0} ${RELOCATING+${TEXT_START_ADDR}} : {
- ${RELOCATING+ start = DEFINED(_START) ? _START : DEFINED(_start) ? _start : .;}
- ${RELOCATING+ PROVIDE(__text = .);}
- *(.text);
- *(code);
- *(const);
- *(strings);
- *(pSOS);
- *(pROBE);
- *(pNA);
- *(pHILE);
- *(pREPC);
- *(pRPC);
- ${CONSTRUCTING+ ___CTOR_LIST__ = .;}
- ${CONSTRUCTING+ LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)}
- ${CONSTRUCTING+ *(.ctors)}
- ${CONSTRUCTING+ LONG(0);}
- ${CONSTRUCTING+ ___CTOR_END__ = .;}
- ${CONSTRUCTING+ ___DTOR_LIST__ = .;}
- ${CONSTRUCTING+ LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2);}
- ${CONSTRUCTING+ *(.dtors);}
- ${CONSTRUCTING+ LONG(0);}
- ${CONSTRUCTING+ ___DTOR_END__ = .;}
- ${RELOCATING+ PROVIDE(__etext = .);}
- ${RELOCATING+ PROVIDE(_etext = .);}
- }
- .data ${RELOCATING:-0} : ${RELOCATING+ AT(ADDR(.text) + SIZEOF(.text))} {
- ${RELOCATING+ PROVIDE(__data = .);}
- *(.data);
- *(vars);
- ${RELOCATING+ PROVIDE(__edata = .);}
- ${RELOCATING+ PROVIDE(_edata = .);}
- }
- .bss ${RELOCATING:-0} :
- {
- ${RELOCATING+ PROVIDE(__bss = .);}
- *(.bss);
- *(zerovars);
- *(COMMON);
- ${RELOCATING+ PROVIDE(__ebss = .);}
- ${RELOCATING+ PROVIDE(__end = .);}
- ${RELOCATING+ PROVIDE(_end = .);}
- ${RELOCATING+ PROVIDE(_FreeMemStart = .);}
- }
- .stab 0 ${RELOCATING+(NOLOAD)} :
- {
- *(.stab);
- }
- .stabstr 0 ${RELOCATING+(NOLOAD)} :
- {
- *(.stabstr);
- }
-}
-EOF
+++ /dev/null
-OUTPUT_FORMAT("srec")
-SECTIONS
-{
-
-
-.text 0 : { *("9") *("10") *("11") *("12") *("13") *("14") *("15")
- *("7") *("8") *("0") *("1") *("2") *("3") *("4") }
-.bss (NOLOAD) : { *("5") *("6") }
-
-.PAFI =0x00000050 ;
-.PCHIO =0x000000D0 ;
-.PCLO =0x00000054 ;
-.PCVBSV =0x0000000E ;
-.PCVTSU =0x00000012 ;
-.PCVTSV =0x00000016 ;
-.PCVTSVL =0x0000001A ;
-.PCVTUS =0x0000001E ;
-.PDIS =0x00000022 ;
-.PDISL =0x00000026 ;
-.PDVJ =0x0000002A ;
-.PEIO =0x000000CC ;
-.PEOF =0x00000058 ;
-.PEOL =0x0000005C ;
-.PEQUS =0x0000002E ;
-.PEQUV =0x00000032 ;
-.PEQUVL =0x00000036 ;
-.PEQUW =0x000000DE ;
-.PGCM =0x00000064 ;
-.PGEQS =0x0000003A ;
-.PGEQV =0x0000003E ;
-.PGEQVL =0x00000042 ;
-.PGET =0x00000060 ;
-.PGRTS =0x00000046 ;
-.PGRTV =0x0000004A ;
-.PGRTVL =0x0000004E ;
-.PIACT =0x0000006C ;
-.PIFD =0x00000068 ;
-.PINDS =0x00000052 ;
-.PINDV =0x00000056 ;
-.PINDVL =0x0000005A ;
-.PINDW =0x000000D6 ;
-.PLDCS =0x0000005E ;
-.PLDCV =0x00000062 ;
-.PLEQS =0x00000066 ;
-.PLEQV =0x0000006A ;
-.PLEQVL =0x0000006E ;
-.PLESS =0x00000072 ;
-.PLESV =0x00000076 ;
-.PLESVL =0x0000007A ;
-.PLODS =0x0000007E ;
-.PLODV =0x00000082 ;
-.PLODVL =0x00000086 ;
-.PMODJ =0x0000008A ;
-.PMOV =0x000000E2 ;
-.PMPJ =0x0000008E ;
-.PNEQS =0x00000092 ;
-.PNEQV =0x00000096 ;
-.PNEQVL =0x0000009A ;
-.PNEQW =0x000000DA ;
-.PPAGE =0x000000D4 ;
-.PPEE =0x00000070 ;
-.PPUT =0x00000074 ;
-.PRDB =0x00000078 ;
-.PRDC =0x0000007C ;
-.PRDH =0x00000080 ;
-.PRDI =0x00000084 ;
-.PRDJ =0x00000088 ;
-.PRDRS =0x000000C8 ;
-.PRDS =0x0000008C ;
-.PRDV =0x00000090 ;
-.PRLN =0x00000094 ;
-.PRRAN =0x00000098 ;
-.PRST =0x0000009C ;
-.PRWT =0x000000A0 ;
-.PSCON =0x0000009E ;
-.PSCOP =0x000000A2 ;
-.PSDEL =0x000000A6 ;
-.PSINS =0x000000AA ;
-.PSLEN =0x000000AE ;
-.PSPOS =0x000000B2 ;
-.PSTCV =0x000000B6 ;
-.PSTCVL =0x000000BA ;
-.PSTOS =0x000000BE ;
-.PSTOV =0x000000C2 ;
-.PSTOVL =0x000000C6 ;
-.PSTRS =0x000000CA ;
-.PSTRV =0x000000CE ;
-.PSTRVL =0x000000D2 ;
-.PWLN =0x000000A4 ;
-.PWRAN =0x000000A8 ;
-.PWRB =0x000000AC ;
-.PWRC =0x000000B0 ;
-.PWRH =0x000000B4 ;
-.PWRI =0x000000B8 ;
-.PWRJ =0x000000BC ;
-.PWRS =0x000000C0 ;
-.PWRV =0x000000C4 ;
-
-/*
-.PAFI=0x = 0x00;
-.PCHIO =0x 0x000000;
-.PCLO =0x 64 ;
-.PC;
-.PCVTSU =0x 0x000000;
-.PCVTSV =0x 0x000000;
-.PCVTSVL =0x 0x000000;
-.PCVTUS =0x 158 ;
-.P;
-.PDISL =0x 0x000000;
-.PDVJ =0x 0x000000;
-.PEIO =0x 0x000000;
-.PEOF =0x 0x000000;
-.PEOL =0x 0x000000;
-.PEQUS =0x 0x000000;
-.PEQUV =0x 0x000000;
-.PEQUVL =0x 0x000000;
-.PEQUW =0x 0x000000;
-.PGCM =0x 0x000000;
-.PGEQS =0x 0x000000;
-.PGEQV =0x 0x000000;
-.PGEQVL =0x 0x000000;
-.PGET =0x 0x000000;
-.PGRTS =0x 0x000000;
-.PGRTV =0x 0x000000;
-.PGRTVL =0x 0x000000;
-.PIACT =0x 0x000000;
-.PIFD =0x 126 ;
-.P;
-.PINDV =0x 0x000000;
-.PINDVL =0x 0x000000;
-.PINDW =0x 0x000000;
-.PLDCS =0x 0x000000;
-.PLDCV =0x 0x000000;
-.PLEQS =0x 0x000000;
-.PLEQV =0x 0x000000;
-.PLEQVL =0x 0x000000;
-.PLESS =0x 0x000000;
-.PLESV =0x 0x000000;
-.PLESVL =0x 0x000000;
-.PLODS =0x 0x000000;
-.PLODV =0x 0x000000;
-.PLODVL =0x 0x000000;
-.PMODJ =0x 0x000000;
-.PMOV =0x 0x000000;
-.PMPJ =0x 0x000000;
-.PNEQS =0x 0x000000;
-.PNEQV =0x 0x000000;
-.PNEQVL =0x 0x000000;
-.PNEQW =0x 0x000000;
-.PPAGE =0x 0x000000;
-.PPEE =0x 0x000000;
-.PPUT =0x 0x000000;
-.PRDB =0x 0x000000;
-.PRDC =0x 0x000000;
-.PRDH =0x 0x000000;
-.PRDI =0x 0x000000;
-.PRDJ =0x 0x000000;
-.PRDRS =0x 0x000000;
-.PRDS =0x 0x000000;
-.PRDV =0x 0x000000;
-.PRLN =0x 0x000000;
-.PRRAN =0x 0x000000;
-.PRST =0x 0x000000;
-.PRWT =0x 0x000000;
-.PSCON =0x 0x000000;
-.PSCOP =0x 0x000000;
-.PSDEL =0x 0x000000;
-.PSINS =0x 0x000000;
-.PSLEN =0x 0x000000;
-.PSPOS =0x 0x000000;
-.PSTCV =0x 0x000000;
-.PSTCVL =0x 0x000000;
-.PSTOS =0x 0x000000;
-.PSTOV =0x 0x000000;
-.PSTOVL =0x 0x000000;
-.PSTRS =0x 0x000000;
-.PSTRV =0x 0x000000;
-.PSTRVL =0x 0x000000;
-.PWLN =0x 0x000000;
-.PWRAN =0x 0x000000;
-.PWRB =0x 0x000000;
-.PWRC =0x 0x000000;
-.PWRH =0x 0x000000;
-.PWRI =0x 0x000000;
-.PWRJ =0x 0x000000;
-.PWRS =0x 0x000000;
-.PWRV =0x 0x000000;
-
-*/
-/*
-.P=0x = 0;
-.PCHIO =0x 0xfeedfa;
-.PCLO =0x 0xfeedfa;
-.PCVBSV =0x 0xfeedfa;
-.PCVTSU =0x 0xfeedfa;
-.PCVTSV =0x 0xfeedfa;
-.PCVTSVL =0x 0xfeedfa;
-.PCVTUS =0x 0xfeedfa;
-.PDIS =0x 0xfeedfa;
-.PDISL =0x 0xfeedfa;
-.PDVJ =0x 0xfeedfa;
-.PEIO =0x 0xfeedfa;
-.PEOF =0x 0xfeedfa;
-.PEOL =0x 0xfeedfa;
-.PEQUS =0x 0xfeedfa;
-.PEQUV =0x 0xfeedfa;
-.PEQUVL =0x 0xfeedfa;
-.PEQUW =0x 0xfeedfa;
-.PGCM =0x 0xfeedfa;
-.PGEQS =0x 0xfeedfa;
-.PGEQV =0x 0xfeedfa;
-.PGEQVL =0x 0xfeedfa;
-.PGET =0x 0xfeedfa;
-.PGRTS =0x 0xfeedfa;
-.PGRTV =0x 0xfeedfa;
-.PGRTVL =0x 0xfeedfa;
-.PIACT =0x 0xfeedfa;
-.PIFD =0x 0xfeedfa;
-.PINDS =0x 0xfeedfa;
-.PINDV =0x 0xfeedfa;
-.PINDVL =0x 0xfeedfa;
-.PINDW =0x 0xfeedfa;
-.PLDCS =0x 0xfeedfa;
-.PLDCV =0x 0xfeedfa;
-.PLEQS =0x 0xfeedfa;
-.PLEQV =0x 0xfeedfa;
-.PLEQVL =0x 0xfeedfa;
-.PLESS =0x 0xfeedfa;
-.PLESV =0x 0xfeedfa;
-.PLESVL =0x 0xfeedfa;
-.PLODS =0x 0xfeedfa;
-.PLODV =0x 0xfeedfa;
-.PLODVL =0x 0xfeedfa;
-.PMODJ =0x 0xfeedfa;
-.PMOV =0x 0xfeedfa;
-.PMPJ =0x 0xfeedfa;
-.PNEQS =0x 0xfeedfa;
-.PNEQV =0x 0xfeedfa;
-.PNEQVL = 0xfeedface;
-.PNEQW = 0xfeedface;
-.PPAGE = 0xfeedface;
-.PPEE = 0xfeedface;
-.PPUT = 0xfeedface;
-.PRDB = 0xfeedface;
-.PRDC = 0xfeedface;
-.PRDH = 0xfeedface;
-.PRDI = 0xfeedface;
-.PRDJ = 0xfeedface;
-.PRDRS = 0xfeedface;
-.PRDS = 0xfeedface;
-.PRDV = 0xfeedface;
-.PRLN = 0xfeedface;
-.PRRAN = 0xfeedface;
-.PRST = 0xfeedface;
-.PRWT = 0xfeedface;
-.PSCON = 0xfeedface;
-.PSCOP = 0xfeedface;
-.PSDEL = 0xfeedface;
-.PSINS = 0xfeedface;
-.PSLEN = 0xfeedface;
-.PSPOS = 0xfeedface;
-.PSTCV = 0xfeedface;
-.PSTCVL = 0xfeedface;
-.PSTOS = 0xfeedface;
-.PSTOV = 0xfeedface;
-.PSTOVL = 0xfeedface;
-.PSTRS = 0xfeedface;
-.PSTRV = 0xfeedface;
-.PSTRVL = 0xfeedface;
-.PWLN = 0xfeedface;
-.PWRAN = 0xfeedface;
-.PWRB = 0xfeedface;
-.PWRC = 0xfeedface;
-.PWRH = 0xfeedface;
-.PWRI = 0xfeedface;
-.PWRJ = 0xfeedface;
-.PWRS = 0xfeedface;
-.PWRV = 0xfeedface;
-*/
-
-}
+++ /dev/null
-S00C000074312E6F75742E6F6BC0\r
-S118000000000A205341464553544F52452041202020202052BE\r
-S118001531332E33202020202020205231332E32202020202077\r
-S118002A202000B5E86600B5E9B11DA15B9900001F0000000A50\r
-S118003F640000003E0000005C00A800BA00F000040001000251\r
-S1180054000000000000000000000006004031CF52544C4942D0\r
-S1180069434F4E0004E5EC52544C4942434F4E0004E5ED5254F0\r
-S118007E4C4942434F4E004031D252544C4942434F4E00000A08\r
-S11800937D52544C49425354520010A4A852544C494246494CAD\r
-S11800A8000200B5E86D0000016000B5E873000002540002006A\r
-S11800BDB5E937534146455052494E5420000006000200080079\r
-S11800D20000034200B5E86E494E4954534146455354000002C9\r
-S11800E71800000E00000009020030000000004E56FFD8BA8FDB\r
-S11800FC63062E4E6100001641FA003243EEFFD8702612D85149\r
-S1180111C8FFFC4E5E4E752B57FFF22F3C0000000A6000000259\r
-S11801263B6F0002FFF62F2D00382F2D00344E4C4E4A434F50E7\r
-S118013B5952494748542054656C65666F6E204142204C204D6B\r
-S1180150204572696373736F6E2C2031393933004E56FFFCBAB5\r
-S11801658F63042E4E61AC202E000C06800000000C4E7656807C\r
-S118017A4E760280FFFFFFFC4AD56604610000B02D40FFFC200B\r
-S118018F6C003A2208242C003694814E7604820000000C4E76D2\r
-S11801A44AD566046100008EB0826E0C0CAE00000001000C6CEB\r
-S11801B900000C207C0000000061000060206C003A200866046C\r
-S11801CE610000762208D2AEFFFC68046100005C2081216E0043\r
-S11801E3100004216E000C0008220806810000000C68046100C2\r
-S11801F800402D4100142950003A206C003A24086604610000BC\r
-S118020D3A429042A8000442A800084E5E225F285F508F4EE922\r
-S118022200022B5FFFF24E5ED1DF285F2F082B48FFF2D0D04EDA\r
-S1180237D02B57FFF22F3C0000000E6000FEE22B57FFF22F3CD4\r
-S118024C000000106000FED44E56FFFCBA8F63062E4E6100FE2B\r
-S1180261B82D6C0032FFFC600000122B5FFFF24FEEFFFC42AEF1\r
-S1180276FFFC600000824AAEFFFC6700007A206EFFFC200866A7\r
-S118028B00000461B622280004B2AE001067000062220802810B\r
-S11802A0000000034A8166402208226C003A2409B2826E3426B6\r
-S11802B510280806840000000C68046100FF76B6846D2026101B\r
-S11802CA280896844E7604830000000C4E764AD566046100FFCD\r
-S11802DF5AB6A800086C0000046182206EFFFC20086604610077\r
-S11802F4FF522D50FFFC60804AAEFFFC6700002C206EFFFC2019\r
-S11803090866046100FF38226E000C22A80008220806810000B2\r
-S118031E000C68046100FF142D4100146000000C206E000C4210\r
-S11803339042AE00144E5E205F285F508F4ED04FEDFF00707F44\r
-S1180348204F425851C8FFFC486DFF081F3C00043F3C00019F49\r
-S118035DFC0000000C224F45FA04FE22DA22DA22DA266C00281F\r
-S11803722F0C286C002C4EAB0068486DFFB8486DFFB42F0C20E7\r
-S11803876C0000286C00044E909FFC000000522F2DFFC62F0C32\r
-S118039C206C0008286C000C4E907052266C00204EAB001E416A\r
-S11803B1FA04BE266C00204EAB007E266C00204EAB009E41EDD7\r
-S11803C6FFBA266C00204EAB007E266C00204EAB009E1F3C0098\r
-S11803DB283F3C0001266C00204EAB009E9FFC00000052302DD2\r
-S11803F0FFCA48C02F002F0C206C0008286C000C4E90705226BF\r
-S11804056C00204EAB001E266C00204EAB009E41FA045E266CC3\r
-S118041A00204EAB007E266C00204EAB009E41EDFF9E70162672\r
-S118042F6C00204EAB00CA600000162B5FFFF24FEDFF002B7C92\r
-S118044400000001FFB4600003E4486DFF089FFC0000005220DB\r
-S11804594F43EDFF9E3019725092406F024241D04130C06F0A23\r
-S118046E5340E24030D951C8FFFC9FFC00000052224F45FA0303\r
-S1180483F632DA266C00282F0C286C002C4EAB0050FFAA486D02\r
-S1180498FF08266C00282F0C286C002C4EAB00A0FF9642ADFF73\r
-S11804AD002B6C0032FF04487A03C43F3CFFFF486DFF08266C1A\r
-S11804C200282F0C286C002C4EAB00C0FF70486DFF08266C0088\r
-S11804D7282F0C286C002C4EAB00A4FF5C600000782B5FFFF29E\r
-S11804EC4FEDFF00487A03BA3F3CFFFF486DFF08266C00282F1F\r
-S11805010C286C002C4EAB00C0FF349FFC00000052206DFF04AC\r
-S118051620082F002F0C206C0010286C00144E902F0F3F3CFF60\r
-S118052BFF486DFF08266C00282F0C286C002C4EAB00C0FF008F\r
-S1180540DFFC00000052486DFF08266C00282F0C286C002C4EB6\r
-S1180555AB00A4FEE6600001F0206DFF042008660261804A902E\r
-S118056A6700016A22100281000000034A81664A2210242C00F1\r
-S118057F3604820000000C68046100FCAEB2826E3422102408F0\r
-S118059406820000000C68046100FC9AB2826D202210240892A6\r
-S11805A9824E7604810000000C4E764AD566046100FC7EB2A8E0\r
-S11805BE00086C0000066100FF22206DFF04200866046100FFA6\r
-S11805D31622280008D2ADFF0068046100FC582B41FF009FFC02\r
-S11805E80000005224082F022F0C206C0010286C00144E902FBF\r
-S11805FD0F3F3C000C486DFF08266C00282F0C286C002C4EABE5\r
-S118061200C0FE2ADFFC00000052206DFF04200866046100FE39\r
-S1180627C22F2800043F3C000C486DFF08266C00282F0C286CD1\r
-S118063C002C4EAB00BCFDFC206DFF04200866046100FE9A2F81\r
-S11806512800083F3C000C486DFF08266C00282F0C286C002C68\r
-S11806664EAB00BCFDD49FFC00000052206DFF04200866046185\r
-S118067B00FE6C22102F012F0C206C0010286C00144E902F0FFF\r
-S11806903F3C000C486DFF08266C00282F0C286C002C4EAB0060\r
-S11806A5C0FD98DFFC00000052486DFF08266C00282F0C286C75\r
-S11806BA002C4EAB00A4FD7E206DFF04200866046100FE1C2B1B\r
-S11806CF50FF046000FE8A206C003AB1EDFF046700006C487ADB\r
-S11806E401E83F3CFFFF486DFF08266C00282F0C286C002C4EDC\r
-S11806F9AB00C0FD429FFC00000052206DFF0420082F002F0C2F\r
-S118070E206C0010286C00144E902F0F3F3CFFFF486DFF082617\r
-S11807236C00282F0C286C002C4EAB00C0FD0EDFFC000000523D\r
-S1180738486DFF08266C00282F0C286C002C4EAB00A4FCF44862\r
-S118074D7A01983F3CFFFF486DFF08266C00282F0C286C002C96\r
-S11807624EAB00C0FCD8486DFF08266C00282F0C286C002C4E32\r
-S1180777AB00A4FCC4487A016A3F3CFFFF486DFF08266C00283E\r
-S118078C2F0C286C002C4EAB00C0FCA8486DFF08266C00282F57\r
-S11807A10C286C002C4EAB00A4FC94206DFF0420080680000008\r
-S11807B600184E76222C003692804E760281FFFFFFFC4AD566F3\r
-S11807CB046100FA6A2F013F3C000C486DFF08266C00282F0CE4\r
-S11807E0286C002C4EAB00BCFC562F2DFF003F3C000C486DFFA3\r
-S11807F508266C00282F0C286C002C4EAB00BCFC3A486DFF0887\r
-S118080A266C00282F0C286C002C4EAB00A4FC26486DFF081F86\r
-S118081F3C0001266C00282F0C286C002C4EAB0054486DFFB815\r
-S1180834486DFFB42F0C206C0018286C001C4E90486DFF0842D8\r
-S118084927266C00282F0C286C002C4EAB005442A72F2D0038F0\r
-S118085E2F2D00344E4A000A4631202020202020202000023A9C\r
-S11808733A0002293A0000003020202020204164647265737337\r
-S1180888202020204964656E746974792020202020202020533A\r
-S118089D697A6520202020202020204E657874001D496E7661B0\r
-S11808B26C6964207365676D656E74207374617274696E672035\r
-S11808C761743A202000185365676D656E74206C69737420637F\r
-S11808DC6F727275707465643A2000000018202020417661693B\r
-S11808F16C61626C652020202020202020557365644FEDFFF230\r
-S11809069FFC0000000A6100015641EC003020DF20DF30DF20F1\r
-S118091B2C003256804E760280FFFFFFFC4AD566046100F90A63\r
-S1180930294000322940003A6000003E2B5FFFF24FEDFFF2200A\r
-S11809452C003256804E760280FFFFFFFC4AD566046100F8E064\r
-S118095A2940003A206C003A220866046100F8DE429042A80094\r
-S118096F0442A800086000009E4A2C00306700001A206C003A8E\r
-S11809842008660261B2429042A8000442A800086000007E2007\r
-S11809996C003A20086602619A4A906700006E221002810000B0\r
-S11809AE00034A81664A2210242C003604820000000C6804619B\r
-S11809C300F874B2826E342210240806820000000C680461001A\r
-S11809D8F860B2826D202210240892824E7604810000000C4ED8\r
-S11809ED764AD566046100F844B2A800086C0000066100FF3CE5\r
-S1180A02206C003A200866046100FF302950003A608442A72F44\r
-S1180A172D00382F2D00344E4A4E560000518F42A71F3C000E63\r
-S1180A2C4267487A0012426742272F3C00B5E86E4E49000E50B7\r
-S1180A418F4E5E205F285F4EE80002207C0000000060042B5F99\r
-S1180A56FFF24E5ED1DF285F2F08D0D04ED043FA0004D3FC00AE\r
-S1180A6B02704E2F49000A43FA0004D3FC000000402F49000662\r
-S1180A8041FA0004D1FCFFFFF57A202800566600002222099201\r
-S1180A95882141005642812448D25AB5C96DFA4441D368005AAE\r
-S1110AAA1F7C000100044E75422F00044E759F\r
-S9030000FC\r
+++ /dev/null
-OUTPUT_FORMAT("srec")
-SECTIONS
-{
-
-
-.text 0 : { *("9") *("10") *("11") *("12") *("13") *("14") *("15")
- *("7") *("8") *("0") *("1") *("2") *("3") *("4") }
-.bss : { *("5") *("6") }
-
-.PAFI =0x00000050 ;
-.PCHIO =0x000000D0 ;
-.PCLO =0x00000054 ;
-.PCVBSV =0x0000000E ;
-.PCVTSU =0x00000012 ;
-.PCVTSV =0x00000016 ;
-.PCVTSVL =0x0000001A ;
-.PCVTUS =0x0000001E ;
-.PDIS =0x00000022 ;
-.PDISL =0x00000026 ;
-.PDVJ =0x0000002A ;
-.PEIO =0x000000CC ;
-.PEOF =0x00000058 ;
-.PEOL =0x0000005C ;
-.PEQUS =0x0000002E ;
-.PEQUV =0x00000032 ;
-.PEQUVL =0x00000036 ;
-.PEQUW =0x000000DE ;
-.PGCM =0x00000064 ;
-.PGEQS =0x0000003A ;
-.PGEQV =0x0000003E ;
-.PGEQVL =0x00000042 ;
-.PGET =0x00000060 ;
-.PGRTS =0x00000046 ;
-.PGRTV =0x0000004A ;
-.PGRTVL =0x0000004E ;
-.PIACT =0x0000006C ;
-.PIFD =0x00000068 ;
-.PINDS =0x00000052 ;
-.PINDV =0x00000056 ;
-.PINDVL =0x0000005A ;
-.PINDW =0x000000D6 ;
-.PLDCS =0x0000005E ;
-.PLDCV =0x00000062 ;
-.PLEQS =0x00000066 ;
-.PLEQV =0x0000006A ;
-.PLEQVL =0x0000006E ;
-.PLESS =0x00000072 ;
-.PLESV =0x00000076 ;
-.PLESVL =0x0000007A ;
-.PLODS =0x0000007E ;
-.PLODV =0x00000082 ;
-.PLODVL =0x00000086 ;
-.PMODJ =0x0000008A ;
-.PMOV =0x000000E2 ;
-.PMPJ =0x0000008E ;
-.PNEQS =0x00000092 ;
-.PNEQV =0x00000096 ;
-.PNEQVL =0x0000009A ;
-.PNEQW =0x000000DA ;
-.PPAGE =0x000000D4 ;
-.PPEE =0x00000070 ;
-.PPUT =0x00000074 ;
-.PRDB =0x00000078 ;
-.PRDC =0x0000007C ;
-.PRDH =0x00000080 ;
-.PRDI =0x00000084 ;
-.PRDJ =0x00000088 ;
-.PRDRS =0x000000C8 ;
-.PRDS =0x0000008C ;
-.PRDV =0x00000090 ;
-.PRLN =0x00000094 ;
-.PRRAN =0x00000098 ;
-.PRST =0x0000009C ;
-.PRWT =0x000000A0 ;
-.PSCON =0x0000009E ;
-.PSCOP =0x000000A2 ;
-.PSDEL =0x000000A6 ;
-.PSINS =0x000000AA ;
-.PSLEN =0x000000AE ;
-.PSPOS =0x000000B2 ;
-.PSTCV =0x000000B6 ;
-.PSTCVL =0x000000BA ;
-.PSTOS =0x000000BE ;
-.PSTOV =0x000000C2 ;
-.PSTOVL =0x000000C6 ;
-.PSTRS =0x000000CA ;
-.PSTRV =0x000000CE ;
-.PSTRVL =0x000000D2 ;
-.PWLN =0x000000A4 ;
-.PWRAN =0x000000A8 ;
-.PWRB =0x000000AC ;
-.PWRC =0x000000B0 ;
-.PWRH =0x000000B4 ;
-.PWRI =0x000000B8 ;
-.PWRJ =0x000000BC ;
-.PWRS =0x000000C0 ;
-.PWRV =0x000000C4 ;
-
-/*
-.PAFI=0x = 0x00;
-.PCHIO =0x 0x000000;
-.PCLO =0x 64 ;
-.PC;
-.PCVTSU =0x 0x000000;
-.PCVTSV =0x 0x000000;
-.PCVTSVL =0x 0x000000;
-.PCVTUS =0x 158 ;
-.P;
-.PDISL =0x 0x000000;
-.PDVJ =0x 0x000000;
-.PEIO =0x 0x000000;
-.PEOF =0x 0x000000;
-.PEOL =0x 0x000000;
-.PEQUS =0x 0x000000;
-.PEQUV =0x 0x000000;
-.PEQUVL =0x 0x000000;
-.PEQUW =0x 0x000000;
-.PGCM =0x 0x000000;
-.PGEQS =0x 0x000000;
-.PGEQV =0x 0x000000;
-.PGEQVL =0x 0x000000;
-.PGET =0x 0x000000;
-.PGRTS =0x 0x000000;
-.PGRTV =0x 0x000000;
-.PGRTVL =0x 0x000000;
-.PIACT =0x 0x000000;
-.PIFD =0x 126 ;
-.P;
-.PINDV =0x 0x000000;
-.PINDVL =0x 0x000000;
-.PINDW =0x 0x000000;
-.PLDCS =0x 0x000000;
-.PLDCV =0x 0x000000;
-.PLEQS =0x 0x000000;
-.PLEQV =0x 0x000000;
-.PLEQVL =0x 0x000000;
-.PLESS =0x 0x000000;
-.PLESV =0x 0x000000;
-.PLESVL =0x 0x000000;
-.PLODS =0x 0x000000;
-.PLODV =0x 0x000000;
-.PLODVL =0x 0x000000;
-.PMODJ =0x 0x000000;
-.PMOV =0x 0x000000;
-.PMPJ =0x 0x000000;
-.PNEQS =0x 0x000000;
-.PNEQV =0x 0x000000;
-.PNEQVL =0x 0x000000;
-.PNEQW =0x 0x000000;
-.PPAGE =0x 0x000000;
-.PPEE =0x 0x000000;
-.PPUT =0x 0x000000;
-.PRDB =0x 0x000000;
-.PRDC =0x 0x000000;
-.PRDH =0x 0x000000;
-.PRDI =0x 0x000000;
-.PRDJ =0x 0x000000;
-.PRDRS =0x 0x000000;
-.PRDS =0x 0x000000;
-.PRDV =0x 0x000000;
-.PRLN =0x 0x000000;
-.PRRAN =0x 0x000000;
-.PRST =0x 0x000000;
-.PRWT =0x 0x000000;
-.PSCON =0x 0x000000;
-.PSCOP =0x 0x000000;
-.PSDEL =0x 0x000000;
-.PSINS =0x 0x000000;
-.PSLEN =0x 0x000000;
-.PSPOS =0x 0x000000;
-.PSTCV =0x 0x000000;
-.PSTCVL =0x 0x000000;
-.PSTOS =0x 0x000000;
-.PSTOV =0x 0x000000;
-.PSTOVL =0x 0x000000;
-.PSTRS =0x 0x000000;
-.PSTRV =0x 0x000000;
-.PSTRVL =0x 0x000000;
-.PWLN =0x 0x000000;
-.PWRAN =0x 0x000000;
-.PWRB =0x 0x000000;
-.PWRC =0x 0x000000;
-.PWRH =0x 0x000000;
-.PWRI =0x 0x000000;
-.PWRJ =0x 0x000000;
-.PWRS =0x 0x000000;
-.PWRV =0x 0x000000;
-
-*/
-/*
-.P=0x = 0;
-.PCHIO =0x 0xfeedfa;
-.PCLO =0x 0xfeedfa;
-.PCVBSV =0x 0xfeedfa;
-.PCVTSU =0x 0xfeedfa;
-.PCVTSV =0x 0xfeedfa;
-.PCVTSVL =0x 0xfeedfa;
-.PCVTUS =0x 0xfeedfa;
-.PDIS =0x 0xfeedfa;
-.PDISL =0x 0xfeedfa;
-.PDVJ =0x 0xfeedfa;
-.PEIO =0x 0xfeedfa;
-.PEOF =0x 0xfeedfa;
-.PEOL =0x 0xfeedfa;
-.PEQUS =0x 0xfeedfa;
-.PEQUV =0x 0xfeedfa;
-.PEQUVL =0x 0xfeedfa;
-.PEQUW =0x 0xfeedfa;
-.PGCM =0x 0xfeedfa;
-.PGEQS =0x 0xfeedfa;
-.PGEQV =0x 0xfeedfa;
-.PGEQVL =0x 0xfeedfa;
-.PGET =0x 0xfeedfa;
-.PGRTS =0x 0xfeedfa;
-.PGRTV =0x 0xfeedfa;
-.PGRTVL =0x 0xfeedfa;
-.PIACT =0x 0xfeedfa;
-.PIFD =0x 0xfeedfa;
-.PINDS =0x 0xfeedfa;
-.PINDV =0x 0xfeedfa;
-.PINDVL =0x 0xfeedfa;
-.PINDW =0x 0xfeedfa;
-.PLDCS =0x 0xfeedfa;
-.PLDCV =0x 0xfeedfa;
-.PLEQS =0x 0xfeedfa;
-.PLEQV =0x 0xfeedfa;
-.PLEQVL =0x 0xfeedfa;
-.PLESS =0x 0xfeedfa;
-.PLESV =0x 0xfeedfa;
-.PLESVL =0x 0xfeedfa;
-.PLODS =0x 0xfeedfa;
-.PLODV =0x 0xfeedfa;
-.PLODVL =0x 0xfeedfa;
-.PMODJ =0x 0xfeedfa;
-.PMOV =0x 0xfeedfa;
-.PMPJ =0x 0xfeedfa;
-.PNEQS =0x 0xfeedfa;
-.PNEQV =0x 0xfeedfa;
-.PNEQVL = 0xfeedface;
-.PNEQW = 0xfeedface;
-.PPAGE = 0xfeedface;
-.PPEE = 0xfeedface;
-.PPUT = 0xfeedface;
-.PRDB = 0xfeedface;
-.PRDC = 0xfeedface;
-.PRDH = 0xfeedface;
-.PRDI = 0xfeedface;
-.PRDJ = 0xfeedface;
-.PRDRS = 0xfeedface;
-.PRDS = 0xfeedface;
-.PRDV = 0xfeedface;
-.PRLN = 0xfeedface;
-.PRRAN = 0xfeedface;
-.PRST = 0xfeedface;
-.PRWT = 0xfeedface;
-.PSCON = 0xfeedface;
-.PSCOP = 0xfeedface;
-.PSDEL = 0xfeedface;
-.PSINS = 0xfeedface;
-.PSLEN = 0xfeedface;
-.PSPOS = 0xfeedface;
-.PSTCV = 0xfeedface;
-.PSTCVL = 0xfeedface;
-.PSTOS = 0xfeedface;
-.PSTOV = 0xfeedface;
-.PSTOVL = 0xfeedface;
-.PSTRS = 0xfeedface;
-.PSTRV = 0xfeedface;
-.PSTRVL = 0xfeedface;
-.PWLN = 0xfeedface;
-.PWRAN = 0xfeedface;
-.PWRB = 0xfeedface;
-.PWRC = 0xfeedface;
-.PWRH = 0xfeedface;
-.PWRI = 0xfeedface;
-.PWRJ = 0xfeedface;
-.PWRS = 0xfeedface;
-.PWRV = 0xfeedface;
-*/
-
-}
+++ /dev/null
-S0120000696E6974746573745F6570632E7372CF\r
-S118000000000000494E495454455354202050413035202052AB\r
-S118001531332E33202020202020205231332E32202020202077\r
-S118002A202000934B5B00B5E6C11B089DD600005400000005F9\r
-S118003F5A00000048005C00A60000010A0126000400010002CB\r
-S1180054009000000000000000000002004020200000494F5F8A\r
-S11800695245534552564152544C4942434F4E0040484501003B\r
-S118007E505F414C4C202020202052544C4942434F4E010000E3\r
-S118009300009C01000000000000085345504152415445000852\r
-S11800A80008004031CF52544C4942434F4E0004E5EC52544CD3\r
-S11800BD4942434F4E00B5E86D5341464553544F5200004F28D7\r
-S11800D253595354454D494D00B5E8735341464553544F520023\r
-S11800E74031D252544C4942434F4E00000A7D52544C49425309\r
-S11800FC54520010A4A852544C494246494C000100B5E6C049EC\r
-S11801114E495454455354202000000616020008000000023210\r
-S11801260048000000004E56FFF0BA8F63062E4E610000BC4159\r
-S118013BFA00F443EEFFF032D82D7C00000001FFFC206E000858\r
-S118015020086604610000BA222EFFFC53814A816C046100002E\r
-S11801659E2248D3E9FFFC41F01800B3C863EE4A1066000006E7\r
-S118017A6000006241EEFFF0266C00384EAB007E206E00082095\r
-S118018F0866046100007C222EFFFC53814A816C0461000060ED\r
-S11801A42248D3E9FFFC41F01800B3C863EE1F103F3C0001263B\r
-S11801B96C00384EAB009E41EEFFF0700C266C00384EAB00CACB\r
-S11801CE52AEFFFC0CAE0000000AFFFC6F00FF7041EEFFF0431F\r
-S11801E3EE000C22D822D822D84E5E205F588F4ED02B57FFF278\r
-S11801F82F3C0000000A6000001E2B57FFF22F3C0000000F60AE\r
-S118020D0000102B57FFF22F3C00000010600000023B6F0002CC\r
-S1180222FFF62F2D00382F2D00344E4C4E4A00004FEDFEEA2034\r
-S11802373C0000008A204F425851C8FFFC486DFEEA1F3C0004CF\r
-S118024C3F3C00019FFC0000000C224F45FA02D422DA22DA22D6\r
-S1180261DA266C00402F0C286C00444EAB0068486DFFB8486D43\r
-S1180276FFB42F0C206C0008286C000C4E909FFC000000522F53\r
-S118028B2DFFC62F0C206C0010286C00144E907052266C00387F\r
-S11802A04EAB001E41FA0294266C00384EAB007E266C00384E04\r
-S11802B5AB009E41EDFFBA266C00384EAB007E266C00384EABFC\r
-S11802CA009E1F3C00283F3C0001266C00384EAB009E9FFC0082\r
-S11802DF000052302DFFCA48C02F002F0C206C0010286C0014D8\r
-S11802F44E907052266C00384EAB001E266C00384EAB009E41CE\r
-S1180309FA0234266C00384EAB007E266C00384EAB009E41EDDB\r
-S118031EFF807016266C00384EAB00CA9FFC0000000E61000228\r
-S11803332841EDFF9E20DF20DF20DF30DF4A2DFF9E6700003AFD\r
-S1180348598F2F2DFFA02F2DFFA82F0C206C0018286C001C4ED9\r
-S118035D9001B82B5FFF9A2F2DFF9A2F2DFFA42F2DFFA82F0CE9\r
-S1180372206C0020286C00244E9060000034598F2F2DFFA04871\r
-S11803876DFFA82F0C206C0028286C002C4E902B5FFF962F2D41\r
-S118039CFFA42F2DFF962F2DFFA82F0C206C0020286C00244EC4\r
-S11803B190486DFEEA9FFC00000052204F43EDFF8030197250F0\r
-S11803C692406F024241D04130C06F0A5340E24030D951C8FF08\r
-S11803DBFC9FFC00000052224F45FA015C32DA266C00402F0CFA\r
-S11803F0286C00444EAB0050012C486DFEEA266C00402F0C28D4\r
-S11804056C00444EAB00A00118487A01343F3CFFFF486DFEEA6F\r
-S118041A266C00402F0C286C00444EAB00C000FC486DFEEA266C\r
-S118042F6C00402F0C286C00444EAB00A400E842ADFFB02B7C2B\r
-S118044400000001FFAC598F2F2DFFAC6100017E2B5FFFB02BC0\r
-S118045940FFB02F2DFFAC3F3C000A486DFEEA266C00402F0C65\r
-S118046E286C00444EAB00BC00AE9FFC0000000C2F2DFFB06127\r
-S118048300FCA82F0F3F3C000A486DFEEA266C00402F0C286CBB\r
-S118049800444EAB00C00086DFFC0000000C486DFEEA266C00B2\r
-S11804AD402F0C286C00444EAB00A4006C52ADFFAC0CAD000077\r
-S11804C2000AFFAC6F82486DFEEA1F3C0001266C00402F0C284D\r
-S11804D76C00444EAB0054486DFFB8486DFFB42F0C206C003044\r
-S11804EC286C00344E90486DFEEA4227266C00402F0C286C00AA\r
-S1180501444EAB005442A72F2D00382F2D00344E4A2B57FFF238\r
-S11805162F3C0000000C6000FD002B57FFF22F3C000000646056\r
-S118052B00FCF2000A4631202020202020202000023A3A0002D0\r
-S1180540293A000000142020202020204361736520202020521D\r
-S11805556573756C7441FA0004D1FCFFFFFAA02028003C43FAFB\r
-S118056A0004D3FC000001D645FA0004D5FC0000025E260A58D2\r
-S118057F8AD0885580222800566600002E2408265AD5B0B8008F\r
-S1180594B5C06DF6220992882141005642812648D25BB7C96D2E\r
-S11805A9FA4441D368005A123C00016000000442411F4100048B\r
-S11805BE2F68003400062F49000A96892F43000E4E754E56FFCC\r
-S11805D3F0202E000847FA0004D7FC000001A6220B41FA00049E\r
-S11805E8D1FC000001B62D58FFF02D58FFF42D58FFF82D50FF92\r
-S11805FDFC53807408B4806500012C41FA0004D1FC0000000EBA\r
-S1180612D080303008004EFB00020012002200320042004800DC\r
-S118062758006C00A000DC41FA0004D1FC0000011820106000C5\r
-S118063C010247FA0004D7FC0000010C200B600000F241FA00C5\r
-S118065104D1FC000001102010600000E22001600000DC47FA9E\r
-S11806660004D7FC00000120200B600000CC43FA0004D3FC001C\r
-S118067B0000FA41E9000C2010600000B8242EFFF447FA000464\r
-S1180690D7FC000000FEB48B6600001247FA0004D7FC000001B0\r
-S11806A514200B6000009447FA0004D7FC0000010A200B60005B\r
-S11806BA008441FA0004D1FC0000008A205047FA0004D7FC0085\r
-S11806CF000082B1CB6600001247FA0004D7FC000000E0200B79\r
-S11806E46000005847FA0004D7FC000000D2200B600000484147\r
-S11806F9FA0004D1FC0000004E43FA0004D3FC0000003EB3D0FE\r
-S118070E6600001247FA0004D7FC000000AE200B6000001E47A4\r
-S1180723FA0004D7FC000000A6200B6000000E47FA0004D7FC95\r
-S118073800000098200B4E5E4E740004000053756E65000000D8\r
-S118074D0007464F74746F00000000000A0000000C50656C6CFD\r
-S118076265000000075E5374696E61004B6172696E00000000C0\r
-S11807770500000768000000030000076E5075747465004B61BF\r
-S118078C6C6C65005374696E613100004B6172696E31000000C1\r
-S11807A1000033000007900000001F0000079878797A7A0000D2\r
-S11807B64F6C6C650000370038005065746572005376756C6C19\r
-S11807CB6F00003900536C75740000000000000000074C000072\r
-S11507E007640000077800000780000007A4000007AC34\r
-S9030000FC\r
+++ /dev/null
-# Expect script for ld-versados tests
-# Copyright (C) 1995-2018 Free Software Foundation, Inc.
-#
-# This file is part of the GNU Binutils.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-# MA 02110-1301, USA.
-#
-# Written by Steve Chamberlain (sac@cygnus.com)
-#
-
-# Make sure that ld can read versados images and
-# generate binaries which are identical to the customer's
-# old method.
-
-# This test can only be run if ld generates native executables.
-
-# This test can only be run on 68k coff targets
-# Square bracket expressions seem to confuse istarget.
-if { ![istarget m68k-*-coff*] } then {
- return
-}
-
-set testname "LD VERSADOS"
-
-
-proc inspect { whichone } {
- global objdump
- global exec_output
- global srcdir
- global subdir
- global testname
-
- send_log "$objdump -s tmpdir/$whichone.out >tmpdir/$whichone.dump\n"
- catch "exec $objdump -s tmpdir/$whichone.out | grep -v srec >tmpdir/$whichone.dump" exec_output
-
- if ![string match "" $exec_output] {
- send_log "$exec_output\n"
- verbose $exec_output
- unresolved $testname
- return 0
- }
-
- send_log "$objdump -s $srcdir/$subdir/$whichone.ook >tmpdir/$whichone.dok\n"
- catch "exec $objdump -s $srcdir/$subdir/$whichone.ook | grep -v srec >tmpdir/$whichone.dok" exec_output
-
- if ![string match "" $exec_output] {
- send_log "$exec_output\n"
- verbose $exec_output
- unresolved $testname
- return 0
- }
-
- # compare it with the correct output
- catch "exec diff tmpdir/$whichone.dump tmpdir/$whichone.dok" exec_output
- if ![string match "" $exec_output] {
- send_log "$exec_output\n"
- verbose $exec_output
- fail $testname
- return 0
- }
-
- return 1
-}
-
-if ![ld_link $ld tmpdir/t1.out \
- " -T $srcdir/$subdir/t1.ld $srcdir/$subdir/t1-1.ro $srcdir/$subdir/t1-2.ro"] {
- fail $testname
- return
-} else {
- # Get a dump of what we've got, and what we should have
- if ![inspect t1] {
- return
- }
-}
-
-
-if ![ld_link $ld tmpdir/t2.out \
- " -T $srcdir/$subdir/t2.ld $srcdir/$subdir/t2-2.ro \
- $srcdir/$subdir/t2-1.ro $srcdir/$subdir/t2-3.ro"] {
- fail $testname
- return
-} else {
- # Get a dump of what we've got, and what we should have
- if ![inspect t2] {
- return
- }
-}
-
-pass $testname