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