]> Git Repo - binutils.git/blob - include/bfd.h
Handle moves ahead of the stack pointer slide, for struct returning fns.
[binutils.git] / include / bfd.h
1 /* A -*- C -*- header file for the bfd library
2    Copyright 1990, 1991 Free Software Foundation, Inc.
3    Contributed by Cygnus Support.
4
5 This file is part of BFD, the Binary File Descriptor library.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
20
21 /* bfd.h -- The only header file required by users of the bfd library 
22
23 This file is generated from various .c files, if you change it, your
24 bits may be lost.
25
26 All the prototypes and definitions following the comment "THE FOLLOWING
27 IS EXTRACTED FROM THE SOURCE" are extracted from the source files for
28 BFD.  If you change it, someone oneday will extract it from the source
29 again, and your changes will be lost.  To save yourself from this bind,
30 change the definitions in the source in the bfd directory.  Type "make
31 docs" and then "make headers" in that directory, and magically this file
32 will change to reflect your changes.
33
34 If you don't have the tools to perform the extraction, then you are
35 safe from someone on your system trampling over your header files.
36 You should still maintain the equivalence between the source and this
37 file though; every change you make to the .c file should be reflected
38 here.  */
39
40 #ifndef __BFD_H_SEEN__
41 #define __BFD_H_SEEN__
42
43 #include "ansidecl.h"
44 #include "obstack.h"
45
46 /* Make it easier to declare prototypes (puts conditional here) */
47 #ifndef PROTO
48 #       if __STDC__
49 #               define PROTO(type, name, arglist) type name arglist
50 #       else
51 #               define PROTO(type, name, arglist) type name ()
52 #       endif
53 #endif
54
55 #define BFD_VERSION "0.18"
56
57 /* forward declaration */
58 typedef struct _bfd bfd;
59
60 /* General rules: functions which are boolean return true on success
61    and false on failure (unless they're a predicate).   -- bfd.doc */
62 /* I'm sure this is going to break something and someone is going to
63    force me to change it. */
64 /* typedef enum boolean {false, true} boolean; */
65 /* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h>  -fnf */
66 typedef enum bfd_boolean {false, true} boolean;
67
68 /* Try to avoid breaking stuff */
69 typedef  long int file_ptr;
70
71 /* Support for different sizes of target format ints and addresses */
72
73 #ifdef  HOST_64_BIT
74 typedef HOST_64_BIT rawdata_offset;
75 typedef HOST_64_BIT bfd_vma;
76 typedef HOST_64_BIT bfd_word;
77 typedef HOST_64_BIT bfd_offset;
78 typedef HOST_64_BIT bfd_size_type;
79 typedef HOST_64_BIT symvalue;
80 typedef HOST_64_BIT bfd_64_type;
81 #define fprintf_vma(s,x) \
82                 fprintf(s,"%08x%08x", uint64_typeHIGH(x), uint64_typeLOW(x))
83 #define printf_vma(x) \
84                 printf(   "%08x%08x", uint64_typeHIGH(x), uint64_typeLOW(x))
85 #else
86 typedef struct {int a,b;} bfd_64_type;
87 typedef unsigned long rawdata_offset;
88 typedef unsigned long bfd_vma;
89 typedef unsigned long bfd_offset;
90 typedef unsigned long bfd_word;
91 typedef unsigned long bfd_size;
92 typedef unsigned long symvalue;
93 typedef unsigned long bfd_size_type;
94 #define printf_vma(x)    printf(    "%08lx", x)
95 #define fprintf_vma(s,x) fprintf(s, "%08lx", x)
96 #endif
97
98 typedef unsigned int flagword;  /* 32 bits of flags */
99 \f
100 /** File formats */
101
102 typedef enum bfd_format {
103               bfd_unknown = 0,  /* file format is unknown */
104               bfd_object,       /* linker/assember/compiler output */
105               bfd_archive,      /* object archive file */
106               bfd_core,         /* core dump */
107               bfd_type_end}     /* marks the end; don't use it! */
108          bfd_format;
109
110 /* Object file flag values */
111 #define NO_FLAGS    0
112 #define HAS_RELOC   001
113 #define EXEC_P      002
114 #define HAS_LINENO  004
115 #define HAS_DEBUG   010
116 #define HAS_SYMS    020
117 #define HAS_LOCALS  040
118 #define DYNAMIC     0100
119 #define WP_TEXT     0200
120 #define D_PAGED     0400
121
122 \f
123 /* symbols and relocation */
124
125 typedef unsigned long symindex;
126
127 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
128
129 typedef enum bfd_symclass {
130               bfd_symclass_unknown = 0,
131               bfd_symclass_fcommon, /* fortran common symbols */
132               bfd_symclass_global, /* global symbol, what a surprise */
133               bfd_symclass_debugger, /* some debugger symbol */
134               bfd_symclass_undefined /* none known */
135             } symclass;
136
137
138 typedef int symtype;            /* Who knows, yet? */
139
140
141 /* general purpose part of a symbol;
142    target specific parts will be found in libcoff.h, liba.out.h etc */
143
144
145 #define bfd_get_section(x) ((x)->section)
146 #define bfd_get_output_section(x) ((x)->section->output_section)
147 #define bfd_set_section(x,y) ((x)->section) = (y)
148 #define bfd_asymbol_base(x) ((x)->section?((x)->section->vma):0)
149 #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + x->value)
150 #define bfd_asymbol_name(x) ((x)->name)
151
152 /* This is a type pun with struct ranlib on purpose! */
153 typedef struct carsym {
154   char *name;
155   file_ptr file_offset;         /* look here to find the file */
156 } carsym;                       /* to make these you call a carsymogen */
157
158   
159 /* Used in generating armaps.  Perhaps just a forward definition would do? */
160 struct orl {                    /* output ranlib */
161   char **name;                  /* symbol name */ 
162   file_ptr pos;                 /* bfd* or file position */
163   int namidx;                   /* index into string table */
164 };
165
166 \f
167
168 /* Linenumber stuff */
169 typedef struct lineno_cache_entry {
170   unsigned int line_number;     /* Linenumber from start of function*/  
171   union {
172  struct symbol_cache_entry *sym;                /* Function name */
173     unsigned long offset;       /* Offset into section */
174   } u;
175 } alent;
176 \f
177 /* object and core file sections */
178
179
180 #define align_power(addr, align)        \
181         ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
182
183 typedef struct sec *sec_ptr;
184
185 #define bfd_section_name(bfd, ptr) ((ptr)->name)
186 #define bfd_section_size(bfd, ptr) ((ptr)->size)
187 #define bfd_section_vma(bfd, ptr) ((ptr)->vma)
188 #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
189 #define bfd_get_section_flags(bfd, ptr) ((ptr)->flags)
190 #define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
191
192 #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (val)), true)
193 #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
194 #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
195
196 typedef struct stat stat_type; 
197 \f
198 /** Error handling */
199
200 typedef enum bfd_error {
201               no_error = 0, system_call_error, invalid_target,
202               wrong_format, invalid_operation, no_memory,
203               no_symbols, no_relocation_info,
204               no_more_archived_files, malformed_archive,
205               symbol_not_found, file_not_recognized,
206               file_ambiguously_recognized, no_contents,
207               bfd_error_nonrepresentable_section,
208               no_debug_section,
209               invalid_error_code} bfd_ec;
210
211 extern bfd_ec bfd_error;
212
213 typedef struct bfd_error_vector {
214   PROTO(void,(* nonrepresentable_section ),(CONST bfd  *CONST abfd,
215                                             CONST char *CONST name));
216 } bfd_error_vector_type;
217
218 PROTO (char *, bfd_errmsg, ());
219 PROTO (void, bfd_perror, (CONST char *message));
220 \f
221
222 typedef enum bfd_print_symbol
223
224   bfd_print_symbol_name,
225   bfd_print_symbol_more,
226   bfd_print_symbol_all,
227   bfd_print_symbol_nm, /* Pretty format suitable for nm program. */
228 } bfd_print_symbol_type;
229     
230 \f
231 \f
232 /* The code that implements targets can initialize a jump table with this
233    macro.  It must name all its routines the same way (a prefix plus
234    the standard routine suffix), or it must #define the routines that
235    are not so named, before calling JUMP_TABLE in the initializer.  */
236
237 /* Semi-portable string concatenation in cpp */
238 #ifndef CAT
239 #ifdef __STDC__
240 #define CAT(a,b) a##b
241 #else
242 #define CAT(a,b) a/**/b
243 #endif
244 #endif
245
246 #define JUMP_TABLE(NAME)\
247 CAT(NAME,_core_file_failing_command),\
248 CAT(NAME,_core_file_failing_signal),\
249 CAT(NAME,_core_file_matches_executable_p),\
250 CAT(NAME,_slurp_armap),\
251 CAT(NAME,_slurp_extended_name_table),\
252 CAT(NAME,_truncate_arname),\
253 CAT(NAME,_write_armap),\
254 CAT(NAME,_close_and_cleanup),   \
255 CAT(NAME,_set_section_contents),\
256 CAT(NAME,_get_section_contents),\
257 CAT(NAME,_new_section_hook),\
258 CAT(NAME,_get_symtab_upper_bound),\
259 CAT(NAME,_get_symtab),\
260 CAT(NAME,_get_reloc_upper_bound),\
261 CAT(NAME,_canonicalize_reloc),\
262 CAT(NAME,_make_empty_symbol),\
263 CAT(NAME,_print_symbol),\
264 CAT(NAME,_get_lineno),\
265 CAT(NAME,_set_arch_mach),\
266 CAT(NAME,_openr_next_archived_file),\
267 CAT(NAME,_find_nearest_line),\
268 CAT(NAME,_generic_stat_arch_elt),\
269 CAT(NAME,_sizeof_headers),\
270 CAT(NAME,_bfd_debug_info_start),\
271 CAT(NAME,_bfd_debug_info_end),\
272 CAT(NAME,_bfd_debug_info_accumulate)
273
274 #define COFF_SWAP_TABLE \
275  coff_swap_aux_in, coff_swap_sym_in, coff_swap_lineno_in, \
276  coff_swap_aux_out, coff_swap_sym_out, \
277  coff_swap_lineno_out, coff_swap_reloc_out, \
278  coff_swap_filehdr_out, coff_swap_aouthdr_out, \
279  coff_swap_scnhdr_out
280
281
282 \f
283 /* User program access to BFD facilities */
284
285 extern CONST short _bfd_host_big_endian;
286 #define HOST_BYTE_ORDER_BIG_P   (*(char *)&_bfd_host_big_endian)
287
288 /* The bfd itself */
289
290 /* Cast from const char * to char * so that caller can assign to
291    a char * without a warning.  */
292 #define bfd_get_filename(abfd) ((char *) (abfd)->filename)
293 #define bfd_get_format(abfd) ((abfd)->format)
294 #define bfd_get_target(abfd) ((abfd)->xvec->name)
295 #define bfd_get_file_flags(abfd) ((abfd)->flags)
296 #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
297 #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
298 #define bfd_my_archive(abfd) ((abfd)->my_archive);
299 #define bfd_has_map(abfd) ((abfd)->has_armap)
300 #define bfd_header_twiddle_required(abfd) \
301         ((((abfd)->xvec->header_byteorder_big_p)                \
302           != (boolean)HOST_BYTE_ORDER_BIG_P) ? true:false)
303
304 #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
305 #define bfd_usrdata(abfd) ((abfd)->usrdata)
306
307 #define bfd_get_start_address(abfd) ((abfd)->start_address)
308 #define bfd_get_symcount(abfd) ((abfd)->symcount)
309 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
310 #define bfd_count_sections(abfd) ((abfd)->section_count)
311 #define bfd_get_architecture(abfd) ((abfd)->obj_arch)
312 #define bfd_get_machine(abfd) ((abfd)->obj_machine)
313
314
315
316 #define BYTE_SIZE 1
317 #define SHORT_SIZE 2
318 #define LONG_SIZE 4
319
320
321
322 /*THE FOLLOWING IS EXTRACTED FROM THE SOURCE */
323
324
325 /*:init.c*/
326 /* bfd_init
327
328 This routine must be called before any other bfd function to initialize
329 magical internal data structures.
330 */
331
332  void EXFUN(bfd_init,(void));
333
334 /*
335 */
336
337 /*:opncls.c*/
338 /* *i bfd_openr
339 Opens the file supplied (using @code{fopen}) with the target supplied, it
340 returns a pointer to the created BFD.
341
342 If NULL is returned then an error has occured.
343 Possible errors are no_memory, invalid_target or system_call error.
344 */
345  PROTO(bfd*, bfd_openr, (CONST char *filename,CONST char*target));
346
347 /*
348
349 *i bfd_fdopenr
350 bfd_fdopenr is to bfd_fopenr much like  fdopen is to fopen. It opens a BFD on
351 a file already described by the @var{fd} supplied. 
352
353 Possible errors are no_memory, invalid_target and system_call error.
354 */
355   PROTO(bfd *, bfd_fdopenr,
356     (CONST char *filename, CONST char *target, int fd));
357
358 /*
359
360  bfd_openw
361 Creates a BFD, associated with file @var{filename}, using the file
362 format @var{target}, and returns a pointer to it.
363
364 Possible errors are system_call_error, no_memory, invalid_target.
365 */
366  PROTO(bfd *, bfd_openw, (CONST char *filename, CONST char *target));
367
368 /*
369
370  bfd_close
371 This function closes a BFD. If the BFD was open for writing, then
372 pending operations are completed and the file written out and closed.
373 If the created file is executable, then @code{chmod} is called to mark
374 it as such.
375
376 All memory attached to the BFD's obstacks is released. 
377
378 @code{true} is returned if all is ok, otherwise @code{false}.
379 */
380  PROTO(boolean, bfd_close,(bfd *));
381
382 /*
383
384  bfd_close_all_done
385 This function closes a BFD. It differs from @code{bfd_close} since it
386 does not complete any pending operations.  This routine would be used
387 if the application had just used BFD for swapping and didn't want to
388 use any of the writing code.
389
390 If the created file is executable, then @code{chmod} is called to mark
391 it as such.
392
393 All memory attached to the BFD's obstacks is released. 
394
395 @code{true} is returned if all is ok, otherwise @code{false}.
396 */
397  PROTO(boolean, bfd_close_all_done,(bfd *));
398
399 /*
400
401  bfd_create
402 This routine creates a new BFD in the manner of @code{bfd_openw}, but without
403 opening a file. The new BFD takes the target from the target used by
404 @var{template}. The format is always set to @code{bfd_object}.
405 */
406
407  PROTO(bfd *, bfd_create, (CONST char *filename, bfd *template));
408
409 /*
410
411  bfd_alloc_size
412 Return the number of bytes in the obstacks connected to the supplied
413 BFD.
414 */
415  PROTO(bfd_size_type,bfd_alloc_size,(bfd *abfd));
416
417 /*
418 */
419
420
421 /*:libbfd.c*/
422 /* *i bfd_put_size
423 *i bfd_get_size
424 These macros as used for reading and writing raw data in sections;
425 each access (except for bytes) is vectored through the target format
426 of the BFD and mangled accordingly. The mangling performs any
427 necessary endian translations and removes alignment restrictions.
428 */
429 #define bfd_put_8(abfd, val, ptr) \
430                 (*((char *)ptr) = (char)val)
431 #define bfd_get_8(abfd, ptr) \
432                 (*((char *)ptr))
433 #define bfd_put_16(abfd, val, ptr) \
434                 BFD_SEND(abfd, bfd_putx16, (val,ptr))
435 #define bfd_get_16(abfd, ptr) \
436                 BFD_SEND(abfd, bfd_getx16, (ptr))
437 #define bfd_put_32(abfd, val, ptr) \
438                 BFD_SEND(abfd, bfd_putx32, (val,ptr))
439 #define bfd_get_32(abfd, ptr) \
440                 BFD_SEND(abfd, bfd_getx32, (ptr))
441 #define bfd_put_64(abfd, val, ptr) \
442                 BFD_SEND(abfd, bfd_putx64, (val, ptr))
443 #define bfd_get_64(abfd, ptr) \
444                 BFD_SEND(abfd, bfd_getx64, (ptr))
445 /* *i bfd_h_put_size
446 *i bfd_h_get_size
447 These macros have the same function as their @code{bfd_get_x}
448 bretherin, except that they are used for removing information for the
449 header records of object files. Believe it or not, some object files
450 keep their header records in big endian order, and their data in little
451 endan order.
452 */
453 #define bfd_h_put_8(abfd, val, ptr) \
454                 (*((char *)ptr) = (char)val)
455 #define bfd_h_get_8(abfd, ptr) \
456                 (*((char *)ptr))
457 #define bfd_h_put_16(abfd, val, ptr) \
458                 BFD_SEND(abfd, bfd_h_putx16,(val,ptr))
459 #define bfd_h_get_16(abfd, ptr) \
460                 BFD_SEND(abfd, bfd_h_getx16,(ptr))
461 #define bfd_h_put_32(abfd, val, ptr) \
462                 BFD_SEND(abfd, bfd_h_putx32,(val,ptr))
463 #define bfd_h_get_32(abfd, ptr) \
464                 BFD_SEND(abfd, bfd_h_getx32,(ptr))
465 #define bfd_h_put_64(abfd, val, ptr) \
466                 BFD_SEND(abfd, bfd_h_putx64,(val, ptr))
467 #define bfd_h_get_64(abfd, ptr) \
468                 BFD_SEND(abfd, bfd_h_getx64,(ptr))
469
470 /*:section.c*/
471 /* The shape of a section struct:
472 */
473
474 typedef struct sec {
475
476 /*
477 The name of the section, the name isn't a copy, the pointer is
478 the same as that passed to bfd_make_section.
479 */
480
481     CONST char *name;
482
483 /*
484 The next section in the list belonging to the BFD, or NULL.
485 */
486
487     struct sec *next;
488
489 /*
490 The field flags contains attributes of the section. Some of these
491 flags are read in from the object file, and some are synthesized from
492 other information. 
493 */
494
495 flagword flags;
496
497 /*
498 */
499
500 #define SEC_NO_FLAGS   0x000
501
502 /*
503 Tells the OS to allocate space for this section when loaded.
504 This would clear for a section containing debug information only.
505 */
506
507 #define SEC_ALLOC      0x001
508
509 /*
510 Tells the OS to load the section from the file when loading.
511 This would be clear for a .bss section 
512 */
513
514 #define SEC_LOAD       0x002
515
516 /*
517 The section contains data still to be relocated, so there will be some
518 relocation information too.
519 */
520
521 #define SEC_RELOC      0x004
522
523 /*
524 Obsolete ? 
525 */
526
527 #define SEC_BALIGN     0x008
528
529 /*
530 A signal to the OS that the section contains read only data.
531 */
532
533 #define SEC_READONLY   0x010
534
535 /*
536 The section contains code only.
537 */
538
539 #define SEC_CODE       0x020
540
541 /*
542 The section contains data only.
543 */
544
545 #define SEC_DATA        0x040
546
547 /*
548 The section will reside in ROM.
549 */
550
551 #define SEC_ROM        0x080
552
553 /*
554 The section contains constructor information. This section type is
555 used by the linker to create lists of constructors and destructors
556 used by @code{g++}. When a back end sees a symbol which should be used
557 in a constructor list, it creates a new section for the type of name
558 (eg @code{__CTOR_LIST__}), attaches the symbol to it and builds a
559 relocation. To build the lists of constructors, all the linker has to
560 to is catenate all the sections called @code{__CTOR_LIST__} and
561 relocte the data contained within - exactly the operations it would
562 peform on standard data.
563 */
564
565 #define SEC_CONSTRUCTOR 0x100
566
567 /*
568 The section is a constuctor, and should be placed at the end of the ..
569 */
570
571 #define SEC_CONSTRUCTOR_TEXT 0x1100
572
573 /*
574 */
575 #define SEC_CONSTRUCTOR_DATA 0x2100
576
577 /*
578 */
579 #define SEC_CONSTRUCTOR_BSS  0x3100
580
581 /*
582
583 The section has contents - a bss section could be
584 @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}, a debug section could be
585 @code{SEC_HAS_CONTENTS}
586 */
587
588 #define SEC_HAS_CONTENTS 0x200
589
590 /*
591 An instruction to the linker not to output sections containing
592 this flag even if they have information which would normally be written.
593 */
594
595 #define SEC_NEVER_LOAD 0x400
596
597 /*
598
599 The base address of the section in the address space of the target.
600 */
601
602    bfd_vma vma;
603
604 /*
605 The size of the section in bytes of the loaded section. This contains
606 a value even if the section has no contents (eg, the size of @code{.bss}).
607 */
608
609    bfd_size_type size;    
610
611 /*
612 If this section is going to be output, then this value is the
613 offset into the output section of the first byte in the input
614 section. Eg, if this was going to start at the 100th byte in the
615 output section, this value would be 100. 
616 */
617
618    bfd_vma output_offset;
619
620 /*
621 The output section through which to map on output.
622 */
623
624    struct sec *output_section;
625
626 /*
627 The alignment requirement of the section, as an exponent - eg 3
628 aligns to 2^3 (or 8) 
629 */
630
631    unsigned int alignment_power;
632
633 /*
634 If an input section, a pointer to a vector of relocation records for
635 the data in this section.
636 */
637
638    struct reloc_cache_entry *relocation;
639
640 /*
641 If an output section, a pointer to a vector of pointers to
642 relocation records for the data in this section.
643 */
644
645    struct reloc_cache_entry **orelocation;
646
647 /*
648 The number of relocation records in one of the above 
649 */
650
651    unsigned reloc_count;
652
653 /*
654 Which section is it 0..nth     
655 */
656
657    int index;                      
658
659 /*
660 Information below is back end specific - and not always used or
661 updated 
662
663 File position of section data   
664 */
665
666    file_ptr filepos;      
667 /* File position of relocation info        
668 */
669
670    file_ptr rel_filepos;
671
672 /*
673 File position of line data              
674 */
675
676    file_ptr line_filepos;
677
678 /*
679 Pointer to data for applications        
680 */
681
682    PTR userdata;
683
684 /*
685 */
686    struct lang_output_section *otheruserdata;
687
688 /*
689 Attached line number information        
690 */
691
692    alent *lineno;
693 /* Number of line number records   
694 */
695
696    unsigned int lineno_count;
697
698 /*
699 When a section is being output, this value changes as more
700 linenumbers are written out 
701 */
702
703    file_ptr moving_line_filepos;
704
705 /*
706 what the section number is in the target world 
707 */
708
709    unsigned int target_index;
710
711 /*
712 */
713    PTR used_by_bfd;
714
715 /*
716 If this is a constructor section then here is a list of the
717 relocations created to relocate items within it.
718 */
719
720    struct relent_chain *constructor_chain;
721
722 /*
723 The BFD which owns the section.
724 */
725
726    bfd *owner;
727
728 /*
729 */
730 } asection ;
731
732 /*
733
734  bfd_get_section_by_name
735 Runs through the provided @var{abfd} and returns the @code{asection}
736 who's name matches that provided, otherwise NULL. @xref{Sections}, for more information.
737 */
738
739  PROTO(asection *, bfd_get_section_by_name,
740     (bfd *abfd, CONST char *name));
741
742 /*
743
744  bfd_make_section_old_way
745 This function creates a new empty section called @var{name} and attaches it
746 to the end of the chain of sections for the BFD supplied. An attempt to
747 create a section with a name which is already in use, returns its pointer without
748 changing the section chain.
749
750 It has the funny name since this is the way it used to be before gilmore broke it.
751
752 Possible errors are:
753 @table @code
754 @item invalid_operation
755 If output has already started for this BFD.
756 @item no_memory
757 If obstack alloc fails.
758 @end table
759 */
760
761  PROTO(asection *, bfd_make_section_old_way, (bfd *, CONST char *name));
762
763 /*
764
765  bfd_make_section
766 This function creates a new empty section called @var{name} and attaches it
767 to the end of the chain of sections for the BFD supplied. An attempt to
768 create a section with a name which is already in use, returns NULL without
769 changing the section chain.
770
771 Possible errors are:
772 @table @code
773 @item invalid_operation
774 If output has already started for this BFD.
775 @item no_memory
776 If obstack alloc fails.
777 @end table
778 */
779
780  PROTO(asection *, bfd_make_section, (bfd *, CONST char *name));
781
782 /*
783
784  bfd_set_section_flags
785 Attempts to set the attributes of the section named in the BFD
786 supplied to the value. Returns true on success, false on error.
787 Possible error returns are:
788 @table @code
789 @item invalid operation
790 The section cannot have one or more of the attributes requested. For
791 example, a .bss section in @code{a.out} may not have the
792 @code{SEC_HAS_CONTENTS} field set.
793 @end table
794 */
795
796  PROTO(boolean, bfd_set_section_flags,
797        (bfd *, asection *, flagword));
798
799 /*
800
801  bfd_map_over_sections
802 Calls the provided function @var{func} for each section attached to
803 the BFD @var{abfd}, passing @var{obj} as an argument. The function
804 will be called as if by 
805
806 @example
807   func(abfd, the_section, obj);
808 @end example
809 */
810
811  PROTO(void, bfd_map_over_sections,
812             (bfd *abfd, void (*func)(), PTR obj));
813
814 /*
815
816 This is the prefered method for iterating over sections, an
817 alternative would be to use a loop:
818
819 @example
820    section *p;
821    for (p = abfd->sections; p != NULL; p = p->next)
822       func(abfd, p, ...)
823 @end example
824
825  bfd_set_section_size
826 Sets @var{section} to the size @var{val}. If the operation is ok, then
827 @code{true} is returned, else @code{false}. 
828
829 Possible error returns:
830 @table @code
831 @item invalid_operation
832 Writing has started to the BFD, so setting the size is invalid
833 @end table 
834 */
835
836  PROTO(boolean, bfd_set_section_size,
837      (bfd *, asection *, bfd_size_type val));
838
839 /*
840
841  bfd_set_section_contents
842 Sets the contents of the section @var{section} in BFD @var{abfd} to
843 the data starting in memory at @var{data}. The data is written to the
844 output section starting at offset @var{offset} for @var{count} bytes.
845
846 Normally @code{true} is returned, else @code{false}. Possible error
847 returns are:
848 @table @code
849 @item no_contents
850 The output section does not have the @code{SEC_HAS_CONTENTS}
851 attribute, so nothing can be written to it.
852 @item and some more too
853 @end table
854 This routine is front end to the back end function @code{_bfd_set_section_contents}.
855 */
856
857  PROTO(boolean, bfd_set_section_contents,
858          (bfd *abfd,        
859          asection *section,
860          PTR data,
861          file_ptr offset,
862          bfd_size_type count));
863
864 /*
865
866  bfd_get_section_contents
867 This function reads data from @var{section} in BFD @var{abfd} into
868 memory starting at @var{location}. The data is read at an offset of
869 @var{offset} from the start of the input section, and is read for
870 @var{count} bytes.
871
872 If the contents of a constuctor with the @code{SEC_CONSTUCTOR} flag
873 set are requested, then the @var{location} is filled with zeroes.
874
875 If no errors occur, @code{true} is returned, else @code{false}.
876 Possible errors are:
877
878 @table @code
879 @item unknown yet
880 @end table
881 */
882
883  PROTO(boolean, bfd_get_section_contents, 
884         (bfd *abfd, asection *section, PTR location,
885          file_ptr offset, bfd_size_type count));
886
887 /*
888 */
889
890
891
892 /*:archures.c*/
893 /* bfd_architecture
894 This enum gives the object file's CPU
895 architecture, in a global sense.  E.g. what processor family does it
896 belong to?  There is another field, which indicates what processor
897 within the family is in use.  The machine gives a number which
898 distingushes different versions of the architecture, containing for
899 example 2 and 3 for Intel i960 KA and i960 KB, and 68020 and 68030 for
900 Motorola 68020 and 68030.
901 */
902
903 enum bfd_architecture 
904 {
905   bfd_arch_unknown,   /* File arch not known */
906   bfd_arch_obscure,   /* Arch known, not one of these */
907   bfd_arch_m68k,      /* Motorola 68xxx */
908   bfd_arch_vax,       /* DEC Vax */   
909   bfd_arch_i960,      /* Intel 960 */
910     /* The order of the following is important.
911        lower number indicates a machine type that 
912        only accepts a subset of the instructions
913        available to machines with higher numbers.
914        The exception is the "ca", which is
915        incompatible with all other machines except 
916        "core". */
917
918 #define bfd_mach_i960_core      1
919 #define bfd_mach_i960_ka_sa     2
920 #define bfd_mach_i960_kb_sb     3
921 #define bfd_mach_i960_mc        4
922 #define bfd_mach_i960_xa        5
923 #define bfd_mach_i960_ca        6
924
925   bfd_arch_a29k,      /* AMD 29000 */
926   bfd_arch_sparc,     /* SPARC */
927   bfd_arch_mips,      /* MIPS Rxxxx */
928   bfd_arch_i386,      /* Intel 386 */
929   bfd_arch_ns32k,     /* National Semiconductor 32xxx */
930   bfd_arch_tahoe,     /* CCI/Harris Tahoe */
931   bfd_arch_i860,      /* Intel 860 */
932   bfd_arch_romp,      /* IBM ROMP PC/RT */
933   bfd_arch_alliant,   /* Alliant */
934   bfd_arch_convex,    /* Convex */
935   bfd_arch_m88k,      /* Motorola 88xxx */
936   bfd_arch_pyramid,   /* Pyramid Technology */
937   bfd_arch_h8300,     /* Hitachi H8/300 */
938   bfd_arch_rs6000,    /* IBM RS/6000 */
939   bfd_arch_last
940   };
941
942 /*
943 stuff
944
945  bfd_arch_info
946 This structure contains information on architectures.
947 */
948 typedef int bfd_reloc_code_type;
949
950 typedef struct bfd_arch_info 
951 {
952   int bits_per_word;
953   int bits_per_address;
954   int bits_per_byte;
955   enum bfd_architecture arch;
956   long mach;
957   char *arch_name;
958   CONST  char *printable_name;
959 /* true if this is the default machine for the architecture */
960   boolean the_default;  
961   CONST struct bfd_arch_info * EXFUN((*compatible),(CONST struct bfd_arch_info *a,
962                                                      CONST struct bfd_arch_info *b));
963
964   boolean EXFUN((*scan),(CONST struct bfd_arch_info *,CONST char *));
965   unsigned int EXFUN((*disassemble),(bfd_vma addr, CONST char *data,
966                                      PTR stream));
967   CONST struct reloc_howto_struct *EXFUN((*reloc_type_lookup), (CONST struct
968                                                                 bfd_arch_info *,
969                                                                 bfd_reloc_code_type  code));
970
971   struct bfd_arch_info *next;
972
973 } bfd_arch_info_type;
974
975 /*
976  bfd_printable_name
977
978 Return a printable string representing the architecture and machine
979 from the pointer to the arch info structure 
980 */
981
982  CONST char *EXFUN(bfd_printable_name,(bfd *abfd));
983
984 /*
985
986 *i bfd_scan_arch
987 This routine is provided with a string and tries to work out if bfd
988 supports any cpu which could be described with the name provided.  The
989 routine returns a pointer to an arch_info structure if a machine is
990 found, otherwise NULL.
991 */
992
993  bfd_arch_info_type *EXFUN(bfd_scan_arch,(CONST char *));
994
995 /*
996
997  bfd_arch_get_compatible
998 This routine is used to determine whether two BFDs' architectures and
999 machine types are compatible.  It calculates the lowest common
1000 denominator between the two architectures and machine types implied by
1001 the BFDs and returns a pointer to an arch_info structure describing
1002 the compatible machine.
1003 */
1004
1005  CONST bfd_arch_info_type *EXFUN(bfd_arch_get_compatible,
1006      (CONST bfd *abfd,
1007      CONST bfd *bbfd));
1008
1009 /*
1010
1011  bfd_set_arch_info
1012 */
1013
1014  void EXFUN(bfd_set_arch_info,(bfd *, bfd_arch_info_type *));
1015
1016 /*
1017
1018  bfd_get_arch
1019
1020 Returns the enumerated type which describes the supplied bfd's
1021 architecture
1022 */
1023
1024  enum bfd_architecture EXFUN(bfd_get_arch, (bfd *abfd));
1025
1026 /*
1027
1028  bfd_get_mach
1029
1030 Returns the long type which describes the supplied bfd's
1031 machine
1032 */
1033
1034  unsigned long EXFUN(bfd_get_mach, (bfd *abfd));
1035
1036 /*
1037
1038  bfd_arch_bits_per_byte
1039
1040 Returns the number of bits in one of the architectures bytes
1041 */
1042
1043  unsigned int EXFUN(bfd_arch_bits_per_byte, (bfd *abfd));
1044
1045 /*
1046
1047  bfd_arch_bits_per_address
1048
1049 Returns the number of bits in one of the architectures addresses
1050 */
1051
1052  unsigned int EXFUN(bfd_arch_bits_per_address, (bfd *abfd));
1053
1054 /*
1055
1056  bfd_get_arch_info
1057 */
1058
1059  bfd_arch_info_type * EXFUN(bfd_get_arch_info,(bfd *));
1060
1061 /*
1062
1063  bfd_lookup_arch
1064  
1065 */
1066  bfd_arch_info_type * EXFUN(bfd_lookup_arch,(enum
1067     bfd_architecture arch,long machine));
1068
1069 /*
1070
1071 Look for the architecure info struct which matches the arguments
1072 given. A machine of 0 will match the machine/architecture structure which
1073 marks itself as the default.
1074
1075  bfd_printable_arch_mach
1076 Return a printable string representing the architecture and machine
1077 type. 
1078
1079 NB. The use of this routine is depreciated.
1080 */
1081
1082  PROTO(CONST char *,bfd_printable_arch_mach,
1083     (enum bfd_architecture arch, unsigned long machine));
1084
1085 /*
1086 */
1087
1088 /*:reloc.c*/
1089 /* bfd_perform_relocation
1090 The relocation routine returns as a status an enumerated type:
1091 */
1092
1093 typedef enum bfd_reloc_status {
1094 /* No errors detected
1095 */
1096
1097   bfd_reloc_ok,
1098
1099 /*
1100 The relocation was performed, but there was an overflow.
1101 */
1102
1103   bfd_reloc_overflow,
1104
1105 /*
1106 The address to relocate was not within the section supplied
1107 */
1108
1109   bfd_reloc_outofrange,
1110
1111 /*
1112 Used by special functions
1113 */
1114
1115   bfd_reloc_continue,
1116
1117 /*
1118 Unused 
1119 */
1120
1121   bfd_reloc_notsupported,
1122
1123 /*
1124 Unsupported relocation size requested. 
1125 */
1126
1127   bfd_reloc_other,
1128
1129 /*
1130 The symbol to relocate against was undefined.
1131 */
1132
1133   bfd_reloc_undefined,
1134
1135 /*
1136 The relocation was performed, but may not be ok - presently generated
1137 only when linking i960 coff files with i960 b.out symbols.
1138 */
1139
1140   bfd_reloc_dangerous
1141    }
1142  bfd_reloc_status_type;
1143
1144 /*
1145 */
1146
1147 typedef struct reloc_cache_entry 
1148 {
1149
1150 /*
1151 A pointer into the canonical table of pointers 
1152 */
1153
1154   struct symbol_cache_entry **sym_ptr_ptr;
1155
1156 /*
1157 offset in section                 
1158 */
1159
1160   rawdata_offset address;
1161
1162 /*
1163 addend for relocation value        
1164 */
1165
1166   bfd_vma addend;    
1167
1168 /*
1169 if sym is null this is the section 
1170 */
1171
1172   struct sec *section;
1173
1174 /*
1175 Pointer to how to perform the required relocation
1176 */
1177
1178   CONST struct reloc_howto_struct *howto;
1179 } arelent;
1180
1181 /*
1182
1183  reloc_howto_type
1184 The @code{reloc_howto_type} is a structure which contains all the
1185 information that BFD needs to know to tie up a back end's data.
1186 */
1187
1188 typedef CONST struct reloc_howto_struct 
1189
1190 /* The type field has mainly a documetary use - the back end can to what
1191 it wants with it, though the normally the back end's external idea of
1192 what a reloc number would be would be stored in this field. For
1193 example, the a PC relative word relocation in a coff environment would
1194 have the type 023 - because that's what the outside world calls a
1195 R_PCRWORD reloc.
1196 */
1197
1198   unsigned int type;
1199
1200 /*
1201 The value the final relocation is shifted right by. This drops
1202 unwanted data from the relocation. 
1203 */
1204
1205   unsigned int rightshift;
1206
1207 /*
1208 The size of the item to be relocated - 0, is one byte, 1 is 2 bytes, 3
1209 is four bytes.
1210 */
1211
1212   unsigned int size;
1213
1214 /*
1215 Now obsolete
1216 */
1217
1218   unsigned int bitsize;
1219
1220 /*
1221 Notes that the relocation is relative to the location in the data
1222 section of the addend. The relocation function will subtract from the
1223 relocation value the address of the location being relocated.
1224 */
1225
1226   boolean pc_relative;
1227
1228 /*
1229 Now obsolete
1230 */
1231
1232   unsigned int bitpos;
1233
1234 /*
1235 Now obsolete
1236 */
1237
1238   boolean absolute;
1239
1240 /*
1241 Causes the relocation routine to return an error if overflow is
1242 detected when relocating.
1243 */
1244
1245   boolean complain_on_overflow;
1246
1247 /*
1248 If this field is non null, then the supplied function is called rather
1249 than the normal function. This allows really strange relocation
1250 methods to be accomodated (eg, i960 callj instructions).
1251 */
1252
1253   bfd_reloc_status_type (*special_function)();
1254
1255 /*
1256 The textual name of the relocation type.
1257 */
1258
1259   char *name;
1260
1261 /*
1262 When performing a partial link, some formats must modify the
1263 relocations rather than the data - this flag signals this.
1264 */
1265
1266   boolean partial_inplace;
1267
1268 /*
1269 The src_mask is used to select what parts of the read in data are to
1270 be used in the relocation sum. Eg, if this was an 8 bit bit of data
1271 which we read and relocated, this would be 0x000000ff. When we have
1272 relocs which have an addend, such as sun4 extended relocs, the value
1273 in the offset part of a relocating field is garbage so we never use
1274 it. In this case the mask would be 0x00000000.
1275 */
1276
1277   bfd_word src_mask;
1278 /* The dst_mask is what parts of the instruction are replaced into the
1279 instruction. In most cases src_mask == dst_mask, except in the above
1280 special case, where dst_mask would be 0x000000ff, and src_mask would
1281 be 0x00000000.
1282 */
1283
1284   bfd_word dst_mask;           
1285
1286 /*
1287 When some formats create PC relative instructions, they leave the
1288 value of the pc of the place being relocated in the offset slot of the
1289 instruction, so that a PC relative relocation can be made just by
1290 adding in an ordinary offset (eg sun3 a.out). Some formats leave the
1291 displacement part of an instruction empty (eg m88k bcs), this flag
1292 signals the fact.
1293 */
1294
1295   boolean pcrel_offset;
1296 } reloc_howto_type;
1297
1298 /*
1299
1300  HOWTO
1301 The HOWTO define is horrible and will go away.
1302 */
1303 #define HOWTO(C, R,S,B, P, BI, ABS, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
1304   {(unsigned)C,R,S,B, P, BI, ABS,O,SF,NAME,INPLACE,MASKSRC,MASKDST,PC}
1305
1306 /*
1307 And will be replaced with the totally magic way. But for the moment,
1308 we are compatible, so do it this way..
1309 */
1310
1311 #define NEWHOWTO( FUNCTION, NAME,SIZE,REL,IN) HOWTO(0,0,SIZE,0,REL,0,false,false,FUNCTION, NAME,false,0,0,IN)
1312
1313 /*
1314 Helper routine to turn a symbol into a relocation value.
1315 */
1316
1317
1318 #define HOWTO_PREPARE(relocation, symbol)       \
1319   {                                             \
1320   if (symbol != (asymbol *)NULL) {              \
1321     if (symbol->flags & BSF_FORT_COMM) {        \
1322       relocation = 0;                           \
1323     }                                           \
1324     else {                                      \
1325       relocation = symbol->value;               \
1326     }                                           \
1327   }                                             \
1328   if (symbol->section != (asection *)NULL) {    \
1329     relocation += symbol->section->output_section->vma +        \
1330       symbol->section->output_offset;           \
1331   }                                             \
1332 }                       
1333
1334 /*
1335  reloc_chain
1336 */
1337 typedef unsigned char bfd_byte;
1338
1339 typedef struct relent_chain {
1340   arelent relent;
1341   struct   relent_chain *next;
1342 } arelent_chain;
1343
1344 /*
1345
1346 If an output_bfd is supplied to this function the generated image
1347 will be relocatable, the relocations are copied to the output file
1348 after they have been changed to reflect the new state of the world.
1349 There are two ways of reflecting the results of partial linkage in an
1350 output file; by modifying the output data in place, and by modifying
1351 the relocation record. Some native formats (eg basic a.out and basic
1352 coff) have no way of specifying an addend in the relocation type, so
1353 the addend has to go in the output data.  This is no big deal since in
1354 these formats the output data slot will always be big enough for the
1355 addend. Complex reloc types with addends were invented to solve just
1356 this problem.
1357 */
1358  PROTO(bfd_reloc_status_type,
1359                 bfd_perform_relocation,
1360                         (bfd * abfd,
1361                         arelent *reloc_entry,
1362                         PTR data,
1363                         asection *input_section,
1364                         bfd *output_bfd));
1365
1366 /*
1367
1368  bfd_reloc_code_type
1369 */
1370
1371 typedef enum bfd_reloc_code_real {
1372
1373 /*
1374 16 bits wide, simple reloc 
1375 */
1376
1377   BFD_RELOC_16, 
1378
1379 /*
1380 8 bits wide, but used to form an address like 0xffnn
1381 */
1382
1383   BFD_RELOC_8_FFnn,
1384
1385 /*
1386 8 bits wide, simple
1387 */
1388
1389   BFD_RELOC_8,
1390
1391 /*
1392 8 bits wide, pc relative
1393 */
1394
1395   BFD_RELOC_8_PCREL,
1396
1397 /*
1398 The type of reloc used to build a contructor table - at the moment probably a 32 bit
1399 wide abs address, but the cpu can choose.
1400 */
1401
1402   BFD_RELOC_CTOR
1403
1404 /*
1405 */
1406  } bfd_reloc_code_real_type;
1407
1408 /*
1409
1410  bfd_reloc_type_lookup
1411 This routine returns a pointer to a howto struct which when invoked,
1412 will perform the supplied relocation on data from the architecture
1413 noted.
1414 */
1415
1416  PROTO(CONST struct reloc_howto_struct *,
1417         bfd_reloc_type_lookup,
1418         (CONST bfd_arch_info_type *arch, bfd_reloc_code_type code));
1419
1420 /*
1421 */
1422
1423 /*:syms.c*/
1424 /* @subsection typedef asymbol
1425 An @code{asymbol} has the form:
1426 */
1427
1428 typedef struct symbol_cache_entry 
1429 {
1430 /* A pointer to the BFD which owns the symbol. This information is
1431 necessary so that a back end can work out what additional (invisible to
1432 the application writer) information is carried with the symbol. 
1433 */
1434
1435   struct _bfd *the_bfd;
1436
1437 /*
1438 The text of the symbol. The name is left alone, and not copied - the
1439 application may not alter it. 
1440 */
1441
1442    CONST char *name;
1443
1444 /*
1445 The value of the symbol.
1446 */
1447
1448    symvalue value;
1449
1450 /*
1451 Attributes of a symbol:
1452 */
1453
1454 #define BSF_NO_FLAGS    0x00
1455
1456 /*
1457 The symbol has local scope; @code{static} in @code{C}. The value is
1458 the offset into the section of the data.
1459 */
1460
1461 #define BSF_LOCAL       0x01
1462
1463 /*
1464 The symbol has global scope; initialized data in @code{C}. The value
1465 is the offset into the section of the data.
1466 */
1467
1468 #define BSF_GLOBAL      0x02
1469
1470 /*
1471 Obsolete
1472 */
1473
1474 #define BSF_IMPORT      0x04
1475
1476 /*
1477 The symbol has global scope, and is exported. The value is the offset
1478 into the section of the data.
1479 */
1480
1481 #define BSF_EXPORT      0x08
1482
1483 /*
1484 The symbol is undefined. @code{extern} in @code{C}. The value has no meaning.
1485 */
1486
1487 #define BSF_UNDEFINED   0x10    
1488
1489 /*
1490 The symbol is common, initialized to zero; default in @code{C}. The
1491 value is the size of the object in bytes.
1492 */
1493
1494 #define BSF_FORT_COMM   0x20    
1495
1496 /*
1497 A normal @code{C} symbol would be one of:
1498 @code{BSF_LOCAL}, @code{BSF_FORT_COMM},  @code{BSF_UNDEFINED} or @code{BSF_EXPORT|BSD_GLOBAL}
1499
1500 The symbol is a debugging record. The value has an arbitary meaning.
1501 */
1502
1503 #define BSF_DEBUGGING   0x40
1504
1505 /*
1506 The symbol has no section attached, any value is the actual value and
1507 is not a relative offset to a section.
1508 */
1509
1510 #define BSF_ABSOLUTE    0x80
1511
1512 /*
1513 Used by the linker
1514 */
1515
1516 #define BSF_KEEP        0x10000
1517 #define BSF_KEEP_G      0x80000
1518
1519 /*
1520 Unused
1521 */
1522
1523 #define BSF_WEAK        0x100000
1524 #define BSF_CTOR        0x200000 
1525 #define BSF_FAKE        0x400000 
1526
1527 /*
1528 The symbol used to be a common symbol, but now it is allocated.
1529 */
1530
1531 #define BSF_OLD_COMMON  0x800000  
1532
1533 /*
1534 The default value for common data.
1535 */
1536
1537 #define BFD_FORT_COMM_DEFAULT_VALUE 0
1538
1539 /*
1540 In some files the type of a symbol sometimes alters its location
1541 in an output file - ie in coff a @code{ISFCN} symbol which is also @code{C_EXT}
1542 symbol appears where it was declared and not at the end of a section. 
1543 This bit is set by the target BFD part to convey this information. 
1544 */
1545
1546 #define BSF_NOT_AT_END    0x40000
1547
1548 /*
1549 Signal that the symbol is the label of constructor section.
1550 */
1551
1552 #define BSF_CONSTRUCTOR   0x1000000
1553
1554 /*
1555 Signal that the symbol is a warning symbol. If the symbol is a warning
1556 symbol, then the value field (I know this is tacky) will point to the
1557 asymbol which when referenced will cause the warning.
1558 */
1559
1560 #define BSF_WARNING       0x2000000
1561
1562 /*
1563 Signal that the symbol is indirect. The value of the symbol is a
1564 pointer to an undefined asymbol which contains the name to use
1565 instead.
1566 */
1567
1568 #define BSF_INDIRECT     0x4000000
1569
1570 /*
1571 */
1572   flagword flags;
1573
1574 /*
1575 A pointer to the section to which this symbol is relative, or 0 if the
1576 symbol is absolute or undefined. Note that it is not sufficient to set
1577 this location to 0 to mark a symbol as absolute - the flag
1578 @code{BSF_ABSOLUTE} must be set also.
1579 */
1580
1581   struct sec *section;
1582
1583 /*
1584 Back end special data. This is being phased out in favour of making
1585 this a union.
1586 */
1587
1588   PTR udata;    
1589 } asymbol;
1590
1591 /*
1592
1593  get_symtab_upper_bound
1594 Returns the number of bytes required in a vector of pointers to
1595 @code{asymbols} for all the symbols in the supplied BFD, including a
1596 terminal NULL pointer. If there are no symbols in the BFD, then 0 is
1597 returned.
1598 */
1599 #define get_symtab_upper_bound(abfd) \
1600      BFD_SEND (abfd, _get_symtab_upper_bound, (abfd))
1601
1602 /*
1603
1604  bfd_canonicalize_symtab
1605 Supplied a BFD and a pointer to an uninitialized vector of pointers.
1606 This reads in the symbols from the BFD, and fills in the table with
1607 pointers to the symbols, and a trailing NULL. The routine returns the
1608 actual number of symbol pointers not including the NULL.
1609 */
1610
1611 #define bfd_canonicalize_symtab(abfd, location) \
1612      BFD_SEND (abfd, _bfd_canonicalize_symtab,\
1613                   (abfd, location))
1614
1615 /*
1616  bfd_set_symtab
1617 Provided a table of pointers to to symbols and a count, writes to the
1618 output BFD the symbols when closed.
1619 */
1620
1621  PROTO(boolean, bfd_set_symtab, (bfd *, asymbol **, unsigned int ));
1622
1623 /*
1624
1625  bfd_print_symbol_vandf
1626 Prints the value and flags of the symbol supplied to the stream file.
1627 */
1628
1629  PROTO(void, bfd_print_symbol_vandf, (PTR file, asymbol *symbol));
1630
1631 /*
1632
1633   bfd_make_empty_symbol
1634 This function creates a new @code{asymbol} structure for the BFD, and
1635 returns a pointer to it.
1636
1637 This routine is necessary, since each back end has private information
1638 surrounding the @code{asymbol}. Building your own @code{asymbol} and
1639 pointing to it will not create the private information, and will cause
1640 problems later on.
1641 */
1642 #define bfd_make_empty_symbol(abfd) \
1643      BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
1644
1645 /*
1646  bfd_decode_symclass
1647 Return a lower-case character corresponding to the symbol class of symbol.
1648 */
1649
1650  PROTO(int, bfd_decode_symclass, (asymbol *symbol));
1651
1652 /*
1653
1654  bfd_stab_name
1655 Returns a string for the stab with the given code, or NULL if not found.
1656 */
1657
1658  PROTO(char *, bfd_stab_name, (int code));
1659
1660 /*
1661 */
1662
1663 /*:bfd.c*/
1664 /* @section @code{typedef bfd}
1665
1666 A BFD is has type @code{bfd}; objects of this type are the cornerstone
1667 of any application using @code{libbfd}. References though the BFD and
1668 to data in the BFD give the entire BFD functionality.
1669
1670 Here is the struct used to define the type @code{bfd}.  This contains
1671 the major data about the file, and contains pointers to the rest of
1672 the data.
1673 */
1674
1675 struct _bfd 
1676 {
1677 /*   The filename the application opened the BFD with.
1678 */
1679
1680   CONST char *filename;                
1681
1682 /*
1683 A pointer to the target jump table.
1684 */
1685
1686   struct bfd_target *xvec;
1687
1688 /*
1689
1690 To avoid dragging too many header files into every file that
1691 includes @file{bfd.h}, IOSTREAM has been declared as a "char *", and MTIME
1692 as a "long".  Their correct types, to which they are cast when used,
1693 are "FILE *" and "time_t".  
1694
1695 The iostream is the result of an fopen on the filename.
1696 */
1697
1698   char *iostream;
1699
1700 /*
1701 Is the file being cached @xref{File Caching}.
1702 */
1703
1704   boolean cacheable;
1705
1706 /*
1707 Marks whether there was a default target specified when the BFD was
1708 opened. This is used to select what matching algorithm to use to chose
1709 the back end.
1710 */
1711
1712   boolean target_defaulted;
1713
1714 /*
1715 The caching routines use these to maintain a least-recently-used list of
1716 BFDs (@pxref{File Caching}).
1717 */
1718
1719   struct _bfd *lru_prev, *lru_next;
1720
1721 /*
1722 When a file is closed by the caching routines, BFD retains state
1723 information on the file here:
1724 */
1725
1726   file_ptr where;              
1727
1728 /*
1729 and here:
1730 */
1731
1732   boolean opened_once;
1733
1734 /*
1735 */
1736   boolean mtime_set;
1737 /* File modified time 
1738 */
1739
1740   long mtime;          
1741
1742 /*
1743 Reserved for an unimplemented file locking extension.
1744 */
1745
1746 int ifd;
1747
1748 /*
1749 The format which belongs to the BFD.
1750 */
1751
1752   bfd_format format;
1753
1754 /*
1755 The direction the BFD was opened with
1756 */
1757
1758   enum bfd_direction {no_direction = 0,
1759                        read_direction = 1,
1760                        write_direction = 2,
1761                        both_direction = 3} direction;
1762
1763 /*
1764 Format_specific flags
1765 */
1766
1767   flagword flags;              
1768
1769 /*
1770 Currently my_archive is tested before adding origin to anything. I
1771 believe that this can become always an add of origin, with origin set
1772 to 0 for non archive files.  
1773 */
1774
1775   file_ptr origin;             
1776
1777 /*
1778 Remember when output has begun, to stop strange things happening.
1779 */
1780
1781   boolean output_has_begun;
1782
1783 /*
1784 Pointer to linked list of sections
1785 */
1786
1787   struct sec  *sections;
1788
1789 /*
1790 The number of sections 
1791 */
1792
1793   unsigned int section_count;
1794
1795 /*
1796 Stuff only useful for object files:
1797 The start address.
1798 */
1799
1800   bfd_vma start_address;
1801 /* Used for input and output
1802 */
1803
1804   unsigned int symcount;
1805 /* Symbol table for output BFD
1806 */
1807
1808   struct symbol_cache_entry  **outsymbols;             
1809
1810 /*
1811 Pointer to structure which contains architecture information
1812 */
1813
1814   struct bfd_arch_info *arch_info;
1815
1816 /*
1817 Stuff only useful for archives:
1818 */
1819
1820   PTR arelt_data;              
1821   struct _bfd *my_archive;     
1822   struct _bfd *next;           
1823   struct _bfd *archive_head;   
1824   boolean has_armap;           
1825
1826 /*
1827 Used by the back end to hold private data.
1828 */
1829
1830   PTR tdata;
1831
1832 /*
1833 Used by the application to hold private data
1834 */
1835
1836   PTR usrdata;
1837
1838 /*
1839 Where all the allocated stuff under this BFD goes (@pxref{Memory Usage}).
1840 */
1841
1842   struct obstack memory;
1843 };
1844
1845 /*
1846
1847  bfd_set_start_address
1848
1849 Marks the entry point of an output BFD. Returns @code{true} on
1850 success, @code{false} otherwise.
1851 */
1852
1853  PROTO(boolean, bfd_set_start_address,(bfd *, bfd_vma));
1854
1855 /*
1856
1857   bfd_get_mtime
1858
1859 Return cached file modification time (e.g. as read from archive header
1860 for archive members, or from file system if we have been called
1861 before); else determine modify time, cache it, and return it.  
1862 */
1863
1864  PROTO(long, bfd_get_mtime, (bfd *));
1865
1866 /*
1867
1868  stuff
1869 */
1870
1871
1872 #define bfd_sizeof_headers(abfd, reloc) \
1873      BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
1874
1875 #define bfd_find_nearest_line(abfd, section, symbols, offset, filename_ptr, func, line_ptr) \
1876      BFD_SEND (abfd, _bfd_find_nearest_line,  (abfd, section, symbols, offset, filename_ptr, func, line_ptr))
1877
1878 #define bfd_debug_info_start(abfd) \
1879         BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
1880
1881 #define bfd_debug_info_end(abfd) \
1882         BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
1883
1884 #define bfd_debug_info_accumulate(abfd, section) \
1885         BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
1886
1887 #define bfd_stat_arch_elt(abfd, stat) \
1888         BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
1889
1890 #define bfd_coff_swap_aux_in(a,e,t,c,i) \
1891         BFD_SEND (a, _bfd_coff_swap_aux_in, (a,e,t,c,i))
1892
1893 #define bfd_coff_swap_sym_in(a,e,i) \
1894         BFD_SEND (a, _bfd_coff_swap_sym_in, (a,e,i))
1895
1896 #define bfd_coff_swap_lineno_in(a,e,i) \
1897         BFD_SEND ( a, _bfd_coff_swap_lineno_in, (a,e,i))
1898
1899 #define bfd_set_arch_mach(abfd, arch, mach)\
1900         BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
1901
1902 #define bfd_coff_swap_reloc_out(abfd, i, o) \
1903         BFD_SEND (abfd, _bfd_coff_swap_reloc_out, (abfd, i, o))
1904
1905 #define bfd_coff_swap_lineno_out(abfd, i, o) \
1906         BFD_SEND (abfd, _bfd_coff_swap_lineno_out, (abfd, i, o))
1907
1908 #define bfd_coff_swap_aux_out(abfd, i, t,c,o) \
1909         BFD_SEND (abfd, _bfd_coff_swap_aux_out, (abfd, i,t,c, o))
1910
1911 #define bfd_coff_swap_sym_out(abfd, i,o) \
1912         BFD_SEND (abfd, _bfd_coff_swap_sym_out, (abfd, i, o))
1913
1914 #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
1915         BFD_SEND (abfd, _bfd_coff_swap_scnhdr_out, (abfd, i, o))
1916
1917 #define bfd_coff_swap_filehdr_out(abfd, i,o) \
1918         BFD_SEND (abfd, _bfd_coff_swap_filehdr_out, (abfd, i, o))
1919
1920 #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
1921         BFD_SEND (abfd, _bfd_coff_swap_aouthdr_out, (abfd, i, o))
1922
1923 /*
1924 */
1925
1926 /*:archive.c*/
1927 /* bfd_get_next_mapent
1928 What this does
1929 */
1930  PROTO(symindex, bfd_get_next_mapent, (bfd *, symindex, carsym **));
1931
1932 /*
1933
1934  bfd_set_archive_head
1935
1936 Used whilst processing archives. Sets the head of the chain of BFDs
1937 contained in an archive to @var{new_head}. (see chapter on archives)
1938 */
1939
1940  PROTO(boolean, bfd_set_archive_head, (bfd *output, bfd *new_head));
1941
1942 /*
1943
1944  bfd_get_elt_at_index
1945 Return the sub bfd contained within the archive at archive index n.
1946 */
1947
1948  PROTO(bfd *, bfd_get_elt_at_index, (bfd *, int));
1949
1950 /*
1951
1952  bfd_openr_next_archived_file
1953 Initially provided a BFD containing an archive and NULL, opens a BFD
1954 on the first contained element and returns that. Subsequent calls to
1955 bfd_openr_next_archived_file should pass the archive and the previous
1956 return value to return a created BFD to the next contained element.
1957 NULL is returned when there are no more.
1958 */
1959
1960  PROTO(bfd*, bfd_openr_next_archived_file,
1961                (bfd *archive, bfd *previous));
1962
1963 /*
1964 */
1965
1966
1967 /*:core.c*/
1968 /* bfd_core_file_failing_command
1969 Returns a read-only string explaining what program was running when
1970 it failed and produced the core file being read
1971 */
1972
1973  PROTO(CONST char *, bfd_core_file_failing_command, (bfd *));
1974
1975 /*
1976
1977  bfd_core_file_failing_signal
1978 Returns the signal number which caused the core dump which generated
1979 the file the BFD is attached to.
1980 */
1981
1982  PROTO(int, bfd_core_file_failing_signal, (bfd *));
1983
1984 /*
1985
1986  core_file_matches_executable_p
1987 Returns @code{true} if the core file attached to @var{core_bfd} was
1988 generated by a run of the executable file attached to @var{exec_bfd},
1989 or else @code{false}.
1990 */
1991  PROTO(boolean, core_file_matches_executable_p,
1992     (bfd *core_bfd, bfd *exec_bfd));
1993
1994 /*
1995 */
1996
1997 /*:targets.c*/
1998 /* bfd_target
1999 @node bfd_target,  , Targets, Targets
2000 @subsection bfd_target
2001 This structure contains everything that BFD knows about a target.
2002 It includes things like its byte order, name, what routines to call
2003 to do various operations, etc.   
2004
2005 Every BFD points to a target structure with its "xvec" member. 
2006
2007 Shortcut for declaring fields which are prototyped function pointers,
2008 while avoiding anguish on compilers that don't support protos.
2009 */
2010
2011 #define SDEF(ret, name, arglist) \
2012                 PROTO(ret,(*name),arglist)
2013 #define SDEF_FMT(ret, name, arglist) \
2014                 PROTO(ret,(*name[bfd_type_end]),arglist)
2015
2016 /*
2017 These macros are used to dispatch to functions through the bfd_target
2018 vector. They are used in a number of macros further down in @file{bfd.h}, and
2019 are also used when calling various routines by hand inside the BFD
2020 implementation.  The "arglist" argument must be parenthesized; it
2021 contains all the arguments to the called function.
2022 */
2023
2024 #define BFD_SEND(bfd, message, arglist) \
2025                ((*((bfd)->xvec->message)) arglist)
2026
2027 /*
2028 For operations which index on the BFD format 
2029 */
2030
2031 #define BFD_SEND_FMT(bfd, message, arglist) \
2032             (((bfd)->xvec->message[(int)((bfd)->format)]) arglist)
2033
2034 /*
2035 This is the struct which defines the type of BFD this is.  The
2036 "xvec" member of the struct @code{bfd} itself points here.  Each module
2037 that implements access to a different target under BFD, defines
2038 one of these.
2039
2040 FIXME, these names should be rationalised with the names of the
2041 entry points which call them. Too bad we can't have one macro to
2042 define them both! 
2043 */
2044
2045 typedef struct bfd_target
2046 {
2047
2048 /*
2049 identifies the kind of target, eg SunOS4, Ultrix, etc 
2050 */
2051
2052   char *name;
2053
2054 /*
2055 The "flavour" of a back end is a general indication about the contents
2056 of a file.
2057 */
2058
2059   enum target_flavour {
2060     bfd_target_unknown_flavour,
2061     bfd_target_aout_flavour,
2062     bfd_target_coff_flavour,
2063     bfd_target_elf_flavour,
2064     bfd_target_ieee_flavour,
2065     bfd_target_oasys_flavour,
2066     bfd_target_srec_flavour} flavour;
2067
2068 /*
2069 The order of bytes within the data area of a file.
2070 */
2071
2072   boolean byteorder_big_p;
2073
2074 /*
2075 The order of bytes within the header parts of a file.
2076 */
2077
2078   boolean header_byteorder_big_p;
2079
2080 /*
2081 This is a mask of all the flags which an executable may have set -
2082 from the set @code{NO_FLAGS}, @code{HAS_RELOC}, ...@code{D_PAGED}.
2083 */
2084
2085   flagword object_flags;       
2086
2087 /*
2088 This is a mask of all the flags which a section may have set - from
2089 the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ...@code{SET_NEVER_LOAD}.
2090 */
2091
2092   flagword section_flags;
2093
2094 /*
2095 The pad character for filenames within an archive header.
2096 */
2097
2098   char ar_pad_char;            
2099
2100 /*
2101 The maximum number of characters in an archive header.
2102 */
2103
2104  unsigned short ar_max_namelen;
2105
2106 /*
2107 The minimum alignment restriction for any section.
2108 */
2109
2110   unsigned int align_power_min;
2111
2112 /*
2113 Entries for byte swapping for data. These are different to the other
2114 entry points, since they don't take BFD as first arg.  Certain other handlers
2115 could do the same.
2116 */
2117
2118   SDEF (bfd_vma,      bfd_getx64, (bfd_byte *));
2119   SDEF (void,         bfd_putx64, (bfd_vma, bfd_byte *));
2120   SDEF (bfd_vma, bfd_getx32, (bfd_byte *));
2121   SDEF (void,         bfd_putx32, (bfd_vma, bfd_byte *));
2122   SDEF (bfd_vma, bfd_getx16, (bfd_byte *));
2123   SDEF (void,         bfd_putx16, (bfd_vma, bfd_byte *));
2124
2125 /*
2126 Byte swapping for the headers
2127 */
2128
2129   SDEF (bfd_vma,   bfd_h_getx64, (bfd_byte *));
2130   SDEF (void,          bfd_h_putx64, (bfd_vma, bfd_byte *));
2131   SDEF (bfd_vma,  bfd_h_getx32, (bfd_byte *));
2132   SDEF (void,          bfd_h_putx32, (bfd_vma, bfd_byte *));
2133   SDEF (bfd_vma,  bfd_h_getx16, (bfd_byte *));
2134   SDEF (void,          bfd_h_putx16, (bfd_vma, bfd_byte *));
2135
2136 /*
2137 Format dependent routines, these turn into vectors of entry points
2138 within the target vector structure; one for each format to check.
2139
2140 Check the format of a file being read.  Return bfd_target * or zero. 
2141 */
2142
2143   SDEF_FMT (struct bfd_target *, _bfd_check_format, (bfd *));
2144
2145 /*
2146 Set the format of a file being written.  
2147 */
2148
2149   SDEF_FMT (boolean,            _bfd_set_format, (bfd *));
2150
2151 /*
2152 Write cached information into a file being written, at bfd_close. 
2153 */
2154
2155   SDEF_FMT (boolean,            _bfd_write_contents, (bfd *));
2156
2157 /*
2158 The following functions are defined in @code{JUMP_TABLE}. The idea is
2159 that the back end writer of @code{foo} names all the routines
2160 @code{foo_}@var{entry_point}, @code{JUMP_TABLE} will built the entries
2161 in this structure in the right order.
2162
2163 Core file entry points
2164 */
2165
2166   SDEF (char *, _core_file_failing_command, (bfd *));
2167   SDEF (int,    _core_file_failing_signal, (bfd *));
2168   SDEF (boolean, _core_file_matches_executable_p, (bfd *, bfd *));
2169
2170 /*
2171 Archive entry points
2172 */
2173
2174  SDEF (boolean, _bfd_slurp_armap, (bfd *));
2175  SDEF (boolean, _bfd_slurp_extended_name_table, (bfd *));
2176  SDEF (void,   _bfd_truncate_arname, (bfd *, CONST char *, char *));
2177  SDEF (boolean, write_armap, (bfd *arch, 
2178                               unsigned int elength,
2179                               struct orl *map,
2180                               unsigned int orl_count, 
2181                               int stridx));
2182
2183 /*
2184 Standard stuff.
2185 */
2186
2187   SDEF (boolean, _close_and_cleanup, (bfd *));
2188   SDEF (boolean, _bfd_set_section_contents, (bfd *, sec_ptr, PTR,
2189                                             file_ptr, bfd_size_type));
2190   SDEF (boolean, _bfd_get_section_contents, (bfd *, sec_ptr, PTR, 
2191                                             file_ptr, bfd_size_type));
2192   SDEF (boolean, _new_section_hook, (bfd *, sec_ptr));
2193
2194 /*
2195 Symbols and reloctions
2196 */
2197
2198  SDEF (unsigned int, _get_symtab_upper_bound, (bfd *));
2199   SDEF (unsigned int, _bfd_canonicalize_symtab,
2200            (bfd *, struct symbol_cache_entry **));
2201   SDEF (unsigned int, _get_reloc_upper_bound, (bfd *, sec_ptr));
2202   SDEF (unsigned int, _bfd_canonicalize_reloc, (bfd *, sec_ptr, arelent **,
2203                                                struct symbol_cache_entry**));
2204   SDEF (struct symbol_cache_entry  *, _bfd_make_empty_symbol, (bfd *));
2205   SDEF (void,     _bfd_print_symbol, (bfd *, PTR, struct symbol_cache_entry  *,
2206                                       bfd_print_symbol_type));
2207 #define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e))
2208   SDEF (alent *,   _get_lineno, (bfd *, struct symbol_cache_entry  *));
2209
2210   SDEF (boolean,   _bfd_set_arch_mach, (bfd *, enum bfd_architecture,
2211                                        unsigned long));
2212
2213   SDEF (bfd *,  openr_next_archived_file, (bfd *arch, bfd *prev));
2214   SDEF (boolean, _bfd_find_nearest_line,
2215         (bfd *abfd, struct sec  *section,
2216          struct symbol_cache_entry  **symbols,bfd_vma offset,
2217         CONST char **file, CONST char **func, unsigned int *line));
2218   SDEF (int,    _bfd_stat_arch_elt, (bfd *, struct stat *));
2219
2220   SDEF (int,    _bfd_sizeof_headers, (bfd *, boolean));
2221
2222   SDEF (void, _bfd_debug_info_start, (bfd *));
2223   SDEF (void, _bfd_debug_info_end, (bfd *));
2224   SDEF (void, _bfd_debug_info_accumulate, (bfd *, struct sec  *));
2225
2226 /*
2227 Special entry points for gdb to swap in coff symbol table parts
2228 */
2229
2230   SDEF(void, _bfd_coff_swap_aux_in,(
2231        bfd            *abfd ,
2232        PTR             ext,
2233        int             type,
2234        int             class ,
2235        PTR             in));
2236
2237   SDEF(void, _bfd_coff_swap_sym_in,(
2238        bfd            *abfd ,
2239        PTR             ext,
2240        PTR             in));
2241
2242   SDEF(void, _bfd_coff_swap_lineno_in,  (
2243        bfd            *abfd,
2244        PTR            ext,
2245        PTR             in));
2246
2247 /*
2248 Special entry points for gas to swap coff parts
2249 */
2250
2251  SDEF(unsigned int, _bfd_coff_swap_aux_out,(
2252        bfd      *abfd,
2253        PTR      in,
2254        int      type,
2255        int      class,
2256        PTR      ext));
2257
2258  SDEF(unsigned int, _bfd_coff_swap_sym_out,(
2259       bfd      *abfd,
2260       PTR       in,
2261       PTR       ext));
2262
2263  SDEF(unsigned int, _bfd_coff_swap_lineno_out,(
2264         bfd     *abfd,
2265         PTR     in,
2266         PTR     ext));
2267
2268  SDEF(unsigned int, _bfd_coff_swap_reloc_out,(
2269         bfd     *abfd,
2270         PTR     src,
2271         PTR     dst));
2272
2273  SDEF(unsigned int, _bfd_coff_swap_filehdr_out,(
2274         bfd     *abfd,
2275         PTR     in,
2276         PTR     out));
2277
2278  SDEF(unsigned int, _bfd_coff_swap_aouthdr_out,(
2279         bfd     *abfd,
2280         PTR     in,
2281         PTR     out));
2282
2283  SDEF(unsigned int, _bfd_coff_swap_scnhdr_out,(
2284         bfd     *abfd,
2285         PTR     in,
2286         PTR     out));
2287
2288 } bfd_target;
2289
2290 /*
2291
2292 *i bfd_find_target
2293 Returns a pointer to the transfer vector for the object target
2294 named target_name.  If target_name is NULL, chooses the one in the
2295 environment variable GNUTARGET; if that is null or not defined then
2296 the first entry in the target list is chosen.  Passing in the
2297 string "default" or setting the environment variable to "default"
2298 will cause the first entry in the target list to be returned,
2299 and "target_defaulted" will be set in the BFD.  This causes
2300 @code{bfd_check_format} to loop over all the targets to find the one
2301 that matches the file being read.  
2302 */
2303  PROTO(bfd_target *, bfd_find_target,(CONST char *, bfd *));
2304
2305 /*
2306
2307 *i bfd_target_list
2308 This function returns a freshly malloced NULL-terminated vector of the
2309 names of all the valid BFD targets. Do not modify the names 
2310 */
2311  PROTO(CONST char **,bfd_target_list,());
2312
2313 /*
2314 */
2315
2316
2317 /*:format.c*/
2318 /* *i bfd_check_format
2319 This routine is supplied a BFD and a format. It attempts to verify if
2320 the file attached to the BFD is indeed compatible with the format
2321 specified (ie, one of @code{bfd_object}, @code{bfd_archive} or
2322 @code{bfd_core}).
2323
2324 If the BFD has been set to a specific @var{target} before the call,
2325 only the named target and format combination will be checked. If the
2326 target has not been set, or has been set to @code{default} then all
2327 the known target backends will be interrogated to determine a match.
2328
2329 The function returns @code{true} on success, otherwise @code{false}
2330 with one of the following error codes: 
2331 @table @code
2332 @item 
2333 invalid_operation
2334 if @code{format} is not one of @code{bfd_object}, @code{bfd_archive}
2335 or @code{bfd_core}.
2336 @item system_call_error
2337 if an error occured during a read -  even some file mismatches can
2338 cause system_call_errros
2339 @item file_not_recognised
2340 none of the backends recognised the file format
2341 @item file_ambiguously_recognized
2342 more than one backend recognised the file format.
2343 @end table
2344 */
2345  PROTO(boolean, bfd_check_format, (bfd *abfd, bfd_format format));
2346
2347 /*
2348
2349 *i bfd_set_format
2350 This function sets the file format of the supplied BFD to the format
2351 requested. If the target set in the BFD does not support the format
2352 requested, the format is illegal or the BFD is not open for writing
2353 than an error occurs.
2354 */
2355  PROTO(boolean,bfd_set_format,(bfd *, bfd_format));
2356
2357 /*
2358
2359 *i bfd_format_string
2360 This function takes one argument, and enumerated type (bfd_format) and
2361 returns a pointer to a const string "invalid", "object", "archive",
2362 "core" or "unknown" depending upon the value of the enumeration.
2363 */
2364  PROTO(CONST char *, bfd_format_string, (bfd_format));
2365
2366 /*
2367 */
2368
2369 #endif
2370
2371
2372
2373
2374
This page took 0.157819 seconds and 4 git commands to generate.