Missing ChangeLog and files for commit 8b00c176168dc7b0d78d0dc1f7d42f915375dc4a
[deliverable/binutils-gdb.git] / bfd / libcoff-in.h
CommitLineData
252b5132 1/* BFD COFF object file private structure.
2571583a 2 Copyright (C) 1990-2017 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
0f088b2a
KT
268struct coff_reloc_cookie
269{
270 struct internal_reloc * rels;
271 struct internal_reloc * rel;
272 struct internal_reloc * relend;
273 struct coff_symbol_struct * symbols; /* Symtab for input bfd. */
274 bfd * abfd;
275 struct coff_link_hash_entry ** sym_hashes;
276};
277
252b5132
RH
278/* Look up an entry in a COFF linker hash table. */
279
280#define coff_link_hash_lookup(table, string, create, copy, follow) \
281 ((struct coff_link_hash_entry *) \
282 bfd_link_hash_lookup (&(table)->root, (string), (create), \
283 (copy), (follow)))
284
285/* Traverse a COFF linker hash table. */
286
287#define coff_link_hash_traverse(table, func, info) \
288 (bfd_link_hash_traverse \
289 (&(table)->root, \
7920ce38 290 (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
252b5132
RH
291 (info)))
292
293/* Get the COFF linker hash table from a link_info structure. */
294
295#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
296
297/* Functions in coffgen.c. */
dc810e39 298extern const bfd_target *coff_object_p
7920ce38 299 (bfd *);
198beae2 300extern struct bfd_section *coff_section_from_bfd_index
7920ce38 301 (bfd *, int);
dc810e39 302extern long coff_get_symtab_upper_bound
7920ce38 303 (bfd *);
6cee3f79 304extern long coff_canonicalize_symtab
7920ce38 305 (bfd *, asymbol **);
dc810e39 306extern int coff_count_linenumbers
7920ce38 307 (bfd *);
b34976b6 308extern bfd_boolean coff_renumber_symbols
7920ce38 309 (bfd *, int *);
dc810e39 310extern void coff_mangle_symbols
7920ce38 311 (bfd *);
b34976b6 312extern bfd_boolean coff_write_symbols
7920ce38 313 (bfd *);
e7ebb214 314extern bfd_boolean coff_write_alien_symbol
270f8245
JB
315 (bfd *, asymbol *, struct internal_syment *, union internal_auxent *,
316 bfd_vma *, bfd_size_type *, asection **, bfd_size_type *);
b34976b6 317extern bfd_boolean coff_write_linenumbers
7920ce38 318 (bfd *);
dc810e39 319extern alent *coff_get_lineno
7920ce38 320 (bfd *, asymbol *);
dc810e39 321extern asymbol *coff_section_symbol
7920ce38 322 (bfd *, char *);
b34976b6 323extern bfd_boolean _bfd_coff_get_external_symbols
7920ce38 324 (bfd *);
dc810e39 325extern const char *_bfd_coff_read_string_table
7920ce38 326 (bfd *);
b34976b6 327extern bfd_boolean _bfd_coff_free_symbols
7920ce38 328 (bfd *);
dc810e39 329extern struct coff_ptr_struct *coff_get_normalized_symtab
7920ce38 330 (bfd *);
dc810e39 331extern long coff_get_reloc_upper_bound
7920ce38 332 (bfd *, sec_ptr);
dc810e39 333extern asymbol *coff_make_empty_symbol
7920ce38 334 (bfd *);
dc810e39 335extern void coff_print_symbol
7920ce38 336 (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
dc810e39 337extern void coff_get_symbol_info
7920ce38 338 (bfd *, asymbol *, symbol_info *ret);
60bb06bc
L
339#define coff_get_symbol_version_string \
340 _bfd_nosymbols_get_symbol_version_string
b34976b6 341extern bfd_boolean _bfd_coff_is_local_label_name
7920ce38 342 (bfd *, const char *);
dc810e39 343extern asymbol *coff_bfd_make_debug_symbol
7920ce38 344 (bfd *, void *, unsigned long);
b34976b6 345extern bfd_boolean coff_find_nearest_line
fb167eb2
AM
346 (bfd *, asymbol **, asection *, bfd_vma,
347 const char **, const char **, unsigned int *, unsigned int *);
9c461f7d 348#define coff_find_line _bfd_nosymbols_find_line
fc28f9aa
TG
349struct dwarf_debug_section;
350extern bfd_boolean coff_find_nearest_line_with_names
fb167eb2
AM
351 (bfd *, asymbol **, asection *, bfd_vma, const char **, const char **,
352 unsigned int *, const struct dwarf_debug_section *);
4ab527b0
FF
353extern bfd_boolean coff_find_inliner_info
354 (bfd *, const char **, const char **, unsigned int *);
dc810e39 355extern int coff_sizeof_headers
a6b96beb 356 (bfd *, struct bfd_link_info *);
b34976b6 357extern bfd_boolean bfd_coff_reloc16_relax_section
7920ce38 358 (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
252b5132 359extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
7920ce38
NC
360 (bfd *, struct bfd_link_info *, struct bfd_link_order *,
361 bfd_byte *, bfd_boolean, asymbol **);
dc810e39 362extern bfd_vma bfd_coff_reloc16_get_value
7920ce38 363 (arelent *, struct bfd_link_info *, asection *);
dc810e39 364extern void bfd_perform_slip
7920ce38 365 (bfd *, unsigned int, asection *, bfd_vma);
252b5132
RH
366
367/* Functions and types in cofflink.c. */
368
116c20d2 369#define STRING_SIZE_SIZE 4
252b5132
RH
370
371/* We use a hash table to merge identical enum, struct, and union
372 definitions in the linker. */
373
374/* Information we keep for a single element (an enum value, a
375 structure or union field) in the debug merge hash table. */
376
377struct coff_debug_merge_element
378{
379 /* Next element. */
380 struct coff_debug_merge_element *next;
381
382 /* Name. */
383 const char *name;
384
385 /* Type. */
386 unsigned int type;
387
388 /* Symbol index for complex type. */
389 long tagndx;
390};
391
392/* A linked list of debug merge entries for a given name. */
393
394struct coff_debug_merge_type
395{
396 /* Next type with the same name. */
397 struct coff_debug_merge_type *next;
398
399 /* Class of type. */
96d56e9f 400 int type_class;
252b5132
RH
401
402 /* Symbol index where this type is defined. */
403 long indx;
404
405 /* List of elements. */
406 struct coff_debug_merge_element *elements;
407};
408
409/* Information we store in the debug merge hash table. */
410
411struct coff_debug_merge_hash_entry
412{
413 struct bfd_hash_entry root;
414
415 /* A list of types with this name. */
416 struct coff_debug_merge_type *types;
417};
418
419/* The debug merge hash table. */
420
421struct coff_debug_merge_hash_table
422{
423 struct bfd_hash_table root;
424};
425
426/* Initialize a COFF debug merge hash table. */
427
428#define coff_debug_merge_hash_table_init(table) \
66eb6687
AM
429 (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
430 sizeof (struct coff_debug_merge_hash_entry)))
252b5132
RH
431
432/* Free a COFF debug merge hash table. */
433
434#define coff_debug_merge_hash_table_free(table) \
435 (bfd_hash_table_free (&(table)->root))
436
437/* Look up an entry in a COFF debug merge hash table. */
438
439#define coff_debug_merge_hash_lookup(table, string, create, copy) \
440 ((struct coff_debug_merge_hash_entry *) \
441 bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
442
443/* Information we keep for each section in the output file when doing
1049f94e 444 a relocatable link. */
252b5132
RH
445
446struct coff_link_section_info
447{
448 /* The relocs to be output. */
449 struct internal_reloc *relocs;
450 /* For each reloc against a global symbol whose index was not known
451 when the reloc was handled, the global hash table entry. */
452 struct coff_link_hash_entry **rel_hashes;
453};
454
455/* Information that we pass around while doing the final link step. */
456
457struct coff_final_link_info
458{
459 /* General link information. */
460 struct bfd_link_info *info;
461 /* Output BFD. */
462 bfd *output_bfd;
463 /* Used to indicate failure in traversal routine. */
b34976b6 464 bfd_boolean failed;
252b5132
RH
465 /* If doing "task linking" set only during the time when we want the
466 global symbol writer to convert the storage class of defined global
467 symbols from global to static. */
b34976b6 468 bfd_boolean global_to_static;
252b5132
RH
469 /* Hash table for long symbol names. */
470 struct bfd_strtab_hash *strtab;
1049f94e 471 /* When doing a relocatable link, an array of information kept for
252b5132
RH
472 each output section, indexed by the target_index field. */
473 struct coff_link_section_info *section_info;
474 /* Symbol index of last C_FILE symbol (-1 if none). */
475 long last_file_index;
476 /* Contents of last C_FILE symbol. */
477 struct internal_syment last_file;
478 /* Symbol index of first aux entry of last .bf symbol with an empty
479 endndx field (-1 if none). */
480 long last_bf_index;
481 /* Contents of last_bf_index aux entry. */
482 union internal_auxent last_bf;
483 /* Hash table used to merge debug information. */
484 struct coff_debug_merge_hash_table debug_merge;
485 /* Buffer large enough to hold swapped symbols of any input file. */
486 struct internal_syment *internal_syms;
487 /* Buffer large enough to hold sections of symbols of any input file. */
488 asection **sec_ptrs;
489 /* Buffer large enough to hold output indices of symbols of any
490 input file. */
491 long *sym_indices;
492 /* Buffer large enough to hold output symbols for any input file. */
493 bfd_byte *outsyms;
494 /* Buffer large enough to hold external line numbers for any input
495 section. */
496 bfd_byte *linenos;
497 /* Buffer large enough to hold any input section. */
498 bfd_byte *contents;
499 /* Buffer large enough to hold external relocs of any input section. */
500 bfd_byte *external_relocs;
501 /* Buffer large enough to hold swapped relocs of any input section. */
502 struct internal_reloc *internal_relocs;
503};
504
5dccc1dd
ILT
505/* Most COFF variants have no way to record the alignment of a
506 section. This struct is used to set a specific alignment based on
507 the name of the section. */
508
509struct coff_section_alignment_entry
510{
511 /* The section name. */
512 const char *name;
513
514 /* This is either (unsigned int) -1, indicating that the section
515 name must match exactly, or it is the number of letters which
516 must match at the start of the name. */
517 unsigned int comparison_length;
518
519 /* These macros may be used to fill in the first two fields in a
520 structure initialization. */
521#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
522#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
523
524 /* Only use this entry if the default section alignment for this
525 target is at least that much (as a power of two). If this field
526 is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
527 unsigned int default_alignment_min;
528
529 /* Only use this entry if the default section alignment for this
530 target is no greater than this (as a power of two). If this
531 field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
532 unsigned int default_alignment_max;
533
534#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
535
536 /* The desired alignment for this section (as a power of two). */
537 unsigned int alignment_power;
538};
539
252b5132 540extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
7920ce38 541 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
b34976b6 542extern bfd_boolean _bfd_coff_link_hash_table_init
7920ce38
NC
543 (struct coff_link_hash_table *, bfd *,
544 struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
545 struct bfd_hash_table *,
66eb6687
AM
546 const char *),
547 unsigned int);
252b5132 548extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
7920ce38 549 (bfd *);
252b5132 550extern const char *_bfd_coff_internal_syment_name
7920ce38 551 (bfd *, const struct internal_syment *, char *);
c77ec726
AM
552extern bfd_boolean _bfd_coff_section_already_linked
553 (bfd *, asection *, struct bfd_link_info *);
b34976b6 554extern bfd_boolean _bfd_coff_link_add_symbols
7920ce38 555 (bfd *, struct bfd_link_info *);
b34976b6 556extern bfd_boolean _bfd_coff_final_link
7920ce38 557 (bfd *, struct bfd_link_info *);
252b5132 558extern struct internal_reloc *_bfd_coff_read_internal_relocs
7920ce38
NC
559 (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
560 struct internal_reloc *);
b34976b6 561extern bfd_boolean _bfd_coff_generic_relocate_section
7920ce38
NC
562 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
563 struct internal_reloc *, struct internal_syment *, asection **);
252b5132 564extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
7920ce38 565 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
b34976b6 566extern bfd_boolean _bfd_coff_write_global_sym
7686d77d 567 (struct bfd_hash_entry *, void *);
b34976b6 568extern bfd_boolean _bfd_coff_write_task_globals
7920ce38 569 (struct coff_link_hash_entry *, void *);
b34976b6 570extern bfd_boolean _bfd_coff_link_input_bfd
7920ce38 571 (struct coff_final_link_info *, bfd *);
b34976b6 572extern bfd_boolean _bfd_coff_reloc_link_order
7920ce38
NC
573 (bfd *, struct coff_final_link_info *, asection *,
574 struct bfd_link_order *);
0f088b2a
KT
575extern bfd_boolean bfd_coff_gc_sections
576 (bfd *, struct bfd_link_info *);
252b5132
RH
577
578
579#define coff_get_section_contents_in_window \
580 _bfd_generic_get_section_contents_in_window
581
582/* Functions in xcofflink.c. */
583
dc810e39 584extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
7920ce38 585 (bfd *);
252b5132 586extern long _bfd_xcoff_canonicalize_dynamic_symtab
7920ce38 587 (bfd *, asymbol **);
dc810e39 588extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
7920ce38 589 (bfd *);
252b5132 590extern long _bfd_xcoff_canonicalize_dynamic_reloc
7920ce38 591 (bfd *, arelent **, asymbol **);
252b5132 592extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
7920ce38 593 (bfd *);
b34976b6 594extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
7920ce38 595 (bfd *, struct bfd_link_info *);
b34976b6 596extern bfd_boolean _bfd_xcoff_bfd_final_link
7920ce38 597 (bfd *, struct bfd_link_info *);
3023e3f6
RS
598extern bfd_boolean _bfd_xcoff_define_common_symbol
599 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
b34976b6 600extern bfd_boolean _bfd_ppc_xcoff_relocate_section
7920ce38
NC
601 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
602 struct internal_reloc *, struct internal_syment *, asection **);
252b5132 603
88183869 604/* Functions in coff-ppc.c. FIXME: These are called by pe.em in the
252b5132
RH
605 linker, and so should start with bfd and be declared in bfd.h. */
606
b34976b6 607extern bfd_boolean ppc_allocate_toc_section
7920ce38 608 (struct bfd_link_info *);
b34976b6 609extern bfd_boolean ppc_process_before_allocation
7920ce38 610 (bfd *, struct bfd_link_info *);
This page took 0.920733 seconds and 4 git commands to generate.