1
1
/* BFD back-end data structures for ELF files.
2
2
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
3
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
3
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4
4
Free Software Foundation, Inc.
5
5
Written by Cygnus Support.
308
/* The offset of the personality data from the start of the CIE,
309
or 0 if the CIE doesn't have any. */
310
unsigned int personality_offset : 8;
308
312
/* True if we have marked relocations associated with this CIE. */
309
313
unsigned int gc_mark : 1;
312
316
a PC-relative one. */
313
317
unsigned int make_lsda_relative : 1;
315
/* True if the CIE contains personality data and if that data
316
uses a PC-relative encoding. */
319
/* True if we have decided to turn an absolute personality
320
encoding into a PC-relative one. */
321
unsigned int make_per_encoding_relative : 1;
323
/* True if the CIE contains personality data and if that
324
data uses a PC-relative encoding. Always true when
325
make_per_encoding_relative is. */
317
326
unsigned int per_encoding_relative : 1;
319
328
/* True if we need to add an 'R' (FDE encoding) entry to the
384
396
bfd_boolean table;
399
/* Enum used to identify target specific extensions to the elf_obj_tdata
400
and elf_link_hash_table structures. Note the enums deliberately start
401
from 1 so that we can detect an uninitialized field. The generic value
402
is last so that additions to this enum do not need to modify more than
387
434
/* ELF linker hash table. */
389
436
struct elf_link_hash_table
391
438
struct bfd_link_hash_table root;
440
/* An identifier used to distinguish different target
441
specific extensions to this structure. */
442
enum elf_target_id hash_table_id;
393
444
/* Whether we have created the special dynamic sections required
394
445
when linking against or generating a shared object. */
395
446
bfd_boolean dynamic_sections_created;
498
549
#define elf_hash_table(p) ((struct elf_link_hash_table *) ((p)->hash))
551
#define elf_hash_table_id(table) ((table) -> hash_table_id)
500
553
/* Returns TRUE if the hash table is a struct elf_link_hash_table. */
501
554
#define is_elf_hash_table(htab) \
502
555
(((struct bfd_link_hash_table *) (htab))->type == bfd_link_elf_hash_table)
1406
1459
Tag_compatibility = 32
1409
/* Enum used to identify target specific extensions to the elf_obj_tdata
1410
structure. Note the enums deliberately start from 1 so that we can
1411
detect an uninitialized field. The generic value is last so that
1412
additions to this enum do not need to modify more than one line. */
1415
ALPHA_ELF_TDATA = 1,
1430
1462
/* Some private data is stashed away for future use using the tdata pointer
1431
1463
in the bfd structure. */
1588
1624
/* An identifier used to distinguish different target
1589
1625
specific extensions to this structure. */
1590
enum elf_object_id object_id;
1626
enum elf_target_id object_id;
1593
1629
#define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data)
1620
1656
#define elf_local_got_offsets(bfd) (elf_tdata(bfd) -> local_got.offsets)
1621
1657
#define elf_local_got_ents(bfd) (elf_tdata(bfd) -> local_got.ents)
1622
1658
#define elf_dt_name(bfd) (elf_tdata(bfd) -> dt_name)
1659
#define elf_dt_audit(bfd) (elf_tdata(bfd) -> dt_audit)
1623
1660
#define elf_dyn_lib_class(bfd) (elf_tdata(bfd) -> dyn_lib_class)
1624
1661
#define elf_bad_symtab(bfd) (elf_tdata(bfd) -> bad_symtab)
1625
1662
#define elf_flags_init(bfd) (elf_tdata(bfd) -> flags_init)
1693
1730
extern bfd_reloc_status_type bfd_elf_generic_reloc
1694
1731
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
1695
1732
extern bfd_boolean bfd_elf_allocate_object
1696
(bfd *, size_t, enum elf_object_id);
1733
(bfd *, size_t, enum elf_target_id);
1697
1734
extern bfd_boolean bfd_elf_make_generic_object
1699
1736
extern bfd_boolean bfd_elf_mkcorefile
1717
1754
(struct elf_link_hash_table *, bfd *,
1718
1755
struct bfd_hash_entry *(*)
1719
1756
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
1757
unsigned int, enum elf_target_id);
1721
1758
extern bfd_boolean _bfd_elf_slurp_version_tables
1722
1759
(bfd *, bfd_boolean);
1723
1760
extern bfd_boolean _bfd_elf_merge_sections
1734
1771
(asection *, struct bfd_link_info *);
1735
1772
extern void _bfd_elf_link_just_syms
1736
1773
(asection *, struct bfd_link_info *);
1774
extern void _bfd_elf_copy_link_hash_symbol_type
1775
(bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
1737
1776
extern bfd_boolean _bfd_elf_copy_private_header_data
1738
1777
(bfd *, bfd *);
1739
1778
extern bfd_boolean _bfd_elf_copy_private_symbol_data
2130
2169
(bfd *, char *, int *, const void *, int);
2131
2170
extern char *elfcore_write_prxfpreg
2132
2171
(bfd *, char *, int *, const void *, int);
2172
extern char *elfcore_write_xstatereg
2173
(bfd *, char *, int *, const void *, int);
2133
2174
extern char *elfcore_write_ppc_vmx
2134
2175
(bfd *, char *, int *, const void *, int);
2135
2176
extern char *elfcore_write_ppc_vsx
2136
2177
(bfd *, char *, int *, const void *, int);
2178
extern char *elfcore_write_s390_timer
2179
(bfd *, char *, int *, const void *, int);
2180
extern char *elfcore_write_s390_todcmp
2181
(bfd *, char *, int *, const void *, int);
2182
extern char *elfcore_write_s390_todpreg
2183
(bfd *, char *, int *, const void *, int);
2184
extern char *elfcore_write_s390_ctrs
2185
(bfd *, char *, int *, const void *, int);
2186
extern char *elfcore_write_s390_prefix
2187
(bfd *, char *, int *, const void *, int);
2137
2188
extern char *elfcore_write_lwpstatus
2138
2189
(bfd *, char *, int *, long, int, const void *);
2139
2190
extern char *elfcore_write_register_note