Line 8... |
Line 8... |
to the rest of the data.
|
to the rest of the data.
|
|
|
|
|
@example
|
@example
|
|
|
|
enum bfd_direction
|
|
@{
|
|
no_direction = 0,
|
|
read_direction = 1,
|
|
write_direction = 2,
|
|
both_direction = 3
|
|
@};
|
|
|
struct bfd
|
struct bfd
|
@{
|
@{
|
/* A unique identifier of the BFD */
|
/* A unique identifier of the BFD */
|
unsigned int id;
|
unsigned int id;
|
|
|
Line 24... |
Line 32... |
/* The IOSTREAM, and corresponding IO vector that provide access
|
/* The IOSTREAM, and corresponding IO vector that provide access
|
to the file backing the BFD. */
|
to the file backing the BFD. */
|
void *iostream;
|
void *iostream;
|
const struct bfd_iovec *iovec;
|
const struct bfd_iovec *iovec;
|
|
|
/* Is the file descriptor being cached? That is, can it be closed as
|
|
needed, and re-opened when accessed later? */
|
|
bfd_boolean cacheable;
|
|
|
|
/* Marks whether there was a default target specified when the
|
|
BFD was opened. This is used to select which matching algorithm
|
|
to use to choose the back end. */
|
|
bfd_boolean target_defaulted;
|
|
|
|
/* The caching routines use these to maintain a
|
/* The caching routines use these to maintain a
|
least-recently-used list of BFDs. */
|
least-recently-used list of BFDs. */
|
struct bfd *lru_prev, *lru_next;
|
struct bfd *lru_prev, *lru_next;
|
|
|
/* When a file is closed by the caching routines, BFD retains
|
/* When a file is closed by the caching routines, BFD retains
|
state information on the file here... */
|
state information on the file here... */
|
ufile_ptr where;
|
ufile_ptr where;
|
|
|
/* ... and here: (``once'' means at least once). */
|
|
bfd_boolean opened_once;
|
|
|
|
/* Set if we have a locally maintained mtime value, rather than
|
|
getting it from the file each time. */
|
|
bfd_boolean mtime_set;
|
|
|
|
/* File modified time, if mtime_set is TRUE. */
|
/* File modified time, if mtime_set is TRUE. */
|
long mtime;
|
long mtime;
|
|
|
/* Reserved for an unimplemented file locking extension. */
|
/* Reserved for an unimplemented file locking extension. */
|
int ifd;
|
int ifd;
|
|
|
/* The format which belongs to the BFD. (object, core, etc.) */
|
/* The format which belongs to the BFD. (object, core, etc.) */
|
bfd_format format;
|
bfd_format format;
|
|
|
/* The direction with which the BFD was opened. */
|
/* The direction with which the BFD was opened. */
|
enum bfd_direction
|
enum bfd_direction direction;
|
@{
|
|
no_direction = 0,
|
|
read_direction = 1,
|
|
write_direction = 2,
|
|
both_direction = 3
|
|
@}
|
|
direction;
|
|
|
|
/* Format_specific flags. */
|
/* Format_specific flags. */
|
flagword flags;
|
flagword flags;
|
|
|
|
/* Values that may appear in the flags field of a BFD. These also
|
|
appear in the object_flags field of the bfd_target structure, where
|
|
they indicate the set of flags used by that backend (not all flags
|
|
are meaningful for all object file formats) (FIXME: at the moment,
|
|
the object_flags values have mostly just been copied from backend
|
|
to another, and are not necessarily correct). */
|
|
|
|
#define BFD_NO_FLAGS 0x00
|
|
|
|
/* BFD contains relocation entries. */
|
|
#define HAS_RELOC 0x01
|
|
|
|
/* BFD is directly executable. */
|
|
#define EXEC_P 0x02
|
|
|
|
/* BFD has line number information (basically used for F_LNNO in a
|
|
COFF header). */
|
|
#define HAS_LINENO 0x04
|
|
|
|
/* BFD has debugging information. */
|
|
#define HAS_DEBUG 0x08
|
|
|
|
/* BFD has symbols. */
|
|
#define HAS_SYMS 0x10
|
|
|
|
/* BFD has local symbols (basically used for F_LSYMS in a COFF
|
|
header). */
|
|
#define HAS_LOCALS 0x20
|
|
|
|
/* BFD is a dynamic object. */
|
|
#define DYNAMIC 0x40
|
|
|
|
/* Text section is write protected (if D_PAGED is not set, this is
|
|
like an a.out NMAGIC file) (the linker sets this by default, but
|
|
clears it for -r or -N). */
|
|
#define WP_TEXT 0x80
|
|
|
|
/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
|
|
linker sets this by default, but clears it for -r or -n or -N). */
|
|
#define D_PAGED 0x100
|
|
|
|
/* BFD is relaxable (this means that bfd_relax_section may be able to
|
|
do something) (sometimes bfd_relax_section can do something even if
|
|
this is not set). */
|
|
#define BFD_IS_RELAXABLE 0x200
|
|
|
|
/* This may be set before writing out a BFD to request using a
|
|
traditional format. For example, this is used to request that when
|
|
writing out an a.out object the symbols not be hashed to eliminate
|
|
duplicates. */
|
|
#define BFD_TRADITIONAL_FORMAT 0x400
|
|
|
|
/* This flag indicates that the BFD contents are actually cached
|
|
in memory. If this is set, iostream points to a bfd_in_memory
|
|
struct. */
|
|
#define BFD_IN_MEMORY 0x800
|
|
|
|
/* The sections in this BFD specify a memory page. */
|
|
#define HAS_LOAD_PAGE 0x1000
|
|
|
|
/* This BFD has been created by the linker and doesn't correspond
|
|
to any input file. */
|
|
#define BFD_LINKER_CREATED 0x2000
|
|
|
|
/* This may be set before writing out a BFD to request that it
|
|
be written using values for UIDs, GIDs, timestamps, etc. that
|
|
will be consistent from run to run. */
|
|
#define BFD_DETERMINISTIC_OUTPUT 0x4000
|
|
|
/* Currently my_archive is tested before adding origin to
|
/* Currently my_archive is tested before adding origin to
|
anything. I believe that this can become always an add of
|
anything. I believe that this can become always an add of
|
origin, with origin set to 0 for non archive files. */
|
origin, with origin set to 0 for non archive files. */
|
ufile_ptr origin;
|
ufile_ptr origin;
|
|
|
/* Remember when output has begun, to stop strange things
|
/* The origin in the archive of the proxy entry. This will
|
from happening. */
|
normally be the same as origin, except for thin archives,
|
bfd_boolean output_has_begun;
|
when it will contain the current offset of the proxy in the
|
|
thin archive rather than the offset of the bfd in its actual
|
|
container. */
|
|
ufile_ptr proxy_origin;
|
|
|
/* A hash table for section names. */
|
/* A hash table for section names. */
|
struct bfd_hash_table section_htab;
|
struct bfd_hash_table section_htab;
|
|
|
/* Pointer to linked list of sections. */
|
/* Pointer to linked list of sections. */
|
Line 98... |
Line 155... |
bfd_vma start_address;
|
bfd_vma start_address;
|
|
|
/* Used for input and output. */
|
/* Used for input and output. */
|
unsigned int symcount;
|
unsigned int symcount;
|
|
|
/* Symbol table for output BFD (with symcount entries). */
|
/* Symbol table for output BFD (with symcount entries).
|
|
Also used by the linker to cache input BFD symbols. */
|
struct bfd_symbol **outsymbols;
|
struct bfd_symbol **outsymbols;
|
|
|
/* Used for slurped dynamic symbol tables. */
|
/* Used for slurped dynamic symbol tables. */
|
unsigned int dynsymcount;
|
unsigned int dynsymcount;
|
|
|
/* Pointer to structure which contains architecture information. */
|
/* Pointer to structure which contains architecture information. */
|
const struct bfd_arch_info *arch_info;
|
const struct bfd_arch_info *arch_info;
|
|
|
/* Flag set if symbols from this BFD should not be exported. */
|
|
bfd_boolean no_export;
|
|
|
|
/* Stuff only useful for archives. */
|
/* Stuff only useful for archives. */
|
void *arelt_data;
|
void *arelt_data;
|
struct bfd *my_archive; /* The containing archive BFD. */
|
struct bfd *my_archive; /* The containing archive BFD. */
|
struct bfd *archive_next; /* The next BFD in the archive. */
|
struct bfd *archive_next; /* The next BFD in the archive. */
|
struct bfd *archive_head; /* The first BFD in the archive. */
|
struct bfd *archive_head; /* The first BFD in the archive. */
|
bfd_boolean has_armap;
|
struct bfd *nested_archives; /* List of nested archive in a flattened
|
|
thin archive. */
|
|
|
/* A chain of BFD structures involved in a link. */
|
/* A chain of BFD structures involved in a link. */
|
struct bfd *link_next;
|
struct bfd *link_next;
|
|
|
/* A field used by _bfd_generic_link_add_archive_symbols. This will
|
/* A field used by _bfd_generic_link_add_archive_symbols. This will
|
Line 138... |
Line 194... |
struct xcoff_tdata *xcoff_obj_data;
|
struct xcoff_tdata *xcoff_obj_data;
|
struct ecoff_tdata *ecoff_obj_data;
|
struct ecoff_tdata *ecoff_obj_data;
|
struct ieee_data_struct *ieee_data;
|
struct ieee_data_struct *ieee_data;
|
struct ieee_ar_data_struct *ieee_ar_data;
|
struct ieee_ar_data_struct *ieee_ar_data;
|
struct srec_data_struct *srec_data;
|
struct srec_data_struct *srec_data;
|
|
struct verilog_data_struct *verilog_data;
|
struct ihex_data_struct *ihex_data;
|
struct ihex_data_struct *ihex_data;
|
struct tekhex_data_struct *tekhex_data;
|
struct tekhex_data_struct *tekhex_data;
|
struct elf_obj_tdata *elf_obj_data;
|
struct elf_obj_tdata *elf_obj_data;
|
struct nlm_obj_tdata *nlm_obj_data;
|
struct nlm_obj_tdata *nlm_obj_data;
|
struct bout_data_struct *bout_data;
|
struct bout_data_struct *bout_data;
|
Line 158... |
Line 215... |
struct cisco_core_struct *cisco_core_data;
|
struct cisco_core_struct *cisco_core_data;
|
struct versados_data_struct *versados_data;
|
struct versados_data_struct *versados_data;
|
struct netbsd_core_struct *netbsd_core_data;
|
struct netbsd_core_struct *netbsd_core_data;
|
struct mach_o_data_struct *mach_o_data;
|
struct mach_o_data_struct *mach_o_data;
|
struct mach_o_fat_data_struct *mach_o_fat_data;
|
struct mach_o_fat_data_struct *mach_o_fat_data;
|
|
struct plugin_data_struct *plugin_data;
|
struct bfd_pef_data_struct *pef_data;
|
struct bfd_pef_data_struct *pef_data;
|
struct bfd_pef_xlib_data_struct *pef_xlib_data;
|
struct bfd_pef_xlib_data_struct *pef_xlib_data;
|
struct bfd_sym_data_struct *sym_data;
|
struct bfd_sym_data_struct *sym_data;
|
void *any;
|
void *any;
|
@}
|
@}
|
Line 172... |
Line 230... |
|
|
/* Where all the allocated stuff under this BFD goes. This is a
|
/* Where all the allocated stuff under this BFD goes. This is a
|
struct objalloc *, but we use void * to avoid requiring the inclusion
|
struct objalloc *, but we use void * to avoid requiring the inclusion
|
of objalloc.h. */
|
of objalloc.h. */
|
void *memory;
|
void *memory;
|
|
|
|
/* Is the file descriptor being cached? That is, can it be closed as
|
|
needed, and re-opened when accessed later? */
|
|
unsigned int cacheable : 1;
|
|
|
|
/* Marks whether there was a default target specified when the
|
|
BFD was opened. This is used to select which matching algorithm
|
|
to use to choose the back end. */
|
|
unsigned int target_defaulted : 1;
|
|
|
|
/* ... and here: (``once'' means at least once). */
|
|
unsigned int opened_once : 1;
|
|
|
|
/* Set if we have a locally maintained mtime value, rather than
|
|
getting it from the file each time. */
|
|
unsigned int mtime_set : 1;
|
|
|
|
/* Flag set if symbols from this BFD should not be exported. */
|
|
unsigned int no_export : 1;
|
|
|
|
/* Remember when output has begun, to stop strange things
|
|
from happening. */
|
|
unsigned int output_has_begun : 1;
|
|
|
|
/* Have archive map. */
|
|
unsigned int has_armap : 1;
|
|
|
|
/* Set if this is a thin archive. */
|
|
unsigned int is_thin_archive : 1;
|
@};
|
@};
|
|
|
@end example
|
@end example
|
@section Error reporting
|
@section Error reporting
|
Most BFD functions return nonzero on success (check their
|
Most BFD functions return nonzero on success (check their
|
Line 732... |
Line 819... |
@strong{Description}@*
|
@strong{Description}@*
|
Returns the maximum page size, in bytes, as determined by
|
Returns the maximum page size, in bytes, as determined by
|
emulation.
|
emulation.
|
|
|
@strong{Returns}@*
|
@strong{Returns}@*
|
Returns the maximum page size in bytes for ELF, abort
|
Returns the maximum page size in bytes for ELF, 0 otherwise.
|
otherwise.
|
|
|
|
@findex bfd_emul_set_maxpagesize
|
@findex bfd_emul_set_maxpagesize
|
@subsubsection @code{bfd_emul_set_maxpagesize}
|
@subsubsection @code{bfd_emul_set_maxpagesize}
|
@strong{Synopsis}
|
@strong{Synopsis}
|
@example
|
@example
|
Line 756... |
Line 842... |
@strong{Description}@*
|
@strong{Description}@*
|
Returns the common page size, in bytes, as determined by
|
Returns the common page size, in bytes, as determined by
|
emulation.
|
emulation.
|
|
|
@strong{Returns}@*
|
@strong{Returns}@*
|
Returns the common page size in bytes for ELF, abort otherwise.
|
Returns the common page size in bytes for ELF, 0 otherwise.
|
|
|
@findex bfd_emul_set_commonpagesize
|
@findex bfd_emul_set_commonpagesize
|
@subsubsection @code{bfd_emul_set_commonpagesize}
|
@subsubsection @code{bfd_emul_set_commonpagesize}
|
@strong{Synopsis}
|
@strong{Synopsis}
|
@example
|
@example
|