summaryrefslogtreecommitdiff
path: root/bfd/elf-bfd.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2004-09-16 14:52:12 +0000
committerAlan Modra <amodra@bigpond.net.au>2004-09-16 14:52:12 +0000
commitc690b2899ff9a8120edca7a04edd087426ca7e33 (patch)
treeae0787907913bb23422048374981f5f0c15913fa /bfd/elf-bfd.h
parent620c84636f78483e5f7f58c56e092b1ebaab1775 (diff)
downloadgdb-c690b2899ff9a8120edca7a04edd087426ca7e33.tar.gz
* elf-bfd.h (struct elf_link_hash_entry): Replace elf_link_hash_flags
with bitfields. Make "type" and "other" bitfields too. (ELF_LINK_HASH_REF_REGULAR, ELF_LINK_HASH_DEF_REGULAR, ELF_LINK_HASH_REF_DYNAMIC, ELF_LINK_HASH_DEF_DYNAMIC, ELF_LINK_HASH_REF_REGULAR_NONWEAK, ELF_LINK_HASH_DYNAMIC_ADJUSTED, ELF_LINK_HASH_NEEDS_COPY, ELF_LINK_HASH_NEEDS_PLT, ELF_LINK_NON_ELF, ELF_LINK_HIDDEN, ELF_LINK_FORCED_LOCAL, ELF_LINK_HASH_MARK, ELF_LINK_NON_GOT_REF, ELF_LINK_DYNAMIC_DEF, ELF_LINK_DYNAMIC_WEAK, ELF_LINK_POINTER_EQUALITY_NEEDED): Delete. (ELF_COMMON_DEF_P, WILL_CALL_FINISH_DYNAMIC_SYMBOL): Update. * elf-hppa.h: Update all uses of elf_link_hash_flags. * elf-m10300.c: Likewise. * elf.c: Likewise. * elf32-arm.h: Likewise. * elf32-cris.c: Likewise. * elf32-frv.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i370.c: Likewise. * elf32-i386.c: Likewise. * elf32-m32r.c: Likewise. * elf32-m68k.c: Likewise. * elf32-ppc.c: Likewise. * elf32-s390.c: Likewise. * elf32-sh-symbian.c: Likewise. * elf32-sh.c: Likewise. * elf32-sh64.c: Likewise. * elf32-sparc.c: Likewise. * elf32-vax.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sh64.c: Likewise. * elf64-sparc.c: Likewise. * elf64-x86-64.c: Likewise. * elflink.c: Likewise. * elfxx-ia64.c: Likewise. * elfxx-mips.c: Likewise. * configure.in (AM_INIT_AUTOMAKE): Set version to 2.15.92. * configure: Regenerate. * aclocal.m4: Regenerate.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r--bfd/elf-bfd.h48
1 files changed, 22 insertions, 26 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 5565e49e96a..03fbd751305 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -162,47 +162,45 @@ struct elf_link_hash_entry
bfd_size_type size;
/* Symbol type (STT_NOTYPE, STT_OBJECT, etc.). */
- char type;
+ unsigned int type : 8;
/* Symbol st_other value, symbol visibility. */
- unsigned char other;
+ unsigned int other : 8;
- /* Some flags; legal values follow. */
- unsigned short elf_link_hash_flags;
/* Symbol is referenced by a non-shared object. */
-#define ELF_LINK_HASH_REF_REGULAR 01
+ unsigned int ref_regular : 1;
/* Symbol is defined by a non-shared object. */
-#define ELF_LINK_HASH_DEF_REGULAR 02
+ unsigned int def_regular : 1;
/* Symbol is referenced by a shared object. */
-#define ELF_LINK_HASH_REF_DYNAMIC 04
+ unsigned int ref_dynamic : 1;
/* Symbol is defined by a shared object. */
-#define ELF_LINK_HASH_DEF_DYNAMIC 010
+ unsigned int def_dynamic : 1;
/* Symbol has a non-weak reference from a non-shared object. */
-#define ELF_LINK_HASH_REF_REGULAR_NONWEAK 020
+ unsigned int ref_regular_nonweak : 1;
/* Dynamic symbol has been adjustd. */
-#define ELF_LINK_HASH_DYNAMIC_ADJUSTED 040
+ unsigned int dynamic_adjusted : 1;
/* Symbol needs a copy reloc. */
-#define ELF_LINK_HASH_NEEDS_COPY 0100
+ unsigned int needs_copy : 1;
/* Symbol needs a procedure linkage table entry. */
-#define ELF_LINK_HASH_NEEDS_PLT 0200
+ unsigned int needs_plt : 1;
/* Symbol appears in a non-ELF input file. */
-#define ELF_LINK_NON_ELF 0400
+ unsigned int non_elf : 1;
/* Symbol should be marked as hidden in the version information. */
-#define ELF_LINK_HIDDEN 01000
+ unsigned int hidden : 1;
/* Symbol was forced to local scope due to a version script file. */
-#define ELF_LINK_FORCED_LOCAL 02000
+ unsigned int forced_local : 1;
/* Symbol was marked during garbage collection. */
-#define ELF_LINK_HASH_MARK 04000
+ unsigned int mark : 1;
/* Symbol is referenced by a non-GOT/non-PLT relocation. This is
not currently set by all the backends. */
-#define ELF_LINK_NON_GOT_REF 010000
+ unsigned int non_got_ref : 1;
/* Symbol has a definition in a shared object. */
-#define ELF_LINK_DYNAMIC_DEF 020000
+ unsigned int dynamic_def : 1;
/* Symbol is weak in all shared objects. */
-#define ELF_LINK_DYNAMIC_WEAK 040000
+ unsigned int dynamic_weak : 1;
/* Symbol is referenced with a relocation where C/C++ pointer equality
matters. */
-#define ELF_LINK_POINTER_EQUALITY_NEEDED 0100000
+ unsigned int pointer_equality_needed : 1;
};
/* Will references to this symbol always reference the symbol
@@ -221,8 +219,8 @@ struct elf_link_hash_entry
/* Common symbols that are turned into definitions don't have the
DEF_REGULAR flag set, so they might appear to be undefined. */
#define ELF_COMMON_DEF_P(H) \
- (((H)->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0 \
- && ((H)->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 \
+ (!(H)->def_regular \
+ && !(H)->def_dynamic \
&& (H)->root.type == bfd_link_hash_defined)
/* Records local symbols to be emitted in the dynamic symbol table. */
@@ -1771,10 +1769,8 @@ extern bfd_boolean _sh_elf_set_mach_from_flags
about initializing any .plt and .got entries in relocate_section. */
#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, SHARED, H) \
((DYN) \
- && ((SHARED) \
- || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) \
- && ((H)->dynindx != -1 \
- || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0))
+ && ((SHARED) || !(H)->forced_local) \
+ && ((H)->dynindx != -1 || (H)->forced_local))
/* This macro is to avoid lots of duplicated code in the body
of xxx_relocate_section() in the various elfxx-xxxx.c files. */