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