* bfd-in.h (bfd_h8300_pad_address): Declare.
* bfd-in2.h: Regenerate.
* cpu-h8300.c (bfd_h8300_pad_address): New function.
* coff-h8300.c (h8300_reloc16_estimate): Use it to canonicalize
addresses before checking whether they can be relaxed.
(h8300_reloc16_extra_cases): Likewise for the R_MOVL2 sanity check.
Don't complain about overflows in general 8-bit relocations.
* elf32-h8300.c (elf32_h8_relax_section): Use bfd_h8300_pad_address.
Fix handling of R_H8_DIR24A8.
ld/testsuite/
* ld-h8300/relax-3{.s,.d,-coff.d}: New test.
* ld-h8300/h8300.exp: Run it.
(elf32_h8_relax_section) <R_H8_DIR16A8>: Adjust position of relocation.
<R_H8_DIR32A16>: Fix type of relocation.
* ld-h8300/h8300.exp: Replace loop with explicit list. Run relax.d
unconditionally. Run relax-2.d for *-elf targets.
* ld-h8300/relax.d: Fix typo.
* ld-h8300/relax.s: Add 0x prefixes.
* ld-h8300/relad-2.[sd]: New test.
special handling for n32 ABI.
(macro): Likewise.
* gas/mips/elf-rel-got-n32.d: Remove special handling for n32 ABI.
* gas/mips/elf-rel-xgot-n32.d: Likewise.
* gas/mips/jal-newabi.d: Likewise.
* ld-mips-elf/elf-rel-got-n32.d: Remove special handling for n32 ABI.
* ld-mips-elf/elf-rel-xgot-n32.d: Likewise.
* gas/mips/elempic.d: Force o64 ABI.
* gas/mips/telempic.d: Likewise.
* ld-mips-elf/rel32-n32.d: Force big endian assembly.
* ld-mips-elf/rel32-o32.d: Likewise.
* ld-mips-elf/rel64.d: Likewise.
2003-05-20 Jakub Jelinek <jakub@redhat.com>
* elflink.h (elf_link_output_extsym): Only issue error about !=
STV_DEFAULT symbols if they are bfd_link_hash_undefined.
2003-05-20 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (_bfd_elf_merge_symbol): Check ELF_LINK_DYNAMIC_DEF
when removing the old definition for symbols with non-default
visibility.
ld/testsuite/
2003-05-20 Jakub Jelinek <jakub@redhat.com>
* ld-elfvsb/common.c: New file.
* ld-elfvsb/elfvsb.exp: Add common.
2003-05-20 H.J. Lu <hongjiu.lu@intel.com>
* ld-elfvsb/sh3.c: New file.
* ld-elfvsb/test.c: Likewise.
* ld-elfvsb/elfvsb.exp: Add new weak hidden symbol tests.
* config/default.exp (gcc_ld_flag): New. Make the newly built
linker available to gcc.
* lib/ld-lib.exp (default_ld_simple_link): Pass $gcc_ld_flag
to gcc.
* ld-elfvers/vers.exp: Use "ld_simple_link $CC" to build shared
libraries.
* ld-elfvsb/elfvsb.exp: Likewise.
* ld-elfweak/elfweak.exp: Likewise.
* ld-shared/shared.exp: Likewise.
* ld-elfvers/vers.exp: Use "-Wl,-rpath,." to build shared
libraries.
* ld-elfvsb/elfvsb.exp: Likewise.
* ld-elfvsb/elfvsb.exp: Remove xfail for powerpc-*-linux*.
* ld-elfweak/elfweak.exp: Use PIC for shared libraries.
to linker script.
* ld-elfvsb/elfvsb.exp (visibility_run): Add setup_xfails for s390x.
* ld-selective/selective.exp: Disable for s390 and s390x.
* ld-shared/elf-offset.ld: Add .rel.eh_frame and .rela.eh_frame
to linker script.
* ld-shared/shared.exp (shared_test): Add setup_xfails for s390x.
* ld-undefined/undefined.exp (checkund): Remove setup_xfail for s390x.
* ld-elfvers/vers.exp: Add vers27d4 and vers27d5 to test
versioned reference for hidden symbol.
* ld-elfvers/vers27d4.dsym: New file.
* ld-elfvers/vers27d4.ver: Likewise.
mips64-linux.
* ld-elf/merge.d: Xfail on mips64*-linux-gnu*.
* ld-mips-elf/mips-elf-flags.exp (ldemul): Set to o32-compatible
on mips-sgi-irix6*, mips64-linux-gnu and mips64el-linux-gnu.
(good_combination, bad_combination): Use it.
Add -32 or -mabi=o64 wherever the ABI was formerly implied.
2003-04-28 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_merge_symbol): Call elf_backend_copy_indirect_symbol
to copy any information related to dynamic linking when we flip
the indirection.
ld/testsuite/
2003-04-28 H.J. Lu <hjl@gnu.org>
* ld-elfvers/vers.exp (picflag): Set PIC flag for compiler.
(build_vers_lib): Support PIC.
(build_vers_lib_no_pic): New. Change all calls to build_vers_lib
to build_vers_lib_no_pic.
(build_vers_lib_pic): New.
Add tests vers26a, vers26b1, vers26b2 and vers26b3 for versioned
definition vs. normal definition in different files.
* ld-elfvers/vers26a.c: New file.
* ld-elfvers/vers26a.dsym: Likewise.
* ld-elfvers/vers26a.map: Likewise.
* ld-elfvers/vers26a.ver: Likewise.
* ld-elfvers/vers26b.c: Likewise.
* ld-elfvers/vers26b.dsym: New empty file.
* ld-elfvers/vers26b.ver: Likewise.
2003-04-27 H.J. Lu <hjl@gnu.org>
* elf-bfd.h (ELF_LINK_DYNAMIC_DEF): New.
(ELF_LINK_DYNAMIC_WEAK): New.
* elflink.h (elf_merge_symbol): Add one argument to indicate if
a symbol should be skipped. Ignore definitions in dynamic
objects for symbols with non-default visibility.
(elf_add_default_symbol): Adjusted.
(elf_link_add_object_symbols): Check if a symbol should be
skipped. Don't merge the visibility field with the one from
a dynamic object.
(elf_link_check_versioned_symbol): Use undef_bfd.
(elf_link_output_extsym): Warn if a forced local symbol is
referenced from dynamic objects. Make non-weak undefined symbol
with non-default visibility a fatal error.
ld/testsuite/
2003-04-27 H.J. Lu <hjl@gnu.org>
* ld-elfvsb/elfvsb.dat: Updated.
* ld-elfvsb/elfvsb.exp: Likewise.
* ld-elfvsb/main.c: Likewise.
* ld-elfvsb/sh1.c: Likewise.
* ld-elfvsb/sh2.c: Likewise.
* elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group
when we couldn't relax something.
* ld-m68hc11/bug-3331.d: New test.
* ld-m68hc11/bug-3331.s: New file.
* ld-m68hc11/far-hc11.d: New test for HC11 trampoline generation.
* ld-m68hc11/far-hc12.s: New file.
* ld-m68hc11/far-hc12.d: New test for HC12 trampoline generation.
* ld-m68hc11/far-hc12.ld: New file.
ld-mips-elf/elf-rel-got-n64.d, ld-mips-elf/elf-rel-xgot-n32.d,
ld-mips-elf/elf-rel-xgot-n64.d: New.
* ld-mips-elf/mips-elf.exp (hasn32): Define as condition for
new tests to run.
zero index dynamic tls relocs generated for the GOT. Tidy code.
Set "relocation" to 1 on DTPMOD32 relocs. Optimize HA adjustment.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
* ld-powerpc/tlsso.r: Adjust for corrected zero symbol index relocs.
* ld-powerpc/tlsso32.r: Likewise.
* ld-s390/tlsbin_64.dd: New file.
* ld-s390/tlsbin_64.rd: New file.
* ld-s390/tlsbin_64.s: New file.
* ld-s390/tlsbin_64.sd: New file.
* ld-s390/tlsbin_64.td: New file.
* ld-s390/tlsbin.dd: New file.
* ld-s390/tlsbinpic_64.s: New file.
* ld-s390/tlsbinpic.s: New file.
* ld-s390/tlsbin.rd: New file.
* ld-s390/tlsbin.s: New file.
* ld-s390/tlsbin.sd: New file.
* ld-s390/tlsbin.td: New file.
* ld-s390/tlslib_64.s: New file.
* ld-s390/tlslib.s: New file.
* ld-s390/tlspic1_64.s: New file.
* ld-s390/tlspic1.s: New file.
* ld-s390/tlspic2_64.s: New file.
* ld-s390/tlspic2.s: New file.
* ld-s390/tlspic_64.dd: New file.
* ld-s390/tlspic_64.rd: New file.
* ld-s390/tlspic_64.sd: New file.
* ld-s390/tlspic_64.td: New file.
* ld-s390/tlspic.dd: New file.
* ld-s390/tlspic.rd: New file.
* ld-s390/tlspic.sd: New file.
* ld-s390/tlspic.td: New file.
self_dtpmod_done and self_dtpmod_offset.
(allocate_global_data_got): Only use one got entry for all
dtpmod relocs against local symbols.
(allocate_dynrel_entries): Only need .rela.got entry for
dtpmod against global symbol.
(elfNN_ia64_size_dynamic_sections): Initialize self_dtpmod_offset.
Reserve space in .rela.got for the local dtpmod entry.
(set_got_entry): Initialize the common local dtpmod .got entry.
(elfNN_ia64_relocate_section): Handle R_IA_64_DTPREL64LSB
and R_IA_64_DTPREL64MSB.
* config/tc-ia64.c (ia64_cons_fix_new): Handle @dtprel() in data.
* ld-ia64/ia64.exp: New.
* ld-ia64/tlsbin.dd: New test.
* ld-ia64/tlsbinpic.s: New test.
* ld-ia64/tlsbin.rd: New test.
* ld-ia64/tlsbin.s: New test.
* ld-ia64/tlsbin.sd: New test.
* ld-ia64/tlsbin.td: New test.
* ld-ia64/tlsg.s: New test.
* ld-ia64/tlsg.sd: New test.
* ld-ia64/tlslib.s: New test.
* ld-ia64/tlspic1.s: New test.
* ld-ia64/tlspic2.s: New test.
* ld-ia64/tlspic.dd: New test.
* ld-ia64/tlspic.rd: New test.
* ld-ia64/tlspic.sd: New test.
* ld-ia64/tlspic.td: New test.
* elfxx-mips.c: Include libiberty.h.
(elf_mips_isa, _bfd_mips_elf_mach_extends_p): Remove.
(mips_set_isa_flags): New function, split out from...
(_bfd_mips_elf_final_write_processing): ...here. Only call
mips_set_isa_flags if the EF_MIPS_MACH bits are clear.
(mips_mach_extensions): New array.
(mips_32bit_flags_p): New function.
(_bfd_mips_elf_merge_private_bfd_data): Rework architecture checks.
Use mips_32bit_flags_p to check if one binary is 32-bit and the
other is 64-bit. When adopting IBFD's architecture, adopt the
bfd_mach as well as the flags.
ld/testsuite/
* ld-mips-elf/jr.s: New file.
* ld-mips-elf/mips-elf-flags.exp: New test.
* ld-sh/tlsbin-1.d: Handle GOT_BIAS appropriately for SH-5.
* ld-sh/tlspic-1.d: Likewise.
* ld-sh/tlspic-2.d: Likewise.
* ld-sh/tlsbin-2.d: Likewise. Make it robust for the symbols
defined by the linker scripts.
* ld-sh/sh64/sh64.exp: Likewise.
* ld-sh/sh.exp: Disable relaxing tests for sh64*-*-linux*.
* ld-sh/sh64/abi32.sd: Adjust expected output to include
sh64*-*-linux* formats too.
* ld-sh/sh64/relax.exp: Add emul32 variable to hold target
emulation, and set it appropriately for sh*-*-linux*.
* ld-sh/sh64/relfail.exp: Add variables to hold target
emulation, output format, start symbol, and whether target
supports 64-bit ABI. Set appropriately for sh*-*-linux*.
* ld-mips-elf/branch-misc-1.d: Link at 0x500000 and use -N, to be
more compatible with non-embedded targets.
* ld-mips-elf/branch-misc-2.d: Likewise.
* ld-mips-elf/mips-elf.exp: Clean up some comments about embedded
PIC tests.
(elf): New variable, to control whether generic ELF tests are run.
(embedded_elf): New variable, to control whether ELF tests
requiring embedded PIC or embedded relocs are run.
* reloc.c (BFD_RELOC_386_TLS_TPOFF, BFD_RELOC_386_TLS_IE,
BFD_RELOC_386_TLS_GOTIE): Add.
* bfd-in2.h, libbfd.h: Rebuilt.
* elf32-i386.c (elf_howto_table): Add R_386_TLS_TPOFF, R_386_TLS_IE
and R_386_TLS_GOTIE.
(elf_i386_reloc_type_lookup): Handle it.
(struct elf_i386_link_hash_entry): Change tls_type type to unsigned
char instead of enum, change GOT_* into defines.
(GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH): Define.
(elf_i386_tls_transition): Handle R_386_TLS_IE and R_386_TLS_GOTIE.
(elf_i386_check_relocs): Likewise. Avoid crash if local symbol is
accessed both as normal and TLS symbol. Move R_386_TLS_LDM and
R_386_PLT32 cases so that R_386_TLS_IE can fall through.
Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs.
(elf_i386_gc_sweep_hook): Handle R_386_TLS_IE and R_386_TLS_GOTIE.
Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs.
(allocate_dynrelocs): Allocate 2 .got and 2 .rel.got entries if
tls_type is GOT_TLS_IE_BOTH.
(elf_i386_size_dynamic_sections): Likewise.
(elf_i386_relocate_section): Handle R_386_TLS_IE and R_386_TLS_GOTIE.
Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs.
(elf_i386_finish_dynamic_symbol): Use tls_type & GOT_TLS_IE to catch
all 4 GOT_TLS_* TLS types.
gas/
* config/tc-i386.c (tc_i386_fix_adjustable): Handle
BFD_RELOC_386_TLS_IE and BFD_RELOC_386_TLS_GOTIE.
(BFD_RELOC_386_TLS_IE, BFD_RELOC_386_TLS_GOTIE): Define to 0
if not defined.
(lex_got): Handle @GOTNTPOFF and @INDNTPOFF.
(md_apply_fix3, tc_gen_reloc): Handle BFD_RELOC_386_TLS_IE and
BFD_RELOC_386_TLS_GOTIE.
gas/testsuite/
* gas/i386/tlspic.s: Add tests.
* gas/i386/tlspic.d: Regenerated.
* gas/i386/tlsnopic.s: Add tests.
* gas/i386/tlsnopic.d: Regenerated.
include/
* elf/i386.h (R_386_TLS_TPOFF, R_386_TLS_IE, R_386_TLS_GOTIE):
Define.
ld/testsuite/
* ld-i386/i386.exp: New.
* ld-i386/tlsbin.dd: New test.
* ld-i386/tlsbinpic.s: New test.
* ld-i386/tlsbin.rd: New test.
* ld-i386/tlsbin.s: New test.
* ld-i386/tlsbin.sd: New test.
* ld-i386/tlsbin.td: New test.
* ld-i386/tlslib.s: New test.
* ld-i386/tlsnopic1.s: New test.
* ld-i386/tlsnopic2.s: New test.
* ld-i386/tlsnopic.dd: New test.
* ld-i386/tlsnopic.rd: New test.
* ld-i386/tlsnopic.sd: New test.
* ld-i386/tlspic1.s: New test.
* ld-i386/tlspic2.s: New test.
* ld-i386/tlspic.dd: New test.
* ld-i386/tlspic.rd: New test.
* ld-i386/tlspic.sd: New test.
* ld-i386/tlspic.td: New test.
2002-09-18 Chris Demetriou <cgd@broadcom.com>
* gas/mips/branch-misc-1.d: New file.
* gas/mips/branch-misc-1.s: New file.
* gas/mips/branch-misc-2.s: New file.
* gas/mips/branch-misc-2.d: New file.
* gas/mips/mips.exp: Run new tests.
[ ld/testsuite/ChangeLog ]
2002-09-18 Chris Demetriou <cgd@broadcom.com>
* ld-mips-elf/branch-misc-1.d: New file.
* ld-mips-elf/branch-misc-2.d: New file.
* ld-mips-elf/mips-elf.exp: Run new tests.
* ld-sh/sh64/init-cmpct.d, ld-sh/sh64/init-media.d,
ld-sh/sh64/init64.d, ld-sh/sh64/init.s: New tests for
correct setting of ISA bit for init and fini entry-points.