00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __BFD_H_SEEN__
00029 #define __BFD_H_SEEN__
00030
00031 #ifdef __cplusplus
00032 extern "C" {
00033 #endif
00034
00035 #include "ansidecl.h"
00036 #include "symcat.h"
00037 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
00038 #ifndef SABER
00039
00040
00041
00042
00043
00044 #undef CONCAT4
00045 #define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
00046 #endif
00047 #endif
00048
00049
00050
00051
00052 #define BFD_ARCH_SIZE @wordsize@
00053
00054
00055 #define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
00056
00057 #define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
00058 #define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
00059 #if @BFD_HOST_64_BIT_DEFINED@
00060 #define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
00061 #define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
00062 typedef BFD_HOST_64_BIT bfd_int64_t;
00063 typedef BFD_HOST_U_64_BIT bfd_uint64_t;
00064 #endif
00065
00066 #if BFD_ARCH_SIZE >= 64
00067 #define BFD64
00068 #endif
00069
00070 #ifndef INLINE
00071 #if __GNUC__ >= 2
00072 #define INLINE __inline__
00073 #else
00074 #define INLINE
00075 #endif
00076 #endif
00077
00078
00079 typedef struct bfd bfd;
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 typedef int bfd_boolean;
00091 #undef FALSE
00092 #undef TRUE
00093 #define FALSE 0
00094 #define TRUE 1
00095
00096 #ifdef BFD64
00097
00098 #ifndef BFD_HOST_64_BIT
00099 #error No 64 bit integer type available
00100 #endif
00101
00102 typedef BFD_HOST_U_64_BIT bfd_vma;
00103 typedef BFD_HOST_64_BIT bfd_signed_vma;
00104 typedef BFD_HOST_U_64_BIT bfd_size_type;
00105 typedef BFD_HOST_U_64_BIT symvalue;
00106
00107 #ifndef fprintf_vma
00108 #if BFD_HOST_64BIT_LONG
00109 #define sprintf_vma(s,x) sprintf (s, "%016lx", x)
00110 #define fprintf_vma(f,x) fprintf (f, "%016lx", x)
00111 #else
00112 #define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
00113 #define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
00114 #define fprintf_vma(s,x) \
00115 fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
00116 #define sprintf_vma(s,x) \
00117 sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
00118 #endif
00119 #endif
00120
00121 #else
00122
00123
00124
00125
00126 typedef unsigned long bfd_vma;
00127
00128
00129
00130
00131
00132 typedef long bfd_signed_vma;
00133
00134 typedef unsigned long symvalue;
00135 typedef unsigned long bfd_size_type;
00136
00137
00138 #define fprintf_vma(s,x) fprintf (s, "%08lx", x)
00139 #define sprintf_vma(s,x) sprintf (s, "%08lx", x)
00140
00141 #endif
00142
00143 #ifndef BFD_HOST_64_BIT
00144
00145
00146
00147
00148 typedef bfd_signed_vma bfd_int64_t;
00149 typedef bfd_vma bfd_uint64_t;
00150 #endif
00151
00152
00153
00154 typedef @bfd_file_ptr@ file_ptr;
00155 typedef unsigned @bfd_file_ptr@ ufile_ptr;
00156
00157 extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
00158 extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
00159
00160 #define printf_vma(x) fprintf_vma(stdout,x)
00161 #define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
00162
00163 typedef unsigned int flagword;
00164 typedef unsigned char bfd_byte;
00165
00166
00167
00168 typedef enum bfd_format
00169 {
00170 bfd_unknown = 0,
00171 bfd_object,
00172 bfd_archive,
00173 bfd_core,
00174 bfd_type_end
00175 }
00176 bfd_format;
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186 #define BFD_NO_FLAGS 0x00
00187
00188
00189 #define HAS_RELOC 0x01
00190
00191
00192 #define EXEC_P 0x02
00193
00194
00195
00196 #define HAS_LINENO 0x04
00197
00198
00199 #define HAS_DEBUG 0x08
00200
00201
00202 #define HAS_SYMS 0x10
00203
00204
00205
00206 #define HAS_LOCALS 0x20
00207
00208
00209 #define DYNAMIC 0x40
00210
00211
00212
00213
00214 #define WP_TEXT 0x80
00215
00216
00217
00218 #define D_PAGED 0x100
00219
00220
00221
00222
00223 #define BFD_IS_RELAXABLE 0x200
00224
00225
00226
00227
00228
00229 #define BFD_TRADITIONAL_FORMAT 0x400
00230
00231
00232
00233 #define BFD_IN_MEMORY 0x800
00234
00235
00236 #define HAS_LOAD_PAGE 0x1000
00237
00238
00239
00240 #define BFD_LINKER_CREATED 0x2000
00241
00242
00243
00244
00245 typedef unsigned long symindex;
00246
00247
00248 typedef const struct reloc_howto_struct reloc_howto_type;
00249
00250 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
00251
00252
00253
00254
00255 #define bfd_get_section(x) ((x)->section)
00256 #define bfd_get_output_section(x) ((x)->section->output_section)
00257 #define bfd_set_section(x,y) ((x)->section) = (y)
00258 #define bfd_asymbol_base(x) ((x)->section->vma)
00259 #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
00260 #define bfd_asymbol_name(x) ((x)->name)
00261
00262 #define bfd_asymbol_bfd(x) ((x)->the_bfd)
00263 #define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
00264
00265
00266
00267 typedef struct carsym
00268 {
00269 char *name;
00270 file_ptr file_offset;
00271 }
00272 carsym;
00273
00274
00275
00276 struct orl
00277 {
00278 char **name;
00279 union
00280 {
00281 file_ptr pos;
00282 bfd *abfd;
00283 } u;
00284 int namidx;
00285 };
00286
00287
00288 typedef struct lineno_cache_entry
00289 {
00290 unsigned int line_number;
00291 union
00292 {
00293 struct bfd_symbol *sym;
00294 bfd_vma offset;
00295 } u;
00296 }
00297 alent;
00298
00299
00300
00301 #define align_power(addr, align) \
00302 (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
00303
00304 typedef struct bfd_section *sec_ptr;
00305
00306 #define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
00307 #define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
00308 #define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
00309 #define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
00310 #define bfd_section_name(bfd, ptr) ((ptr)->name)
00311 #define bfd_section_size(bfd, ptr) ((ptr)->size)
00312 #define bfd_get_section_size(ptr) ((ptr)->size)
00313 #define bfd_section_vma(bfd, ptr) ((ptr)->vma)
00314 #define bfd_section_lma(bfd, ptr) ((ptr)->lma)
00315 #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
00316 #define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
00317 #define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
00318
00319 #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
00320
00321 #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
00322 #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
00323 #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
00324
00325 #define bfd_get_section_limit(bfd, sec) \
00326 (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
00327 / bfd_octets_per_byte (bfd))
00328
00329 typedef struct stat stat_type;
00330
00331 typedef enum bfd_print_symbol
00332 {
00333 bfd_print_symbol_name,
00334 bfd_print_symbol_more,
00335 bfd_print_symbol_all
00336 } bfd_print_symbol_type;
00337
00338
00339
00340 typedef struct _symbol_info
00341 {
00342 symvalue value;
00343 char type;
00344 const char *name;
00345 unsigned char stab_type;
00346 char stab_other;
00347 short stab_desc;
00348 const char *stab_name;
00349 } symbol_info;
00350
00351
00352
00353 extern const char *bfd_get_stab_name (int);
00354
00355
00356
00357
00358
00359
00360 struct bfd_hash_entry
00361 {
00362
00363 struct bfd_hash_entry *next;
00364
00365 const char *string;
00366
00367
00368 unsigned long hash;
00369 };
00370
00371
00372
00373 struct bfd_hash_table
00374 {
00375
00376 struct bfd_hash_entry **table;
00377
00378 unsigned int size;
00379
00380
00381
00382
00383
00384
00385
00386 struct bfd_hash_entry *(*newfunc)
00387 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
00388
00389
00390 void *memory;
00391 };
00392
00393
00394 extern bfd_boolean bfd_hash_table_init
00395 (struct bfd_hash_table *,
00396 struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
00397 struct bfd_hash_table *,
00398 const char *));
00399
00400
00401 extern bfd_boolean bfd_hash_table_init_n
00402 (struct bfd_hash_table *,
00403 struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
00404 struct bfd_hash_table *,
00405 const char *),
00406 unsigned int size);
00407
00408
00409 extern void bfd_hash_table_free
00410 (struct bfd_hash_table *);
00411
00412
00413
00414
00415
00416 extern struct bfd_hash_entry *bfd_hash_lookup
00417 (struct bfd_hash_table *, const char *, bfd_boolean create,
00418 bfd_boolean copy);
00419
00420
00421 extern void bfd_hash_replace
00422 (struct bfd_hash_table *, struct bfd_hash_entry *old,
00423 struct bfd_hash_entry *nw);
00424
00425
00426 extern struct bfd_hash_entry *bfd_hash_newfunc
00427 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
00428
00429
00430 extern void *bfd_hash_allocate
00431 (struct bfd_hash_table *, unsigned int);
00432
00433
00434
00435
00436 extern void bfd_hash_traverse
00437 (struct bfd_hash_table *,
00438 bfd_boolean (*) (struct bfd_hash_entry *, void *),
00439 void *info);
00440
00441
00442
00443
00444 extern void bfd_hash_set_default_size (bfd_size_type);
00445
00446
00447
00448
00449 struct stab_info
00450 {
00451
00452 struct bfd_strtab_hash *strings;
00453
00454 struct bfd_hash_table includes;
00455
00456 struct bfd_section *stabstr;
00457 };
00458
00459 #define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
00460
00461
00462
00463
00464
00465
00466 extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
00467 extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
00468 extern int bfd_seek (bfd *, file_ptr, int);
00469 extern file_ptr bfd_tell (bfd *);
00470 extern int bfd_flush (bfd *);
00471 extern int bfd_stat (bfd *, struct stat *);
00472
00473
00474 #if __GNUC__
00475 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
00476 (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
00477 bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
00478 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
00479 (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
00480 bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
00481 #else
00482 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
00483 (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
00484 bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
00485 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
00486 (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
00487 bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
00488 #endif
00489 extern void warn_deprecated (const char *, const char *, int, const char *);
00490
00491
00492
00493 #define bfd_get_filename(abfd) ((char *) (abfd)->filename)
00494 #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
00495 #define bfd_get_format(abfd) ((abfd)->format)
00496 #define bfd_get_target(abfd) ((abfd)->xvec->name)
00497 #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
00498 #define bfd_family_coff(abfd) \
00499 (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
00500 bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
00501 #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
00502 #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
00503 #define bfd_header_big_endian(abfd) \
00504 ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
00505 #define bfd_header_little_endian(abfd) \
00506 ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
00507 #define bfd_get_file_flags(abfd) ((abfd)->flags)
00508 #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
00509 #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
00510 #define bfd_my_archive(abfd) ((abfd)->my_archive)
00511 #define bfd_has_map(abfd) ((abfd)->has_armap)
00512
00513 #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
00514 #define bfd_usrdata(abfd) ((abfd)->usrdata)
00515
00516 #define bfd_get_start_address(abfd) ((abfd)->start_address)
00517 #define bfd_get_symcount(abfd) ((abfd)->symcount)
00518 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
00519 #define bfd_count_sections(abfd) ((abfd)->section_count)
00520
00521 #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
00522
00523 #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
00524
00525 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
00526
00527 extern bfd_boolean bfd_cache_close
00528 (bfd *abfd);
00529
00530
00531 extern bfd_boolean bfd_cache_close_all (void);
00532
00533 extern bfd_boolean bfd_record_phdr
00534 (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
00535 bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
00536
00537
00538
00539 bfd_uint64_t bfd_getb64 (const void *);
00540 bfd_uint64_t bfd_getl64 (const void *);
00541 bfd_int64_t bfd_getb_signed_64 (const void *);
00542 bfd_int64_t bfd_getl_signed_64 (const void *);
00543 bfd_vma bfd_getb32 (const void *);
00544 bfd_vma bfd_getl32 (const void *);
00545 bfd_signed_vma bfd_getb_signed_32 (const void *);
00546 bfd_signed_vma bfd_getl_signed_32 (const void *);
00547 bfd_vma bfd_getb16 (const void *);
00548 bfd_vma bfd_getl16 (const void *);
00549 bfd_signed_vma bfd_getb_signed_16 (const void *);
00550 bfd_signed_vma bfd_getl_signed_16 (const void *);
00551 void bfd_putb64 (bfd_uint64_t, void *);
00552 void bfd_putl64 (bfd_uint64_t, void *);
00553 void bfd_putb32 (bfd_vma, void *);
00554 void bfd_putl32 (bfd_vma, void *);
00555 void bfd_putb16 (bfd_vma, void *);
00556 void bfd_putl16 (bfd_vma, void *);
00557
00558
00559
00560 bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
00561 void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
00562
00563 extern bfd_boolean bfd_section_already_linked_table_init (void);
00564 extern void bfd_section_already_linked_table_free (void);
00565
00566
00567
00568 #if defined(__STDC__) || defined(ALMOST_STDC)
00569 struct ecoff_debug_info;
00570 struct ecoff_debug_swap;
00571 struct ecoff_extr;
00572 struct bfd_symbol;
00573 struct bfd_link_info;
00574 struct bfd_link_hash_entry;
00575 struct bfd_elf_version_tree;
00576 #endif
00577 extern bfd_vma bfd_ecoff_get_gp_value
00578 (bfd * abfd);
00579 extern bfd_boolean bfd_ecoff_set_gp_value
00580 (bfd *abfd, bfd_vma gp_value);
00581 extern bfd_boolean bfd_ecoff_set_regmasks
00582 (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
00583 unsigned long *cprmask);
00584 extern void *bfd_ecoff_debug_init
00585 (bfd *output_bfd, struct ecoff_debug_info *output_debug,
00586 const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
00587 extern void bfd_ecoff_debug_free
00588 (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
00589 const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
00590 extern bfd_boolean bfd_ecoff_debug_accumulate
00591 (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
00592 const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
00593 struct ecoff_debug_info *input_debug,
00594 const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
00595 extern bfd_boolean bfd_ecoff_debug_accumulate_other
00596 (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
00597 const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
00598 struct bfd_link_info *);
00599 extern bfd_boolean bfd_ecoff_debug_externals
00600 (bfd *abfd, struct ecoff_debug_info *debug,
00601 const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
00602 bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
00603 void (*set_index) (struct bfd_symbol *, bfd_size_type));
00604 extern bfd_boolean bfd_ecoff_debug_one_external
00605 (bfd *abfd, struct ecoff_debug_info *debug,
00606 const struct ecoff_debug_swap *swap, const char *name,
00607 struct ecoff_extr *esym);
00608 extern bfd_size_type bfd_ecoff_debug_size
00609 (bfd *abfd, struct ecoff_debug_info *debug,
00610 const struct ecoff_debug_swap *swap);
00611 extern bfd_boolean bfd_ecoff_write_debug
00612 (bfd *abfd, struct ecoff_debug_info *debug,
00613 const struct ecoff_debug_swap *swap, file_ptr where);
00614 extern bfd_boolean bfd_ecoff_write_accumulated_debug
00615 (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
00616 const struct ecoff_debug_swap *swap,
00617 struct bfd_link_info *info, file_ptr where);
00618
00619
00620
00621 struct bfd_link_needed_list
00622 {
00623 struct bfd_link_needed_list *next;
00624 bfd *by;
00625 const char *name;
00626 };
00627
00628 enum dynamic_lib_link_class {
00629 DYN_NORMAL = 0,
00630 DYN_AS_NEEDED = 1,
00631 DYN_DT_NEEDED = 2,
00632 DYN_NO_ADD_NEEDED = 4,
00633 DYN_NO_NEEDED = 8
00634 };
00635
00636 extern bfd_boolean bfd_elf_record_link_assignment
00637 (bfd *, struct bfd_link_info *, const char *, bfd_boolean);
00638 extern struct bfd_link_needed_list *bfd_elf_get_needed_list
00639 (bfd *, struct bfd_link_info *);
00640 extern bfd_boolean bfd_elf_get_bfd_needed_list
00641 (bfd *, struct bfd_link_needed_list **);
00642 extern bfd_boolean bfd_elf_size_dynamic_sections
00643 (bfd *, const char *, const char *, const char *, const char * const *,
00644 struct bfd_link_info *, struct bfd_section **, struct bfd_elf_version_tree *);
00645 extern void bfd_elf_set_dt_needed_name
00646 (bfd *, const char *);
00647 extern const char *bfd_elf_get_dt_soname
00648 (bfd *);
00649 extern void bfd_elf_set_dyn_lib_class
00650 (bfd *, int);
00651 extern int bfd_elf_get_dyn_lib_class
00652 (bfd *);
00653 extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
00654 (bfd *, struct bfd_link_info *);
00655 extern bfd_boolean bfd_elf_discard_info
00656 (bfd *, struct bfd_link_info *);
00657
00658
00659
00660
00661 extern long bfd_get_elf_phdr_upper_bound
00662 (bfd *abfd);
00663
00664
00665
00666
00667
00668
00669
00670
00671 extern int bfd_get_elf_phdrs
00672 (bfd *abfd, void *phdrs);
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686 extern bfd *bfd_elf_bfd_from_remote_memory
00687 (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
00688 int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
00689
00690
00691 extern int bfd_get_arch_size
00692 (bfd *);
00693
00694
00695 extern int bfd_get_sign_extend_vma
00696 (bfd *);
00697
00698 extern struct bfd_section *_bfd_elf_tls_setup
00699 (bfd *, struct bfd_link_info *);
00700
00701 extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
00702 (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
00703
00704
00705
00706 extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
00707 (bfd *, struct bfd_link_info *);
00708 extern bfd_boolean bfd_sunos_record_link_assignment
00709 (bfd *, struct bfd_link_info *, const char *);
00710 extern bfd_boolean bfd_sunos_size_dynamic_sections
00711 (bfd *, struct bfd_link_info *, struct bfd_section **, struct bfd_section **, struct bfd_section **);
00712
00713
00714
00715 extern bfd_boolean bfd_i386linux_size_dynamic_sections
00716 (bfd *, struct bfd_link_info *);
00717 extern bfd_boolean bfd_m68klinux_size_dynamic_sections
00718 (bfd *, struct bfd_link_info *);
00719 extern bfd_boolean bfd_sparclinux_size_dynamic_sections
00720 (bfd *, struct bfd_link_info *);
00721
00722
00723
00724 struct _bfd_window_internal;
00725 typedef struct _bfd_window_internal bfd_window_internal;
00726
00727 typedef struct _bfd_window
00728 {
00729
00730 void *data;
00731 bfd_size_type size;
00732
00733
00734
00735
00736
00737
00738 struct _bfd_window_internal *i;
00739 }
00740 bfd_window;
00741
00742 extern void bfd_init_window
00743 (bfd_window *);
00744 extern void bfd_free_window
00745 (bfd_window *);
00746 extern bfd_boolean bfd_get_file_window
00747 (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
00748
00749
00750
00751 extern bfd_boolean bfd_xcoff_link_record_set
00752 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
00753 extern bfd_boolean bfd_xcoff_import_symbol
00754 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
00755 const char *, const char *, const char *, unsigned int);
00756 extern bfd_boolean bfd_xcoff_export_symbol
00757 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
00758 extern bfd_boolean bfd_xcoff_link_count_reloc
00759 (bfd *, struct bfd_link_info *, const char *);
00760 extern bfd_boolean bfd_xcoff_record_link_assignment
00761 (bfd *, struct bfd_link_info *, const char *);
00762 extern bfd_boolean bfd_xcoff_size_dynamic_sections
00763 (bfd *, struct bfd_link_info *, const char *, const char *,
00764 unsigned long, unsigned long, unsigned long, bfd_boolean,
00765 int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
00766 extern bfd_boolean bfd_xcoff_link_generate_rtinit
00767 (bfd *, const char *, const char *, bfd_boolean);
00768
00769
00770 extern bfd_boolean bfd_xcoff_ar_archive_set_magic
00771 (bfd *, char *);
00772
00773
00774
00775 #if defined(__STDC__) || defined(ALMOST_STDC)
00776 struct internal_syment;
00777 union internal_auxent;
00778 #endif
00779
00780 extern bfd_boolean bfd_coff_get_syment
00781 (bfd *, struct bfd_symbol *, struct internal_syment *);
00782
00783 extern bfd_boolean bfd_coff_get_auxent
00784 (bfd *, struct bfd_symbol *, int, union internal_auxent *);
00785
00786 extern bfd_boolean bfd_coff_set_symbol_class
00787 (bfd *, struct bfd_symbol *, unsigned int);
00788
00789 extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
00790 (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
00791
00792
00793 extern bfd_boolean bfd_arm_allocate_interworking_sections
00794 (struct bfd_link_info *);
00795
00796 extern bfd_boolean bfd_arm_process_before_allocation
00797 (bfd *, struct bfd_link_info *, int);
00798
00799 extern bfd_boolean bfd_arm_get_bfd_for_interworking
00800 (bfd *, struct bfd_link_info *);
00801
00802
00803 extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
00804 (struct bfd_link_info *);
00805
00806 extern bfd_boolean bfd_arm_pe_process_before_allocation
00807 (bfd *, struct bfd_link_info *, int);
00808
00809 extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
00810 (bfd *, struct bfd_link_info *);
00811
00812
00813 extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
00814 (struct bfd_link_info *);
00815
00816 extern bfd_boolean bfd_elf32_arm_process_before_allocation
00817 (bfd *, struct bfd_link_info *, int);
00818
00819 void bfd_elf32_arm_set_target_relocs
00820 (struct bfd_link_info *, int, char *, int);
00821
00822 extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
00823 (bfd *, struct bfd_link_info *);
00824
00825 extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
00826 (bfd *, struct bfd_link_info *);
00827
00828
00829 extern bfd_boolean bfd_arm_merge_machines
00830 (bfd *, bfd *);
00831
00832 extern bfd_boolean bfd_arm_update_notes
00833 (bfd *, const char *);
00834
00835 extern unsigned int bfd_arm_get_mach_from_notes
00836 (bfd *, const char *);
00837
00838
00839 extern void bfd_ticoff_set_section_load_page
00840 (struct bfd_section *, int);
00841
00842 extern int bfd_ticoff_get_section_load_page
00843 (struct bfd_section *);
00844
00845
00846 extern bfd_vma bfd_h8300_pad_address
00847 (bfd *, bfd_vma);
00848
00849
00850 extern void bfd_elf32_ia64_after_parse
00851 (int);
00852
00853 extern void bfd_elf64_ia64_after_parse
00854 (int);
00855
00856
00857
00858
00859
00860
00861 struct coff_comdat_info
00862 {
00863
00864 const char *name;
00865
00866
00867
00868
00869
00870 long symbol;
00871 };
00872
00873 extern struct coff_comdat_info *bfd_coff_get_comdat_section
00874 (bfd *, struct bfd_section *);
00875