| /* Target definitions for 32/64-bit NLM (NetWare Loadable Module) |
| Copyright 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
| 2005, 2007, 2009, 2011 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 3 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., 51 Franklin Street - Fifth Floor, Boston, |
| MA 02110-1301, USA. */ |
| |
| #define nlm_core_file_p _bfd_dummy_target |
| |
| #define nlm_get_symtab_upper_bound nlmNAME (get_symtab_upper_bound) |
| #define nlm_canonicalize_symtab nlmNAME (canonicalize_symtab) |
| #define nlm_make_empty_symbol nlmNAME (make_empty_symbol) |
| #define nlm_print_symbol nlmNAME (print_symbol) |
| #define nlm_get_symbol_info nlmNAME (get_symbol_info) |
| #define nlm_bfd_is_local_label_name bfd_generic_is_local_label_name |
| #define nlm_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) |
| #define nlm_get_lineno _bfd_nosymbols_get_lineno |
| #define nlm_find_nearest_line _bfd_nosymbols_find_nearest_line |
| #define nlm_find_inliner_info _bfd_nosymbols_find_inliner_info |
| #define nlm_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol |
| #define nlm_read_minisymbols _bfd_generic_read_minisymbols |
| #define nlm_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol |
| |
| #define nlm_get_reloc_upper_bound nlmNAME (get_reloc_upper_bound) |
| #define nlm_canonicalize_reloc nlmNAME (canonicalize_reloc) |
| #define nlm_bfd_reloc_type_lookup bfd_default_reloc_type_lookup |
| #define nlm_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup |
| #define nlm_set_section_contents nlmNAME (set_section_contents) |
| |
| #define nlm_sizeof_headers _bfd_nolink_sizeof_headers |
| #define nlm_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents |
| #define nlm_bfd_relax_section bfd_generic_relax_section |
| #define nlm_bfd_gc_sections bfd_generic_gc_sections |
| #define nlm_bfd_lookup_section_flags bfd_generic_lookup_section_flags |
| #define nlm_bfd_merge_sections bfd_generic_merge_sections |
| #define nlm_bfd_is_group_section bfd_generic_is_group_section |
| #define nlm_bfd_discard_group bfd_generic_discard_group |
| #define nlm_section_already_linked _bfd_generic_section_already_linked |
| #define nlm_bfd_define_common_symbol bfd_generic_define_common_symbol |
| #define nlm_bfd_link_hash_table_create _bfd_generic_link_hash_table_create |
| #define nlm_bfd_link_hash_table_free _bfd_generic_link_hash_table_free |
| #define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols |
| #define nlm_bfd_link_just_syms _bfd_generic_link_just_syms |
| #define nlm_bfd_copy_link_hash_symbol_type \ |
| _bfd_generic_copy_link_hash_symbol_type |
| #define nlm_bfd_final_link _bfd_generic_final_link |
| #define nlm_bfd_link_split_section _bfd_generic_link_split_section |
| |
| /* This structure contains everything that BFD knows about a target. |
| It includes things like its byte order, name, what routines to call |
| to do various operations, etc. Every BFD points to a target structure |
| with its "xvec" member. |
| |
| There are two such structures here: one for big-endian machines and |
| one for little-endian machines. */ |
| |
| /* Forward declaration for use when initialising alternative_target field. */ |
| #ifdef TARGET_LITTLE_SYM |
| extern const bfd_target TARGET_LITTLE_SYM; |
| #endif |
| |
| #ifdef TARGET_BIG_SYM |
| const bfd_target TARGET_BIG_SYM = |
| { |
| /* Name: identify kind of target. */ |
| TARGET_BIG_NAME, |
| |
| /* Flavour: general indication about file. */ |
| bfd_target_nlm_flavour, |
| |
| /* Byteorder: data is big endian. */ |
| BFD_ENDIAN_BIG, |
| |
| /* Header_byteorder: header is also big endian. */ |
| BFD_ENDIAN_BIG, |
| |
| /* Object_flags: mask of all file flags. */ |
| (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS |
| | WP_TEXT), |
| |
| /* Section_flags: mask of all section flags. */ |
| (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY |
| | SEC_CODE | SEC_DATA), |
| |
| /* Leading_symbol_char: is the first char of a user symbol |
| predictable, and if so what is it. */ |
| 0, |
| |
| /* AR_pad_char: pad character for filenames within an archive header |
| FIXME: this really has nothing to do with NLM, this is a characteristic |
| of the archiver and/or os and should be independently tunable. */ |
| '/', |
| |
| /* AR_max_namelen: maximum number of characters in an archive header |
| FIXME: this really has nothing to do with NLM, this is a characteristic |
| of the archiver and should be independently tunable. This value is |
| a WAG (wild a** guess). */ |
| 15, |
| 0, /* match priority. */ |
| |
| /* Routines to byte-swap various sized integers from the data sections. */ |
| bfd_getb64, bfd_getb_signed_64, bfd_putb64, |
| bfd_getb32, bfd_getb_signed_32, bfd_putb32, |
| bfd_getb16, bfd_getb_signed_16, bfd_putb16, |
| |
| /* Routines to byte-swap various sized integers from the file headers. */ |
| bfd_getb64, bfd_getb_signed_64, bfd_putb64, |
| bfd_getb32, bfd_getb_signed_32, bfd_putb32, |
| bfd_getb16, bfd_getb_signed_16, bfd_putb16, |
| |
| /* bfd_check_format: check the format of a file being read. */ |
| { _bfd_dummy_target, /* Unknown format. */ |
| nlmNAME (object_p), /* Assembler/linker output (object file). */ |
| bfd_generic_archive_p, /* An archive. */ |
| nlm_core_file_p /* A core file. */ |
| }, |
| |
| /* bfd_set_format: set the format of a file being written. */ |
| { bfd_false, |
| nlm_mkobject, |
| _bfd_generic_mkarchive, |
| bfd_false |
| }, |
| |
| /* bfd_write_contents: write cached information into a file being written. */ |
| { bfd_false, |
| nlmNAME (write_object_contents), |
| _bfd_write_archive_contents, |
| bfd_false |
| }, |
| |
| /* Initialize a jump table with the standard macro. |
| All names start with "nlm". */ |
| BFD_JUMP_TABLE_GENERIC (_bfd_generic), |
| BFD_JUMP_TABLE_COPY (_bfd_generic), |
| BFD_JUMP_TABLE_CORE (_bfd_nocore), |
| BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), |
| BFD_JUMP_TABLE_SYMBOLS (nlm), |
| BFD_JUMP_TABLE_RELOCS (nlm), |
| BFD_JUMP_TABLE_WRITE (nlm), |
| BFD_JUMP_TABLE_LINK (nlm), |
| BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), |
| |
| /* Alternative endian target. */ |
| #ifdef TARGET_LITTLE_SYM |
| & TARGET_LITTLE_SYM, |
| #else |
| NULL, |
| #endif |
| |
| /* Backend_data. */ |
| (void *) TARGET_BACKEND_DATA |
| }; |
| #endif |
| |
| #ifdef TARGET_LITTLE_SYM |
| const bfd_target TARGET_LITTLE_SYM = |
| { |
| /* Name: identify kind of target. */ |
| TARGET_LITTLE_NAME, |
| |
| /* Flavour: general indication about file. */ |
| bfd_target_nlm_flavour, |
| |
| /* Byteorder: data is little endian. */ |
| BFD_ENDIAN_LITTLE, |
| |
| /* Header_byteorder: header is also little endian. */ |
| BFD_ENDIAN_LITTLE, |
| |
| /* Object_flags: mask of all file flags. */ |
| (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS |
| | WP_TEXT), |
| |
| /* Section_flags: mask of all section flags. */ |
| (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY |
| | SEC_DATA), |
| |
| /* Leading_symbol_char: is the first char of a user symbol |
| predictable, and if so what is it. */ |
| 0, |
| |
| /* AR_pad_char: pad character for filenames within an archive header |
| FIXME: this really has nothing to do with NLM, this is a characteristic |
| of the archiver and/or os and should be independently tunable. */ |
| '/', |
| |
| /* AR_max_namelen: maximum number of characters in an archive header |
| FIXME: this really has nothing to do with NLM, this is a characteristic |
| of the archiver and should be independently tunable. This value is |
| a WAG (wild a** guess). */ |
| 15, |
| 0, /* match priority. */ |
| |
| /* Routines to byte-swap various sized integers from the data sections. */ |
| bfd_getl64, bfd_getl_signed_64, bfd_putl64, |
| bfd_getl32, bfd_getl_signed_32, bfd_putl32, |
| bfd_getl16, bfd_getl_signed_16, bfd_putl16, |
| |
| /* Routines to byte-swap various sized integers from the file headers. */ |
| bfd_getl64, bfd_getl_signed_64, bfd_putl64, |
| bfd_getl32, bfd_getl_signed_32, bfd_putl32, |
| bfd_getl16, bfd_getl_signed_16, bfd_putl16, |
| |
| /* bfd_check_format: check the format of a file being read. */ |
| { _bfd_dummy_target, /* Unknown format. */ |
| nlmNAME(object_p), /* Assembler/linker output (object file). */ |
| bfd_generic_archive_p, /* An archive. */ |
| nlm_core_file_p /* A core file. */ |
| }, |
| |
| /* bfd_set_format: set the format of a file being written. */ |
| { bfd_false, |
| nlm_mkobject, |
| _bfd_generic_mkarchive, |
| bfd_false |
| }, |
| |
| /* bfd_write_contents: write cached information into a file being written. */ |
| { bfd_false, |
| nlmNAME(write_object_contents), |
| _bfd_write_archive_contents, |
| bfd_false |
| }, |
| |
| /* Initialize a jump table with the standard macro. |
| All names start with "nlm". */ |
| BFD_JUMP_TABLE_GENERIC (_bfd_generic), |
| BFD_JUMP_TABLE_COPY (_bfd_generic), |
| BFD_JUMP_TABLE_CORE (_bfd_nocore), |
| BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), |
| BFD_JUMP_TABLE_SYMBOLS (nlm), |
| BFD_JUMP_TABLE_RELOCS (nlm), |
| BFD_JUMP_TABLE_WRITE (nlm), |
| BFD_JUMP_TABLE_LINK (nlm), |
| BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), |
| |
| /* Alternative endian target. */ |
| #ifdef TARGET_BIG_SYM |
| & TARGET_BIG_SYM, |
| #else |
| NULL, |
| #endif |
| |
| /* Backend_data. */ |
| (void *) TARGET_BACKEND_DATA |
| }; |
| #endif |