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