/[gcl]/gcl/binutils/bfd/targets.c
ViewVC logotype

Diff of /gcl/binutils/bfd/targets.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by rlbrk, Sun Feb 22 09:06:07 2004 UTC revision 1.3 by camm, Fri Sep 9 23:32:15 2005 UTC
# Line 1  Line 1 
1  /* Generic target-file-type support for the BFD library.  /* Generic target-file-type support for the BFD library.
2     Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,     Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3     2000, 2001, 2002     2000, 2001, 2002, 2003, 2004, 2005
4     Free Software Foundation, Inc.     Free Software Foundation, Inc.
5     Written by Cygnus Support.     Written by Cygnus Support.
6    
7  This file is part of BFD, the Binary File Descriptor library.     This file is part of BFD, the Binary File Descriptor library.
8    
9  This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
11  the Free Software Foundation; either version 2 of the License, or     the Free Software Foundation; either version 2 of the License, or
12  (at your option) any later version.     (at your option) any later version.
13    
14  This program is distributed in the hope that it will be useful,     This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of     but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.     GNU General Public License for more details.
18    
19  You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software     along with this program; if not, write to the Free Software
21  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
22    
23  #include "bfd.h"  #include "bfd.h"
24  #include "sysdep.h"  #include "sysdep.h"
# Line 26  Foundation, Inc., 59 Temple Place - Suit Line 26  Foundation, Inc., 59 Temple Place - Suit
26  #include "fnmatch.h"  #include "fnmatch.h"
27    
28  /*  /*
29       It's okay to see some:
30    #if 0
31       directives in this source file, as targets.c uses them to exclude
32       certain BFD vectors.  This comment is specially formatted to catch
33       users who grep for ^#if 0, so please keep it this way!
34    */
35    
36    /*
37  SECTION  SECTION
38          Targets          Targets
39    
40  DESCRIPTION  DESCRIPTION
41          Each port of BFD to a different machine requries the creation          Each port of BFD to a different machine requires the creation
42          of a target back end. All the back end provides to the root          of a target back end. All the back end provides to the root
43          part of BFD is a structure containing pointers to functions          part of BFD is a structure containing pointers to functions
44          which perform certain low level operations on files. BFD          which perform certain low level operations on files. BFD
# Line 70  DESCRIPTION Line 78  DESCRIPTION
78          <<bfd_check_format>> on the BFD with a suggested format.          <<bfd_check_format>> on the BFD with a suggested format.
79          If <<target_defaulted>> has been set, each possible target          If <<target_defaulted>> has been set, each possible target
80          type is tried to see if it recognizes the specified format.          type is tried to see if it recognizes the specified format.
81          <<bfd_check_format>> returns <<true>> when the caller guesses right.          <<bfd_check_format>> returns <<TRUE>> when the caller guesses right.
82  @menu  @menu
83  @* bfd_target::  @* bfd_target::
84  @end menu  @end menu
# Line 103  DESCRIPTION Line 111  DESCRIPTION
111          someone wants to fix this and not break the above, please do.          someone wants to fix this and not break the above, please do.
112    
113  .#define BFD_SEND(bfd, message, arglist) \  .#define BFD_SEND(bfd, message, arglist) \
114  .               ((*((bfd)->xvec->message)) arglist)  .  ((*((bfd)->xvec->message)) arglist)
115  .  .
116  .#ifdef DEBUG_BFD_SEND  .#ifdef DEBUG_BFD_SEND
117  .#undef BFD_SEND  .#undef BFD_SEND
# Line 116  DESCRIPTION Line 124  DESCRIPTION
124          For operations which index on the BFD format:          For operations which index on the BFD format:
125    
126  .#define BFD_SEND_FMT(bfd, message, arglist) \  .#define BFD_SEND_FMT(bfd, message, arglist) \
127  .            (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)  .  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
128  .  .
129  .#ifdef DEBUG_BFD_SEND  .#ifdef DEBUG_BFD_SEND
130  .#undef BFD_SEND_FMT  .#undef BFD_SEND_FMT
# Line 156  DESCRIPTION Line 164  DESCRIPTION
164  .  bfd_target_ovax_flavour,  .  bfd_target_ovax_flavour,
165  .  bfd_target_evax_flavour,  .  bfd_target_evax_flavour,
166  .  bfd_target_mmo_flavour,  .  bfd_target_mmo_flavour,
167  .  bfd_target_mach_o_flavour  .  bfd_target_mach_o_flavour,
168    .  bfd_target_pef_flavour,
169    .  bfd_target_pef_xlib_flavour,
170    .  bfd_target_sym_flavour
171  .};  .};
172  .  .
173  .enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };  .enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
# Line 198  DESCRIPTION Line 209  DESCRIPTION
209  .  unsigned short ar_max_namelen;  .  unsigned short ar_max_namelen;
210  .  .
211  .  {* Entries for byte swapping for data. These are different from the  .  {* Entries for byte swapping for data. These are different from the
212  .     other entry points, since they don't take a BFD asthe first argument.  .     other entry points, since they don't take a BFD as the first argument.
213  .     Certain other handlers could do the same.  *}  .     Certain other handlers could do the same.  *}
214  .  bfd_vma        (*bfd_getx64) PARAMS ((const bfd_byte *));  .  bfd_uint64_t   (*bfd_getx64) (const void *);
215  .  bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *));  .  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
216  .  void           (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *));  .  void           (*bfd_putx64) (bfd_uint64_t, void *);
217  .  bfd_vma        (*bfd_getx32) PARAMS ((const bfd_byte *));  .  bfd_vma        (*bfd_getx32) (const void *);
218  .  bfd_signed_vma (*bfd_getx_signed_32) PARAMS ((const bfd_byte *));  .  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
219  .  void           (*bfd_putx32) PARAMS ((bfd_vma, bfd_byte *));  .  void           (*bfd_putx32) (bfd_vma, void *);
220  .  bfd_vma        (*bfd_getx16) PARAMS ((const bfd_byte *));  .  bfd_vma        (*bfd_getx16) (const void *);
221  .  bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((const bfd_byte *));  .  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
222  .  void           (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *));  .  void           (*bfd_putx16) (bfd_vma, void *);
223  .  .
224  .  {* Byte swapping for the headers.  *}  .  {* Byte swapping for the headers.  *}
225  .  bfd_vma        (*bfd_h_getx64) PARAMS ((const bfd_byte *));  .  bfd_uint64_t   (*bfd_h_getx64) (const void *);
226  .  bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((const bfd_byte *));  .  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
227  .  void           (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *));  .  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
228  .  bfd_vma        (*bfd_h_getx32) PARAMS ((const bfd_byte *));  .  bfd_vma        (*bfd_h_getx32) (const void *);
229  .  bfd_signed_vma (*bfd_h_getx_signed_32) PARAMS ((const bfd_byte *));  .  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
230  .  void           (*bfd_h_putx32) PARAMS ((bfd_vma, bfd_byte *));  .  void           (*bfd_h_putx32) (bfd_vma, void *);
231  .  bfd_vma        (*bfd_h_getx16) PARAMS ((const bfd_byte *));  .  bfd_vma        (*bfd_h_getx16) (const void *);
232  .  bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((const bfd_byte *));  .  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
233  .  void           (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *));  .  void           (*bfd_h_putx16) (bfd_vma, void *);
234  .  .
235  .  {* Format dependent routines: these are vectors of entry points  .  {* Format dependent routines: these are vectors of entry points
236  .     within the target vector structure, one for each format to check.  *}  .     within the target vector structure, one for each format to check.  *}
237  .  .
238  .  {* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  *}  .  {* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  *}
239  .  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));  .  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
240  .  .
241  .  {* Set the format of a file being written.  *}  .  {* Set the format of a file being written.  *}
242  .  boolean  (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));  .  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
243  .  .
244  .  {* Write cached information into a file being written, at <<bfd_close>>.  *}  .  {* Write cached information into a file being written, at <<bfd_close>>.  *}
245  .  boolean  (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));  .  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
246  .  .
247  The general target vector.  These vectors are initialized using the  The general target vector.  These vectors are initialized using the
248  BFD_JUMP_TABLE macros.  BFD_JUMP_TABLE macros.
249  .  .
250  .  {* Generic entry points.  *}  .  {* Generic entry points.  *}
 Do not "beautify" the CONCAT* macro args.  Traditional C will not  
 remove whitespace added here, and thus will fail to concatenate  
 the tokens.  
251  .#define BFD_JUMP_TABLE_GENERIC(NAME) \  .#define BFD_JUMP_TABLE_GENERIC(NAME) \
252  .CONCAT2 (NAME,_close_and_cleanup), \  .  NAME##_close_and_cleanup, \
253  .CONCAT2 (NAME,_bfd_free_cached_info), \  .  NAME##_bfd_free_cached_info, \
254  .CONCAT2 (NAME,_new_section_hook), \  .  NAME##_new_section_hook, \
255  .CONCAT2 (NAME,_get_section_contents), \  .  NAME##_get_section_contents, \
256  .CONCAT2 (NAME,_get_section_contents_in_window)  .  NAME##_get_section_contents_in_window
257  .  .
258  .  {* Called when the BFD is being closed to do any necessary cleanup.  *}  .  {* Called when the BFD is being closed to do any necessary cleanup.  *}
259  .  boolean  (*_close_and_cleanup) PARAMS ((bfd *));  .  bfd_boolean (*_close_and_cleanup) (bfd *);
260  .  {* Ask the BFD to free all cached information.  *}  .  {* Ask the BFD to free all cached information.  *}
261  .  boolean  (*_bfd_free_cached_info) PARAMS ((bfd *));  .  bfd_boolean (*_bfd_free_cached_info) (bfd *);
262  .  {* Called when a new section is created.  *}  .  {* Called when a new section is created.  *}
263  .  boolean  (*_new_section_hook) PARAMS ((bfd *, sec_ptr));  .  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
264  .  {* Read the contents of a section.  *}  .  {* Read the contents of a section.  *}
265  .  boolean  (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,  .  bfd_boolean (*_bfd_get_section_contents)
266  .                                                 file_ptr, bfd_size_type));  .    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
267  .  boolean  (*_bfd_get_section_contents_in_window)  .  bfd_boolean (*_bfd_get_section_contents_in_window)
268  .    PARAMS ((bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type));  .    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
269  .  .
270  .  {* Entry points to copy private data.  *}  .  {* Entry points to copy private data.  *}
271  .#define BFD_JUMP_TABLE_COPY(NAME) \  .#define BFD_JUMP_TABLE_COPY(NAME) \
272  .CONCAT2 (NAME,_bfd_copy_private_bfd_data), \  .  NAME##_bfd_copy_private_bfd_data, \
273  .CONCAT2 (NAME,_bfd_merge_private_bfd_data), \  .  NAME##_bfd_merge_private_bfd_data, \
274  .CONCAT2 (NAME,_bfd_copy_private_section_data), \  .  NAME##_bfd_copy_private_section_data, \
275  .CONCAT2 (NAME,_bfd_copy_private_symbol_data), \  .  NAME##_bfd_copy_private_symbol_data, \
276  .CONCAT2 (NAME,_bfd_set_private_flags), \  .  NAME##_bfd_copy_private_header_data, \
277  .CONCAT2 (NAME,_bfd_print_private_bfd_data) \  .  NAME##_bfd_set_private_flags, \
278    .  NAME##_bfd_print_private_bfd_data
279    .
280  .  {* Called to copy BFD general private data from one object file  .  {* Called to copy BFD general private data from one object file
281  .     to another.  *}  .     to another.  *}
282  .  boolean  (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *));  .  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
283  .  {* Called to merge BFD general private data from one object file  .  {* Called to merge BFD general private data from one object file
284  .     to a common output file when linking.  *}  .     to a common output file when linking.  *}
285  .  boolean  (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *));  .  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
286  .  {* Called to copy BFD private section data from one object file  .  {* Called to copy BFD private section data from one object file
287  .     to another.  *}  .     to another.  *}
288  .  boolean  (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,  .  bfd_boolean (*_bfd_copy_private_section_data)
289  .                                                      bfd *, sec_ptr));  .    (bfd *, sec_ptr, bfd *, sec_ptr);
290  .  {* Called to copy BFD private symbol data from one symbol  .  {* Called to copy BFD private symbol data from one symbol
291  .     to another.  *}  .     to another.  *}
292  .  boolean  (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *,  .  bfd_boolean (*_bfd_copy_private_symbol_data)
293  .                                                     bfd *, asymbol *));  .    (bfd *, asymbol *, bfd *, asymbol *);
294    .  {* Called to copy BFD private header data from one object file
295    .     to another.  *}
296    .  bfd_boolean (*_bfd_copy_private_header_data)
297    .    (bfd *, bfd *);
298  .  {* Called to set private backend flags.  *}  .  {* Called to set private backend flags.  *}
299  .  boolean  (*_bfd_set_private_flags) PARAMS ((bfd *, flagword));  .  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
300  .  .
301  .  {* Called to print private BFD data.  *}  .  {* Called to print private BFD data.  *}
302  .  boolean  (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR));  .  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
303  .  .
304  .  {* Core file entry points.  *}  .  {* Core file entry points.  *}
305  .#define BFD_JUMP_TABLE_CORE(NAME) \  .#define BFD_JUMP_TABLE_CORE(NAME) \
306  .CONCAT2 (NAME,_core_file_failing_command), \  .  NAME##_core_file_failing_command, \
307  .CONCAT2 (NAME,_core_file_failing_signal), \  .  NAME##_core_file_failing_signal, \
308  .CONCAT2 (NAME,_core_file_matches_executable_p)  .  NAME##_core_file_matches_executable_p
309  .  char *   (*_core_file_failing_command) PARAMS ((bfd *));  .
310  .  int      (*_core_file_failing_signal) PARAMS ((bfd *));  .  char *      (*_core_file_failing_command) (bfd *);
311  .  boolean  (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *));  .  int         (*_core_file_failing_signal) (bfd *);
312    .  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
313  .  .
314  .  {* Archive entry points.  *}  .  {* Archive entry points.  *}
315  .#define BFD_JUMP_TABLE_ARCHIVE(NAME) \  .#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
316  .CONCAT2 (NAME,_slurp_armap), \  .  NAME##_slurp_armap, \
317  .CONCAT2 (NAME,_slurp_extended_name_table), \  .  NAME##_slurp_extended_name_table, \
318  .CONCAT2 (NAME,_construct_extended_name_table), \  .  NAME##_construct_extended_name_table, \
319  .CONCAT2 (NAME,_truncate_arname), \  .  NAME##_truncate_arname, \
320  .CONCAT2 (NAME,_write_armap), \  .  NAME##_write_armap, \
321  .CONCAT2 (NAME,_read_ar_hdr), \  .  NAME##_read_ar_hdr, \
322  .CONCAT2 (NAME,_openr_next_archived_file), \  .  NAME##_openr_next_archived_file, \
323  .CONCAT2 (NAME,_get_elt_at_index), \  .  NAME##_get_elt_at_index, \
324  .CONCAT2 (NAME,_generic_stat_arch_elt), \  .  NAME##_generic_stat_arch_elt, \
325  .CONCAT2 (NAME,_update_armap_timestamp)  .  NAME##_update_armap_timestamp
326  .  boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));  .
327  .  boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));  .  bfd_boolean (*_bfd_slurp_armap) (bfd *);
328  .  boolean  (*_bfd_construct_extended_name_table)  .  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
329  .    PARAMS ((bfd *, char **, bfd_size_type *, const char **));  .  bfd_boolean (*_bfd_construct_extended_name_table)
330  .  void     (*_bfd_truncate_arname) PARAMS ((bfd *, const char *, char *));  .    (bfd *, char **, bfd_size_type *, const char **);
331  .  boolean  (*write_armap)  .  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
332  .    PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));  .  bfd_boolean (*write_armap)
333  .  PTR      (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));  .    (bfd *, unsigned int, struct orl *, unsigned int, int);
334  .  bfd *    (*openr_next_archived_file) PARAMS ((bfd *, bfd *));  .  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
335  .#define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))  .  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
336  .  bfd *    (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));  .#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
337  .  int      (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));  .  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
338  .  boolean  (*_bfd_update_armap_timestamp) PARAMS ((bfd *));  .  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
339    .  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
340  .  .
341  .  {* Entry points used for symbols.  *}  .  {* Entry points used for symbols.  *}
342  .#define BFD_JUMP_TABLE_SYMBOLS(NAME) \  .#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
343  .CONCAT2 (NAME,_get_symtab_upper_bound), \  .  NAME##_get_symtab_upper_bound, \
344  .CONCAT2 (NAME,_get_symtab), \  .  NAME##_canonicalize_symtab, \
345  .CONCAT2 (NAME,_make_empty_symbol), \  .  NAME##_make_empty_symbol, \
346  .CONCAT2 (NAME,_print_symbol), \  .  NAME##_print_symbol, \
347  .CONCAT2 (NAME,_get_symbol_info), \  .  NAME##_get_symbol_info, \
348  .CONCAT2 (NAME,_bfd_is_local_label_name), \  .  NAME##_bfd_is_local_label_name, \
349  .CONCAT2 (NAME,_get_lineno), \  .  NAME##_bfd_is_target_special_symbol, \
350  .CONCAT2 (NAME,_find_nearest_line), \  .  NAME##_get_lineno, \
351  .CONCAT2 (NAME,_bfd_make_debug_symbol), \  .  NAME##_find_nearest_line, \
352  .CONCAT2 (NAME,_read_minisymbols), \  .  NAME##_bfd_make_debug_symbol, \
353  .CONCAT2 (NAME,_minisymbol_to_symbol)  .  NAME##_read_minisymbols, \
354  .  long     (*_bfd_get_symtab_upper_bound) PARAMS ((bfd *));  .  NAME##_minisymbol_to_symbol
355  .  long     (*_bfd_canonicalize_symtab) PARAMS ((bfd *,  .
356  .                                                struct symbol_cache_entry **));  .  long        (*_bfd_get_symtab_upper_bound) (bfd *);
357  .  struct symbol_cache_entry *  .  long        (*_bfd_canonicalize_symtab)
358  .           (*_bfd_make_empty_symbol) PARAMS ((bfd *));  .    (bfd *, struct bfd_symbol **);
359  .  void     (*_bfd_print_symbol) PARAMS ((bfd *, PTR,  .  struct bfd_symbol *
360  .                                         struct symbol_cache_entry *,  .              (*_bfd_make_empty_symbol) (bfd *);
361  .                                         bfd_print_symbol_type));  .  void        (*_bfd_print_symbol)
362  .#define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e))  .    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
363  .  void     (*_bfd_get_symbol_info) PARAMS ((bfd *,  .#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
364  .                                            struct symbol_cache_entry *,  .  void        (*_bfd_get_symbol_info)
365  .                                            symbol_info *));  .    (bfd *, struct bfd_symbol *, symbol_info *);
366  .#define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e))  .#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
367  .  boolean  (*_bfd_is_local_label_name) PARAMS ((bfd *, const char *));  .  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
368  .  .  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
369  .  alent *  (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *));  .  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
370  .  boolean  (*_bfd_find_nearest_line)  .  bfd_boolean (*_bfd_find_nearest_line)
371  .    PARAMS ((bfd *, struct sec *, struct symbol_cache_entry **, bfd_vma,  .    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
372  .             const char **, const char **, unsigned int *));  .     const char **, const char **, unsigned int *);
373  . {* Back-door to allow format-aware applications to create debug symbols  . {* Back-door to allow format-aware applications to create debug symbols
374  .    while using BFD for everything else.  Currently used by the assembler  .    while using BFD for everything else.  Currently used by the assembler
375  .    when creating COFF files.  *}  .    when creating COFF files.  *}
376  .  asymbol *(*_bfd_make_debug_symbol) PARAMS ((bfd *, void *,  .  asymbol *   (*_bfd_make_debug_symbol)
377  .                                              unsigned long size));  .    (bfd *, void *, unsigned long size);
378  .#define bfd_read_minisymbols(b, d, m, s) \  .#define bfd_read_minisymbols(b, d, m, s) \
379  .  BFD_SEND (b, _read_minisymbols, (b, d, m, s))  .  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
380  .  long     (*_read_minisymbols) PARAMS ((bfd *, boolean, PTR *,  .  long        (*_read_minisymbols)
381  .                                         unsigned int *));  .    (bfd *, bfd_boolean, void **, unsigned int *);
382  .#define bfd_minisymbol_to_symbol(b, d, m, f) \  .#define bfd_minisymbol_to_symbol(b, d, m, f) \
383  .  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))  .  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
384  .  asymbol *(*_minisymbol_to_symbol) PARAMS ((bfd *, boolean, const PTR,  .  asymbol *   (*_minisymbol_to_symbol)
385  .                                             asymbol *));  .    (bfd *, bfd_boolean, const void *, asymbol *);
386  .  .
387  .  {* Routines for relocs.  *}  .  {* Routines for relocs.  *}
388  .#define BFD_JUMP_TABLE_RELOCS(NAME) \  .#define BFD_JUMP_TABLE_RELOCS(NAME) \
389  .CONCAT2 (NAME,_get_reloc_upper_bound), \  .  NAME##_get_reloc_upper_bound, \
390  .CONCAT2 (NAME,_canonicalize_reloc), \  .  NAME##_canonicalize_reloc, \
391  .CONCAT2 (NAME,_bfd_reloc_type_lookup)  .  NAME##_bfd_reloc_type_lookup
392  .  long     (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr));  .
393  .  long     (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **,  .  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
394  .                                               struct symbol_cache_entry **));  .  long        (*_bfd_canonicalize_reloc)
395    .    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
396  .  {* See documentation on reloc types.  *}  .  {* See documentation on reloc types.  *}
397  .  reloc_howto_type *  .  reloc_howto_type *
398  .           (*reloc_type_lookup) PARAMS ((bfd *, bfd_reloc_code_real_type));  .              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
399  .  .
400  .  {* Routines used when writing an object file.  *}  .  {* Routines used when writing an object file.  *}
401  .#define BFD_JUMP_TABLE_WRITE(NAME) \  .#define BFD_JUMP_TABLE_WRITE(NAME) \
402  .CONCAT2 (NAME,_set_arch_mach), \  .  NAME##_set_arch_mach, \
403  .CONCAT2 (NAME,_set_section_contents)  .  NAME##_set_section_contents
404  .  boolean  (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture,  .
405  .                                          unsigned long));  .  bfd_boolean (*_bfd_set_arch_mach)
406  .  boolean  (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR,  .    (bfd *, enum bfd_architecture, unsigned long);
407  .                                                 file_ptr, bfd_size_type));  .  bfd_boolean (*_bfd_set_section_contents)
408    .    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
409  .  .
410  .  {* Routines used by the linker.  *}  .  {* Routines used by the linker.  *}
411  .#define BFD_JUMP_TABLE_LINK(NAME) \  .#define BFD_JUMP_TABLE_LINK(NAME) \
412  .CONCAT2 (NAME,_sizeof_headers), \  .  NAME##_sizeof_headers, \
413  .CONCAT2 (NAME,_bfd_get_relocated_section_contents), \  .  NAME##_bfd_get_relocated_section_contents, \
414  .CONCAT2 (NAME,_bfd_relax_section), \  .  NAME##_bfd_relax_section, \
415  .CONCAT2 (NAME,_bfd_link_hash_table_create), \  .  NAME##_bfd_link_hash_table_create, \
416  .CONCAT2 (NAME,_bfd_link_hash_table_free), \  .  NAME##_bfd_link_hash_table_free, \
417  .CONCAT2 (NAME,_bfd_link_add_symbols), \  .  NAME##_bfd_link_add_symbols, \
418  .CONCAT2 (NAME,_bfd_link_just_syms), \  .  NAME##_bfd_link_just_syms, \
419  .CONCAT2 (NAME,_bfd_final_link), \  .  NAME##_bfd_final_link, \
420  .CONCAT2 (NAME,_bfd_link_split_section), \  .  NAME##_bfd_link_split_section, \
421  .CONCAT2 (NAME,_bfd_gc_sections), \  .  NAME##_bfd_gc_sections, \
422  .CONCAT2 (NAME,_bfd_merge_sections), \  .  NAME##_bfd_merge_sections, \
423  .CONCAT2 (NAME,_bfd_discard_group)  .  NAME##_bfd_is_group_section, \
424  .  int      (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean));  .  NAME##_bfd_discard_group, \
425  .  bfd_byte *(*_bfd_get_relocated_section_contents)  .  NAME##_section_already_linked \
426  .    PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *,  .
427  .             bfd_byte *, boolean, struct symbol_cache_entry **));  .  int         (*_bfd_sizeof_headers) (bfd *, bfd_boolean);
428    .  bfd_byte *  (*_bfd_get_relocated_section_contents)
429    .    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
430    .     bfd_byte *, bfd_boolean, struct bfd_symbol **);
431  .  .
432  .  boolean  (*_bfd_relax_section)  .  bfd_boolean (*_bfd_relax_section)
433  .    PARAMS ((bfd *, struct sec *, struct bfd_link_info *, boolean *));  .    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
434  .  .
435  .  {* Create a hash table for the linker.  Different backends store  .  {* Create a hash table for the linker.  Different backends store
436  .     different information in this table.  *}  .     different information in this table.  *}
437  .  struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *));  .  struct bfd_link_hash_table *
438    .              (*_bfd_link_hash_table_create) (bfd *);
439  .  .
440  .  {* Release the memory associated with the linker hash table.  *}  .  {* Release the memory associated with the linker hash table.  *}
441  .  void (*_bfd_link_hash_table_free) PARAMS ((struct bfd_link_hash_table *));  .  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
442  .  .
443  .  {* Add symbols from this object file into the hash table.  *}  .  {* Add symbols from this object file into the hash table.  *}
444  .  boolean  (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *));  .  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
445  .  .
446  .  {* Indicate that we are only retrieving symbol values from this section.  *}  .  {* Indicate that we are only retrieving symbol values from this section.  *}
447  .  void     (*_bfd_link_just_syms) PARAMS ((asection *, struct bfd_link_info *));  .  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
448  .  .
449  .  {* Do a link based on the link_order structures attached to each  .  {* Do a link based on the link_order structures attached to each
450  .     section of the BFD.  *}  .     section of the BFD.  *}
451  .  boolean  (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *));  .  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
452  .  .
453  .  {* Should this section be split up into smaller pieces during linking.  *}  .  {* Should this section be split up into smaller pieces during linking.  *}
454  .  boolean  (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *));  .  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
455  .  .
456  .  {* Remove sections that are not referenced from the output.  *}  .  {* Remove sections that are not referenced from the output.  *}
457  .  boolean  (*_bfd_gc_sections) PARAMS ((bfd *, struct bfd_link_info *));  .  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
458  .  .
459  .  {* Attempt to merge SEC_MERGE sections.  *}  .  {* Attempt to merge SEC_MERGE sections.  *}
460  .  boolean  (*_bfd_merge_sections) PARAMS ((bfd *, struct bfd_link_info *));  .  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
461    .
462    .  {* Is this section a member of a group?  *}
463    .  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
464  .  .
465  .  {* Discard members of a group.  *}  .  {* Discard members of a group.  *}
466  .  boolean  (*_bfd_discard_group) PARAMS ((bfd *, struct sec *));  .  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
467    .
468    .  {* Check if SEC has been already linked during a reloceatable or
469    .     final link.  *}
470    .  void (*_section_already_linked) (bfd *, struct bfd_section *);
471  .  .
472  .  {* Routines to handle dynamic symbols and relocs.  *}  .  {* Routines to handle dynamic symbols and relocs.  *}
473  .#define BFD_JUMP_TABLE_DYNAMIC(NAME) \  .#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
474  .CONCAT2 (NAME,_get_dynamic_symtab_upper_bound), \  .  NAME##_get_dynamic_symtab_upper_bound, \
475  .CONCAT2 (NAME,_canonicalize_dynamic_symtab), \  .  NAME##_canonicalize_dynamic_symtab, \
476  .CONCAT2 (NAME,_get_dynamic_reloc_upper_bound), \  .  NAME##_get_synthetic_symtab, \
477  .CONCAT2 (NAME,_canonicalize_dynamic_reloc)  .  NAME##_get_dynamic_reloc_upper_bound, \
478    .  NAME##_canonicalize_dynamic_reloc
479    .
480  .  {* Get the amount of memory required to hold the dynamic symbols.  *}  .  {* Get the amount of memory required to hold the dynamic symbols.  *}
481  .  long     (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *));  .  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
482  .  {* Read in the dynamic symbols.  *}  .  {* Read in the dynamic symbols.  *}
483  .  long     (*_bfd_canonicalize_dynamic_symtab)  .  long        (*_bfd_canonicalize_dynamic_symtab)
484  .    PARAMS ((bfd *, struct symbol_cache_entry **));  .    (bfd *, struct bfd_symbol **);
485    .  {* Create synthetized symbols.  *}
486    .  long        (*_bfd_get_synthetic_symtab)
487    .    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
488    .     struct bfd_symbol **);
489  .  {* Get the amount of memory required to hold the dynamic relocs.  *}  .  {* Get the amount of memory required to hold the dynamic relocs.  *}
490  .  long     (*_bfd_get_dynamic_reloc_upper_bound) PARAMS ((bfd *));  .  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
491  .  {* Read in the dynamic relocs.  *}  .  {* Read in the dynamic relocs.  *}
492  .  long     (*_bfd_canonicalize_dynamic_reloc)  .  long        (*_bfd_canonicalize_dynamic_reloc)
493  .    PARAMS ((bfd *, arelent **, struct symbol_cache_entry **));  .    (bfd *, arelent **, struct bfd_symbol **);
494  .  .
495    
496  A pointer to an alternative bfd_target in case the current one is not  A pointer to an alternative bfd_target in case the current one is not
# Line 470  to find an alternative output format tha Line 505  to find an alternative output format tha
505    
506  .  {* Data for use by back-end routines, which isn't  .  {* Data for use by back-end routines, which isn't
507  .     generic enough to belong in this structure.  *}  .     generic enough to belong in this structure.  *}
508  .  PTR backend_data;  .  const void *backend_data;
509  .  .
510  .} bfd_target;  .} bfd_target;
511  .  .
# Line 507  extern const bfd_target bfd_efi_app_ia64 Line 542  extern const bfd_target bfd_efi_app_ia64
542  extern const bfd_target bfd_elf32_avr_vec;  extern const bfd_target bfd_elf32_avr_vec;
543  extern const bfd_target bfd_elf32_big_generic_vec;  extern const bfd_target bfd_elf32_big_generic_vec;
544  extern const bfd_target bfd_elf32_bigarc_vec;  extern const bfd_target bfd_elf32_bigarc_vec;
 extern const bfd_target bfd_elf32_bigarm_oabi_vec;  
545  extern const bfd_target bfd_elf32_bigarm_vec;  extern const bfd_target bfd_elf32_bigarm_vec;
546    extern const bfd_target bfd_elf32_bigarm_symbian_vec;
547    extern const bfd_target bfd_elf32_bigarm_vxworks_vec;
548  extern const bfd_target bfd_elf32_bigmips_vec;  extern const bfd_target bfd_elf32_bigmips_vec;
549    extern const bfd_target bfd_elf32_cr16c_vec;
550  extern const bfd_target bfd_elf32_cris_vec;  extern const bfd_target bfd_elf32_cris_vec;
551    extern const bfd_target bfd_elf32_crx_vec;
552  extern const bfd_target bfd_elf32_d10v_vec;  extern const bfd_target bfd_elf32_d10v_vec;
553  extern const bfd_target bfd_elf32_d30v_vec;  extern const bfd_target bfd_elf32_d30v_vec;
554  extern const bfd_target bfd_elf32_dlx_big_vec;  extern const bfd_target bfd_elf32_dlx_big_vec;
555  extern const bfd_target bfd_elf32_fr30_vec;  extern const bfd_target bfd_elf32_fr30_vec;
556  extern const bfd_target bfd_elf32_frv_vec;  extern const bfd_target bfd_elf32_frv_vec;
557    extern const bfd_target bfd_elf32_frvfdpic_vec;
558  extern const bfd_target bfd_elf32_h8300_vec;  extern const bfd_target bfd_elf32_h8300_vec;
559  extern const bfd_target bfd_elf32_hppa_linux_vec;  extern const bfd_target bfd_elf32_hppa_linux_vec;
560    extern const bfd_target bfd_elf32_hppa_nbsd_vec;
561  extern const bfd_target bfd_elf32_hppa_vec;  extern const bfd_target bfd_elf32_hppa_vec;
562  extern const bfd_target bfd_elf32_i370_vec;  extern const bfd_target bfd_elf32_i370_vec;
563    extern const bfd_target bfd_elf32_i386_freebsd_vec;
564  extern const bfd_target bfd_elf32_i386_vec;  extern const bfd_target bfd_elf32_i386_vec;
 extern const bfd_target bfd_elf32_i386qnx_vec;  
565  extern const bfd_target bfd_elf32_i860_little_vec;  extern const bfd_target bfd_elf32_i860_little_vec;
566  extern const bfd_target bfd_elf32_i860_vec;  extern const bfd_target bfd_elf32_i860_vec;
567  extern const bfd_target bfd_elf32_i960_vec;  extern const bfd_target bfd_elf32_i960_vec;
568  extern const bfd_target bfd_elf32_ia64_big_vec;  extern const bfd_target bfd_elf32_ia64_big_vec;
569  extern const bfd_target bfd_elf32_ia64_hpux_big_vec;  extern const bfd_target bfd_elf32_ia64_hpux_big_vec;
570  extern const bfd_target bfd_elf32_ip2k_vec;  extern const bfd_target bfd_elf32_ip2k_vec;
571    extern const bfd_target bfd_elf32_iq2000_vec;
572  extern const bfd_target bfd_elf32_little_generic_vec;  extern const bfd_target bfd_elf32_little_generic_vec;
573  extern const bfd_target bfd_elf32_littlearc_vec;  extern const bfd_target bfd_elf32_littlearc_vec;
 extern const bfd_target bfd_elf32_littlearm_oabi_vec;  
574  extern const bfd_target bfd_elf32_littlearm_vec;  extern const bfd_target bfd_elf32_littlearm_vec;
575    extern const bfd_target bfd_elf32_littlearm_symbian_vec;
576    extern const bfd_target bfd_elf32_littlearm_vxworks_vec;
577  extern const bfd_target bfd_elf32_littlemips_vec;  extern const bfd_target bfd_elf32_littlemips_vec;
578  extern const bfd_target bfd_elf32_m32r_vec;  extern const bfd_target bfd_elf32_m32r_vec;
579    extern const bfd_target bfd_elf32_m32rle_vec;
580    extern const bfd_target bfd_elf32_m32rlin_vec;
581    extern const bfd_target bfd_elf32_m32rlelin_vec;
582  extern const bfd_target bfd_elf32_m68hc11_vec;  extern const bfd_target bfd_elf32_m68hc11_vec;
583  extern const bfd_target bfd_elf32_m68hc12_vec;  extern const bfd_target bfd_elf32_m68hc12_vec;
584  extern const bfd_target bfd_elf32_m68k_vec;  extern const bfd_target bfd_elf32_m68k_vec;
# Line 542  extern const bfd_target bfd_elf32_mcore_ Line 587  extern const bfd_target bfd_elf32_mcore_
587  extern const bfd_target bfd_elf32_mcore_little_vec;  extern const bfd_target bfd_elf32_mcore_little_vec;
588  extern const bfd_target bfd_elf32_mn10200_vec;  extern const bfd_target bfd_elf32_mn10200_vec;
589  extern const bfd_target bfd_elf32_mn10300_vec;  extern const bfd_target bfd_elf32_mn10300_vec;
590    extern const bfd_target bfd_elf32_msp430_vec;
591    extern const bfd_target bfd_elf32_nbigmips_vec;
592    extern const bfd_target bfd_elf32_nlittlemips_vec;
593    extern const bfd_target bfd_elf32_ntradbigmips_vec;
594    extern const bfd_target bfd_elf32_ntradlittlemips_vec;
595  extern const bfd_target bfd_elf32_openrisc_vec;  extern const bfd_target bfd_elf32_openrisc_vec;
596  extern const bfd_target bfd_elf32_or32_big_vec;  extern const bfd_target bfd_elf32_or32_big_vec;
597  extern const bfd_target bfd_elf32_pj_vec;  extern const bfd_target bfd_elf32_pj_vec;
# Line 551  extern const bfd_target bfd_elf32_powerp Line 601  extern const bfd_target bfd_elf32_powerp
601  extern const bfd_target bfd_elf32_s390_vec;  extern const bfd_target bfd_elf32_s390_vec;
602  extern const bfd_target bfd_elf32_sh64_vec;  extern const bfd_target bfd_elf32_sh64_vec;
603  extern const bfd_target bfd_elf32_sh64l_vec;  extern const bfd_target bfd_elf32_sh64l_vec;
604    extern const bfd_target bfd_elf32_sh64lin_vec;
605    extern const bfd_target bfd_elf32_sh64blin_vec;
606  extern const bfd_target bfd_elf32_sh64lnbsd_vec;  extern const bfd_target bfd_elf32_sh64lnbsd_vec;
607  extern const bfd_target bfd_elf32_sh64nbsd_vec;  extern const bfd_target bfd_elf32_sh64nbsd_vec;
608  extern const bfd_target bfd_elf32_sh_vec;  extern const bfd_target bfd_elf32_sh_vec;
609  extern const bfd_target bfd_elf32_shblin_vec;  extern const bfd_target bfd_elf32_shblin_vec;
610  extern const bfd_target bfd_elf32_shl_vec;  extern const bfd_target bfd_elf32_shl_vec;
611    extern const bfd_target bfd_elf32_shl_symbian_vec;
612  extern const bfd_target bfd_elf32_shlin_vec;  extern const bfd_target bfd_elf32_shlin_vec;
613  extern const bfd_target bfd_elf32_shlnbsd_vec;  extern const bfd_target bfd_elf32_shlnbsd_vec;
614  extern const bfd_target bfd_elf32_shnbsd_vec;  extern const bfd_target bfd_elf32_shnbsd_vec;
# Line 566  extern const bfd_target bfd_elf32_us_cri Line 619  extern const bfd_target bfd_elf32_us_cri
619  extern const bfd_target bfd_elf32_v850_vec;  extern const bfd_target bfd_elf32_v850_vec;
620  extern const bfd_target bfd_elf32_vax_vec;  extern const bfd_target bfd_elf32_vax_vec;
621  extern const bfd_target bfd_elf32_xstormy16_vec;  extern const bfd_target bfd_elf32_xstormy16_vec;
622    extern const bfd_target bfd_elf32_xtensa_be_vec;
623    extern const bfd_target bfd_elf32_xtensa_le_vec;
624    extern const bfd_target bfd_elf64_alpha_freebsd_vec;
625  extern const bfd_target bfd_elf64_alpha_vec;  extern const bfd_target bfd_elf64_alpha_vec;
626  extern const bfd_target bfd_elf64_big_generic_vec;  extern const bfd_target bfd_elf64_big_generic_vec;
627  extern const bfd_target bfd_elf64_bigmips_vec;  extern const bfd_target bfd_elf64_bigmips_vec;
628  extern const bfd_target bfd_elf64_hppa_linux_vec;  extern const bfd_target bfd_elf64_hppa_linux_vec;
629  extern const bfd_target bfd_elf64_hppa_vec;  extern const bfd_target bfd_elf64_hppa_vec;
 extern const bfd_target bfd_elf64_ia64_aix_big_vec;  
 extern const bfd_target bfd_elf64_ia64_aix_little_vec;  
630  extern const bfd_target bfd_elf64_ia64_big_vec;  extern const bfd_target bfd_elf64_ia64_big_vec;
631  extern const bfd_target bfd_elf64_ia64_hpux_big_vec;  extern const bfd_target bfd_elf64_ia64_hpux_big_vec;
632  extern const bfd_target bfd_elf64_ia64_little_vec;  extern const bfd_target bfd_elf64_ia64_little_vec;
# Line 584  extern const bfd_target bfd_elf64_powerp Line 638  extern const bfd_target bfd_elf64_powerp
638  extern const bfd_target bfd_elf64_s390_vec;  extern const bfd_target bfd_elf64_s390_vec;
639  extern const bfd_target bfd_elf64_sh64_vec;  extern const bfd_target bfd_elf64_sh64_vec;
640  extern const bfd_target bfd_elf64_sh64l_vec;  extern const bfd_target bfd_elf64_sh64l_vec;
641    extern const bfd_target bfd_elf64_sh64lin_vec;
642    extern const bfd_target bfd_elf64_sh64blin_vec;
643  extern const bfd_target bfd_elf64_sh64lnbsd_vec;  extern const bfd_target bfd_elf64_sh64lnbsd_vec;
644  extern const bfd_target bfd_elf64_sh64nbsd_vec;  extern const bfd_target bfd_elf64_sh64nbsd_vec;
645  extern const bfd_target bfd_elf64_sparc_vec;  extern const bfd_target bfd_elf64_sparc_vec;
# Line 637  extern const bfd_target m68knetbsd_vec; Line 693  extern const bfd_target m68knetbsd_vec;
693  extern const bfd_target m68ksysvcoff_vec;  extern const bfd_target m68ksysvcoff_vec;
694  extern const bfd_target m88kbcs_vec;  extern const bfd_target m88kbcs_vec;
695  extern const bfd_target m88kmach3_vec;  extern const bfd_target m88kmach3_vec;
696    extern const bfd_target m88kopenbsd_vec;
697  extern const bfd_target mach_o_be_vec;  extern const bfd_target mach_o_be_vec;
698  extern const bfd_target mach_o_le_vec;  extern const bfd_target mach_o_le_vec;
699  extern const bfd_target mach_o_fat_vec;  extern const bfd_target mach_o_fat_vec;
700    extern const bfd_target maxqcoff_vec;
701  extern const bfd_target mcore_pe_big_vec;  extern const bfd_target mcore_pe_big_vec;
702  extern const bfd_target mcore_pe_little_vec;  extern const bfd_target mcore_pe_little_vec;
703  extern const bfd_target mcore_pei_big_vec;  extern const bfd_target mcore_pei_big_vec;
# Line 656  extern const bfd_target or32coff_big_vec Line 714  extern const bfd_target or32coff_big_vec
714  extern const bfd_target pc532machaout_vec;  extern const bfd_target pc532machaout_vec;
715  extern const bfd_target pc532netbsd_vec;  extern const bfd_target pc532netbsd_vec;
716  extern const bfd_target pdp11_aout_vec;  extern const bfd_target pdp11_aout_vec;
717    extern const bfd_target pef_vec;
718    extern const bfd_target pef_xlib_vec;
719  extern const bfd_target pmac_xcoff_vec;  extern const bfd_target pmac_xcoff_vec;
720  extern const bfd_target ppcboot_vec;  extern const bfd_target ppcboot_vec;
721  extern const bfd_target riscix_vec;  extern const bfd_target riscix_vec;
# Line 675  extern const bfd_target sparclynx_aout_v Line 735  extern const bfd_target sparclynx_aout_v
735  extern const bfd_target sparclynx_coff_vec;  extern const bfd_target sparclynx_coff_vec;
736  extern const bfd_target sparcnetbsd_vec;  extern const bfd_target sparcnetbsd_vec;
737  extern const bfd_target sunos_big_vec;  extern const bfd_target sunos_big_vec;
738    extern const bfd_target sym_vec;
739  extern const bfd_target tic30_aout_vec;  extern const bfd_target tic30_aout_vec;
740  extern const bfd_target tic30_coff_vec;  extern const bfd_target tic30_coff_vec;
741    extern const bfd_target tic4x_coff0_beh_vec;
742    extern const bfd_target tic4x_coff0_vec;
743    extern const bfd_target tic4x_coff1_beh_vec;
744    extern const bfd_target tic4x_coff1_vec;
745    extern const bfd_target tic4x_coff2_beh_vec;
746    extern const bfd_target tic4x_coff2_vec;
747  extern const bfd_target tic54x_coff0_beh_vec;  extern const bfd_target tic54x_coff0_beh_vec;
748  extern const bfd_target tic54x_coff0_vec;  extern const bfd_target tic54x_coff0_vec;
749  extern const bfd_target tic54x_coff1_beh_vec;  extern const bfd_target tic54x_coff1_beh_vec;
# Line 714  extern const bfd_target ptrace_core_vec; Line 781  extern const bfd_target ptrace_core_vec;
781  extern const bfd_target sco5_core_vec;  extern const bfd_target sco5_core_vec;
782  extern const bfd_target trad_core_vec;  extern const bfd_target trad_core_vec;
783    
784    extern const bfd_target bfd_elf32_am33lin_vec;
785  static const bfd_target * const _bfd_target_vector[] = {  static const bfd_target * const _bfd_target_vector[] = {
786    
787  #ifdef SELECT_VECS  #ifdef SELECT_VECS
# Line 738  static const bfd_target * const _bfd_tar Line 806  static const bfd_target * const _bfd_tar
806  #endif  #endif
807          &aout0_big_vec,          &aout0_big_vec,
808  #if 0  #if 0
809          /* We have no way of distinguishing these from other a.out variants */          /* We have no way of distinguishing these from other a.out variants.  */
810          &aout_arm_big_vec,          &aout_arm_big_vec,
811          &aout_arm_little_vec,          &aout_arm_little_vec,
812          /* No one seems to use this.  */          /* No one seems to use this.  */
# Line 773  static const bfd_target * const _bfd_tar Line 841  static const bfd_target * const _bfd_tar
841             the file even if we don't recognize the machine type.  */             the file even if we don't recognize the machine type.  */
842          &bfd_elf32_big_generic_vec,          &bfd_elf32_big_generic_vec,
843          &bfd_elf32_bigarc_vec,          &bfd_elf32_bigarc_vec,
         &bfd_elf32_bigarm_oabi_vec,  
844          &bfd_elf32_bigarm_vec,          &bfd_elf32_bigarm_vec,
845            &bfd_elf32_bigarm_symbian_vec,
846            &bfd_elf32_bigarm_vxworks_vec,
847          &bfd_elf32_bigmips_vec,          &bfd_elf32_bigmips_vec,
848            &bfd_elf32_cr16c_vec,
849          &bfd_elf32_cris_vec,          &bfd_elf32_cris_vec,
850            &bfd_elf32_crx_vec,
851          &bfd_elf32_d10v_vec,          &bfd_elf32_d10v_vec,
852          &bfd_elf32_d30v_vec,          &bfd_elf32_d30v_vec,
853          &bfd_elf32_dlx_big_vec,          &bfd_elf32_dlx_big_vec,
854          &bfd_elf32_fr30_vec,          &bfd_elf32_fr30_vec,
855          &bfd_elf32_frv_vec,          &bfd_elf32_frv_vec,
856            &bfd_elf32_frvfdpic_vec,
857          &bfd_elf32_h8300_vec,          &bfd_elf32_h8300_vec,
858          &bfd_elf32_hppa_linux_vec,          &bfd_elf32_hppa_linux_vec,
859            &bfd_elf32_hppa_nbsd_vec,
860          &bfd_elf32_hppa_vec,          &bfd_elf32_hppa_vec,
861          &bfd_elf32_i370_vec,          &bfd_elf32_i370_vec,
862            &bfd_elf32_i386_freebsd_vec,
863          &bfd_elf32_i386_vec,          &bfd_elf32_i386_vec,
         &bfd_elf32_i386qnx_vec,  
864          &bfd_elf32_i860_little_vec,          &bfd_elf32_i860_little_vec,
865          &bfd_elf32_i860_vec,          &bfd_elf32_i860_vec,
866          &bfd_elf32_i960_vec,          &bfd_elf32_i960_vec,
# Line 796  static const bfd_target * const _bfd_tar Line 869  static const bfd_target * const _bfd_tar
869  #endif  #endif
870          &bfd_elf32_ia64_hpux_big_vec,          &bfd_elf32_ia64_hpux_big_vec,
871          &bfd_elf32_ip2k_vec,          &bfd_elf32_ip2k_vec,
872            &bfd_elf32_iq2000_vec,
873          &bfd_elf32_little_generic_vec,          &bfd_elf32_little_generic_vec,
874          &bfd_elf32_littlearc_vec,          &bfd_elf32_littlearc_vec,
         &bfd_elf32_littlearm_oabi_vec,  
875          &bfd_elf32_littlearm_vec,          &bfd_elf32_littlearm_vec,
876            &bfd_elf32_littlearm_symbian_vec,
877            &bfd_elf32_littlearm_vxworks_vec,
878          &bfd_elf32_littlemips_vec,          &bfd_elf32_littlemips_vec,
879          &bfd_elf32_m32r_vec,          &bfd_elf32_m32r_vec,
880            &bfd_elf32_m32rle_vec,
881            &bfd_elf32_m32rlin_vec,
882            &bfd_elf32_m32rlelin_vec,
883          &bfd_elf32_m68hc11_vec,          &bfd_elf32_m68hc11_vec,
884          &bfd_elf32_m68hc12_vec,          &bfd_elf32_m68hc12_vec,
885          &bfd_elf32_m68k_vec,          &bfd_elf32_m68k_vec,
# Line 810  static const bfd_target * const _bfd_tar Line 888  static const bfd_target * const _bfd_tar
888          &bfd_elf32_mcore_little_vec,          &bfd_elf32_mcore_little_vec,
889          &bfd_elf32_mn10200_vec,          &bfd_elf32_mn10200_vec,
890          &bfd_elf32_mn10300_vec,          &bfd_elf32_mn10300_vec,
891            &bfd_elf32_msp430_vec,
892    #ifdef BFD64
893            &bfd_elf32_nbigmips_vec,
894            &bfd_elf32_nlittlemips_vec,
895            &bfd_elf32_ntradbigmips_vec,
896            &bfd_elf32_ntradlittlemips_vec,
897    #endif
898          &bfd_elf32_openrisc_vec,          &bfd_elf32_openrisc_vec,
899          &bfd_elf32_or32_big_vec,          &bfd_elf32_or32_big_vec,
900          &bfd_elf32_pj_vec,          &bfd_elf32_pj_vec,
# Line 820  static const bfd_target * const _bfd_tar Line 905  static const bfd_target * const _bfd_tar
905          &bfd_elf32_sh_vec,          &bfd_elf32_sh_vec,
906          &bfd_elf32_shblin_vec,          &bfd_elf32_shblin_vec,
907          &bfd_elf32_shl_vec,          &bfd_elf32_shl_vec,
908            &bfd_elf32_shl_symbian_vec,
909          &bfd_elf32_shlin_vec,          &bfd_elf32_shlin_vec,
910          &bfd_elf32_shlnbsd_vec,          &bfd_elf32_shlnbsd_vec,
911          &bfd_elf32_shnbsd_vec,          &bfd_elf32_shnbsd_vec,
# Line 828  static const bfd_target * const _bfd_tar Line 914  static const bfd_target * const _bfd_tar
914          &bfd_elf32_sh64l_vec,          &bfd_elf32_sh64l_vec,
915          &bfd_elf32_sh64lnbsd_vec,          &bfd_elf32_sh64lnbsd_vec,
916          &bfd_elf32_sh64nbsd_vec,          &bfd_elf32_sh64nbsd_vec,
917            &bfd_elf32_sh64lin_vec,
918            &bfd_elf32_sh64blin_vec,
919  #endif  #endif
920          &bfd_elf32_sparc_vec,          &bfd_elf32_sparc_vec,
921          &bfd_elf32_tradbigmips_vec,          &bfd_elf32_tradbigmips_vec,
# Line 836  static const bfd_target * const _bfd_tar Line 924  static const bfd_target * const _bfd_tar
924          &bfd_elf32_v850_vec,          &bfd_elf32_v850_vec,
925          &bfd_elf32_vax_vec,          &bfd_elf32_vax_vec,
926          &bfd_elf32_xstormy16_vec,          &bfd_elf32_xstormy16_vec,
927            &bfd_elf32_xtensa_be_vec,
928            &bfd_elf32_xtensa_le_vec,
929  #ifdef BFD64  #ifdef BFD64
930            &bfd_elf64_alpha_freebsd_vec,
931          &bfd_elf64_alpha_vec,          &bfd_elf64_alpha_vec,
932          &bfd_elf64_big_generic_vec,          &bfd_elf64_big_generic_vec,
933          &bfd_elf64_bigmips_vec,          &bfd_elf64_bigmips_vec,
934          &bfd_elf64_hppa_linux_vec,          &bfd_elf64_hppa_linux_vec,
935          &bfd_elf64_hppa_vec,          &bfd_elf64_hppa_vec,
         &bfd_elf64_ia64_aix_big_vec,  
         &bfd_elf64_ia64_aix_little_vec,  
936          &bfd_elf64_ia64_big_vec,          &bfd_elf64_ia64_big_vec,
937          &bfd_elf64_ia64_hpux_big_vec,          &bfd_elf64_ia64_hpux_big_vec,
938          &bfd_elf64_ia64_little_vec,          &bfd_elf64_ia64_little_vec,
# Line 857  static const bfd_target * const _bfd_tar Line 946  static const bfd_target * const _bfd_tar
946          &bfd_elf64_sh64l_vec,          &bfd_elf64_sh64l_vec,
947          &bfd_elf64_sh64lnbsd_vec,          &bfd_elf64_sh64lnbsd_vec,
948          &bfd_elf64_sh64nbsd_vec,          &bfd_elf64_sh64nbsd_vec,
949  #if 0          &bfd_elf64_sh64lin_vec,
950            &bfd_elf64_sh64blin_vec,
951          &bfd_elf64_sparc_vec,          &bfd_elf64_sparc_vec,
 #endif  
952          &bfd_elf64_tradbigmips_vec,          &bfd_elf64_tradbigmips_vec,
953          &bfd_elf64_tradlittlemips_vec,          &bfd_elf64_tradlittlemips_vec,
954          &bfd_elf64_x86_64_vec,          &bfd_elf64_x86_64_vec,
# Line 871  static const bfd_target * const _bfd_tar Line 960  static const bfd_target * const _bfd_tar
960          &bfd_powerpcle_pei_vec,          &bfd_powerpcle_pei_vec,
961          &cris_aout_vec,          &cris_aout_vec,
962  #ifdef BFD64  #ifdef BFD64
963          &demo_64_vec,   /* Only compiled if host has long-long support */          &demo_64_vec,   /* Only compiled if host has long-long support.  */
964  #endif  #endif
965          &ecoff_big_vec,          &ecoff_big_vec,
966          &ecoff_biglittle_vec,          &ecoff_biglittle_vec,
# Line 935  static const bfd_target * const _bfd_tar Line 1024  static const bfd_target * const _bfd_tar
1024          &m68ksysvcoff_vec,          &m68ksysvcoff_vec,
1025          &m88kbcs_vec,          &m88kbcs_vec,
1026          &m88kmach3_vec,          &m88kmach3_vec,
1027            &m88kopenbsd_vec,
1028          &mach_o_be_vec,          &mach_o_be_vec,
1029          &mach_o_le_vec,          &mach_o_le_vec,
1030          &mach_o_fat_vec,          &mach_o_fat_vec,
1031            &maxqcoff_vec,
1032          &mcore_pe_big_vec,          &mcore_pe_big_vec,
1033          &mcore_pe_little_vec,          &mcore_pe_little_vec,
1034          &mcore_pei_big_vec,          &mcore_pei_big_vec,
# Line 965  static const bfd_target * const _bfd_tar Line 1056  static const bfd_target * const _bfd_tar
1056          &pc532machaout_vec,          &pc532machaout_vec,
1057          &pc532netbsd_vec,          &pc532netbsd_vec,
1058          &pdp11_aout_vec,          &pdp11_aout_vec,
1059            &pef_vec,
1060            &pef_xlib_vec,
1061  #if 0  #if 0
1062          /* This has the same magic number as RS/6000.  */          /* This has the same magic number as RS/6000.  */
1063          &pmac_xcoff_vec,          &pmac_xcoff_vec,
1064  #endif  #endif
1065          &ppcboot_vec,          &ppcboot_vec,
1066  #if 0  #if 0
1067          /* We have no way of distinguishing these from other a.out variants */          /* We have no way of distinguishing these from other a.out variants.  */
1068          &riscix_vec,          &riscix_vec,
1069  #endif  #endif
1070  #ifdef BFD64  #ifdef BFD64
# Line 994  static const bfd_target * const _bfd_tar Line 1087  static const bfd_target * const _bfd_tar
1087          &sparclynx_coff_vec,          &sparclynx_coff_vec,
1088          &sparcnetbsd_vec,          &sparcnetbsd_vec,
1089          &sunos_big_vec,          &sunos_big_vec,
1090            &sym_vec,
1091          &tic30_aout_vec,          &tic30_aout_vec,
1092          &tic30_coff_vec,          &tic30_coff_vec,
1093          &tic54x_coff0_beh_vec,          &tic54x_coff0_beh_vec,
# Line 1014  static const bfd_target * const _bfd_tar Line 1108  static const bfd_target * const _bfd_tar
1108          &w65_vec,          &w65_vec,
1109          &we32kcoff_vec,          &we32kcoff_vec,
1110          &z8kcoff_vec,          &z8kcoff_vec,
1111            &bfd_elf32_am33lin_vec,
1112  #endif /* not SELECT_VECS */  #endif /* not SELECT_VECS */
1113    
1114  /* Always support S-records, for convenience.  */  /* Always support S-records, for convenience.  */
# Line 1077  const bfd_target *bfd_default_vector[] = Line 1172  const bfd_target *bfd_default_vector[] =
1172          NULL          NULL
1173  };  };
1174    
1175    /* bfd_associated_vector[] contains the associated target vectors used
1176       to reduce the ambiguity in bfd_check_format_matches.  */
1177    
1178    static const bfd_target *_bfd_associated_vector[] = {
1179    #ifdef ASSOCIATED_VECS
1180            ASSOCIATED_VECS,
1181    #endif
1182            NULL
1183    };
1184    const bfd_target * const *bfd_associated_vector = _bfd_associated_vector;
1185    
1186  /* When there is an ambiguous match, bfd_check_format_matches puts the  /* When there is an ambiguous match, bfd_check_format_matches puts the
1187     names of the matching targets in an array.  This variable is the maximum     names of the matching targets in an array.  This variable is the maximum
1188     number of entries that the array could possibly need.  */     number of entries that the array could possibly need.  */
# Line 1100  static const struct targmatch bfd_target Line 1206  static const struct targmatch bfd_target
1206    { NULL, NULL }    { NULL, NULL }
1207  };  };
1208    
 static const bfd_target *find_target PARAMS ((const char *));  
   
1209  /* Find a target vector, given a name or configuration triplet.  */  /* Find a target vector, given a name or configuration triplet.  */
1210    
1211  static const bfd_target *  static const bfd_target *
1212  find_target (name)  find_target (const char *name)
      const char *name;  
1213  {  {
1214    const bfd_target * const *target;    const bfd_target * const *target;
1215    const struct targmatch *match;    const struct targmatch *match;
# Line 1138  FUNCTION Line 1241  FUNCTION
1241          bfd_set_default_target          bfd_set_default_target
1242    
1243  SYNOPSIS  SYNOPSIS
1244          boolean bfd_set_default_target (const char *name);          bfd_boolean bfd_set_default_target (const char *name);
1245    
1246  DESCRIPTION  DESCRIPTION
1247          Set the default target vector to use when recognizing a BFD.          Set the default target vector to use when recognizing a BFD.
# Line 1146  DESCRIPTION Line 1249  DESCRIPTION
1249          name or a configuration triplet.          name or a configuration triplet.
1250  */  */
1251    
1252  boolean  bfd_boolean
1253  bfd_set_default_target (name)  bfd_set_default_target (const char *name)
      const char *name;  
1254  {  {
1255    const bfd_target *target;    const bfd_target *target;
1256    
1257    if (bfd_default_vector[0] != NULL    if (bfd_default_vector[0] != NULL
1258        && strcmp (name, bfd_default_vector[0]->name) == 0)        && strcmp (name, bfd_default_vector[0]->name) == 0)
1259      return true;      return TRUE;
1260    
1261    target = find_target (name);    target = find_target (name);
1262    if (target == NULL)    if (target == NULL)
1263      return false;      return FALSE;
1264    
1265    bfd_default_vector[0] = target;    bfd_default_vector[0] = target;
1266    return true;    return TRUE;
1267  }  }
1268    
1269  /*  /*
# Line 1169  FUNCTION Line 1271  FUNCTION
1271          bfd_find_target          bfd_find_target
1272    
1273  SYNOPSIS  SYNOPSIS
1274          const bfd_target *bfd_find_target(const char *target_name, bfd *abfd);          const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
1275    
1276  DESCRIPTION  DESCRIPTION
1277          Return a pointer to the transfer vector for the object target          Return a pointer to the transfer vector for the object target
# Line 1184  DESCRIPTION Line 1286  DESCRIPTION
1286  */  */
1287    
1288  const bfd_target *  const bfd_target *
1289  bfd_find_target (target_name, abfd)  bfd_find_target (const char *target_name, bfd *abfd)
      const char *target_name;  
      bfd *abfd;  
1290  {  {
1291    const char *targname;    const char *targname;
1292    const bfd_target *target;    const bfd_target *target;
# Line 1196  bfd_find_target (target_name, abfd) Line 1296  bfd_find_target (target_name, abfd)
1296    else    else
1297      targname = getenv ("GNUTARGET");      targname = getenv ("GNUTARGET");
1298    
1299    /* This is safe; the vector cannot be null */    /* This is safe; the vector cannot be null.  */
1300    if (targname == NULL || strcmp (targname, "default") == 0)    if (targname == NULL || strcmp (targname, "default") == 0)
1301      {      {
1302        abfd->target_defaulted = true;        abfd->target_defaulted = TRUE;
1303        if (bfd_default_vector[0] != NULL)        if (bfd_default_vector[0] != NULL)
1304          abfd->xvec = bfd_default_vector[0];          abfd->xvec = bfd_default_vector[0];
1305        else        else
# Line 1207  bfd_find_target (target_name, abfd) Line 1307  bfd_find_target (target_name, abfd)
1307        return abfd->xvec;        return abfd->xvec;
1308      }      }
1309    
1310    abfd->target_defaulted = false;    abfd->target_defaulted = FALSE;
1311    
1312    target = find_target (targname);    target = find_target (targname);
1313    if (target == NULL)    if (target == NULL)
# Line 1222  FUNCTION Line 1322  FUNCTION
1322          bfd_target_list          bfd_target_list
1323    
1324  SYNOPSIS  SYNOPSIS
1325          const char **bfd_target_list(void);          const char ** bfd_target_list (void);
1326    
1327  DESCRIPTION  DESCRIPTION
1328          Return a freshly malloced NULL-terminated          Return a freshly malloced NULL-terminated
# Line 1232  DESCRIPTION Line 1332  DESCRIPTION
1332  */  */
1333    
1334  const char **  const char **
1335  bfd_target_list ()  bfd_target_list (void)
1336  {  {
1337    int vec_length= 0;    int vec_length = 0;
1338    bfd_size_type amt;    bfd_size_type amt;
1339  #if defined (HOST_HPPAHPUX) && ! defined (__STDC__)  #if defined (HOST_HPPAHPUX) && ! defined (__STDC__)
1340    /* The native compiler on the HP9000/700 has a bug which causes it    /* The native compiler on the HP9000/700 has a bug which causes it
# Line 1248  bfd_target_list () Line 1348  bfd_target_list ()
1348      vec_length++;      vec_length++;
1349    
1350    amt = (vec_length + 1) * sizeof (char **);    amt = (vec_length + 1) * sizeof (char **);
1351    name_ptr = name_list = (const char **) bfd_zmalloc (amt);    name_ptr = name_list = bfd_malloc (amt);
1352    
1353    if (name_list == NULL)    if (name_list == NULL)
1354      return NULL;      return NULL;
1355    
1356    for (target = &bfd_target_vector[0]; *target != NULL; target++)    for (target = &bfd_target_vector[0]; *target != NULL; target++)
1357      *(name_ptr++) = (*target)->name;      if (target == &bfd_target_vector[0]
1358            || *target != bfd_target_vector[0])
1359          *name_ptr++ = (*target)->name;
1360    
1361      *name_ptr = NULL;
1362    return name_list;    return name_list;
1363  }  }
1364    
# Line 1264  FUNCTION Line 1367  FUNCTION
1367          bfd_seach_for_target          bfd_seach_for_target
1368    
1369  SYNOPSIS  SYNOPSIS
1370          const bfd_target * bfd_search_for_target (int (* search_func) (const bfd_target *, void *), void *);          const bfd_target *bfd_search_for_target
1371              (int (*search_func) (const bfd_target *, void *),
1372               void *);
1373    
1374  DESCRIPTION  DESCRIPTION
1375          Return a pointer to the first transfer vector in the list of          Return a pointer to the first transfer vector in the list of
# Line 1275  DESCRIPTION Line 1380  DESCRIPTION
1380  */  */
1381    
1382  const bfd_target *  const bfd_target *
1383  bfd_search_for_target (search_func, data)  bfd_search_for_target (int (*search_func) (const bfd_target *, void *),
1384       int (* search_func) PARAMS ((const bfd_target * target, void * data));                         void *data)
      void * data;  
1385  {  {
1386    const bfd_target * const * target;    const bfd_target * const *target;
1387    
1388    for (target = bfd_target_vector; * target != NULL; target ++)    for (target = bfd_target_vector; *target != NULL; target ++)
1389      if (search_func (* target, data))      if (search_func (*target, data))
1390        return * target;        return *target;
1391    
1392    return NULL;    return NULL;
1393  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26