aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-bfd.h
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r--bfd/elf-bfd.h70
1 files changed, 45 insertions, 25 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 3c3ac9b..681ded5 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1,6 +1,6 @@
/* BFD back-end data structures for ELF files.
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -396,12 +396,51 @@ struct eh_frame_hdr_info
bfd_boolean table;
};
+/* Enum used to identify target specific extensions to the elf_obj_tdata
+ and elf_link_hash_table structures. Note the enums deliberately start
+ from 1 so that we can detect an uninitialized field. The generic value
+ is last so that additions to this enum do not need to modify more than
+ one line. */
+enum elf_target_id
+{
+ ALPHA_ELF_DATA = 1,
+ ARM_ELF_DATA,
+ AVR_ELF_DATA,
+ BFIN_ELF_DATA,
+ CRIS_ELF_DATA,
+ FRV_ELF_DATA,
+ HPPA32_ELF_DATA,
+ HPPA64_ELF_DATA,
+ I386_ELF_DATA,
+ IA64_ELF_DATA,
+ LM32_ELF_DATA,
+ M32R_ELF_DATA,
+ M68HC11_ELF_DATA,
+ M68K_ELF_DATA,
+ MICROBLAZE_ELF_DATA,
+ MIPS_ELF_DATA,
+ MN10300_ELF_DATA,
+ PPC32_ELF_DATA,
+ PPC64_ELF_DATA,
+ S390_ELF_DATA,
+ SH_ELF_DATA,
+ SPARC_ELF_DATA,
+ SPU_ELF_DATA,
+ X86_64_ELF_DATA,
+ XTENSA_ELF_DATA,
+ GENERIC_ELF_DATA
+};
+
/* ELF linker hash table. */
struct elf_link_hash_table
{
struct bfd_link_hash_table root;
+ /* An identifier used to distinguish different target
+ specific extensions to this structure. */
+ enum elf_target_id hash_table_id;
+
/* Whether we have created the special dynamic sections required
when linking against or generating a shared object. */
bfd_boolean dynamic_sections_created;
@@ -509,6 +548,8 @@ struct elf_link_hash_table
#define elf_hash_table(p) ((struct elf_link_hash_table *) ((p)->hash))
+#define elf_hash_table_id(table) ((table) -> hash_table_id)
+
/* Returns TRUE if the hash table is a struct elf_link_hash_table. */
#define is_elf_hash_table(htab) \
(((struct bfd_link_hash_table *) (htab))->type == bfd_link_elf_hash_table)
@@ -1418,27 +1459,6 @@ enum
Tag_compatibility = 32
};
-/* Enum used to identify target specific extensions to the elf_obj_tdata
- structure. Note the enums deliberately start from 1 so that we can
- detect an uninitialized field. The generic value is last so that
- additions to this enum do not need to modify more than one line. */
-enum elf_object_id
-{
- ALPHA_ELF_TDATA = 1,
- ARM_ELF_TDATA,
- HPPA_ELF_TDATA,
- I386_ELF_TDATA,
- MIPS_ELF_TDATA,
- PPC32_ELF_TDATA,
- PPC64_ELF_TDATA,
- S390_ELF_TDATA,
- SH_ELF_TDATA,
- SPARC_ELF_TDATA,
- X86_64_ELF_TDATA,
- XTENSA_ELF_TDATA,
- GENERIC_ELF_TDATA
-};
-
/* Some private data is stashed away for future use using the tdata pointer
in the bfd structure. */
@@ -1603,7 +1623,7 @@ struct elf_obj_tdata
/* An identifier used to distinguish different target
specific extensions to this structure. */
- enum elf_object_id object_id;
+ enum elf_target_id object_id;
};
#define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data)
@@ -1710,7 +1730,7 @@ extern unsigned long bfd_elf_gnu_hash
extern bfd_reloc_status_type bfd_elf_generic_reloc
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
extern bfd_boolean bfd_elf_allocate_object
- (bfd *, size_t, enum elf_object_id);
+ (bfd *, size_t, enum elf_target_id);
extern bfd_boolean bfd_elf_make_generic_object
(bfd *);
extern bfd_boolean bfd_elf_mkcorefile
@@ -1734,7 +1754,7 @@ extern bfd_boolean _bfd_elf_link_hash_table_init
(struct elf_link_hash_table *, bfd *,
struct bfd_hash_entry *(*)
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
- unsigned int);
+ unsigned int, enum elf_target_id);
extern bfd_boolean _bfd_elf_slurp_version_tables
(bfd *, bfd_boolean);
extern bfd_boolean _bfd_elf_merge_sections