This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
> - if (parameters->target().is_big_endian()) > + bool big_endian = parameters->target().is_big_endian(); > + if (size == 32) > { > -#if defined(HAVE_TARGET_32_BIG) || defined(HAVE_TARGET_64_BIG) > - Dynobj::sized_create_elf_hash_table<true>(bucket, chain, phash, > - hashlen); > + if (big_endian) > + { > +#ifdef HAVE_TARGET_32_BIG > + Dynobj::sized_create_elf_hash_table<32, true>(bucket, chain, phash, > + hashlen); > +#else > + gold_unreachable(); > +#endif > + } > + else > + { > +#ifdef HAVE_TARGET_32_LITTLE > + Dynobj::sized_create_elf_hash_table<32, false>(bucket, chain, phash, > + hashlen); > #else > - gold_unreachable(); > + gold_unreachable(); > #endif > + } This part won't work for 64-bit targets with 32-bit hash table entries: since the size of the target and the size of the hash entry are now independent, we can't assume that we don't need a 32-bit hash entry if we haven't instantiated a 32-bit target. > } > - else > + else if (size == 64) > { > -#if defined(HAVE_TARGET_32_LITTLE) || defined(HAVE_TARGET_64_LITTLE) > - Dynobj::sized_create_elf_hash_table<false>(bucket, chain, phash, > - hashlen); > + if (big_endian) > + { > +#ifdef HAVE_TARGET_64_BIG > + Dynobj::sized_create_elf_hash_table<64, true>(bucket, chain, phash, > + hashlen); > #else > - gold_unreachable(); > + gold_unreachable(); > +#endif > + } > + else > + { > +#ifdef HAVE_TARGET_64_LITTLE > + Dynobj::sized_create_elf_hash_table<64, false>(bucket, chain, phash, > + hashlen); > +#else > + gold_unreachable(); > #endif > + } Likewise for a hypothetical 32-bit target with 64-bit hash table entries. I will commit the attached patch on your behalf, along with this ChangeLog entry: 2015-10-28 Marcin KoÅcielnicki <koriakin@0x04.net> gold/ * dynobj.cc (Dynobj::create_elf_hash_table): Create hash table with target-specific entry size. (Dynobj::sized_create_elf_hash_table): Add size template parameter. * dynobj.h (Dynobj::sized_create_elf_hash_table): Likewise. * layout.cc (Layout::create_dynamic_symtab): Set entsize to hash_entry_size. * target.h (Target::hash_entry_size): New method. (Target::Target_info::hash_entry_size): New data member. * aarch64.cc (Target_aarch64::aarch64_info): Add hash_entry_size. * arm.cc (Target_arm::arm_info): Likewise. (Target_arm_nacl::arm_nacl_info): Likewise. * i386.cc (Target_i386::i386_info): Likewise. (Target_i386_nacl::i386_nacl_info): Likewise. (Target_iamcu::iamcu_info): Likewise. * mips.cc (Target_mips::mips_info): Likewise. (Target_mips_nacl::mips_nacl_info): Likewise. * powerpc.cc (Target_powerpc::powerpc_info): Likewise. * sparc.cc (Target_sparc::sparc_info): Likewise. * tilegx.cc (Target_tilegx::tilegx_info): Likewise. * x86_64.cc (Target_x86_64::x86_64_info): Likewise. (Target_x86_64_nacl::x86_64_nacl_info): Likewise. * testsuite/testfile.cc (Target_test::test_target_info): Likewise. (Normally, I'd have asked you to write the ChangeLog entry, but since I took so long to review this patch set, I wrote it for you.) -cary
Attachment:
s390-1-revised.patch
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |