OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [bfd/] [bfd-in.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 104 markom
/* Main header file for the bfd library -- portable access to object files.
2
   Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
3
   Free Software Foundation, Inc.
4
   Contributed by Cygnus Support.
5
 
6
** NOTE: bfd.h and bfd-in2.h are GENERATED files.  Don't change them;
7
** instead, change bfd-in.h or the other BFD source files processed to
8
** generate these files.
9
 
10
This file is part of BFD, the Binary File Descriptor library.
11
 
12
This program is free software; you can redistribute it and/or modify
13
it under the terms of the GNU General Public License as published by
14
the Free Software Foundation; either version 2 of the License, or
15
(at your option) any later version.
16
 
17
This program is distributed in the hope that it will be useful,
18
but WITHOUT ANY WARRANTY; without even the implied warranty of
19
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
GNU General Public License for more details.
21
 
22
You should have received a copy of the GNU General Public License
23
along with this program; if not, write to the Free Software
24
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
25
 
26
/* bfd.h -- The only header file required by users of the bfd library
27
 
28
The bfd.h file is generated from bfd-in.h and various .c files; if you
29
change it, your changes will probably be lost.
30
 
31
All the prototypes and definitions following the comment "THE FOLLOWING
32
IS EXTRACTED FROM THE SOURCE" are extracted from the source files for
33
BFD.  If you change it, someone oneday will extract it from the source
34
again, and your changes will be lost.  To save yourself from this bind,
35
change the definitions in the source in the bfd directory.  Type "make
36
docs" and then "make headers" in that directory, and magically this file
37
will change to reflect your changes.
38
 
39
If you don't have the tools to perform the extraction, then you are
40
safe from someone on your system trampling over your header files.
41
You should still maintain the equivalence between the source and this
42
file though; every change you make to the .c file should be reflected
43
here.  */
44
 
45
#ifndef __BFD_H_SEEN__
46
#define __BFD_H_SEEN__
47
 
48
#ifdef __cplusplus
49
extern "C" {
50
#endif
51
 
52
#include "ansidecl.h"
53
 
54
/* These two lines get substitutions done by commands in Makefile.in.  */
55
#define BFD_VERSION  "@VERSION@"
56
#define BFD_ARCH_SIZE @wordsize@
57
#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
58
#if @BFD_HOST_64_BIT_DEFINED@
59
#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
60
#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
61
#endif
62
 
63
#if BFD_ARCH_SIZE >= 64
64
#define BFD64
65
#endif
66
 
67
#ifndef INLINE
68
#if __GNUC__ >= 2
69
#define INLINE __inline__
70
#else
71
#define INLINE
72
#endif
73
#endif
74
 
75
/* forward declaration */
76
typedef struct _bfd bfd;
77
 
78
/* To squelch erroneous compiler warnings ("illegal pointer
79
   combination") from the SVR3 compiler, we would like to typedef
80
   boolean to int (it doesn't like functions which return boolean.
81
   Making sure they are never implicitly declared to return int
82
   doesn't seem to help).  But this file is not configured based on
83
   the host.  */
84
/* General rules: functions which are boolean return true on success
85
   and false on failure (unless they're a predicate).   -- bfd.doc */
86
/* I'm sure this is going to break something and someone is going to
87 865 markom
   force me to change it.  */
88 104 markom
/* typedef enum boolean {false, true} boolean; */
89
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h>  -fnf */
90
/* It gets worse if the host also defines a true/false enum... -sts */
91
/* And even worse if your compiler has built-in boolean types... -law */
92 865 markom
/* And even worse if your compiler provides a stdbool.h that conflicts
93
   with these definitions... gcc 2.95 and later do.  -drow */
94
#if defined (__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
95 104 markom
#define TRUE_FALSE_ALREADY_DEFINED
96 865 markom
#else
97
#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
98
#include <stdbool.h>
99
#define TRUE_FALSE_ALREADY_DEFINED
100 104 markom
#endif
101 865 markom
#endif
102 104 markom
#ifdef MPW
103 865 markom
/* Pre-emptive strike - get the file with the enum.  */
104 104 markom
#include <Types.h>
105
#define TRUE_FALSE_ALREADY_DEFINED
106
#endif /* MPW */
107
#ifndef TRUE_FALSE_ALREADY_DEFINED
108
typedef enum bfd_boolean {false, true} boolean;
109
#define BFD_TRUE_FALSE
110
#else
111
/* Use enum names that will appear nowhere else.  */
112
typedef enum bfd_boolean {bfd_fffalse, bfd_tttrue} boolean;
113
#endif
114
 
115
/* A pointer to a position in a file.  */
116
/* FIXME:  This should be using off_t from <sys/types.h>.
117
   For now, try to avoid breaking stuff by not including <sys/types.h> here.
118
   This will break on systems with 64-bit file offsets (e.g. 4.4BSD).
119
   Probably the best long-term answer is to avoid using file_ptr AND off_t
120
   in this header file, and to handle this in the BFD implementation
121
   rather than in its interface.  */
122
/* typedef off_t        file_ptr; */
123
typedef long int file_ptr;
124
 
125
/* Support for different sizes of target format ints and addresses.
126
   If the type `long' is at least 64 bits, BFD_HOST_64BIT_LONG will be
127
   set to 1 above.  Otherwise, if gcc is being used, this code will
128
   use gcc's "long long" type.  Otherwise, BFD_HOST_64_BIT must be
129
   defined above.  */
130
 
131
#ifndef BFD_HOST_64_BIT
132
# if BFD_HOST_64BIT_LONG
133
#  define BFD_HOST_64_BIT long
134
#  define BFD_HOST_U_64_BIT unsigned long
135
# else
136
#  ifdef __GNUC__
137
#   if __GNUC__ >= 2
138
#    define BFD_HOST_64_BIT long long
139
#    define BFD_HOST_U_64_BIT unsigned long long
140
#   endif /* __GNUC__ >= 2 */
141
#  endif /* ! defined (__GNUC__) */
142
# endif /* ! BFD_HOST_64BIT_LONG */
143
#endif /* ! defined (BFD_HOST_64_BIT) */
144
 
145
#ifdef BFD64
146
 
147
#ifndef BFD_HOST_64_BIT
148
 #error No 64 bit integer type available
149
#endif /* ! defined (BFD_HOST_64_BIT) */
150
 
151
typedef BFD_HOST_U_64_BIT bfd_vma;
152
typedef BFD_HOST_64_BIT bfd_signed_vma;
153
typedef BFD_HOST_U_64_BIT bfd_size_type;
154
typedef BFD_HOST_U_64_BIT symvalue;
155
 
156
#ifndef fprintf_vma
157
#if BFD_HOST_64BIT_LONG
158
#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
159
#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
160
#else
161
#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
162
#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
163
#define fprintf_vma(s,x) \
164
  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
165
#define sprintf_vma(s,x) \
166
  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
167
#endif
168
#endif
169
 
170
#else /* not BFD64  */
171
 
172
/* Represent a target address.  Also used as a generic unsigned type
173
   which is guaranteed to be big enough to hold any arithmetic types
174
   we need to deal with.  */
175
typedef unsigned long bfd_vma;
176
 
177
/* A generic signed type which is guaranteed to be big enough to hold any
178
   arithmetic types we need to deal with.  Can be assumed to be compatible
179
   with bfd_vma in the same way that signed and unsigned ints are compatible
180
   (as parameters, in assignment, etc).  */
181
typedef long bfd_signed_vma;
182
 
183
typedef unsigned long symvalue;
184
typedef unsigned long bfd_size_type;
185
 
186
/* Print a bfd_vma x on stream s.  */
187
#define fprintf_vma(s,x) fprintf(s, "%08lx", x)
188
#define sprintf_vma(s,x) sprintf(s, "%08lx", x)
189
 
190
#endif /* not BFD64  */
191
 
192
#define printf_vma(x) fprintf_vma(stdout,x)
193
 
194
typedef unsigned int flagword;  /* 32 bits of flags */
195
typedef unsigned char bfd_byte;
196
 
197
/** File formats */
198
 
199
typedef enum bfd_format {
200
              bfd_unknown = 0,   /* file format is unknown */
201
              bfd_object,       /* linker/assember/compiler output */
202
              bfd_archive,      /* object archive file */
203
              bfd_core,         /* core dump */
204
              bfd_type_end}     /* marks the end; don't use it! */
205
         bfd_format;
206
 
207
/* Values that may appear in the flags field of a BFD.  These also
208
   appear in the object_flags field of the bfd_target structure, where
209
   they indicate the set of flags used by that backend (not all flags
210
   are meaningful for all object file formats) (FIXME: at the moment,
211
   the object_flags values have mostly just been copied from backend
212
   to another, and are not necessarily correct).  */
213
 
214
/* No flags.  */
215
#define BFD_NO_FLAGS    0x00
216
 
217
/* BFD contains relocation entries.  */
218
#define HAS_RELOC       0x01
219
 
220
/* BFD is directly executable.  */
221
#define EXEC_P          0x02
222
 
223
/* BFD has line number information (basically used for F_LNNO in a
224
   COFF header).  */
225
#define HAS_LINENO      0x04
226
 
227
/* BFD has debugging information.  */
228
#define HAS_DEBUG       0x08
229
 
230
/* BFD has symbols.  */
231
#define HAS_SYMS        0x10
232
 
233
/* BFD has local symbols (basically used for F_LSYMS in a COFF
234
   header).  */
235
#define HAS_LOCALS      0x20
236
 
237
/* BFD is a dynamic object.  */
238
#define DYNAMIC         0x40
239
 
240
/* Text section is write protected (if D_PAGED is not set, this is
241
   like an a.out NMAGIC file) (the linker sets this by default, but
242
   clears it for -r or -N).  */
243
#define WP_TEXT         0x80
244
 
245
/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
246
   linker sets this by default, but clears it for -r or -n or -N).  */
247
#define D_PAGED         0x100
248
 
249
/* BFD is relaxable (this means that bfd_relax_section may be able to
250
   do something) (sometimes bfd_relax_section can do something even if
251
   this is not set).  */
252
#define BFD_IS_RELAXABLE 0x200
253
 
254
/* This may be set before writing out a BFD to request using a
255
   traditional format.  For example, this is used to request that when
256
   writing out an a.out object the symbols not be hashed to eliminate
257
   duplicates.  */
258
#define BFD_TRADITIONAL_FORMAT 0x400
259
 
260
/* This flag indicates that the BFD contents are actually cached in
261
   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
262
#define BFD_IN_MEMORY 0x800
263
 
264
/* symbols and relocation */
265
 
266
/* A count of carsyms (canonical archive symbols).  */
267
typedef unsigned long symindex;
268
 
269
/* How to perform a relocation.  */
270
typedef const struct reloc_howto_struct reloc_howto_type;
271
 
272
#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
273
 
274
/* General purpose part of a symbol X;
275
   target specific parts are in libcoff.h, libaout.h, etc.  */
276
 
277
#define bfd_get_section(x) ((x)->section)
278
#define bfd_get_output_section(x) ((x)->section->output_section)
279
#define bfd_set_section(x,y) ((x)->section) = (y)
280
#define bfd_asymbol_base(x) ((x)->section->vma)
281
#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
282
#define bfd_asymbol_name(x) ((x)->name)
283
/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
284
#define bfd_asymbol_bfd(x) ((x)->the_bfd)
285
#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
286
 
287
/* A canonical archive symbol.  */
288
/* This is a type pun with struct ranlib on purpose! */
289
typedef struct carsym {
290
  char *name;
291
  file_ptr file_offset;         /* look here to find the file */
292
} carsym;                       /* to make these you call a carsymogen */
293
 
294
 
295
/* Used in generating armaps (archive tables of contents).
296
   Perhaps just a forward definition would do? */
297
struct orl {                    /* output ranlib */
298
  char **name;                  /* symbol name */
299
  file_ptr pos;                 /* bfd* or file position */
300
  int namidx;                   /* index into string table */
301
};
302
 
303
 
304
/* Linenumber stuff */
305
typedef struct lineno_cache_entry {
306
  unsigned int line_number;     /* Linenumber from start of function*/
307
  union {
308
    struct symbol_cache_entry *sym; /* Function name */
309
    unsigned long offset;       /* Offset into section */
310
  } u;
311
} alent;
312
 
313
/* object and core file sections */
314
 
315
#define align_power(addr, align)        \
316
        ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
317
 
318
typedef struct sec *sec_ptr;
319
 
320
#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
321
#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
322
#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
323
#define bfd_section_name(bfd, ptr) ((ptr)->name)
324
#define bfd_section_size(bfd, ptr) (bfd_get_section_size_before_reloc(ptr))
325
#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
326
#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
327
#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
328
#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
329
#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
330
 
331
#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
332
 
333
#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = (boolean)true), true)
334
#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
335
#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
336
 
337
typedef struct stat stat_type;
338
 
339
typedef enum bfd_print_symbol
340
{
341
  bfd_print_symbol_name,
342
  bfd_print_symbol_more,
343
  bfd_print_symbol_all
344
} bfd_print_symbol_type;
345
 
346
/* Information about a symbol that nm needs.  */
347
 
348
typedef struct _symbol_info
349
{
350
  symvalue value;
351
  char type;
352
  CONST char *name;            /* Symbol name.  */
353
  unsigned char stab_type;     /* Stab type.  */
354
  char stab_other;             /* Stab other. */
355
  short stab_desc;             /* Stab desc.  */
356
  CONST char *stab_name;       /* String for stab type.  */
357
} symbol_info;
358
 
359
/* Get the name of a stabs type code.  */
360
 
361
extern const char *bfd_get_stab_name PARAMS ((int));
362
 
363
/* Hash table routines.  There is no way to free up a hash table.  */
364
 
365
/* An element in the hash table.  Most uses will actually use a larger
366
   structure, and an instance of this will be the first field.  */
367
 
368
struct bfd_hash_entry
369
{
370
  /* Next entry for this hash code.  */
371
  struct bfd_hash_entry *next;
372
  /* String being hashed.  */
373
  const char *string;
374
  /* Hash code.  This is the full hash code, not the index into the
375
     table.  */
376
  unsigned long hash;
377
};
378
 
379
/* A hash table.  */
380
 
381
struct bfd_hash_table
382
{
383
  /* The hash array.  */
384
  struct bfd_hash_entry **table;
385
  /* The number of slots in the hash table.  */
386
  unsigned int size;
387
  /* A function used to create new elements in the hash table.  The
388
     first entry is itself a pointer to an element.  When this
389
     function is first invoked, this pointer will be NULL.  However,
390
     having the pointer permits a hierarchy of method functions to be
391
     built each of which calls the function in the superclass.  Thus
392
     each function should be written to allocate a new block of memory
393
     only if the argument is NULL.  */
394
  struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
395
                                             struct bfd_hash_table *,
396
                                             const char *));
397
   /* An objalloc for this hash table.  This is a struct objalloc *,
398
     but we use PTR to avoid requiring the inclusion of objalloc.h.  */
399
  PTR memory;
400
};
401
 
402
/* Initialize a hash table.  */
403
extern boolean bfd_hash_table_init
404
  PARAMS ((struct bfd_hash_table *,
405
           struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
406
                                       struct bfd_hash_table *,
407
                                       const char *)));
408
 
409
/* Initialize a hash table specifying a size.  */
410
extern boolean bfd_hash_table_init_n
411
  PARAMS ((struct bfd_hash_table *,
412
           struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
413
                                       struct bfd_hash_table *,
414
                                       const char *),
415
           unsigned int size));
416
 
417
/* Free up a hash table.  */
418
extern void bfd_hash_table_free PARAMS ((struct bfd_hash_table *));
419
 
420
/* Look up a string in a hash table.  If CREATE is true, a new entry
421
   will be created for this string if one does not already exist.  The
422
   COPY argument must be true if this routine should copy the string
423
   into newly allocated memory when adding an entry.  */
424
extern struct bfd_hash_entry *bfd_hash_lookup
425
  PARAMS ((struct bfd_hash_table *, const char *, boolean create,
426
           boolean copy));
427
 
428
/* Replace an entry in a hash table.  */
429
extern void bfd_hash_replace
430
  PARAMS ((struct bfd_hash_table *, struct bfd_hash_entry *old,
431
           struct bfd_hash_entry *nw));
432
 
433
/* Base method for creating a hash table entry.  */
434
extern struct bfd_hash_entry *bfd_hash_newfunc
435
  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
436
           const char *));
437
 
438
/* Grab some space for a hash table entry.  */
439
extern PTR bfd_hash_allocate PARAMS ((struct bfd_hash_table *,
440
                                      unsigned int));
441
 
442
/* Traverse a hash table in a random order, calling a function on each
443
   element.  If the function returns false, the traversal stops.  The
444
   INFO argument is passed to the function.  */
445
extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *,
446
                                       boolean (*) (struct bfd_hash_entry *,
447
                                                    PTR),
448
                                       PTR info));
449
 
450
/* Semi-portable string concatenation in cpp.
451
   The CAT4 hack is to avoid a problem with some strict ANSI C preprocessors.
452
   The problem is, "32_" is not a valid preprocessing token, and we don't
453
   want extra underscores (e.g., "nlm_32_").  The XCAT2 macro will cause the
454
   inner CAT macros to be evaluated first, producing still-valid pp-tokens.
455
   Then the final concatenation can be done.  (Sigh.)  */
456
#ifndef CAT
457
#ifdef SABER
458
#define CAT(a,b)        a##b
459
#define CAT3(a,b,c)     a##b##c
460
#define CAT4(a,b,c,d)   a##b##c##d
461
#else
462
#if defined(__STDC__) || defined(ALMOST_STDC)
463
#define CAT(a,b) a##b
464
#define CAT3(a,b,c) a##b##c
465
#define XCAT2(a,b)      CAT(a,b)
466
#define CAT4(a,b,c,d)   XCAT2(CAT(a,b),CAT(c,d))
467
#else
468
#define CAT(a,b) a/**/b
469
#define CAT3(a,b,c) a/**/b/**/c
470
#define CAT4(a,b,c,d)   a/**/b/**/c/**/d
471
#endif
472
#endif
473
#endif
474
 
475
#define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table
476
 
477
/* User program access to BFD facilities */
478
 
479
/* Direct I/O routines, for programs which know more about the object
480
   file than BFD does.  Use higher level routines if possible.  */
481
 
482
extern bfd_size_type bfd_read
483
  PARAMS ((PTR, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
484
extern bfd_size_type bfd_write
485
  PARAMS ((const PTR, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
486
extern int bfd_seek PARAMS ((bfd *abfd, file_ptr fp, int direction));
487
extern long bfd_tell PARAMS ((bfd *abfd));
488
extern int bfd_flush PARAMS ((bfd *abfd));
489
extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
490
 
491
 
492
/* Cast from const char * to char * so that caller can assign to
493
   a char * without a warning.  */
494
#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
495
#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
496
#define bfd_get_format(abfd) ((abfd)->format)
497
#define bfd_get_target(abfd) ((abfd)->xvec->name)
498
#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
499
#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
500
#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
501
#define bfd_header_big_endian(abfd) \
502
  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
503
#define bfd_header_little_endian(abfd) \
504
  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
505
#define bfd_get_file_flags(abfd) ((abfd)->flags)
506
#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
507
#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
508
#define bfd_my_archive(abfd) ((abfd)->my_archive)
509
#define bfd_has_map(abfd) ((abfd)->has_armap)
510
 
511
#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
512
#define bfd_usrdata(abfd) ((abfd)->usrdata)
513
 
514
#define bfd_get_start_address(abfd) ((abfd)->start_address)
515
#define bfd_get_symcount(abfd) ((abfd)->symcount)
516
#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
517
#define bfd_count_sections(abfd) ((abfd)->section_count)
518
 
519
#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
520
 
521
#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean)(bool)), true)
522
 
523
extern boolean bfd_record_phdr
524
  PARAMS ((bfd *, unsigned long, boolean, flagword, boolean, bfd_vma,
525
           boolean, boolean, unsigned int, struct sec **));
526
 
527
/* Byte swapping routines.  */
528
 
529
bfd_vma         bfd_getb64         PARAMS ((const unsigned char *));
530
bfd_vma         bfd_getl64         PARAMS ((const unsigned char *));
531
bfd_signed_vma  bfd_getb_signed_64 PARAMS ((const unsigned char *));
532
bfd_signed_vma  bfd_getl_signed_64 PARAMS ((const unsigned char *));
533
bfd_vma         bfd_getb32         PARAMS ((const unsigned char *));
534
bfd_vma         bfd_getl32         PARAMS ((const unsigned char *));
535
bfd_signed_vma  bfd_getb_signed_32 PARAMS ((const unsigned char *));
536
bfd_signed_vma  bfd_getl_signed_32 PARAMS ((const unsigned char *));
537
bfd_vma         bfd_getb16         PARAMS ((const unsigned char *));
538
bfd_vma         bfd_getl16         PARAMS ((const unsigned char *));
539
bfd_signed_vma  bfd_getb_signed_16 PARAMS ((const unsigned char *));
540
bfd_signed_vma  bfd_getl_signed_16 PARAMS ((const unsigned char *));
541
void            bfd_putb64         PARAMS ((bfd_vma, unsigned char *));
542
void            bfd_putl64         PARAMS ((bfd_vma, unsigned char *));
543
void            bfd_putb32         PARAMS ((bfd_vma, unsigned char *));
544
void            bfd_putl32         PARAMS ((bfd_vma, unsigned char *));
545
void            bfd_putb16         PARAMS ((bfd_vma, unsigned char *));
546
void            bfd_putl16         PARAMS ((bfd_vma, unsigned char *));
547
 
548
/* Externally visible ECOFF routines.  */
549
 
550
#if defined(__STDC__) || defined(ALMOST_STDC)
551
struct ecoff_debug_info;
552
struct ecoff_debug_swap;
553
struct ecoff_extr;
554
struct symbol_cache_entry;
555
struct bfd_link_info;
556
struct bfd_link_hash_entry;
557
struct bfd_elf_version_tree;
558
#endif
559
extern bfd_vma bfd_ecoff_get_gp_value PARAMS ((bfd * abfd));
560
extern boolean bfd_ecoff_set_gp_value PARAMS ((bfd *abfd, bfd_vma gp_value));
561
extern boolean bfd_ecoff_set_regmasks
562
  PARAMS ((bfd *abfd, unsigned long gprmask, unsigned long fprmask,
563
           unsigned long *cprmask));
564
extern PTR bfd_ecoff_debug_init
565
  PARAMS ((bfd *output_bfd, struct ecoff_debug_info *output_debug,
566
           const struct ecoff_debug_swap *output_swap,
567
           struct bfd_link_info *));
568
extern void bfd_ecoff_debug_free
569
  PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
570
           const struct ecoff_debug_swap *output_swap,
571
           struct bfd_link_info *));
572
extern boolean bfd_ecoff_debug_accumulate
573
  PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
574
           const struct ecoff_debug_swap *output_swap,
575
           bfd *input_bfd, struct ecoff_debug_info *input_debug,
576
           const struct ecoff_debug_swap *input_swap,
577
           struct bfd_link_info *));
578
extern boolean bfd_ecoff_debug_accumulate_other
579
  PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
580
           const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
581
           struct bfd_link_info *));
582
extern boolean bfd_ecoff_debug_externals
583
  PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
584
           const struct ecoff_debug_swap *swap,
585
           boolean relocateable,
586
           boolean (*get_extr) (struct symbol_cache_entry *,
587
                                struct ecoff_extr *),
588
           void (*set_index) (struct symbol_cache_entry *,
589
                              bfd_size_type)));
590
extern boolean bfd_ecoff_debug_one_external
591
  PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
592
           const struct ecoff_debug_swap *swap,
593
           const char *name, struct ecoff_extr *esym));
594
extern bfd_size_type bfd_ecoff_debug_size
595
  PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
596
           const struct ecoff_debug_swap *swap));
597
extern boolean bfd_ecoff_write_debug
598
  PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
599
           const struct ecoff_debug_swap *swap, file_ptr where));
600
extern boolean bfd_ecoff_write_accumulated_debug
601
  PARAMS ((PTR handle, bfd *abfd, struct ecoff_debug_info *debug,
602
           const struct ecoff_debug_swap *swap,
603
           struct bfd_link_info *info, file_ptr where));
604
extern boolean bfd_mips_ecoff_create_embedded_relocs
605
  PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
606
           char **));
607
 
608
/* Externally visible ELF routines.  */
609
 
610
struct bfd_link_needed_list
611
{
612
  struct bfd_link_needed_list *next;
613
  bfd *by;
614
  const char *name;
615
};
616
 
617
extern boolean bfd_elf32_record_link_assignment
618
  PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
619
extern boolean bfd_elf64_record_link_assignment
620
  PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
621
extern struct bfd_link_needed_list *bfd_elf_get_needed_list
622
  PARAMS ((bfd *, struct bfd_link_info *));
623
extern boolean bfd_elf_get_bfd_needed_list
624
  PARAMS ((bfd *, struct bfd_link_needed_list **));
625
extern boolean bfd_elf32_size_dynamic_sections
626
  PARAMS ((bfd *, const char *, const char *, boolean, const char *,
627
           const char * const *, struct bfd_link_info *, struct sec **,
628
           struct bfd_elf_version_tree *));
629
extern boolean bfd_elf64_size_dynamic_sections
630
  PARAMS ((bfd *, const char *, const char *, boolean, const char *,
631
           const char * const *, struct bfd_link_info *, struct sec **,
632
           struct bfd_elf_version_tree *));
633
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
634
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));
635
 
636
/* Return an upper bound on the number of bytes required to store a
637
   copy of ABFD's program header table entries.  Return -1 if an error
638
   occurs; bfd_get_error will return an appropriate code.  */
639
extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
640
 
641
/* Copy ABFD's program header table entries to *PHDRS.  The entries
642
   will be stored as an array of Elf_Internal_Phdr structures, as
643
   defined in include/elf/internal.h.  To find out how large the
644
   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
645
 
646
   Return the number of program header table entries read, or -1 if an
647
   error occurs; bfd_get_error will return an appropriate code.  */
648
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
649
 
650
/* SunOS shared library support routines for the linker.  */
651
 
652
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
653
  PARAMS ((bfd *, struct bfd_link_info *));
654
extern boolean bfd_sunos_record_link_assignment
655
  PARAMS ((bfd *, struct bfd_link_info *, const char *));
656
extern boolean bfd_sunos_size_dynamic_sections
657
  PARAMS ((bfd *, struct bfd_link_info *, struct sec **, struct sec **,
658
           struct sec **));
659
 
660
/* Linux shared library support routines for the linker.  */
661
 
662
extern boolean bfd_i386linux_size_dynamic_sections
663
  PARAMS ((bfd *, struct bfd_link_info *));
664
extern boolean bfd_m68klinux_size_dynamic_sections
665
  PARAMS ((bfd *, struct bfd_link_info *));
666
extern boolean bfd_sparclinux_size_dynamic_sections
667
  PARAMS ((bfd *, struct bfd_link_info *));
668
 
669
/* mmap hacks */
670
 
671
struct _bfd_window_internal;
672
typedef struct _bfd_window_internal bfd_window_internal;
673
 
674
typedef struct _bfd_window {
675
  /* What the user asked for.  */
676
  PTR data;
677
  bfd_size_type size;
678
  /* The actual window used by BFD.  Small user-requested read-only
679
     regions sharing a page may share a single window into the object
680
     file.  Read-write versions shouldn't until I've fixed things to
681
     keep track of which portions have been claimed by the
682
     application; don't want to give the same region back when the
683
     application wants two writable copies!  */
684
  struct _bfd_window_internal *i;
685
} bfd_window;
686
 
687
extern void bfd_init_window PARAMS ((bfd_window *));
688
extern void bfd_free_window PARAMS ((bfd_window *));
689
extern boolean bfd_get_file_window
690
  PARAMS ((bfd *, file_ptr, bfd_size_type, bfd_window *, boolean));
691
 
692
/* XCOFF support routines for the linker.  */
693
 
694
extern boolean bfd_xcoff_link_record_set
695
  PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
696
           bfd_size_type));
697
extern boolean bfd_xcoff_import_symbol
698
  PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
699
           bfd_vma, const char *, const char *, const char *));
700
extern boolean bfd_xcoff_export_symbol
701
  PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
702
           boolean));
703
extern boolean bfd_xcoff_link_count_reloc
704
  PARAMS ((bfd *, struct bfd_link_info *, const char *));
705
extern boolean bfd_xcoff_record_link_assignment
706
  PARAMS ((bfd *, struct bfd_link_info *, const char *));
707
extern boolean bfd_xcoff_size_dynamic_sections
708
  PARAMS ((bfd *, struct bfd_link_info *, const char *, const char *,
709
           unsigned long, unsigned long, unsigned long, boolean,
710
           int, boolean, boolean, struct sec **));
711
 
712
/* Externally visible COFF routines.  */
713
 
714
#if defined(__STDC__) || defined(ALMOST_STDC)
715
struct internal_syment;
716
union internal_auxent;
717
#endif
718
 
719
extern boolean bfd_coff_get_syment
720
  PARAMS ((bfd *, struct symbol_cache_entry *, struct internal_syment *));
721
 
722
extern boolean bfd_coff_get_auxent
723
  PARAMS ((bfd *, struct symbol_cache_entry *, int, union internal_auxent *));
724
 
725
extern boolean bfd_coff_set_symbol_class
726
  PARAMS ((bfd *, struct symbol_cache_entry *, unsigned int));
727
 
728
/* ARM Interworking support.  Called from linker.  */
729
extern boolean bfd_arm_allocate_interworking_sections
730
  PARAMS ((struct bfd_link_info *));
731
 
732
extern boolean bfd_arm_process_before_allocation
733
  PARAMS ((bfd *, struct bfd_link_info *, int));
734
 
735
extern boolean bfd_arm_get_bfd_for_interworking
736
  PARAMS ((bfd *, struct bfd_link_info *));
737
 
738
/* PE ARM Interworking support.  Called from linker.  */
739
extern boolean bfd_arm_pe_allocate_interworking_sections
740
  PARAMS ((struct bfd_link_info *));
741
 
742
extern boolean bfd_arm_pe_process_before_allocation
743
  PARAMS ((bfd *, struct bfd_link_info *, int));
744
 
745
extern boolean bfd_arm_pe_get_bfd_for_interworking
746
  PARAMS ((bfd *, struct bfd_link_info *));
747
 
748
/* ELF ARM Interworking support.  Called from linker.  */
749
extern boolean bfd_elf32_arm_allocate_interworking_sections
750
  PARAMS ((struct bfd_link_info *));
751
 
752
extern boolean bfd_elf32_arm_process_before_allocation
753
  PARAMS ((bfd *, struct bfd_link_info *, int));
754
 
755
extern boolean bfd_elf32_arm_get_bfd_for_interworking
756
  PARAMS ((bfd *, struct bfd_link_info *));
757
 
758
/* And more from the source.  */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.