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