Wed Mar 25 13:59:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* archures.c (bfd_mach_m68*): Add definitions for various m68k variants. (bfd_default_scan): Remove m68k special cases. * bfd-in2.h: Rebuild. * mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m680* instead of plain numbers. * sparclynx.c (NAME(lynx,set_arch_mach)): Likewise. * cpu-m68k.c (arch_info_struct): Likewise. Add entry for m68k:68000. (bfd_m68k_arch): Set mach field to zero to signal no explicit selection, change printable_name to just "m68k" and make that the default instead of m68k:68020.
This commit is contained in:
parent
a921e02e3d
commit
ce6821a595
4 changed files with 192 additions and 142 deletions
|
@ -1,5 +1,18 @@
|
||||||
Wed Mar 25 13:59:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
Wed Mar 25 13:59:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* archures.c (bfd_mach_m68*): Add definitions for various m68k
|
||||||
|
variants.
|
||||||
|
(bfd_default_scan): Remove m68k special cases.
|
||||||
|
* bfd-in2.h: Rebuild.
|
||||||
|
* mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m680*
|
||||||
|
instead of plain numbers.
|
||||||
|
* sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.
|
||||||
|
* cpu-m68k.c (arch_info_struct): Likewise. Add entry for
|
||||||
|
m68k:68000.
|
||||||
|
(bfd_m68k_arch): Set mach field to zero to signal no explicit
|
||||||
|
selection, change printable_name to just "m68k" and make that the
|
||||||
|
default instead of m68k:68020.
|
||||||
|
|
||||||
* aout-tic30.c (NAME): Define this to avoid multiple definitions
|
* aout-tic30.c (NAME): Define this to avoid multiple definitions
|
||||||
from aoutx.h.
|
from aoutx.h.
|
||||||
(MY_get_section_contents): Define as aout_32_get_section_contents
|
(MY_get_section_contents): Define as aout_32_get_section_contents
|
||||||
|
@ -18,6 +31,9 @@ Wed Mar 25 10:41:35 1998 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
Wed Mar 25 11:19:28 1998 Ian Lance Taylor <ian@cygnus.com>
|
Wed Mar 25 11:19:28 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* libbfd-in.h (BFD_ALIGN): Cast this parameter to bfd_vma.
|
||||||
|
* libbfd.h: Rebuild.
|
||||||
|
|
||||||
* elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Change
|
* elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Change
|
||||||
byte_count to unsigned int.
|
byte_count to unsigned int.
|
||||||
(mn10300_elf_relax_section): Initialize internal_relocs. Remove
|
(mn10300_elf_relax_section): Initialize internal_relocs. Remove
|
||||||
|
|
40
bfd/cpu-m68k.c
Normal file
40
bfd/cpu-m68k.c
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/* BFD library support routines for architectures.
|
||||||
|
Copyright (C) 1990, 91, 92, 93, 94, 95, 1997 Free Software Foundation, Inc.
|
||||||
|
Hacked 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include "bfd.h"
|
||||||
|
#include "sysdep.h"
|
||||||
|
#include "libbfd.h"
|
||||||
|
|
||||||
|
#define N(name, print,d,next) \
|
||||||
|
{ 32, 32, 8, bfd_arch_m68k, name, "m68k",print,2,d,bfd_default_compatible,bfd_default_scan, next, }
|
||||||
|
|
||||||
|
static const bfd_arch_info_type arch_info_struct[] =
|
||||||
|
{
|
||||||
|
N(bfd_mach_m68000,"m68k:68000",false, &arch_info_struct[1]),
|
||||||
|
N(bfd_mach_m68008,"m68k:68008",false, &arch_info_struct[2]),
|
||||||
|
N(bfd_mach_m68010,"m68k:68010",false, &arch_info_struct[3]),
|
||||||
|
N(bfd_mach_m68020,"m68k:68020",false, &arch_info_struct[4]),
|
||||||
|
N(bfd_mach_m68030,"m68k:68030",false, &arch_info_struct[5]),
|
||||||
|
N(bfd_mach_m68040,"m68k:68040",false, &arch_info_struct[6]),
|
||||||
|
N(bfd_mach_m68060,"m68k:68060",false, 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
const bfd_arch_info_type bfd_m68k_arch =
|
||||||
|
N(0,"m68k",true, &arch_info_struct[0]);
|
|
@ -1,5 +1,5 @@
|
||||||
/* BFD backend for MIPS BSD (a.out) binaries.
|
/* BFD backend for MIPS BSD (a.out) binaries.
|
||||||
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
|
Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
|
||||||
Written by Ralph Campbell.
|
Written by Ralph Campbell.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
@ -16,7 +16,7 @@ GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define BYTES_IN_WORD 4
|
#define BYTES_IN_WORD 4
|
||||||
/* #define ENTRY_CAN_BE_ZERO */
|
/* #define ENTRY_CAN_BE_ZERO */
|
||||||
|
@ -28,8 +28,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
)
|
)
|
||||||
#define N_DATADDR(x) (N_TXTADDR(x)+N_TXTSIZE(x))
|
#define N_DATADDR(x) (N_TXTADDR(x)+N_TXTSIZE(x))
|
||||||
#define TEXT_START_ADDR 4096
|
#define TEXT_START_ADDR 4096
|
||||||
#define PAGE_SIZE 4096
|
#define TARGET_PAGE_SIZE 4096
|
||||||
#define SEGMENT_SIZE PAGE_SIZE
|
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||||
#define DEFAULT_ARCH bfd_arch_mips
|
#define DEFAULT_ARCH bfd_arch_mips
|
||||||
#define MACHTYPE_OK(mtype) ((mtype) == M_UNKNOWN \
|
#define MACHTYPE_OK(mtype) ((mtype) == M_UNKNOWN \
|
||||||
|| (mtype) == M_MIPS1 || (mtype) == M_MIPS2)
|
|| (mtype) == M_MIPS1 || (mtype) == M_MIPS2)
|
||||||
|
@ -127,11 +127,11 @@ MY(write_object_contents) (abfd)
|
||||||
switch (bfd_get_arch(abfd)) {
|
switch (bfd_get_arch(abfd)) {
|
||||||
case bfd_arch_m68k:
|
case bfd_arch_m68k:
|
||||||
switch (bfd_get_mach(abfd)) {
|
switch (bfd_get_mach(abfd)) {
|
||||||
case 68010:
|
case bfd_mach_m68010:
|
||||||
N_SET_MACHTYPE(*execp, M_68010);
|
N_SET_MACHTYPE(*execp, M_68010);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case 68020:
|
case bfd_mach_m68020:
|
||||||
N_SET_MACHTYPE(*execp, M_68020);
|
N_SET_MACHTYPE(*execp, M_68020);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -295,7 +295,7 @@ static reloc_howto_type mips_howto_table_ext[] = {
|
||||||
"LO16", false, 0, 0x0000ffff, false},
|
"LO16", false, 0, 0x0000ffff, false},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const reloc_howto_type *
|
static reloc_howto_type *
|
||||||
MY(reloc_howto_type_lookup) (abfd, code)
|
MY(reloc_howto_type_lookup) (abfd, code)
|
||||||
bfd *abfd;
|
bfd *abfd;
|
||||||
bfd_reloc_code_real_type code;
|
bfd_reloc_code_real_type code;
|
||||||
|
@ -376,8 +376,9 @@ MY(canonicalize_reloc)(abfd, section, relptr, symbols)
|
||||||
static CONST struct aout_backend_data MY(backend_data) = {
|
static CONST struct aout_backend_data MY(backend_data) = {
|
||||||
0, /* zmagic contiguous */
|
0, /* zmagic contiguous */
|
||||||
1, /* text incl header */
|
1, /* text incl header */
|
||||||
|
0, /* entry is text address */
|
||||||
0, /* exec_hdr_flags */
|
0, /* exec_hdr_flags */
|
||||||
PAGE_SIZE, /* text vma */
|
TARGET_PAGE_SIZE, /* text vma */
|
||||||
MY_set_sizes,
|
MY_set_sizes,
|
||||||
0, /* text size includes exec header */
|
0, /* text size includes exec header */
|
||||||
0, /* add_dynamic_symbols */
|
0, /* add_dynamic_symbols */
|
||||||
|
@ -392,16 +393,15 @@ const bfd_target aout_mips_little_vec =
|
||||||
{
|
{
|
||||||
"a.out-mips-little", /* name */
|
"a.out-mips-little", /* name */
|
||||||
bfd_target_aout_flavour,
|
bfd_target_aout_flavour,
|
||||||
false, /* target byte order (little) */
|
BFD_ENDIAN_LITTLE, /* target byte order (little) */
|
||||||
false, /* target headers byte order (little) */
|
BFD_ENDIAN_LITTLE, /* target headers byte order (little) */
|
||||||
(HAS_RELOC | EXEC_P | /* object flags */
|
(HAS_RELOC | EXEC_P | /* object flags */
|
||||||
HAS_LINENO | HAS_DEBUG |
|
HAS_LINENO | HAS_DEBUG |
|
||||||
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
|
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
|
||||||
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
|
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
|
||||||
MY_symbol_leading_char,
|
MY_symbol_leading_char,
|
||||||
' ', /* ar_pad_char */
|
' ', /* ar_pad_char */
|
||||||
15, /* ar_max_namelen */
|
15, /* ar_max_namelen */
|
||||||
1, /* minimum alignment */
|
|
||||||
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
||||||
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
||||||
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
|
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
|
||||||
|
@ -432,16 +432,15 @@ const bfd_target aout_mips_big_vec =
|
||||||
{
|
{
|
||||||
"a.out-mips-big", /* name */
|
"a.out-mips-big", /* name */
|
||||||
bfd_target_aout_flavour,
|
bfd_target_aout_flavour,
|
||||||
true, /* target byte order (big) */
|
BFD_ENDIAN_BIG, /* target byte order (big) */
|
||||||
true, /* target headers byte order (big) */
|
BFD_ENDIAN_BIG, /* target headers byte order (big) */
|
||||||
(HAS_RELOC | EXEC_P | /* object flags */
|
(HAS_RELOC | EXEC_P | /* object flags */
|
||||||
HAS_LINENO | HAS_DEBUG |
|
HAS_LINENO | HAS_DEBUG |
|
||||||
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
|
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
|
||||||
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
|
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
|
||||||
MY_symbol_leading_char,
|
MY_symbol_leading_char,
|
||||||
' ', /* ar_pad_char */
|
' ', /* ar_pad_char */
|
||||||
15, /* ar_max_namelen */
|
15, /* ar_max_namelen */
|
||||||
1, /* minimum alignment */
|
|
||||||
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
|
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
|
||||||
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
|
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
|
||||||
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
|
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
|
||||||
|
|
231
bfd/sparclynx.c
231
bfd/sparclynx.c
|
@ -1,5 +1,5 @@
|
||||||
/* BFD support for Sparc binaries under LynxOS.
|
/* BFD support for Sparc binaries under LynxOS.
|
||||||
Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
|
Copyright (C) 1990, 91, 92, 93, 94, 95, 1997 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
|
@ -15,17 +15,15 @@ GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define ARCH 32
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#define BYTES_IN_WORD 4
|
#define BYTES_IN_WORD 4
|
||||||
#define N_SHARED_LIB(x) 0
|
#define N_SHARED_LIB(x) 0
|
||||||
|
|
||||||
#define TEXT_START_ADDR 0
|
#define TEXT_START_ADDR 0
|
||||||
#define PAGE_SIZE 4096
|
#define TARGET_PAGE_SIZE 4096
|
||||||
#define SEGMENT_SIZE PAGE_SIZE
|
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||||
#define DEFAULT_ARCH bfd_arch_sparc
|
#define DEFAULT_ARCH bfd_arch_sparc
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -38,7 +36,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
#include "libbfd.h"
|
#include "libbfd.h"
|
||||||
|
|
||||||
#include "aout/sun4.h"
|
#include "aout/sun4.h"
|
||||||
#include "libaout.h" /* BFD a.out internal data structures */
|
#include "libaout.h" /* BFD a.out internal data structures */
|
||||||
|
|
||||||
#include "aout/aout64.h"
|
#include "aout/aout64.h"
|
||||||
#include "aout/stab_gnu.h"
|
#include "aout/stab_gnu.h"
|
||||||
|
@ -64,7 +62,7 @@ int in the target format. It changes the sizes of the structs which
|
||||||
perform the memory/disk mapping of structures.
|
perform the memory/disk mapping of structures.
|
||||||
|
|
||||||
The 64 bit backend may only be used if the host compiler supports 64
|
The 64 bit backend may only be used if the host compiler supports 64
|
||||||
ints (eg long long with gcc), by defining the name @code{HOST_64_BIT} in @code{bfd.h}.
|
ints (eg long long with gcc), by defining the name @code{BFD_HOST_64_BIT} in @code{bfd.h}.
|
||||||
With this name defined, @emph{all} bfd operations are performed with 64bit
|
With this name defined, @emph{all} bfd operations are performed with 64bit
|
||||||
arithmetic, not just those to a 64bit target.
|
arithmetic, not just those to a 64bit target.
|
||||||
|
|
||||||
|
@ -79,167 +77,164 @@ The name put into the target vector.
|
||||||
/*SUPPRESS529*/
|
/*SUPPRESS529*/
|
||||||
|
|
||||||
void
|
void
|
||||||
DEFUN(NAME(lynxos,set_arch_mach), (abfd, machtype),
|
NAME(lynx,set_arch_mach) (abfd, machtype)
|
||||||
bfd *abfd AND int machtype)
|
bfd *abfd;
|
||||||
|
int machtype;
|
||||||
{
|
{
|
||||||
/* Determine the architecture and machine type of the object file. */
|
/* Determine the architecture and machine type of the object file. */
|
||||||
enum bfd_architecture arch;
|
enum bfd_architecture arch;
|
||||||
long machine;
|
long machine;
|
||||||
switch (machtype) {
|
switch (machtype)
|
||||||
|
{
|
||||||
|
|
||||||
case M_UNKNOWN:
|
case M_UNKNOWN:
|
||||||
/* Some Sun3s make magic numbers without cpu types in them, so
|
/* Some Sun3s make magic numbers without cpu types in them, so
|
||||||
we'll default to the 68000. */
|
we'll default to the 68000. */
|
||||||
arch = bfd_arch_m68k;
|
arch = bfd_arch_m68k;
|
||||||
machine = 68000;
|
machine = bfd_mach_m68000;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_68010:
|
case M_68010:
|
||||||
case M_HP200:
|
case M_HP200:
|
||||||
arch = bfd_arch_m68k;
|
arch = bfd_arch_m68k;
|
||||||
machine = 68010;
|
machine = bfd_mach_m68010;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_68020:
|
case M_68020:
|
||||||
case M_HP300:
|
case M_HP300:
|
||||||
arch = bfd_arch_m68k;
|
arch = bfd_arch_m68k;
|
||||||
machine = 68020;
|
machine = bfd_mach_m68020;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_SPARC:
|
case M_SPARC:
|
||||||
arch = bfd_arch_sparc;
|
arch = bfd_arch_sparc;
|
||||||
machine = 0;
|
machine = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_386:
|
case M_386:
|
||||||
case M_386_DYNIX:
|
case M_386_DYNIX:
|
||||||
arch = bfd_arch_i386;
|
arch = bfd_arch_i386;
|
||||||
machine = 0;
|
machine = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_29K:
|
case M_29K:
|
||||||
arch = bfd_arch_a29k;
|
arch = bfd_arch_a29k;
|
||||||
machine = 0;
|
machine = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_HPUX:
|
case M_HPUX:
|
||||||
arch = bfd_arch_m68k;
|
arch = bfd_arch_m68k;
|
||||||
machine = 0;
|
machine = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
arch = bfd_arch_obscure;
|
arch = bfd_arch_obscure;
|
||||||
machine = 0;
|
machine = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bfd_set_arch_mach(abfd, arch, machine);
|
bfd_set_arch_mach (abfd, arch, machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SET_ARCH_MACH(ABFD, EXEC) \
|
#define SET_ARCH_MACH(ABFD, EXEC) \
|
||||||
NAME(lynxos,set_arch_mach)(ABFD, N_MACHTYPE (EXEC)); \
|
NAME(lynx,set_arch_mach)(ABFD, N_MACHTYPE (EXEC)); \
|
||||||
choose_reloc_size(ABFD);
|
choose_reloc_size(ABFD);
|
||||||
|
|
||||||
/* Determine the size of a relocation entry, based on the architecture */
|
/* Determine the size of a relocation entry, based on the architecture */
|
||||||
static void
|
static void
|
||||||
DEFUN(choose_reloc_size,(abfd),
|
choose_reloc_size (abfd)
|
||||||
bfd *abfd)
|
bfd *abfd;
|
||||||
{
|
{
|
||||||
switch (bfd_get_arch(abfd)) {
|
switch (bfd_get_arch (abfd))
|
||||||
case bfd_arch_sparc:
|
{
|
||||||
case bfd_arch_a29k:
|
case bfd_arch_sparc:
|
||||||
obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
|
case bfd_arch_a29k:
|
||||||
break;
|
obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
|
||||||
default:
|
break;
|
||||||
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
|
default:
|
||||||
break;
|
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write an object file in Lynxos format.
|
/* Write an object file in LynxOS format.
|
||||||
Section contents have already been written. We write the
|
Section contents have already been written. We write the
|
||||||
file header, symbols, and relocation. */
|
file header, symbols, and relocation. */
|
||||||
|
|
||||||
static boolean
|
static boolean
|
||||||
DEFUN(NAME(aout,sparclynx_write_object_contents),
|
NAME(aout,sparclynx_write_object_contents) (abfd)
|
||||||
(abfd),
|
bfd *abfd;
|
||||||
bfd *abfd)
|
|
||||||
{
|
{
|
||||||
struct external_exec exec_bytes;
|
struct external_exec exec_bytes;
|
||||||
struct internal_exec *execp = exec_hdr (abfd);
|
struct internal_exec *execp = exec_hdr (abfd);
|
||||||
|
|
||||||
/* Magic number, maestro, please! */
|
/* Magic number, maestro, please! */
|
||||||
switch (bfd_get_arch(abfd)) {
|
switch (bfd_get_arch (abfd))
|
||||||
case bfd_arch_m68k:
|
{
|
||||||
switch (bfd_get_mach(abfd)) {
|
case bfd_arch_m68k:
|
||||||
case 68010:
|
switch (bfd_get_mach (abfd))
|
||||||
N_SET_MACHTYPE(*execp, M_68010);
|
{
|
||||||
|
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:
|
||||||
|
N_SET_MACHTYPE (*execp, M_SPARC);
|
||||||
|
break;
|
||||||
|
case bfd_arch_i386:
|
||||||
|
N_SET_MACHTYPE (*execp, M_386);
|
||||||
|
break;
|
||||||
|
case bfd_arch_a29k:
|
||||||
|
N_SET_MACHTYPE (*execp, M_29K);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case 68020:
|
N_SET_MACHTYPE (*execp, M_UNKNOWN);
|
||||||
N_SET_MACHTYPE(*execp, M_68020);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case bfd_arch_sparc:
|
|
||||||
N_SET_MACHTYPE(*execp, M_SPARC);
|
|
||||||
break;
|
|
||||||
case bfd_arch_i386:
|
|
||||||
N_SET_MACHTYPE(*execp, M_386);
|
|
||||||
break;
|
|
||||||
case bfd_arch_a29k:
|
|
||||||
N_SET_MACHTYPE(*execp, M_29K);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
N_SET_MACHTYPE(*execp, M_UNKNOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
choose_reloc_size(abfd);
|
choose_reloc_size (abfd);
|
||||||
|
|
||||||
#if 0
|
N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags);
|
||||||
/* Some tools want this to be 0, some tools want this to be one.
|
|
||||||
Today, it seems that 0 is the most important setting (PR1927) */
|
|
||||||
N_SET_FLAGS (*execp, 0x0);
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* Fri Jun 11 14:23:31 PDT 1993
|
WRITE_HEADERS (abfd, execp);
|
||||||
FIXME
|
|
||||||
Today's optimal setting is 1. This is a pain, since it
|
|
||||||
reopens 1927. This should be readdressed by creating a new
|
|
||||||
target for each each supported, giving perhaps sun3/m68k
|
|
||||||
and sun4/sparc a.out formats.
|
|
||||||
*/
|
|
||||||
N_SET_FLAGS (*execp, 1);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
WRITE_HEADERS(abfd, execp);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MY_set_sizes sparclynx_set_sizes
|
#define MY_set_sizes sparclynx_set_sizes
|
||||||
static boolean
|
static boolean
|
||||||
DEFUN (sparclynx_set_sizes, (abfd),
|
sparclynx_set_sizes (abfd)
|
||||||
bfd *abfd)
|
bfd *abfd;
|
||||||
{
|
{
|
||||||
switch (bfd_get_arch (abfd))
|
switch (bfd_get_arch (abfd))
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
case bfd_arch_sparc:
|
case bfd_arch_sparc:
|
||||||
adata(abfd).page_size = 0x2000;
|
adata (abfd).page_size = 0x2000;
|
||||||
adata(abfd).segment_size = 0x2000;
|
adata (abfd).segment_size = 0x2000;
|
||||||
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||||
return true;
|
return true;
|
||||||
case bfd_arch_m68k:
|
case bfd_arch_m68k:
|
||||||
adata(abfd).page_size = 0x2000;
|
adata (abfd).page_size = 0x2000;
|
||||||
adata(abfd).segment_size = 0x20000;
|
adata (abfd).segment_size = 0x20000;
|
||||||
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static CONST struct aout_backend_data sparclynx_aout_backend = {
|
static CONST struct aout_backend_data sparclynx_aout_backend =
|
||||||
0, 1, 0, sparclynx_set_sizes, 0,
|
{
|
||||||
|
0, 1, 0, 1, 0, sparclynx_set_sizes, 0,
|
||||||
|
0, /* add_dynamic_symbols */
|
||||||
|
0, /* add_one_symbol */
|
||||||
|
0, /* link_dynamic_object */
|
||||||
|
0, /* write_dynamic_symbol */
|
||||||
|
0, /* check_dynamic_reloc */
|
||||||
|
0 /* finish_dynamic_link */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,18 +248,18 @@ static CONST struct aout_backend_data sparclynx_aout_backend = {
|
||||||
|
|
||||||
#define TARGET_IS_BIG_ENDIAN_P
|
#define TARGET_IS_BIG_ENDIAN_P
|
||||||
|
|
||||||
#ifdef HOST_LYNX
|
#ifdef LYNX_CORE
|
||||||
|
|
||||||
char *lynx_core_file_failing_command();
|
char *lynx_core_file_failing_command ();
|
||||||
int lynx_core_file_failing_signal();
|
int lynx_core_file_failing_signal ();
|
||||||
boolean lynx_core_file_matches_executable_p();
|
boolean lynx_core_file_matches_executable_p ();
|
||||||
bfd_target *lynx_core_file_p();
|
const bfd_target *lynx_core_file_p ();
|
||||||
|
|
||||||
#define MY_core_file_failing_command lynx_core_file_failing_command
|
#define MY_core_file_failing_command lynx_core_file_failing_command
|
||||||
#define MY_core_file_failing_signal lynx_core_file_failing_signal
|
#define MY_core_file_failing_signal lynx_core_file_failing_signal
|
||||||
#define MY_core_file_matches_executable_p lynx_core_file_matches_executable_p
|
#define MY_core_file_matches_executable_p lynx_core_file_matches_executable_p
|
||||||
#define MY_core_file_p lynx_core_file_p
|
#define MY_core_file_p lynx_core_file_p
|
||||||
|
|
||||||
#endif /* HOST_LYNX */
|
#endif /* LYNX_CORE */
|
||||||
|
|
||||||
#include "aout-target.h"
|
#include "aout-target.h"
|
||||||
|
|
Loading…
Add table
Reference in a new issue