Start of sparc generic testsuite.
[deliverable/binutils-gdb.git] / bfd / bfd-in.h
CommitLineData
00539ee3 1/* Main header file for the bfd library -- portable access to object files.
3b1f83ad 2 Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
63ffe5ef
SC
3 Contributed by Cygnus Support.
4
1fa5371e
KR
5** NOTE: bfd.h and bfd-in2.h are GENERATED files. Don't change them;
6** instead, change bfd-in.h or the other BFD source files processed to
7** generate these files.
8
63ffe5ef
SC
9This file is part of BFD, the Binary File Descriptor library.
10
11This program is free software; you can redistribute it and/or modify
12it under the terms of the GNU General Public License as published by
13the Free Software Foundation; either version 2 of the License, or
14(at your option) any later version.
15
16This program is distributed in the hope that it will be useful,
17but WITHOUT ANY WARRANTY; without even the implied warranty of
18MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License
22along with this program; if not, write to the Free Software
23Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
24
25/* bfd.h -- The only header file required by users of the bfd library
26
00539ee3
JG
27The bfd.h file is generated from bfd-in.h and various .c files; if you
28change it, your changes will probably be lost.
63ffe5ef
SC
29
30All the prototypes and definitions following the comment "THE FOLLOWING
31IS EXTRACTED FROM THE SOURCE" are extracted from the source files for
32BFD. If you change it, someone oneday will extract it from the source
33again, and your changes will be lost. To save yourself from this bind,
34change the definitions in the source in the bfd directory. Type "make
35docs" and then "make headers" in that directory, and magically this file
36will change to reflect your changes.
37
38If you don't have the tools to perform the extraction, then you are
39safe from someone on your system trampling over your header files.
40You should still maintain the equivalence between the source and this
41file though; every change you make to the .c file should be reflected
42here. */
43
44#ifndef __BFD_H_SEEN__
45#define __BFD_H_SEEN__
46
47#include "ansidecl.h"
48#include "obstack.h"
49
9deaaaf1
ILT
50/* These two lines get substitutions done by commands in Makefile.in. */
51#define BFD_VERSION "@VERSION@"
034a8a56
KR
52#define BFD_ARCH_SIZE @WORDSIZE@
53
54#if BFD_ARCH_SIZE >= 64
55#define BFD64
56#endif
57
1fa5371e
KR
58#ifndef INLINE
59#if __GNUC__ >= 2
60#define INLINE __inline__
61#else
62#define INLINE
63#endif
64#endif
65
58488bc6
KR
66/* 64-bit type definition (if any) from bfd's sysdep.h goes here */
67
63ffe5ef
SC
68
69/* forward declaration */
70typedef struct _bfd bfd;
71
034a8a56
KR
72/* To squelch erroneous compiler warnings ("illegal pointer
73 combination") from the SVR3 compiler, we would like to typedef
74 boolean to int (it doesn't like functions which return boolean.
75 Making sure they are never implicitly declared to return int
76 doesn't seem to help). But this file is not configured based on
77 the host. */
63ffe5ef
SC
78/* General rules: functions which are boolean return true on success
79 and false on failure (unless they're a predicate). -- bfd.doc */
80/* I'm sure this is going to break something and someone is going to
81 force me to change it. */
f004165e
JG
82/* typedef enum boolean {false, true} boolean; */
83/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
442da995 84/* It gets worse if the host also defines a true/false enum... -sts */
3b1f83ad
JL
85/* And even worse if your compiler has built-in boolean types... -law */
86#if defined (__GNUG__) && (__GNUC_MINOR__ > 5)
87#define TRUE_FALSE_ALREADY_DEFINED
88#endif
442da995 89#ifndef TRUE_FALSE_ALREADY_DEFINED
f004165e 90typedef enum bfd_boolean {false, true} boolean;
442da995
SS
91#define BFD_TRUE_FALSE
92#else
e0151f38
SS
93/* Use enum names that will appear nowhere else. */
94typedef enum bfd_boolean {bfd_fffalse, bfd_tttrue} boolean;
442da995 95#endif
63ffe5ef 96
00539ee3
JG
97/* A pointer to a position in a file. */
98/* FIXME: This should be using off_t from <sys/types.h>.
99 For now, try to avoid breaking stuff by not including <sys/types.h> here.
100 This will break on systems with 64-bit file offsets (e.g. 4.4BSD).
101 Probably the best long-term answer is to avoid using file_ptr AND off_t
102 in this header file, and to handle this in the BFD implementation
103 rather than in its interface. */
104/* typedef off_t file_ptr; */
105typedef long int file_ptr;
63ffe5ef 106
3b1f83ad
JL
107/* Support for different sizes of target format ints and addresses.
108 If the host implements 64-bit values, it defines BFD_HOST_64_BIT to
109 be the appropriate type. Otherwise, this code will fall back on
110 gcc's "long long" type if gcc is being used. BFD_HOST_64_BIT must
111 be defined in such a way as to be a valid type name by itself or
112 with "unsigned" prefixed. It should be a signed type by itself.
034a8a56 113
3b1f83ad
JL
114 If neither is the case, then compilation will fail if 64-bit
115 targets are requested. If you don't request any 64-bit targets,
116 you should be safe. */
034a8a56
KR
117
118#ifdef BFD64
119
9deaaaf1
ILT
120#if defined (__GNUC__) && !defined (BFD_HOST_64_BIT)
121#define BFD_HOST_64_BIT long long
122typedef BFD_HOST_64_BIT int64_type;
123typedef unsigned BFD_HOST_64_BIT uint64_type;
034a8a56 124#endif
63ffe5ef 125
1fa5371e
KR
126#if !defined (uint64_type) && defined (__GNUC__)
127#define uint64_type unsigned long long
128#define int64_type long long
d110544c
KR
129#endif
130#ifndef uint64_typeLOW
4c3721d5
ILT
131#define uint64_typeLOW(x) ((unsigned long)(((x) & 0xffffffff)))
132#define uint64_typeHIGH(x) ((unsigned long)(((x) >> 32) & 0xffffffff))
1fa5371e
KR
133#endif
134
9deaaaf1
ILT
135typedef unsigned BFD_HOST_64_BIT bfd_vma;
136typedef BFD_HOST_64_BIT bfd_signed_vma;
137typedef unsigned BFD_HOST_64_BIT bfd_size_type;
138typedef unsigned BFD_HOST_64_BIT symvalue;
d110544c 139#ifndef fprintf_vma
63ffe5ef 140#define fprintf_vma(s,x) \
4c3721d5 141 fprintf(s,"%08lx%08lx", uint64_typeHIGH(x), uint64_typeLOW(x))
1fa5371e 142#define sprintf_vma(s,x) \
4c3721d5 143 sprintf(s,"%08lx%08lx", uint64_typeHIGH(x), uint64_typeLOW(x))
d110544c 144#endif
034a8a56 145#else /* not BFD64 */
14e3c2e4
JK
146
147/* Represent a target address. Also used as a generic unsigned type
148 which is guaranteed to be big enough to hold any arithmetic types
149 we need to deal with. */
63ffe5ef 150typedef unsigned long bfd_vma;
14e3c2e4
JK
151
152/* A generic signed type which is guaranteed to be big enough to hold any
153 arithmetic types we need to deal with. Can be assumed to be compatible
154 with bfd_vma in the same way that signed and unsigned ints are compatible
155 (as parameters, in assignment, etc). */
156typedef long bfd_signed_vma;
157
63ffe5ef
SC
158typedef unsigned long symvalue;
159typedef unsigned long bfd_size_type;
14e3c2e4
JK
160
161/* Print a bfd_vma x on stream s. */
63ffe5ef 162#define fprintf_vma(s,x) fprintf(s, "%08lx", x)
1fa5371e 163#define sprintf_vma(s,x) sprintf(s, "%08lx", x)
034a8a56 164#endif /* not BFD64 */
e98e6ec1 165#define printf_vma(x) fprintf_vma(stdout,x)
63ffe5ef
SC
166
167typedef unsigned int flagword; /* 32 bits of flags */
3b1f83ad 168typedef unsigned char bfd_byte;
63ffe5ef
SC
169\f
170/** File formats */
171
172typedef enum bfd_format {
173 bfd_unknown = 0, /* file format is unknown */
174 bfd_object, /* linker/assember/compiler output */
175 bfd_archive, /* object archive file */
176 bfd_core, /* core dump */
177 bfd_type_end} /* marks the end; don't use it! */
178 bfd_format;
179
8d12f138
ILT
180/* Values that may appear in the flags field of a BFD. These also
181 appear in the object_flags field of the bfd_target structure, where
182 they indicate the set of flags used by that backend (not all flags
183 are meaningful for all object file formats) (FIXME: at the moment,
184 the object_flags values have mostly just been copied from backend
185 to another, and are not necessarily correct). */
186
187/* No flags. */
294eaca4 188#define NO_FLAGS 0x00
8d12f138
ILT
189
190/* BFD contains relocation entries. */
294eaca4 191#define HAS_RELOC 0x01
8d12f138
ILT
192
193/* BFD is directly executable. */
294eaca4 194#define EXEC_P 0x02
8d12f138
ILT
195
196/* BFD has line number information (basically used for F_LNNO in a
197 COFF header). */
294eaca4 198#define HAS_LINENO 0x04
8d12f138
ILT
199
200/* BFD has debugging information. */
294eaca4 201#define HAS_DEBUG 0x08
8d12f138
ILT
202
203/* BFD has symbols. */
294eaca4 204#define HAS_SYMS 0x10
8d12f138
ILT
205
206/* BFD has local symbols (basically used for F_LSYMS in a COFF
207 header). */
294eaca4 208#define HAS_LOCALS 0x20
8d12f138
ILT
209
210/* BFD is a dynamic object. */
294eaca4 211#define DYNAMIC 0x40
8d12f138
ILT
212
213/* Text section is write protected (if D_PAGED is not set, this is
214 like an a.out NMAGIC file) (the linker sets this by default, but
215 clears it for -r or -N). */
294eaca4 216#define WP_TEXT 0x80
8d12f138
ILT
217
218/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
219 linker sets this by default, but clears it for -r or -n or -N). */
294eaca4 220#define D_PAGED 0x100
8d12f138
ILT
221
222/* BFD is relaxable (this means that bfd_relax_section may be able to
3b1f83ad
JL
223 do something) (sometimes bfd_relax_section can do something even if
224 this is not set). */
294eaca4 225#define BFD_IS_RELAXABLE 0x200
a7ff9b80
ILT
226
227/* This may be set before writing out a BFD to request using a
228 traditional format. For example, this is used to request that when
229 writing out an a.out object the symbols not be hashed to eliminate
230 duplicates. */
231#define BFD_TRADITIONAL_FORMAT 0x400
63ffe5ef
SC
232\f
233/* symbols and relocation */
234
0f8f509c 235/* A count of carsyms (canonical archive symbols). */
63ffe5ef
SC
236typedef unsigned long symindex;
237
3b1f83ad
JL
238/* How to perform a relocation. */
239typedef const struct reloc_howto_struct reloc_howto_type;
240
63ffe5ef
SC
241#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
242
0f8f509c
DM
243/* General purpose part of a symbol X;
244 target specific parts are in libcoff.h, libaout.h, etc. */
63ffe5ef
SC
245
246#define bfd_get_section(x) ((x)->section)
247#define bfd_get_output_section(x) ((x)->section->output_section)
248#define bfd_set_section(x,y) ((x)->section) = (y)
0c2fae09 249#define bfd_asymbol_base(x) ((x)->section->vma)
ec30dfba 250#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
63ffe5ef 251#define bfd_asymbol_name(x) ((x)->name)
0c2fae09
ILT
252/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
253#define bfd_asymbol_bfd(x) ((x)->the_bfd)
254#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
63ffe5ef 255
0f8f509c 256/* A canonical archive symbol. */
63ffe5ef
SC
257/* This is a type pun with struct ranlib on purpose! */
258typedef struct carsym {
259 char *name;
260 file_ptr file_offset; /* look here to find the file */
261} carsym; /* to make these you call a carsymogen */
262
263
0f8f509c
DM
264/* Used in generating armaps (archive tables of contents).
265 Perhaps just a forward definition would do? */
63ffe5ef
SC
266struct orl { /* output ranlib */
267 char **name; /* symbol name */
268 file_ptr pos; /* bfd* or file position */
269 int namidx; /* index into string table */
270};
63ffe5ef
SC
271\f
272
273/* Linenumber stuff */
274typedef struct lineno_cache_entry {
275 unsigned int line_number; /* Linenumber from start of function*/
276 union {
0f8f509c 277 struct symbol_cache_entry *sym; /* Function name */
63ffe5ef
SC
278 unsigned long offset; /* Offset into section */
279 } u;
280} alent;
281\f
282/* object and core file sections */
283
63ffe5ef
SC
284#define align_power(addr, align) \
285 ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
286
287typedef struct sec *sec_ptr;
288
294eaca4
SC
289#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
290#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
291#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
63ffe5ef 292#define bfd_section_name(bfd, ptr) ((ptr)->name)
e98e6ec1 293#define bfd_section_size(bfd, ptr) (bfd_get_section_size_before_reloc(ptr))
63ffe5ef
SC
294#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
295#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
294eaca4 296#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
63ffe5ef
SC
297#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
298
ec30dfba
JG
299#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
300
e0151f38 301#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = (boolean)true), true)
6167a840
JL
302#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
303#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
63ffe5ef
SC
304
305typedef struct stat stat_type;
306\f
63ffe5ef
SC
307typedef enum bfd_print_symbol
308{
cbdc7909
JG
309 bfd_print_symbol_name,
310 bfd_print_symbol_more,
034a8a56 311 bfd_print_symbol_all
cbdc7909 312} bfd_print_symbol_type;
63ffe5ef 313
034a8a56
KR
314/* Information about a symbol that nm needs. */
315
316typedef struct _symbol_info
317{
318 symvalue value;
0f8f509c 319 char type;
034a8a56
KR
320 CONST char *name; /* Symbol name. */
321 char stab_other; /* Unused. */
322 short stab_desc; /* Info for N_TYPE. */
323 CONST char *stab_name;
324} symbol_info;
63ffe5ef 325\f
4c3721d5
ILT
326/* Hash table routines. There is no way to free up a hash table. */
327
328/* An element in the hash table. Most uses will actually use a larger
329 structure, and an instance of this will be the first field. */
330
331struct bfd_hash_entry
332{
333 /* Next entry for this hash code. */
334 struct bfd_hash_entry *next;
335 /* String being hashed. */
336 const char *string;
337 /* Hash code. This is the full hash code, not the index into the
338 table. */
339 unsigned long hash;
340};
341
342/* A hash table. */
343
344struct bfd_hash_table
345{
346 /* The hash array. */
347 struct bfd_hash_entry **table;
348 /* The number of slots in the hash table. */
349 unsigned int size;
350 /* A function used to create new elements in the hash table. The
351 first entry is itself a pointer to an element. When this
352 function is first invoked, this pointer will be NULL. However,
353 having the pointer permits a hierarchy of method functions to be
354 built each of which calls the function in the superclass. Thus
355 each function should be written to allocate a new block of memory
356 only if the argument is NULL. */
357 struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
358 struct bfd_hash_table *,
359 const char *));
360 /* An obstack for this hash table. */
361 struct obstack memory;
362};
363
364/* Initialize a hash table. */
365extern boolean bfd_hash_table_init
366 PARAMS ((struct bfd_hash_table *,
367 struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
368 struct bfd_hash_table *,
369 const char *)));
370
371/* Initialize a hash table specifying a size. */
372extern boolean bfd_hash_table_init_n
373 PARAMS ((struct bfd_hash_table *,
374 struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
375 struct bfd_hash_table *,
376 const char *),
377 unsigned int size));
378
379/* Free up a hash table. */
380extern void bfd_hash_table_free PARAMS ((struct bfd_hash_table *));
381
382/* Look up a string in a hash table. If CREATE is true, a new entry
383 will be created for this string if one does not already exist. The
384 COPY argument must be true if this routine should copy the string
385 into newly allocated memory when adding an entry. */
386extern struct bfd_hash_entry *bfd_hash_lookup
387 PARAMS ((struct bfd_hash_table *, const char *, boolean create,
388 boolean copy));
389
390/* Base method for creating a hash table entry. */
391extern struct bfd_hash_entry *bfd_hash_newfunc
392 PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
393 const char *));
394
395/* Grab some space for a hash table entry. */
966e0a16
ILT
396extern PTR bfd_hash_allocate PARAMS ((struct bfd_hash_table *,
397 unsigned int));
4c3721d5
ILT
398
399/* Traverse a hash table in a random order, calling a function on each
400 element. If the function returns false, the traversal stops. The
401 INFO argument is passed to the function. */
402extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *,
403 boolean (*) (struct bfd_hash_entry *,
404 PTR),
405 PTR info));
406\f
1fa5371e
KR
407/* Semi-portable string concatenation in cpp.
408 The CAT4 hack is to avoid a problem with some strict ANSI C preprocessors.
409 The problem is, "32_" is not a valid preprocessing token, and we don't
410 want extra underscores (e.g., "nlm_32_"). The XCAT2 macro will cause the
411 inner CAT macros to be evaluated first, producing still-valid pp-tokens.
412 Then the final concatenation can be done. (Sigh.) */
63ffe5ef 413#ifndef CAT
1fa5371e
KR
414#ifdef SABER
415#define CAT(a,b) a##b
416#define CAT3(a,b,c) a##b##c
417#define CAT4(a,b,c,d) a##b##c##d
418#else
442da995 419#if defined(__STDC__) || defined(ALMOST_STDC)
63ffe5ef 420#define CAT(a,b) a##b
034a8a56 421#define CAT3(a,b,c) a##b##c
1fa5371e
KR
422#define XCAT2(a,b) CAT(a,b)
423#define CAT4(a,b,c,d) XCAT2(CAT(a,b),CAT(c,d))
63ffe5ef
SC
424#else
425#define CAT(a,b) a/**/b
034a8a56 426#define CAT3(a,b,c) a/**/b/**/c
1fa5371e
KR
427#define CAT4(a,b,c,d) a/**/b/**/c/**/d
428#endif
63ffe5ef
SC
429#endif
430#endif
431
0c2fae09 432#define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table
63ffe5ef
SC
433\f
434/* User program access to BFD facilities */
435
3b1f83ad
JL
436/* Direct I/O routines, for programs which know more about the object
437 file than BFD does. Use higher level routines if possible. */
438
439extern bfd_size_type bfd_read
440 PARAMS ((PTR, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
441extern bfd_size_type bfd_write
442 PARAMS ((const PTR, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
443extern int bfd_seek PARAMS ((bfd *abfd, file_ptr fp, int direction));
444extern long bfd_tell PARAMS ((bfd *abfd));
445extern int bfd_flush PARAMS ((bfd *abfd));
446extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
447
448/* PE STUFF */
449/* Also define some types which are used within bfdlink.h for the
450 bfd_link_info struct. These are not defined in bfdlink.h for a reason.
451 When the link_info data is passed to bfd from ld, it is copied into
452 extern variables defined in internal.h. The type class for these must
453 be available to any thing that includes internal.h. When internal.h is
454 included, it is always preceeded by an include on this file. If I leave the
455 type definitions in bfdlink.h, then I must include that file when ever
456 I include internal.h, and this is not always a good thing */
457
458/* These are the different types of subsystems to be used when linking for
459 Windows NT. This information is passed in as an input parameter (default
460 is console) and ultimately ends up in the optional header data */
461enum bfd_link_subsystem
462{
463 native, /* image doesn't require a subsystem */
464 windows, /* image runs in the Windows GUI subsystem */
465 console, /* image runs in the Windows CUI (character) subsystem */
466 os2, /* image runs in the OS/2 character subsystem */
467 posix /* image runs in the posix character subsystem */
468};
469/* The NT optional header file allows input of the stack and heap reserve
470 and commit size. This data may be input on the command line and will
471 end up in the optional header. Default sizes are provided. */
472struct _bfd_link_stack_heap
473{
474 boolean stack_defined;
475 boolean heap_defined;
476 bfd_vma stack_reserve;
477 bfd_vma stack_commit;
478 bfd_vma heap_reserve;
479 bfd_vma heap_commit;
480};
481typedef struct _bfd_link_stack_heap bfd_link_stack_heap;
482
483/* END OF PE STUFF */
484
b176e1e9
ILT
485extern enum bfd_link_subsystem NT_subsystem;
486extern bfd_link_stack_heap NT_stack_heap;
487
63ffe5ef
SC
488/* Cast from const char * to char * so that caller can assign to
489 a char * without a warning. */
490#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
8d12f138 491#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
63ffe5ef
SC
492#define bfd_get_format(abfd) ((abfd)->format)
493#define bfd_get_target(abfd) ((abfd)->xvec->name)
8d12f138 494#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
63ffe5ef
SC
495#define bfd_get_file_flags(abfd) ((abfd)->flags)
496#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
497#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
e98e6ec1 498#define bfd_my_archive(abfd) ((abfd)->my_archive)
63ffe5ef 499#define bfd_has_map(abfd) ((abfd)->has_armap)
63ffe5ef
SC
500
501#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
502#define bfd_usrdata(abfd) ((abfd)->usrdata)
503
504#define bfd_get_start_address(abfd) ((abfd)->start_address)
505#define bfd_get_symcount(abfd) ((abfd)->symcount)
506#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
507#define bfd_count_sections(abfd) ((abfd)->section_count)
63ffe5ef 508
294eaca4 509#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
63ffe5ef 510
e0151f38 511#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean)(bool)), true)
8d12f138
ILT
512
513/* Byte swapping routines. */
514
1a973af1
ILT
515bfd_vma bfd_getb64 PARAMS ((const unsigned char *));
516bfd_vma bfd_getl64 PARAMS ((const unsigned char *));
517bfd_signed_vma bfd_getb_signed_64 PARAMS ((const unsigned char *));
518bfd_signed_vma bfd_getl_signed_64 PARAMS ((const unsigned char *));
519bfd_vma bfd_getb32 PARAMS ((const unsigned char *));
520bfd_vma bfd_getl32 PARAMS ((const unsigned char *));
521bfd_signed_vma bfd_getb_signed_32 PARAMS ((const unsigned char *));
522bfd_signed_vma bfd_getl_signed_32 PARAMS ((const unsigned char *));
523bfd_vma bfd_getb16 PARAMS ((const unsigned char *));
524bfd_vma bfd_getl16 PARAMS ((const unsigned char *));
525bfd_signed_vma bfd_getb_signed_16 PARAMS ((const unsigned char *));
526bfd_signed_vma bfd_getl_signed_16 PARAMS ((const unsigned char *));
8d12f138
ILT
527void bfd_putb64 PARAMS ((bfd_vma, unsigned char *));
528void bfd_putl64 PARAMS ((bfd_vma, unsigned char *));
529void bfd_putb32 PARAMS ((bfd_vma, unsigned char *));
530void bfd_putl32 PARAMS ((bfd_vma, unsigned char *));
531void bfd_putb16 PARAMS ((bfd_vma, unsigned char *));
532void bfd_putl16 PARAMS ((bfd_vma, unsigned char *));
013dec1a
ILT
533\f
534/* Externally visible ECOFF routines. */
8d12f138 535
442da995 536#if defined(__STDC__) || defined(ALMOST_STDC)
8d12f138
ILT
537struct ecoff_debug_info;
538struct ecoff_debug_swap;
539struct ecoff_extr;
540struct symbol_cache_entry;
d110544c 541struct bfd_link_info;
8d12f138 542#endif
013dec1a
ILT
543extern bfd_vma bfd_ecoff_get_gp_value PARAMS ((bfd * abfd));
544extern boolean bfd_ecoff_set_gp_value PARAMS ((bfd *abfd, bfd_vma gp_value));
545extern boolean bfd_ecoff_set_regmasks
546 PARAMS ((bfd *abfd, unsigned long gprmask, unsigned long fprmask,
547 unsigned long *cprmask));
d110544c 548extern PTR bfd_ecoff_debug_init
8d12f138 549 PARAMS ((bfd *output_bfd, struct ecoff_debug_info *output_debug,
d110544c
KR
550 const struct ecoff_debug_swap *output_swap,
551 struct bfd_link_info *));
552extern void bfd_ecoff_debug_free
553 PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
554 const struct ecoff_debug_swap *output_swap,
555 struct bfd_link_info *));
556extern boolean bfd_ecoff_debug_accumulate
557 PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
8d12f138
ILT
558 const struct ecoff_debug_swap *output_swap,
559 bfd *input_bfd, struct ecoff_debug_info *input_debug,
560 const struct ecoff_debug_swap *input_swap,
d110544c
KR
561 struct bfd_link_info *));
562extern boolean bfd_ecoff_debug_accumulate_other
563 PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
564 const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
565 struct bfd_link_info *));
8d12f138
ILT
566extern boolean bfd_ecoff_debug_externals
567 PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
568 const struct ecoff_debug_swap *swap,
569 boolean relocateable,
570 boolean (*get_extr) (struct symbol_cache_entry *,
571 struct ecoff_extr *),
572 void (*set_index) (struct symbol_cache_entry *,
573 bfd_size_type)));
966e0a16
ILT
574extern boolean bfd_ecoff_debug_one_external
575 PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
576 const struct ecoff_debug_swap *swap,
577 const char *name, struct ecoff_extr *esym));
8d12f138
ILT
578extern bfd_size_type bfd_ecoff_debug_size
579 PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
580 const struct ecoff_debug_swap *swap));
581extern boolean bfd_ecoff_write_debug
582 PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
583 const struct ecoff_debug_swap *swap, file_ptr where));
d110544c
KR
584extern boolean bfd_ecoff_write_accumulated_debug
585 PARAMS ((PTR handle, bfd *abfd, struct ecoff_debug_info *debug,
586 const struct ecoff_debug_swap *swap,
587 struct bfd_link_info *info, file_ptr where));
3b1f83ad
JL
588extern boolean bfd_mips_ecoff_create_embedded_relocs
589 PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
590 char **));
63ffe5ef 591
013dec1a
ILT
592/* Externally visible ELF routines. */
593
594extern boolean bfd_elf32_record_link_assignment
b5279eb6 595 PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
013dec1a 596extern boolean bfd_elf64_record_link_assignment
b5279eb6 597 PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
b176e1e9
ILT
598struct bfd_elf_link_needed_list
599{
600 struct bfd_elf_link_needed_list *next;
601 bfd *by;
602 const char *name;
603};
604extern struct bfd_elf_link_needed_list *bfd_elf_get_needed_list
605 PARAMS ((bfd *, struct bfd_link_info *));
013dec1a 606extern boolean bfd_elf32_size_dynamic_sections
3b1f83ad
JL
607 PARAMS ((bfd *, const char *, const char *, boolean,
608 struct bfd_link_info *, struct sec **));
013dec1a 609extern boolean bfd_elf64_size_dynamic_sections
3b1f83ad
JL
610 PARAMS ((bfd *, const char *, const char *, boolean,
611 struct bfd_link_info *, struct sec **));
c1f84521 612extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
013dec1a 613
a7ff9b80
ILT
614/* SunOS shared library support routines for the linker. */
615
616extern boolean bfd_sunos_record_link_assignment
617 PARAMS ((bfd *, struct bfd_link_info *, const char *));
618extern boolean bfd_sunos_size_dynamic_sections
619 PARAMS ((bfd *, struct bfd_link_info *, struct sec **, struct sec **,
620 struct sec **));
621
3b1f83ad
JL
622/* Linux shared library support routines for the linker. */
623
624extern boolean bfd_linux_size_dynamic_sections
625 PARAMS ((bfd *, struct bfd_link_info *));
626
294eaca4 627/* And more from the source. */
This page took 0.157705 seconds and 4 git commands to generate.