* elfxx-target.h (bfd_elfNN_canonicalize_reloc): Make it
[deliverable/binutils-gdb.git] / bfd / ChangeLog
index 08ae3f9448d14d82617a6d079d021be15e41af09..b64fd709631b43adfed27aebb5bb5cc991f2c68a 100644 (file)
@@ -1,6 +1,301 @@
+2003-03-12  Alexandre Oliva  <aoliva@redhat.com>
+
+       * elfxx-target.h (bfd_elfNN_canonicalize_reloc): Make it
+       overridable.
+       * elf64-mips.c (mips_elf64_canonicalize_reloc,
+       mips_elf64_get_dynamic_reloc_upper_bound,
+       mips_elf64_canonicalize_dynamic_reloc): New, adapted from elf.c.
+       (bfd_elf64_get_canonicalize_reloc,
+       bfd_elf64_get_dynamic_reloc_upper_bound,
+       bfd_elf64_canonicalize_dynamic_reloc): Define.
+       (mips_elf64_slurp_reloc_table): Support dynamic.
+       (mips_elf64_slurp_one_reloc_table): Adjust.
+
+2003-03-12  Nick Clifton  <nickc@redhat.com>
+
+       * xsym.c (bfd_sym_fetch_type_information_table_entry): Change
+       'index' to 'offset' in test for zero value.
+
+2003-03-11  Alexandre Oliva  <aoliva@redhat.com>
+
+       * elfxx-mips.c (mips_elf_create_dynamic_relocation): Do not create
+       dynamic relocations pointing to local or section symbols, use the
+       NULL symbol instead.  Document the choice to not emit an
+       additional R_MIPS_64 relocation.
+
+2003-03-11  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-ppc.c (ppc_elf_relocate_section): Subtract tls seg vma from
+       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.
+
+2003-03-07  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after
+       a tls_get_addr call.
+
+       * elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one.
+       (ppc_elf_adjust_dynamic_symbol): For weak symbols, copy
+       ELF_LINK_NON_GOT_REF from weakdef.
+       * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define as one.
+       (ppc64_elf_adjust_dynamic_symbol): For weak symbols, copy
+       ELF_LINK_NON_GOT_REF from weakdef.
+       * elf32-i386.c (ELIMINATE_COPY_RELOCS): Define as one.  Use throughout.
+       (elf_i386_adjust_dynamic_symbol): For weak symbols, copy
+       ELF_LINK_NON_GOT_REF from weakdef.
+
+2003-03-06  Jakub Jelinek <jakub@redhat.com>
+       Andrew Haley  <aph@redhat.com>
+
+       * elflink.h (elf_bfd_discard_info): Don't process eh frames if
+       output is relocateable.
+
+2003-03-06  Steven Konopa <skonopa@kgo.csc.com>
+
+       * som.c (som_fixup_formats): Correct formats for R_AUX_UNWIND and
+       R_COMMENT.
+
+2003-03-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize
+       error messages.
+       (ELIMINATE_COPY_RELOCS): Define to zero.
+       (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating
+       TLSLD relocs.  Report reloc types on a number of errors.  Optimize
+       LOCAL24PC check for non-local syms.  Don't capitalize error messages.
+       * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero.
+       (ppc64_elf_relocate_section): Don't deref htab->tls_sec when
+       calculating TLSLD relocs.  Report reloc types on a number of errors.
+       Don't capitalize error messages.
+
+2003-03-03  H.J. Lu <hjl@gnu.org>
+
+       * elfxx-ia64.c (USE_BRL): Removed.
+       (oor_ip): Removed.
+
+2003-03-03  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * elf32-sh.c (sh_elf_howto_tab): Make R_SH_IND12W into an ordinary
+       relocation (no special function), and make it non-partial_inplace.
+       (sh_elf_relax_section): When creating a bsr, use a consistent value
+       no matter if the symbol is extern or not;  set addend to -4.
+       Don't swap load / non-load instructions for SH4.
+       (sh_elf_relax_delete_bytes): In R_SH_IND12W case, check the offset
+       rather than if the symbol is external to determine if adjusting the
+       offset makes sense.  Adjust the addend too if appropriate.
+       (sh_elf_relocate_section): In R_SH_IND12W, don't fiddle with the
+       relocation.
+
+2003-03-03  Nick Clifton  <nickc@redhat.com>
+
+       * po/da.po: Installed latest translation.
+
+2003-03-02  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+       * elf32-mips.c (elf_mips_howto_table_rel): Change definition of
+       R_MIPS_PC16 to rightshift 2.
+       (elf_reloc_map mips_reloc_map): Map to rightshifted BFD reloc.
+       (bfd_elf32_bfd_reloc_type_lookup): Support
+       BFD_RELOC_MIPSEMB_16_PCREL_S2.
+       * elf64-mips.c (mips_elf64_howto_table_rel): Change definition of
+       R_MIPS_PC16 to rightshift 2.
+       (mips_elf64_howto_table_rela): Likewise.
+       (mips_reloc_map): Map to rightshifted BFD reloc.
+       * elfn32-mips.c: The same as in elf64-mips.c.
+       * elfxx-mips.c (mips_elf_got_for_ibfd): Typo in comment.
+       (mips_elf_calculate_relocation): Handle rightshifted addends for
+       R_MIPS_PC16.
+       * reloc.c (BFD_RELOC_MIPSEMB_16_PCREL_S2): New BFD relocation for
+       MIPS Embedded PIC. Remove superfluous empty COMMENT.
+       * libbfd.h: Regenerate.
+       * bfd-in2.h: Regenerate.
+
+2003-02-28  Richard Henderson  <rth@redhat.com>
+
+       * elfxx-ia64.c (elfNN_ia64_relax_section): Correct bounds
+       for ltoff22x relaxation.
+
+2003-03-01  Alan Modra  <amodra@bigpond.net.au>
+
+       * bfd-in.h (_bfd): Don't define.
+       * bfd.c: Rename occurrences of "struct _bfd" to "struct bfd".
+       * syms.c: Likewise.
+       * bfd-in2.h: Regenerate.
+
+2003-02-27  Richard Henderson  <rth@redhat.com>
+
+       * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add want_gotx;
+       (elfNN_ia64_check_relocs): Set it.
+       (allocate_global_data_got): Check it.
+       (allocate_local_got): Likewise.
+       (allocate_dynrel_entries): Likewise.
+       (elfNN_ia64_relax_ldxmov): New.
+       (elfNN_ia64_relax_section): Handle LTOFF22X, LDXMOV.
+       (elfNN_ia64_choose_gp): Split out from ...
+       (elfNN_ia64_final_link): ... here.
+       
+2003-02-27  Andrew Cagney  <cagney@redhat.com>
+
+       * bfd.c (struct bfd): Rename "struct _bfd".
+       * bfd-in.h: Update copyright.
+       (struct bfd): Rename "struct _bfd".
+       (_bfd): Define for backward compatibility.
+       * bfd-in2.h: Regenerate.
+
+2003-02-25  Alan Modra  <amodra@bigpond.net.au>
+
+       * elflink.h (elf_bfd_final_link): Apportion reloc counts to rel_hdr
+       and rel_hdr2 when initially counting input relocs rather than after
+       creating output reloc sections.
+       (elf_link_read_relocs_from_section): Don't abort with wrong reloc
+       sizes.
+
+       * Makefile.am: Run "make dep-am".
+       * Makefile.in: Regenerate.
+
+2003-02-24  Kris Warkentin  <kewarken@qnx.com>
+
+       * elf.c (elfcore_read_notes): Add check for QNX style core file.
+       (elfcore_grog_nto_note): New function.
+       (elfcore_grog_nto_gregs): New function.
+       (elfcore_grog_nto_status): New function.
+
+2003-02-24  Alan Modra  <amodra@bigpond.net.au>
+
+       * elflink.c (_bfd_elf_create_got_section): Check existing .got
+       section flags before concluding that we've already been called.
+       Don't use register keyword.
+       (_bfd_elf_create_dynamic_sections): Don't use register keyword.
+       (_bfd_elf_create_linker_section): Formatting.
+
+2003-02-20  jmc  <jmc@prioris.mini.pw.edu.pl>
+
+       * coff-h8300.c: Fix typo: intial -> initial.
+       * coff-ppc.c: Likewise.
+
+2003-02-20  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-ppc.c: Formatting.
+       (allocate_dynrelocs): LD and GD relocs against the same sym need
+       separate GOT entries.
+       (ppc_elf_relocate_section): Correct GOT handling for multiple GOT
+       entries per symbol.
+
+2003-02-19  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-hppa.c (elf32_hppa_gc_sweep_hook): Simplify dynamic reloc
+       removal.  Localize vars.  Remove unnecessary dynobj test.
+       * elf32-i386 (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead
+       of INFO.
+       (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses,
+       and optimize.
+       (elf_i386_relocate_section): Likewise.
+       (elf_i386_gc_sweep_hook): Simplify dyn reloc removal.  Localize vars.
+       * elf32-s390.c (elf_s390_gc_sweep_hook): Likewise.
+       * elf32-sh.c (sh_elf_gc_sweep_hook): Likewise.
+       * elf64-s390.c (elf_s390_gc_sweep_hook): Likewise.
+       * elf64-x86-64.c (elf64_x86_64_gc_sweep_hook): Likewise.
+       * elf32-sparc.c (elf32_sparc_gc_sweep_hook): Likewise.  Remove
+       local_dynrel for section too.  Don't touch HIPLT22, LOPLT10, PCPLT32
+       or PCPLT10 relocs.  Don't subtract twice on PLT32 relocs.
+       Formatting.
+
+       * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define.
+       (ppc64_elf_check_relocs): Use it.  Correct comment.  Move SEC_ALLOC
+       test.
+       (ppc64_elf_adjust_dynamic_symbol): Use ELIMINATE_COPY_RELOCS.
+       (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
+       (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses,
+       and optimize.  Use ELIMINATE_COPY_RELOCS.
+       (ppc64_elf_relocate_section): Likewise.
+
+       * elf32-ppc.c (struct ppc_elf_dyn_relocs): Add pc_count field.
+       (ppc_elf_copy_indirect_symbol): Copy pc_count field.
+       (ELIMINATE_COPY_RELOCS): Define.
+       (ppc_elf_adjust_dynamic_symbol): Convert copy relocs to dynamic.
+       (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
+       (MUST_BE_DYN_RELOC): Define.
+       (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses,
+       and optimize.  Trim dyn_relocs.
+       (ppc_elf_check_relocs): Don't generate dyn_relocs when we know they'll
+       not be used.  Do generate dyn_relocs for copy reloc avoidance.  Keep
+       track of pc_rel dyn relocs.
+       (ppc_elf_relocate_section): Remove "will_become_local".  Adjust
+       WILL_CALL_FINISH_DYNAMIC_SYMBOL use.  Trim dyn relocs as per
+       allocate_dynrelocs.  Don't recalculate "sec".
+
+2003-02-18  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test.
+       * elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount
+       on invalid LD relocs.
+       (allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry.
+       (ppc64_elf_relocate_section): Unify new handling of LD relocs and
+       tlsld_got entry.  Use IS_PPC64_TLS_RELOC.
+
+       * elf32-ppc.h: New file.
+       * elf32-ppc.c: Include elf32-ppc.h.
+       (NOP, CROR_151515, CROR_313131, TP_OFFSET, DTP_OFFSET): Define.
+       (struct ppc_elf_link_hash_entry): Rename "root" to "elf".  Adjust uses.
+       Add "tls_mask" field.
+       (TLS_GD, TLS_LD, TLS_TPREL, TLS_DTPREL, TLS_TLS, TLS_TPRELGD): Define.
+       (struct ppc_elf_link_hash_table): Rename "root" to "elf".  Adjust uses.
+       Add got, relgot, plt, relplt, dynbss, relbss, dynsbss, relsbss,
+       sdata, sdata2, tls_sec, tls_get_addr, tlsld_got fields.
+       Make use of htab shortcuts throughout file.
+       (ppc_elf_link_hash_newfunc): Init tls_mask field.
+       (ppc_elf_link_hash_table_create): Init new fields.
+       (ppc_elf_copy_indirect_symbol): Copy tls_mask.
+       (ppc_elf_howto_raw): Add tls relocs.
+       (ppc_elf_reloc_type_lookup): Handle them.
+       (ppc_elf_unhandled_reloc): New function.
+       (ppc_elf_create_got): Stash got section pointer in hash table,
+       return status.  Make .rela.got too.
+       (ppc_elf_create_dynamic_sections): Stash section pointers in htab.
+       (ppc_elf_adjust_dynamic_symbol): Only set up copy relocs when
+       NON_GOT_REF set.  Don't allocate space in .plt here..
+       (allocate_dynrelocs): ..do so here instead, properly ref-counting and
+       not allocating plt entries unnecessarily.  Allocate got entries here.
+       (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define.
+       (ppc_elf_size_dynamic_sections): Allocate local got entries.  Pass
+       "info" during allocate_dynrelocs hash traversal.  Use htab section
+       shortcuts rather than searching for named sections.  Get rid of
+       "plt" and "strip" booleans.
+       (update_local_sym_info, bad_shared_reloc): New functions.
+       (ppc_elf_check_relocs): Handle TLS relocs.  Move .rela.got creation to
+       ppc_elf_create_got.  Don't mark got or plt reloc syms dynamic, do so
+       in allocate_dynreloc.  Use update_local_sym_info and bad_shared_reloc.
+       Disallow R_PPC_EMB_RELSDA, R_PPC_EMB_NADDR32, R_PPC_EMB_NADDR16,
+       R_PPC_EMB_NADDR16_LO, R_PPC_EMB_NADDR16_HI and R_PPC_EMB_NADDR16_HA
+       in shared libs.  R_PPC_PLTREL32 is a plt reloc too.  Refcount all
+       relocs that might use a plt entry.  Set NON_GOT_REF too.
+       Enumerate all do-nothing relocs.
+       (ppc_elf_gc_sweep_hook): Simplify removal of dynrelocs.  Handle
+       tls relocs and all plt relocs.
+       (ppc_elf_tls_setup, ppc_elf_tls_optimize): New functions.
+       (ppc_elf_finish_dynamic_symbol): Don't build got entries here.
+       (ppc_elf_finish_dynamic_sections): Rewrite tag code using htab
+       shortcuts.
+       (ppc_elf_relocate_section): Tidy.  Handle TLS relocs.  Use
+       bfd_elf_local_sym_name.  Simplify unresolved reloc code.  Build got
+       entries and got relocs here.  Warn on non-zero got reloc addend.
+       Split out branch taken/not taken reloc code into a separate switch
+       and correct offset calculation. Allow BRTAKEN/BRNTAKEN dynamic relocs.
+       Split out HA reloc adjustments to separate switch statement.  Don't
+       warn on reloc overflow if we've already warned about undefined.
+       Don't rebuild sym name when reporting errors.  Report all possible
+       errors from _bfd_final_link_relocate.
+       (bfd_elf32_bfd_final_link): Don't define.
+
+2003-02-18  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf64-ppc.c (ppc64_elf_relocate_section): Don't init "r".  Don't
+       rebuild sym name when reporting errors.
+
 2003-02-17  Nick Clifton  <nickc@redhat.com>
 
-        * elflink.h (elf_link_output_extsym): Only check
+       * elflink.h (elf_link_output_extsym): Only check
        allow_shlib_undefined for shared libraries.
        * elf32-i386.c (elf_i386_relocate_section): Remove bogus check
        of allow_shlib_undefined.
 
        * elf.c (SEGMENT_AFTER_SEGMENT): Add third parameter - the
        address field to use in the comparison.
-        (SEGMENT_OVERLAPS): Check that LMAs overlap as well.
+       (SEGMENT_OVERLAPS): Check that LMAs overlap as well.
 
 2003-02-14  Bob Wilson  <bob.wilson@acm.org>
 
This page took 0.028809 seconds and 4 git commands to generate.