Add missing prototypes

This commit is contained in:
Nick Clifton 2001-08-27 10:35:20 +00:00
parent 25a1ff5b2d
commit e4b172749c
8 changed files with 337 additions and 300 deletions

View File

@ -1,3 +1,13 @@
2001-08-27 Nick Clifton <nickc@cambridge.redhat.com>
* mipsbsd.c: Add missing prototypes.
* hp300hpux.c: Add missing prototypes.
* i386aout.c: Add missing prototypes.
* i386lynx.c: Add missing prototypes.
* i386mach3.c: Add missing prototypes.
* i386msdos.c: Add missing prototypes.
* i386os9k.c: Add missing prototypes.
2001-08-27 Linus Nordberg <linus@swox.se>
Torbjorn Granlund <tege@swox.com>
Staffan Ulfberg <staffanu@swox.se>

View File

@ -20,7 +20,6 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
hpux native ------------> | |
| hp300hpux bfd | ----------> hpux w/gnu ext
hpux w/gnu extension ----> | |
@ -191,6 +190,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "aoutx.h"
static const bfd_target * MY (callback) PARAMS ((bfd *));
static boolean MY (write_object_contents) PARAMS ((bfd *));
static void convert_sym_type PARAMS ((struct external_nlist *, aout_symbol_type *, bfd *));
boolean MY (slurp_symbol_table) PARAMS ((bfd *));
void MY (swap_std_reloc_in) PARAMS ((bfd *, struct hp300hpux_reloc *, arelent *, asymbol **, bfd_size_type));
boolean MY (slurp_reloc_table) PARAMS ((bfd *, sec_ptr, asymbol **));
long MY (get_symtab) PARAMS ((bfd *, asymbol **));
long MY (get_symtab_upper_bound) PARAMS ((bfd *));
long MY (canonicalize_reloc) PARAMS ((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

View File

@ -1,5 +1,5 @@
/* BFD back-end for i386 a.out binaries.
Copyright 1990, 1991, 1992, 1994, 1996, 1997
Copyright 1990, 1991, 1992, 1994, 1996, 1997, 2001
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@ -51,6 +51,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "aout/aout64.h"
#include "libaout.h"
static boolean i386aout_write_object_contents PARAMS ((bfd *));
static boolean MY (set_sizes) PARAMS ((bfd *));
/* Set the machine type correctly. */
static boolean
@ -71,7 +74,6 @@ i386aout_write_object_contents (abfd)
#define MY_write_object_contents i386aout_write_object_contents
static boolean MY(set_sizes)();
#define MY_backend_data &MY(backend_data)
static CONST struct aout_backend_data MY(backend_data) = {
0, /* zmagic contiguous */

View File

@ -1,5 +1,5 @@
/* BFD back-end for i386 a.out binaries under LynxOS.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 2001
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@ -83,6 +83,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libaout.h"
#include "aout/aout64.h"
void NAME (lynx,swap_std_reloc_out) PARAMS ((bfd *, arelent *, struct reloc_std_external *));
void NAME (lynx,swap_ext_reloc_out) PARAMS ((bfd *, arelent *, struct reloc_ext_external *));
void NAME (lynx,swap_ext_reloc_in) PARAMS ((bfd *, struct reloc_ext_external *, arelent *, asymbol **, bfd_size_type));
void NAME (lynx,swap_std_reloc_in) PARAMS ((bfd *, struct reloc_std_external *, arelent *, asymbol **, bfd_size_type));
boolean NAME (lynx,slurp_reloc_table) PARAMS ((bfd *, sec_ptr, asymbol **));
boolean NAME (lynx,squirt_out_relocs) PARAMS ((bfd *, asection *));
long NAME (lynx,canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, asymbol **));
#ifdef LYNX_CORE
char *lynx_core_file_failing_command ();

View File

@ -1,5 +1,5 @@
/* BFD back-end for i386 a.out binaries.
Copyright 1990, 1991, 1993, 1994, 1995, 1997
Copyright 1990, 1991, 1993, 1994, 1995, 1997, 2001
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@ -46,7 +46,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define MY(OP) CAT(i386mach3_,OP)
#define TARGETNAME "a.out-mach3"
static boolean MY(set_sizes)();
static boolean MY (set_sizes) PARAMS ((bfd *));
#define MY_backend_data &MY(backend_data)
static CONST struct aout_backend_data MY(backend_data) = {
0, /* zmagic contiguous */

View File

@ -1,5 +1,5 @@
/* BFD back-end for MS-DOS executables.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001
Free Software Foundation, Inc.
Written by Bryan Ford of the University of Utah.
@ -31,23 +31,23 @@
#if 0
struct exe_header
{
unsigned short magic;
unsigned short bytes_in_last_page;
unsigned short npages; /* number of 512-byte "pages" including this header */
unsigned short nrelocs;
unsigned short header_paras; /* number of 16-byte paragraphs in header */
unsigned short reserved;
unsigned short load_switch;
unsigned short ss_ofs;
unsigned short sp;
unsigned short checksum;
unsigned short ip;
unsigned short cs_ofs;
unsigned short reloc_ofs;
unsigned short reserved2;
unsigned short something1;
unsigned short something2;
unsigned short something3;
unsigned short magic;
unsigned short bytes_in_last_page;
unsigned short npages; /* number of 512-byte "pages" including this header */
unsigned short nrelocs;
unsigned short header_paras; /* number of 16-byte paragraphs in header */
unsigned short reserved;
unsigned short load_switch;
unsigned short ss_ofs;
unsigned short sp;
unsigned short checksum;
unsigned short ip;
unsigned short cs_ofs;
unsigned short reloc_ofs;
unsigned short reserved2;
unsigned short something1;
unsigned short something2;
unsigned short something3;
};
#endif
@ -56,6 +56,9 @@ struct exe_header
#define EXE_LOAD_LOW 0xffff
#define EXE_PAGE_SIZE 512
static int msdos_sizeof_headers PARAMS ((bfd *, boolean));
static boolean msdos_write_object_contents PARAMS ((bfd *));
static boolean msdos_set_section_contents PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type));
static int
msdos_sizeof_headers (abfd, exec)
@ -103,7 +106,7 @@ msdos_write_object_contents (abfd)
return false;
}
/* constants */
/* Constants. */
bfd_h_put_16(abfd, EXE_MAGIC, &hdr[0]);
bfd_h_put_16(abfd, EXE_PAGE_SIZE / 16, &hdr[8]);
bfd_h_put_16(abfd, EXE_LOAD_LOW, &hdr[12]);
@ -112,10 +115,10 @@ msdos_write_object_contents (abfd)
bfd_h_put_16(abfd, 0x30fb, &hdr[30]); /* XXX??? */
bfd_h_put_16(abfd, 0x726a, &hdr[32]); /* XXX??? */
/* bytes in last page (0 = full page) */
/* Bytes in last page (0 = full page). */
bfd_h_put_16(abfd, outfile_size & (EXE_PAGE_SIZE - 1), &hdr[2]);
/* number of pages */
/* Number of pages. */
bfd_h_put_16(abfd, (outfile_size + EXE_PAGE_SIZE - 1) / EXE_PAGE_SIZE,
&hdr[4]);
@ -193,56 +196,56 @@ msdos_set_section_contents (abfd, section, location, offset, count)
#define msdos_32_bfd_link_split_section _bfd_generic_link_split_section
const bfd_target i386msdos_vec =
{
"msdos", /* name */
bfd_target_msdos_flavour,
BFD_ENDIAN_LITTLE, /* target byte order */
BFD_ENDIAN_LITTLE, /* target headers byte order */
(EXEC_P), /* object flags */
(SEC_CODE | SEC_DATA | SEC_HAS_CONTENTS
| SEC_ALLOC | SEC_LOAD), /* section flags */
0, /* leading underscore */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{
_bfd_dummy_target,
_bfd_dummy_target, /* bfd_check_format */
_bfd_dummy_target,
_bfd_dummy_target,
},
{
bfd_false,
msdos_mkobject,
_bfd_generic_mkarchive,
bfd_false,
},
{ /* bfd_write_contents */
bfd_false,
msdos_write_object_contents,
_bfd_write_archive_contents,
bfd_false,
},
"msdos", /* name */
bfd_target_msdos_flavour,
BFD_ENDIAN_LITTLE, /* target byte order */
BFD_ENDIAN_LITTLE, /* target headers byte order */
(EXEC_P), /* object flags */
(SEC_CODE | SEC_DATA | SEC_HAS_CONTENTS
| SEC_ALLOC | SEC_LOAD), /* section flags */
0, /* leading underscore */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
BFD_JUMP_TABLE_GENERIC (msdos),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
BFD_JUMP_TABLE_SYMBOLS (msdos),
BFD_JUMP_TABLE_RELOCS (msdos),
BFD_JUMP_TABLE_WRITE (msdos),
BFD_JUMP_TABLE_LINK (msdos),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
{
_bfd_dummy_target,
_bfd_dummy_target, /* bfd_check_format */
_bfd_dummy_target,
_bfd_dummy_target,
},
{
bfd_false,
msdos_mkobject,
_bfd_generic_mkarchive,
bfd_false,
},
{ /* bfd_write_contents */
bfd_false,
msdos_write_object_contents,
_bfd_write_archive_contents,
bfd_false,
},
NULL,
BFD_JUMP_TABLE_GENERIC (msdos),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
BFD_JUMP_TABLE_SYMBOLS (msdos),
BFD_JUMP_TABLE_RELOCS (msdos),
BFD_JUMP_TABLE_WRITE (msdos),
BFD_JUMP_TABLE_LINK (msdos),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
(PTR) 0
};
(PTR) 0
};

View File

@ -1,5 +1,5 @@
/* BFD back-end for os9000 i386 binaries.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001
Free Software Foundation, Inc.
Written by Cygnus Support.
@ -27,7 +27,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libaout.h" /* BFD a.out internal data structures */
#include "os9k.h"
static const bfd_target *os9k_callback PARAMS ((bfd *));
static const bfd_target * os9k_callback PARAMS ((bfd *));
static const bfd_target * os9k_object_p PARAMS ((bfd *));
static int os9k_sizeof_headers PARAMS ((bfd *, boolean));
boolean os9k_swap_exec_header_in PARAMS ((bfd *, mh_com *, struct internal_exec *));
/* Swaps the information in an executable header taken from a raw byte
stream memory image, into the internal exec_header structure. */
@ -147,14 +150,14 @@ os9k_callback (abfd)
struct internal_exec *execp = exec_hdr (abfd);
unsigned long bss_start;
/* Architecture and machine type */
/* Architecture and machine type. */
bfd_set_arch_mach (abfd, bfd_arch_i386, 0);
/* The positions of the string table and symbol table. */
obj_str_filepos (abfd) = 0;
obj_sym_filepos (abfd) = 0;
/* The alignments of the sections */
/* The alignments of the sections. */
obj_textsec (abfd)->alignment_power = execp->a_talign;
obj_datasec (abfd)->alignment_power = execp->a_dalign;
obj_bsssec (abfd)->alignment_power = execp->a_balign;
@ -163,23 +166,22 @@ os9k_callback (abfd)
obj_textsec (abfd)->vma = execp->a_tload;
obj_datasec (abfd)->vma = execp->a_dload;
/* And reload the sizes, since the aout module zaps them */
/* And reload the sizes, since the aout module zaps them. */
obj_textsec (abfd)->_raw_size = execp->a_text;
bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section */
bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section. */
obj_bsssec (abfd)->vma = align_power (bss_start, execp->a_balign);
/* The file positions of the sections */
/* The file positions of the sections. */
obj_textsec (abfd)->filepos = execp->a_entry;
obj_datasec (abfd)->filepos = execp->a_dload;
/* The file positions of the relocation info ***
obj_textsec (abfd)->rel_filepos = N_TROFF(*execp);
obj_datasec (abfd)->rel_filepos = N_DROFF(*execp);
*/
obj_datasec (abfd)->rel_filepos = N_DROFF(*execp); */
adata (abfd).page_size = 1; /* Not applicable. */
adata (abfd).segment_size = 1;/* Not applicable. */
adata (abfd).page_size = 1; /* Not applicable. */
adata (abfd).segment_size = 1;/* Not applicable. */
adata (abfd).exec_bytes_size = MHCOM_BYTES_SIZE;
return abfd->xvec;
@ -247,7 +249,7 @@ os9k_write_object_contents (abfd)
!= EXEC_BYTES_SIZE))
return false;
/* Now write out reloc info, followed by syms and strings */
/* Now write out reloc info, followed by syms and strings. */
if (bfd_get_symcount (abfd) != 0)
{
if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (*exec_hdr (abfd))), SEEK_SET)
@ -292,14 +294,13 @@ os9k_set_section_contents (abfd, section, location, offset, count)
+ obj_textsec (abfd)->_raw_size;
}
/* regardless, once we know what we're doing, we might as well get going */
/* Regardless, once we know what we're doing, we might as well get going. */
if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0)
return false;
if (count != 0)
{
return (bfd_write ((PTR) location, 1, count, abfd) == count) ? true : false;
}
return (bfd_write ((PTR) location, 1, count, abfd) == count) ? true : false;
return true;
}
#endif /* 0 */
@ -312,8 +313,7 @@ os9k_sizeof_headers (ignore_abfd, ignore)
return sizeof (struct internal_exec);
}
/***********************************************************************/
#define aout_32_close_and_cleanup aout_32_bfd_free_cached_info
@ -335,41 +335,41 @@ os9k_sizeof_headers (ignore_abfd, ignore)
#define os9k_bfd_link_split_section _bfd_generic_link_split_section
const bfd_target i386os9k_vec =
{
"i386os9k", /* name */
bfd_target_os9k_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_LITTLE, /* hdr byte order is little */
(HAS_RELOC | EXEC_P | WP_TEXT), /* object flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD), /* section flags */
0, /* symbol leading char */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
{
"i386os9k", /* name */
bfd_target_os9k_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_LITTLE, /* hdr byte order is little */
(HAS_RELOC | EXEC_P | WP_TEXT), /* object flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD), /* section flags */
0, /* symbol leading char */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{_bfd_dummy_target, os9k_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, bfd_false, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, bfd_false, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{_bfd_dummy_target, os9k_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, bfd_false, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, bfd_false, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (aout_32),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd),
BFD_JUMP_TABLE_SYMBOLS (aout_32),
BFD_JUMP_TABLE_RELOCS (aout_32),
BFD_JUMP_TABLE_WRITE (aout_32),
BFD_JUMP_TABLE_LINK (os9k),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
BFD_JUMP_TABLE_GENERIC (aout_32),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd),
BFD_JUMP_TABLE_SYMBOLS (aout_32),
BFD_JUMP_TABLE_RELOCS (aout_32),
BFD_JUMP_TABLE_WRITE (aout_32),
BFD_JUMP_TABLE_LINK (os9k),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
NULL,
(PTR) 0,
};
(PTR) 0,
};

View File

@ -1,5 +1,5 @@
/* BFD backend for MIPS BSD (a.out) binaries.
Copyright 1993, 1994, 1995, 1997, 1998, 1999, 2000
Copyright 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
Written by Ralph Campbell.
@ -67,6 +67,11 @@ static boolean MY(write_object_contents) PARAMS ((bfd *abfd));
#include "aout-target.h"
static bfd_reloc_status_type mips_fix_jmp_addr PARAMS ((bfd *, arelent *, struct symbol_cache_entry *, PTR, asection *, bfd *));
static reloc_howto_type * MY(reloc_howto_type_lookup) PARAMS ((bfd *, bfd_reloc_code_real_type));
long MY(canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, asymbol **));
static void
MY(set_arch_mach) (abfd, machtype)
bfd *abfd;
@ -76,41 +81,43 @@ MY(set_arch_mach) (abfd, machtype)
long machine;
/* Determine the architecture and machine type of the object file. */
switch (machtype) {
switch (machtype)
{
case M_MIPS1:
arch = bfd_arch_mips;
machine = 3000;
break;
case M_MIPS1:
arch = bfd_arch_mips;
machine = 3000;
break;
case M_MIPS2:
arch = bfd_arch_mips;
machine = 4000;
break;
case M_MIPS2:
arch = bfd_arch_mips;
machine = 4000;
break;
default:
arch = bfd_arch_obscure;
machine = 0;
break;
}
default:
arch = bfd_arch_obscure;
machine = 0;
break;
}
bfd_set_arch_mach(abfd, arch, machine);
bfd_set_arch_mach (abfd, arch, machine);
}
/* Determine the size of a relocation entry, based on the architecture */
static void
MY(choose_reloc_size) (abfd)
MY (choose_reloc_size) (abfd)
bfd *abfd;
{
switch (bfd_get_arch(abfd)) {
case bfd_arch_sparc:
case bfd_arch_a29k:
case bfd_arch_mips:
obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
break;
default:
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
break;
}
switch (bfd_get_arch (abfd))
{
case bfd_arch_sparc:
case bfd_arch_a29k:
case bfd_arch_mips:
obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
break;
default:
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
break;
}
}
/* Write an object file in BSD a.out format.
@ -118,59 +125,60 @@ MY(choose_reloc_size) (abfd)
file header, symbols, and relocation. */
static boolean
MY(write_object_contents) (abfd)
MY (write_object_contents) (abfd)
bfd *abfd;
{
struct external_exec exec_bytes;
struct internal_exec *execp = exec_hdr (abfd);
/* Magic number, maestro, please! */
switch (bfd_get_arch(abfd)) {
case bfd_arch_m68k:
switch (bfd_get_mach(abfd)) {
case bfd_mach_m68010:
N_SET_MACHTYPE(*execp, M_68010);
switch (bfd_get_arch (abfd))
{
case bfd_arch_m68k:
switch (bfd_get_mach (abfd))
{
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;
case bfd_arch_mips:
switch (bfd_get_mach (abfd))
{
case 4000:
case 6000:
N_SET_MACHTYPE (*execp, M_MIPS2);
break;
default:
N_SET_MACHTYPE (*execp, M_MIPS1);
break;
}
break;
default:
case bfd_mach_m68020:
N_SET_MACHTYPE(*execp, M_68020);
break;
N_SET_MACHTYPE (*execp, M_UNKNOWN);
}
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;
case bfd_arch_mips:
switch (bfd_get_mach(abfd)) {
case 4000:
case 6000:
N_SET_MACHTYPE(*execp, M_MIPS2);
break;
default:
N_SET_MACHTYPE(*execp, M_MIPS1);
break;
}
break;
default:
N_SET_MACHTYPE(*execp, M_UNKNOWN);
}
MY(choose_reloc_size) (abfd);
MY (choose_reloc_size) (abfd);
WRITE_HEADERS(abfd, execp);
WRITE_HEADERS (abfd, execp);
return true;
}
/*
* MIPS relocation types.
*/
/* MIPS relocation types. */
#define MIPS_RELOC_32 0
#define MIPS_RELOC_JMP 1
#define MIPS_RELOC_WDISP16 2
@ -178,14 +186,13 @@ MY(write_object_contents) (abfd)
#define MIPS_RELOC_HI16_S 4
#define MIPS_RELOC_LO16 5
/*
* This is only called when performing a BFD_RELOC_MIPS_JMP relocation.
* The jump destination address is formed from the upper 4 bits of the
* "current" program counter concatenated with the jump instruction's
* 26 bit field and two trailing zeros.
* If the destination address is not in the same segment as the "current"
* program counter, then we need to signal an error.
*/
/* This is only called when performing a BFD_RELOC_MIPS_JMP relocation.
The jump destination address is formed from the upper 4 bits of the
"current" program counter concatenated with the jump instruction's
26 bit field and two trailing zeros.
If the destination address is not in the same segment as the "current"
program counter, then we need to signal an error. */
static bfd_reloc_status_type
mips_fix_jmp_addr (abfd,reloc_entry,symbol,data,input_section,output_bfd)
bfd *abfd ATTRIBUTE_UNUSED;
@ -206,10 +213,8 @@ mips_fix_jmp_addr (abfd,reloc_entry,symbol,data,input_section,output_bfd)
&& (symbol->flags & BSF_WEAK) == 0)
return bfd_reloc_undefined;
/*
* Work out which section the relocation is targetted at and the
* initial relocation command value.
*/
/* Work out which section the relocation is targetted at and the
initial relocation command value. */
if (bfd_is_com_section (symbol->section))
relocation = 0;
else
@ -228,12 +233,11 @@ mips_fix_jmp_addr (abfd,reloc_entry,symbol,data,input_section,output_bfd)
return bfd_reloc_continue;
}
/*
* This is only called when performing a BFD_RELOC_HI16_S relocation.
* We need to see if bit 15 is set in the result. If it is, we add
* 0x10000 and continue normally. This will compensate for the sign extension
* when the low bits are added at run time.
*/
/* This is only called when performing a BFD_RELOC_HI16_S relocation.
We need to see if bit 15 is set in the result. If it is, we add
0x10000 and continue normally. This will compensate for the sign extension
when the low bits are added at run time. */
static bfd_reloc_status_type
mips_fix_hi16_s PARAMS ((bfd *, arelent *, asymbol *, PTR,
asection *, bfd *, char **));
@ -255,15 +259,13 @@ mips_fix_hi16_s (abfd, reloc_entry, symbol, data, input_section,
if (output_bfd != (bfd *)NULL)
return bfd_reloc_continue;
/* If this is an undefined symbol, return error */
/* If this is an undefined symbol, return error. */
if (bfd_is_und_section (symbol->section)
&& (symbol->flags & BSF_WEAK) == 0)
return bfd_reloc_undefined;
/*
* Work out which section the relocation is targetted at and the
* initial relocation command value.
*/
/* Work out which section the relocation is targetted at and the
initial relocation command value. */
if (bfd_is_com_section (symbol->section))
relocation = 0;
else
@ -325,10 +327,8 @@ MY(reloc_howto_type_lookup) (abfd, code)
}
}
/*
* This is just like the standard aoutx.h version but we need to do our
* own mapping of external reloc type values to howto entries.
*/
/* This is just like the standard aoutx.h version but we need to do our
own mapping of external reloc type values to howto entries. */
long
MY(canonicalize_reloc) (abfd, section, relptr, symbols)
bfd *abfd;
@ -341,28 +341,32 @@ MY(canonicalize_reloc) (abfd, section, relptr, symbols)
extern reloc_howto_type NAME(aout,ext_howto_table)[];
/* If we have already read in the relocation table, return the values. */
if (section->flags & SEC_CONSTRUCTOR) {
arelent_chain *chain = section->constructor_chain;
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;
for (count = 0; count < section->reloc_count; count++)
{
*relptr++ = &chain->relent;
chain = chain->next;
}
*relptr = 0;
return section->reloc_count;
}
if (tblptr && section->reloc_count)
{
for (count = 0; count++ < section->reloc_count;)
*relptr++ = tblptr++;
*relptr = 0;
return section->reloc_count;
}
*relptr = 0;
return section->reloc_count;
}
if (tblptr && section->reloc_count) {
for (count = 0; count++ < section->reloc_count;)
*relptr++ = tblptr++;
*relptr = 0;
return section->reloc_count;
}
if (!NAME(aout,slurp_reloc_table) (abfd, section, symbols))
return -1;
tblptr = section->relocation;
/* fix up howto entries */
/* fix up howto entries. */
for (count = 0; count++ < section->reloc_count;)
{
c = tblptr->howto - NAME(aout,ext_howto_table);
@ -393,83 +397,83 @@ static CONST struct aout_backend_data MY(backend_data) = {
extern const bfd_target aout_mips_big_vec;
const bfd_target aout_mips_little_vec =
{
"a.out-mips-little", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_LITTLE, /* target byte order (little) */
BFD_ENDIAN_LITTLE, /* target headers byte order (little) */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
MY_symbol_leading_char,
' ', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{
"a.out-mips-little", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_LITTLE, /* target byte order (little) */
BFD_ENDIAN_LITTLE, /* target headers byte order (little) */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
MY_symbol_leading_char,
' ', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{_bfd_dummy_target, MY_object_p, /* bfd_check_format */
bfd_generic_archive_p, MY_core_file_p},
bfd_generic_archive_p, MY_core_file_p},
{bfd_false, MY_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
_bfd_generic_mkarchive, bfd_false},
{bfd_false, MY_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (MY),
BFD_JUMP_TABLE_COPY (MY),
BFD_JUMP_TABLE_CORE (MY),
BFD_JUMP_TABLE_ARCHIVE (MY),
BFD_JUMP_TABLE_SYMBOLS (MY),
BFD_JUMP_TABLE_RELOCS (MY),
BFD_JUMP_TABLE_WRITE (MY),
BFD_JUMP_TABLE_LINK (MY),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
BFD_JUMP_TABLE_GENERIC (MY),
BFD_JUMP_TABLE_COPY (MY),
BFD_JUMP_TABLE_CORE (MY),
BFD_JUMP_TABLE_ARCHIVE (MY),
BFD_JUMP_TABLE_SYMBOLS (MY),
BFD_JUMP_TABLE_RELOCS (MY),
BFD_JUMP_TABLE_WRITE (MY),
BFD_JUMP_TABLE_LINK (MY),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
& aout_mips_big_vec,
& aout_mips_big_vec,
(PTR) MY_backend_data
};
(PTR) MY_backend_data
};
const bfd_target aout_mips_big_vec =
{
"a.out-mips-big", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_BIG, /* target byte order (big) */
BFD_ENDIAN_BIG, /* target headers byte order (big) */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
MY_symbol_leading_char,
' ', /* ar_pad_char */
15, /* ar_max_namelen */
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, /* hdrs */
{
"a.out-mips-big", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_BIG, /* target byte order (big) */
BFD_ENDIAN_BIG, /* target headers byte order (big) */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
MY_symbol_leading_char,
' ', /* ar_pad_char */
15, /* ar_max_namelen */
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, /* hdrs */
{_bfd_dummy_target, MY_object_p, /* bfd_check_format */
bfd_generic_archive_p, MY_core_file_p},
bfd_generic_archive_p, MY_core_file_p},
{bfd_false, MY_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
_bfd_generic_mkarchive, bfd_false},
{bfd_false, MY_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (MY),
BFD_JUMP_TABLE_COPY (MY),
BFD_JUMP_TABLE_CORE (MY),
BFD_JUMP_TABLE_ARCHIVE (MY),
BFD_JUMP_TABLE_SYMBOLS (MY),
BFD_JUMP_TABLE_RELOCS (MY),
BFD_JUMP_TABLE_WRITE (MY),
BFD_JUMP_TABLE_LINK (MY),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
BFD_JUMP_TABLE_GENERIC (MY),
BFD_JUMP_TABLE_COPY (MY),
BFD_JUMP_TABLE_CORE (MY),
BFD_JUMP_TABLE_ARCHIVE (MY),
BFD_JUMP_TABLE_SYMBOLS (MY),
BFD_JUMP_TABLE_RELOCS (MY),
BFD_JUMP_TABLE_WRITE (MY),
BFD_JUMP_TABLE_LINK (MY),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
& aout_mips_little_vec,
& aout_mips_little_vec,
(PTR) MY_backend_data
};
(PTR) MY_backend_data
};