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