Mach 3 support.

* config.bfd (m88*-*-mach3*, mips*-dec-mach3*, mips*-*-mach3*):
	New targets.
	* configure.host (i[34]86-*-mach3*, ns32k-*-mach3*): Recognize
	"mach3" instead of "mach".
	(m88*-*-mach3*, mips*-dec-mach3*, mips*-*-mach3*): New hosts.
	* targets.c (m88kmach3_vec): New target vector.
	(bfd_target_vector): Add i386mach3_vec and m88kmach3_vec, but
	inside #if 0.
	* aoutx.h (some_aout_object_p) [MACH]: Recognize executables by
	checking for execute permission, instead of looking at entry
	point.
	* i386mach3.c: Update, define MACH, N_TXTOFF, N_TXTADDR,
	N_SHARED_LIB, don't include aout/*.h files, etc.
	* m88kmach3.c: New file, m88k Mach 3 target.
	* config/m88k-mach3.mt,	config/mips-mach3.mt: New files, target
	makefile fragments.
	* config/i386mach3.mh, config/m88kmach3.mh, config/mipsmach3.mh:
	New files, host	makefile fragments.
	* hosts/m88kmach3.h, hosts/mipsmach3.h: New files, host definitions.
This commit is contained in:
Stan Shebs 1994-07-05 21:50:43 +00:00
parent 10f67315f9
commit 11676adc14
5 changed files with 111 additions and 5 deletions

View File

@ -1,3 +1,26 @@
Tue Jul 5 13:26:02 1994 Stan Shebs (shebs@andros.cygnus.com)
Mach 3 support.
* config.bfd (m88*-*-mach3*, mips*-dec-mach3*, mips*-*-mach3*):
New targets.
* configure.host (i[34]86-*-mach3*, ns32k-*-mach3*): Recognize
"mach3" instead of "mach".
(m88*-*-mach3*, mips*-dec-mach3*, mips*-*-mach3*): New hosts.
* targets.c (m88kmach3_vec): New target vector.
(bfd_target_vector): Add i386mach3_vec and m88kmach3_vec, but
inside #if 0.
* aoutx.h (some_aout_object_p) [MACH]: Recognize executables by
checking for execute permission, instead of looking at entry
point.
* i386mach3.c: Update, define MACH, N_TXTOFF, N_TXTADDR,
N_SHARED_LIB, don't include aout/*.h files, etc.
* m88kmach3.c: New file, m88k Mach 3 target.
* config/m88k-mach3.mt, config/mips-mach3.mt: New files, target
makefile fragments.
* config/i386mach3.mh, config/m88kmach3.mh, config/mipsmach3.mh:
New files, host makefile fragments.
* hosts/m88kmach3.h, hosts/mipsmach3.h: New files, host definitions.
Tue Jul 5 13:56:52 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
* elfcode.h (swap_out_syms): Get alignment of common symbol from

View File

@ -481,15 +481,12 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
obj_datasec (abfd)->_raw_size = execp->a_data;
obj_bsssec (abfd)->_raw_size = execp->a_bss;
/* If this object is dynamically linked, we assume that both
sections have relocs. This does no real harm, even though it may
not be true. */
obj_textsec (abfd)->flags =
(execp->a_trsize != 0 || (abfd->flags & DYNAMIC) != 0
(execp->a_trsize != 0
? (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS | SEC_RELOC)
: (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS));
obj_datasec (abfd)->flags =
(execp->a_drsize != 0 || (abfd->flags & DYNAMIC) != 0
(execp->a_drsize != 0
? (SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS | SEC_RELOC)
: (SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS));
obj_bsssec (abfd)->flags = SEC_ALLOC;
@ -553,6 +550,19 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
result = (*callback_to_real_object_p)(abfd);
#ifdef MACH
/* Stat the file to decide whether or not it's executable.
Many Mach programs use text at very unconventional addresses,
including the emulator, so the standard heuristic is incorrect. */
{
struct stat st;
stat (abfd->filename, &st);
/* Are any exec 'x' bits on? */
if (st.st_mode & 0111)
abfd->flags |= EXEC_P;
}
#else /* ! MACH */
/* Now that the segment addresses have been worked out, take a better
guess at whether the file is executable. If the entry point
is within the text segment, assume it is. (This makes files
@ -564,6 +574,7 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
if ((execp->a_entry >= obj_textsec(abfd)->vma) &&
(execp->a_entry < obj_textsec(abfd)->vma + obj_textsec(abfd)->_raw_size))
abfd->flags |= EXEC_P;
#endif /* MACH */
if (result)
{
#if 0 /* These should be set correctly anyways. */

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

@ -0,0 +1,19 @@
#include "hosts/std-host.h"
#include <machine/vmparam.h>
#include <sys/param.h>
#ifndef MACH
#define MACH
#endif
#undef UPAGES
#define UPAGES 3
#define HAVE_STRERROR
#define HOST_PAGE_SIZE NBPG
#define HOST_SEGMENT_SIZE NBPG
#define HOST_MACHINE_ARCH bfd_arch_m88k
#define HOST_TEXT_START_ADDR USRTEXT
#define HOST_STACK_END_ADDR USRSTACK

12
bfd/hosts/mipsmach3.h Normal file
View File

@ -0,0 +1,12 @@
#include "hosts/std-host.h"
#include <machine/vmparam.h>
#include <machine/machparam.h>
#include <sys/param.h>
#define HOST_PAGE_SIZE NBPG
/* #define HOST_SEGMENT_SIZE NBPG */
#define HOST_MACHINE_ARCH bfd_arch_mips
#define HOST_TEXT_START_ADDR USRTEXT
#define HOST_DATA_START_ADDR USRDATA
#define HOST_STACK_END_ADDR USRSTACK

41
bfd/m88kmach3.c Normal file
View File

@ -0,0 +1,41 @@
/* BFD back-end for Motorola m88k a.out (Mach 3) binaries.
Copyright (C) 1990, 1991, 1993, 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. */
#ifndef MACH
#define MACH
#endif
#define PAGE_SIZE (4096*2)
#define SEGMENT_SIZE 0x20000
#define TEXT_START_ADDR 0
#define BYTES_IN_WORD 4
#define N_HEADER_IN_TEXT(x) 1 /* (N_MAGIG(x) == ZMAGIC) */
#define N_TXTSIZE(x) ((x).a_text)
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "libaout.h"
#define DEFAULT_ARCH bfd_arch_m88k
#define MY(OP) CAT(m88kmach3_,OP)
#define TARGETNAME "a.out-m88k-mach3"
#include "aout-target.h"