]>
Commit | Line | Data |
---|---|---|
68b70212 JG |
1 | /* MIPS Extended-Coff back-end for BFD. |
2 | Copyright (C) 1990-1991 Free Software Foundation, Inc. | |
3 | Written by Per Bothner. | |
1327fb29 | 4 | |
68b70212 | 5 | This file is part of BFD, the Binary File Descriptor library. |
23b0b558 | 6 | |
68b70212 | 7 | This program is free software; you can redistribute it and/or modify |
23b0b558 | 8 | it under the terms of the GNU General Public License as published by |
68b70212 JG |
9 | the Free Software Foundation; either version 2 of the License, or |
10 | (at your option) any later version. | |
23b0b558 | 11 | |
68b70212 | 12 | This program is distributed in the hope that it will be useful, |
23b0b558 JG |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
68b70212 JG |
18 | along with this program; if not, write to the Free Software |
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
1327fb29 | 20 | |
23b0b558 | 21 | #include "bfd.h" |
dd4646ca | 22 | #include "sysdep.h" |
1327fb29 | 23 | #include "libbfd.h" |
41f50af0 SC |
24 | #include "ecoff.h" |
25 | #include "internalcoff.h" | |
23b0b558 | 26 | #include "libcoff.h" /* to allow easier abstraction-breaking */ |
68b70212 | 27 | #include "trad-core.h" |
1327fb29 | 28 | |
8e3c8f47 | 29 | #define BADMAG(x) ECOFFBADMAG(x) |
2b1d8a50 | 30 | |
68b70212 JG |
31 | /* Define NO_COFF_SYMBOLS and NO_COFF_LINENOS to avoid coffcode.h |
32 | defining a mess of useless functions. */ | |
33 | #define NO_COFF_SYMBOLS | |
34 | #define NO_COFF_LINENOS | |
dd4646ca JG |
35 | /* Define MIPS to get MIPS magic numbers and such */ |
36 | #define MIPS 1 | |
7ed4093a | 37 | #include "coffcode.h" |
68b70212 | 38 | |
68b70212 JG |
39 | /* We do not implement symbols for ecoff. */ |
40 | #define coff_get_symtab_upper_bound (PROTO(unsigned int, (*),(bfd *)))bfd_false | |
41 | #define coff_get_symtab (PROTO(unsigned int, (*), (bfd *, asymbol **)))bfd_0 | |
42 | #define coff_print_symbol \ | |
43 | (PROTO(void,(*),(bfd *, PTR, asymbol *, enum bfd_print_symbol))) bfd_void | |
44 | #define coff_swap_sym_in (PROTO(void,(*),(bfd *,PTR,PTR))) bfd_void | |
dd4646ca | 45 | #define coff_swap_aux_in (PROTO(void,(*),(bfd *,PTR,int,int,PTR))) bfd_void |
68b70212 JG |
46 | |
47 | /* We do not implement linenos for ecoff. */ | |
48 | #define coff_get_lineno (struct lineno_cache_entry *(*)()) bfd_nullvoidptr | |
49 | #define coff_swap_lineno_in (PROTO(void,(*),(bfd *,PTR,PTR))) bfd_void | |
50 | #define coff_find_nearest_line (PROTO(boolean, (*),(bfd*,asection*,asymbol**,bfd_vma, CONST char**, CONST char**, unsigned int *))) bfd_false | |
51 | ||
1327fb29 SC |
52 | bfd_target ecoff_little_vec = |
53 | {"ecoff-littlemips", /* name */ | |
dd4646ca | 54 | bfd_target_coff_flavour, |
2b1d8a50 JG |
55 | false, /* data byte order is little */ |
56 | false, /* header byte order is little */ | |
1327fb29 | 57 | |
2b1d8a50 JG |
58 | (HAS_RELOC | EXEC_P | /* object flags */ |
59 | HAS_LINENO | HAS_DEBUG | | |
60 | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), | |
1327fb29 | 61 | |
2b1d8a50 JG |
62 | (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* sect flags */ |
63 | '/', /* ar_pad_char */ | |
64 | 15, /* ar_max_namelen */ | |
41f50af0 | 65 | 3, /* minimum alignment power */ |
19b03b7a SC |
66 | _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* data */ |
67 | _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* hdrs */ | |
1327fb29 | 68 | |
8e3c8f47 | 69 | {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ |
1327fb29 | 70 | bfd_generic_archive_p, _bfd_dummy_target}, |
8e3c8f47 | 71 | {bfd_false, coff_mkobject, bfd_false, /* bfd_set_format */ |
1327fb29 | 72 | bfd_false}, |
8e3c8f47 SC |
73 | {bfd_false, coff_write_object_contents, bfd_false, bfd_false}, |
74 | JUMP_TABLE (coff) | |
23b0b558 | 75 | }; |
1327fb29 SC |
76 | |
77 | bfd_target ecoff_big_vec = | |
78 | {"ecoff-bigmips", /* name */ | |
dd4646ca | 79 | bfd_target_coff_flavour, |
2b1d8a50 JG |
80 | true, /* data byte order is big */ |
81 | true, /* header byte order is big */ | |
1327fb29 | 82 | |
2b1d8a50 JG |
83 | (HAS_RELOC | EXEC_P | /* object flags */ |
84 | HAS_LINENO | HAS_DEBUG | | |
85 | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), | |
1327fb29 | 86 | |
2b1d8a50 JG |
87 | (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* sect flags */ |
88 | ' ', /* ar_pad_char */ | |
89 | 16, /* ar_max_namelen */ | |
41f50af0 | 90 | 3, /* minimum alignment power */ |
dd4646ca JG |
91 | _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, |
92 | _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, | |
8e3c8f47 | 93 | {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ |
dd4646ca | 94 | bfd_generic_archive_p, _bfd_dummy_target}, |
8e3c8f47 | 95 | {bfd_false, coff_mkobject, bfd_false, /* bfd_set_format */ |
1327fb29 | 96 | bfd_false}, |
8e3c8f47 | 97 | {bfd_false, coff_write_object_contents, /* bfd_write_contents */ |
2b1d8a50 | 98 | bfd_false, bfd_false}, |
2700c3c7 SC |
99 | JUMP_TABLE(coff), |
100 | COFF_SWAP_TABLE | |
23b0b558 | 101 | }; |