New prototype from sectino.c
[deliverable/binutils-gdb.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.076839 seconds and 5 git commands to generate.