OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [bfd/] [doc/] [targets.texi] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
@section Targets
2
 
3
 
4
@strong{Description}@*
5
Each port of BFD to a different machine requries the creation
6
of a target back end. All the back end provides to the root
7
part of BFD is a structure containing pointers to functions
8
which perform certain low level operations on files. BFD
9
translates the applications's requests through a pointer into
10
calls to the back end routines.
11
 
12
When a file is opened with @code{bfd_openr}, its format and
13
target are unknown. BFD uses various mechanisms to determine
14
how to interpret the file. The operations performed are:
15
 
16
@itemize @bullet
17
 
18
@item
19
Create a BFD by calling the internal routine
20
@code{_bfd_new_bfd}, then call @code{bfd_find_target} with the
21
target string supplied to @code{bfd_openr} and the new BFD pointer.
22
 
23
@item
24
If a null target string was provided to @code{bfd_find_target},
25
look up the environment variable @code{GNUTARGET} and use
26
that as the target string.
27
 
28
@item
29
If the target string is still @code{NULL}, or the target string is
30
@code{default}, then use the first item in the target vector
31
as the target type, and set @code{target_defaulted} in the BFD to
32
cause @code{bfd_check_format} to loop through all the targets.
33
@xref{bfd_target}.  @xref{Formats}.
34
 
35
@item
36
Otherwise, inspect the elements in the target vector
37
one by one, until a match on target name is found. When found,
38
use it.
39
 
40
@item
41
Otherwise return the error @code{bfd_error_invalid_target} to
42
@code{bfd_openr}.
43
 
44
@item
45
@code{bfd_openr} attempts to open the file using
46
@code{bfd_open_file}, and returns the BFD.
47
@end itemize
48
Once the BFD has been opened and the target selected, the file
49
format may be determined. This is done by calling
50
@code{bfd_check_format} on the BFD with a suggested format.
51
If @code{target_defaulted} has been set, each possible target
52
type is tried to see if it recognizes the specified format.
53
@code{bfd_check_format} returns @code{true} when the caller guesses right.
54
@menu
55
* bfd_target::
56
@end menu
57
 
58
@node bfd_target,  , Targets, Targets
59
 
60
@subsection bfd_target
61
 
62
 
63
@strong{Description}@*
64
This structure contains everything that BFD knows about a
65
target. It includes things like its byte order, name, and which
66
routines to call to do various operations.
67
 
68
Every BFD points to a target structure with its @code{xvec}
69
member.
70
 
71
The macros below are used to dispatch to functions through the
72
@code{bfd_target} vector. They are used in a number of macros further
73
down in @file{bfd.h}, and are also used when calling various
74
routines by hand inside the BFD implementation.  The @var{arglist}
75
argument must be parenthesized; it contains all the arguments
76
to the called function.
77
 
78
They make the documentation (more) unpleasant to read, so if
79
someone wants to fix this and not break the above, please do.
80
@example
81
#define BFD_SEND(bfd, message, arglist) \
82
               ((*((bfd)->xvec->message)) arglist)
83
 
84
#ifdef DEBUG_BFD_SEND
85
#undef BFD_SEND
86
#define BFD_SEND(bfd, message, arglist) \
87
  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
88
    ((*((bfd)->xvec->message)) arglist) : \
89
    (bfd_assert (__FILE__,__LINE__), NULL))
90
#endif
91
@end example
92
For operations which index on the BFD format:
93
@example
94
#define BFD_SEND_FMT(bfd, message, arglist) \
95
            (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
96
 
97
#ifdef DEBUG_BFD_SEND
98
#undef BFD_SEND_FMT
99
#define BFD_SEND_FMT(bfd, message, arglist) \
100
  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
101
   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
102
   (bfd_assert (__FILE__,__LINE__), NULL))
103
#endif
104
@end example
105
This is the structure which defines the type of BFD this is.  The
106
@code{xvec} member of the struct @code{bfd} itself points here.  Each
107
module that implements access to a different target under BFD,
108
defines one of these.
109
 
110
FIXME, these names should be rationalised with the names of
111
the entry points which call them. Too bad we can't have one
112
macro to define them both!
113
@example
114
enum bfd_flavour @{
115
  bfd_target_unknown_flavour,
116
  bfd_target_aout_flavour,
117
  bfd_target_coff_flavour,
118
  bfd_target_ecoff_flavour,
119
  bfd_target_xcoff_flavour,
120
  bfd_target_elf_flavour,
121
  bfd_target_ieee_flavour,
122
  bfd_target_nlm_flavour,
123
  bfd_target_oasys_flavour,
124
  bfd_target_tekhex_flavour,
125
  bfd_target_srec_flavour,
126
  bfd_target_ihex_flavour,
127
  bfd_target_som_flavour,
128
  bfd_target_os9k_flavour,
129
  bfd_target_versados_flavour,
130
  bfd_target_msdos_flavour,
131
  bfd_target_ovax_flavour,
132
  bfd_target_evax_flavour
133
@};
134
 
135
enum bfd_endian @{ BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN @};
136
 
137
/* Forward declaration.  */
138
typedef struct bfd_link_info _bfd_link_info;
139
 
140
typedef struct bfd_target
141
@{
142
@end example
143
Identifies the kind of target, e.g., SunOS4, Ultrix, etc.
144
@example
145
  char *name;
146
@end example
147
The "flavour" of a back end is a general indication about the contents
148
of a file.
149
@example
150
  enum bfd_flavour flavour;
151
@end example
152
The order of bytes within the data area of a file.
153
@example
154
  enum bfd_endian byteorder;
155
@end example
156
The order of bytes within the header parts of a file.
157
@example
158
  enum bfd_endian header_byteorder;
159
@end example
160
A mask of all the flags which an executable may have set -
161
from the set @code{BFD_NO_FLAGS}, @code{HAS_RELOC}, ...@code{D_PAGED}.
162
@example
163
  flagword object_flags;
164
@end example
165
A mask of all the flags which a section may have set - from
166
the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ...@code{SET_NEVER_LOAD}.
167
@example
168
  flagword section_flags;
169
@end example
170
The character normally found at the front of a symbol
171
(if any), perhaps `_'.
172
@example
173
  char symbol_leading_char;
174
@end example
175
The pad character for file names within an archive header.
176
@example
177
  char ar_pad_char;
178
@end example
179
The maximum number of characters in an archive header.
180
@example
181
  unsigned short ar_max_namelen;
182
@end example
183
Entries for byte swapping for data. These are different from the other
184
entry points, since they don't take a BFD asthe first argument.
185
Certain other handlers could do the same.
186
@example
187
  bfd_vma      (*bfd_getx64) PARAMS ((const bfd_byte *));
188
  bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *));
189
  void         (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *));
190
  bfd_vma      (*bfd_getx32) PARAMS ((const bfd_byte *));
191
  bfd_signed_vma (*bfd_getx_signed_32) PARAMS ((const bfd_byte *));
192
  void         (*bfd_putx32) PARAMS ((bfd_vma, bfd_byte *));
193
  bfd_vma      (*bfd_getx16) PARAMS ((const bfd_byte *));
194
  bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((const bfd_byte *));
195
  void         (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *));
196
@end example
197
Byte swapping for the headers
198
@example
199
  bfd_vma      (*bfd_h_getx64) PARAMS ((const bfd_byte *));
200
  bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((const bfd_byte *));
201
  void         (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *));
202
  bfd_vma      (*bfd_h_getx32) PARAMS ((const bfd_byte *));
203
  bfd_signed_vma (*bfd_h_getx_signed_32) PARAMS ((const bfd_byte *));
204
  void         (*bfd_h_putx32) PARAMS ((bfd_vma, bfd_byte *));
205
  bfd_vma      (*bfd_h_getx16) PARAMS ((const bfd_byte *));
206
  bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((const bfd_byte *));
207
  void         (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *));
208
@end example
209
Format dependent routines: these are vectors of entry points
210
within the target vector structure, one for each format to check.
211
 
212
Check the format of a file being read.  Return a @code{bfd_target *} or zero.
213
@example
214
  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
215
@end example
216
Set the format of a file being written.
217
@example
218
  boolean             (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));
219
@end example
220
Write cached information into a file being written, at @code{bfd_close}.
221
@example
222
  boolean             (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
223
@end example
224
The general target vector.  These vectors are initialized using the
225
BFD_JUMP_TABLE macros.
226
@example
227
 
228
  /* Generic entry points.  */
229
#define BFD_JUMP_TABLE_GENERIC(NAME)\
230
CAT(NAME,_close_and_cleanup),\
231
CAT(NAME,_bfd_free_cached_info),\
232
CAT(NAME,_new_section_hook),\
233
CAT(NAME,_get_section_contents),\
234
CAT(NAME,_get_section_contents_in_window)
235
 
236
  /* Called when the BFD is being closed to do any necessary cleanup.  */
237
  boolean       (*_close_and_cleanup) PARAMS ((bfd *));
238
  /* Ask the BFD to free all cached information.  */
239
  boolean (*_bfd_free_cached_info) PARAMS ((bfd *));
240
  /* Called when a new section is created.  */
241
  boolean       (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
242
  /* Read the contents of a section.  */
243
  boolean       (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
244
                                            file_ptr, bfd_size_type));
245
  boolean       (*_bfd_get_section_contents_in_window)
246
                          PARAMS ((bfd *, sec_ptr, bfd_window *,
247
                                   file_ptr, bfd_size_type));
248
 
249
  /* Entry points to copy private data.  */
250
#define BFD_JUMP_TABLE_COPY(NAME)\
251
CAT(NAME,_bfd_copy_private_bfd_data),\
252
CAT(NAME,_bfd_merge_private_bfd_data),\
253
CAT(NAME,_bfd_copy_private_section_data),\
254
CAT(NAME,_bfd_copy_private_symbol_data),\
255
CAT(NAME,_bfd_set_private_flags),\
256
CAT(NAME,_bfd_print_private_bfd_data)\
257
  /* Called to copy BFD general private data from one object file
258
     to another.  */
259
  boolean       (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *));
260
  /* Called to merge BFD general private data from one object file
261
     to a common output file when linking.  */
262
  boolean       (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *));
263
  /* Called to copy BFD private section data from one object file
264
     to another.  */
265
  boolean       (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,
266
                                                       bfd *, sec_ptr));
267
  /* Called to copy BFD private symbol data from one symbol
268
     to another.  */
269
  boolean       (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *,
270
                                                          bfd *, asymbol *));
271
  /* Called to set private backend flags */
272
  boolean       (*_bfd_set_private_flags) PARAMS ((bfd *, flagword));
273
 
274
  /* Called to print private BFD data */
275
  boolean       (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR));
276
 
277
  /* Core file entry points.  */
278
#define BFD_JUMP_TABLE_CORE(NAME)\
279
CAT(NAME,_core_file_failing_command),\
280
CAT(NAME,_core_file_failing_signal),\
281
CAT(NAME,_core_file_matches_executable_p)
282
  char *   (*_core_file_failing_command) PARAMS ((bfd *));
283
  int      (*_core_file_failing_signal) PARAMS ((bfd *));
284
  boolean  (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *));
285
 
286
  /* Archive entry points.  */
287
#define BFD_JUMP_TABLE_ARCHIVE(NAME)\
288
CAT(NAME,_slurp_armap),\
289
CAT(NAME,_slurp_extended_name_table),\
290
CAT(NAME,_construct_extended_name_table),\
291
CAT(NAME,_truncate_arname),\
292
CAT(NAME,_write_armap),\
293
CAT(NAME,_read_ar_hdr),\
294
CAT(NAME,_openr_next_archived_file),\
295
CAT(NAME,_get_elt_at_index),\
296
CAT(NAME,_generic_stat_arch_elt),\
297
CAT(NAME,_update_armap_timestamp)
298
  boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));
299
  boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
300
  boolean  (*_bfd_construct_extended_name_table)
301
             PARAMS ((bfd *, char **, bfd_size_type *, const char **));
302
  void     (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
303
  boolean  (*write_armap) PARAMS ((bfd *arch,
304
                              unsigned int elength,
305
                              struct orl *map,
306
                              unsigned int orl_count,
307
                              int stridx));
308
  PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
309
  bfd *    (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
310
#define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))
311
  bfd *    (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));
312
  int      (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
313
  boolean  (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
314
 
315
  /* Entry points used for symbols.  */
316
#define BFD_JUMP_TABLE_SYMBOLS(NAME)\
317
CAT(NAME,_get_symtab_upper_bound),\
318
CAT(NAME,_get_symtab),\
319
CAT(NAME,_make_empty_symbol),\
320
CAT(NAME,_print_symbol),\
321
CAT(NAME,_get_symbol_info),\
322
CAT(NAME,_bfd_is_local_label_name),\
323
CAT(NAME,_get_lineno),\
324
CAT(NAME,_find_nearest_line),\
325
CAT(NAME,_bfd_make_debug_symbol),\
326
CAT(NAME,_read_minisymbols),\
327
CAT(NAME,_minisymbol_to_symbol)
328
  long  (*_bfd_get_symtab_upper_bound) PARAMS ((bfd *));
329
  long  (*_bfd_canonicalize_symtab) PARAMS ((bfd *,
330
                                             struct symbol_cache_entry **));
331
  struct symbol_cache_entry  *
332
                (*_bfd_make_empty_symbol) PARAMS ((bfd *));
333
  void          (*_bfd_print_symbol) PARAMS ((bfd *, PTR,
334
                                      struct symbol_cache_entry *,
335
                                      bfd_print_symbol_type));
336
#define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e))
337
  void          (*_bfd_get_symbol_info) PARAMS ((bfd *,
338
                                      struct symbol_cache_entry *,
339
                                      symbol_info *));
340
#define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e))
341
  boolean       (*_bfd_is_local_label_name) PARAMS ((bfd *, const char *));
342
 
343
  alent *    (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *));
344
  boolean    (*_bfd_find_nearest_line) PARAMS ((bfd *abfd,
345
                    struct sec *section, struct symbol_cache_entry **symbols,
346
                    bfd_vma offset, CONST char **file, CONST char **func,
347
                    unsigned int *line));
348
 /* Back-door to allow format-aware applications to create debug symbols
349
    while using BFD for everything else.  Currently used by the assembler
350
    when creating COFF files.  */
351
  asymbol *  (*_bfd_make_debug_symbol) PARAMS ((
352
       bfd *abfd,
353
       void *ptr,
354
       unsigned long size));
355
#define bfd_read_minisymbols(b, d, m, s) \
356
  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
357
  long  (*_read_minisymbols) PARAMS ((bfd *, boolean, PTR *,
358
                                      unsigned int *));
359
#define bfd_minisymbol_to_symbol(b, d, m, f) \
360
  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
361
  asymbol *(*_minisymbol_to_symbol) PARAMS ((bfd *, boolean, const PTR,
362
                                             asymbol *));
363
 
364
  /* Routines for relocs.  */
365
#define BFD_JUMP_TABLE_RELOCS(NAME)\
366
CAT(NAME,_get_reloc_upper_bound),\
367
CAT(NAME,_canonicalize_reloc),\
368
CAT(NAME,_bfd_reloc_type_lookup)
369
  long  (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr));
370
  long  (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **,
371
                                            struct symbol_cache_entry **));
372
  /* See documentation on reloc types.  */
373
  reloc_howto_type *
374
       (*reloc_type_lookup) PARAMS ((bfd *abfd,
375
                                     bfd_reloc_code_real_type code));
376
 
377
  /* Routines used when writing an object file.  */
378
#define BFD_JUMP_TABLE_WRITE(NAME)\
379
CAT(NAME,_set_arch_mach),\
380
CAT(NAME,_set_section_contents)
381
  boolean    (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture,
382
                    unsigned long));
383
  boolean       (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
384
                                            file_ptr, bfd_size_type));
385
 
386
  /* Routines used by the linker.  */
387
#define BFD_JUMP_TABLE_LINK(NAME)\
388
CAT(NAME,_sizeof_headers),\
389
CAT(NAME,_bfd_get_relocated_section_contents),\
390
CAT(NAME,_bfd_relax_section),\
391
CAT(NAME,_bfd_link_hash_table_create),\
392
CAT(NAME,_bfd_link_add_symbols),\
393
CAT(NAME,_bfd_final_link),\
394
CAT(NAME,_bfd_link_split_section),\
395
CAT(NAME,_bfd_gc_sections),\
396
CAT(NAME,_bfd_merge_sections)
397
  int        (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean));
398
  bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *,
399
                    struct bfd_link_info *, struct bfd_link_order *,
400
                    bfd_byte *data, boolean relocateable,
401
                    struct symbol_cache_entry **));
402
 
403
  boolean    (*_bfd_relax_section) PARAMS ((bfd *, struct sec *,
404
                    struct bfd_link_info *, boolean *again));
405
 
406
  /* Create a hash table for the linker.  Different backends store
407
     different information in this table.  */
408
  struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *));
409
 
410
  /* Add symbols from this object file into the hash table.  */
411
  boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *));
412
 
413
  /* Do a link based on the link_order structures attached to each
414
     section of the BFD.  */
415
  boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *));
416
 
417
  /* Should this section be split up into smaller pieces during linking.  */
418
  boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *));
419
 
420
  /* Remove sections that are not referenced from the output.  */
421
  boolean (*_bfd_gc_sections) PARAMS ((bfd *, struct bfd_link_info *));
422
 
423
  /* Attempt to merge SEC_MERGE sections.  */
424
  boolean (*_bfd_merge_sections) PARAMS ((bfd *, struct bfd_link_info *));
425
 
426
  /* Routines to handle dynamic symbols and relocs.  */
427
#define BFD_JUMP_TABLE_DYNAMIC(NAME)\
428
CAT(NAME,_get_dynamic_symtab_upper_bound),\
429
CAT(NAME,_canonicalize_dynamic_symtab),\
430
CAT(NAME,_get_dynamic_reloc_upper_bound),\
431
CAT(NAME,_canonicalize_dynamic_reloc)
432
  /* Get the amount of memory required to hold the dynamic symbols. */
433
  long  (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *));
434
  /* Read in the dynamic symbols.  */
435
  long  (*_bfd_canonicalize_dynamic_symtab)
436
    PARAMS ((bfd *, struct symbol_cache_entry **));
437
  /* Get the amount of memory required to hold the dynamic relocs.  */
438
  long  (*_bfd_get_dynamic_reloc_upper_bound) PARAMS ((bfd *));
439
  /* Read in the dynamic relocs.  */
440
  long  (*_bfd_canonicalize_dynamic_reloc)
441
    PARAMS ((bfd *, arelent **, struct symbol_cache_entry **));
442
 
443
@end example
444
A pointer to an alternative bfd_target in case the current one is not
445
satisfactory.  This can happen when the target cpu supports both big
446
and little endian code, and target chosen by the linker has the wrong
447
endianness.  The function open_output() in ld/ldlang.c uses this field
448
to find an alternative output format that is suitable.
449
@example
450
 /* Opposite endian version of this target.  */
451
 const struct bfd_target * alternative_target;
452
 
453
@end example
454
Data for use by back-end routines, which isn't generic enough to belong
455
in this structure.
456
@example
457
 PTR backend_data;
458
 
459
@} bfd_target;
460
@end example
461
 
462
@findex bfd_set_default_target
463
@subsubsection @code{bfd_set_default_target}
464
@strong{Synopsis}
465
@example
466
boolean bfd_set_default_target (const char *name);
467
@end example
468
@strong{Description}@*
469
Set the default target vector to use when recognizing a BFD.
470
This takes the name of the target, which may be a BFD target
471
name or a configuration triplet.
472
 
473
@findex bfd_find_target
474
@subsubsection @code{bfd_find_target}
475
@strong{Synopsis}
476
@example
477
const bfd_target *bfd_find_target(CONST char *target_name, bfd *abfd);
478
@end example
479
@strong{Description}@*
480
Return a pointer to the transfer vector for the object target
481
named @var{target_name}.  If @var{target_name} is @code{NULL}, choose the
482
one in the environment variable @code{GNUTARGET}; if that is null or not
483
defined, then choose the first entry in the target list.
484
Passing in the string "default" or setting the environment
485
variable to "default" will cause the first entry in the target
486
list to be returned, and "target_defaulted" will be set in the
487
BFD.  This causes @code{bfd_check_format} to loop over all the
488
targets to find the one that matches the file being read.
489
 
490
@findex bfd_target_list
491
@subsubsection @code{bfd_target_list}
492
@strong{Synopsis}
493
@example
494
const char **bfd_target_list(void);
495
@end example
496
@strong{Description}@*
497
Return a freshly malloced NULL-terminated
498
vector of the names of all the valid BFD targets. Do not
499
modify the names.
500
 
501
@findex bfd_seach_for_target
502
@subsubsection @code{bfd_seach_for_target}
503
@strong{Synopsis}
504
@example
505
const bfd_target * bfd_search_for_target (int (* search_func) (const bfd_target *, void *), void *);
506
@end example
507
@strong{Description}@*
508
Return a pointer to the first transfer vector in the list of
509
transfer vectors maintained by BFD that produces a non-zero
510
result when passed to the function @var{search_func}.  The
511
parameter @var{data} is passed, unexamined, to the search
512
function.
513
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.