* configure.host (sparc-*-netbsd): use sparcnbsd.

(ns32k-*-netbsd): use ns32knbsd.

* hosts/{nbsd,i386nbsd,ns32knbsd,sparcnbsd}.h: New files, NetBSD
  host support.

* sparcnetbsd.c: New file, adds support for NetBSD/sparc.
* config/sparc-nbsd.mt: Likewise.

* netbsd.h: New file, definitions common to all netbsd ports.
* i386netbsd.c: Use it.
* ns32knetbsd.c: Use it.

* Makefile.in, configure.in, targets.c, config/i386-nbsd.mt,
  config/ns32k-nbsd.mt: canonicalize netbsd targets to conform to
  file/variable naming conventions.
* i386netbsd.c: New file, renamed from netbsd386.c.
* ns32knetbsd.c: New file, renamed from netbsd532.c.
This commit is contained in:
J.T. Conklin 1994-09-13 18:39:47 +00:00
parent 5e39c98765
commit a3f7a777c6
13 changed files with 275 additions and 420 deletions

View File

@ -145,6 +145,7 @@ i386aout.c
i386bsd.c
i386dynix.c
i386linux.c
i386netbsd.c
i386lynx.c
i386mach3.c
i386os9k.c
@ -170,8 +171,7 @@ m88kmach3.c
makefile.dos
mipsbsd.c
newsos3.c
netbsd386.c
netbsd532.c
netbsd.h
nlm-target.h
nlm.c
nlm32-alpha.c
@ -182,6 +182,7 @@ nlm32.c
nlm64.c
nlmcode.h
nlmswap.h
ns32knetbsd.c
oasys.c
opncls.c
osf-core.c
@ -195,6 +196,7 @@ section.c
som.c
som.h
sparclynx.c
sparcnetbsd.c
srec.c
stab-syms.c
sunos.c

View File

@ -1,3 +1,24 @@
Tue Sep 13 11:09:39 1994 J.T. Conklin (jtc@rtl.cygnus.com)
* configure.host (sparc-*-netbsd): use sparcnbsd.
(ns32k-*-netbsd): use ns32knbsd.
* hosts/{nbsd,i386nbsd,ns32knbsd,sparcnbsd}.h: New files, NetBSD
host support.
* sparcnetbsd.c: New file, adds support for NetBSD/sparc.
* config/sparc-nbsd.mt: Likewise.
* netbsd.h: New file, definitions common to all netbsd ports.
* i386netbsd.c: Use it.
* ns32knetbsd.c: Use it.
* Makefile.in, configure.in, targets.c, config/i386-nbsd.mt,
config/ns32k-nbsd.mt: canonicalize netbsd targets to conform to
file/variable naming conventions.
* i386netbsd.c: New file, renamed from netbsd386.c.
* ns32knetbsd.c: New file, renamed from netbsd532.c.
Mon Sep 12 21:56:20 1994 Jeff Law (law@snake.cs.utah.edu)
* som.c (som_reloc_skip): Correct off-by-one error for 4-byte
@ -287,7 +308,6 @@ Wed Aug 24 11:49:19 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
bytes in bits2.
* configure.host, config.bfd: Change i[34]86 to i[345]86.
* coffgen.c (coff_real_object_p): Set obj_conv_table_size here,
rather than waiting until coff_slurp_symbol_table.
(coff_write_alien_symbol): Just ignore BSF_DEBUGGING symbols.

View File

@ -157,8 +157,7 @@ BFD32_BACKENDS = \
i386bsd.o \
i386linux.o \
i386lynx.o \
netbsd386.o \
netbsd532.o \
i386netbsd.o \
i386mach3.o \
i386os9k.o \
ieee.o \
@ -171,6 +170,7 @@ BFD32_BACKENDS = \
nlm32-sparc.o \
nlm32-ppc.o \
nlm32.o \
ns32knetbsd.o \
oasys.o \
pc532-mach.o \
reloc16.o \
@ -237,7 +237,7 @@ CFILES = libbfd.c opncls.c bfd.c archive.c targets.c cache.c \
coff-a29k.c coff-rs6000.c coff-sparc.c coffgen.c format.c \
section.c core.c syms.c stab-syms.c reloc.c init.c \
coff-m88k.c coff-mips.c coff-sh.c trad-core.c cisco-core.c newsos3.c \
i386aout.c i386linux.c netbsd386.c i386mach3.c i386os9k.c \
i386aout.c i386linux.c i386mach3.c i386netbsd.c i386os9k.c \
bout.c aout-adobe.c coff-we32k.c \
i386bsd.c i386dynix.c cpu-h8300.c cpu-i960.c cpu-sparc.c cpu-m68k.c \
cpu-m88k.c cpu-vax.c cpu-mips.c cpu-a29k.c cpu-i386.c cpu-powerpc.c \
@ -614,12 +614,12 @@ i386aout.o: i386aout.c libaout.h $(INCDIR)/bfdlink.h \
i386linux.o: i386linux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
$(INCDIR)/bfdlink.h aout-target.h
netbsd386.o: netbsd386.c libaout.h $(INCDIR)/bfdlink.h \
aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
i386mach3.o: i386mach3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
$(INCDIR)/bfdlink.h aout-target.h
i386netbsd.o: i386netbsd.c libaout.h $(INCDIR)/bfdlink.h \
aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
i386os9k.o: i386os9k.c $(INCDIR)/bfdlink.h libaout.h \
$(INCDIR)/os9k.h
bout.o: bout.c $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/bout.h \

View File

@ -180,6 +180,7 @@ do
i386lynx_aout_vec) tb="$tb i386lynx.o lynx-core.o aout32.o stab-syms.o" ;;
i386lynx_coff_vec) tb="$tb cf-i386lynx.o cofflink.o lynx-core.o stab-syms.o" ;;
i386mach3_vec) tb="$tb i386mach3.o aout32.o stab-syms.o" ;;
i386netbsd_vec) tb="$tb i386netbsd.o aout32.o stab-syms.o" ;;
i386os9k_vec) tb="$tb i386os9k.o aout32.o stab-syms.o" ;;
icoff_big_vec) tb="$tb coff-i960.o" ;;
icoff_little_vec) tb="$tb coff-i960.o" ;;
@ -189,8 +190,6 @@ do
m68klynx_aout_vec) tb="$tb m68klynx.o lynx-core.o aout32.o stab-syms.o" ;;
m68klynx_coff_vec) tb="$tb cf-m68klynx.o coff-m68k.o cofflink.o lynx-core.o stab-syms.o" ;;
m88kbcs_vec) tb="$tb coff-m88k.o" ;;
netbsd386_vec) tb="$tb netbsd386.o aout32.o stab-syms.o" ;;
netbsd532_vec) tb="$tb netbsd532.o aout-ns32k.o stab-syms.o" ;;
newsos3_vec) tb="$tb newsos3.o aout32.o stab-syms.o" ;;
nlm32_i386_vec) tb="$tb nlm32-i386.o nlm32.o nlm.o" ;;
nlm32_sparc_vec) tb="$tb nlm32-sparc.o nlm32.o nlm.o" ;;
@ -198,12 +197,14 @@ do
target64=true ;;
riscix_vec) tb="$tb aout32.o riscix.o stab-syms.o" ;;
nlm32_powerpc_vec) tb="$tb nlm32-ppc.o nlm32.o nlm.o" ;;
ns32knetbsd_vec) tb="$tb ns32knetbsd.o aout-ns32k.o stab-syms.o" ;;
pc532machaout_vec) tb="$tb pc532-mach.o aout-ns32k.o stab-syms.o" ;;
rs6000coff_vec) tb="$tb coff-rs6000.o" ;;
shcoff_vec) tb="$tb coff-sh.o reloc16.o" ;;
som_vec) tb="$tb som.o" ;;
sparclynx_aout_vec) tb="$tb sparclynx.o lynx-core.o aout32.o stab-syms.o" ;;
sparclynx_coff_vec) tb="$tb cf-sparclynx.o lynx-core.o stab-syms.o" ;;
sparcnetbsd_vec) tb="$tb sparcnetbsd.o aout32.o stab-syms.o" ;;
sparccoff_vec) tb="$tb coff-sparc.o" ;;
srec_vec) tb="$tb srec.o" ;;
sunos_big_vec) tb="$tb sunos.o aout32.o stab-syms.o" ;;

View File

@ -33,16 +33,16 @@ alphaosf.h
apollo68.h
apollov68.h
decstation.h
dgux.h
delta68.h
delta88.h
delta88v4.h
dgux.h
dose.h
dpx2.h
go32.h
harris.h
hp300bsd.h
hp300.h
hp300bsd.h
hppabsd.h
hppahpux.h
hppaosf.h
@ -51,6 +51,7 @@ i386bsd.h
i386linux.h
i386lynx.h
i386mach3.h
i386nbsd.h
i386osf1mk.h
i386sco.h
i386v.h
@ -64,9 +65,12 @@ m88kmach3.h
miniframe.h
mipsbsd.h
mipsmach3.h
news.h
news-mips.h
nbsd.h
ncr3000.h
news-mips.h
news.h
ns32knbsd.h
ns32knetbsd.h
pc532mach.h
riscos.h
rs6000.h
@ -76,6 +80,8 @@ solaris2.h
sparc-ll.h
sparc.h
sparclynx.h
sparcnbsd.h
sparcnetbsd.h
std-host.h
stratus.h
sun3.h

14
bfd/hosts/i386nbsd.h Normal file
View File

@ -0,0 +1,14 @@
/* Intel 386 running NetBSD */
#ifndef hosts_i386bsd_H
#define hosts_i386bsd_H
#include "hosts/nbsd.h"
#define HOST_MACHINE_ARCH bfd_arch_i386
#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
((core_bfd)->tdata.trad_core_data->u.u_sig)
#define u_comm u_kproc.kp_proc.p_comm
#endif

34
bfd/hosts/nbsd.h Normal file
View File

@ -0,0 +1,34 @@
/* Architecture independant NetBSD host support */
#ifndef hosts_nbsd_H_
#define hosts_nbsd_H__
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <ctype.h>
#include <string.h>
#include <sys/file.h>
#include <machine/param.h>
#include <machine/vmparam.h>
#include <machine/reg.h>
#ifndef O_ACCMODE
#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
#endif
#define SEEK_SET 0
#define SEEK_CUR 1
#define POSIX_UTIME
#include "fopen-same.h"
#define HOST_PAGE_SIZE NBPG
#define HOST_TEXT_START_ADDR USRTEXT
#define HOST_STACK_END_ADDR USRSTACK
#endif

13
bfd/hosts/ns32knbsd.h Normal file
View File

@ -0,0 +1,13 @@
/* ns32k running NetBSD */
#ifndef hosts_ns32knbsd_h
#define hosts_ns32knbsd_h
#include "hosts/nbsd.h"
#define HOST_MACHINE_ARCH bfd_arch_ns32k
#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
((core_bfd)->tdata.trad_core_data->u.u_sig)
#define u_comm u_kproc.kp_proc.p_comm
#endif

19
bfd/hosts/sparcnbsd.h Normal file
View File

@ -0,0 +1,19 @@
/* Sparc running NetBSD */
#ifndef hosts_sparcnbsd_h
#define hosts_sparcnbsd_h
#include "hosts/nbsd.h"
#define HOST_MACHINE_ARCH bfd_arch_sparc
#define HOST_BIG_ENDIAN_P
#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
((core_bfd)->tdata.trad_core_data->u.u_sig)
#define u_comm u_kproc.kp_proc.p_comm
#define TRAD_CORE_REGPOS(core_bfd) \
((bfd_vma)(core_bfd)->tdata.trad_core_data->u.u_kproc.kp_proc.p_md.md_tf)
#define CORE_FPU_OFFSET (sizeof(struct trapframe))
#endif

View File

@ -1,115 +0,0 @@
/* BFD back-end for NetBSD/386 a.out-ish binaries.
Copyright (C) 1990, 1991, 1992 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 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define BYTES_IN_WORD 4
/* ZMAGIC files never have the header in the text. */
#define N_HEADER_IN_TEXT(x) 0
/* ZMAGIC files start at address 0. This does not apply to QMAGIC. */
#define TEXT_START_ADDR 0
#define N_SHARED_LIB(x) 0
#define PAGE_SIZE 4096
#define SEGMENT_SIZE PAGE_SIZE
#define DEFAULT_ARCH bfd_arch_i386
#define MACHTYPE_OK(mtype) ((mtype) == M_386 || (mtype) == M_386_NETBSD || (mtype) == M_UNKNOWN)
#define MY(OP) CAT(netbsd386_,OP)
/* This needs to start with a.out so GDB knows it is an a.out variant. */
#define TARGETNAME "a.out-netbsd-386"
#define N_MAGIC(ex) \
( (((ex).a_info)&0xffff0000) ? ((((ex).a_info))&0xffff) : ((ex).a_info))
#define N_MACHTYPE(ex) \
( (((ex).a_info)&0xffff0000) ? (((((ex).a_info))>>16)&0x03ff) : 0 )
# define N_FLAGS(ex) \
( (((ex).a_info)&0xffff0000) ? ((((ex).a_info)>>26)&0x3f) : 0 )
#define N_SET_INFO(ex, mag,mid,flag) \
( (ex).a_info = htonl( (((flag)&0x3f)<<26) | (((mid)&0x03ff)<<16) | \
(((mag)&0xffff)) ) )
#define N_SET_MAGIC(exec,magic) \
((exec).a_info = (((exec).a_info & ~0xffff) | ((magic) & 0xffff)))
#define N_SET_MACHTYPE(exec,machtype) \
((exec).a_info = \
(((exec).a_info & ~(0x3ff<<16)) | (((machtype)&0xff) << 16)))
#define N_SET_FLAGS(exec, flags) \
((exec).a_info = \
(((exec).a_info & ~(0x3f<<26)) | (((flags)&0x3f) << 26)))
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "libaout.h"
#define N_GETMAGIC2(ex) \
( (((ex).a_info)&0xffff0000) ? ((((ex).a_info))&0xffff) : \
(((ex).a_info) | 0x10000) )
#define N_TXTADDR(ex) (N_GETMAGIC2(ex) == (ZMAGIC|0x10000) ? 0 : 4096)
#define N_TXTOFF(ex) \
( N_GETMAGIC2(ex)==ZMAGIC || N_GETMAGIC2(ex)==(QMAGIC|0x10000) ? \
0 : (N_GETMAGIC2(ex)==(ZMAGIC|0x10000) ? 4096 : EXEC_BYTES_SIZE ))
#define N_ALIGN(ex,x) \
(N_MAGIC(ex) == ZMAGIC || N_MAGIC(ex) == QMAGIC ? \
((x) + 4096 - 1) & ~(4096 - 1) : (x))
#define N_DATADDR(ex) \
N_ALIGN(ex, N_TXTADDR(ex) + (ex).a_text)
/* Data segment offset. */
#define N_DATOFF(ex) \
N_ALIGN(ex, N_TXTOFF(ex) + (ex).a_text)
/* #define N_BADMAG(x) n_badmag(N_MAGIC(x)) */
/* On NetBSD, the magic number is always in ntohl's "network" (big-endian)
format. */
#define SWAP_MAGIC(ext) bfd_getb32 (ext)
#include "aout-target.h"
#if 0
int
n_badmag(x)
unsigned long x; {
union {
unsigned long l;
unsigned char c[sizeof(unsigned long)];
} l;
unsigned char temp;
printf ("x = %o, OMAGIC = %o, NMAGIC = %o, ZMAGIC = %o, QMAGIC = %o\n",
x, OMAGIC, NMAGIC, ZMAGIC, QMAGIC);
l.l = x;
temp = l.c[0];
l.c[0] = l.c[3];
l.c[3] = temp;
temp = l.c[2];
l.c[2] = l.c[1];
l.c[1] = temp;
printf ("\tbyte-swapped(x) = %o\n", l.l);
return (x != OMAGIC
&& x != NMAGIC
&& x != ZMAGIC
&& x != QMAGIC);
}
#endif

View File

@ -1,196 +0,0 @@
/* BFD back-end for NetBSD/532 a.out-ish binaries.
Copyright (C) 1990, 1991, 1992, 1994 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 2 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
* Created by Ian Dall
* 5-Jun-94
*
* Largely a copy of netbsd386.c plus some code from aout-pc532-mach.c
*/
#define BYTES_IN_WORD 4
/* ZMAGIC files never include the header in the text. */
#define N_HEADER_IN_TEXT(x) 1
#define PAGE_SIZE 0x1000
/* ZMAGIC files start at address 0. This does not apply to QMAGIC. */
#define TEXT_START_ADDR PAGE_SIZE
#define N_SHARED_LIB(x) 0
/* Use a_entry of 0 to distinguish object files from OMAGIC executables */
#define N_TXTADDR(x) \
((N_MAGIC(x) == OMAGIC) && \
((x).a_entry < TEXT_START_ADDR) ? 0 : /* object file or NMAGIC */\
N_SHARED_LIB(x) ? 0 : \
N_HEADER_IN_TEXT(x) ? \
TEXT_START_ADDR + EXEC_BYTES_SIZE : /* no padding */\
TEXT_START_ADDR /* a page of padding */\
)
#define SEGMENT_SIZE PAGE_SIZE
#define DEFAULT_ARCH bfd_arch_ns32k
#define MY(OP) CAT(netbsd532_,OP)
/* This needs to start with a.out so GDB knows it is an a.out variant. */
#define TARGETNAME "a.out-netbsd-532"
#define MACHTYPE_OK(mtype) ((mtype) == M_532_NETBSD)
#define N_MAGIC(ex) \
( (((ex).a_info)&0xffff0000) ? ((((ex).a_info))&0xffff) : ((ex).a_info))
#define N_MACHTYPE(ex) \
( (((ex).a_info)&0xffff0000) ? (((((ex).a_info))>>16)&0x03ff) : 0 )
#define N_FLAGS(ex) \
( (((ex).a_info)&0xffff0000) ? ((((ex).a_info)>>26)&0x3f) : 0 )
#define N_SET_INFO(ex, mag,mid,flag) \
( (ex).a_info = htonl( (((flag)&0x3f)<<26) | (((mid)&0x03ff)<<16) | \
(((mag)&0xffff)) ) )
#define N_SET_MAGIC(exec,magic) \
((exec).a_info = (((exec).a_info & ~0xffff) | ((magic) & 0xffff)))
#define N_SET_MACHTYPE(exec,machtype) \
((exec).a_info = \
(((exec).a_info & ~(0x3ff<<16)) | (((machtype)&0xff) << 16)))
#define N_SET_FLAGS(exec, flags) \
((exec).a_info = \
(((exec).a_info & ~(0x3f<<26)) | (((flags)&0x3f) << 26)))
#define N_MAG(MAG) ((MAG) == o_magic? OMAGIC: ((MAG) == z_magic? ZMAGIC: ((MAG) == n_magic? NMAGIC: 0)))
#define WRITE_HEADERS(abfd, execp) \
{ \
bfd_size_type text_size; /* dummy vars */ \
int mag; \
file_ptr text_end; \
if (adata(abfd).magic == undecided_magic) \
NAME(aout,adjust_sizes_and_vmas) (abfd, &text_size, &text_end); \
mag = adata(abfd).magic; \
N_SET_INFO(*execp, N_MAG(mag), M_532_NETBSD, aout_backend_info (abfd)->exec_hdr_flags); \
\
execp->a_syms = bfd_get_symcount (abfd) * EXTERNAL_NLIST_SIZE; \
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)); \
NAME(aout,swap_exec_header_out) (abfd, execp, &exec_bytes); \
\
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) return false; \
if (bfd_write ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd) \
!= EXEC_BYTES_SIZE) \
return false; \
/* Now write out reloc info, followed by syms and strings */ \
\
if (bfd_get_outsymbols (abfd) != (asymbol **) NULL \
&& bfd_get_symcount (abfd) != 0) \
{ \
if (bfd_seek (abfd, (file_ptr)(N_SYMOFF(*execp)), SEEK_SET) \
!= 0) \
return false; \
\
if (! NAME(aout,write_syms)(abfd)) return false; \
\
if (bfd_seek (abfd, (file_ptr)(N_TRELOFF(*execp)), SEEK_SET) \
!= 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_SET) \
!= 0) \
return false; \
\
if (!NAME(aout,squirt_out_relocs)(abfd, obj_datasec (abfd))) \
return false; \
} \
}
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "libaout.h"
/* On NetBSD, the magic number is always in ntohl's "network" (big-endian)
format. */
#define SWAP_MAGIC(ext) bfd_getb32 (ext)
#include "aout/aout64.h"
/* Forward declaration. Defined in aout-target.h */
static boolean MY(set_sizes)();
static CONST struct aout_backend_data MY(backend_data) = {
0, /* zmagic contiguous */
1, /* text incl header */
0,
0, /* text vma? */
MY(set_sizes),
0, /* exec header is counted */
};
#define MY_backend_data &MY(backend_data)
/* We can`t use the MYNS macro here for cpp reasons too subtle
* for me -- IWD
*/
#define MY_bfd_reloc_type_lookup ns32kaout_bfd_reloc_type_lookup
/* libaout doesn't use NAME for these ... */
#define MY_get_section_contents aout_32_get_section_contents
#define MYNSX(OP) CAT(ns32kaout_,OP)
CONST struct reloc_howto_struct *
MYNSX(bfd_reloc_type_lookup)
PARAMS((bfd *abfd AND
bfd_reloc_code_real_type code));
boolean
MYNSX(write_object_contents)
PARAMS((bfd *abfd));
static boolean
MY(write_object_contents) (abfd)
bfd *abfd;
{
struct external_exec exec_bytes;
struct internal_exec *execp = exec_hdr (abfd);
#if CHOOSE_RELOC_SIZE
CHOOSE_RELOC_SIZE(abfd);
#else
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
#endif
BFD_ASSERT(bfd_get_arch(abfd) == bfd_arch_ns32k);
BFD_ASSERT(bfd_get_mach(abfd) == 32532);
N_SET_MACHTYPE (*execp, M_532_NETBSD);
N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags);
WRITE_HEADERS(abfd, execp);
return true;
}
#define MY_write_object_contents MY(write_object_contents)
#include "aout-target.h"

38
bfd/ns32knetbsd.c Normal file
View File

@ -0,0 +1,38 @@
/* BFD back-end for NetBSD/ns32k a.out-ish binaries.
Copyright (C) 1990, 1991, 1992 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 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id$
*/
#define BYTES_IN_WORD 4
#undef TARGET_IS_BIG_ENDIAN_P
#define PAGE_SIZE 4096
#define SEGMENT_SIZE PAGE_SIZE
#define __LDPGSZ 4096
#define DEFAULT_ARCH bfd_arch_ns32k
#define MACHTYPE_OK(mtype) ((mtype) == M_NS32K_NETBSD || (mtype) == M_UNKNOWN)
#define MY(OP) CAT(pc532netbsd_,OP)
/* This needs to start with a.out so GDB knows it is an a.out variant. */
#define TARGETNAME "a.out-ns32k-netbsd"
#include "netbsd.h"

View File

@ -229,7 +229,7 @@ within the target vector structure, one for each format to check.
Check the format of a file being read. Return a <<bfd_target *>> or zero.
. struct bfd_target * (*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
. const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
Set the format of a file being written.
@ -286,7 +286,8 @@ The general target vector.
.CAT(NAME,_truncate_arname),\
.CAT(NAME,_write_armap),\
.CAT(NAME,_openr_next_archived_file),\
.CAT(NAME,_generic_stat_arch_elt)
.CAT(NAME,_generic_stat_arch_elt),\
.CAT(NAME,_update_armap_timestamp)
. boolean (*_bfd_slurp_armap) PARAMS ((bfd *));
. boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
. void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
@ -295,9 +296,10 @@ The general target vector.
. struct orl *map,
. unsigned int orl_count,
. int stridx));
. bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
. int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
.
. bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
. int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
. boolean (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
.
. {* Entry points used for symbols. *}
.#define BFD_JUMP_TABLE_SYMBOLS(NAME)\
.CAT(NAME,_get_symtab_upper_bound),\
@ -417,89 +419,94 @@ in this structure.
Alphabetized for easy reference.
They are listed a second time below, since
we can't intermix extern's and initializers. */
extern bfd_target a29kcoff_big_vec;
extern bfd_target a_out_adobe_vec;
extern bfd_target aout_mips_big_vec;
extern bfd_target aout_mips_little_vec;
extern bfd_target aout0_big_vec;
extern bfd_target apollocoff_vec;
extern bfd_target b_out_vec_big_host;
extern bfd_target b_out_vec_little_host;
extern bfd_target bfd_elf32_big_generic_vec;
extern bfd_target bfd_elf32_bigmips_vec;
extern bfd_target bfd_elf32_hppa_vec;
extern bfd_target bfd_elf32_i386_vec;
extern bfd_target bfd_elf32_i860_vec;
extern bfd_target bfd_elf32_little_generic_vec;
extern bfd_target bfd_elf32_littlemips_vec;
extern bfd_target bfd_elf32_m68k_vec;
extern bfd_target bfd_elf32_m88k_vec;
extern bfd_target bfd_elf32_powerpc_vec;
extern bfd_target bfd_elf32_sparc_vec;
extern bfd_target bfd_elf64_big_generic_vec;
extern bfd_target bfd_elf64_little_generic_vec;
extern bfd_target bfd_elf64_sparc_vec;
extern bfd_target demo_64_vec;
extern bfd_target ecoff_big_vec;
extern bfd_target ecoff_little_vec;
extern bfd_target ecoffalpha_little_vec;
extern bfd_target h8300coff_vec;
extern bfd_target h8500coff_vec;
extern bfd_target host_aout_vec;
extern bfd_target hp300bsd_vec;
extern bfd_target hp300hpux_vec;
extern bfd_target som_vec;
extern bfd_target i386aout_vec;
extern bfd_target i386bsd_vec;
extern bfd_target i386dynix_vec;
extern bfd_target i386os9k_vec;
extern bfd_target netbsd386_vec;
extern bfd_target i386coff_vec;
extern bfd_target go32coff_vec;
extern bfd_target i386linux_vec;
extern bfd_target i386lynx_aout_vec;
extern bfd_target i386lynx_coff_vec;
extern bfd_target i386mach3_vec;
extern bfd_target icoff_big_vec;
extern bfd_target icoff_little_vec;
extern bfd_target ieee_vec;
extern bfd_target m68kcoff_vec;
extern bfd_target m68kcoffun_vec;
extern bfd_target m68klynx_aout_vec;
extern bfd_target m68klynx_coff_vec;
extern bfd_target m88kbcs_vec;
extern bfd_target newsos3_vec;
extern bfd_target nlm32_i386_vec;
extern bfd_target nlm32_sparc_vec;
extern bfd_target nlm32_alpha_vec;
extern bfd_target nlm32_powerpc_vec;
extern bfd_target oasys_vec;
extern bfd_target rs6000coff_vec;
extern bfd_target shcoff_vec;
extern bfd_target sparclynx_aout_vec;
extern bfd_target sparclynx_coff_vec;
extern bfd_target sparccoff_vec;
extern bfd_target sunos_big_vec;
extern bfd_target tekhex_vec;
extern bfd_target we32kcoff_vec;
extern bfd_target z8kcoff_vec;
extern const bfd_target a29kcoff_big_vec;
extern const bfd_target a_out_adobe_vec;
extern const bfd_target aout_mips_big_vec;
extern const bfd_target aout_mips_little_vec;
extern const bfd_target aout0_big_vec;
extern const bfd_target apollocoff_vec;
extern const bfd_target b_out_vec_big_host;
extern const bfd_target b_out_vec_little_host;
extern const bfd_target bfd_elf32_big_generic_vec;
extern const bfd_target bfd_elf32_bigmips_vec;
extern const bfd_target bfd_elf32_hppa_vec;
extern const bfd_target bfd_elf32_i386_vec;
extern const bfd_target bfd_elf32_i860_vec;
extern const bfd_target bfd_elf32_little_generic_vec;
extern const bfd_target bfd_elf32_littlemips_vec;
extern const bfd_target bfd_elf32_m68k_vec;
extern const bfd_target bfd_elf32_m88k_vec;
extern const bfd_target bfd_elf32_powerpc_vec;
extern const bfd_target bfd_elf32_sparc_vec;
extern const bfd_target bfd_elf64_big_generic_vec;
extern const bfd_target bfd_elf64_little_generic_vec;
extern const bfd_target bfd_elf64_sparc_vec;
extern const bfd_target demo_64_vec;
extern const bfd_target ecoff_big_vec;
extern const bfd_target ecoff_little_vec;
extern const bfd_target ecoffalpha_little_vec;
extern const bfd_target h8300coff_vec;
extern const bfd_target h8500coff_vec;
extern const bfd_target host_aout_vec;
extern const bfd_target hp300bsd_vec;
extern const bfd_target hp300hpux_vec;
extern const bfd_target som_vec;
extern const bfd_target i386aout_vec;
extern const bfd_target i386bsd_vec;
extern const bfd_target i386dynix_vec;
extern const bfd_target i386os9k_vec;
extern const bfd_target i386coff_vec;
extern const bfd_target go32coff_vec;
extern const bfd_target i386linux_vec;
extern const bfd_target i386lynx_aout_vec;
extern const bfd_target i386lynx_coff_vec;
extern const bfd_target i386mach3_vec;
extern const bfd_target i386netbsd_vec;
extern const bfd_target icoff_big_vec;
extern const bfd_target icoff_little_vec;
extern const bfd_target ieee_vec;
extern const bfd_target m68kcoff_vec;
extern const bfd_target m68kcoffun_vec;
extern const bfd_target m68klynx_aout_vec;
extern const bfd_target m68klynx_coff_vec;
extern const bfd_target m88kbcs_vec;
extern const bfd_target m88kmach3_vec;
extern const bfd_target newsos3_vec;
extern const bfd_target nlm32_i386_vec;
extern const bfd_target nlm32_sparc_vec;
extern const bfd_target nlm32_alpha_vec;
extern const bfd_target nlm32_powerpc_vec;
extern const bfd_target ns32knetbsd_vec;
extern const bfd_target oasys_vec;
extern const bfd_target pc532machaout_vec;
extern const bfd_target riscix_vec;
extern const bfd_target rs6000coff_vec;
extern const bfd_target shcoff_vec;
extern const bfd_target sparclynx_aout_vec;
extern const bfd_target sparclynx_coff_vec;
extern const bfd_target sparcnetbsd_vec;
extern const bfd_target sparccoff_vec;
extern const bfd_target sunos_big_vec;
extern const bfd_target tekhex_vec;
extern const bfd_target we32kcoff_vec;
extern const bfd_target z8kcoff_vec;
/* srec is always included. */
extern bfd_target srec_vec;
extern bfd_target symbolsrec_vec;
extern const bfd_target srec_vec;
extern const bfd_target symbolsrec_vec;
/* All of the xvecs for core files. */
extern bfd_target aix386_core_vec;
extern bfd_target cisco_core_vec;
extern bfd_target hpux_core_vec;
extern bfd_target hppabsd_core_vec;
extern bfd_target irix_core_vec;
extern bfd_target osf_core_vec;
extern bfd_target sco_core_vec;
extern bfd_target trad_core_vec;
extern bfd_target ptrace_core_vec;
extern const bfd_target aix386_core_vec;
extern const bfd_target cisco_core_vec;
extern const bfd_target hpux_core_vec;
extern const bfd_target hppabsd_core_vec;
extern const bfd_target irix_core_vec;
extern const bfd_target osf_core_vec;
extern const bfd_target sco_core_vec;
extern const bfd_target trad_core_vec;
extern const bfd_target ptrace_core_vec;
bfd_target *bfd_target_vector[] = {
const bfd_target * const bfd_target_vector[] = {
#ifdef SELECT_VECS
@ -526,8 +533,8 @@ bfd_target *bfd_target_vector[] = {
&b_out_vec_little_host,
/* This, and other vectors, may not be used in any *.mt configuration.
But that does not mean they are unnecessary. If configured
--with-targets=all, objdump or gdb should be able to examine
But that does not mean they are unnecessary. If configured with
--enable-targets=all, objdump or gdb should be able to examine
the file even if we don't recognize the machine type. */
&bfd_elf32_big_generic_vec,
&bfd_elf32_bigmips_vec,
@ -574,7 +581,6 @@ bfd_target *bfd_target_vector[] = {
#endif
&i386aout_vec,
&i386bsd_vec,
&netbsd386_vec,
&i386coff_vec,
&go32coff_vec,
#if 0
@ -584,6 +590,11 @@ bfd_target *bfd_target_vector[] = {
#endif
&i386lynx_aout_vec,
&i386lynx_coff_vec,
#if 0
/* No distinguishing features for Mach 3 executables. */
&i386mach3_vec,
#endif
&i386netbsd_vec,
&i386os9k_vec,
&icoff_big_vec,
&icoff_little_vec,
@ -593,12 +604,14 @@ bfd_target *bfd_target_vector[] = {
&m68klynx_aout_vec,
&m68klynx_coff_vec,
&m88kbcs_vec,
&m88kmach3_vec,
&newsos3_vec,
&nlm32_i386_vec,
&nlm32_sparc_vec,
#ifdef BFD64
&nlm32_alpha_vec,
#endif
&ns32knetbsd_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...
@ -606,11 +619,17 @@ bfd_target *bfd_target_vector[] = {
Worse, since there is no magic number for archives, there
can be annoying target mis-matches. */
&oasys_vec,
#endif
&pc532machaout_vec,
#if 0
/* We have no way of distinguishing this from other a.out variants */
&riscix_vec,
#endif
&rs6000coff_vec,
&shcoff_vec,
&sparclynx_aout_vec,
&sparclynx_coff_vec,
&sparcnetbsd_vec,
&sunos_big_vec,
&aout0_big_vec,
#if 0
@ -656,7 +675,7 @@ bfd_target *bfd_target_vector[] = {
/* bfd_default_vector[0] contains either the address of the default vector,
if there is one, or zero if there isn't. */
bfd_target *bfd_default_vector[] = {
const bfd_target * const bfd_default_vector[] = {
#ifdef DEFAULT_VECTOR
&DEFAULT_VECTOR,
#endif
@ -666,14 +685,14 @@ bfd_target *bfd_default_vector[] = {
/* When there is an ambiguous match, bfd_check_format_matches puts the
names of the matching targets in an array. This variable is the maximum
number of entries that the array could possibly need. */
CONST size_t _bfd_target_vector_entries = sizeof(bfd_target_vector)/sizeof(*bfd_target_vector);
const size_t _bfd_target_vector_entries = sizeof(bfd_target_vector)/sizeof(*bfd_target_vector);
/*
FUNCTION
bfd_find_target
SYNOPSIS
bfd_target *bfd_find_target(CONST char *target_name, bfd *abfd);
const bfd_target *bfd_find_target(CONST char *target_name, bfd *abfd);
DESCRIPTION
Return a pointer to the transfer vector for the object target
@ -687,12 +706,12 @@ DESCRIPTION
targets to find the one that matches the file being read.
*/
bfd_target *
const bfd_target *
bfd_find_target (target_name, abfd)
CONST char *target_name;
bfd *abfd;
{
bfd_target **target;
const bfd_target * const *target;
extern char *getenv ();
CONST char *targname = (target_name ? target_name :
(CONST char *) getenv ("GNUTARGET"));
@ -720,7 +739,7 @@ FUNCTION
bfd_target_list
SYNOPSIS
CONST char **bfd_target_list(void);
const char **bfd_target_list(void);
DESCRIPTION
Return a freshly malloced NULL-terminated
@ -729,7 +748,7 @@ DESCRIPTION
*/
CONST char **
const char **
bfd_target_list ()
{
int vec_length= 0;
@ -738,7 +757,7 @@ bfd_target_list ()
to loop endlessly when compiling this file. This avoids it. */
volatile
#endif
bfd_target **target;
const bfd_target * const *target;
CONST char **name_list, **name_ptr;
for (target = &bfd_target_vector[0]; *target != NULL; target++)