Fixes a problem recognizing libraries created by Visual Studio.
[deliverable/binutils-gdb.git] / bfd / libcoff-in.h
CommitLineData
252b5132 1/* BFD COFF object file private structure.
b90efa5b 2 Copyright (C) 1990-2015 Free Software Foundation, Inc.
252b5132
RH
3 Written by Cygnus Support.
4
7920ce38 5 This file is part of BFD, the Binary File Descriptor library.
252b5132 6
7920ce38
NC
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
cd123cb7 9 the Free Software Foundation; either version 3 of the License, or
7920ce38 10 (at your option) any later version.
252b5132 11
7920ce38
NC
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.
252b5132 16
7920ce38
NC
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
cd123cb7
NC
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
252b5132
RH
21
22#include "bfdlink.h"
f4943d82 23#include "coff-bfd.h"
252b5132 24
55172d69
PA
25#ifdef __cplusplus
26extern "C" {
27#endif
28
7920ce38
NC
29/* Object file tdata; access macros. */
30
31#define coff_data(bfd) ((bfd)->tdata.coff_obj_data)
7920ce38
NC
32#define obj_pe(bfd) (coff_data (bfd)->pe)
33#define obj_symbols(bfd) (coff_data (bfd)->symbols)
34#define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos)
35#define obj_relocbase(bfd) (coff_data (bfd)->relocbase)
36#define obj_raw_syments(bfd) (coff_data (bfd)->raw_syments)
37#define obj_raw_syment_count(bfd) (coff_data (bfd)->raw_syment_count)
38#define obj_convert(bfd) (coff_data (bfd)->conversion_table)
39#define obj_conv_table_size(bfd) (coff_data (bfd)->conv_table_size)
40#define obj_coff_external_syms(bfd) (coff_data (bfd)->external_syms)
41#define obj_coff_keep_syms(bfd) (coff_data (bfd)->keep_syms)
42#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
5a3f568b 43#define obj_coff_strings_len(bfd) (coff_data (bfd)->strings_len)
7920ce38
NC
44#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
45#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
d71f672e 46#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
7920ce38 47#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
252b5132
RH
48
49/* `Tdata' information kept for COFF files. */
50
51typedef struct coff_tdata
52{
7920ce38 53 struct coff_symbol_struct *symbols; /* Symtab for input bfd. */
252b5132
RH
54 unsigned int *conversion_table;
55 int conv_table_size;
56 file_ptr sym_filepos;
57
58 struct coff_ptr_struct *raw_syments;
00692651 59 unsigned long raw_syment_count;
252b5132 60
7920ce38 61 /* These are only valid once writing has begun. */
bad1a9f7 62 unsigned long int relocbase;
252b5132
RH
63
64 /* These members communicate important constants about the symbol table
65 to GDB's symbol-reading code. These `constants' unfortunately vary
66 from coff implementation to implementation... */
67 unsigned local_n_btmask;
68 unsigned local_n_btshft;
69 unsigned local_n_tmask;
70 unsigned local_n_tshift;
71 unsigned local_symesz;
72 unsigned local_auxesz;
73 unsigned local_linesz;
74
75 /* The unswapped external symbols. May be NULL. Read by
76 _bfd_coff_get_external_symbols. */
7920ce38 77 void * external_syms;
b34976b6
AM
78 /* If this is TRUE, the external_syms may not be freed. */
79 bfd_boolean keep_syms;
252b5132
RH
80
81 /* The string table. May be NULL. Read by
82 _bfd_coff_read_string_table. */
83 char *strings;
5a3f568b
NC
84 /* The length of the strings table. For error checking. */
85 bfd_size_type strings_len;
b34976b6
AM
86 /* If this is TRUE, the strings may not be freed. */
87 bfd_boolean keep_strings;
88 /* If this is TRUE, the strings have been written out already. */
89 bfd_boolean strings_written;
252b5132 90
7920ce38 91 /* Is this a PE format coff file? */
252b5132
RH
92 int pe;
93 /* Used by the COFF backend linker. */
94 struct coff_link_hash_entry **sym_hashes;
95
7920ce38 96 /* Used by the pe linker for PowerPC. */
252b5132
RH
97 int *local_toc_sym_map;
98
99 struct bfd_link_info *link_info;
100
101 /* Used by coff_find_nearest_line. */
7920ce38 102 void * line_info;
252b5132 103
7920ce38
NC
104 /* A place to stash dwarf2 info for this bfd. */
105 void * dwarf2_find_line_info;
51db3708 106
00692651
ILT
107 /* The timestamp from the COFF file header. */
108 long timestamp;
109
252b5132
RH
110 /* Copy of some of the f_flags bits in the COFF filehdr structure,
111 used by ARM code. */
112 flagword flags;
113
9bf609ec
JK
114 /* coff-stgo32 EXE stub header after BFD tdata has been allocated. Its data
115 is kept in internal_filehdr.go32stub beforehand. */
116 char *go32stub;
252b5132
RH
117} coff_data_type;
118
7920ce38 119/* Tdata for pe image files. */
252b5132
RH
120typedef struct pe_tdata
121{
122 coff_data_type coff;
123 struct internal_extra_pe_aouthdr pe_opthdr;
124 int dll;
125 int has_reloc_section;
441f34fa 126 int dont_strip_reloc;
0cb112f7 127 bfd_boolean insert_timestamp;
7920ce38 128 bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
252b5132 129 flagword real_flags;
61e2488c
JT
130
131 /* Build-id info. */
132 struct
133 {
134 bfd_boolean (*after_write_object_contents) (bfd *);
135 const char *style;
136 asection *sec;
137 } build_id;
252b5132
RH
138} pe_data_type;
139
140#define pe_data(bfd) ((bfd)->tdata.pe_obj_data)
141
142/* Tdata for XCOFF files. */
143
144struct xcoff_tdata
145{
146 /* Basic COFF information. */
147 coff_data_type coff;
148
b34976b6
AM
149 /* TRUE if this is an XCOFF64 file. */
150 bfd_boolean xcoff64;
a2fdf270 151
b34976b6
AM
152 /* TRUE if a large a.out header should be generated. */
153 bfd_boolean full_aouthdr;
252b5132
RH
154
155 /* TOC value. */
156 bfd_vma toc;
157
158 /* Index of section holding TOC. */
159 int sntoc;
160
161 /* Index of section holding entry point. */
162 int snentry;
163
164 /* .text alignment from optional header. */
165 int text_align_power;
166
167 /* .data alignment from optional header. */
168 int data_align_power;
169
170 /* modtype from optional header. */
171 short modtype;
172
173 /* cputype from optional header. */
174 short cputype;
175
176 /* maxdata from optional header. */
beb1bf64 177 bfd_vma maxdata;
252b5132
RH
178
179 /* maxstack from optional header. */
beb1bf64 180 bfd_vma maxstack;
252b5132
RH
181
182 /* Used by the XCOFF backend linker. */
183 asection **csects;
e450936a 184 long *debug_indices;
3df13c4a 185 unsigned int *lineno_counts;
252b5132
RH
186 unsigned int import_file_id;
187};
188
189#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
190
08da05b0 191/* We take the address of the first element of an asymbol to ensure that the
7920ce38 192 macro is only ever applied to an asymbol. */
252b5132
RH
193#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
194
252b5132
RH
195/* Tdata for sections in XCOFF files. This is used by the linker. */
196
197struct xcoff_section_tdata
198{
199 /* Used for XCOFF csects created by the linker; points to the real
200 XCOFF section which contains this csect. */
201 asection *enclosing;
202 /* The lineno_count field for the enclosing section, because we are
203 going to clobber it there. */
204 unsigned int lineno_count;
4cc02a02 205 /* The first and last symbol indices for symbols used by this csect. */
252b5132
RH
206 unsigned long first_symndx;
207 unsigned long last_symndx;
208};
209
210/* An accessor macro the xcoff_section_tdata structure. */
211#define xcoff_section_data(abfd, sec) \
212 ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
213
8d3ad4e1 214/* Tdata for sections in PE files. */
252b5132
RH
215
216struct pei_section_tdata
217{
218 /* The virtual size of the section. */
219 bfd_size_type virt_size;
8d3ad4e1
ILT
220 /* The PE section flags. */
221 long pe_flags;
252b5132
RH
222};
223
224/* An accessor macro for the pei_section_tdata structure. */
225#define pei_section_data(abfd, sec) \
226 ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
227
228/* COFF linker hash table entries. */
229
230struct coff_link_hash_entry
231{
232 struct bfd_link_hash_entry root;
233
234 /* Symbol index in output file. Set to -1 initially. Set to -2 if
235 there is a reloc against this symbol. */
236 long indx;
237
238 /* Symbol type. */
239 unsigned short type;
240
241 /* Symbol class. */
96d56e9f 242 unsigned char symbol_class;
252b5132
RH
243
244 /* Number of auxiliary entries. */
245 char numaux;
246
247 /* BFD to take auxiliary entries from. */
248 bfd *auxbfd;
249
250 /* Pointer to array of auxiliary entries, if any. */
251 union internal_auxent *aux;
7fd9c191
ILT
252
253 /* Flag word; legal values follow. */
254 unsigned short coff_link_hash_flags;
255 /* Symbol is a PE section symbol. */
256#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
252b5132
RH
257};
258
259/* COFF linker hash table. */
260
261struct coff_link_hash_table
262{
263 struct bfd_link_hash_table root;
264 /* A pointer to information used to link stabs in sections. */
3722b82f 265 struct stab_info stab_info;
252b5132
RH
266};
267
268/* Look up an entry in a COFF linker hash table. */
269
270#define coff_link_hash_lookup(table, string, create, copy, follow) \
271 ((struct coff_link_hash_entry *) \
272 bfd_link_hash_lookup (&(table)->root, (string), (create), \
273 (copy), (follow)))
274
275/* Traverse a COFF linker hash table. */
276
277#define coff_link_hash_traverse(table, func, info) \
278 (bfd_link_hash_traverse \
279 (&(table)->root, \
7920ce38 280 (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
252b5132
RH
281 (info)))
282
283/* Get the COFF linker hash table from a link_info structure. */
284
285#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
286
287/* Functions in coffgen.c. */
dc810e39 288extern const bfd_target *coff_object_p
7920ce38 289 (bfd *);
198beae2 290extern struct bfd_section *coff_section_from_bfd_index
7920ce38 291 (bfd *, int);
dc810e39 292extern long coff_get_symtab_upper_bound
7920ce38 293 (bfd *);
6cee3f79 294extern long coff_canonicalize_symtab
7920ce38 295 (bfd *, asymbol **);
dc810e39 296extern int coff_count_linenumbers
7920ce38 297 (bfd *);
b34976b6 298extern bfd_boolean coff_renumber_symbols
7920ce38 299 (bfd *, int *);
dc810e39 300extern void coff_mangle_symbols
7920ce38 301 (bfd *);
b34976b6 302extern bfd_boolean coff_write_symbols
7920ce38 303 (bfd *);
e7ebb214
JB
304extern bfd_boolean coff_write_alien_symbol
305 (bfd *, asymbol *, struct internal_syment *, bfd_vma *,
306 bfd_size_type *, asection **, bfd_size_type *);
b34976b6 307extern bfd_boolean coff_write_linenumbers
7920ce38 308 (bfd *);
dc810e39 309extern alent *coff_get_lineno
7920ce38 310 (bfd *, asymbol *);
dc810e39 311extern asymbol *coff_section_symbol
7920ce38 312 (bfd *, char *);
b34976b6 313extern bfd_boolean _bfd_coff_get_external_symbols
7920ce38 314 (bfd *);
dc810e39 315extern const char *_bfd_coff_read_string_table
7920ce38 316 (bfd *);
b34976b6 317extern bfd_boolean _bfd_coff_free_symbols
7920ce38 318 (bfd *);
dc810e39 319extern struct coff_ptr_struct *coff_get_normalized_symtab
7920ce38 320 (bfd *);
dc810e39 321extern long coff_get_reloc_upper_bound
7920ce38 322 (bfd *, sec_ptr);
dc810e39 323extern asymbol *coff_make_empty_symbol
7920ce38 324 (bfd *);
dc810e39 325extern void coff_print_symbol
7920ce38 326 (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
dc810e39 327extern void coff_get_symbol_info
7920ce38 328 (bfd *, asymbol *, symbol_info *ret);
60bb06bc
L
329#define coff_get_symbol_version_string \
330 _bfd_nosymbols_get_symbol_version_string
b34976b6 331extern bfd_boolean _bfd_coff_is_local_label_name
7920ce38 332 (bfd *, const char *);
dc810e39 333extern asymbol *coff_bfd_make_debug_symbol
7920ce38 334 (bfd *, void *, unsigned long);
b34976b6 335extern bfd_boolean coff_find_nearest_line
fb167eb2
AM
336 (bfd *, asymbol **, asection *, bfd_vma,
337 const char **, const char **, unsigned int *, unsigned int *);
9c461f7d 338#define coff_find_line _bfd_nosymbols_find_line
fc28f9aa
TG
339struct dwarf_debug_section;
340extern bfd_boolean coff_find_nearest_line_with_names
fb167eb2
AM
341 (bfd *, asymbol **, asection *, bfd_vma, const char **, const char **,
342 unsigned int *, const struct dwarf_debug_section *);
4ab527b0
FF
343extern bfd_boolean coff_find_inliner_info
344 (bfd *, const char **, const char **, unsigned int *);
dc810e39 345extern int coff_sizeof_headers
a6b96beb 346 (bfd *, struct bfd_link_info *);
b34976b6 347extern bfd_boolean bfd_coff_reloc16_relax_section
7920ce38 348 (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
252b5132 349extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
7920ce38
NC
350 (bfd *, struct bfd_link_info *, struct bfd_link_order *,
351 bfd_byte *, bfd_boolean, asymbol **);
dc810e39 352extern bfd_vma bfd_coff_reloc16_get_value
7920ce38 353 (arelent *, struct bfd_link_info *, asection *);
dc810e39 354extern void bfd_perform_slip
7920ce38 355 (bfd *, unsigned int, asection *, bfd_vma);
252b5132
RH
356
357/* Functions and types in cofflink.c. */
358
116c20d2 359#define STRING_SIZE_SIZE 4
252b5132
RH
360
361/* We use a hash table to merge identical enum, struct, and union
362 definitions in the linker. */
363
364/* Information we keep for a single element (an enum value, a
365 structure or union field) in the debug merge hash table. */
366
367struct coff_debug_merge_element
368{
369 /* Next element. */
370 struct coff_debug_merge_element *next;
371
372 /* Name. */
373 const char *name;
374
375 /* Type. */
376 unsigned int type;
377
378 /* Symbol index for complex type. */
379 long tagndx;
380};
381
382/* A linked list of debug merge entries for a given name. */
383
384struct coff_debug_merge_type
385{
386 /* Next type with the same name. */
387 struct coff_debug_merge_type *next;
388
389 /* Class of type. */
96d56e9f 390 int type_class;
252b5132
RH
391
392 /* Symbol index where this type is defined. */
393 long indx;
394
395 /* List of elements. */
396 struct coff_debug_merge_element *elements;
397};
398
399/* Information we store in the debug merge hash table. */
400
401struct coff_debug_merge_hash_entry
402{
403 struct bfd_hash_entry root;
404
405 /* A list of types with this name. */
406 struct coff_debug_merge_type *types;
407};
408
409/* The debug merge hash table. */
410
411struct coff_debug_merge_hash_table
412{
413 struct bfd_hash_table root;
414};
415
416/* Initialize a COFF debug merge hash table. */
417
418#define coff_debug_merge_hash_table_init(table) \
66eb6687
AM
419 (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
420 sizeof (struct coff_debug_merge_hash_entry)))
252b5132
RH
421
422/* Free a COFF debug merge hash table. */
423
424#define coff_debug_merge_hash_table_free(table) \
425 (bfd_hash_table_free (&(table)->root))
426
427/* Look up an entry in a COFF debug merge hash table. */
428
429#define coff_debug_merge_hash_lookup(table, string, create, copy) \
430 ((struct coff_debug_merge_hash_entry *) \
431 bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
432
433/* Information we keep for each section in the output file when doing
1049f94e 434 a relocatable link. */
252b5132
RH
435
436struct coff_link_section_info
437{
438 /* The relocs to be output. */
439 struct internal_reloc *relocs;
440 /* For each reloc against a global symbol whose index was not known
441 when the reloc was handled, the global hash table entry. */
442 struct coff_link_hash_entry **rel_hashes;
443};
444
445/* Information that we pass around while doing the final link step. */
446
447struct coff_final_link_info
448{
449 /* General link information. */
450 struct bfd_link_info *info;
451 /* Output BFD. */
452 bfd *output_bfd;
453 /* Used to indicate failure in traversal routine. */
b34976b6 454 bfd_boolean failed;
252b5132
RH
455 /* If doing "task linking" set only during the time when we want the
456 global symbol writer to convert the storage class of defined global
457 symbols from global to static. */
b34976b6 458 bfd_boolean global_to_static;
252b5132
RH
459 /* Hash table for long symbol names. */
460 struct bfd_strtab_hash *strtab;
1049f94e 461 /* When doing a relocatable link, an array of information kept for
252b5132
RH
462 each output section, indexed by the target_index field. */
463 struct coff_link_section_info *section_info;
464 /* Symbol index of last C_FILE symbol (-1 if none). */
465 long last_file_index;
466 /* Contents of last C_FILE symbol. */
467 struct internal_syment last_file;
468 /* Symbol index of first aux entry of last .bf symbol with an empty
469 endndx field (-1 if none). */
470 long last_bf_index;
471 /* Contents of last_bf_index aux entry. */
472 union internal_auxent last_bf;
473 /* Hash table used to merge debug information. */
474 struct coff_debug_merge_hash_table debug_merge;
475 /* Buffer large enough to hold swapped symbols of any input file. */
476 struct internal_syment *internal_syms;
477 /* Buffer large enough to hold sections of symbols of any input file. */
478 asection **sec_ptrs;
479 /* Buffer large enough to hold output indices of symbols of any
480 input file. */
481 long *sym_indices;
482 /* Buffer large enough to hold output symbols for any input file. */
483 bfd_byte *outsyms;
484 /* Buffer large enough to hold external line numbers for any input
485 section. */
486 bfd_byte *linenos;
487 /* Buffer large enough to hold any input section. */
488 bfd_byte *contents;
489 /* Buffer large enough to hold external relocs of any input section. */
490 bfd_byte *external_relocs;
491 /* Buffer large enough to hold swapped relocs of any input section. */
492 struct internal_reloc *internal_relocs;
493};
494
5dccc1dd
ILT
495/* Most COFF variants have no way to record the alignment of a
496 section. This struct is used to set a specific alignment based on
497 the name of the section. */
498
499struct coff_section_alignment_entry
500{
501 /* The section name. */
502 const char *name;
503
504 /* This is either (unsigned int) -1, indicating that the section
505 name must match exactly, or it is the number of letters which
506 must match at the start of the name. */
507 unsigned int comparison_length;
508
509 /* These macros may be used to fill in the first two fields in a
510 structure initialization. */
511#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
512#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
513
514 /* Only use this entry if the default section alignment for this
515 target is at least that much (as a power of two). If this field
516 is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
517 unsigned int default_alignment_min;
518
519 /* Only use this entry if the default section alignment for this
520 target is no greater than this (as a power of two). If this
521 field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
522 unsigned int default_alignment_max;
523
524#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
525
526 /* The desired alignment for this section (as a power of two). */
527 unsigned int alignment_power;
528};
529
252b5132 530extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
7920ce38 531 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
b34976b6 532extern bfd_boolean _bfd_coff_link_hash_table_init
7920ce38
NC
533 (struct coff_link_hash_table *, bfd *,
534 struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
535 struct bfd_hash_table *,
66eb6687
AM
536 const char *),
537 unsigned int);
252b5132 538extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
7920ce38 539 (bfd *);
252b5132 540extern const char *_bfd_coff_internal_syment_name
7920ce38 541 (bfd *, const struct internal_syment *, char *);
c77ec726
AM
542extern bfd_boolean _bfd_coff_section_already_linked
543 (bfd *, asection *, struct bfd_link_info *);
b34976b6 544extern bfd_boolean _bfd_coff_link_add_symbols
7920ce38 545 (bfd *, struct bfd_link_info *);
b34976b6 546extern bfd_boolean _bfd_coff_final_link
7920ce38 547 (bfd *, struct bfd_link_info *);
252b5132 548extern struct internal_reloc *_bfd_coff_read_internal_relocs
7920ce38
NC
549 (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
550 struct internal_reloc *);
b34976b6 551extern bfd_boolean _bfd_coff_generic_relocate_section
7920ce38
NC
552 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
553 struct internal_reloc *, struct internal_syment *, asection **);
252b5132 554extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
7920ce38 555 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
b34976b6 556extern bfd_boolean _bfd_coff_write_global_sym
7686d77d 557 (struct bfd_hash_entry *, void *);
b34976b6 558extern bfd_boolean _bfd_coff_write_task_globals
7920ce38 559 (struct coff_link_hash_entry *, void *);
b34976b6 560extern bfd_boolean _bfd_coff_link_input_bfd
7920ce38 561 (struct coff_final_link_info *, bfd *);
b34976b6 562extern bfd_boolean _bfd_coff_reloc_link_order
7920ce38
NC
563 (bfd *, struct coff_final_link_info *, asection *,
564 struct bfd_link_order *);
252b5132
RH
565
566
567#define coff_get_section_contents_in_window \
568 _bfd_generic_get_section_contents_in_window
569
570/* Functions in xcofflink.c. */
571
dc810e39 572extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
7920ce38 573 (bfd *);
252b5132 574extern long _bfd_xcoff_canonicalize_dynamic_symtab
7920ce38 575 (bfd *, asymbol **);
dc810e39 576extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
7920ce38 577 (bfd *);
252b5132 578extern long _bfd_xcoff_canonicalize_dynamic_reloc
7920ce38 579 (bfd *, arelent **, asymbol **);
252b5132 580extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
7920ce38 581 (bfd *);
b34976b6 582extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
7920ce38 583 (bfd *, struct bfd_link_info *);
b34976b6 584extern bfd_boolean _bfd_xcoff_bfd_final_link
7920ce38 585 (bfd *, struct bfd_link_info *);
3023e3f6
RS
586extern bfd_boolean _bfd_xcoff_define_common_symbol
587 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
b34976b6 588extern bfd_boolean _bfd_ppc_xcoff_relocate_section
7920ce38
NC
589 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
590 struct internal_reloc *, struct internal_syment *, asection **);
252b5132 591
88183869 592/* Functions in coff-ppc.c. FIXME: These are called by pe.em in the
252b5132
RH
593 linker, and so should start with bfd and be declared in bfd.h. */
594
b34976b6 595extern bfd_boolean ppc_allocate_toc_section
7920ce38 596 (struct bfd_link_info *);
b34976b6 597extern bfd_boolean ppc_process_before_allocation
7920ce38 598 (bfd *, struct bfd_link_info *);
This page took 0.898635 seconds and 4 git commands to generate.