1/* Target definitions for 32/64-bit NLM (NetWare Loadable Module) 2 Copyright 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3 2005, 2007 Free Software Foundation, Inc. 4 5 This file is part of BFD, the Binary File Descriptor library. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 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 18 along with this program; if not, write to the Free Software 19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 20 MA 02110-1301, USA. */ 21 22#define nlm_core_file_p _bfd_dummy_target 23 24#define nlm_get_symtab_upper_bound nlmNAME (get_symtab_upper_bound) 25#define nlm_canonicalize_symtab nlmNAME (canonicalize_symtab) 26#define nlm_make_empty_symbol nlmNAME (make_empty_symbol) 27#define nlm_print_symbol nlmNAME (print_symbol) 28#define nlm_get_symbol_info nlmNAME (get_symbol_info) 29#define nlm_bfd_is_local_label_name bfd_generic_is_local_label_name 30#define nlm_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) 31#define nlm_get_lineno _bfd_nosymbols_get_lineno 32#define nlm_find_nearest_line _bfd_nosymbols_find_nearest_line 33#define nlm_find_inliner_info _bfd_nosymbols_find_inliner_info 34#define nlm_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol 35#define nlm_read_minisymbols _bfd_generic_read_minisymbols 36#define nlm_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol 37 38#define nlm_get_reloc_upper_bound nlmNAME (get_reloc_upper_bound) 39#define nlm_canonicalize_reloc nlmNAME (canonicalize_reloc) 40#define nlm_bfd_reloc_type_lookup bfd_default_reloc_type_lookup 41#define nlm_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup 42#define nlm_set_section_contents nlmNAME (set_section_contents) 43 44#define nlm_sizeof_headers _bfd_nolink_sizeof_headers 45#define nlm_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents 46#define nlm_bfd_relax_section bfd_generic_relax_section 47#define nlm_bfd_gc_sections bfd_generic_gc_sections 48#define nlm_bfd_merge_sections bfd_generic_merge_sections 49#define nlm_bfd_is_group_section bfd_generic_is_group_section 50#define nlm_bfd_discard_group bfd_generic_discard_group 51#define nlm_section_already_linked _bfd_generic_section_already_linked 52#define nlm_bfd_link_hash_table_create _bfd_generic_link_hash_table_create 53#define nlm_bfd_link_hash_table_free _bfd_generic_link_hash_table_free 54#define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols 55#define nlm_bfd_link_just_syms _bfd_generic_link_just_syms 56#define nlm_bfd_final_link _bfd_generic_final_link 57#define nlm_bfd_link_split_section _bfd_generic_link_split_section 58 59/* This structure contains everything that BFD knows about a target. 60 It includes things like its byte order, name, what routines to call 61 to do various operations, etc. Every BFD points to a target structure 62 with its "xvec" member. 63 64 There are two such structures here: one for big-endian machines and 65 one for little-endian machines. */ 66 67/* Forward declaration for use when initialising alternative_target field. */ 68#ifdef TARGET_LITTLE_SYM 69extern const bfd_target TARGET_LITTLE_SYM; 70#endif 71 72#ifdef TARGET_BIG_SYM 73const bfd_target TARGET_BIG_SYM = 74{ 75 /* Name: identify kind of target. */ 76 TARGET_BIG_NAME, 77 78 /* Flavour: general indication about file. */ 79 bfd_target_nlm_flavour, 80 81 /* Byteorder: data is big endian. */ 82 BFD_ENDIAN_BIG, 83 84 /* Header_byteorder: header is also big endian. */ 85 BFD_ENDIAN_BIG, 86 87 /* Object_flags: mask of all file flags. */ 88 (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS 89 | WP_TEXT), 90 91 /* Section_flags: mask of all section flags. */ 92 (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY 93 | SEC_CODE | SEC_DATA), 94 95 /* Leading_symbol_char: is the first char of a user symbol 96 predictable, and if so what is it. */ 97 0, 98 99 /* AR_pad_char: pad character for filenames within an archive header 100 FIXME: this really has nothing to do with NLM, this is a characteristic 101 of the archiver and/or os and should be independently tunable. */ 102 '/', 103 104 /* AR_max_namelen: maximum number of characters in an archive header 105 FIXME: this really has nothing to do with NLM, this is a characteristic 106 of the archiver and should be independently tunable. This value is 107 a WAG (wild a** guess). */ 108 15, 109 110 /* Routines to byte-swap various sized integers from the data sections. */ 111 bfd_getb64, bfd_getb_signed_64, bfd_putb64, 112 bfd_getb32, bfd_getb_signed_32, bfd_putb32, 113 bfd_getb16, bfd_getb_signed_16, bfd_putb16, 114 115 /* Routines to byte-swap various sized integers from the file headers. */ 116 bfd_getb64, bfd_getb_signed_64, bfd_putb64, 117 bfd_getb32, bfd_getb_signed_32, bfd_putb32, 118 bfd_getb16, bfd_getb_signed_16, bfd_putb16, 119 120 /* bfd_check_format: check the format of a file being read. */ 121 { _bfd_dummy_target, /* Unknown format. */ 122 nlmNAME (object_p), /* Assembler/linker output (object file). */ 123 bfd_generic_archive_p, /* An archive. */ 124 nlm_core_file_p /* A core file. */ 125 }, 126 127 /* bfd_set_format: set the format of a file being written. */ 128 { bfd_false, 129 nlm_mkobject, 130 _bfd_generic_mkarchive, 131 bfd_false 132 }, 133 134 /* bfd_write_contents: write cached information into a file being written. */ 135 { bfd_false, 136 nlmNAME (write_object_contents), 137 _bfd_write_archive_contents, 138 bfd_false 139 }, 140 141 /* Initialize a jump table with the standard macro. 142 All names start with "nlm". */ 143 BFD_JUMP_TABLE_GENERIC (_bfd_generic), 144 BFD_JUMP_TABLE_COPY (_bfd_generic), 145 BFD_JUMP_TABLE_CORE (_bfd_nocore), 146 BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), 147 BFD_JUMP_TABLE_SYMBOLS (nlm), 148 BFD_JUMP_TABLE_RELOCS (nlm), 149 BFD_JUMP_TABLE_WRITE (nlm), 150 BFD_JUMP_TABLE_LINK (nlm), 151 BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), 152 153 /* Alternative endian target. */ 154#ifdef TARGET_LITTLE_SYM 155 & TARGET_LITTLE_SYM, 156#else 157 NULL, 158#endif 159 160 /* Backend_data. */ 161 (void *) TARGET_BACKEND_DATA 162}; 163#endif 164 165#ifdef TARGET_LITTLE_SYM 166const bfd_target TARGET_LITTLE_SYM = 167{ 168 /* Name: identify kind of target. */ 169 TARGET_LITTLE_NAME, 170 171 /* Flavour: general indication about file. */ 172 bfd_target_nlm_flavour, 173 174 /* Byteorder: data is little endian. */ 175 BFD_ENDIAN_LITTLE, 176 177 /* Header_byteorder: header is also little endian. */ 178 BFD_ENDIAN_LITTLE, 179 180 /* Object_flags: mask of all file flags. */ 181 (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS 182 | WP_TEXT), 183 184 /* Section_flags: mask of all section flags. */ 185 (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY 186 | SEC_DATA), 187 188 /* Leading_symbol_char: is the first char of a user symbol 189 predictable, and if so what is it. */ 190 0, 191 192 /* AR_pad_char: pad character for filenames within an archive header 193 FIXME: this really has nothing to do with NLM, this is a characteristic 194 of the archiver and/or os and should be independently tunable. */ 195 '/', 196 197 /* AR_max_namelen: maximum number of characters in an archive header 198 FIXME: this really has nothing to do with NLM, this is a characteristic 199 of the archiver and should be independently tunable. This value is 200 a WAG (wild a** guess). */ 201 15, 202 203 /* Routines to byte-swap various sized integers from the data sections. */ 204 bfd_getl64, bfd_getl_signed_64, bfd_putl64, 205 bfd_getl32, bfd_getl_signed_32, bfd_putl32, 206 bfd_getl16, bfd_getl_signed_16, bfd_putl16, 207 208 /* Routines to byte-swap various sized integers from the file headers. */ 209 bfd_getl64, bfd_getl_signed_64, bfd_putl64, 210 bfd_getl32, bfd_getl_signed_32, bfd_putl32, 211 bfd_getl16, bfd_getl_signed_16, bfd_putl16, 212 213 /* bfd_check_format: check the format of a file being read. */ 214 { _bfd_dummy_target, /* Unknown format. */ 215 nlmNAME(object_p), /* Assembler/linker output (object file). */ 216 bfd_generic_archive_p, /* An archive. */ 217 nlm_core_file_p /* A core file. */ 218 }, 219 220 /* bfd_set_format: set the format of a file being written. */ 221 { bfd_false, 222 nlm_mkobject, 223 _bfd_generic_mkarchive, 224 bfd_false 225 }, 226 227 /* bfd_write_contents: write cached information into a file being written. */ 228 { bfd_false, 229 nlmNAME(write_object_contents), 230 _bfd_write_archive_contents, 231 bfd_false 232 }, 233 234 /* Initialize a jump table with the standard macro. 235 All names start with "nlm". */ 236 BFD_JUMP_TABLE_GENERIC (_bfd_generic), 237 BFD_JUMP_TABLE_COPY (_bfd_generic), 238 BFD_JUMP_TABLE_CORE (_bfd_nocore), 239 BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), 240 BFD_JUMP_TABLE_SYMBOLS (nlm), 241 BFD_JUMP_TABLE_RELOCS (nlm), 242 BFD_JUMP_TABLE_WRITE (nlm), 243 BFD_JUMP_TABLE_LINK (nlm), 244 BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), 245 246 /* Alternative endian target. */ 247#ifdef TARGET_BIG_SYM 248 & TARGET_BIG_SYM, 249#else 250 NULL, 251#endif 252 253 /* Backend_data. */ 254 (void *) TARGET_BACKEND_DATA 255}; 256#endif 257