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