]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2002-09-23 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Mon, 23 Sep 2002 22:12:43 +0000 (22:12 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 23 Sep 2002 22:12:43 +0000 (22:12 +0000)
Merge from mainline:
2002-09-23  Alan Modra  <amodra@bigpond.net.au>
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocs
for discarded FDEs.  Remove redundant assignment.
* elflink.h (elf_bfd_discard_info): Save edited relocs.

2002-09-23  Nathan Tallent  <eraxxon@alumni.rice.edu>
* dwarf2.c (decode_line_info): Update to correctly decode
the (non-standard DWARF2) out-of-order address sequences
generated by the Intel C++ 6.0 compiler for ia64-Linux.

2002-09-22  H.J. Lu <hjl@gnu.org>
* elf64-alpha.c (elf64_alpha_merge_ind_symbols): Don't merge
the relocation count between different .reloc sections.

2002-09-22  Mark Elbrecht  <snowball3@softhome.net>
* config.bfd: For DJGPP targets, match with any cpu and any machine.

2002-09-21  Alan Modra  <amodra@bigpond.net.au>
* elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount"
unsigned.  Move "symcount" assignment out of loop.

2002-09-19  Nathan Tallent  <eraxxon@alumni.rice.edu>
* dwarf2.c (_bfd_dwarf2_find_nearest_line): If address length is
zero, set it to 8 for (non-standard) 64-bit DWARF2 formats
(e.g. IRIX64).

2002-09-19  Jakub Jelinek  <jakub@redhat.com>
* 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.

2002-09-18  Daniel Jacobowitz  <drow@mvista.com>
* elfcode.h (elf_slurp_reloc_table_from_section): Check
correct relocation count.

2002-09-17  Daniel Jacobowitz  <drow@mvista.com>
* bfd-in.h (bfd_get_dynamic_symcount): Define.
* bfd.c (struct _bfd): Add dynsymcount.
* bfd-in2.h: Regenerated.
* elf.c (_bfd_elf_canonicalize_dynamic_symtab): Set
abfd->dynsymcount.
* elfcode.h (elf_slurp_reloc_table_from_section): Check
for overflow.

2002-09-17  Alan Modra  <amodra@bigpond.net.au>
* elf64-alpha.c (alpha_elf_size_info): Make static.

2002-09-17  Jakub Jelinek  <jakub@redhat.com>
* elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Clear .got word
even if generating R_PPC_RELATIVE reloc.
(ppc_elf_relocate_section): Make sure relocation is performed if
skip == -2.  Clear memory at r_offset when creating dynamic
relocation.

2002-09-16  David O'Brien  <obrien@FreeBSD.org>
* elf32-i386-fbsd.c: Always label using the EI_OSABI method.
It is benign for FreeBSD < 4.1.  Minor reformatting.
* elf64-alpha-fbsd.c: Likewise.

2002-09-16  Nathan Tallent  <eraxxon@alumni.rice.edu>
* ecoff.c (_bfd_ecoff_slurp_symbolic_info) <ioptMax>: Fix error
reading ECOFF information: 'ioptMax' refers to the actual *size*
of the optimization symtab, not the number of entries.

2002-09-16  Jakub Jelinek  <jakub@redhat.com>
* elf_i386_relocate_section (R_386_TLS_TPOFF32): Negate addend.

2002-09-13  Daniel Jacobowitz  <drow@mvista.com>
* elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update
ELF_LINK_HASH_NEEDS_PLT logic.

2002-09-11  Nick Clifton  <nickc@redhat.com>
* po/da.po: New Danish translation file.
* configure.in (LINGUAS): Add 'da'.
* configure: Regenerate.

2002-09-11  Jakub Jelinek  <jakub@redhat.com>
* elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is
NULL.
(elf_i386_relocate_section): Return false after printing error about
unresolvable relocation.

2002-09-11  Jeffrey Law  <law@redhat.com>
* elf32-h8300.c (elf32_h8_relax_section): Fix typo.

2002-09-06  Andrew Haley  <aph@cambridge.redhat.com>
* elf.c (_bfd_elf_find_nearest_line): Check functionname_ptr and
line_ptr before deciding we've found a symbol.

2002-08-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>
* bfd-in.h (align_power): Cast constants to bfd_vma type.
* bfd-in2.h (align_power): Likewise.

2002-08-24  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
* elf32-sh.c (sh_elf_copy_indirect_symbol): New.
(create_got_section, allocate_dynrelocs, readonly_dynrelocs):
Likewise.
(struct elf_sh_pcrel_relocs_copied): Removed.
(struct elf_sh_dyn_relocs): New.
(struct elf_sh_link_hash_entry): Replace pcrel_relocs_copied
field with dyn_relocs.
(struct elf_sh_link_hash_table): Add short-cuts to get dynamic
sections and sym_sec.
(sh_elf_link_hash_newfunc): Clear dyn_relocs.
(sh_elf_link_hash_table_create): Clear shorts-cuts and sym_sec.
(sh_elf_create_dynamic_sections): Use create_got_section instead
of _bfd_elf_create_got_section.
(sh_elf_check_relocs): Likewise.
(sh_elf_create_dynamic_sections): Use short-cuts to the dynamic
sections.
(sh_elf_adjust_dynamic_symbol, sh_elf_size_dynamic_sections,
sh_elf_relocate_section, sh_elf_check_relocs,
sh_elf_finish_dynamic_symbol, sh_elf_finish_dynamic_sections):
Likewise.
(sh_elf_adjust_dynamic_symbol): Handle nocopyreloc. Keep the
dynamic relocations and avoiding the copy relocation when we
didn't find any dynamic relocations in the section which has
contents or is read-only.
(WILL_CALL_FINISH_DYNAMIC_SYMBOL): New.
(sh_elf_size_dynamic_sections): Don't reset the size of
.rela.got section even if dynamic_sections_created flag is off.
Don't use sh_elf_discard_copies. Scan all input bfd and use
allocate_dynrelocs. Call readonly_dynrelocs to determine
whether we need DT_TEXTREL.
(sh_elf_adjust_dynamic_symbol): Use plt.refcount to determine
whether the symbol was never referred to.
(sh_elf_relocate_section): Use WILL_CALL_FINISH_DYNAMIC_SYMBOL.
(sh_elf_gc_sweep_hook): Fill with the real sweep function.
(sh_elf_check_relocs): Call create_got_section if the short-cut
to .got is null. Increment reference counters only instead of
allocating space on dynamic sections here. Don't conditionalize
uninitialized got.offset value when marking the symbol as a
global offset table entry. Keep relocations for symbols satisfied
by a dynamic library to avoid copy relocations for the symbol.
Set dynobj field of an elf hash table if needed.
(sh_elf_finish_dynamic_sections): Handle null section pointer
correctly.
(elf_backend_copy_indirect_symbol): Defined.
(elf_backend_can_refcount): Defined.

2002-08-22  Nick Clifton  <nickc@redhat.com>
* po/tr.po: Updated Turkish translation.

2002-08-21  Stephen Clarke <stephen.clarke@superh.com>
* bfd/elf32-sh.c (sh_elf_size_dynamic_sections): Zero
initialize dynamic section.
* bfd/elf64-sh64.c (sh64_elf64_size_dynamic_sections):
Likewise.

2002-08-13  H.J. Lu <hjl@gnu.org>
* elflink.h (NAME(bfd_elf,size_dynamic_sections): Don't count
definitions in shared objects when checking symbol with
undefined version.

2002-08-10  H.J. Lu <hjl@gnu.org>
* elflink.h (elf_add_default_symbol): Preserve section across
elf_merge_symbol.

2002-08-09  Nick Clifton  <nickc@redhat.com>
* po/sv.po: Updated Swedish translation.

2002-08-08  Alan Modra  <amodra@bigpond.net.au>
* elflink.h (elf_link_output_extsym): Don't output symbols from
SEC_EXCLUDE sections.

* aoutx.h (aout_link_write_symbols): Correct handling of warning syms.

2002-08-08  H.J. Lu <hjl@gnu.org>
* elflink.h (elf_add_default_symbol): Don't warn a defintion
overrides an indirect versioned symbol.

2002-08-07  Alan Modra  <amodra@bigpond.net.au>
* elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opd
entries.

2002-08-07  Jakub Jelinek  <jakub@redhat.com>
* elf32-i386.c (elf_i386_relocate_section): Fill in proper addend
for R_386_TLS_TPOFF32 relocs against symndx 0.

2002-08-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if
g->global_gotsym is NULL.

2002-08-06  Alan Modra  <amodra@bigpond.net.au>
* xcofflink.c (xcoff_write_global_symbol): Set n_scnum for abs_section.

2002-08-06  Alan Modra  <amodra@bigpond.net.au>
* elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries.

2002-08-06  H.J. Lu <hjl@gnu.org>
* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol
with undefined version if needed.
(elf_link_assign_sym_version): Match a default symbol with a
version without definition. No need to hide the default
definition separately.

2002-08-06  Alan Modra  <amodra@bigpond.net.au>
* coff-rs6000.c: Formatting fixes.
(xcoff_calculate_relocation): Use PARAMS in declaration.
(xcoff_complain_overflow): Likewise.
(xcoff_ppc_relocate_section): Use old-style function pointer call.
(bfd_xcoff_backend_data): Remove useless comments.
(rs6000coff_vec): Likewise.
(bfd_pmac_xcoff_backend_data): Likewise.
(pmac_xcoff_vec): Likewise.
* coff64-rs6000.c: Formatting fixes.
(xcoff64_calculate_relocation): Use PARAMS in declaration.
(xcoff64_ppc_relocate_section): Use old-style function pointer call.
(bfd_xcoff_backend_data): Remove useless comments.
(rs6000coff64_vec): Likewise.
(bfd_xcoff_aix5_backend_data): Likewise.
(aix5coff64_vec): Likewise.

2002-08-06  Alan Modra  <amodra@bigpond.net.au>
* coff-rs6000.c: (xcoff_rtype2howto): Don't place reloc address in
addend.
* coff64-rs6000.c: (xcoff64_rtype2howto): Likewise.

2002-08-06  Alan Modra  <amodra@bigpond.net.au>
* coff-rs6000.c (xcoff_howto_table): Revert some of last change to
mask entries.  Use complain_overflow_dont for R_REF.
(xcoff_reloc_type_ba): Revert last change.
(xcoff_reloc_type_br): Likewise.
(xcoff_reloc_type_crel): Likewise.
(xcoff_ppc_relocate_section): Likewise.
* coff64-rs6000.c (xcoff64_reloc_type_br): Likewise.
(xcoff64_ppc_relocate_section): Likewise.
(xcoff64_howto_table): Revert some of last change to mask entries.
Use complain_overflow_dont for R_REF.

* coff-rs6000.c (xcoff_howto_table): Fix src_mask entries.  Make all
relocs with bitsize == 16 have size = 1.
(xcoff_reloc_type_ba): Correct src_mask and dst_mask adjustment.
(xcoff_reloc_type_br): Likewise.
(xcoff_reloc_type_crel): Likewise.
(xcoff_ppc_relocate_section): Set up src_mask and dst_mask correctly.
* coff64-rs6000.c (xcoff64_reloc_type_br): Correct src_mask and
dst_mask adjustment.
(xcoff64_ppc_relocate_section): Set up src_mask and dst_mask correctly.
(xcoff64_howto_table): Fix src_mask entries.  Make all relocs with
bitsize == 16 have size = 1.

2002-07-31  Nick Clifton  <nickc@redhat.com>
* bfd.c (bfd_alt_mach_code): Rename parameter 'index' to
'alternative' in order to avoid shadowing global symbol of the
same name.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.

2002-07-30  Alan Modra  <amodra@bigpond.net.au>
* aoutx.h (some_aout_object_p): Clean up tdata properly on error.
* archive.c (bfd_generic_archive_p): Likewise.
* coff-rs6000.c (_bfd_xcoff_archive_p): Likewise.
(_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol.
* coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
(xcoff64_archive_p): Likewise.
(xcoff64_openr_next_archived_file): Likewise.
(xcoff64_archive_p): Clean up tdata properly on error.
* coffgen.c (coff_real_object_p): Likewise.
(coff_object_p): Release filehdr and opthdr.
* ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error.
* ieee.c (ieee_archive_p): Likewise.
* ihex.c (ihex_object_p): Likewise.
(ihex_mkobject): Always allocate tdata.
* peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error.
* srec.c (srec_mkobject): Always allocate tdata.
(srec_object_p): Clean up tdata properly on error.
(symbolsrec_object_p): Likewise.
* versados.c (versados_object_p): Likewise.
* vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc,
and bfd_realloc instead of realloc.
(add_new_contents): Use bfd_alloc instead of bfd_malloc for sections.
* vms.c (vms_initialize): Always allocate tdata.  Use bfd_alloc in
place of bfd_malloc, simplifying error freeing.  Free hash table too.
(vms_object_p): Clean up tdata on error.
(vms_mkobject): Don't complain on stderr if vms_initialize fails.
(vms_close_and_cleanup): Adjust for bfd_alloc use.

2002-07-17  Ian Rickards  <irickard@arm.com>
* dwarf2.c (concat_filename): If we can't establish the directory
just return the filename.

2002-07-16  Alan Modra  <amodra@bigpond.net.au>
* elflink.h: Formatting fixes, tidy prototypes.
(elf_link_assign_sym_version): Move common code out of loop.

2002-07-04  Bruno Haible  <bruno@clisp.org>
* elf32-i386.c: Don't defined ELF_ARCH etc. if this file is included
by a target variant implementation.
* elf64-alpha.c: Likewise.
* elf32-i386-fbsd.c: New file.
* elf64-alpha-fbsd.c: New file.
* targets.c: Support bfd_elf32_i386_freebsd_vec and
bfd_elf64_alpha_freebsd_vec.
* configure.in: Accept the vectors bfd_elf32_i386_freebsd_vec,
bfd_elf64_alpha_freebsd_vec.
* Makefile.am (BFD32_BACKENDS): Add elf32-i386-fbsd.lo.
(BFD32_BACKENDS_CFILES): Add elf32-i386-fbsd.c.
(BFD64_BACKENDS): Add elf64-alpha-fbsd.lo.
(BFD64_BACKENDS_CFILES): Add elf64-alpha-fbsd.c.
(elf32-i386-fbsd.lo, elf64-alpha-fbsd.lo): Add dependencies.
* config.bfd: For FreeBSD targets, set targ_defvec to a FreeBSD
specific targets. Define OLD_FREEBSD_ABI_LABEL if appropriate.

42 files changed:
bfd/ChangeLog
bfd/Makefile.am
bfd/Makefile.in
bfd/aoutx.h
bfd/archive.c
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/bfd.c
bfd/coff-rs6000.c
bfd/coff64-rs6000.c
bfd/coffgen.c
bfd/config.bfd
bfd/configure
bfd/configure.in
bfd/dwarf2.c
bfd/ecoff.c
bfd/elf-eh-frame.c
bfd/elf.c
bfd/elf32-arm.h
bfd/elf32-h8300.c
bfd/elf32-i386.c
bfd/elf32-ppc.c
bfd/elf32-sh.c
bfd/elf64-alpha.c
bfd/elf64-ppc.c
bfd/elf64-sh64.c
bfd/elfcode.h
bfd/elflink.h
bfd/elfxx-mips.c
bfd/ieee.c
bfd/ihex.c
bfd/libbfd.h
bfd/peicode.h
bfd/po/sv.po
bfd/po/tr.po
bfd/reloc.c
bfd/srec.c
bfd/targets.c
bfd/versados.c
bfd/vms-misc.c
bfd/vms.c
bfd/xcofflink.c

index 10577a9fb949ee714ac446da273298a0a057a9d9..d10a8f81ec2c86a0f7336c555d87978fc4a88ab9 100644 (file)
@@ -1,3 +1,331 @@
+2002-09-23  Daniel Jacobowitz  <drow@mvista.com>
+
+       Merge from mainline:
+       2002-09-23  Alan Modra  <amodra@bigpond.net.au>
+       * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocs
+       for discarded FDEs.  Remove redundant assignment.
+       * elflink.h (elf_bfd_discard_info): Save edited relocs.
+
+       2002-09-23  Nathan Tallent  <eraxxon@alumni.rice.edu>
+       * dwarf2.c (decode_line_info): Update to correctly decode
+       the (non-standard DWARF2) out-of-order address sequences
+       generated by the Intel C++ 6.0 compiler for ia64-Linux.
+
+       2002-09-22  H.J. Lu <hjl@gnu.org>
+       * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Don't merge
+       the relocation count between different .reloc sections.
+
+       2002-09-22  Mark Elbrecht  <snowball3@softhome.net>
+       * config.bfd: For DJGPP targets, match with any cpu and any machine.
+
+       2002-09-21  Alan Modra  <amodra@bigpond.net.au>
+       * elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount"
+       unsigned.  Move "symcount" assignment out of loop.
+       2002-09-19  Nathan Tallent  <eraxxon@alumni.rice.edu>
+       * dwarf2.c (_bfd_dwarf2_find_nearest_line): If address length is
+       zero, set it to 8 for (non-standard) 64-bit DWARF2 formats
+       (e.g. IRIX64).
+
+       2002-09-19  Jakub Jelinek  <jakub@redhat.com>
+       * 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.
+
+       2002-09-18  Daniel Jacobowitz  <drow@mvista.com>
+       * elfcode.h (elf_slurp_reloc_table_from_section): Check
+       correct relocation count.
+
+       2002-09-17  Daniel Jacobowitz  <drow@mvista.com>
+       * bfd-in.h (bfd_get_dynamic_symcount): Define.
+       * bfd.c (struct _bfd): Add dynsymcount.
+       * bfd-in2.h: Regenerated.
+       * elf.c (_bfd_elf_canonicalize_dynamic_symtab): Set
+       abfd->dynsymcount.
+       * elfcode.h (elf_slurp_reloc_table_from_section): Check
+       for overflow.
+
+       2002-09-17  Alan Modra  <amodra@bigpond.net.au>
+       * elf64-alpha.c (alpha_elf_size_info): Make static.
+
+       2002-09-17  Jakub Jelinek  <jakub@redhat.com>
+       * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Clear .got word
+       even if generating R_PPC_RELATIVE reloc.
+       (ppc_elf_relocate_section): Make sure relocation is performed if
+       skip == -2.  Clear memory at r_offset when creating dynamic
+       relocation.
+
+       2002-09-16  David O'Brien  <obrien@FreeBSD.org>
+       * elf32-i386-fbsd.c: Always label using the EI_OSABI method.
+       It is benign for FreeBSD < 4.1.  Minor reformatting.
+       * elf64-alpha-fbsd.c: Likewise.
+
+       2002-09-16  Nathan Tallent  <eraxxon@alumni.rice.edu>
+       * ecoff.c (_bfd_ecoff_slurp_symbolic_info) <ioptMax>: Fix error
+       reading ECOFF information: 'ioptMax' refers to the actual *size*
+       of the optimization symtab, not the number of entries.
+
+       2002-09-16  Jakub Jelinek  <jakub@redhat.com>
+       * elf_i386_relocate_section (R_386_TLS_TPOFF32): Negate addend.
+
+       2002-09-13  Daniel Jacobowitz  <drow@mvista.com>
+       * elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update
+       ELF_LINK_HASH_NEEDS_PLT logic.
+
+       2002-09-11  Nick Clifton  <nickc@redhat.com>
+       * po/da.po: New Danish translation file.
+       * configure.in (LINGUAS): Add 'da'.
+       * configure: Regenerate.
+
+       2002-09-11  Jakub Jelinek  <jakub@redhat.com>
+       * elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is
+       NULL.
+       (elf_i386_relocate_section): Return false after printing error about
+       unresolvable relocation.
+
+       2002-09-11  Jeffrey Law  <law@redhat.com>
+       * elf32-h8300.c (elf32_h8_relax_section): Fix typo.
+
+       2002-09-06  Andrew Haley  <aph@cambridge.redhat.com>
+       * elf.c (_bfd_elf_find_nearest_line): Check functionname_ptr and
+       line_ptr before deciding we've found a symbol.
+
+       2002-08-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>
+       * bfd-in.h (align_power): Cast constants to bfd_vma type.
+       * bfd-in2.h (align_power): Likewise.
+
+       2002-08-24  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+       * elf32-sh.c (sh_elf_copy_indirect_symbol): New.
+       (create_got_section, allocate_dynrelocs, readonly_dynrelocs):
+       Likewise.
+       (struct elf_sh_pcrel_relocs_copied): Removed.
+       (struct elf_sh_dyn_relocs): New.
+       (struct elf_sh_link_hash_entry): Replace pcrel_relocs_copied
+       field with dyn_relocs.
+       (struct elf_sh_link_hash_table): Add short-cuts to get dynamic
+       sections and sym_sec.
+       (sh_elf_link_hash_newfunc): Clear dyn_relocs.
+       (sh_elf_link_hash_table_create): Clear shorts-cuts and sym_sec.
+       (sh_elf_create_dynamic_sections): Use create_got_section instead
+       of _bfd_elf_create_got_section.
+       (sh_elf_check_relocs): Likewise.
+       (sh_elf_create_dynamic_sections): Use short-cuts to the dynamic
+       sections.
+       (sh_elf_adjust_dynamic_symbol, sh_elf_size_dynamic_sections,
+       sh_elf_relocate_section, sh_elf_check_relocs,
+       sh_elf_finish_dynamic_symbol, sh_elf_finish_dynamic_sections):
+       Likewise.
+       (sh_elf_adjust_dynamic_symbol): Handle nocopyreloc. Keep the
+       dynamic relocations and avoiding the copy relocation when we
+       didn't find any dynamic relocations in the section which has
+       contents or is read-only.
+       (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New.
+       (sh_elf_size_dynamic_sections): Don't reset the size of
+       .rela.got section even if dynamic_sections_created flag is off.
+       Don't use sh_elf_discard_copies. Scan all input bfd and use
+       allocate_dynrelocs. Call readonly_dynrelocs to determine
+       whether we need DT_TEXTREL.
+       (sh_elf_adjust_dynamic_symbol): Use plt.refcount to determine
+       whether the symbol was never referred to.
+       (sh_elf_relocate_section): Use WILL_CALL_FINISH_DYNAMIC_SYMBOL.
+       (sh_elf_gc_sweep_hook): Fill with the real sweep function.
+       (sh_elf_check_relocs): Call create_got_section if the short-cut
+       to .got is null. Increment reference counters only instead of
+       allocating space on dynamic sections here. Don't conditionalize
+       uninitialized got.offset value when marking the symbol as a
+       global offset table entry. Keep relocations for symbols satisfied
+       by a dynamic library to avoid copy relocations for the symbol.
+       Set dynobj field of an elf hash table if needed.
+       (sh_elf_finish_dynamic_sections): Handle null section pointer
+       correctly.
+       (elf_backend_copy_indirect_symbol): Defined.
+       (elf_backend_can_refcount): Defined.
+
+       2002-08-22  Nick Clifton  <nickc@redhat.com>
+       * po/tr.po: Updated Turkish translation.
+
+       2002-08-21  Stephen Clarke <stephen.clarke@superh.com>
+       * bfd/elf32-sh.c (sh_elf_size_dynamic_sections): Zero
+       initialize dynamic section.
+       * bfd/elf64-sh64.c (sh64_elf64_size_dynamic_sections):
+       Likewise.
+
+       2002-08-13  H.J. Lu <hjl@gnu.org>
+       * elflink.h (NAME(bfd_elf,size_dynamic_sections): Don't count
+       definitions in shared objects when checking symbol with
+       undefined version.
+
+       2002-08-10  H.J. Lu <hjl@gnu.org>
+       * elflink.h (elf_add_default_symbol): Preserve section across
+       elf_merge_symbol.
+
+       2002-08-09  Nick Clifton  <nickc@redhat.com>
+       * po/sv.po: Updated Swedish translation.
+
+       2002-08-08  Alan Modra  <amodra@bigpond.net.au>
+       * elflink.h (elf_link_output_extsym): Don't output symbols from
+       SEC_EXCLUDE sections.
+
+       * aoutx.h (aout_link_write_symbols): Correct handling of warning syms.
+
+       2002-08-08  H.J. Lu <hjl@gnu.org>
+       * elflink.h (elf_add_default_symbol): Don't warn a defintion
+       overrides an indirect versioned symbol.
+
+       2002-08-07  Alan Modra  <amodra@bigpond.net.au>
+       * elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opd
+       entries.
+
+       2002-08-07  Jakub Jelinek  <jakub@redhat.com>
+       * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend
+       for R_386_TLS_TPOFF32 relocs against symndx 0.
+
+       2002-08-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+       * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if
+       g->global_gotsym is NULL.
+
+       2002-08-06  Alan Modra  <amodra@bigpond.net.au>
+       * xcofflink.c (xcoff_write_global_symbol): Set n_scnum for abs_section.
+
+       2002-08-06  Alan Modra  <amodra@bigpond.net.au>
+       * elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries.
+
+       2002-08-06  H.J. Lu <hjl@gnu.org>
+       * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol
+       with undefined version if needed.
+       (elf_link_assign_sym_version): Match a default symbol with a
+       version without definition. No need to hide the default
+       definition separately.
+
+       2002-08-06  Alan Modra  <amodra@bigpond.net.au>
+       * coff-rs6000.c: Formatting fixes.
+       (xcoff_calculate_relocation): Use PARAMS in declaration.
+       (xcoff_complain_overflow): Likewise.
+       (xcoff_ppc_relocate_section): Use old-style function pointer call.
+       (bfd_xcoff_backend_data): Remove useless comments.
+       (rs6000coff_vec): Likewise.
+       (bfd_pmac_xcoff_backend_data): Likewise.
+       (pmac_xcoff_vec): Likewise.
+       * coff64-rs6000.c: Formatting fixes.
+       (xcoff64_calculate_relocation): Use PARAMS in declaration.
+       (xcoff64_ppc_relocate_section): Use old-style function pointer call.
+       (bfd_xcoff_backend_data): Remove useless comments.
+       (rs6000coff64_vec): Likewise.
+       (bfd_xcoff_aix5_backend_data): Likewise.
+       (aix5coff64_vec): Likewise.
+
+       2002-08-06  Alan Modra  <amodra@bigpond.net.au>
+       * coff-rs6000.c: (xcoff_rtype2howto): Don't place reloc address in
+       addend.
+       * coff64-rs6000.c: (xcoff64_rtype2howto): Likewise.
+
+       2002-08-06  Alan Modra  <amodra@bigpond.net.au>
+       * coff-rs6000.c (xcoff_howto_table): Revert some of last change to
+       mask entries.  Use complain_overflow_dont for R_REF.
+       (xcoff_reloc_type_ba): Revert last change.
+       (xcoff_reloc_type_br): Likewise.
+       (xcoff_reloc_type_crel): Likewise.
+       (xcoff_ppc_relocate_section): Likewise.
+       * coff64-rs6000.c (xcoff64_reloc_type_br): Likewise.
+       (xcoff64_ppc_relocate_section): Likewise.
+       (xcoff64_howto_table): Revert some of last change to mask entries.
+       Use complain_overflow_dont for R_REF.
+
+       * coff-rs6000.c (xcoff_howto_table): Fix src_mask entries.  Make all
+       relocs with bitsize == 16 have size = 1.
+       (xcoff_reloc_type_ba): Correct src_mask and dst_mask adjustment.
+       (xcoff_reloc_type_br): Likewise.
+       (xcoff_reloc_type_crel): Likewise.
+       (xcoff_ppc_relocate_section): Set up src_mask and dst_mask correctly.
+       * coff64-rs6000.c (xcoff64_reloc_type_br): Correct src_mask and
+       dst_mask adjustment.
+       (xcoff64_ppc_relocate_section): Set up src_mask and dst_mask correctly.
+       (xcoff64_howto_table): Fix src_mask entries.  Make all relocs with
+       bitsize == 16 have size = 1.
+
+       2002-07-31  Nick Clifton  <nickc@redhat.com>
+       * bfd.c (bfd_alt_mach_code): Rename parameter 'index' to
+       'alternative' in order to avoid shadowing global symbol of the
+       same name.
+       * bfd-in2.h: Regenerate.
+       * libbfd.h: Regenerate.
+       * libcoff.h: Regenerate.
+
+       2002-07-30  Alan Modra  <amodra@bigpond.net.au>
+       * aoutx.h (some_aout_object_p): Clean up tdata properly on error.
+       * archive.c (bfd_generic_archive_p): Likewise.
+       * coff-rs6000.c (_bfd_xcoff_archive_p): Likewise.
+       (_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol.
+       * coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
+       (xcoff64_archive_p): Likewise.
+       (xcoff64_openr_next_archived_file): Likewise.
+       (xcoff64_archive_p): Clean up tdata properly on error.
+       * coffgen.c (coff_real_object_p): Likewise.
+       (coff_object_p): Release filehdr and opthdr.
+       * ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error.
+       * ieee.c (ieee_archive_p): Likewise.
+       * ihex.c (ihex_object_p): Likewise.
+       (ihex_mkobject): Always allocate tdata.
+       * peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error.
+       * srec.c (srec_mkobject): Always allocate tdata.
+       (srec_object_p): Clean up tdata properly on error.
+       (symbolsrec_object_p): Likewise.
+       * versados.c (versados_object_p): Likewise.
+       * vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc,
+       and bfd_realloc instead of realloc.
+       (add_new_contents): Use bfd_alloc instead of bfd_malloc for sections.
+       * vms.c (vms_initialize): Always allocate tdata.  Use bfd_alloc in
+       place of bfd_malloc, simplifying error freeing.  Free hash table too.
+       (vms_object_p): Clean up tdata on error.
+       (vms_mkobject): Don't complain on stderr if vms_initialize fails.
+       (vms_close_and_cleanup): Adjust for bfd_alloc use.
+
+       2002-07-17  Ian Rickards  <irickard@arm.com>
+       * dwarf2.c (concat_filename): If we can't establish the directory
+       just return the filename.
+
+       2002-07-16  Alan Modra  <amodra@bigpond.net.au>
+       * elflink.h: Formatting fixes, tidy prototypes.
+       (elf_link_assign_sym_version): Move common code out of loop.
+
+       2002-07-04  Bruno Haible  <bruno@clisp.org>
+       * elf32-i386.c: Don't defined ELF_ARCH etc. if this file is included
+       by a target variant implementation.
+       * elf64-alpha.c: Likewise.
+       * elf32-i386-fbsd.c: New file.
+       * elf64-alpha-fbsd.c: New file.
+       * targets.c: Support bfd_elf32_i386_freebsd_vec and
+       bfd_elf64_alpha_freebsd_vec.
+       * configure.in: Accept the vectors bfd_elf32_i386_freebsd_vec,
+       bfd_elf64_alpha_freebsd_vec.
+       * Makefile.am (BFD32_BACKENDS): Add elf32-i386-fbsd.lo.
+       (BFD32_BACKENDS_CFILES): Add elf32-i386-fbsd.c.
+       (BFD64_BACKENDS): Add elf64-alpha-fbsd.lo.
+       (BFD64_BACKENDS_CFILES): Add elf64-alpha-fbsd.c.
+       (elf32-i386-fbsd.lo, elf64-alpha-fbsd.lo): Add dependencies.
+       * config.bfd: For FreeBSD targets, set targ_defvec to a FreeBSD
+       specific targets. Define OLD_FREEBSD_ABI_LABEL if appropriate.
+
 2002-09-21  David O'Brien  <obrien@FreeBSD.org>
 
        Merge from mainline:
index 09476853da289c9832e6b4454dc5a6ca29e67cb6..f56ceb08652181ad58be61d814c720d77606e5de 100644 (file)
@@ -210,6 +210,7 @@ BFD32_BACKENDS = \
        elf32-hppa.lo \
        elf32-i370.lo \
        elf32-i386.lo \
+       elf32-i386-fbsd.lo \
        elf32-i386qnx.lo \
        elf32-i860.lo \
        elf32-i960.lo \
@@ -367,6 +368,7 @@ BFD32_BACKENDS_CFILES = \
        elf32-hppa.c \
        elf32-i370.c \
        elf32-i386.c \
+       elf32-i386-fbsd.c \
        elf32-i386qnx.c \
        elf32-i860.c \
        elf32-i960.c \
@@ -473,6 +475,7 @@ BFD64_BACKENDS = \
        efi-app-ia64.lo \
        elf64-x86-64.lo \
        elf64-alpha.lo \
+       elf64-alpha-fbsd.lo \
        elf64-hppa.lo \
        elf64-ia64.lo \
        elf64-gen.lo \
@@ -498,6 +501,7 @@ BFD64_BACKENDS_CFILES = \
        efi-app-ia64.c \
        elf64-x86-64.c \
        elf64-alpha.c \
+       elf64-alpha-fbsd.c \
        elf64-hppa.c \
        elf64-gen.c \
        elf64-mips.c \
@@ -1137,6 +1141,10 @@ elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
   elf32-target.h
+elf32-i386-fbsd.lo: elf32-i386-fbsd.c elf32-i386.c $(INCDIR)/filenames.h \
+  $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
+  $(INCDIR)/elf/reloc-macros.h elf32-target.h
 elf32-i386qnx.lo: elf32-i386qnx.c elf32-i386.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
@@ -1485,6 +1493,13 @@ elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
   $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
   $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
   libecoff.h ecoffswap.h elf64-target.h
+elf64-alpha-fbsd.lo: elf64-alpha-fbsd.c elf64-alpha.c $(INCDIR)/filenames.h \
+  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
+  $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
+  $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
+  $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
+  libecoff.h ecoffswap.h elf64-target.h
 elf64-hppa.lo: elf64-hppa.c $(INCDIR)/alloca-conf.h \
   $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
index 6ea2e601c1b9b4956d3155bfc31171813e84407e..6744de0af218cebdbfce33fe1a93e01a44639b5d 100644 (file)
@@ -338,6 +338,7 @@ BFD32_BACKENDS = \
        elf32-hppa.lo \
        elf32-i370.lo \
        elf32-i386.lo \
+       elf32-i386-fbsd.lo \
        elf32-i386qnx.lo \
        elf32-i860.lo \
        elf32-i960.lo \
@@ -496,6 +497,7 @@ BFD32_BACKENDS_CFILES = \
        elf32-hppa.c \
        elf32-i370.c \
        elf32-i386.c \
+       elf32-i386-fbsd.c \
        elf32-i386qnx.c \
        elf32-i860.c \
        elf32-i960.c \
@@ -603,6 +605,7 @@ BFD64_BACKENDS = \
        efi-app-ia64.lo \
        elf64-x86-64.lo \
        elf64-alpha.lo \
+       elf64-alpha-fbsd.lo \
        elf64-hppa.lo \
        elf64-ia64.lo \
        elf64-gen.lo \
@@ -629,6 +632,7 @@ BFD64_BACKENDS_CFILES = \
        efi-app-ia64.c \
        elf64-x86-64.c \
        elf64-alpha.c \
+       elf64-alpha-fbsd.c \
        elf64-hppa.c \
        elf64-gen.c \
        elf64-mips.c \
@@ -1667,6 +1671,10 @@ elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
   elf32-target.h
+elf32-i386-fbsd.lo: elf32-i386-fbsd.c elf32-i386.c $(INCDIR)/filenames.h \
+  $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
+  $(INCDIR)/elf/reloc-macros.h elf32-target.h
 elf32-i386qnx.lo: elf32-i386qnx.c elf32-i386.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
@@ -2015,6 +2023,13 @@ elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
   $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
   $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
   libecoff.h ecoffswap.h elf64-target.h
+elf64-alpha-fbsd.lo: elf64-alpha-fbsd.c elf64-alpha.c $(INCDIR)/filenames.h \
+  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
+  $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
+  $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
+  $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
+  libecoff.h ecoffswap.h elf64-target.h
 elf64-hppa.lo: elf64-hppa.c $(INCDIR)/alloca-conf.h \
   $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
index 995db426a670d45e68778c657499a99edef59cb5..83e9732a1543c4d6003e63454096c78b4d902c6c 100644 (file)
@@ -533,7 +533,7 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
   obj_aout_sym_hashes (abfd) = NULL;
 
   if (! NAME(aout,make_sections) (abfd))
-    return NULL;
+    goto error_ret;
 
   obj_datasec (abfd)->_raw_size = execp->a_data;
   obj_bsssec (abfd)->_raw_size = execp->a_bss;
@@ -655,13 +655,13 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
       obj_textsec (abfd)->next = obj_datasec (abfd);
       obj_datasec (abfd)->next = obj_bsssec (abfd);
 #endif
+      return result;
     }
-  else
-    {
-      free (rawptr);
-      abfd->tdata.aout_data = oldrawptr;
-    }
-  return result;
+
+ error_ret:
+  bfd_release (abfd, rawptr);
+  abfd->tdata.aout_data = oldrawptr;
+  return NULL;
 }
 
 /*
@@ -4186,7 +4186,8 @@ aout_link_write_symbols (finfo, input_bfd)
 
          /* Use the name from the hash table, in case the symbol was
              wrapped.  */
-         if (h != NULL)
+         if (h != NULL
+             && h->root.type != bfd_link_hash_warning)
            name = h->root.root.string;
 
          /* If this is an indirect or warning symbol, then change
@@ -4208,7 +4209,6 @@ aout_link_write_symbols (finfo, input_bfd)
 
          /* If the symbol has already been written out, skip it.  */
          if (h != (struct aout_link_hash_entry *) NULL
-             && h->root.type != bfd_link_hash_warning
              && h->written)
            {
              if ((type & N_TYPE) == N_INDR
index 0c35ff5fc7c56bd599f6b580c85d04dcedf0c58b..d7ac214c7246bf179916d3fce8811d0b065fc5e4 100644 (file)
@@ -603,8 +603,6 @@ bfd_generic_archive_p (abfd)
   char armag[SARMAG + 1];
   bfd_size_type amt;
 
-  tdata_hold = abfd->tdata.aout_ar_data;
-
   if (bfd_bread ((PTR) armag, (bfd_size_type) SARMAG, abfd) != SARMAG)
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -621,13 +619,15 @@ bfd_generic_archive_p (abfd)
     return 0;
 #endif
 
-  /* We are setting bfd_ardata(abfd) here, but since bfd_ardata
-     involves a cast, we can't do it as the left operand of assignment.  */
-  amt = sizeof (struct artdata);
-  abfd->tdata.aout_ar_data = (struct artdata *) bfd_zalloc (abfd, amt);
+  tdata_hold = bfd_ardata (abfd);
 
+  amt = sizeof (struct artdata);
+  bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
   if (bfd_ardata (abfd) == NULL)
-    return NULL;
+    {
+      bfd_ardata (abfd) = tdata_hold;
+      return NULL;
+    }
 
   bfd_ardata (abfd)->first_file_filepos = SARMAG;
   bfd_ardata (abfd)->cache = NULL;
@@ -636,21 +636,13 @@ bfd_generic_archive_p (abfd)
   bfd_ardata (abfd)->extended_names = NULL;
   bfd_ardata (abfd)->tdata = NULL;
 
-  if (!BFD_SEND (abfd, _bfd_slurp_armap, (abfd)))
+  if (!BFD_SEND (abfd, _bfd_slurp_armap, (abfd))
+      || !BFD_SEND (abfd, _bfd_slurp_extended_name_table, (abfd)))
     {
-      bfd_release (abfd, bfd_ardata (abfd));
-      abfd->tdata.aout_ar_data = tdata_hold;
       if (bfd_get_error () != bfd_error_system_call)
        bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-
-  if (!BFD_SEND (abfd, _bfd_slurp_extended_name_table, (abfd)))
-    {
       bfd_release (abfd, bfd_ardata (abfd));
-      abfd->tdata.aout_ar_data = tdata_hold;
-      if (bfd_get_error () != bfd_error_system_call)
-       bfd_set_error (bfd_error_wrong_format);
+      bfd_ardata (abfd) = tdata_hold;
       return NULL;
     }
 
@@ -686,9 +678,9 @@ bfd_generic_archive_p (abfd)
                 release bfd_ardata.  FIXME.  */
              (void) bfd_close (first);
              bfd_release (abfd, bfd_ardata (abfd));
-             abfd->tdata.aout_ar_data = tdata_hold;
 #endif
              bfd_set_error (bfd_error_wrong_object_format);
+             bfd_ardata (abfd) = tdata_hold;
              return NULL;
            }
          /* And we ought to close `first' here too.  */
index 19fd107208490a511346f578b217109fdf39ef91..807a4408b9fb9bdf5155ebac528b2c2e1e9ef515 100644 (file)
@@ -328,7 +328,7 @@ alent;
 /* Object and core file sections.  */
 
 #define        align_power(addr, align)        \
-       ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
 
 typedef struct sec *sec_ptr;
 
@@ -526,6 +526,8 @@ extern void warn_deprecated
 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
 #define bfd_count_sections(abfd) ((abfd)->section_count)
 
+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
+
 #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
 
 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
index fa418e3ef2e60cdb8e82ada3cb53cca75045fc35..bad428138f96eda82695d1afb438dfe85e9138c3 100644 (file)
@@ -334,7 +334,7 @@ alent;
 /* Object and core file sections.  */
 
 #define        align_power(addr, align)        \
-       ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
 
 typedef struct sec *sec_ptr;
 
@@ -532,6 +532,8 @@ extern void warn_deprecated
 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
 #define bfd_count_sections(abfd) ((abfd)->section_count)
 
+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
+
 #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
 
 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
@@ -2253,6 +2255,9 @@ to compensate for the borrow when the low bits are added.  */
   BFD_RELOC_386_RELATIVE,
   BFD_RELOC_386_GOTOFF,
   BFD_RELOC_386_GOTPC,
+  BFD_RELOC_386_TLS_TPOFF,
+  BFD_RELOC_386_TLS_IE,
+  BFD_RELOC_386_TLS_GOTIE,
   BFD_RELOC_386_TLS_LE,
   BFD_RELOC_386_TLS_GD,
   BFD_RELOC_386_TLS_LDM,
@@ -3379,6 +3384,9 @@ struct _bfd
   /* Symbol table for output BFD (with symcount entries).  */
   struct symbol_cache_entry  **outsymbols;
 
+  /* Used for slurped dynamic symbol tables.  */
+  unsigned int dynsymcount;
+
   /* Pointer to structure which contains architecture information.  */
   const struct bfd_arch_info *arch_info;
 
index d230aac5af66366cefbc3d1589b04941c4d0d001..cfd77726a3edcb806420e028c31c96b96f7eb779 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -128,6 +128,9 @@ CODE_FRAGMENT
 .  {* Symbol table for output BFD (with symcount entries).  *}
 .  struct symbol_cache_entry  **outsymbols;
 .
+.  {* Used for slurped dynamic symbol tables.  *}
+.  unsigned int dynsymcount;
+.
 .  {* Pointer to structure which contains architecture information.  *}
 .  const struct bfd_arch_info *arch_info;
 .
@@ -1334,27 +1337,27 @@ FUNCTION
        bfd_alt_mach_code
 
 SYNOPSIS
-       boolean bfd_alt_mach_code(bfd *abfd, int index);
+       boolean bfd_alt_mach_code(bfd *abfd, int alternative);
 
 DESCRIPTION
 
        When more than one machine code number is available for the
        same machine type, this function can be used to switch between
-       the preferred one (index == 0) and any others.  Currently,
+       the preferred one (alternative == 0) and any others.  Currently,
        only ELF supports this feature, with up to two alternate
        machine codes.
 */
 
 boolean
-bfd_alt_mach_code (abfd, index)
+bfd_alt_mach_code (abfd, alternative)
      bfd *abfd;
-     int index;
+     int alternative;
 {
   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
     {
       int code;
 
-      switch (index)
+      switch (alternative)
        {
        case 0:
          code = get_elf_backend_data (abfd)->elf_machine_code;
index 025372d11633881b0f279219251921f38286d024..5a0b8aae0281005573deb7ffc8159c1e1ccdd67c 100644 (file)
@@ -167,7 +167,7 @@ static boolean xcoff_complain_overflow_unsigned_func
   PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS));
 
 boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
-     (XCOFF_RELOC_FUNCTION_ARGS) =
+  PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)) =
 {
   xcoff_reloc_type_pos,  /* R_POS   (0x00) */
   xcoff_reloc_type_neg,  /* R_NEG   (0x01) */
@@ -200,7 +200,7 @@ boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
 };
 
 boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW])
-     (XCOFF_COMPLAIN_FUNCTION_ARGS) = 
+  PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)) =
 {
   xcoff_complain_overflow_dont_func,
   xcoff_complain_overflow_bitfield_func,
@@ -655,7 +655,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* External TOC relative symbol.  */
   HOWTO (R_GL,                 /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -670,7 +670,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* Local TOC relative symbol.  */
   HOWTO (R_TCL,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -695,8 +695,8 @@ reloc_howto_type xcoff_howto_table[] =
         0,                     /* special_function */
         "R_BA_26",             /* name */
         true,                  /* partial_inplace */
-        0x3fffffc,             /* src_mask */
-        0x3fffffc,             /* dst_mask */
+        0x03fffffc,            /* src_mask */
+        0x03fffffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
   EMPTY_HOWTO (9),
@@ -721,7 +721,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* Indirect load.  */
   HOWTO (R_RL,                 /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -736,7 +736,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* Load address.  */
   HOWTO (R_RLA,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -757,7 +757,7 @@ reloc_howto_type xcoff_howto_table[] =
         32,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
-        complain_overflow_bitfield, /* complain_on_overflow */
+        complain_overflow_dont, /* complain_on_overflow */
         0,                     /* special_function */
         "R_REF",               /* name */
         false,                 /* partial_inplace */
@@ -771,7 +771,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* TOC relative indirect load.  */
   HOWTO (R_TRL,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -786,7 +786,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* TOC relative load address.  */
   HOWTO (R_TRLA,                /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -831,7 +831,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* Modifiable call absolute indirect.  */
   HOWTO (R_CAI,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -846,7 +846,7 @@ reloc_howto_type xcoff_howto_table[] =
   /* Modifiable call relative.  */
   HOWTO (R_CREL,                /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -869,8 +869,8 @@ reloc_howto_type xcoff_howto_table[] =
         0,                     /* special_function */
         "R_RBA",               /* name */
         true,                  /* partial_inplace */
-        0xffff,                /* src_mask */
-        0xffff,                /* dst_mask */
+        0x03fffffc,            /* src_mask */
+        0x03fffffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Modifiable branch absolute.  */
@@ -884,8 +884,8 @@ reloc_howto_type xcoff_howto_table[] =
         0,                     /* special_function */
         "R_RBAC",              /* name */
         true,                  /* partial_inplace */
-        0xffff,                /* src_mask */
-        0xffff,                /* dst_mask */
+        0xffffffff,            /* src_mask */
+        0xffffffff,            /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Modifiable branch relative.  */
@@ -899,14 +899,14 @@ reloc_howto_type xcoff_howto_table[] =
         0,                     /* special_function */
         "R_RBR_26",            /* name */
         true,                  /* partial_inplace */
-        0xffff,                /* src_mask */
-        0xffff,                /* dst_mask */
+        0x03fffffc,            /* src_mask */
+        0x03fffffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Modifiable branch absolute.  */
   HOWTO (R_RBRC,                /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -996,10 +996,6 @@ xcoff_rtype2howto (relent, internal)
       && (relent->howto->bitsize
          != ((unsigned int) internal->r_size & 0x1f) + 1))
     abort ();
-
-  /* Put a meaningful value in addend */
-  relent->addend = (internal->r_size & 0x80) ? - internal->r_vaddr 
-    : internal->r_vaddr;
 }
 
 reloc_howto_type *
@@ -1243,10 +1239,11 @@ const bfd_target *
 _bfd_xcoff_archive_p (abfd)
      bfd *abfd;
 {
+  struct artdata *tdata_hold;
   char magic[SXCOFFARMAG];
-  bfd_size_type amt;
+  bfd_size_type amt = SXCOFFARMAG;
 
-  if (bfd_bread ((PTR) magic, (bfd_size_type) SXCOFFARMAG, abfd) != SXCOFFARMAG)
+  if (bfd_bread ((PTR) magic, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
        bfd_set_error (bfd_error_wrong_format);
@@ -1260,13 +1257,12 @@ _bfd_xcoff_archive_p (abfd)
       return NULL;
     }
 
-  /* We are setting bfd_ardata(abfd) here, but since bfd_ardata
-     involves a cast, we can't do it as the left operand of
-     assignment.  */
+  tdata_hold = bfd_ardata (abfd);
+
   amt = sizeof (struct artdata);
-  abfd->tdata.aout_ar_data = (struct artdata *) bfd_zalloc (abfd, amt);
+  bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
   if (bfd_ardata (abfd) == (struct artdata *) NULL)
-    return NULL;
+    goto error_ret_restore;
 
   bfd_ardata (abfd)->cache = NULL;
   bfd_ardata (abfd)->archive_head = NULL;
@@ -1283,13 +1279,12 @@ _bfd_xcoff_archive_p (abfd)
       memcpy (hdr.magic, magic, SXCOFFARMAG);
 
       /* Now read the rest of the file header.  */
-      if (bfd_bread ((PTR) &hdr.memoff,
-                   (bfd_size_type) SIZEOF_AR_FILE_HDR - SXCOFFARMAG, abfd)
-         != SIZEOF_AR_FILE_HDR - SXCOFFARMAG)
+      amt = SIZEOF_AR_FILE_HDR - SXCOFFARMAG;
+      if (bfd_bread ((PTR) &hdr.memoff, amt, abfd) != amt)
        {
          if (bfd_get_error () != bfd_error_system_call)
            bfd_set_error (bfd_error_wrong_format);
-         return NULL;
+         goto error_ret;
        }
 
       bfd_ardata (abfd)->first_file_filepos = strtol (hdr.firstmemoff,
@@ -1298,7 +1293,7 @@ _bfd_xcoff_archive_p (abfd)
       amt = SIZEOF_AR_FILE_HDR;
       bfd_ardata (abfd)->tdata = bfd_zalloc (abfd, amt);
       if (bfd_ardata (abfd)->tdata == NULL)
-       return NULL;
+       goto error_ret;
 
       memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR);
     }
@@ -1311,33 +1306,32 @@ _bfd_xcoff_archive_p (abfd)
       memcpy (hdr.magic, magic, SXCOFFARMAG);
 
       /* Now read the rest of the file header.  */
-      if (bfd_bread ((PTR) &hdr.memoff,
-                   (bfd_size_type) SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG, abfd)
-         != SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG)
+      amt = SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG;
+      if (bfd_bread ((PTR) &hdr.memoff, amt, abfd) != amt)
        {
          if (bfd_get_error () != bfd_error_system_call)
            bfd_set_error (bfd_error_wrong_format);
-         return NULL;
+         goto error_ret;
        }
 
-      /* XXX This actually has to be a call to strtoll (at least on 32-bit
-        machines) since the field width is 20 and there numbers with more
-        than 32 bits can be represented.  */
-      bfd_ardata (abfd)->first_file_filepos = strtol (hdr.firstmemoff,
-                                                     (char **) NULL, 10);
+      bfd_ardata (abfd)->first_file_filepos = bfd_scan_vma (hdr.firstmemoff,
+                                                           (const char **) 0,
+                                                           10);
 
       amt = SIZEOF_AR_FILE_HDR_BIG;
       bfd_ardata (abfd)->tdata = bfd_zalloc (abfd, amt);
       if (bfd_ardata (abfd)->tdata == NULL)
-       return NULL;
+       goto error_ret;
 
       memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR_BIG);
     }
 
   if (! _bfd_xcoff_slurp_armap (abfd))
     {
+    error_ret:
       bfd_release (abfd, bfd_ardata (abfd));
-      abfd->tdata.aout_ar_data = (struct artdata *) NULL;
+    error_ret_restore:
+      bfd_ardata (abfd) = tdata_hold;
       return NULL;
     }
 
@@ -2186,9 +2180,9 @@ xcoff_write_archive_contents_old (abfd)
   sprintf (fhdr.memoff, "%ld", (long) nextoff);
 
   memset (&ahdr, 0, sizeof ahdr);
-  sprintf (ahdr.size, "%ld", (long) (XCOFFARMAG_ELEMENT_SIZE + 
-                                    count * XCOFFARMAG_ELEMENT_SIZE + 
-                                    total_namlen));
+  sprintf (ahdr.size, "%ld", (long) (XCOFFARMAG_ELEMENT_SIZE
+                                    + count * XCOFFARMAG_ELEMENT_SIZE
+                                    total_namlen));
   sprintf (ahdr.prevoff, "%ld", (long) prevoff);
   sprintf (ahdr.date, "%d", 0);
   sprintf (ahdr.uid, "%d", 0);
@@ -2460,9 +2454,9 @@ xcoff_write_archive_contents_big (abfd)
 
   hdr = (struct xcoff_ar_hdr_big *) member_table;
 
-  PRINT20 (hdr->size, (XCOFFARMAGBIG_ELEMENT_SIZE + 
-                      count * XCOFFARMAGBIG_ELEMENT_SIZE + 
-                      total_namlen + (total_namlen & 1)));
+  PRINT20 (hdr->size, (XCOFFARMAGBIG_ELEMENT_SIZE
+                      + count * XCOFFARMAGBIG_ELEMENT_SIZE
+                      total_namlen + (total_namlen & 1)));
   if (makemap && hasobjects) 
     PRINT20 (hdr->nextoff, nextoff + member_table_size);
   else
@@ -2825,8 +2819,8 @@ xcoff_reloc_type_rel (input_bfd, input_section, output_bfd, rel, sym, howto,
   addend += input_section->vma;
 
   *relocation = val + addend;
-  *relocation -= (input_section->output_section->vma + 
-                 input_section->output_offset);
+  *relocation -= (input_section->output_section->vma
+                 input_section->output_offset);
   return true;
 }
 
@@ -2868,8 +2862,8 @@ xcoff_reloc_type_toc (input_bfd, input_section, output_bfd, rel, sym, howto,
              + h->toc_section->output_offset);
     }
   
-  *relocation = ((val - xcoff_data (output_bfd)->toc) - 
-                (sym->n_value - xcoff_data (input_bfd)->toc));
+  *relocation = ((val - xcoff_data (output_bfd)->toc)
+                (sym->n_value - xcoff_data (input_bfd)->toc));
   return true;
 }
 
@@ -2925,8 +2919,8 @@ xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
      cror.  */
   if (NULL != h 
       && bfd_link_hash_defined == h->root.type 
-      && (rel->r_vaddr - input_section->vma + 8 <= 
-         input_section->_cooked_size)) 
+      && (rel->r_vaddr - input_section->vma + 8
+         <= input_section->_cooked_size))
     {
       bfd_byte *pnext;
       unsigned long next;
@@ -2943,7 +2937,8 @@ xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
              || next == 0x60000000)                    /* ori r0,r0,0 */
            bfd_put_32 (input_bfd, 0x80410014, pnext);  /* lwz r1,20(r1) */
          
-       } else 
+       }
+      else
          {
            if (next == 0x80410014)                      /* lwz r1,20(r1) */
              bfd_put_32 (input_bfd, 0x60000000, pnext); /* ori r0,r0,0 */
@@ -2969,8 +2964,8 @@ xcoff_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
   addend += input_section->vma;
   
   *relocation = val + addend;
-  *relocation -= (input_section->output_section->vma + 
-                 input_section->output_offset);
+  *relocation -= (input_section->output_section->vma
+                 input_section->output_offset);
   return true;
 }
 
@@ -2996,8 +2991,8 @@ xcoff_reloc_type_crel (input_bfd, input_section, output_bfd, rel, sym, howto,
   addend += input_section->vma;
 
   *relocation = val + addend;
-  *relocation -= (input_section->output_section->vma + 
-                 input_section->output_offset);
+  *relocation -= (input_section->output_section->vma
+                 input_section->output_offset);
   return true;
 }
 
@@ -3345,8 +3340,9 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
       howto.size = howto.bitsize > 16 ? 2 : 1;
       howto.pc_relative = false;
       howto.bitpos = 0;
-      howto.complain_on_overflow = rel->r_size & 0x80 ? 
-       complain_overflow_signed : complain_overflow_bitfield;
+      howto.complain_on_overflow = (rel->r_size & 0x80
+                                   ? complain_overflow_signed
+                                   : complain_overflow_bitfield);
       howto.special_function = NULL;
       howto.name = "internal";
       howto.partial_inplace = true;
@@ -3415,7 +3411,7 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
        }
 
       if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION 
-         || (false == xcoff_calculate_relocation[rel->r_type]
+         || !((*xcoff_calculate_relocation[rel->r_type])
              (input_bfd, input_section, output_bfd, rel, sym, &howto, val, 
               addend, &relocation, contents))) 
        return false;
@@ -3440,11 +3436,11 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
         operation, which would be tedious, or we must do the computations
         in a type larger than bfd_vma, which would be inefficient.  */
       
-      if ((unsigned int) howto.complain_on_overflow >= 
-         XCOFF_MAX_COMPLAIN_OVERFLOW)
+      if ((unsigned int) howto.complain_on_overflow
+         >= XCOFF_MAX_COMPLAIN_OVERFLOW)
        abort();
 
-      if ((true == xcoff_complain_overflow[howto.complain_on_overflow]
+      if (((*xcoff_complain_overflow[howto.complain_on_overflow])
           (input_bfd, value_to_relocate, relocation, &howto))) 
        {
          const char *name;
@@ -3474,9 +3470,9 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
        }
       
       /* Add RELOCATION to the right bits of VALUE_TO_RELOCATE.  */
-      value_to_relocate = ((value_to_relocate & ~howto.dst_mask) | 
-                          (((value_to_relocate & howto.src_mask) + 
-                            relocation) & howto.dst_mask));
+      value_to_relocate = ((value_to_relocate & ~howto.dst_mask)
+                          | (((value_to_relocate & howto.src_mask)
+                              + relocation) & howto.dst_mask));
       
       /* Put the value back in the object file.  */
       if (1 == howto.size)
@@ -3578,8 +3574,8 @@ xcoff_create_csect_from_smclas (abfd, aux, symbol_name)
     ".td", NULL, ".sv3264"
   };
 
-  if ((19 >= aux->x_csect.x_smclas) &&
-      (NULL != names[aux->x_csect.x_smclas]))
+  if ((19 >= aux->x_csect.x_smclas)
+      && (NULL != names[aux->x_csect.x_smclas]))
     {
       return_value = bfd_make_section_anyway
        (abfd, names[aux->x_csect.x_smclas]);
@@ -3630,8 +3626,7 @@ xcoff_loader_reloc_offset (abfd, ldhdr)
     bfd *abfd;
     struct internal_ldhdr *ldhdr;
 {
-  return bfd_xcoff_ldhdrsz(abfd) +
-    (ldhdr->l_nsyms * bfd_xcoff_ldsymsz(abfd));
+  return bfd_xcoff_ldhdrsz (abfd) + ldhdr->l_nsyms * bfd_xcoff_ldsymsz (abfd);
 }
 
 static boolean 
@@ -3955,81 +3950,81 @@ static unsigned long xcoff_glink_code[9] =
 static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
   {
     { /* COFF backend, defined in libcoff.h.  */
-      _bfd_xcoff_swap_aux_in,           /* _bfd_coff_swap_aux_in */
-      _bfd_xcoff_swap_sym_in,           /* _bfd_coff_swap_sym_in */
-      coff_swap_lineno_in,              /* _bfd_coff_swap_lineno_in */
-      _bfd_xcoff_swap_aux_out,          /* _bfd_swap_aux_out */
-      _bfd_xcoff_swap_sym_out,          /* _bfd_swap_sym_out */
-      coff_swap_lineno_out,             /* _bfd_swap_lineno_out */
-      xcoff_swap_reloc_out,             /* _bfd_swap_reloc_out */
-      coff_swap_filehdr_out,            /* _bfd_swap_filehdr_out */
-      coff_swap_aouthdr_out,            /* _bfd_swap_aouthdr_out */
-      coff_swap_scnhdr_out,             /* _bfd_swap_scnhdr_out */
-      FILHSZ,                           /* _bfd_filhsz */
-      AOUTSZ,                           /* _bfd_aoutsz */
-      SCNHSZ,                           /* _bfd_scnhsz */
-      SYMESZ,                           /* _bfd_symesz */
-      AUXESZ,                           /* _bfd_auxesz */
-      RELSZ,                            /* _bfd_relsz */
-      LINESZ,                           /* _bfd_linesz */
-      FILNMLEN,                         /* _bfd_filnmlen */
+      _bfd_xcoff_swap_aux_in,
+      _bfd_xcoff_swap_sym_in,
+      coff_swap_lineno_in,
+      _bfd_xcoff_swap_aux_out,
+      _bfd_xcoff_swap_sym_out,
+      coff_swap_lineno_out,
+      xcoff_swap_reloc_out,
+      coff_swap_filehdr_out,
+      coff_swap_aouthdr_out,
+      coff_swap_scnhdr_out,
+      FILHSZ,
+      AOUTSZ,
+      SCNHSZ,
+      SYMESZ,
+      AUXESZ,
+      RELSZ,
+      LINESZ,
+      FILNMLEN,
       true,                             /* _bfd_coff_long_filenames */
       false,                            /* _bfd_coff_long_section_names */
-      (3),                              /* _bfd_coff_default_section_alignment_power */
+      3,                       /* _bfd_coff_default_section_alignment_power */
       false,                            /* _bfd_coff_force_symnames_in_strings */
       2,                                /* _bfd_coff_debug_string_prefix_length */
-      coff_swap_filehdr_in,             /* _bfd_coff_swap_filehdr_in */
-      coff_swap_aouthdr_in,             /* _bfd_swap_aouthdr_in */
-      coff_swap_scnhdr_in,              /* _bfd_swap_scnhdr_in */
-      xcoff_swap_reloc_in,              /* _bfd_reloc_in */
-      coff_bad_format_hook,             /* _bfd_bad_format_hook */
-      coff_set_arch_mach_hook,          /* _bfd_set_arch_mach_hook */
-      coff_mkobject_hook,               /* _bfd_mkobject_hook */
-      styp_to_sec_flags,                /* _bfd_syp_to_sec_flags */
-      coff_set_alignment_hook,          /* _bfd_set_alignment_hook */
-      coff_slurp_symbol_table,          /* _bfd_coff_slurp_symbol_table */
-      symname_in_debug_hook,            /* _coff_symname_in_debug_hook */
-      coff_pointerize_aux_hook,         /* _bfd_coff_pointerize_aux_hook */
-      coff_print_aux,                   /* bfd_coff_print_aux */
-      dummy_reloc16_extra_cases,        /* _bfd_coff_reloc16_extra_cases */
-      dummy_reloc16_estimate,           /* _bfd_coff_reloc16_estimate */
+      coff_swap_filehdr_in,
+      coff_swap_aouthdr_in,
+      coff_swap_scnhdr_in,
+      xcoff_swap_reloc_in,
+      coff_bad_format_hook,
+      coff_set_arch_mach_hook,
+      coff_mkobject_hook,
+      styp_to_sec_flags,
+      coff_set_alignment_hook,
+      coff_slurp_symbol_table,
+      symname_in_debug_hook,
+      coff_pointerize_aux_hook,
+      coff_print_aux,
+      dummy_reloc16_extra_cases,
+      dummy_reloc16_estimate,
       NULL,                             /* bfd_coff_sym_is_global */
-      coff_compute_section_file_positions, /* _bfd_coff_compute_section_file_positions */
+      coff_compute_section_file_positions,
       NULL,                             /* _bfd_coff_start_final_link */
-      xcoff_ppc_relocate_section,       /* _bfd_coff_relocate_section */
-      coff_rtype_to_howto,              /* _bfd_coff_rtype_to_howto */
-      NULL,                             /* _bfd_coff_addust_symndx */
-      _bfd_generic_link_add_one_symbol, /* _bfd_coff_add_one_symbol */
-      coff_link_output_has_begun,       /* _bfd_coff_link_output_has_begun */
-      coff_final_link_postscript        /* _bfd_coff_final_link_postscript */
+      xcoff_ppc_relocate_section,
+      coff_rtype_to_howto,
+      NULL,                    /* _bfd_coff_adjust_symndx */
+      _bfd_generic_link_add_one_symbol,
+      coff_link_output_has_begun,
+      coff_final_link_postscript
     },
 
     0x01DF,                             /* magic number */
-    bfd_arch_rs6000,                    /* architecture */
-    bfd_mach_rs6k,                      /* machine */
+    bfd_arch_rs6000,
+    bfd_mach_rs6k,
 
     /* Function pointers to xcoff specific swap routines.  */
-    xcoff_swap_ldhdr_in,                /* _xcoff_swap_ldhdr_in */
-    xcoff_swap_ldhdr_out,               /* _xcoff_swap_ldhdr_out */
-    xcoff_swap_ldsym_in,                /* _xcoff_swap_ldsym_in */
-    xcoff_swap_ldsym_out,               /* _xcoff_swap_ldsym_out */
-    xcoff_swap_ldrel_in,                /* _xcoff_swap_ldrel_in */
-    xcoff_swap_ldrel_out,               /* _xcoff_swap_ldrel_out */
+    xcoff_swap_ldhdr_in,
+    xcoff_swap_ldhdr_out,
+    xcoff_swap_ldsym_in,
+    xcoff_swap_ldsym_out,
+    xcoff_swap_ldrel_in,
+    xcoff_swap_ldrel_out,
 
     /* Sizes.  */
-    LDHDRSZ,                            /* _xcoff_ldhdrsz */
-    LDSYMSZ,                            /* _xcoff_ldsymsz */
-    LDRELSZ,                            /* _xcoff_ldrelsz */
+    LDHDRSZ,
+    LDSYMSZ,
+    LDRELSZ,
     12,                                 /* _xcoff_function_descriptor_size */
-    SMALL_AOUTSZ,                       /* _xcoff_small_aout_header_size */
+    SMALL_AOUTSZ,
 
   /* Versions. */
     1,                                   /* _xcoff_ldhdr_version */
 
-    _bfd_xcoff_put_symbol_name,          /* _xcoff_put_symbol_name */
-    _bfd_xcoff_put_ldsymbol_name,        /* _xcoff_put_ldsymbol_name */
-    & xcoff_dynamic_reloc,               /* dynamic reloc howto */
-    xcoff_create_csect_from_smclas,      /* _xcoff_create_csect_from_smclas */
+    _bfd_xcoff_put_symbol_name,
+    _bfd_xcoff_put_ldsymbol_name,
+    &xcoff_dynamic_reloc,
+    xcoff_create_csect_from_smclas,
 
     /* Lineno and reloc count overflow.  */
     xcoff_is_lineno_count_overflow,
@@ -4040,11 +4035,11 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
 
     /* glink.  */
     & xcoff_glink_code[0],
-    (36),           /* _xcoff_glink_size */
+    36,                                /* _xcoff_glink_size */
 
     /* rtinit */
     64,           /* _xcoff_rtinit_size */
-    xcoff_generate_rtinit,  /* _xcoff_generate_rtinit */
+    xcoff_generate_rtinit,
 };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -4055,36 +4050,35 @@ const bfd_target rs6000coff_vec =
   BFD_ENDIAN_BIG,              /* data byte order is big */
   BFD_ENDIAN_BIG,              /* header byte order is big */
 
-  (HAS_RELOC | EXEC_P |                /* object flags */
-   HAS_LINENO | HAS_DEBUG | DYNAMIC |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT),
+    (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
+     | HAS_SYMS | HAS_LOCALS | WP_TEXT),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+    (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
   0,                           /* leading char */
   '/',                         /* ar_pad_char */
-  15,                          /* ar_max_namelen??? FIXMEmgo */
+    15,                                /* ar_max_namelen */
 
                       /* data */
-  bfd_getb64,         /* bfd_getx64 */
-  bfd_getb_signed_64, /* bfd_getx_signed_64 */
-  bfd_putb64,         /* bfd_putx64 */
-  bfd_getb32,         /* bfd_getx32 */
-  bfd_getb_signed_32, /* bfd_getx_signed_32 */
-  bfd_putb32,         /* bfd_putx32 */
-  bfd_getb16,         /* bfd_getx16 */
-  bfd_getb_signed_16, /* bfd_getx_signed_16 */
-  bfd_putb16,         /* bfd_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
                       /* hdrs */
-  bfd_getb64,         /* bfd_h_getx64 */
-  bfd_getb_signed_64, /* bfd_h_getx_signed_64 */
-  bfd_putb64,         /* bfd_h_putx64 */
-  bfd_getb32,         /* bfd_h_getx32 */
-  bfd_getb_signed_32, /* bfd_h_getx_signed_32 */
-  bfd_putb32,         /* bfd_h_putx32 */
-  bfd_getb16,         /* bfd_h_getx16 */
-  bfd_getb_signed_16, /* bfd_h_getx_signed_16 */
-  bfd_putb16,         /* bfd_h_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
   { /* bfd_check_format */
     _bfd_dummy_target,
@@ -4108,206 +4102,186 @@ const bfd_target rs6000coff_vec =
   },
 
   /* Generic */
-  bfd_true,                          /* _close_and_cleanup */
-  bfd_true,                          /* _bfd_free_cached_info */
-  coff_new_section_hook,             /* _new_section_hook */
-  _bfd_generic_get_section_contents, /* _bfd_get_section_contents */
-                                     /* _bfd_get_section_contents_in_window */
+    bfd_true,
+    bfd_true,
+    coff_new_section_hook,
+    _bfd_generic_get_section_contents,
   _bfd_generic_get_section_contents_in_window,
 
   /* Copy */
-  _bfd_xcoff_copy_private_bfd_data, /* _bfd_copy_private_bfd */
-                                    /* _bfd_merge_private_bfd_data */
+    _bfd_xcoff_copy_private_bfd_data,
   ((boolean (*) (bfd *, bfd *)) bfd_true),
-                                    /* _bfd_copy_pivate_section_data */
   ((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
-                                    /* _bfd_copy_private_symbol_data */
   ((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
-  ((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
-  ((boolean (*) (bfd *, void * )) bfd_true),  /* _bfd_print_private_bfd_data */
+    ((boolean (*) (bfd *, flagword)) bfd_true),
+    ((boolean (*) (bfd *, void * )) bfd_true),
 
   /* Core */
-  coff_core_file_failing_command,    /* _core_file_failing_command */
-  coff_core_file_failing_signal,     /* _core_file_failing_signal */
-                                          /* _core_file_matches_executable_p */
+    coff_core_file_failing_command,
+    coff_core_file_failing_signal,
   coff_core_file_matches_executable_p,
 
   /* Archive */
-  _bfd_xcoff_slurp_armap,                  /* _slurp_armap */
-                                           /* XCOFF archives do not have
-                                             anything which corresponds to
-                                             an extended name table.  */
-  bfd_false,                               /* _slurp_extended_name_table */
-                                           /* _construct_extended_name_table */
+    _bfd_xcoff_slurp_armap,
+    bfd_false,
   ((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
-  bfd_dont_truncate_arname,                /* _truncate_arname */
-  _bfd_xcoff_write_armap,                  /* _write_armap */
-  _bfd_xcoff_read_ar_hdr,                  /* _read_ar_hdr */
-  _bfd_xcoff_openr_next_archived_file,     /* _openr_next_archived_file */
-  _bfd_generic_get_elt_at_index,           /* _get_elt_at_index */
-  _bfd_xcoff_stat_arch_elt,                /* _generic_stat_arch_elt */
-                                           /* XCOFF archives do not have
-                                             a timestamp.  */
-  bfd_true,                                /* _update_armap_timestamp */
+    bfd_dont_truncate_arname,
+    _bfd_xcoff_write_armap,
+    _bfd_xcoff_read_ar_hdr,
+    _bfd_xcoff_openr_next_archived_file,
+    _bfd_generic_get_elt_at_index,
+    _bfd_xcoff_stat_arch_elt,
+    bfd_true,
 
   /* Symbols */
-  coff_get_symtab_upper_bound,             /* _get_symtab_upper_bound */
-  coff_get_symtab,                         /* _get_symtab */
-  coff_make_empty_symbol,                  /* _make_empty_symbol */
-  coff_print_symbol,                       /* _print_symbol */
-  coff_get_symbol_info,                    /* _get_symbol_info */
-  _bfd_xcoff_is_local_label_name,          /* _bfd_is_local_label_name */
-  coff_get_lineno,                         /* _get_lineno */
-  coff_find_nearest_line,                  /* _find_nearest_line */
-  coff_bfd_make_debug_symbol,              /* _bfd_make_debug_symbol */
-  _bfd_generic_read_minisymbols,           /* _read_minisymbols */
-  _bfd_generic_minisymbol_to_symbol,       /* _minsymbol_to_symbol */
+    coff_get_symtab_upper_bound,
+    coff_get_symtab,
+    coff_make_empty_symbol,
+    coff_print_symbol,
+    coff_get_symbol_info,
+    _bfd_xcoff_is_local_label_name,
+    coff_get_lineno,
+    coff_find_nearest_line,
+    coff_bfd_make_debug_symbol,
+    _bfd_generic_read_minisymbols,
+    _bfd_generic_minisymbol_to_symbol,
 
   /* Reloc */
-  coff_get_reloc_upper_bound,              /* _get_reloc_upper_bound */
-  coff_canonicalize_reloc,                 /* _cononicalize_reloc */
-  _bfd_xcoff_reloc_type_lookup,            /* _bfd_reloc_type_lookup */
+    coff_get_reloc_upper_bound,
+    coff_canonicalize_reloc,
+    _bfd_xcoff_reloc_type_lookup,
 
   /* Write */
-  coff_set_arch_mach,                      /* _set_arch_mach */
-  coff_set_section_contents,               /* _set_section_contents */
+    coff_set_arch_mach,
+    coff_set_section_contents,
 
   /* Link */
-  _bfd_xcoff_sizeof_headers,               /* _sizeof_headers */
-                                      /* _bfd_get_relocated_section_contents */
+    _bfd_xcoff_sizeof_headers,
   bfd_generic_get_relocated_section_contents,
-  bfd_generic_relax_section,               /* _bfd_relax_section */
-  _bfd_xcoff_bfd_link_hash_table_create,   /* _bfd_link_hash_table_create */
-  _bfd_generic_link_hash_table_free,       /* _bfd_link_hash_table_free */
-  _bfd_xcoff_bfd_link_add_symbols,         /* _bfd_link_add_symbols */
-  _bfd_generic_link_just_syms,             /* _bfd_link_just_syms */
-  _bfd_xcoff_bfd_final_link,               /* _bfd_final_link */
-  _bfd_generic_link_split_section,         /* _bfd_link_split_section */
-  bfd_generic_gc_sections,                 /* _bfd_gc_sections */
-  bfd_generic_merge_sections,              /* _bfd_merge_sections */
-  bfd_generic_discard_group,               /* _bfd_discard_group */
+    bfd_generic_relax_section,
+    _bfd_xcoff_bfd_link_hash_table_create,
+    _bfd_generic_link_hash_table_free,
+    _bfd_xcoff_bfd_link_add_symbols,
+    _bfd_generic_link_just_syms,
+    _bfd_xcoff_bfd_final_link,
+    _bfd_generic_link_split_section,
+    bfd_generic_gc_sections,
+    bfd_generic_merge_sections,
+    bfd_generic_discard_group,
 
   /* Dynamic */
-                                          /* _get_dynamic_symtab_upper_bound */
   _bfd_xcoff_get_dynamic_symtab_upper_bound,
-  _bfd_xcoff_canonicalize_dynamic_symtab,  /* _cononicalize_dynamic_symtab */
-  _bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
-  _bfd_xcoff_canonicalize_dynamic_reloc,   /* _cononicalize_dynamic_reloc */
+    _bfd_xcoff_canonicalize_dynamic_symtab,
+    _bfd_xcoff_get_dynamic_reloc_upper_bound,
+    _bfd_xcoff_canonicalize_dynamic_reloc,
 
   /* Opposite endian version, none exists */
   NULL,
 
-  /* back end data */
   (void *) &bfd_xcoff_backend_data,
 };
 
-/*
- * xcoff-powermac target
- * Old target.
- * Only difference between this target and the rs6000 target is the
- * the default architecture and machine type used in coffcode.h
- *
- * PowerPC Macs use the same magic numbers as RS/6000
- * (because that's how they were bootstrapped originally),
- * but they are always PowerPC architecture.
- */
+/* xcoff-powermac target
+   Old target.
+   Only difference between this target and the rs6000 target is the
+   the default architecture and machine type used in coffcode.h
+
+   PowerPC Macs use the same magic numbers as RS/6000
+   (because that's how they were bootstrapped originally),
+   but they are always PowerPC architecture.  */
 static const struct xcoff_backend_data_rec bfd_pmac_xcoff_backend_data =
 {
-  { /* COFF backend, defined in libcoff.h */
-    _bfd_xcoff_swap_aux_in,           /* _bfd_coff_swap_aux_in */
-    _bfd_xcoff_swap_sym_in,           /* _bfd_coff_swap_sym_in */
-    coff_swap_lineno_in,              /* _bfd_coff_swap_lineno_in */
-    _bfd_xcoff_swap_aux_out,          /* _bfd_swap_aux_out */
-    _bfd_xcoff_swap_sym_out,          /* _bfd_swap_sym_out */
-    coff_swap_lineno_out,             /* _bfd_swap_lineno_out */
-    xcoff_swap_reloc_out,             /* _bfd_swap_reloc_out */
-    coff_swap_filehdr_out,            /* _bfd_swap_filehdr_out */
-    coff_swap_aouthdr_out,            /* _bfd_swap_aouthdr_out */
-    coff_swap_scnhdr_out,             /* _bfd_swap_scnhdr_out */
-    FILHSZ,                           /* _bfd_filhsz */
-    AOUTSZ,                           /* _bfd_aoutsz */
-    SCNHSZ,                           /* _bfd_scnhsz */
-    SYMESZ,                           /* _bfd_symesz */
-    AUXESZ,                           /* _bfd_auxesz */
-    RELSZ,                            /* _bfd_relsz */
-    LINESZ,                           /* _bfd_linesz */
-    FILNMLEN,                         /* _bfd_filnmlen */
+    { /* COFF backend, defined in libcoff.h.  */
+      _bfd_xcoff_swap_aux_in,
+      _bfd_xcoff_swap_sym_in,
+      coff_swap_lineno_in,
+      _bfd_xcoff_swap_aux_out,
+      _bfd_xcoff_swap_sym_out,
+      coff_swap_lineno_out,
+      xcoff_swap_reloc_out,
+      coff_swap_filehdr_out,
+      coff_swap_aouthdr_out,
+      coff_swap_scnhdr_out,
+      FILHSZ,
+      AOUTSZ,
+      SCNHSZ,
+      SYMESZ,
+      AUXESZ,
+      RELSZ,
+      LINESZ,
+      FILNMLEN,
     true,                             /* _bfd_coff_long_filenames */
     false,                            /* _bfd_coff_long_section_names */
-    (3),                        /* _bfd_coff_default_section_alignment_power */
+      3,                       /* _bfd_coff_default_section_alignment_power */
     false,                            /* _bfd_coff_force_symnames_in_strings */
     2,                               /* _bfd_coff_debug_string_prefix_length */
-    coff_swap_filehdr_in,             /* _bfd_coff_swap_filehdr_in */
-    coff_swap_aouthdr_in,             /* _bfd_swap_aouthdr_in */
-    coff_swap_scnhdr_in,              /* _bfd_swap_scnhdr_in */
-    xcoff_swap_reloc_in,              /* _bfd_reloc_in */
-    coff_bad_format_hook,             /* _bfd_bad_format_hook */
-    coff_set_arch_mach_hook,          /* _bfd_set_arch_mach_hook */
-    coff_mkobject_hook,               /* _bfd_mkobject_hook */
-    styp_to_sec_flags,                /* _bfd_syp_to_sec_flags */
-    coff_set_alignment_hook,          /* _bfd_set_alignment_hook */
-    coff_slurp_symbol_table,          /* _bfd_coff_slurp_symbol_table */
-    symname_in_debug_hook,            /* _coff_symname_in_debug_hook */
-    coff_pointerize_aux_hook,         /* _bfd_coff_pointerize_aux_hook */
-    coff_print_aux,                   /* bfd_coff_print_aux */
-    dummy_reloc16_extra_cases,        /* _bfd_coff_reloc16_extra_cases */
-    dummy_reloc16_estimate,           /* _bfd_coff_reloc16_estimate */
+      coff_swap_filehdr_in,
+      coff_swap_aouthdr_in,
+      coff_swap_scnhdr_in,
+      xcoff_swap_reloc_in,
+      coff_bad_format_hook,
+      coff_set_arch_mach_hook,
+      coff_mkobject_hook,
+      styp_to_sec_flags,
+      coff_set_alignment_hook,
+      coff_slurp_symbol_table,
+      symname_in_debug_hook,
+      coff_pointerize_aux_hook,
+      coff_print_aux,
+      dummy_reloc16_extra_cases,
+      dummy_reloc16_estimate,
     NULL,                             /* bfd_coff_sym_is_global */
-                                 /* _bfd_coff_compute_section_file_positions */
     coff_compute_section_file_positions,
     NULL,                             /* _bfd_coff_start_final_link */
-    xcoff_ppc_relocate_section,       /* _bfd_coff_relocate_section */
-    coff_rtype_to_howto,              /* _bfd_coff_rtype_to_howto */
-    NULL,                             /* _bfd_coff_addust_symndx */
-    _bfd_generic_link_add_one_symbol, /* _bfd_coff_add_one_symbol */
-    coff_link_output_has_begun,       /* _bfd_coff_link_output_has_begun */
-    coff_final_link_postscript        /* _bfd_coff_final_link_postscript */
+      xcoff_ppc_relocate_section,
+      coff_rtype_to_howto,
+      NULL,                    /* _bfd_coff_adjust_symndx */
+      _bfd_generic_link_add_one_symbol,
+      coff_link_output_has_begun,
+      coff_final_link_postscript
   },
 
   0x01DF,                             /* magic number */
-  bfd_arch_powerpc,                   /* architecture */
-  bfd_mach_ppc,                       /* machine */
-
-  /* function pointers to xcoff specific swap routines */
-  xcoff_swap_ldhdr_in,                /* _xcoff_swap_ldhdr_in */
-  xcoff_swap_ldhdr_out,               /* _xcoff_swap_ldhdr_out */
-  xcoff_swap_ldsym_in,                /* _xcoff_swap_ldsym_in */
-  xcoff_swap_ldsym_out,               /* _xcoff_swap_ldsym_out */
-  xcoff_swap_ldrel_in,                /* _xcoff_swap_ldrel_in */
-  xcoff_swap_ldrel_out,               /* _xcoff_swap_ldrel_out */
-
-  /* sizes */
-  LDHDRSZ,                            /* _xcoff_ldhdrsz */
-  LDSYMSZ,                            /* _xcoff_ldsymsz */
-  LDRELSZ,                            /* _xcoff_ldrelsz */
-  12,                                 /* _xcoff_function_descriptor_size */
-  SMALL_AOUTSZ,                       /* _xcoff_small_aout_header_size */
+    bfd_arch_powerpc,
+    bfd_mach_ppc,
 
-  /* versions */
-  1,                                    /* _xcoff_ldhdr_version */
+    /* Function pointers to xcoff specific swap routines.  */
+    xcoff_swap_ldhdr_in,
+    xcoff_swap_ldhdr_out,
+    xcoff_swap_ldsym_in,
+    xcoff_swap_ldsym_out,
+    xcoff_swap_ldrel_in,
+    xcoff_swap_ldrel_out,
 
-  /* xcoff vs xcoff64 putting symbol names */
-  _bfd_xcoff_put_symbol_name,          /* _xcoff_put_symbol_name */
-  _bfd_xcoff_put_ldsymbol_name,          /* _xcoff_put_ldsymbol_name */
+    /* Sizes.  */
+    LDHDRSZ,
+    LDSYMSZ,
+    LDRELSZ,
+  12,                                 /* _xcoff_function_descriptor_size */
+    SMALL_AOUTSZ,
 
-  &xcoff_dynamic_reloc,                  /* dynamic reloc howto */
+    /* Versions.  */
+  1,                                    /* _xcoff_ldhdr_version */
 
-  xcoff_create_csect_from_smclas,      /* _xcoff_create_csect_from_smclas */
+    _bfd_xcoff_put_symbol_name,
+    _bfd_xcoff_put_ldsymbol_name,
+    &xcoff_dynamic_reloc,
+    xcoff_create_csect_from_smclas,
 
-  /* lineno and reloc count overflow */
+    /* Lineno and reloc count overflow.  */
   xcoff_is_lineno_count_overflow,
   xcoff_is_reloc_count_overflow,
 
   xcoff_loader_symbol_offset,
   xcoff_loader_reloc_offset,
 
-  /* glink */
+    /* glink.  */
   &xcoff_glink_code[0],
-  (36),           /* _xcoff_glink_size */
+    36,                                /* _xcoff_glink_size */
 
   /* rtinit */
   0,           /* _xcoff_rtinit_size */
-  xcoff_generate_rtinit,  /* _xcoff_generate_rtinit */
+    xcoff_generate_rtinit,
 };
 
 /* The transfer vector that leads the outside world to all of the above. */
@@ -4318,36 +4292,35 @@ const bfd_target pmac_xcoff_vec =
   BFD_ENDIAN_BIG,              /* data byte order is big */
   BFD_ENDIAN_BIG,              /* header byte order is big */
 
-  (HAS_RELOC | EXEC_P |                /* object flags */
-   HAS_LINENO | HAS_DEBUG | DYNAMIC |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT),
+    (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
+     | HAS_SYMS | HAS_LOCALS | WP_TEXT),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+    (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
   0,                           /* leading char */
   '/',                         /* ar_pad_char */
-  15,                          /* ar_max_namelen??? FIXMEmgo */
+    15,                                /* ar_max_namelen */
 
                       /* data */
-  bfd_getb64,         /* bfd_getx64 */
-  bfd_getb_signed_64, /* bfd_getx_signed_64 */
-  bfd_putb64,         /* bfd_putx64 */
-  bfd_getb32,         /* bfd_getx32 */
-  bfd_getb_signed_32, /* bfd_getx_signed_32 */
-  bfd_putb32,         /* bfd_putx32 */
-  bfd_getb16,         /* bfd_getx16 */
-  bfd_getb_signed_16, /* bfd_getx_signed_16 */
-  bfd_putb16,         /* bfd_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
                       /* hdrs */
-  bfd_getb64,         /* bfd_h_getx64 */
-  bfd_getb_signed_64, /* bfd_h_getx_signed_64 */
-  bfd_putb64,         /* bfd_h_putx64 */
-  bfd_getb32,         /* bfd_h_getx32 */
-  bfd_getb_signed_32, /* bfd_h_getx_signed_32 */
-  bfd_putb32,         /* bfd_h_putx32 */
-  bfd_getb16,         /* bfd_h_getx16 */
-  bfd_getb_signed_16, /* bfd_h_getx_signed_16 */
-  bfd_putb16,         /* bfd_h_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
   { /* bfd_check_format */
     _bfd_dummy_target,
@@ -4371,95 +4344,81 @@ const bfd_target pmac_xcoff_vec =
   },
 
   /* Generic */
-  bfd_true,                          /* _close_and_cleanup */
-  bfd_true,                          /* _bfd_free_cached_info */
-  coff_new_section_hook,             /* _new_section_hook */
-  _bfd_generic_get_section_contents, /* _bfd_get_section_contents */
-                                     /* _bfd_get_section_contents_in_window */
+    bfd_true,
+    bfd_true,
+    coff_new_section_hook,
+    _bfd_generic_get_section_contents,
   _bfd_generic_get_section_contents_in_window,
 
   /* Copy */
-  _bfd_xcoff_copy_private_bfd_data, /* _bfd_copy_private_bfd */
-                                    /* _bfd_merge_private_bfd_data */
+    _bfd_xcoff_copy_private_bfd_data,
   ((boolean (*) (bfd *, bfd *)) bfd_true),
-                                    /* _bfd_copy_pivate_section_data */
   ((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
-                                    /* _bfd_copy_private_symbol_data */
   ((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
-  ((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
-  ((boolean (*) (bfd *, void * )) bfd_true),  /* _bfd_print_private_bfd_data */
+    ((boolean (*) (bfd *, flagword)) bfd_true),
+    ((boolean (*) (bfd *, void * )) bfd_true),
 
   /* Core */
-  coff_core_file_failing_command,    /* _core_file_failing_command */
-  coff_core_file_failing_signal,     /* _core_file_failing_signal */
-                                          /* _core_file_matches_executable_p */
+    coff_core_file_failing_command,
+    coff_core_file_failing_signal,
   coff_core_file_matches_executable_p,
 
   /* Archive */
-  _bfd_xcoff_slurp_armap,                  /* _slurp_armap */
-                                           /* XCOFF archives do not have
-                                             anything which corresponds to
-                                             an extended name table.  */
-  bfd_false,                               /* _slurp_extended_name_table */
-                                           /* _construct_extended_name_table */
+    _bfd_xcoff_slurp_armap,
+    bfd_false,
   ((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
-  bfd_dont_truncate_arname,                /* _truncate_arname */
-  _bfd_xcoff_write_armap,                  /* _write_armap */
-  _bfd_xcoff_read_ar_hdr,                  /* _read_ar_hdr */
-  _bfd_xcoff_openr_next_archived_file,     /* _openr_next_archived_file */
-  _bfd_generic_get_elt_at_index,           /* _get_elt_at_index */
-  _bfd_xcoff_stat_arch_elt,                /* _generic_stat_arch_elt */
-                                           /* XCOFF archives do not have
-                                             a timestamp.  */
-  bfd_true,                                /* _update_armap_timestamp */
+    bfd_dont_truncate_arname,
+    _bfd_xcoff_write_armap,
+    _bfd_xcoff_read_ar_hdr,
+    _bfd_xcoff_openr_next_archived_file,
+    _bfd_generic_get_elt_at_index,
+    _bfd_xcoff_stat_arch_elt,
+    bfd_true,
 
   /* Symbols */
-  coff_get_symtab_upper_bound,             /* _get_symtab_upper_bound */
-  coff_get_symtab,                         /* _get_symtab */
-  coff_make_empty_symbol,                  /* _make_empty_symbol */
-  coff_print_symbol,                       /* _print_symbol */
-  coff_get_symbol_info,                    /* _get_symbol_info */
-  _bfd_xcoff_is_local_label_name,          /* _bfd_is_local_label_name */
-  coff_get_lineno,                         /* _get_lineno */
-  coff_find_nearest_line,                  /* _find_nearest_line */
-  coff_bfd_make_debug_symbol,              /* _bfd_make_debug_symbol */
-  _bfd_generic_read_minisymbols,           /* _read_minisymbols */
-  _bfd_generic_minisymbol_to_symbol,       /* _minsymbol_to_symbol */
+    coff_get_symtab_upper_bound,
+    coff_get_symtab,
+    coff_make_empty_symbol,
+    coff_print_symbol,
+    coff_get_symbol_info,
+    _bfd_xcoff_is_local_label_name,
+    coff_get_lineno,
+    coff_find_nearest_line,
+    coff_bfd_make_debug_symbol,
+    _bfd_generic_read_minisymbols,
+    _bfd_generic_minisymbol_to_symbol,
 
   /* Reloc */
-  coff_get_reloc_upper_bound,              /* _get_reloc_upper_bound */
-  coff_canonicalize_reloc,                 /* _cononicalize_reloc */
-  _bfd_xcoff_reloc_type_lookup,            /* _bfd_reloc_type_lookup */
+    coff_get_reloc_upper_bound,
+    coff_canonicalize_reloc,
+    _bfd_xcoff_reloc_type_lookup,
 
   /* Write */
-  coff_set_arch_mach,                      /* _set_arch_mach */
-  coff_set_section_contents,               /* _set_section_contents */
+    coff_set_arch_mach,
+    coff_set_section_contents,
 
   /* Link */
-  _bfd_xcoff_sizeof_headers,               /* _sizeof_headers */
-                                      /* _bfd_get_relocated_section_contents */
+    _bfd_xcoff_sizeof_headers,
   bfd_generic_get_relocated_section_contents,
-  bfd_generic_relax_section,               /* _bfd_relax_section */
-  _bfd_xcoff_bfd_link_hash_table_create,   /* _bfd_link_hash_table_create */
-  _bfd_generic_link_hash_table_free,       /* _bfd_link_hash_table_free */
-  _bfd_xcoff_bfd_link_add_symbols,         /* _bfd_link_add_symbols */
-  _bfd_generic_link_just_syms,             /* _bfd_link_just_syms */
-  _bfd_xcoff_bfd_final_link,               /* _bfd_final_link */
-  _bfd_generic_link_split_section,         /* _bfd_link_split_section */
-  bfd_generic_gc_sections,                 /* _bfd_gc_sections */
-  bfd_generic_merge_sections,              /* _bfd_merge_sections */
-  bfd_generic_discard_group,               /* _bfd_discard_group */
+    bfd_generic_relax_section,
+    _bfd_xcoff_bfd_link_hash_table_create,
+    _bfd_generic_link_hash_table_free,
+    _bfd_xcoff_bfd_link_add_symbols,
+    _bfd_generic_link_just_syms,
+    _bfd_xcoff_bfd_final_link,
+    _bfd_generic_link_split_section,
+    bfd_generic_gc_sections,
+    bfd_generic_merge_sections,
+    bfd_generic_discard_group,
 
   /* Dynamic */
-                                          /* _get_dynamic_symtab_upper_bound */
   _bfd_xcoff_get_dynamic_symtab_upper_bound,
-  _bfd_xcoff_canonicalize_dynamic_symtab,  /* _cononicalize_dynamic_symtab */
-  _bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
-  _bfd_xcoff_canonicalize_dynamic_reloc,   /* _cononicalize_dynamic_reloc */
+    _bfd_xcoff_canonicalize_dynamic_symtab,
+    _bfd_xcoff_get_dynamic_reloc_upper_bound,
+    _bfd_xcoff_canonicalize_dynamic_reloc,
 
   /* Opposite endian version, none exists */
   NULL,
 
-  /* back end data */
   (void *) &bfd_pmac_xcoff_backend_data,
 };
index dc136643f17b31c0fc1bb9cf15518a9c320a97e3..9372f6b175e1f9f50980aa4dc759d3ba62db238c 100644 (file)
@@ -156,7 +156,7 @@ static boolean xcoff64_bad_format_hook PARAMS ((bfd *, PTR ));
 static boolean xcoff64_reloc_type_br PARAMS ((XCOFF_RELOC_FUNCTION_ARGS));
 
 boolean (*xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
-     (XCOFF_RELOC_FUNCTION_ARGS) =
+  PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)) =
 {
   xcoff_reloc_type_pos,  /* R_POS   (0x00) */
   xcoff_reloc_type_neg,  /* R_NEG   (0x01) */
@@ -886,9 +886,11 @@ xcoff64_write_object_contents (abfd)
   memset (&internal_a, 0, sizeof internal_a);
 
   internal_f.f_magic = bfd_xcoff_magic_number (abfd);
-  internal_a.magic = (abfd->flags & D_PAGED) ? RS6K_AOUTHDR_ZMAGIC :
-    (abfd->flags & WP_TEXT) ? RS6K_AOUTHDR_NMAGIC :
-    RS6K_AOUTHDR_OMAGIC;
+  internal_a.magic = (abfd->flags & D_PAGED
+                     ? RS6K_AOUTHDR_ZMAGIC
+                     : (abfd->flags & WP_TEXT
+                        ? RS6K_AOUTHDR_NMAGIC
+                        : RS6K_AOUTHDR_OMAGIC));
 
   /* FIXME: Does anybody ever set this to another value?  */
   internal_a.vstamp = 0;
@@ -1096,8 +1098,8 @@ xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
      cror.  */
   if (NULL != h 
       && bfd_link_hash_defined == h->root.type 
-      && (rel->r_vaddr - input_section->vma + 8 <= 
-         input_section->_cooked_size)) 
+      && (rel->r_vaddr - input_section->vma + 8
+         <= input_section->_cooked_size))
     {
       bfd_byte *pnext;
       unsigned long next;
@@ -1139,8 +1141,8 @@ xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto,
   addend += input_section->vma;
   
   *relocation = val + addend;
-  *relocation -= (input_section->output_section->vma + 
-                 input_section->output_offset);
+  *relocation -= (input_section->output_section->vma
+                 input_section->output_offset);
   return true;
 }
 
@@ -1191,8 +1193,9 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
       howto.size = howto.bitsize > 16 ? (howto.bitsize > 32 ? 4 : 2) : 1;
       howto.pc_relative = false;
       howto.bitpos = 0;
-      howto.complain_on_overflow = rel->r_size & 0x80 ? 
-       complain_overflow_signed : complain_overflow_bitfield;
+      howto.complain_on_overflow = (rel->r_size & 0x80
+                                   ? complain_overflow_signed
+                                   : complain_overflow_bitfield);
       howto.special_function = NULL;
       howto.name = "internal";
       howto.partial_inplace = true;
@@ -1260,7 +1263,7 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
        }
       
       if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION 
-         || (false == xcoff64_calculate_relocation[rel->r_type]
+         || ((*xcoff64_calculate_relocation[rel->r_type])
              (input_bfd, input_section, output_bfd, rel, sym, &howto, val, 
               addend, &relocation, contents))) 
        return false;
@@ -1287,11 +1290,11 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
         operation, which would be tedious, or we must do the computations
         in a type larger than bfd_vma, which would be inefficient.  */
       
-      if ((unsigned int) howto.complain_on_overflow >= 
-         XCOFF_MAX_COMPLAIN_OVERFLOW)
+      if ((unsigned int) howto.complain_on_overflow
+         >= XCOFF_MAX_COMPLAIN_OVERFLOW)
        abort();
       
-      if ((true == xcoff_complain_overflow[howto.complain_on_overflow]
+      if (((*xcoff_complain_overflow[howto.complain_on_overflow])
           (input_bfd, value_to_relocate, relocation, &howto))) 
        {
          const char *name;
@@ -1321,9 +1324,9 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
        }
 
       /* Add RELOCATION to the right bits of VALUE_TO_RELOCATE.  */
-      value_to_relocate = ((value_to_relocate & ~howto.dst_mask) | 
-                          (((value_to_relocate & howto.src_mask) + 
-                            relocation) & howto.dst_mask));
+      value_to_relocate = ((value_to_relocate & ~howto.dst_mask)
+                          | (((value_to_relocate & howto.src_mask)
+                              + relocation) & howto.dst_mask));
       
       /* Put the value back in the object file.  */
       if (1 == howto.size)
@@ -1424,7 +1427,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* External TOC relative symbol.  */
   HOWTO (R_GL,                 /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1439,7 +1442,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* Local TOC relative symbol.         */
   HOWTO (R_TCL,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1490,7 +1493,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* Indirect load.  */
   HOWTO (R_RL,                 /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1505,7 +1508,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* Load address.  */
   HOWTO (R_RLA,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1526,7 +1529,7 @@ reloc_howto_type xcoff64_howto_table[] =
         32,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
-        complain_overflow_bitfield, /* complain_on_overflow */
+        complain_overflow_dont, /* complain_on_overflow */
         0,                     /* special_function */
         "R_REF",               /* name */
         false,                 /* partial_inplace */
@@ -1540,7 +1543,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* TOC relative indirect load.  */
   HOWTO (R_TRL,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1555,7 +1558,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* TOC relative load address.         */
   HOWTO (R_TRLA,               /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1600,7 +1603,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* Modifiable call absolute indirect.         */
   HOWTO (R_CAI,                        /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1615,7 +1618,7 @@ reloc_howto_type xcoff64_howto_table[] =
   /* Modifiable call relative.  */
   HOWTO (R_CREL,               /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1638,8 +1641,8 @@ reloc_howto_type xcoff64_howto_table[] =
         0,                     /* special_function */
         "R_RBA",               /* name */
         true,                  /* partial_inplace */
-        0xffff,                /* src_mask */
-        0xffff,                /* dst_mask */
+        0x03fffffc,            /* src_mask */
+        0x03fffffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Modifiable branch absolute.  */
@@ -1653,8 +1656,8 @@ reloc_howto_type xcoff64_howto_table[] =
         0,                     /* special_function */
         "R_RBAC",              /* name */
         true,                  /* partial_inplace */
-        0xffff,                /* src_mask */
-        0xffff,                /* dst_mask */
+        0xffffffff,            /* src_mask */
+        0xffffffff,            /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Modifiable branch relative.  */
@@ -1668,14 +1671,14 @@ reloc_howto_type xcoff64_howto_table[] =
         0,                     /* special_function */
         "R_RBR_26",            /* name */
         true,                  /* partial_inplace */
-        0xffff,                /* src_mask */
-        0xffff,                /* dst_mask */
+        0x03fffffc,            /* src_mask */
+        0x03fffffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Modifiable branch absolute.  */
   HOWTO (R_RBRC,               /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
@@ -1785,10 +1788,6 @@ xcoff64_rtype2howto (relent, internal)
       && (relent->howto->bitsize
          != ((unsigned int) internal->r_size & 0x3f) + 1))
     abort ();
-
-  /* Put a meaningful value in addend */
-  relent->addend = (internal->r_size & 0x80) ? - internal->r_vaddr 
-    : internal->r_vaddr;
 }
 
 reloc_howto_type *
@@ -1840,7 +1839,8 @@ xcoff64_slurp_armap (abfd)
       return true;
     }
 
-  off = strtol (xcoff_ardata_big (abfd)->symoff64, (char **) NULL, 10);
+  off = bfd_scan_vma (xcoff_ardata_big (abfd)->symoff64,
+                     (const char **) NULL, 10);
   if (off == 0)
     {
       bfd_has_map (abfd) = false;
@@ -1861,10 +1861,7 @@ xcoff64_slurp_armap (abfd)
   if (bfd_seek (abfd, pos, SEEK_CUR) != 0)
     return false;
 
-  /* XXX This actually has to be a call to strtoll (at least on 32-bit
-     machines) since the field width is 20 and there numbers with more
-     than 32 bits can be represented.  */
-  sz = strtol (hdr.size, (char **) NULL, 10);
+  sz = bfd_scan_vma (hdr.size, (const char **) NULL, 10);
 
   /* Read in the entire symbol table.  */
   contents = (bfd_byte *) bfd_alloc (abfd, sz);
@@ -1920,6 +1917,7 @@ static const bfd_target *
 xcoff64_archive_p (abfd)
      bfd *abfd;
 {
+  struct artdata *tdata_hold;
   char magic[SXCOFFARMAG];
   /* This is the new format.  */
   struct xcoff_ar_file_hdr_big hdr;
@@ -1938,50 +1936,46 @@ xcoff64_archive_p (abfd)
       return NULL;
     }
 
-  /* We are setting bfd_ardata(abfd) here, but since bfd_ardata
-     involves a cast, we can't do it as the left operand of
-     assignment.  */
-  amt = sizeof (struct artdata);
-  abfd->tdata.aout_ar_data = (struct artdata *) bfd_zalloc (abfd, amt);
-
-  if (bfd_ardata (abfd) == (struct artdata *) NULL)
-    return NULL;
-
-  bfd_ardata (abfd)->cache = NULL;
-  bfd_ardata (abfd)->archive_head = NULL;
-  bfd_ardata (abfd)->symdefs = NULL;
-  bfd_ardata (abfd)->extended_names = NULL;
-
   /* Copy over the magic string.  */
   memcpy (hdr.magic, magic, SXCOFFARMAG);
 
   /* Now read the rest of the file header.  */
-  if (bfd_bread ((PTR) &hdr.memoff,
-               (bfd_size_type) (SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG),
-               abfd) != SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG)
+  amt = SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG;
+  if (bfd_bread ((PTR) &hdr.memoff, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
        bfd_set_error (bfd_error_wrong_format);
       return NULL;
     }
 
-  /* XXX This actually has to be a call to strtoll (at least on 32-bit
-     machines) since the field width is 20 and there numbers with more
-     than 32 bits can be represented.  */
-  bfd_ardata (abfd)->first_file_filepos = strtol (hdr.firstmemoff,
-                                                 (char **) NULL, 10);
+  tdata_hold = bfd_ardata (abfd);
+
+  amt = sizeof (struct artdata);
+  bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
+  if (bfd_ardata (abfd) == (struct artdata *) NULL)
+    goto error_ret_restore;
+
+  bfd_ardata (abfd)->cache = NULL;
+  bfd_ardata (abfd)->archive_head = NULL;
+  bfd_ardata (abfd)->symdefs = NULL;
+  bfd_ardata (abfd)->extended_names = NULL;
+  bfd_ardata (abfd)->first_file_filepos = bfd_scan_vma (hdr.firstmemoff,
+                                                       (const char **) NULL,
+                                                       10);
 
   amt = SIZEOF_AR_FILE_HDR_BIG;
   bfd_ardata (abfd)->tdata = bfd_zalloc (abfd, amt);
   if (bfd_ardata (abfd)->tdata == NULL)
-    return NULL;
+    goto error_ret;
 
   memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR_BIG);
 
   if (! xcoff64_slurp_armap (abfd))
     {
+    error_ret:
       bfd_release (abfd, bfd_ardata (abfd));
-      abfd->tdata.aout_ar_data = (struct artdata *) NULL;
+    error_ret_restore:
+      bfd_ardata (abfd) = tdata_hold;
       return NULL;
     }
 
@@ -2011,20 +2005,15 @@ xcoff64_openr_next_archived_file (archive, last_file)
     }
   else
     {
-      /* XXX These actually have to be a calls to strtoll (at least
-        on 32-bit machines) since the fields's width is 20 and
-        there numbers with more than 32 bits can be represented.  */
-      filestart = strtol (arch_xhdr_big (last_file)->nextoff, (char **) NULL,
-                         10);
+      filestart = bfd_scan_vma (arch_xhdr_big (last_file)->nextoff,
+                               (const char **) NULL, 10);
     }
-  /* XXX These actually have to be calls to strtoll (at least on 32-bit
-     machines) since the fields's width is 20 and there numbers with more
-     than 32 bits can be represented.  */
+
   if (filestart == 0
-      || filestart == strtol (xcoff_ardata_big (archive)->memoff,
-                             (char **) NULL, 10)
-      || filestart == strtol (xcoff_ardata_big (archive)->symoff,
-                             (char **) NULL, 10))
+      || filestart == bfd_scan_vma (xcoff_ardata_big (archive)->memoff,
+                                   (const char **) NULL, 10)
+      || filestart == bfd_scan_vma (xcoff_ardata_big (archive)->symoff,
+                                   (const char **) NULL, 10))
     {
       bfd_set_error (bfd_error_no_more_archived_files);
       return NULL;
@@ -2297,7 +2286,7 @@ xcoff64_generate_rtinit (abfd, init, fini, rtld)
   string_table_size += strlen (rtinit_name) + 1;
   string_table_size += initsz;
   string_table_size += finisz;
-  if (true == rtld)
+  if (rtld)
     string_table_size += strlen (rtld_name) + 1;
 
   string_table = (bfd_byte *) bfd_zmalloc (string_table_size);
@@ -2503,85 +2492,80 @@ static unsigned long xcoff64_glink_code[10] =
 static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
 {
   { /* COFF backend, defined in libcoff.h.  */
-    _bfd_xcoff64_swap_aux_in,          /* _bfd_coff_swap_aux_in */
-    _bfd_xcoff64_swap_sym_in,          /* _bfd_coff_swap_sym_in */
-    _bfd_xcoff64_swap_lineno_in,       /* _bfd_coff_swap_lineno_in */
-    _bfd_xcoff64_swap_aux_out,         /* _bfd_swap_aux_out */
-    _bfd_xcoff64_swap_sym_out,         /* _bfd_swap_sym_out */
-    _bfd_xcoff64_swap_lineno_out,      /* _bfd_swap_lineno_out */
-    xcoff64_swap_reloc_out,            /* _bfd_swap_reloc_out */
-    coff_swap_filehdr_out,             /* _bfd_swap_filehdr_out */
-    coff_swap_aouthdr_out,             /* _bfd_swap_aouthdr_out */
-    coff_swap_scnhdr_out,              /* _bfd_swap_scnhdr_out */
-    FILHSZ,                            /* _bfd_filhsz */
-    AOUTSZ,                            /* _bfd_aoutsz */
-    SCNHSZ,                            /* _bfd_scnhsz */
-    SYMESZ,                            /* _bfd_symesz */
-    AUXESZ,                            /* _bfd_auxesz */
-    RELSZ,                             /* _bfd_relsz */
-    LINESZ,                            /* _bfd_linesz */
-    FILNMLEN,                          /* _bfd_filnmlen */
+      _bfd_xcoff64_swap_aux_in,
+      _bfd_xcoff64_swap_sym_in,
+      _bfd_xcoff64_swap_lineno_in,
+      _bfd_xcoff64_swap_aux_out,
+      _bfd_xcoff64_swap_sym_out,
+      _bfd_xcoff64_swap_lineno_out,
+      xcoff64_swap_reloc_out,
+      coff_swap_filehdr_out,
+      coff_swap_aouthdr_out,
+      coff_swap_scnhdr_out,
+      FILHSZ,
+      AOUTSZ,
+      SCNHSZ,
+      SYMESZ,
+      AUXESZ,
+      RELSZ,
+      LINESZ,
+      FILNMLEN,
     true,                              /* _bfd_coff_long_filenames */
     false,                             /* _bfd_coff_long_section_names */
-    (3),                       /* _bfd_coff_default_section_alignment_power */
+      3,                       /* _bfd_coff_default_section_alignment_power */
     true,                      /* _bfd_coff_force_symnames_in_strings */
     4,                         /* _bfd_coff_debug_string_prefix_length */
-    coff_swap_filehdr_in,              /* _bfd_coff_swap_filehdr_in */
-    coff_swap_aouthdr_in,              /* _bfd_swap_aouthdr_in */
-    coff_swap_scnhdr_in,               /* _bfd_swap_scnhdr_in */
-    xcoff64_swap_reloc_in,             /* _bfd_reloc_in */
-    xcoff64_bad_format_hook,           /* _bfd_bad_format_hook */
-    coff_set_arch_mach_hook,           /* _bfd_set_arch_mach_hook */
-    coff_mkobject_hook,                        /* _bfd_mkobject_hook */
-    styp_to_sec_flags,                 /* _bfd_syp_to_sec_flags */
-    coff_set_alignment_hook,           /* _bfd_set_alignment_hook */
-    coff_slurp_symbol_table,           /* _bfd_coff_slurp_symbol_table */
-    symname_in_debug_hook,             /* _coff_symname_in_debug_hook */
-    coff_pointerize_aux_hook,          /* _bfd_coff_pointerize_aux_hook */
-    coff_print_aux,                    /* bfd_coff_print_aux */
-    dummy_reloc16_extra_cases,         /* _bfd_coff_reloc16_extra_cases */
-    dummy_reloc16_estimate,            /* _bfd_coff_reloc16_estimate */
+      coff_swap_filehdr_in,
+      coff_swap_aouthdr_in,
+      coff_swap_scnhdr_in,
+      xcoff64_swap_reloc_in,
+      xcoff64_bad_format_hook,
+      coff_set_arch_mach_hook,
+      coff_mkobject_hook,
+      styp_to_sec_flags,
+      coff_set_alignment_hook,
+      coff_slurp_symbol_table,
+      symname_in_debug_hook,
+      coff_pointerize_aux_hook,
+      coff_print_aux,
+      dummy_reloc16_extra_cases,
+      dummy_reloc16_estimate,
     NULL,                              /* bfd_coff_sym_is_global */
-    /* _bfd_coff_compute_section_file_positions */
     coff_compute_section_file_positions,
     NULL ,                             /* _bfd_coff_start_final_link */
-    xcoff64_ppc_relocate_section,      /* _bfd_coff_relocate_section */
-    coff_rtype_to_howto,               /* _bfd_coff_rtype_to_howto */
-    NULL ,                             /* _bfd_coff_addust_symndx */
-    _bfd_generic_link_add_one_symbol,  /* _bfd_coff_add_one_symbol */
-    coff_link_output_has_begun,                /* _bfd_coff_link_output_has_begun */
-    coff_final_link_postscript         /* _bfd_coff_final_link_postscript */
+      xcoff64_ppc_relocate_section,
+      coff_rtype_to_howto,
+      NULL,                    /* _bfd_coff_adjust_symndx */
+      _bfd_generic_link_add_one_symbol,
+      coff_link_output_has_begun,
+      coff_final_link_postscript
   },
 
   0x01EF,                              /* magic number */
-  bfd_arch_powerpc,                    /* architecture */
-  bfd_mach_ppc_620,                    /* machine */
+    bfd_arch_powerpc,
+    bfd_mach_ppc_620,
 
   /* Function pointers to xcoff specific swap routines.  */
-  xcoff64_swap_ldhdr_in,               /* _xcoff_swap_ldhdr_in */
-  xcoff64_swap_ldhdr_out,              /* _xcoff_swap_ldhdr_out */
-  xcoff64_swap_ldsym_in,               /* _xcoff_swap_ldsym_in */
-  xcoff64_swap_ldsym_out,              /* _xcoff_swap_ldsym_out */
-  xcoff64_swap_ldrel_in,               /* _xcoff_swap_ldrel_in */
-  xcoff64_swap_ldrel_out,              /* _xcoff_swap_ldrel_out */
+    xcoff64_swap_ldhdr_in,
+    xcoff64_swap_ldhdr_out,
+    xcoff64_swap_ldsym_in,
+    xcoff64_swap_ldsym_out,
+    xcoff64_swap_ldrel_in,
+    xcoff64_swap_ldrel_out,
 
   /* Sizes.  */
-  LDHDRSZ,                             /* _xcoff_ldhdrsz */
-  LDSYMSZ,                             /* _xcoff_ldsymsz */
-  LDRELSZ,                             /* _xcoff_ldrelsz */
+    LDHDRSZ,
+    LDSYMSZ,
+    LDRELSZ,
   24,                                  /* _xcoff_function_descriptor_size */
   0,                                   /* _xcoff_small_aout_header_size */
 
   /* Versions.  */
   2,                                   /* _xcoff_ldhdr_version */
 
-  /* xcoff vs xcoff64 putting symbol names.  */
-  _bfd_xcoff64_put_symbol_name,                /* _xcoff_put_symbol_name */
-  _bfd_xcoff64_put_ldsymbol_name,      /* _xcoff_put_ldsymbol_name */
-
-  /* Dynamic reloc howto.  */
+    _bfd_xcoff64_put_symbol_name,
+    _bfd_xcoff64_put_ldsymbol_name,
   &xcoff64_dynamic_reloc,
-
   xcoff64_create_csect_from_smclas,
 
   /* Lineno and reloc count overflow.  */
@@ -2597,7 +2581,7 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data =
 
   /* rtinit.  */
   88,                                  /* _xcoff_rtinit_size */
-  xcoff64_generate_rtinit,             /* _xcoff_generate_rtinit */
+    xcoff64_generate_rtinit,
 };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -2608,36 +2592,35 @@ const bfd_target rs6000coff64_vec =
   BFD_ENDIAN_BIG,              /* data byte order is big */
   BFD_ENDIAN_BIG,              /* header byte order is big */
 
-  (HAS_RELOC | EXEC_P |                /* object flags */
-   HAS_LINENO | HAS_DEBUG | DYNAMIC |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT),
+    (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
+     | HAS_SYMS | HAS_LOCALS | WP_TEXT),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+    (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
   0,                           /* leading char */
   '/',                         /* ar_pad_char */
-  15,                          /* ar_max_namelen??? FIXMEmgo */
+    15,                                /* ar_max_namelen */
 
   /* data */
-  bfd_getb64,                  /* bfd_getx64 */
-  bfd_getb_signed_64,          /* bfd_getx_signed_64 */
-  bfd_putb64,                  /* bfd_putx64 */
-  bfd_getb32,                  /* bfd_getx32 */
-  bfd_getb_signed_32,          /* bfd_getx_signed_32 */
-  bfd_putb32,                  /* bfd_putx32 */
-  bfd_getb16,                  /* bfd_getx16 */
-  bfd_getb_signed_16,          /* bfd_getx_signed_16 */
-  bfd_putb16,                  /* bfd_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
   /* hdrs */
-  bfd_getb64,                  /* bfd_h_getx64 */
-  bfd_getb_signed_64,          /* bfd_h_getx_signed_64 */
-  bfd_putb64,                  /* bfd_h_putx64 */
-  bfd_getb32,                  /* bfd_h_getx32 */
-  bfd_getb_signed_32,          /* bfd_h_getx_signed_32 */
-  bfd_putb32,                  /* bfd_h_putx32 */
-  bfd_getb16,                  /* bfd_h_getx16 */
-  bfd_getb_signed_16,          /* bfd_h_getx_signed_16 */
-  bfd_putb16,                  /* bfd_h_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
   { /* bfd_check_format */
     _bfd_dummy_target,
@@ -2661,93 +2644,82 @@ const bfd_target rs6000coff64_vec =
   },
 
   /* Generic */
-  bfd_true,                            /* _close_and_cleanup */
-  bfd_true,                            /* _bfd_free_cached_info */
-  coff_new_section_hook,               /* _new_section_hook */
-  _bfd_generic_get_section_contents,   /* _bfd_get_section_contents */
-  /* _bfd_get_section_contents_in_window */
+    bfd_true,
+    bfd_true,
+    coff_new_section_hook,
+    _bfd_generic_get_section_contents,
   _bfd_generic_get_section_contents_in_window,
 
   /* Copy */
-  _bfd_xcoff_copy_private_bfd_data,    /* _bfd_copy_private_bfd */
-  /* _bfd_merge_private_bfd_data */
+    _bfd_xcoff_copy_private_bfd_data,
   ((boolean (*) (bfd *, bfd *)) bfd_true),
-  /* _bfd_copy_pivate_section_data */
   ((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
-  /* _bfd_copy_private_symbol_data */
   ((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
-  ((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
-  ((boolean (*) (bfd *, void * )) bfd_true),  /* _bfd_print_private_bfd_data */
+    ((boolean (*) (bfd *, flagword)) bfd_true),
+    ((boolean (*) (bfd *, void * )) bfd_true),
 
   /* Core */
-  coff_core_file_failing_command,      /* _core_file_failing_command */
-  coff_core_file_failing_signal,       /* _core_file_failing_signal */
-  coff_core_file_matches_executable_p, /* _core_file_matches_executable_p */
+    coff_core_file_failing_command,
+    coff_core_file_failing_signal,
+    coff_core_file_matches_executable_p,
 
   /* Archive */
-  xcoff64_slurp_armap,                 /* _slurp_armap */
-  /* XCOFF archives do not have anything which corresponds to an
-     extended name table.  */
-  bfd_false,                           /* _slurp_extended_name_table */
-  /* _construct_extended_name_table */
+    xcoff64_slurp_armap,
+    bfd_false,
   ((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
-  bfd_dont_truncate_arname,            /* _truncate_arname */
-  _bfd_xcoff_write_armap,              /* _write_armap */
-  _bfd_xcoff_read_ar_hdr,              /* _read_ar_hdr */
-  xcoff64_openr_next_archived_file,    /* _openr_next_archived_file */
-  _bfd_generic_get_elt_at_index,       /* _get_elt_at_index */
-  _bfd_xcoff_stat_arch_elt,            /* _generic_stat_arch_elt */
-  /* XCOFF archives do not have a timestamp.  */
-  bfd_true,                            /* _update_armap_timestamp */
+    bfd_dont_truncate_arname,
+    _bfd_xcoff_write_armap,
+    _bfd_xcoff_read_ar_hdr,
+    xcoff64_openr_next_archived_file,
+    _bfd_generic_get_elt_at_index,
+    _bfd_xcoff_stat_arch_elt,
+    bfd_true,
 
   /* Symbols */
-  coff_get_symtab_upper_bound,         /* _get_symtab_upper_bound */
-  coff_get_symtab,                     /* _get_symtab */
-  coff_make_empty_symbol,              /* _make_empty_symbol */
-  coff_print_symbol,                   /* _print_symbol */
-  coff_get_symbol_info,                        /* _get_symbol_info */
-  _bfd_xcoff_is_local_label_name,      /* _bfd_is_local_label_name */
-  coff_get_lineno,                     /* _get_lineno */
-  coff_find_nearest_line,              /* _find_nearest_line */
-  coff_bfd_make_debug_symbol,          /* _bfd_make_debug_symbol */
-  _bfd_generic_read_minisymbols,       /* _read_minisymbols */
-  _bfd_generic_minisymbol_to_symbol,   /* _minsymbol_to_symbol */
+    coff_get_symtab_upper_bound,
+    coff_get_symtab,
+    coff_make_empty_symbol,
+    coff_print_symbol,
+    coff_get_symbol_info,
+    _bfd_xcoff_is_local_label_name,
+    coff_get_lineno,
+    coff_find_nearest_line,
+    coff_bfd_make_debug_symbol,
+    _bfd_generic_read_minisymbols,
+    _bfd_generic_minisymbol_to_symbol,
 
   /* Reloc */
-  coff_get_reloc_upper_bound,          /* _get_reloc_upper_bound */
-  coff_canonicalize_reloc,             /* _cononicalize_reloc */
-  xcoff64_reloc_type_lookup,           /* _bfd_reloc_type_lookup */
+    coff_get_reloc_upper_bound,
+    coff_canonicalize_reloc,
+    xcoff64_reloc_type_lookup,
 
   /* Write */
-  coff_set_arch_mach,                  /* _set_arch_mach */
-  coff_set_section_contents,           /* _set_section_contents */
+    coff_set_arch_mach,
+    coff_set_section_contents,
 
   /* Link */
-  xcoff64_sizeof_headers,              /* _sizeof_headers */
-  /* _bfd_get_relocated_section_contents */
+    xcoff64_sizeof_headers,
   bfd_generic_get_relocated_section_contents,
-  bfd_generic_relax_section,           /* _bfd_relax_section */
-  _bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */
-  _bfd_generic_link_hash_table_free,    /* _bfd_link_hash_table_free */
-  _bfd_xcoff_bfd_link_add_symbols,     /* _bfd_link_add_symbols */
-  _bfd_generic_link_just_syms,         /* _bfd_link_just_syms */
-  _bfd_xcoff_bfd_final_link,           /* _bfd_final_link */
-  _bfd_generic_link_split_section,     /* _bfd_link_split_section */
-  bfd_generic_gc_sections,             /* _bfd_gc_sections */
-  bfd_generic_merge_sections,          /* _bfd_merge_sections */
-  bfd_generic_discard_group,           /* _bfd_discard_group */
+    bfd_generic_relax_section,
+    _bfd_xcoff_bfd_link_hash_table_create,
+    _bfd_generic_link_hash_table_free,
+    _bfd_xcoff_bfd_link_add_symbols,
+    _bfd_generic_link_just_syms,
+    _bfd_xcoff_bfd_final_link,
+    _bfd_generic_link_split_section,
+    bfd_generic_gc_sections,
+    bfd_generic_merge_sections,
+    bfd_generic_discard_group,
 
   /* Dynamic */
-  /* _get_dynamic_symtab_upper_bound */
   _bfd_xcoff_get_dynamic_symtab_upper_bound,
-  _bfd_xcoff_canonicalize_dynamic_symtab,  /* _cononicalize_dynamic_symtab */
-  _bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
-  _bfd_xcoff_canonicalize_dynamic_reloc,   /* _cononicalize_dynamic_reloc */
+    _bfd_xcoff_canonicalize_dynamic_symtab,
+    _bfd_xcoff_get_dynamic_reloc_upper_bound,
+    _bfd_xcoff_canonicalize_dynamic_reloc,
 
   /* Opposite endian version, none exists */
   NULL,
 
-  /* back end data */
   (void *) &bfd_xcoff_backend_data,
 };
 
@@ -2760,81 +2732,78 @@ extern int xcoff64_core_file_failing_signal PARAMS ((bfd *));
 static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data =
 {
   { /* COFF backend, defined in libcoff.h.  */
-    _bfd_xcoff64_swap_aux_in,          /* _bfd_coff_swap_aux_in */
-    _bfd_xcoff64_swap_sym_in,          /* _bfd_coff_swap_sym_in */
-    _bfd_xcoff64_swap_lineno_in,       /* _bfd_coff_swap_lineno_in */
-    _bfd_xcoff64_swap_aux_out,         /* _bfd_swap_aux_out */
-    _bfd_xcoff64_swap_sym_out,         /* _bfd_swap_sym_out */
-    _bfd_xcoff64_swap_lineno_out,      /* _bfd_swap_lineno_out */
-    xcoff64_swap_reloc_out,            /* _bfd_swap_reloc_out */
-    coff_swap_filehdr_out,             /* _bfd_swap_filehdr_out */
-    coff_swap_aouthdr_out,             /* _bfd_swap_aouthdr_out */
-    coff_swap_scnhdr_out,              /* _bfd_swap_scnhdr_out */
-    FILHSZ,                            /* _bfd_filhsz */
-    AOUTSZ,                            /* _bfd_aoutsz */
-    SCNHSZ,                            /* _bfd_scnhsz */
-    SYMESZ,                            /* _bfd_symesz */
-    AUXESZ,                            /* _bfd_auxesz */
-    RELSZ,                             /* _bfd_relsz */
-    LINESZ,                            /* _bfd_linesz */
-    FILNMLEN,                          /* _bfd_filnmlen */
+      _bfd_xcoff64_swap_aux_in,
+      _bfd_xcoff64_swap_sym_in,
+      _bfd_xcoff64_swap_lineno_in,
+      _bfd_xcoff64_swap_aux_out,
+      _bfd_xcoff64_swap_sym_out,
+      _bfd_xcoff64_swap_lineno_out,
+      xcoff64_swap_reloc_out,
+      coff_swap_filehdr_out,
+      coff_swap_aouthdr_out,
+      coff_swap_scnhdr_out,
+      FILHSZ,
+      AOUTSZ,
+      SCNHSZ,
+      SYMESZ,
+      AUXESZ,
+      RELSZ,
+      LINESZ,
+      FILNMLEN,
     true,                              /* _bfd_coff_long_filenames */
     false,                             /* _bfd_coff_long_section_names */
-    (3),                       /* _bfd_coff_default_section_alignment_power */
+      3,                       /* _bfd_coff_default_section_alignment_power */
     true,                      /* _bfd_coff_force_symnames_in_strings */
     4,                         /* _bfd_coff_debug_string_prefix_length */
-    coff_swap_filehdr_in,              /* _bfd_coff_swap_filehdr_in */
-    coff_swap_aouthdr_in,              /* _bfd_swap_aouthdr_in */
-    coff_swap_scnhdr_in,               /* _bfd_swap_scnhdr_in */
-    xcoff64_swap_reloc_in,             /* _bfd_reloc_in */
-    xcoff64_bad_format_hook,           /* _bfd_bad_format_hook */
-    coff_set_arch_mach_hook,           /* _bfd_set_arch_mach_hook */
-    coff_mkobject_hook,                        /* _bfd_mkobject_hook */
-    styp_to_sec_flags,                 /* _bfd_syp_to_sec_flags */
-    coff_set_alignment_hook,           /* _bfd_set_alignment_hook */
-    coff_slurp_symbol_table,           /* _bfd_coff_slurp_symbol_table */
-    symname_in_debug_hook,             /* _coff_symname_in_debug_hook */
-    coff_pointerize_aux_hook,          /* _bfd_coff_pointerize_aux_hook */
-    coff_print_aux,                    /* bfd_coff_print_aux */
-    dummy_reloc16_extra_cases,         /* _bfd_coff_reloc16_extra_cases */
-    dummy_reloc16_estimate,            /* _bfd_coff_reloc16_estimate */
+      coff_swap_filehdr_in,
+      coff_swap_aouthdr_in,
+      coff_swap_scnhdr_in,
+      xcoff64_swap_reloc_in,
+      xcoff64_bad_format_hook,
+      coff_set_arch_mach_hook,
+      coff_mkobject_hook,
+      styp_to_sec_flags,
+      coff_set_alignment_hook,
+      coff_slurp_symbol_table,
+      symname_in_debug_hook,
+      coff_pointerize_aux_hook,
+      coff_print_aux,
+      dummy_reloc16_extra_cases,
+      dummy_reloc16_estimate,
     NULL,                              /* bfd_coff_sym_is_global */
-    /* _bfd_coff_compute_section_file_positions */
     coff_compute_section_file_positions,
     NULL ,                             /* _bfd_coff_start_final_link */
-    xcoff64_ppc_relocate_section,      /* _bfd_coff_relocate_section */
-    coff_rtype_to_howto,               /* _bfd_coff_rtype_to_howto */
-    NULL ,                             /* _bfd_coff_addust_symndx */
-    _bfd_generic_link_add_one_symbol,  /* _bfd_coff_add_one_symbol */
-    coff_link_output_has_begun,                /* _bfd_coff_link_output_has_begun */
-    coff_final_link_postscript         /* _bfd_coff_final_link_postscript */
+      xcoff64_ppc_relocate_section,
+      coff_rtype_to_howto,
+      NULL,                    /* _bfd_coff_adjust_symndx */
+      _bfd_generic_link_add_one_symbol,
+      coff_link_output_has_begun,
+      coff_final_link_postscript
   },
 
   U64_TOCMAGIC,                                /* magic number */
-  bfd_arch_powerpc,                    /* architecture */
-  bfd_mach_ppc_620,                    /* machine */
+    bfd_arch_powerpc,
+    bfd_mach_ppc_620,
 
   /* Function pointers to xcoff specific swap routines.         */
-  xcoff64_swap_ldhdr_in,               /* _xcoff_swap_ldhdr_in */
-  xcoff64_swap_ldhdr_out,              /* _xcoff_swap_ldhdr_out */
-  xcoff64_swap_ldsym_in,               /* _xcoff_swap_ldsym_in */
-  xcoff64_swap_ldsym_out,              /* _xcoff_swap_ldsym_out */
-  xcoff64_swap_ldrel_in,               /* _xcoff_swap_ldrel_in */
-  xcoff64_swap_ldrel_out,              /* _xcoff_swap_ldrel_out */
+    xcoff64_swap_ldhdr_in,
+    xcoff64_swap_ldhdr_out,
+    xcoff64_swap_ldsym_in,
+    xcoff64_swap_ldsym_out,
+    xcoff64_swap_ldrel_in,
+    xcoff64_swap_ldrel_out,
 
   /* Sizes.  */
-  LDHDRSZ,                             /* _xcoff_ldhdrsz */
-  LDSYMSZ,                             /* _xcoff_ldsymsz */
-  LDRELSZ,                             /* _xcoff_ldrelsz */
+    LDHDRSZ,
+    LDSYMSZ,
+    LDRELSZ,
   24,                                  /* _xcoff_function_descriptor_size */
   0,                                   /* _xcoff_small_aout_header_size */
   /* Versions.  */
   2,                                   /* _xcoff_ldhdr_version */
 
-  _bfd_xcoff64_put_symbol_name,                /* _xcoff_put_symbol_name */
-  _bfd_xcoff64_put_ldsymbol_name,      /* _xcoff_put_ldsymbol_name */
-
-  /* Dynamic reloc howto.  */
+    _bfd_xcoff64_put_symbol_name,
+    _bfd_xcoff64_put_ldsymbol_name,
   &xcoff64_dynamic_reloc,
   xcoff64_create_csect_from_smclas,
 
@@ -2851,7 +2820,7 @@ static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data =
 
   /* rtinit.  */
   88,                                  /* _xcoff_rtinit_size */
-  xcoff64_generate_rtinit,             /* _xcoff_generate_rtinit */
+    xcoff64_generate_rtinit,
 };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -2862,36 +2831,35 @@ const bfd_target aix5coff64_vec =
   BFD_ENDIAN_BIG,              /* data byte order is big */
   BFD_ENDIAN_BIG,              /* header byte order is big */
 
-  (HAS_RELOC | EXEC_P |                /* object flags */
-   HAS_LINENO | HAS_DEBUG | DYNAMIC |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT),
+    (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | DYNAMIC
+     | HAS_SYMS | HAS_LOCALS | WP_TEXT),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+    (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),
   0,                           /* leading char */
   '/',                         /* ar_pad_char */
-  15,                          /* ar_max_namelen??? FIXMEmgo */
+    15,                                /* ar_max_namelen */
 
   /* data */
-  bfd_getb64,                  /* bfd_getx64 */
-  bfd_getb_signed_64,          /* bfd_getx_signed_64 */
-  bfd_putb64,                  /* bfd_putx64 */
-  bfd_getb32,                  /* bfd_getx32 */
-  bfd_getb_signed_32,          /* bfd_getx_signed_32 */
-  bfd_putb32,                  /* bfd_putx32 */
-  bfd_getb16,                  /* bfd_getx16 */
-  bfd_getb_signed_16,          /* bfd_getx_signed_16 */
-  bfd_putb16,                  /* bfd_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
   /* hdrs */
-  bfd_getb64,                  /* bfd_h_getx64 */
-  bfd_getb_signed_64,          /* bfd_h_getx_signed_64 */
-  bfd_putb64,                  /* bfd_h_putx64 */
-  bfd_getb32,                  /* bfd_h_getx32 */
-  bfd_getb_signed_32,          /* bfd_h_getx_signed_32 */
-  bfd_putb32,                  /* bfd_h_putx32 */
-  bfd_getb16,                  /* bfd_h_getx16 */
-  bfd_getb_signed_16,          /* bfd_h_getx_signed_16 */
-  bfd_putb16,                  /* bfd_h_putx16 */
+    bfd_getb64,
+    bfd_getb_signed_64,
+    bfd_putb64,
+    bfd_getb32,
+    bfd_getb_signed_32,
+    bfd_putb32,
+    bfd_getb16,
+    bfd_getb_signed_16,
+    bfd_putb16,
 
   { /* bfd_check_format */
     _bfd_dummy_target,
@@ -2915,92 +2883,81 @@ const bfd_target aix5coff64_vec =
   },
 
   /* Generic */
-  bfd_true,                            /* _close_and_cleanup */
-  bfd_true,                            /* _bfd_free_cached_info */
-  coff_new_section_hook,               /* _new_section_hook */
-  _bfd_generic_get_section_contents,   /* _bfd_get_section_contents */
-  /* _bfd_get_section_contents_in_window */
+    bfd_true,
+    bfd_true,
+    coff_new_section_hook,
+    _bfd_generic_get_section_contents,
   _bfd_generic_get_section_contents_in_window,
 
   /* Copy */
-  _bfd_xcoff_copy_private_bfd_data,    /* _bfd_copy_private_bfd */
-  /* _bfd_merge_private_bfd_data */
+    _bfd_xcoff_copy_private_bfd_data,
   ((boolean (*) (bfd *, bfd *)) bfd_true),
-  /* _bfd_copy_pivate_section_data */
   ((boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true),
-  /* _bfd_copy_private_symbol_data */
   ((boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true),
-  ((boolean (*) (bfd *, flagword)) bfd_true), /* _bfd_set_private_flags */
-  ((boolean (*) (bfd *, void * )) bfd_true),  /* _bfd_print_private_bfd_data */
+    ((boolean (*) (bfd *, flagword)) bfd_true),
+    ((boolean (*) (bfd *, void * )) bfd_true),
 
   /* Core */
-  xcoff64_core_file_failing_command,   /* _core_file_failing_command */
-  xcoff64_core_file_failing_signal,    /* _core_file_failing_signal */
-  xcoff64_core_file_matches_executable_p, /* _core_file_matches_executable_p */
+    xcoff64_core_file_failing_command,
+    xcoff64_core_file_failing_signal,
+    xcoff64_core_file_matches_executable_p,
 
   /* Archive */
-  xcoff64_slurp_armap,                 /* _slurp_armap */
-  /* XCOFF archives do not have anything which corresponds to an
-     extended name table.  */
-  bfd_false,                           /* _slurp_extended_name_table */
-  /* _construct_extended_name_table */
+    xcoff64_slurp_armap,
+    bfd_false,
   ((boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false),
-  bfd_dont_truncate_arname,            /* _truncate_arname */
-  _bfd_xcoff_write_armap,              /* _write_armap */
-  _bfd_xcoff_read_ar_hdr,              /* _read_ar_hdr */
-  xcoff64_openr_next_archived_file,    /* _openr_next_archived_file */
-  _bfd_generic_get_elt_at_index,       /* _get_elt_at_index */
-  _bfd_xcoff_stat_arch_elt,            /* _generic_stat_arch_elt */
-  /* XCOFF archives do not have a timestamp.  */
-  bfd_true,                            /* _update_armap_timestamp */
+    bfd_dont_truncate_arname,
+    _bfd_xcoff_write_armap,
+    _bfd_xcoff_read_ar_hdr,
+    xcoff64_openr_next_archived_file,
+    _bfd_generic_get_elt_at_index,
+    _bfd_xcoff_stat_arch_elt,
+    bfd_true,
 
   /* Symbols */
-  coff_get_symtab_upper_bound,         /* _get_symtab_upper_bound */
-  coff_get_symtab,                     /* _get_symtab */
-  coff_make_empty_symbol,              /* _make_empty_symbol */
-  coff_print_symbol,                   /* _print_symbol */
-  coff_get_symbol_info,                        /* _get_symbol_info */
-  _bfd_xcoff_is_local_label_name,      /* _bfd_is_local_label_name */
-  coff_get_lineno,                     /* _get_lineno */
-  coff_find_nearest_line,              /* _find_nearest_line */
-  coff_bfd_make_debug_symbol,          /* _bfd_make_debug_symbol */
-  _bfd_generic_read_minisymbols,       /* _read_minisymbols */
-  _bfd_generic_minisymbol_to_symbol,   /* _minsymbol_to_symbol */
+    coff_get_symtab_upper_bound,
+    coff_get_symtab,
+    coff_make_empty_symbol,
+    coff_print_symbol,
+    coff_get_symbol_info,
+    _bfd_xcoff_is_local_label_name,
+    coff_get_lineno,
+    coff_find_nearest_line,
+    coff_bfd_make_debug_symbol,
+    _bfd_generic_read_minisymbols,
+    _bfd_generic_minisymbol_to_symbol,
 
   /* Reloc */
-  coff_get_reloc_upper_bound,          /* _get_reloc_upper_bound */
-  coff_canonicalize_reloc,             /* _cononicalize_reloc */
-  xcoff64_reloc_type_lookup,           /* _bfd_reloc_type_lookup */
+    coff_get_reloc_upper_bound,
+    coff_canonicalize_reloc,
+    xcoff64_reloc_type_lookup,
 
   /* Write */
-  coff_set_arch_mach,                  /* _set_arch_mach */
-  coff_set_section_contents,           /* _set_section_contents */
+    coff_set_arch_mach,
+    coff_set_section_contents,
 
   /* Link */
-  xcoff64_sizeof_headers,              /* _sizeof_headers */
-  /* _bfd_get_relocated_section_contents */
+    xcoff64_sizeof_headers,
   bfd_generic_get_relocated_section_contents,
-  bfd_generic_relax_section,           /* _bfd_relax_section */
-  _bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */
-  _bfd_generic_link_hash_table_free,    /* _bfd_link_hash_table_free */
-  _bfd_xcoff_bfd_link_add_symbols,     /* _bfd_link_add_symbols */
-  _bfd_generic_link_just_syms,         /* _bfd_link_just_syms */
-  _bfd_xcoff_bfd_final_link,           /* _bfd_final_link */
-  _bfd_generic_link_split_section,     /* _bfd_link_split_section */
-  bfd_generic_gc_sections,             /* _bfd_gc_sections */
-  bfd_generic_merge_sections,          /* _bfd_merge_sections */
-  bfd_generic_discard_group,           /* _bfd_discard_group */
+    bfd_generic_relax_section,
+    _bfd_xcoff_bfd_link_hash_table_create,
+    _bfd_generic_link_hash_table_free,
+    _bfd_xcoff_bfd_link_add_symbols,
+    _bfd_generic_link_just_syms,
+    _bfd_xcoff_bfd_final_link,
+    _bfd_generic_link_split_section,
+    bfd_generic_gc_sections,
+    bfd_generic_merge_sections,
+    bfd_generic_discard_group,
 
   /* Dynamic */
-  /* _get_dynamic_symtab_upper_bound */
   _bfd_xcoff_get_dynamic_symtab_upper_bound,
-  _bfd_xcoff_canonicalize_dynamic_symtab,  /* _cononicalize_dynamic_symtab */
-  _bfd_xcoff_get_dynamic_reloc_upper_bound,/* _get_dynamic_reloc_upper_bound */
-  _bfd_xcoff_canonicalize_dynamic_reloc,   /* _cononicalize_dynamic_reloc */
+    _bfd_xcoff_canonicalize_dynamic_symtab,
+    _bfd_xcoff_get_dynamic_reloc_upper_bound,
+    _bfd_xcoff_canonicalize_dynamic_reloc,
 
   /* Opposite endian version, none exists.  */
   NULL,
 
-  /* back end data */
   (void *) & bfd_xcoff_aix5_backend_data,
 };
index 31788e85451cc562ea6923d958d80d0d30c14ed5..ee6c8fce5451efd58833787efa8eb9b017bdc761 100644 (file)
@@ -178,6 +178,7 @@ coff_real_object_p (abfd, nscns, internal_f, internal_a)
   flagword oflags = abfd->flags;
   bfd_vma ostart = bfd_get_start_address (abfd);
   PTR tdata;
+  PTR tdata_save;
   bfd_size_type readsize;      /* length of file_info */
   unsigned int scnhsz;
   char *external_sections;
@@ -206,9 +207,10 @@ coff_real_object_p (abfd, nscns, internal_f, internal_a)
 
   /* Set up the tdata area.  ECOFF uses its own routine, and overrides
      abfd->flags.  */
+  tdata_save = abfd->tdata.any;
   tdata = bfd_coff_mkobject_hook (abfd, (PTR) internal_f, (PTR) internal_a);
   if (tdata == NULL)
-    return 0;
+    goto fail2;
 
   scnhsz = bfd_coff_scnhsz (abfd);
   readsize = (bfd_size_type) nscns * scnhsz;
@@ -245,6 +247,8 @@ coff_real_object_p (abfd, nscns, internal_f, internal_a)
 
  fail:
   bfd_release (abfd, tdata);
+ fail2:
+  abfd->tdata.any = tdata_save;
   abfd->flags = oflags;
   bfd_get_start_address (abfd) = ostart;
   return (const bfd_target *) NULL;
@@ -270,12 +274,13 @@ coff_object_p (abfd)
 
   filehdr = bfd_alloc (abfd, filhsz);
   if (filehdr == NULL)
-    return 0;
+    return NULL;
   if (bfd_bread (filehdr, filhsz, abfd) != filhsz)
     {
       if (bfd_get_error () != bfd_error_system_call)
        bfd_set_error (bfd_error_wrong_format);
-      return 0;
+      bfd_release (abfd, filehdr);
+      return NULL;
     }
   bfd_coff_swap_filehdr_in (abfd, filehdr, &internal_f);
   bfd_release (abfd, filehdr);
@@ -292,7 +297,7 @@ coff_object_p (abfd)
       || internal_f.f_opthdr > aoutsz)
     {
       bfd_set_error (bfd_error_wrong_format);
-      return 0;
+      return NULL;
     }
   nscns = internal_f.f_nscns;
 
@@ -302,13 +307,15 @@ coff_object_p (abfd)
 
       opthdr = bfd_alloc (abfd, aoutsz);
       if (opthdr == NULL)
-       return 0;
+       return NULL;
       if (bfd_bread (opthdr, (bfd_size_type) internal_f.f_opthdr, abfd)
          != internal_f.f_opthdr)
        {
-         return 0;
+         bfd_release (abfd, opthdr);
+         return NULL;
        }
       bfd_coff_swap_aouthdr_in (abfd, opthdr, (PTR) &internal_a);
+      bfd_release (abfd, opthdr);
     }
 
   return coff_real_object_p (abfd, nscns, &internal_f,
index 3fd155151d10f033cfa7de0e05c2b1d4aa673983..184bbef9a2ec9ef17683790a619c5fe83012e85c 100644 (file)
@@ -70,7 +70,16 @@ esac
 case "${targ}" in
 # START OF targmatch.h
 #ifdef BFD64
-  alpha*-*-netbsd* | alpha*-*-freebsd* | alpha*-*-openbsd*)
+  alpha*-*-freebsd*)
+    targ_defvec=bfd_elf64_alpha_freebsd_vec
+    targ_selvecs=ecoffalpha_little_vec
+    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
+    case "${targ}" in
+      alpha*-*-freebsd3* | alpha*-*-freebsd4 | alpha*-*-freebsd4.0*)
+       targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
+    esac
+    ;;
+  alpha*-*-netbsd* | alpha*-*-openbsd*)
     targ_defvec=bfd_elf64_alpha_vec
     targ_selvecs=ecoffalpha_little_vec
     ;;
@@ -357,7 +366,7 @@ case "${targ}" in
   i[3456]86-*-chorus*)
     targ_defvec=bfd_elf32_i386_vec
     ;;
-  i[3456]86-*-msdosdjgpp* | i[3456]*-*-go32* | i[3456]86-go32-rtems* )
+  *-*-msdosdjgpp* | *-*-go32* | *-go32-rtems* )
     targ_defvec=go32coff_vec
     targ_selvecs="go32stubbedcoff_vec i386aout_vec"
     ;;
@@ -388,8 +397,13 @@ case "${targ}" in
     targ_underscore=yes
     ;;
   i[3456]86-*-freebsd*)
-    targ_defvec=bfd_elf32_i386_vec
+    targ_defvec=bfd_elf32_i386_freebsd_vec
     targ_selvecs=i386coff_vec
+    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
+    case "${targ}" in
+      i[3456]86-*-freebsd3* | i[3456]86-*-freebsd4 | i[3456]86-*-freebsd4.0*)
+       targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
+    esac
     ;;
   i[3456]86-*-netbsdelf*) 
     targ_defvec=bfd_elf32_i386_vec
index 52673cb13da1bb61785baea1b5a8a56479849a3d..6d121092d090ab77a15d86d23be345063ce6c299 100755 (executable)
@@ -1770,7 +1770,7 @@ else
   if { (eval echo configure:1771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
-      *.c | *.o | *.obj) ;;
+      *.$ac_ext | *.c | *.o | *.obj) ;;
       *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
       esac
     done
@@ -2414,7 +2414,7 @@ else
   if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
-      *.c | *.o | *.obj) ;;
+      *.$ac_ext | *.c | *.o | *.obj) ;;
       *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
       esac
     done
@@ -2661,7 +2661,7 @@ else
 fi
 
 
-ALL_LINGUAS="fr tr ja es sv"
+ALL_LINGUAS="fr tr ja es sv da"
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
 echo "configure:2667: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
@@ -3291,7 +3291,7 @@ EOF
 
 fi
 
-for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h
+for ac_hdr in unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -3423,24 +3423,11 @@ else
 #include <fcntl.h>
 #include <sys/mman.h>
 
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
 /* This mess was copied from the GNU getpagesize.h.  */
 #ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+# endif
 
 /* Assume that all systems that can run configure have sys/param.h.  */
 # ifndef HAVE_SYS_PARAM_H
@@ -3548,7 +3535,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -3576,17 +3563,17 @@ unistd.h values.h sys/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3580: checking for $ac_hdr" >&5
+echo "configure:3567: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3585 "configure"
+#line 3572 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3616,12 +3603,12 @@ done
 __argz_count __argz_stringify __argz_next
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3620: checking for $ac_func" >&5
+echo "configure:3607: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3625 "configure"
+#line 3612 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3644,7 +3631,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3673,12 +3660,12 @@ done
      for ac_func in stpcpy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3677: checking for $ac_func" >&5
+echo "configure:3664: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3682 "configure"
+#line 3669 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3701,7 +3688,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3735,19 +3722,19 @@ EOF
 
    if test $ac_cv_header_locale_h = yes; then
     echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3739: checking for LC_MESSAGES" >&5
+echo "configure:3726: checking for LC_MESSAGES" >&5
 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3744 "configure"
+#line 3731 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 return LC_MESSAGES
 ; return 0; }
 EOF
-if { (eval echo configure:3751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_val_LC_MESSAGES=yes
 else
@@ -3768,7 +3755,7 @@ EOF
     fi
   fi
    echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3772: checking whether NLS is requested" >&5
+echo "configure:3759: checking whether NLS is requested" >&5
         # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -3788,7 +3775,7 @@ fi
 EOF
 
       echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3792: checking whether included gettext is requested" >&5
+echo "configure:3779: checking whether included gettext is requested" >&5
       # Check whether --with-included-gettext or --without-included-gettext was given.
 if test "${with_included_gettext+set}" = set; then
   withval="$with_included_gettext"
@@ -3807,17 +3794,17 @@ fi
 
        ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3811: checking for libintl.h" >&5
+echo "configure:3798: checking for libintl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3816 "configure"
+#line 3803 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3834,19 +3821,19 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:3838: checking for gettext in libc" >&5
+echo "configure:3825: checking for gettext in libc" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3843 "configure"
+#line 3830 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 int main() {
 return (int) gettext ("")
 ; return 0; }
 EOF
-if { (eval echo configure:3850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gettext_libc=yes
 else
@@ -3862,7 +3849,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
 
           if test "$gt_cv_func_gettext_libc" != "yes"; then
             echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:3866: checking for bindtextdomain in -lintl" >&5
+echo "configure:3853: checking for bindtextdomain in -lintl" >&5
 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3870,7 +3857,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3874 "configure"
+#line 3861 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3881,7 +3868,7 @@ int main() {
 bindtextdomain()
 ; return 0; }
 EOF
-if { (eval echo configure:3885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3897,19 +3884,19 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:3901: checking for gettext in libintl" >&5
+echo "configure:3888: checking for gettext in libintl" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3906 "configure"
+#line 3893 "configure"
 #include "confdefs.h"
 
 int main() {
 return (int) gettext ("")
 ; return 0; }
 EOF
-if { (eval echo configure:3913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gettext_libintl=yes
 else
@@ -3937,7 +3924,7 @@ EOF
              # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3941: checking for $ac_word" >&5
+echo "configure:3928: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3971,12 +3958,12 @@ fi
                for ac_func in dcgettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3975: checking for $ac_func" >&5
+echo "configure:3962: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3980 "configure"
+#line 3967 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3999,7 +3986,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4026,7 +4013,7 @@ done
                # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4030: checking for $ac_word" >&5
+echo "configure:4017: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4062,7 +4049,7 @@ fi
                # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4066: checking for $ac_word" >&5
+echo "configure:4053: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4094,7 +4081,7 @@ else
 fi
 
                cat > conftest.$ac_ext <<EOF
-#line 4098 "configure"
+#line 4085 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4102,7 +4089,7 @@ extern int _nl_msg_cat_cntr;
                               return _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:4106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   CATOBJEXT=.gmo
                   DATADIRNAME=share
@@ -4134,7 +4121,7 @@ fi
         # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4138: checking for $ac_word" >&5
+echo "configure:4125: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4168,7 +4155,7 @@ fi
         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4172: checking for $ac_word" >&5
+echo "configure:4159: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4204,7 +4191,7 @@ fi
         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4208: checking for $ac_word" >&5
+echo "configure:4195: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4294,7 +4281,7 @@ fi
        LINGUAS=
      else
        echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:4298: checking for catalogs to be installed" >&5
+echo "configure:4285: checking for catalogs to be installed" >&5
        NEW_LINGUAS=
        for lang in ${LINGUAS=$ALL_LINGUAS}; do
          case "$ALL_LINGUAS" in
@@ -4322,17 +4309,17 @@ echo "configure:4298: checking for catalogs to be installed" >&5
       if test "$CATOBJEXT" = ".cat"; then
         ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:4326: checking for linux/version.h" >&5
+echo "configure:4313: checking for linux/version.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4331 "configure"
+#line 4318 "configure"
 #include "confdefs.h"
 #include <linux/version.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4410,7 +4397,7 @@ fi
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:4414: checking for a BSD compatible install" >&5
+echo "configure:4401: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4493,7 +4480,7 @@ if test "x$cross_compiling" = "xno"; then
   EXEEXT_FOR_BUILD='$(EXEEXT)'
 else
   echo $ac_n "checking for build system executable suffix""... $ac_c" 1>&6
-echo "configure:4497: checking for build system executable suffix" >&5
+echo "configure:4484: checking for build system executable suffix" >&5
 if eval "test \"`echo '$''{'bfd_cv_build_exeext'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4521,17 +4508,17 @@ for ac_hdr in stddef.h string.h strings.h stdlib.h time.h unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4525: checking for $ac_hdr" >&5
+echo "configure:4512: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4530 "configure"
+#line 4517 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4561,17 +4548,17 @@ for ac_hdr in fcntl.h sys/file.h sys/time.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4565: checking for $ac_hdr" >&5
+echo "configure:4552: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4570 "configure"
+#line 4557 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4598,12 +4585,12 @@ fi
 done
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:4602: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:4589: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4607 "configure"
+#line 4594 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -4612,7 +4599,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:4616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4603: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -4637,12 +4624,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:4641: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4628: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4646 "configure"
+#line 4633 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -4650,7 +4637,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:4654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -4675,7 +4662,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:4679: checking for opendir in -ldir" >&5
+echo "configure:4666: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4683,7 +4670,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4687 "configure"
+#line 4674 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4694,7 +4681,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:4698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4716,7 +4703,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4720: checking for opendir in -lx" >&5
+echo "configure:4707: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4724,7 +4711,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4728 "configure"
+#line 4715 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4735,7 +4722,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:4739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4760,12 +4747,12 @@ fi
 for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4764: checking for $ac_func" >&5
+echo "configure:4751: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4769 "configure"
+#line 4756 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4788,7 +4775,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4823,12 +4810,12 @@ EOF
 esac
 
 echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
-echo "configure:4827: checking whether strstr must be declared" >&5
+echo "configure:4814: checking whether strstr must be declared" >&5
 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4832 "configure"
+#line 4819 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4849,7 +4836,7 @@ int main() {
 char *(*pfn) = (char *(*)) strstr
 ; return 0; }
 EOF
-if { (eval echo configure:4853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_decl_needed_strstr=no
 else
@@ -4870,12 +4857,12 @@ EOF
 fi
 
 echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6
-echo "configure:4874: checking whether malloc must be declared" >&5
+echo "configure:4861: checking whether malloc must be declared" >&5
 if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4879 "configure"
+#line 4866 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4896,7 +4883,7 @@ int main() {
 char *(*pfn) = (char *(*)) malloc
 ; return 0; }
 EOF
-if { (eval echo configure:4900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4887: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_decl_needed_malloc=no
 else
@@ -4917,12 +4904,12 @@ EOF
 fi
 
 echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6
-echo "configure:4921: checking whether realloc must be declared" >&5
+echo "configure:4908: checking whether realloc must be declared" >&5
 if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4926 "configure"
+#line 4913 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4943,7 +4930,7 @@ int main() {
 char *(*pfn) = (char *(*)) realloc
 ; return 0; }
 EOF
-if { (eval echo configure:4947: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_decl_needed_realloc=no
 else
@@ -4964,12 +4951,12 @@ EOF
 fi
 
 echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6
-echo "configure:4968: checking whether free must be declared" >&5
+echo "configure:4955: checking whether free must be declared" >&5
 if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4973 "configure"
+#line 4960 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4990,7 +4977,7 @@ int main() {
 char *(*pfn) = (char *(*)) free
 ; return 0; }
 EOF
-if { (eval echo configure:4994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_decl_needed_free=no
 else
@@ -5011,12 +4998,12 @@ EOF
 fi
 
 echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6
-echo "configure:5015: checking whether getenv must be declared" >&5
+echo "configure:5002: checking whether getenv must be declared" >&5
 if eval "test \"`echo '$''{'bfd_cv_decl_needed_getenv'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5020 "configure"
+#line 5007 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -5037,7 +5024,7 @@ int main() {
 char *(*pfn) = (char *(*)) getenv
 ; return 0; }
 EOF
-if { (eval echo configure:5041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_decl_needed_getenv=no
 else
@@ -5224,16 +5211,16 @@ if test "${target}" = "${host}"; then
        # Not all versions of AIX with -DAIX_CORE_DUMPX_CORE
        # have c_impl as a member of struct core_dumpx
        echo $ac_n "checking for c_impl in struct core_dumpx""... $ac_c" 1>&6
-echo "configure:5228: checking for c_impl in struct core_dumpx" >&5
+echo "configure:5215: checking for c_impl in struct core_dumpx" >&5
        cat > conftest.$ac_ext <<EOF
-#line 5230 "configure"
+#line 5217 "configure"
 #include "confdefs.h"
 #include <core.h>
 int main() {
 struct core_dumpx c; c.c_impl = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cat >> confdefs.h <<\EOF
 #define HAVE_ST_C_IMPL 1
@@ -5301,17 +5288,17 @@ rm -f conftest*
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5305: checking for $ac_hdr" >&5
+echo "configure:5292: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5310 "configure"
+#line 5297 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5315: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5339,12 +5326,12 @@ done
 
   if test "$ac_cv_header_sys_procfs_h" = yes; then
     echo $ac_n "checking for prstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5343: checking for prstatus_t in sys/procfs.h" >&5
+echo "configure:5330: checking for prstatus_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5348 "configure"
+#line 5335 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5353,7 +5340,7 @@ int main() {
 prstatus_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_prstatus_t=yes
 else
@@ -5375,12 +5362,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus_t" 1>&6
 
     echo $ac_n "checking for prstatus32_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5379: checking for prstatus32_t in sys/procfs.h" >&5
+echo "configure:5366: checking for prstatus32_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus32_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5384 "configure"
+#line 5371 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5389,7 +5376,7 @@ int main() {
 prstatus32_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_prstatus32_t=yes
 else
@@ -5411,12 +5398,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus32_t" 1>&6
 
     echo $ac_n "checking for prstatus_t.pr_who in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5415: checking for prstatus_t.pr_who in sys/procfs.h" >&5
+echo "configure:5402: checking for prstatus_t.pr_who in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5420 "configure"
+#line 5407 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5425,7 +5412,7 @@ int main() {
 prstatus_t avar; void* aref = (void*) &avar.pr_who
 ; return 0; }
 EOF
-if { (eval echo configure:5429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes
 else
@@ -5447,12 +5434,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" 1>&6
 
     echo $ac_n "checking for prstatus32_t.pr_who in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5451: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
+echo "configure:5438: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5456 "configure"
+#line 5443 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5461,7 +5448,7 @@ int main() {
 prstatus32_t avar; void* aref = (void*) &avar.pr_who
 ; return 0; }
 EOF
-if { (eval echo configure:5465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=yes
 else
@@ -5483,12 +5470,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" 1>&6
 
     echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5487: checking for pstatus_t in sys/procfs.h" >&5
+echo "configure:5474: checking for pstatus_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5492 "configure"
+#line 5479 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5497,7 +5484,7 @@ int main() {
 pstatus_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5501: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_pstatus_t=yes
 else
@@ -5519,12 +5506,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6
 
     echo $ac_n "checking for pxstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5523: checking for pxstatus_t in sys/procfs.h" >&5
+echo "configure:5510: checking for pxstatus_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pxstatus_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5528 "configure"
+#line 5515 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5533,7 +5520,7 @@ int main() {
 pxstatus_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_pxstatus_t=yes
 else
@@ -5555,12 +5542,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_pxstatus_t" 1>&6
 
     echo $ac_n "checking for pstatus32_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5559: checking for pstatus32_t in sys/procfs.h" >&5
+echo "configure:5546: checking for pstatus32_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus32_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5564 "configure"
+#line 5551 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5569,7 +5556,7 @@ int main() {
 pstatus32_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_pstatus32_t=yes
 else
@@ -5591,12 +5578,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus32_t" 1>&6
 
     echo $ac_n "checking for prpsinfo_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5595: checking for prpsinfo_t in sys/procfs.h" >&5
+echo "configure:5582: checking for prpsinfo_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5600 "configure"
+#line 5587 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5605,7 +5592,7 @@ int main() {
 prpsinfo_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5596: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_prpsinfo_t=yes
 else
@@ -5627,12 +5614,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo_t" 1>&6
 
     echo $ac_n "checking for prpsinfo32_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5631: checking for prpsinfo32_t in sys/procfs.h" >&5
+echo "configure:5618: checking for prpsinfo32_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo32_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5636 "configure"
+#line 5623 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5641,7 +5628,7 @@ int main() {
 prpsinfo32_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5645: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes
 else
@@ -5663,12 +5650,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo32_t" 1>&6
 
     echo $ac_n "checking for psinfo_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5667: checking for psinfo_t in sys/procfs.h" >&5
+echo "configure:5654: checking for psinfo_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5672 "configure"
+#line 5659 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5677,7 +5664,7 @@ int main() {
 psinfo_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_psinfo_t=yes
 else
@@ -5699,12 +5686,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo_t" 1>&6
 
     echo $ac_n "checking for psinfo32_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5703: checking for psinfo32_t in sys/procfs.h" >&5
+echo "configure:5690: checking for psinfo32_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo32_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5708 "configure"
+#line 5695 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5713,7 +5700,7 @@ int main() {
 psinfo32_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5717: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_psinfo32_t=yes
 else
@@ -5735,12 +5722,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo32_t" 1>&6
 
     echo $ac_n "checking for lwpstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5739: checking for lwpstatus_t in sys/procfs.h" >&5
+echo "configure:5726: checking for lwpstatus_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpstatus_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5744 "configure"
+#line 5731 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5749,7 +5736,7 @@ int main() {
 lwpstatus_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_lwpstatus_t=yes
 else
@@ -5771,12 +5758,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpstatus_t" 1>&6
 
     echo $ac_n "checking for lwpxstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5775: checking for lwpxstatus_t in sys/procfs.h" >&5
+echo "configure:5762: checking for lwpxstatus_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpxstatus_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5780 "configure"
+#line 5767 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5785,7 +5772,7 @@ int main() {
 lwpxstatus_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes
 else
@@ -5807,12 +5794,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpxstatus_t" 1>&6
 
     echo $ac_n "checking for lwpstatus_t.pr_context in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5811: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
+echo "configure:5798: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5816 "configure"
+#line 5803 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5821,7 +5808,7 @@ int main() {
 lwpstatus_t avar; void* aref = (void*) &avar.pr_context
 ; return 0; }
 EOF
-if { (eval echo configure:5825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes
 else
@@ -5843,12 +5830,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" 1>&6
 
     echo $ac_n "checking for lwpstatus_t.pr_reg in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5847: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
+echo "configure:5834: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5852 "configure"
+#line 5839 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5857,7 +5844,7 @@ int main() {
 lwpstatus_t avar; void* aref = (void*) &avar.pr_reg
 ; return 0; }
 EOF
-if { (eval echo configure:5861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes
 else
@@ -5879,12 +5866,12 @@ EOF
  echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" 1>&6
 
     echo $ac_n "checking for win32_pstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:5883: checking for win32_pstatus_t in sys/procfs.h" >&5
+echo "configure:5870: checking for win32_pstatus_t in sys/procfs.h" >&5
  if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_win32_pstatus_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5888 "configure"
+#line 5875 "configure"
 #include "confdefs.h"
 
 #define _SYSCALL32
@@ -5893,7 +5880,7 @@ int main() {
 win32_pstatus_t avar
 ; return 0; }
 EOF
-if { (eval echo configure:5897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5884: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes
 else
@@ -6074,6 +6061,7 @@ do
     bfd_elf32_hppa_linux_vec)  tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_hppa_vec)                tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_i370_vec)                tb="$tb elf32-i370.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_freebsd_vec)        tb="$tb elf32-i386-fbsd.lo elf32.lo $elf" ;;
     bfd_elf32_i386_vec)                tb="$tb elf32-i386.lo elf32.lo $elf" ;;
     bfd_elf32_i386qnx_vec)     tb="$tb elf32-i386qnx.lo elf32.lo $elf" ;;
     bfd_elf32_i860_little_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
@@ -6122,6 +6110,7 @@ do
     bfd_elf32_v850_vec)                tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)         tb="$tb elf32-vax.lo elf32.lo $elf" ;;
     bfd_elf32_xstormy16_vec)   tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
+    bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha-fbsd.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_alpha_vec)       tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_big_generic_vec)         tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_bigmips_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
@@ -6321,10 +6310,10 @@ case ${host64}-${target64}-${want64} in
     if test -n "$GCC" ; then
        bad_64bit_gcc=no;
        echo $ac_n "checking for gcc version with buggy 64-bit support""... $ac_c" 1>&6
-echo "configure:6325: checking for gcc version with buggy 64-bit support" >&5
+echo "configure:6314: checking for gcc version with buggy 64-bit support" >&5
        # Add more tests for gcc versions with non-working 64-bit support here.
        cat > conftest.$ac_ext <<EOF
-#line 6328 "configure"
+#line 6317 "configure"
 #include "confdefs.h"
 :__GNUC__:__GNUC_MINOR__:__i386__:
 EOF
@@ -6365,21 +6354,21 @@ test -n "${selarchs}" && tdefaults="${tdefaults} -DSELECT_ARCHITECTURES='${selar
 test -n "${havevecs}" && tdefaults="${tdefaults} ${havevecs}"
 
 
-for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h
+for ac_hdr in unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6373: checking for $ac_hdr" >&5
+echo "configure:6362: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6378 "configure"
+#line 6367 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6408,12 +6397,12 @@ done
 for ac_func in getpagesize
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6412: checking for $ac_func" >&5
+echo "configure:6401: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6417 "configure"
+#line 6406 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6436,7 +6425,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6461,7 +6450,7 @@ fi
 done
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6465: checking for working mmap" >&5
+echo "configure:6454: checking for working mmap" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6469,7 +6458,7 @@ else
   ac_cv_func_mmap_fixed_mapped=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 6473 "configure"
+#line 6462 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6497,24 +6486,11 @@ else
 #include <fcntl.h>
 #include <sys/mman.h>
 
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
 /* This mess was copied from the GNU getpagesize.h.  */
 #ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+# endif
 
 /* Assume that all systems that can run configure have sys/param.h.  */
 # ifndef HAVE_SYS_PARAM_H
@@ -6622,7 +6598,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:6626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -6647,12 +6623,12 @@ fi
 for ac_func in madvise mprotect
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6651: checking for $ac_func" >&5
+echo "configure:6627: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6656 "configure"
+#line 6632 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6675,7 +6651,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
index 64756c1f545a9640b4e18496764a38c5da033faa..22292f276e16139f744f73a8b0b91462ee16381c 100644 (file)
@@ -109,7 +109,7 @@ bfd_default_target_size=32
 
 AC_PROG_CC
 
-ALL_LINGUAS="fr tr ja es sv"
+ALL_LINGUAS="fr tr ja es sv da"
 CY_GNU_GETTEXT
 
 # Permit host specific settings.
@@ -575,6 +575,7 @@ do
     bfd_elf32_hppa_linux_vec)  tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_hppa_vec)                tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_i370_vec)                tb="$tb elf32-i370.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_freebsd_vec)        tb="$tb elf32-i386-fbsd.lo elf32.lo $elf" ;;
     bfd_elf32_i386_vec)                tb="$tb elf32-i386.lo elf32.lo $elf" ;;
     bfd_elf32_i386qnx_vec)     tb="$tb elf32-i386qnx.lo elf32.lo $elf" ;;
     bfd_elf32_i860_little_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
@@ -623,6 +624,7 @@ do
     bfd_elf32_v850_vec)                tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)         tb="$tb elf32-vax.lo elf32.lo $elf" ;;
     bfd_elf32_xstormy16_vec)   tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
+    bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha-fbsd.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_alpha_vec)       tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_big_generic_vec)         tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_bigmips_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
index 005a21f7d3b2a4e94876a20e19cbc1dbeb7a5127..5aadaddf2b138569643dbf03c482f6bb762b0844 100644 (file)
    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
    support in dwarfread.c
 
-This file is part of BFD.
+   This file is part of BFD.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or (at
+   your option) any later version.
 
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "bfd.h"
 #include "sysdep.h"
@@ -856,13 +856,18 @@ concat_filename (table, file)
   filename = table->files[file - 1].name;
   if (IS_ABSOLUTE_PATH(filename))
     return filename;
-
   else
     {
       char* dirname = (table->files[file - 1].dir
                       ? table->dirs[table->files[file - 1].dir - 1]
                       : table->comp_dir);
-      return (char*) concat (dirname, "/", filename, NULL);
+
+      /* Not all tools set DW_AT_comp_dir, so dirname may be unknown.  The
+        best we can do is return the filename part.  */
+      if (dirname == NULL)
+       return filename;
+      else
+       return (char*) concat (dirname, "/", filename, NULL);
     }
 }
 
@@ -1079,13 +1084,19 @@ decode_line_info (unit, stash)
     {
       /* State machine registers.  */
       bfd_vma address = 0;
-      char* filename = concat_filename (table, 1);
+      char * filename = concat_filename (table, 1);
       unsigned int line = 1;
       unsigned int column = 0;
       int is_stmt = lh.default_is_stmt;
       int basic_block = 0;
-      int end_sequence = 0, need_low_pc = 1;
-      bfd_vma low_pc = 0;
+      int end_sequence = 0;
+      /* eraxxon@alumni.rice.edu: Against the DWARF2 specs, some
+         compilers generate address sequences that are wildly out of
+         order using DW_LNE_set_address (e.g. Intel C++ 6.0 compiler
+         for ia64-Linux).  Thus, to determine the low and high
+         address, we must compare on every DW_LNS_copy, etc.  */
+      bfd_vma low_pc  = 0;
+      bfd_vma high_pc = 0;
 
       /* Decode the table.  */
       while (! end_sequence)
@@ -1094,7 +1105,8 @@ decode_line_info (unit, stash)
          line_ptr += 1;
 
          if (op_code >= lh.opcode_base)
-           {           /* Special operand.  */
+           {
+             /* Special operand.  */
              adj_opcode = op_code - lh.opcode_base;
              address += (adj_opcode / lh.line_range)
                * lh.minimum_instruction_length;
@@ -1102,29 +1114,30 @@ decode_line_info (unit, stash)
              /* Append row to matrix using current values.  */
              add_line_info (table, address, filename, line, column, 0);
              basic_block = 1;
-             if (need_low_pc)
-               {
-                 need_low_pc = 0;
-                 low_pc = address;
-               }
+             if (low_pc == 0 || address < low_pc)
+               low_pc = address;
+             if (address > high_pc)
+               high_pc = address;
            }
          else switch (op_code)
            {
            case DW_LNS_extended_op:
-             line_ptr += 1;    /* Ignore length.  */
+             /* Ignore length.  */
+             line_ptr += 1;
              extended_op = read_1_byte (abfd, line_ptr);
              line_ptr += 1;
+
              switch (extended_op)
                {
                case DW_LNE_end_sequence:
                  end_sequence = 1;
                  add_line_info (table, address, filename, line, column,
                                 end_sequence);
-                 if (need_low_pc)
-                   {
-                     need_low_pc = 0;
-                     low_pc = address;
-                   }
+                 arange_add (unit, low_pc, high_pc);
+                 if (low_pc == 0 || address < low_pc)
+                   low_pc = address;
+                 if (address > high_pc)
+                   high_pc = address;
                  arange_add (unit, low_pc, address);
                  break;
                case DW_LNE_set_address:
@@ -1164,11 +1177,10 @@ decode_line_info (unit, stash)
            case DW_LNS_copy:
              add_line_info (table, address, filename, line, column, 0);
              basic_block = 0;
-             if (need_low_pc)
-               {
-                 need_low_pc = 0;
-                 low_pc = address;
-               }
+             if (low_pc == 0 || address < low_pc)
+               low_pc = address;
+             if (address > high_pc)
+               high_pc = address;
              break;
            case DW_LNS_advance_pc:
              address += lh.minimum_instruction_length
@@ -1183,8 +1195,8 @@ decode_line_info (unit, stash)
              {
                unsigned int file;
 
-               /* The file and directory tables are 0 based, the references
-                  are 1 based.  */
+               /* The file and directory tables are 0
+                  based, the references are 1 based.  */
                file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
                line_ptr += bytes_read;
                filename = concat_filename (table, file);
@@ -1209,8 +1221,9 @@ decode_line_info (unit, stash)
              line_ptr += 2;
              break;
            default:
-             {  /* Unknown standard opcode, ignore it.  */
+             {
                int i;
+               /* Unknown standard opcode, ignore it.  */
                for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++)
                  {
                    (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
@@ -1229,10 +1242,7 @@ decode_line_info (unit, stash)
    LINENUMBER_PTR, are pointers to the objects to be filled in.  */
 
 static boolean
-lookup_address_in_line_info_table (table,
-                                  addr,
-                                  function,
-                                  filename_ptr,
+lookup_address_in_line_info_table (table, addr, function, filename_ptr,
                                   linenumber_ptr)
      struct line_info_table* table;
      bfd_vma addr;
@@ -1293,9 +1303,7 @@ lookup_address_in_line_info_table (table,
 /* If ADDR is within TABLE, set FUNCTIONNAME_PTR, and return true.  */
 
 static boolean
-lookup_address_in_function_table (table,
-                                 addr,
-                                 function_ptr,
+lookup_address_in_function_table (table, addr, function_ptr,
                                  functionname_ptr)
      struct funcinfo* table;
      bfd_vma addr;
@@ -1661,9 +1669,8 @@ comp_unit_contains_address (unit, addr)
    false otherwise.  */
 
 static boolean
-comp_unit_find_nearest_line (unit, addr,
-                            filename_ptr, functionname_ptr, linenumber_ptr,
-                            stash)
+comp_unit_find_nearest_line (unit, addr, filename_ptr, functionname_ptr,
+                            linenumber_ptr, stash)
      struct comp_unit* unit;
      bfd_vma addr;
      const char **filename_ptr;
@@ -1703,26 +1710,23 @@ comp_unit_find_nearest_line (unit, addr,
     }
 
   function = NULL;
-  func_p = lookup_address_in_function_table (unit->function_table,
-                                            addr,
-                                            &function,
-                                            functionname_ptr);
-  line_p = lookup_address_in_line_info_table (unit->line_table,
-                                             addr,
-                                             function,
-                                             filename_ptr,
+  func_p = lookup_address_in_function_table (unit->function_table, addr,
+                                            &function, functionname_ptr);
+  line_p = lookup_address_in_line_info_table (unit->line_table, addr,
+                                             function, filename_ptr,
                                              linenumber_ptr);
   return line_p || func_p;
 }
 
-/* Locate a section in a BFD containing debugging info.  The search starts from the
-   section after AFTER_SEC, or from the first section in the BFD if AFTER_SEC is
-   NULL.  The search works by examining the names of the sections.  There are two
-   permissiable names.  The first is .debug_info.  This is the standard DWARF2 name.
-   The second is a prefix .gnu.linkonce.wi.  This is a variation on the .debug_info
-   section which has a checksum describing the contents appended onto the name.  This
-   allows the linker to identify and discard duplicate debugging sections for
-   different compilation units.  */
+/* Locate a section in a BFD containing debugging info.  The search starts
+   from the section after AFTER_SEC, or from the first section in the BFD if
+   AFTER_SEC is NULL.  The search works by examining the names of the
+   sections.  There are two permissiable names.  The first is .debug_info.
+   This is the standard DWARF2 name.  The second is a prefix .gnu.linkonce.wi.
+   This is a variation on the .debug_info section which has a checksum
+   describing the contents appended onto the name.  This allows the linker to
+   identify and discard duplicate debugging sections for different
+   compilation units.  */
 #define DWARF2_DEBUG_INFO ".debug_info"
 #define GNU_LINKONCE_INFO ".gnu.linkonce.wi."
 
@@ -1761,8 +1765,7 @@ find_debug_info (abfd, after_sec)
 boolean
 _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
                               filename_ptr, functionname_ptr,
-                              linenumber_ptr,
-                              addr_size, pinfo)
+                              linenumber_ptr, addr_size, pinfo)
      bfd *abfd;
      asection *section;
      asymbol **symbols;
@@ -1902,6 +1905,13 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
              length = read_8_bytes (abfd, stash->info_ptr + 4);
              stash->info_ptr += 8;
            }
+         else if (length == 0)
+           {
+             /* Handle (non-standard) 64-bit DWARF2 formats.  */
+             offset_size = 8;
+             length = read_4_bytes (abfd, stash->info_ptr + 4);
+             stash->info_ptr += 4;
+           }
        }
       else
        length = read_8_bytes (abfd, stash->info_ptr);
index bb78dd9c035d36f7a6dfcc0ba396c7faf1bfa210..c8c56f84f88640899f61c7fdc816e81e404e2429 100644 (file)
@@ -553,7 +553,9 @@ _bfd_ecoff_slurp_symbolic_info (abfd, ignore, debug)
   UPDATE_RAW_END (cbDnOffset, idnMax, backend->debug_swap.external_dnr_size);
   UPDATE_RAW_END (cbPdOffset, ipdMax, backend->debug_swap.external_pdr_size);
   UPDATE_RAW_END (cbSymOffset, isymMax, backend->debug_swap.external_sym_size);
-  UPDATE_RAW_END (cbOptOffset, ioptMax, backend->debug_swap.external_opt_size);
+  /* eraxxon@alumni.rice.edu: ioptMax refers to the size of the
+     optimization symtab, not the number of entries */
+  UPDATE_RAW_END (cbOptOffset, ioptMax, sizeof (char));
   UPDATE_RAW_END (cbAuxOffset, iauxMax, sizeof (union aux_ext));
   UPDATE_RAW_END (cbSsOffset, issMax, sizeof (char));
   UPDATE_RAW_END (cbSsExtOffset, issExtMax, sizeof (char));
@@ -3289,8 +3291,6 @@ _bfd_ecoff_archive_p (abfd)
   char armag[SARMAG + 1];
   bfd_size_type amt;
 
-  tdata_hold = abfd->tdata.aout_ar_data;
-
   if (bfd_bread ((PTR) armag, (bfd_size_type) SARMAG, abfd) != SARMAG)
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -3304,15 +3304,13 @@ _bfd_ecoff_archive_p (abfd)
       return NULL;
     }
 
-  /* We are setting bfd_ardata(abfd) here, but since bfd_ardata
-     involves a cast, we can't do it as the left operand of
-     assignment.  */
-  amt = sizeof (struct artdata);
-  abfd->tdata.aout_ar_data = (struct artdata *) bfd_zalloc (abfd, amt);
+  tdata_hold = bfd_ardata (abfd);
 
+  amt = sizeof (struct artdata);
+  bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
   if (bfd_ardata (abfd) == (struct artdata *) NULL)
     {
-      abfd->tdata.aout_ar_data = tdata_hold;
+      bfd_ardata (abfd) = tdata_hold;
       return (const bfd_target *) NULL;
     }
 
@@ -3327,7 +3325,7 @@ _bfd_ecoff_archive_p (abfd)
       || ! _bfd_ecoff_slurp_extended_name_table (abfd))
     {
       bfd_release (abfd, bfd_ardata (abfd));
-      abfd->tdata.aout_ar_data = tdata_hold;
+      bfd_ardata (abfd) = tdata_hold;
       return (const bfd_target *) NULL;
     }
 
@@ -3345,22 +3343,23 @@ _bfd_ecoff_archive_p (abfd)
       first = bfd_openr_next_archived_file (abfd, (bfd *) NULL);
       if (first != NULL)
        {
-         boolean fail;
-
          first->target_defaulted = false;
-         fail = false;
          if (bfd_check_format (first, bfd_object)
              && first->xvec != abfd->xvec)
            {
+#if 0
+             /* We ought to close `first' here, but we can't, because
+                we have no way to remove it from the archive cache.
+                It's close to impossible to figure out when we can
+                release bfd_ardata.  FIXME.  */
              (void) bfd_close (first);
              bfd_release (abfd, bfd_ardata (abfd));
-             abfd->tdata.aout_ar_data = tdata_hold;
-             bfd_set_error (bfd_error_wrong_format);
+#endif
+             bfd_set_error (bfd_error_wrong_object_format);
+             bfd_ardata (abfd) = tdata_hold;
              return NULL;
            }
-
-         /* We ought to close first here, but we can't, because we
-             have no way to remove it from the archive cache.  FIXME.  */
+         /* And we ought to close `first' here too.  */
        }
     }
 
index 6f10cd7aabe1f8bd9e3905821db8e673b302b4e2..713dc8f11d124235096aa5280abce22773a37a88 100644 (file)
@@ -627,11 +627,11 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
            goto free_no_table;
          if ((*reloc_symbol_deleted_p) (buf - ehbuf, cookie))
            {
-             cookie->rel = rel;
              /* This is a FDE against discarded section, it should
                 be deleted.  */
              new_size -= hdr.length + 4;
              sec_info->entry[sec_info->count].removed = 1;
+             memset (rel, 0, sizeof (*rel));
            }
          else
            {
index 0d0f09acd54c6ab37cde8462daff6f47049a4155..284b982853fd76c16f04fce917a9df04ad80c348 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -5572,7 +5572,11 @@ _bfd_elf_canonicalize_dynamic_symtab (abfd, alocation)
      asymbol **alocation;
 {
   struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  return bed->s->slurp_symbol_table (abfd, alocation, true);
+  long symcount = bed->s->slurp_symbol_table (abfd, alocation, true);
+
+  if (symcount >= 0)
+    bfd_get_dynamic_symcount (abfd) = symcount;
+  return symcount;
 }
 
 /* Return the size required for the dynamic reloc entries.  Any
@@ -6041,7 +6045,7 @@ _bfd_elf_find_nearest_line (abfd, section, symbols, offset,
                                             functionname_ptr, line_ptr,
                                             &elf_tdata (abfd)->line_info))
     return false;
-  if (found)
+  if (found && (*functionname_ptr || *line_ptr))
     return true;
 
   if (symbols == NULL)
index 39b1d248a06d33e2405b83e8b2b4d6598ed86971..f41b843cb9638bc5f797133e546bd1fe5f2a189a 100644 (file)
@@ -2958,16 +2958,22 @@ elf32_arm_adjust_dynamic_symbol (info, h)
   if (h->type == STT_FUNC
       || (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
     {
+      /* If we link a program (not a DSO), we'll get rid of unnecessary
+        PLT entries; we point to the actual symbols -- even for pic
+        relocs, because a program built with -fpic should have the same
+        result as one built without -fpic, specifically considering weak
+        symbols.
+        FIXME: m68k and i386 differ here, for unclear reasons.  */
       if (! info->shared
-         && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
-         && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
+         && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0)
        {
          /* This case can occur if we saw a PLT32 reloc in an input
-             file, but the symbol was never referred to by a dynamic
-             object.  In such a case, we don't actually need to build
-             a procedure linkage table, and we can just do a PC32
-             reloc instead.  */
+            file, but the symbol was not defined by a dynamic object.
+            In such a case, we don't actually need to build a
+            procedure linkage table, and we can just do a PC32 reloc
+            instead.  */
          BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0);
+         h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
          return true;
        }
 
index 0c7be533679597abc44f7b8c6f59243b68a4c228..5dfad2acd0b85fb99f878302b30d95e6483ad559 100644 (file)
@@ -782,7 +782,7 @@ elf32_h8_relax_section (abfd, sec, link_info, again)
          Elf_Internal_Sym *isym;
          asection *sym_sec;
 
-         isym = isymbuf + ELF64_R_SYM (irel->r_info);
+         isym = isymbuf + ELF32_R_SYM (irel->r_info);
          sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
          symval = (isym->st_value
                    + sym_sec->output_section->vma
index 4d57aa5649381a641cf180ad218458e9bc4e78a4..d52d5a7db4d920cd38b5735cbdcbbe7748d52d8e 100644 (file)
@@ -133,9 +133,18 @@ static reloc_howto_type elf_howto_table[]=
      R_386_ext_offset is the value to subtract from a reloc type of
      R_386_16 thru R_386_PC8 to form an index into this table.  */
 #define R_386_standard ((unsigned int) R_386_GOTPC + 1)
-#define R_386_ext_offset ((unsigned int) R_386_TLS_LE - R_386_standard)
+#define R_386_ext_offset ((unsigned int) R_386_TLS_TPOFF - R_386_standard)
 
-  /* The remaining relocs are a GNU extension.  */
+  /* These relocs are a GNU extension.  */
+  HOWTO(R_386_TLS_TPOFF, 0, 2, 32, false, 0, complain_overflow_bitfield,
+       bfd_elf_generic_reloc, "R_386_TLS_TPOFF",
+       true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_IE, 0, 2, 32, false, 0, complain_overflow_bitfield,
+       bfd_elf_generic_reloc, "R_386_TLS_IE",
+       true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_GOTIE, 0, 2, 32, false, 0, complain_overflow_bitfield,
+       bfd_elf_generic_reloc, "R_386_TLS_GOTIE",
+       true, 0xffffffff, 0xffffffff, false),
   HOWTO(R_386_TLS_LE, 0, 2, 32, false, 0, complain_overflow_bitfield,
        bfd_elf_generic_reloc, "R_386_TLS_LE",
        true, 0xffffffff, 0xffffffff, false),
@@ -279,7 +288,19 @@ elf_i386_reloc_type_lookup (abfd, code)
       TRACE ("BFD_RELOC_386_GOTPC");
       return &elf_howto_table[(unsigned int) R_386_GOTPC ];
 
-      /* The remaining relocs are a GNU extension.  */
+      /* These relocs are a GNU extension.  */
+    case BFD_RELOC_386_TLS_TPOFF:
+      TRACE ("BFD_RELOC_386_TLS_TPOFF");
+      return &elf_howto_table[(unsigned int) R_386_TLS_TPOFF - R_386_ext_offset];
+
+    case BFD_RELOC_386_TLS_IE:
+      TRACE ("BFD_RELOC_386_TLS_IE");
+      return &elf_howto_table[(unsigned int) R_386_TLS_IE - R_386_ext_offset];
+
+    case BFD_RELOC_386_TLS_GOTIE:
+      TRACE ("BFD_RELOC_386_TLS_GOTIE");
+      return &elf_howto_table[(unsigned int) R_386_TLS_GOTIE - R_386_ext_offset];
+
     case BFD_RELOC_386_TLS_LE:
       TRACE ("BFD_RELOC_386_TLS_LE");
       return &elf_howto_table[(unsigned int) R_386_TLS_LE - R_386_ext_offset];
@@ -564,9 +585,14 @@ struct elf_i386_link_hash_entry
   /* Track dynamic relocs copied for this symbol.  */
   struct elf_i386_dyn_relocs *dyn_relocs;
 
-  enum {
-    GOT_UNKNOWN = 0, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE
-  } tls_type;
+#define GOT_UNKNOWN    0
+#define GOT_NORMAL     1
+#define GOT_TLS_GD     2
+#define GOT_TLS_IE     4
+#define GOT_TLS_IE_POS 5
+#define GOT_TLS_IE_NEG 6
+#define GOT_TLS_IE_BOTH 7
+  unsigned char tls_type;
 };
 
 #define elf_i386_hash_entry(ent) ((struct elf_i386_link_hash_entry *)(ent))
@@ -836,6 +862,11 @@ elf_i386_tls_transition (info, r_type, is_local)
       if (is_local)
        return R_386_TLS_LE_32;
       return R_386_TLS_IE_32;
+    case R_386_TLS_IE:
+    case R_386_TLS_GOTIE:
+      if (is_local)
+       return R_386_TLS_LE_32;
+      return r_type;
     case R_386_TLS_LDM:
       return R_386_TLS_LE_32;
     }
@@ -897,10 +928,34 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
 
       switch (r_type)
        {
+       case R_386_TLS_LDM:
+         htab->tls_ldm_got.refcount += 1;
+         goto create_got;
+
+       case R_386_PLT32:
+         /* This symbol requires a procedure linkage table entry.  We
+            actually build the entry in adjust_dynamic_symbol,
+            because this might be a case of linking PIC code which is
+            never referenced by a dynamic object, in which case we
+            don't need to generate a procedure linkage table entry
+            after all.  */
+
+         /* If this is a local symbol, we resolve it directly without
+            creating a procedure linkage table entry.  */
+         if (h == NULL)
+           continue;
+
+         h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+         h->plt.refcount += 1;
+         break;
+
        case R_386_TLS_IE_32:
+       case R_386_TLS_IE:
+       case R_386_TLS_GOTIE:
          if (info->shared)
            info->flags |= DF_STATIC_TLS;
-         /* FALLTHROUGH */
+         /* Fall through */
+
        case R_386_GOT32:
        case R_386_TLS_GD:
          /* This symbol requires a global offset table entry.  */
@@ -912,7 +967,17 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
              default:
              case R_386_GOT32: tls_type = GOT_NORMAL; break;
              case R_386_TLS_GD: tls_type = GOT_TLS_GD; break;
-             case R_386_TLS_IE_32: tls_type = GOT_TLS_IE; break;
+             case R_386_TLS_IE_32:
+               if (ELF32_R_TYPE (rel->r_info) == r_type)
+                 tls_type = GOT_TLS_IE_NEG;
+               else
+                 /* If this is a GD->IE transition, we may use either of
+                    R_386_TLS_TPOFF and R_386_TLS_TPOFF32.  */
+                 tls_type = GOT_TLS_IE;
+               break;
+             case R_386_TLS_IE:
+             case R_386_TLS_GOTIE:
+               tls_type = GOT_TLS_IE_POS; break;
              }
 
            if (h != NULL)
@@ -944,18 +1009,22 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
                old_tls_type = elf_i386_local_got_tls_type (abfd) [r_symndx];
              }
 
+           if ((old_tls_type & GOT_TLS_IE) && (tls_type & GOT_TLS_IE))
+             tls_type |= old_tls_type;
            /* If a TLS symbol is accessed using IE at least once,
               there is no point to use dynamic model for it.  */
-           if (old_tls_type != tls_type && old_tls_type != GOT_UNKNOWN
-               && (old_tls_type != GOT_TLS_GD || tls_type != GOT_TLS_IE))
+           else if (old_tls_type != tls_type && old_tls_type != GOT_UNKNOWN
+                    && (old_tls_type != GOT_TLS_GD
+                        || (tls_type & GOT_TLS_IE) == 0))
              {
-               if (old_tls_type == GOT_TLS_IE && tls_type == GOT_TLS_GD)
-                 tls_type = GOT_TLS_IE;
+               if ((old_tls_type & GOT_TLS_IE) && tls_type == GOT_TLS_GD)
+                 tls_type = old_tls_type;
                else
                  {
                    (*_bfd_error_handler)
                      (_("%s: `%s' accessed both as normal and thread local symbol"),
-                      bfd_archive_filename (abfd), h->root.root.string);
+                      bfd_archive_filename (abfd),
+                      h ? h->root.root.string : "<local>");
                    return false;
                  }
              }
@@ -980,28 +1049,15 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
              if (!create_got_section (htab->elf.dynobj, info))
                return false;
            }
-         break;
-
-       case R_386_TLS_LDM:
-         htab->tls_ldm_got.refcount += 1;
-         goto create_got;
-
-       case R_386_PLT32:
-         /* This symbol requires a procedure linkage table entry.  We
-            actually build the entry in adjust_dynamic_symbol,
-            because this might be a case of linking PIC code which is
-            never referenced by a dynamic object, in which case we
-            don't need to generate a procedure linkage table entry
-            after all.  */
-
-         /* If this is a local symbol, we resolve it directly without
-            creating a procedure linkage table entry.  */
-         if (h == NULL)
-           continue;
+         if (r_type != R_386_TLS_IE)
+           break;
+         /* Fall through */
 
-         h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
-         h->plt.refcount += 1;
-         break;
+       case R_386_TLS_LE_32:
+       case R_386_TLS_LE:
+         if (!info->shared)
+           break;
+         /* Fall through */        
 
        case R_386_32:
        case R_386_PC32:
@@ -1161,16 +1217,6 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
            return false;
          break;
 
-       case R_386_TLS_LE_32:
-       case R_386_TLS_LE:
-         if (info->shared)
-           {
-             (*_bfd_error_handler) (_("%s: TLS local exec code cannot be linked into shared objects"),
-                                    bfd_archive_filename (abfd));
-             return false;
-           }
-         break;
-
        default:
          break;
        }
@@ -1233,6 +1279,7 @@ elf_i386_gc_sweep_hook (abfd, info, sec, relocs)
   bfd_signed_vma *local_got_refcounts;
   const Elf_Internal_Rela *rel, *relend;
   unsigned long r_symndx;
+  int r_type;
   struct elf_link_hash_entry *h;
 
   elf_section_data (sec)->local_dynrel = NULL;
@@ -1243,9 +1290,10 @@ elf_i386_gc_sweep_hook (abfd, info, sec, relocs)
 
   relend = relocs + sec->reloc_count;
   for (rel = relocs; rel < relend; rel++)
-    switch (elf_i386_tls_transition (info, ELF32_R_TYPE (rel->r_info),
-                                    ELF32_R_SYM (rel->r_info)
-                                    >= symtab_hdr->sh_info))
+    switch ((r_type = elf_i386_tls_transition (info,
+                                              ELF32_R_TYPE (rel->r_info),
+                                              ELF32_R_SYM (rel->r_info)
+                                              >= symtab_hdr->sh_info)))
       {
       case R_386_TLS_LDM:
        if (elf_i386_hash_table (info)->tls_ldm_got.refcount > 0)
@@ -1254,6 +1302,8 @@ elf_i386_gc_sweep_hook (abfd, info, sec, relocs)
 
       case R_386_TLS_GD:
       case R_386_TLS_IE_32:
+      case R_386_TLS_IE:
+      case R_386_TLS_GOTIE:
       case R_386_GOT32:
        r_symndx = ELF32_R_SYM (rel->r_info);
        if (r_symndx >= symtab_hdr->sh_info)
@@ -1267,7 +1317,15 @@ elf_i386_gc_sweep_hook (abfd, info, sec, relocs)
            if (local_got_refcounts[r_symndx] > 0)
              local_got_refcounts[r_symndx] -= 1;
          }
-       break;
+       if (r_type != R_386_TLS_IE)
+         break;
+       /* Fall through */
+
+      case R_386_TLS_LE_32:
+      case R_386_TLS_LE:
+        if (!info->shared)
+         break;
+       /* Fall through */
 
       case R_386_32:
       case R_386_PC32:
@@ -1553,12 +1611,12 @@ allocate_dynrelocs (h, inf)
       h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
     }
 
-  /* If R_386_TLS_IE_32 symbol is now local to the binary,
+  /* If R_386_TLS_{IE_32,IE,GOTIE} symbol is now local to the binary,
      make it a R_386_TLS_LE_32 requiring no TLS entry.  */
   if (h->got.refcount > 0
       && !info->shared
       && h->dynindx == -1
-      && elf_i386_hash_entry(h)->tls_type == GOT_TLS_IE)
+      && (elf_i386_hash_entry(h)->tls_type & GOT_TLS_IE))
     h->got.offset = (bfd_vma) -1;
   else if (h->got.refcount > 0)
     {
@@ -1579,13 +1637,18 @@ allocate_dynrelocs (h, inf)
       h->got.offset = s->_raw_size;
       s->_raw_size += 4;
       /* R_386_TLS_GD needs 2 consecutive GOT slots.  */
-      if (tls_type == GOT_TLS_GD)
+      if (tls_type == GOT_TLS_GD || tls_type == GOT_TLS_IE_BOTH)
        s->_raw_size += 4;
       dyn = htab->elf.dynamic_sections_created;
       /* R_386_TLS_IE_32 needs one dynamic relocation,
-        R_386_TLS_GD needs one if local symbol and two if global.  */
-      if ((tls_type == GOT_TLS_GD && h->dynindx == -1)
-         || tls_type == GOT_TLS_IE)
+        R_386_TLS_IE resp. R_386_TLS_GOTIE needs one dynamic relocation,
+        (but if both R_386_TLS_IE_32 and R_386_TLS_IE is present, we
+        need two), R_386_TLS_GD needs one if local symbol and two if
+        global.  */
+      if (tls_type == GOT_TLS_IE_BOTH)
+       htab->srelgot->_raw_size += 2 * sizeof (Elf32_External_Rel);
+      else if ((tls_type == GOT_TLS_GD && h->dynindx == -1)
+              || (tls_type & GOT_TLS_IE))
        htab->srelgot->_raw_size += sizeof (Elf32_External_Rel);
       else if (tls_type == GOT_TLS_GD)
        htab->srelgot->_raw_size += 2 * sizeof (Elf32_External_Rel);
@@ -1786,12 +1849,18 @@ elf_i386_size_dynamic_sections (output_bfd, info)
            {
              *local_got = s->_raw_size;
              s->_raw_size += 4;
-             if (*local_tls_type == GOT_TLS_GD)
+             if (*local_tls_type == GOT_TLS_GD
+                 || *local_tls_type == GOT_TLS_IE_BOTH)
                s->_raw_size += 4;
              if (info->shared
                  || *local_tls_type == GOT_TLS_GD
-                 || *local_tls_type == GOT_TLS_IE)
-               srel->_raw_size += sizeof (Elf32_External_Rel);
+                 || (*local_tls_type & GOT_TLS_IE))
+               {
+                 if (*local_tls_type == GOT_TLS_IE_BOTH)
+                   srel->_raw_size += 2 * sizeof (Elf32_External_Rel);
+                 else
+                   srel->_raw_size += sizeof (Elf32_External_Rel);
+               }
            }
          else
            *local_got = (bfd_vma) -1;
@@ -1962,7 +2031,9 @@ static bfd_vma
 dtpoff_base (info)
      struct bfd_link_info *info;
 {
-  BFD_ASSERT (elf_hash_table (info)->tls_segment != NULL);
+  /* If tls_segment is NULL, we should have signalled an error already.  */
+  if (elf_hash_table (info)->tls_segment == NULL)
+    return 0;
   return elf_hash_table (info)->tls_segment->start;
 }
 
@@ -1977,7 +2048,9 @@ tpoff (info, address)
   struct elf_link_tls_segment *tls_segment
     = elf_hash_table (info)->tls_segment;
 
-  BFD_ASSERT (tls_segment != NULL);
+  /* If tls_segment is NULL, we should have signalled an error already.  */
+  if (tls_segment == NULL)
+    return 0;
   return (align_power (tls_segment->size, tls_segment->align)
          + tls_segment->start - address);
 }
@@ -2418,8 +2491,29 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
            }
          break;
 
+       case R_386_TLS_IE:
+         if (info->shared)
+           {
+             Elf_Internal_Rel outrel;
+             asection *sreloc;
+             Elf32_External_Rel *loc;
+
+             outrel.r_offset = rel->r_offset
+                               + input_section->output_section->vma
+                               + input_section->output_offset;
+             outrel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+             sreloc = elf_section_data (input_section)->sreloc;
+             if (sreloc == NULL)
+               abort ();
+             loc = (Elf32_External_Rel *) sreloc->contents;
+             loc += sreloc->reloc_count++;
+             bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc);
+           }
+         /* Fall through */
+
        case R_386_TLS_GD:
        case R_386_TLS_IE_32:
+       case R_386_TLS_GOTIE:
          r_type = elf_i386_tls_transition (info, r_type, h == NULL);
          tls_type = GOT_UNKNOWN;
          if (h == NULL && local_got_offsets)
@@ -2427,11 +2521,18 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
          else if (h != NULL)
            {
              tls_type = elf_i386_hash_entry(h)->tls_type;
-             if (!info->shared && h->dynindx == -1 && tls_type == GOT_TLS_IE)
+             if (!info->shared && h->dynindx == -1 && (tls_type & GOT_TLS_IE))
                r_type = R_386_TLS_LE_32;
            }
-         if (r_type == R_386_TLS_GD && tls_type == GOT_TLS_IE)
-           r_type = R_386_TLS_IE_32;
+         if (tls_type == GOT_TLS_IE)
+           tls_type = GOT_TLS_IE_NEG;
+         if (r_type == R_386_TLS_GD)
+           {
+             if (tls_type == GOT_TLS_IE_POS)
+               r_type = R_386_TLS_GOTIE;
+             else if (tls_type & GOT_TLS_IE)
+               r_type = R_386_TLS_IE_32;
+           }
 
          if (r_type == R_386_TLS_LE_32)
            {
@@ -2499,27 +2600,77 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
                  rel++;
                  continue;
                }
-             else
+             else if (ELF32_R_TYPE (rel->r_info) == R_386_TLS_IE)
                {
                  unsigned int val, type;
 
                  /* IE->LE transition:
-                    Originally it can be either:
+                    Originally it can be one of:
+                    movl foo, %eax
+                    movl foo, %reg
+                    addl foo, %reg
+                    We change it into:
+                    movl $foo, %eax
+                    movl $foo, %reg
+                    addl $foo, %reg.  */
+                 BFD_ASSERT (rel->r_offset >= 1);
+                 val = bfd_get_8 (input_bfd, contents + rel->r_offset - 1);
+                 BFD_ASSERT (rel->r_offset + 4 <= input_section->_raw_size);
+                 if (val != 0xa1)
+                   {
+                     BFD_ASSERT (rel->r_offset >= 2);
+                     type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2);
+                   }
+                 if (val == 0xa1)
+                   {
+                     /* movl foo, %eax.  */
+                     bfd_put_8 (output_bfd, 0xb8, contents + rel->r_offset - 2);
+                   }
+                 else if (type == 0x8b)
+                   {
+                     /* movl */
+                     BFD_ASSERT ((val & 0xc7) == 0x05);
+                     bfd_put_8 (output_bfd, 0xc7,
+                                contents + rel->r_offset - 2);
+                     bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
+                                contents + rel->r_offset - 1);
+                   }
+                 else if (type == 0x03)
+                   {
+                     /* addl */
+                     BFD_ASSERT ((val & 0xc7) == 0x05);
+                     bfd_put_8 (output_bfd, 0x81,
+                                contents + rel->r_offset - 2);
+                     bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
+                                contents + rel->r_offset - 1);
+                   }
+                 else
+                   BFD_FAIL ();
+                 bfd_put_32 (output_bfd, -tpoff (info, relocation),
+                             contents + rel->r_offset);
+                 continue;
+               }
+             else
+               {
+                 unsigned int val, type;
+
+                 /* {IE_32,GOTIE}->LE transition:
+                    Originally it can be one of:
                     subl foo(%reg1), %reg2
-                    or
                     movl foo(%reg1), %reg2
+                    addl foo(%reg1), %reg2
                     We change it into:
                     subl $foo, %reg2
-                    or
-                    movl $foo, %reg2 (6 byte form)  */
+                    movl $foo, %reg2 (6 byte form)
+                    addl $foo, %reg2.  */
                  BFD_ASSERT (rel->r_offset >= 2);
                  type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2);
                  val = bfd_get_8 (input_bfd, contents + rel->r_offset - 1);
                  BFD_ASSERT (rel->r_offset + 4 <= input_section->_raw_size);
+                 BFD_ASSERT ((val & 0xc0) == 0x80 && (val & 7) != 4);
                  if (type == 0x8b)
                    {
                      /* movl */
-                     BFD_ASSERT ((val & 0xc0) == 0x80 && (val & 7) != 4);
                      bfd_put_8 (output_bfd, 0xc7,
                                 contents + rel->r_offset - 2);
                      bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
@@ -2528,16 +2679,27 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
                  else if (type == 0x2b)
                    {
                      /* subl */
-                     BFD_ASSERT ((val & 0xc0) == 0x80 && (val & 7) != 4);
                      bfd_put_8 (output_bfd, 0x81,
                                 contents + rel->r_offset - 2);
                      bfd_put_8 (output_bfd, 0xe8 | ((val >> 3) & 7),
                                 contents + rel->r_offset - 1);
                    }
+                 else if (type == 0x03)
+                   {
+                     /* addl */
+                     bfd_put_8 (output_bfd, 0x81,
+                                contents + rel->r_offset - 2);
+                     bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
+                                contents + rel->r_offset - 1);
+                   }
                  else
                    BFD_FAIL ();
-                 bfd_put_32 (output_bfd, tpoff (info, relocation),
-                             contents + rel->r_offset);
+                 if (ELF32_R_TYPE (rel->r_info) == R_386_TLS_GOTIE)
+                   bfd_put_32 (output_bfd, -tpoff (info, relocation),
+                               contents + rel->r_offset);
+                 else
+                   bfd_put_32 (output_bfd, tpoff (info, relocation),
+                               contents + rel->r_offset);
                  continue;
                }
            }
@@ -2569,13 +2731,22 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
              outrel.r_offset = (htab->sgot->output_section->vma
                                 + htab->sgot->output_offset + off);
 
-             bfd_put_32 (output_bfd, 0,
-                         htab->sgot->contents + off);
              indx = h && h->dynindx != -1 ? h->dynindx : 0;
              if (r_type == R_386_TLS_GD)
                dr_type = R_386_TLS_DTPMOD32;
+             else if (tls_type == GOT_TLS_IE_POS)
+               dr_type = R_386_TLS_TPOFF;
              else
                dr_type = R_386_TLS_TPOFF32;
+             if (dr_type == R_386_TLS_TPOFF && indx == 0)
+               bfd_put_32 (output_bfd, relocation - dtpoff_base (info),
+                           htab->sgot->contents + off);
+             else if (dr_type == R_386_TLS_TPOFF32 && indx == 0)
+               bfd_put_32 (output_bfd, dtpoff_base (info) - relocation,
+                           htab->sgot->contents + off);
+             else
+               bfd_put_32 (output_bfd, 0,
+                           htab->sgot->contents + off);
              outrel.r_info = ELF32_R_INFO (indx, dr_type);
              loc = (Elf32_External_Rel *) htab->srelgot->contents;
              loc += htab->srelgot->reloc_count++;
@@ -2603,6 +2774,17 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
                                                loc);
                    }
                }
+             else if (tls_type == GOT_TLS_IE_BOTH)
+               {
+                 bfd_put_32 (output_bfd,
+                             indx == 0 ? relocation - dtpoff_base (info) : 0,
+                             htab->sgot->contents + off + 4);
+                 outrel.r_info = ELF32_R_INFO (indx, R_386_TLS_TPOFF);
+                 outrel.r_offset += 4;
+                 htab->srelgot->reloc_count++;
+                 loc++;
+                 bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc);
+               }
 
              if (h != NULL)
                h->got.offset |= 1;
@@ -2615,6 +2797,11 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
          if (r_type == ELF32_R_TYPE (rel->r_info))
            {
              relocation = htab->sgot->output_offset + off;
+             if ((r_type == R_386_TLS_IE || r_type == R_386_TLS_GOTIE)
+                 && tls_type == GOT_TLS_IE_BOTH)
+               relocation += 4;
+             if (r_type == R_386_TLS_IE)
+               relocation += htab->sgot->output_section->vma;
              unresolved_reloc = false;
            }
          else
@@ -2660,6 +2847,17 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
              memcpy (contents + roff,
                      "\x65\xa1\0\0\0\0\x2b\x80\0\0\0", 12);
              contents[roff + 7] = 0x80 | (val & 7);
+             /* If foo is used only with foo@gotntpoff(%reg) and
+                foo@indntpoff, but not with foo@gottpoff(%reg), change
+                subl $foo@gottpoff(%reg), %eax
+                into:
+                addl $foo@gotntpoff(%reg), %eax.  */
+             if (r_type == R_386_TLS_GOTIE)
+               {
+                 contents[roff + 6] = 0x03;
+                 if (tls_type == GOT_TLS_IE_BOTH)
+                   off += 4;
+               }
              bfd_put_32 (output_bfd, htab->sgot->output_offset + off,
                          contents + roff + 8);
              /* Skip R_386_PLT32.  */
@@ -2735,11 +2933,42 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
          break;
 
        case R_386_TLS_LE_32:
-         relocation = tpoff (info, relocation);
-         break;
-
        case R_386_TLS_LE:
-         relocation = -tpoff (info, relocation);
+         if (info->shared)
+           {
+             Elf_Internal_Rel outrel;
+             asection *sreloc;
+             Elf32_External_Rel *loc;
+             int indx;
+
+             outrel.r_offset = rel->r_offset
+                               + input_section->output_section->vma
+                               + input_section->output_offset;
+             if (h != NULL && h->dynindx != -1)
+               indx = h->dynindx;
+             else
+               indx = 0;
+             if (r_type == R_386_TLS_LE_32)
+               outrel.r_info = ELF32_R_INFO (indx, R_386_TLS_TPOFF32);
+             else
+               outrel.r_info = ELF32_R_INFO (indx, R_386_TLS_TPOFF);
+             sreloc = elf_section_data (input_section)->sreloc;
+             if (sreloc == NULL)
+               abort ();
+             loc = (Elf32_External_Rel *) sreloc->contents;
+             loc += sreloc->reloc_count++;
+             bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc);
+             if (indx)
+               continue;
+             else if (r_type == R_386_TLS_LE_32)
+               relocation = dtpoff_base (info) - relocation;
+             else
+               relocation -= dtpoff_base (info);
+           }
+         else if (r_type == R_386_TLS_LE_32)
+           relocation = tpoff (info, relocation);
+         else
+           relocation = -tpoff (info, relocation);
          break;
 
        default:
@@ -2752,12 +2981,15 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
       if (unresolved_reloc
          && !((input_section->flags & SEC_DEBUGGING) != 0
               && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
-       (*_bfd_error_handler)
-         (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"),
-          bfd_archive_filename (input_bfd),
-          bfd_get_section_name (input_bfd, input_section),
-          (long) rel->r_offset,
-          h->root.root.string);
+       {
+         (*_bfd_error_handler)
+           (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"),
+            bfd_archive_filename (input_bfd),
+            bfd_get_section_name (input_bfd, input_section),
+            (long) rel->r_offset,
+            h->root.root.string);
+         return false;
+       }
 
       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
                                    contents, rel->r_offset,
@@ -2896,7 +3128,7 @@ elf_i386_finish_dynamic_symbol (output_bfd, info, h, sym)
 
   if (h->got.offset != (bfd_vma) -1
       && elf_i386_hash_entry(h)->tls_type != GOT_TLS_GD
-      && elf_i386_hash_entry(h)->tls_type != GOT_TLS_IE)
+      && (elf_i386_hash_entry(h)->tls_type & GOT_TLS_IE) == 0)
     {
       Elf_Internal_Rel rel;
       Elf32_External_Rel *loc;
@@ -3111,11 +3343,13 @@ elf_i386_finish_dynamic_sections (output_bfd, info)
   return true;
 }
 
+#ifndef ELF_ARCH
 #define TARGET_LITTLE_SYM              bfd_elf32_i386_vec
 #define TARGET_LITTLE_NAME             "elf32-i386"
 #define ELF_ARCH                       bfd_arch_i386
 #define ELF_MACHINE_CODE               EM_386
 #define ELF_MAXPAGESIZE                        0x1000
+#endif /* ELF_ARCH */
 
 #define elf_backend_can_gc_sections    1
 #define elf_backend_can_refcount       1
index 1745ef575dce7eed2a65a66988c76ebab4198530..9abdf61a77cc76af4985623502c48ca58e87441e 100644 (file)
@@ -2743,11 +2743,11 @@ ppc_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
       else
        {
          BFD_ASSERT ((h->got.offset & 1) == 0);
-         bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset);
          rela.r_info = ELF32_R_INFO (h->dynindx, R_PPC_GLOB_DAT);
          rela.r_addend = 0;
        }
 
+      bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset);
       bfd_elf32_swap_reloca_out (output_bfd, &rela,
                                 ((Elf32_External_Rela *) srela->contents
                                  + srela->reloc_count));
@@ -3287,13 +3287,19 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                                          + sreloc->reloc_count));
              ++sreloc->reloc_count;
 
-             /* This reloc will be computed at runtime, so there's no
-                 need to do anything now, unless this is a RELATIVE
-                 reloc in an unallocated section.  */
-             if (skip != -1
-                 || (input_section->flags & SEC_ALLOC) != 0
-                 || ELF32_R_TYPE (outrel.r_info) != R_PPC_RELATIVE)
+             if (skip == -1)
                continue;
+
+             /* This reloc will be computed at runtime.  We clear the memory
+                so that it contains predictable value.  */
+             if (! skip
+                 && ((input_section->flags & SEC_ALLOC) != 0
+                     || ELF32_R_TYPE (outrel.r_info) != R_PPC_RELATIVE))
+               {
+                 relocation = howto->pc_relative ? outrel.r_offset : 0;
+                 addend = 0;
+                 break;
+               }
            }
 
          /* Arithmetic adjust relocations that aren't going into a
@@ -3390,7 +3396,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                off &= ~1;
              else
                {
-                 bfd_put_32 (output_bfd, relocation, sgot->contents + off);
 
                  if (info->shared)
                    {
@@ -3412,8 +3417,10 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                                                   srelgot->contents)
                                                  + srelgot->reloc_count));
                      ++srelgot->reloc_count;
+                     relocation = 0;
                    }
 
+                 bfd_put_32 (output_bfd, relocation, sgot->contents + off);
                  local_got_offsets[r_symndx] |= 1;
                }
 
index 522b81680f0e4e605144d378046e2b7219e4a336..870cc862275917d47ed0cb45931f9314020cec9c 100644 (file)
@@ -56,6 +56,9 @@ static boolean sh_elf_relocate_section
 static bfd_byte *sh_elf_get_relocated_section_contents
   PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *,
           bfd_byte *, boolean, asymbol **));
+static void sh_elf_copy_indirect_symbol
+  PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
+          struct elf_link_hash_entry *));
 static boolean sh_elf_check_relocs
   PARAMS ((bfd *, struct bfd_link_info *, asection *,
           const Elf_Internal_Rela *));
@@ -75,6 +78,8 @@ static boolean sh_elf_finish_dynamic_sections
 static bfd_reloc_status_type sh_elf_reloc_loop
   PARAMS ((int, bfd *, asection *, bfd_byte *, bfd_vma, asection *,
           bfd_vma, bfd_vma));
+static boolean create_got_section
+  PARAMS((bfd *, struct bfd_link_info *));
 static boolean sh_elf_create_dynamic_sections
   PARAMS ((bfd *, struct bfd_link_info *));
 static asection * sh_elf_gc_mark_hook
@@ -83,6 +88,10 @@ static asection * sh_elf_gc_mark_hook
 static boolean sh_elf_gc_sweep_hook
   PARAMS ((bfd *, struct bfd_link_info *, asection *,
           const Elf_Internal_Rela *));
+static boolean allocate_dynrelocs
+  PARAMS ((struct elf_link_hash_entry *, PTR));
+static boolean readonly_dynrelocs
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 static enum elf_reloc_type_class sh_elf_reloc_type_class
   PARAMS ((const Elf_Internal_Rela *));
 #ifdef INCLUDE_SHMEDIA
@@ -430,33 +439,33 @@ static reloc_howto_type sh_elf_howto_table[] =
 
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_SH_GNU_VTINHERIT, /* type */
-         0,                     /* rightshift */
-         2,                     /* size (0 = byte, 1 = short, 2 = long) */
-         0,                     /* bitsize */
-         false,                 /* pc_relative */
-         0,                     /* bitpos */
-         complain_overflow_dont, /* complain_on_overflow */
-         NULL,                  /* special_function */
-         "R_SH_GNU_VTINHERIT", /* name */
-         false,                 /* partial_inplace */
-         0,                     /* src_mask */
-         0,                     /* dst_mask */
-         false),                /* pcrel_offset */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        0,                     /* bitsize */
+        false,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        NULL,                  /* special_function */
+        "R_SH_GNU_VTINHERIT", /* name */
+        false,                 /* partial_inplace */
+        0,                     /* src_mask */
+        0,                     /* dst_mask */
+        false),                /* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_SH_GNU_VTENTRY,     /* type */
-         0,                     /* rightshift */
-         2,                     /* size (0 = byte, 1 = short, 2 = long) */
-         0,                     /* bitsize */
-         false,                 /* pc_relative */
-         0,                     /* bitpos */
-         complain_overflow_dont, /* complain_on_overflow */
-         _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
-         "R_SH_GNU_VTENTRY",   /* name */
-         false,                 /* partial_inplace */
-         0,                     /* src_mask */
-         0,                     /* dst_mask */
-         false),                /* pcrel_offset */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        0,                     /* bitsize */
+        false,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
+        "R_SH_GNU_VTENTRY",   /* name */
+        false,                 /* partial_inplace */
+        0,                     /* src_mask */
+        0,                     /* dst_mask */
+        false),                /* pcrel_offset */
 
   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
   HOWTO (R_SH_LOOP_START,      /* type */
@@ -510,7 +519,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xfc00,                /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in SHARI, SHLLI et al.  */
   HOWTO (R_SH_DIR6U,           /* type */
@@ -525,7 +534,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xfc00,                /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in BxxI, LDHI.L et al.  */
   HOWTO (R_SH_DIR6S,           /* type */
@@ -540,7 +549,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xfc00,                /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in ADDI, ANDI et al.  */
   HOWTO (R_SH_DIR10S,          /* type */
@@ -555,9 +564,9 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
-  /* Used in LD.UW, ST.W et al.  */
+  /* Used in LD.UW, ST.W et al.         */
   HOWTO (R_SH_DIR10SW, /* type */
         1,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
@@ -570,9 +579,9 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
-  /* Used in LD.L, FLD.S et al.  */
+  /* Used in LD.L, FLD.S et al.         */
   HOWTO (R_SH_DIR10SL, /* type */
         2,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
@@ -585,7 +594,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in FLD.D, FST.P et al.  */
   HOWTO (R_SH_DIR10SQ, /* type */
@@ -600,7 +609,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
 #else
   EMPTY_HOWTO (45),
@@ -857,11 +866,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         10,                    /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_GOT_LOW16",      /* name */
+        "R_SH_GOT_LOW16",      /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
   HOWTO (R_SH_GOT_MEDLOW16,    /* type */
@@ -876,7 +885,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
   HOWTO (R_SH_GOT_MEDHI16,     /* type */
@@ -891,7 +900,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
   HOWTO (R_SH_GOT_HI16,                /* type */
@@ -906,7 +915,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (x & 65536).  */
   HOWTO (R_SH_GOTPLT_LOW16,    /* type */
@@ -917,11 +926,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         10,                    /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_GOTPLT_LOW16",   /* name */
+        "R_SH_GOTPLT_LOW16",   /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
   HOWTO (R_SH_GOTPLT_MEDLOW16, /* type */
@@ -936,7 +945,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
   HOWTO (R_SH_GOTPLT_MEDHI16,  /* type */
@@ -951,7 +960,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
   HOWTO (R_SH_GOTPLT_HI16,     /* type */
@@ -966,7 +975,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (x & 65536).  */
   HOWTO (R_SH_PLT_LOW16,       /* type */
@@ -977,11 +986,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         10,                    /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_PLT_LOW16",      /* name */
+        "R_SH_PLT_LOW16",      /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
   HOWTO (R_SH_PLT_MEDLOW16,    /* type */
@@ -996,7 +1005,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
   HOWTO (R_SH_PLT_MEDHI16,     /* type */
@@ -1011,7 +1020,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
   HOWTO (R_SH_PLT_HI16,                /* type */
@@ -1026,7 +1035,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI (x & 65536).  */
   HOWTO (R_SH_GOTOFF_LOW16,    /* type */
@@ -1037,11 +1046,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         10,                    /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_GOTOFF_LOW16",   /* name */
+        "R_SH_GOTOFF_LOW16",   /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
   HOWTO (R_SH_GOTOFF_MEDLOW16, /* type */
@@ -1056,7 +1065,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
   HOWTO (R_SH_GOTOFF_MEDHI16,  /* type */
@@ -1071,7 +1080,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
   HOWTO (R_SH_GOTOFF_HI16,     /* type */
@@ -1086,7 +1095,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (x & 65536).  */
   HOWTO (R_SH_GOTPC_LOW16,     /* type */
@@ -1097,11 +1106,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         10,                    /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_GOTPC_LOW16",    /* name */
+        "R_SH_GOTPC_LOW16",    /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
   HOWTO (R_SH_GOTPC_MEDLOW16,  /* type */
@@ -1116,7 +1125,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
   HOWTO (R_SH_GOTPC_MEDHI16,   /* type */
@@ -1131,7 +1140,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
   HOWTO (R_SH_GOTPC_HI16,      /* type */
@@ -1146,9 +1155,9 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        true),                 /* pcrel_offset */
+        true),                 /* pcrel_offset */
 
-  /* Used in LD.L, FLD.S et al.  */
+  /* Used in LD.L, FLD.S et al.         */
   HOWTO (R_SH_GOT10BY4,                /* type */
         2,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
@@ -1161,9 +1170,9 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
-  /* Used in LD.L, FLD.S et al.  */
+  /* Used in LD.L, FLD.S et al.         */
   HOWTO (R_SH_GOTPLT10BY4,     /* type */
         2,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
@@ -1176,7 +1185,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in FLD.D, FST.P et al.  */
   HOWTO (R_SH_GOT10BY8,                /* type */
@@ -1191,7 +1200,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in FLD.D, FST.P et al.  */
   HOWTO (R_SH_GOTPLT10BY8,     /* type */
@@ -1206,7 +1215,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0xffc00,               /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_SH_COPY64,          /* type */
         0,                     /* rightshift */
@@ -1216,11 +1225,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_COPY64",         /* name */
+        "R_SH_COPY64",         /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         ((bfd_vma) 0) - 1,     /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_SH_GLOB_DAT64,      /* type */
         0,                     /* rightshift */
@@ -1230,11 +1239,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_GLOB_DAT64",     /* name */
+        "R_SH_GLOB_DAT64",     /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         ((bfd_vma) 0) - 1,     /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_SH_JMP_SLOT64,      /* type */
         0,                     /* rightshift */
@@ -1244,11 +1253,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_JMP_SLOT64",     /* name */
+        "R_SH_JMP_SLOT64",     /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         ((bfd_vma) 0) - 1,     /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   HOWTO (R_SH_RELATIVE64,      /* type */
         0,                     /* rightshift */
@@ -1258,11 +1267,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_RELATIVE64",     /* name */
+        "R_SH_RELATIVE64",     /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         ((bfd_vma) 0) - 1,     /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   EMPTY_HOWTO (197),
   EMPTY_HOWTO (198),
@@ -1363,7 +1372,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in SHORI.  */
   HOWTO (R_SH_IMMU16,          /* type */
@@ -1378,7 +1387,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (x & 65536).  */
   HOWTO (R_SH_IMM_LOW16,       /* type */
@@ -1389,11 +1398,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         10,                    /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_IMM_LOW16",      /* name */
+        "R_SH_IMM_LOW16",      /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI ((x - $) & 65536).  */
   HOWTO (R_SH_IMM_LOW16_PCREL, /* type */
@@ -1423,7 +1432,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (((x - $) >> 16) & 65536).  */
   HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
@@ -1453,7 +1462,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (((x - $) >> 32) & 65536).  */
   HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
@@ -1483,7 +1492,7 @@ static reloc_howto_type sh_elf_howto_table[] =
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         0x3fffc00,             /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* Used in MOVI and SHORI (((x - $) >> 48) & 65536).  */
   HOWTO (R_SH_IMM_HI16_PCREL,  /* type */
@@ -1509,11 +1518,11 @@ static reloc_howto_type sh_elf_howto_table[] =
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
         bfd_elf_generic_reloc, /* special_function */
-        "R_SH_64",             /* name */
+        "R_SH_64",             /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
         ((bfd_vma) 0) - 1,     /* dst_mask */
-        false),                /* pcrel_offset */
+        false),                /* pcrel_offset */
 
   /* For the .uaquad pseudo, (x - $).  */
   HOWTO (R_SH_64_PCREL,                /* type */
@@ -1955,9 +1964,9 @@ sh_elf_relax_section (abfd, sec, link_info, again)
        }
 
       /* The r_addend field of the R_SH_USES reloc will point us to
-         the register load.  The 4 is because the r_addend field is
-         computed as though it were a jump offset, which are based
-         from 4 bytes after the jump instruction.  */
+        the register load.  The 4 is because the r_addend field is
+        computed as though it were a jump offset, which are based
+        from 4 bytes after the jump instruction.  */
       laddr = irel->r_offset + 4 + irel->r_addend;
       if (laddr >= sec->_raw_size)
        {
@@ -1969,7 +1978,7 @@ sh_elf_relax_section (abfd, sec, link_info, again)
       insn = bfd_get_16 (abfd, contents + laddr);
 
       /* If the instruction is not mov.l NN,rN, we don't know what to
-         do.  */
+        do.  */
       if ((insn & 0xf000) != 0xd000)
        {
          ((*_bfd_error_handler)
@@ -1996,8 +2005,8 @@ sh_elf_relax_section (abfd, sec, link_info, again)
        }
 
       /* Get the reloc for the address from which the register is
-         being loaded.  This reloc will tell us which function is
-         actually being called.  */
+        being loaded.  This reloc will tell us which function is
+        actually being called.  */
       for (irelfn = internal_relocs; irelfn < irelend; irelfn++)
        if (irelfn->r_offset == paddr
            && ELF32_R_TYPE (irelfn->r_info) == (int) R_SH_DIR32)
@@ -2054,8 +2063,8 @@ sh_elf_relax_section (abfd, sec, link_info, again)
              && h->root.type != bfd_link_hash_defweak)
            {
              /* This appears to be a reference to an undefined
-                 symbol.  Just ignore it--it will be caught by the
-                 regular reloc processing.  */
+                symbol.  Just ignore it--it will be caught by the
+                regular reloc processing.  */
              continue;
            }
 
@@ -2095,13 +2104,13 @@ sh_elf_relax_section (abfd, sec, link_info, again)
       /* Replace the jsr with a bsr.  */
 
       /* Change the R_SH_USES reloc into an R_SH_IND12W reloc, and
-         replace the jsr with a bsr.  */
+        replace the jsr with a bsr.  */
       irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irelfn->r_info), R_SH_IND12W);
       if (ELF32_R_SYM (irelfn->r_info) < symtab_hdr->sh_info)
        {
          /* If this needs to be changed because of future relaxing,
-             it will be handled here like other internal IND12W
-             relocs.  */
+            it will be handled here like other internal IND12W
+            relocs.  */
          bfd_put_16 (abfd,
                      (bfd_vma) 0xb000 | ((foff >> 1) & 0xfff),
                      contents + irel->r_offset);
@@ -2109,13 +2118,13 @@ sh_elf_relax_section (abfd, sec, link_info, again)
       else
        {
          /* We can't fully resolve this yet, because the external
-             symbol value may be changed by future relaxing.  We let
-             the final link phase handle it.  */
+            symbol value may be changed by future relaxing.  We let
+            the final link phase handle it.  */
          bfd_put_16 (abfd, (bfd_vma) 0xb000, contents + irel->r_offset);
        }
 
       /* See if there is another R_SH_USES reloc referring to the same
-         register load.  */
+        register load.  */
       for (irelscan = internal_relocs; irelscan < irelend; irelscan++)
        if (ELF32_R_TYPE (irelscan->r_info) == (int) R_SH_USES
            && laddr == irelscan->r_offset + 4 + irelscan->r_addend)
@@ -2130,8 +2139,8 @@ sh_elf_relax_section (abfd, sec, link_info, again)
        }
 
       /* Look for a R_SH_COUNT reloc on the location where the
-         function address is stored.  Do this before deleting any
-         bytes, to avoid confusion about the address.  */
+        function address is stored.  Do this before deleting any
+        bytes, to avoid confusion about the address.  */
       for (irelcount = internal_relocs; irelcount < irelend; irelcount++)
        if (irelcount->r_offset == paddr
            && ELF32_R_TYPE (irelcount->r_info) == (int) R_SH_COUNT)
@@ -2142,8 +2151,8 @@ sh_elf_relax_section (abfd, sec, link_info, again)
        goto error_return;
 
       /* That will change things, so, just in case it permits some
-         other function call to come within range, we should relax
-         again.  Note that this is not required, and it may be slow.  */
+        other function call to come within range, we should relax
+        again.  Note that this is not required, and it may be slow.  */
       *again = true;
 
       /* Now check whether we got a COUNT reloc.  */
@@ -2156,7 +2165,7 @@ sh_elf_relax_section (abfd, sec, link_info, again)
        }
 
       /* The number of uses is stored in the r_addend field.  We've
-         just deleted one.  */
+        just deleted one.  */
       if (irelcount->r_addend == 0)
        {
          ((*_bfd_error_handler) (_("%s: 0x%lx: warning: bad count"),
@@ -2168,8 +2177,8 @@ sh_elf_relax_section (abfd, sec, link_info, again)
       --irelcount->r_addend;
 
       /* If there are no more uses, we can delete the address.  Reload
-         the address from irelfn, in case it was changed by the
-         previous call to sh_elf_relax_delete_bytes.  */
+        the address from irelfn, in case it was changed by the
+        previous call to sh_elf_relax_delete_bytes.  */
       if (irelcount->r_addend == 0)
        {
          if (! sh_elf_relax_delete_bytes (abfd, sec, irelfn->r_offset, 4))
@@ -2355,7 +2364,7 @@ sh_elf_relax_delete_bytes (abfd, sec, addr, count)
                                     (int) R_SH_NONE);
 
       /* If this is a PC relative reloc, see if the range it covers
-         includes the bytes we have deleted.  */
+        includes the bytes we have deleted.  */
       switch ((enum elf_sh_reloc_type) ELF32_R_TYPE (irel->r_info))
        {
        default:
@@ -2378,9 +2387,9 @@ sh_elf_relax_delete_bytes (abfd, sec, addr, count)
 
        case R_SH_DIR32:
          /* If this reloc is against a symbol defined in this
-             section, and the symbol will not be adjusted below, we
-             must check the addend to see it will put the value in
-             range to be adjusted, and hence must be changed.  */
+            section, and the symbol will not be adjusted below, we
+            must check the addend to see it will put the value in
+            range to be adjusted, and hence must be changed.  */
          if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
            {
              isym = isymbuf + ELF32_R_SYM (irel->r_info);
@@ -2572,8 +2581,8 @@ sh_elf_relax_delete_bytes (abfd, sec, addr, count)
        continue;
 
       /* We always cache the relocs.  Perhaps, if info->keep_memory is
-         false, we should free them, if we are permitted to, when we
-         leave sh_coff_relax_section.  */
+        false, we should free them, if we are permitted to, when we
+        leave sh_coff_relax_section.  */
       internal_relocs = (_bfd_elf32_link_read_relocs
                         (abfd, o, (PTR) NULL, (Elf_Internal_Rela *) NULL,
                          true));
@@ -2597,9 +2606,9 @@ sh_elf_relax_delete_bytes (abfd, sec, addr, count)
                  else
                    {
                      /* We always cache the section contents.
-                         Perhaps, if info->keep_memory is false, we
-                         should free them, if we are permitted to,
-                         when we leave sh_coff_relax_section.  */
+                        Perhaps, if info->keep_memory is false, we
+                        should free them, if we are permitted to,
+                        when we leave sh_coff_relax_section.  */
                      ocontents = (bfd_byte *) bfd_malloc (o->_raw_size);
                      if (ocontents == NULL)
                        return false;
@@ -2655,9 +2664,9 @@ sh_elf_relax_delete_bytes (abfd, sec, addr, count)
                  else
                    {
                      /* We always cache the section contents.
-                         Perhaps, if info->keep_memory is false, we
-                         should free them, if we are permitted to,
-                         when we leave sh_coff_relax_section.  */
+                        Perhaps, if info->keep_memory is false, we
+                        should free them, if we are permitted to,
+                        when we leave sh_coff_relax_section.  */
                      ocontents = (bfd_byte *) bfd_malloc (o->_raw_size);
                      if (ocontents == NULL)
                        return false;
@@ -2829,8 +2838,8 @@ sh_elf_swap_insns (abfd, sec, relocs, contents, addr)
       int add;
 
       /* There are a few special types of relocs that we don't want to
-         adjust.  These relocs do not apply to the instruction itself,
-         but are only associated with the address.  */
+        adjust.  These relocs do not apply to the instruction itself,
+        but are only associated with the address.  */
       type = (enum elf_sh_reloc_type) ELF32_R_TYPE (irel->r_info);
       if (type == R_SH_ALIGN
          || type == R_SH_CODE
@@ -2839,11 +2848,11 @@ sh_elf_swap_insns (abfd, sec, relocs, contents, addr)
        continue;
 
       /* If an R_SH_USES reloc points to one of the addresses being
-         swapped, we must adjust it.  It would be incorrect to do this
-         for a jump, though, since we want to execute both
-         instructions after the jump.  (We have avoided swapping
-         around a label, so the jump will not wind up executing an
-         instruction it shouldn't).  */
+        swapped, we must adjust it.  It would be incorrect to do this
+        for a jump, though, since we want to execute both
+        instructions after the jump.  (We have avoided swapping
+        around a label, so the jump will not wind up executing an
+        instruction it shouldn't).  */
       if (type == R_SH_USES)
        {
          bfd_vma off;
@@ -2902,11 +2911,11 @@ sh_elf_swap_insns (abfd, sec, relocs, contents, addr)
 
            case R_SH_DIR8WPL:
              /* This reloc ignores the least significant 3 bits of
-                 the program counter before adding in the offset.
-                 This means that if ADDR is at an even address, the
-                 swap will not affect the offset.  If ADDR is an at an
-                 odd address, then the instruction will be crossing a
-                 four byte boundary, and must be adjusted.  */
+                the program counter before adding in the offset.
+                This means that if ADDR is at an even address, the
+                swap will not affect the offset.  If ADDR is an at an
+                odd address, then the instruction will be crossing a
+                four byte boundary, and must be adjusted.  */
              if ((addr & 3) != 0)
                {
                  insn = bfd_get_16 (abfd, loc);
@@ -3348,22 +3357,23 @@ static const bfd_byte *elf_sh_pic_plt_entry;
 #endif
 
 /* The sh linker needs to keep track of the number of relocs that it
-   decides to copy in check_relocs for each symbol.  This is so that
-   it can discard PC relative relocs if it doesn't need them when
-   linking with -Bsymbolic.  We store the information in a field
-   extending the regular ELF linker hash table.  */
+   decides to copy as dynamic relocs in check_relocs for each symbol.
+   This is so that it can later discard them if they are found to be
+   unnecessary.  We store the information in a field extending the
+   regular ELF linker hash table.  */
 
-/* This structure keeps track of the number of PC relative relocs we
-   have copied for a given symbol.  */
-
-struct elf_sh_pcrel_relocs_copied
+struct elf_sh_dyn_relocs
 {
-  /* Next section.  */
-  struct elf_sh_pcrel_relocs_copied *next;
-  /* A section in dynobj.  */
-  asection *section;
-  /* Number of relocs copied in this section.  */
+  struct elf_sh_dyn_relocs *next;
+
+  /* The input section of the reloc.  */
+  asection *sec;
+
+  /* Total number of relocs copied for the input section.  */
   bfd_size_type count;
+
+  /* Number of pc-relative relocs copied for the input section.  */
+  bfd_size_type pc_count;
 };
 
 /* sh ELF linker hash entry.  */
@@ -3376,8 +3386,8 @@ struct elf_sh_link_hash_entry
   bfd_vma datalabel_got_offset;
 #endif
 
-  /* Number of PC relative relocs copied for this symbol.  */
-  struct elf_sh_pcrel_relocs_copied *pcrel_relocs_copied;
+  /* Track dynamic relocs copied for this symbol.  */
+  struct elf_sh_dyn_relocs *dyn_relocs;
 };
 
 /* sh ELF linker hash table.  */
@@ -3385,12 +3395,19 @@ struct elf_sh_link_hash_entry
 struct elf_sh_link_hash_table
 {
   struct elf_link_hash_table root;
-};
 
-/* Declare this now that the above structures are defined.  */
+  /* Short-cuts to get to dynamic linker sections.  */
+  asection *sgot;
+  asection *sgotplt;
+  asection *srelgot;
+  asection *splt;
+  asection *srelplt;
+  asection *sdynbss;
+  asection *srelbss;
 
-static boolean sh_elf_discard_copies
-  PARAMS ((struct elf_sh_link_hash_entry *, PTR));
+  /* Small local sym to section mapping cache.  */
+  struct sym_sec_cache sym_sec;
+};
 
 /* Traverse an sh ELF linker hash table.  */
 
@@ -3431,7 +3448,10 @@ sh_elf_link_hash_newfunc (entry, table, string)
                                     table, string));
   if (ret != (struct elf_sh_link_hash_entry *) NULL)
     {
-      ret->pcrel_relocs_copied = NULL;
+      struct elf_sh_link_hash_entry *eh;
+
+      eh = (struct elf_sh_link_hash_entry *) ret;
+      eh->dyn_relocs = NULL;
 #ifdef INCLUDE_SHMEDIA
       ret->datalabel_got_offset = (bfd_vma) -1;
 #endif
@@ -3460,9 +3480,51 @@ sh_elf_link_hash_table_create (abfd)
       return NULL;
     }
 
+  ret->sgot = NULL;
+  ret->sgotplt = NULL;
+  ret->srelgot = NULL;
+  ret->splt = NULL;
+  ret->srelplt = NULL;
+  ret->sdynbss = NULL;
+  ret->srelbss = NULL;
+  ret->sym_sec.abfd = NULL;
+
   return &ret->root.root;
 }
 
+/* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up
+   shortcuts to them in our hash table.  */
+
+static boolean
+create_got_section (dynobj, info)
+     bfd *dynobj;
+     struct bfd_link_info *info;
+{
+  struct elf_sh_link_hash_table *htab;
+
+  if (! _bfd_elf_create_got_section (dynobj, info))
+    return false;
+
+  htab = sh_elf_hash_table (info);
+  htab->sgot = bfd_get_section_by_name (dynobj, ".got");
+  htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
+  if (! htab->sgot || ! htab->sgotplt)
+    abort ();
+
+  htab->srelgot = bfd_make_section (dynobj, ".rela.got");
+  if (htab->srelgot == NULL
+      || ! bfd_set_section_flags (dynobj, htab->srelgot,
+                                 (SEC_ALLOC
+                                  | SEC_LOAD
+                                  | SEC_HAS_CONTENTS
+                                  | SEC_IN_MEMORY
+                                  | SEC_LINKER_CREATED
+                                  | SEC_READONLY))
+      || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
+    return false;
+  return true;
+}
+
 /* Create dynamic sections when linking against a dynamic object.  */
 
 static boolean
@@ -3470,6 +3532,7 @@ sh_elf_create_dynamic_sections (abfd, info)
      bfd *abfd;
      struct bfd_link_info *info;
 {
+  struct elf_sh_link_hash_table *htab;
   flagword flags, pltflags;
   register asection *s;
   struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -3490,6 +3553,8 @@ sh_elf_create_dynamic_sections (abfd, info)
       return false;
     }
 
+  htab = sh_elf_hash_table (info);
+
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
      .rel[a].bss sections.  */
 
@@ -3504,6 +3569,7 @@ sh_elf_create_dynamic_sections (abfd, info)
     pltflags |= SEC_READONLY;
 
   s = bfd_make_section (abfd, ".plt");
+  htab->splt = s;
   if (s == NULL
       || ! bfd_set_section_flags (abfd, s, pltflags)
       || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
@@ -3530,12 +3596,13 @@ sh_elf_create_dynamic_sections (abfd, info)
 
   s = bfd_make_section (abfd,
                        bed->default_use_rela_p ? ".rela.plt" : ".rel.plt");
+  htab->srelplt = s;
   if (s == NULL
       || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
       || ! bfd_set_section_alignment (abfd, s, ptralign))
     return false;
 
-  if (! _bfd_elf_create_got_section (abfd, info))
+  if (! create_got_section (abfd, info))
     return false;
 
   {
@@ -3571,6 +3638,7 @@ sh_elf_create_dynamic_sections (abfd, info)
         initialize them at run time.  The linker script puts the .dynbss
         section into the .bss section of the final image.  */
       s = bfd_make_section (abfd, ".dynbss");
+      htab->sdynbss = s;
       if (s == NULL
          || ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
        return false;
@@ -3591,6 +3659,7 @@ sh_elf_create_dynamic_sections (abfd, info)
          s = bfd_make_section (abfd,
                                (bed->default_use_rela_p
                                 ? ".rela.bss" : ".rel.bss"));
+         htab->srelbss = s;
          if (s == NULL
              || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
              || ! bfd_set_section_alignment (abfd, s, ptralign))
@@ -3612,6 +3681,9 @@ sh_elf_adjust_dynamic_symbol (info, h)
      struct bfd_link_info *info;
      struct elf_link_hash_entry *h;
 {
+  struct elf_sh_link_hash_table *htab;
+  struct elf_sh_link_hash_entry *eh;
+  struct elf_sh_dyn_relocs *p;
   bfd *dynobj;
   asection *s;
   unsigned int power_of_two;
@@ -3635,66 +3707,26 @@ sh_elf_adjust_dynamic_symbol (info, h)
   if (h->type == STT_FUNC
       || (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
     {
-      if (! info->shared
-         && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
-         && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
+      if (h->plt.refcount <= 0
+         || (! info->shared
+             && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
+             && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0
+             && h->root.type != bfd_link_hash_undefweak
+             && h->root.type != bfd_link_hash_undefined))
        {
          /* This case can occur if we saw a PLT reloc in an input
             file, but the symbol was never referred to by a dynamic
             object.  In such a case, we don't actually need to build
             a procedure linkage table, and we can just do a REL32
             reloc instead.  */
-         BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0);
-         return true;
-       }
-
-      /* Make sure this symbol is output as a dynamic symbol.  */
-      if (h->dynindx == -1)
-       {
-         if (! bfd_elf32_link_record_dynamic_symbol (info, h))
-           return false;
+         h->plt.offset = (bfd_vma) -1;
+         h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
        }
 
-      s = bfd_get_section_by_name (dynobj, ".plt");
-      BFD_ASSERT (s != NULL);
-
-      /* If this is the first .plt entry, make room for the special
-        first entry.  */
-      if (s->_raw_size == 0)
-       s->_raw_size += PLT_ENTRY_SIZE;
-
-      /* If this symbol is not defined in a regular file, and we are
-        not generating a shared library, then set the symbol to this
-        location in the .plt.  This is required to make function
-        pointers compare as equal between the normal executable and
-        the shared library.  */
-      if (! info->shared
-         && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
-       {
-         h->root.u.def.section = s;
-         h->root.u.def.value = s->_raw_size;
-       }
-
-      h->plt.offset = s->_raw_size;
-
-      /* Make room for this entry.  */
-      s->_raw_size += elf_sh_sizeof_plt (info);
-
-      /* We also need to make an entry in the .got.plt section, which
-        will be placed in the .got section by the linker script.  */
-
-      s = bfd_get_section_by_name (dynobj, ".got.plt");
-      BFD_ASSERT (s != NULL);
-      s->_raw_size += 4;
-
-      /* We also need to make an entry in the .rela.plt section.  */
-
-      s = bfd_get_section_by_name (dynobj, ".rela.plt");
-      BFD_ASSERT (s != NULL);
-      s->_raw_size += sizeof (Elf32_External_Rela);
-
       return true;
     }
+  else
+    h->plt.offset = (bfd_vma) -1;
 
   /* If this is a weak symbol, and there is a real definition, the
      processor independent code will have arranged for us to see the
@@ -3723,6 +3755,30 @@ sh_elf_adjust_dynamic_symbol (info, h)
   if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0)
     return true;
 
+  /* If -z nocopyreloc was given, we won't generate them either.  */
+  if (info->nocopyreloc)
+    {
+      h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+      return true;
+    }
+
+  eh = (struct elf_sh_link_hash_entry *) h;
+  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+    {
+      s = p->sec->output_section;
+      if (s != NULL && (s->flags & (SEC_READONLY | SEC_HAS_CONTENTS)) != 0)
+       break;
+    }
+
+  /* If we didn't find any dynamic relocs in sections which needs the
+     copy reloc, then we'll be keeping the dynamic relocs and avoiding
+     the copy reloc.  */
+  if (p == NULL)
+    {
+      h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+      return true;
+    }
+
   /* We must allocate the symbol in our .dynbss section, which will
      become part of the .bss section of the executable.  There will be
      an entry for this symbol in the .dynsym section.  The dynamic
@@ -3733,7 +3789,8 @@ sh_elf_adjust_dynamic_symbol (info, h)
      both the dynamic object and the regular object will refer to the
      same memory location for the variable.  */
 
-  s = bfd_get_section_by_name (dynobj, ".dynbss");
+  htab = sh_elf_hash_table (info);
+  s = htab->sdynbss;
   BFD_ASSERT (s != NULL);
 
   /* We must generate a R_SH_COPY reloc to tell the dynamic linker to
@@ -3744,7 +3801,7 @@ sh_elf_adjust_dynamic_symbol (info, h)
     {
       asection *srel;
 
-      srel = bfd_get_section_by_name (dynobj, ".rela.bss");
+      srel = htab->srelbss;
       BFD_ASSERT (srel != NULL);
       srel->_raw_size += sizeof (Elf32_External_Rela);
       h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_COPY;
@@ -3757,8 +3814,7 @@ sh_elf_adjust_dynamic_symbol (info, h)
     power_of_two = 3;
 
   /* Apply the required alignment.  */
-  s->_raw_size = BFD_ALIGN (s->_raw_size,
-                           (bfd_size_type) (1 << power_of_two));
+  s->_raw_size = BFD_ALIGN (s->_raw_size, (bfd_size_type) (1 << power_of_two));
   if (power_of_two > bfd_get_section_alignment (dynobj, s))
     {
       if (! bfd_set_section_alignment (dynobj, s, power_of_two))
@@ -3775,6 +3831,239 @@ sh_elf_adjust_dynamic_symbol (info, h)
   return true;
 }
 
+/* This is the condition under which sh_elf_finish_dynamic_symbol
+   will be called from elflink.h.  If elflink.h doesn't call our
+   finish_dynamic_symbol routine, we'll need to do something about
+   initializing any .plt and .got entries in sh_elf_relocate_section.  */
+#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, INFO, H) \
+  ((DYN)                                                               \
+   && ((INFO)->shared                                                  \
+       || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)     \
+   && ((H)->dynindx != -1                                              \
+       || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0))
+
+/* Allocate space in .plt, .got and associated reloc sections for
+   dynamic relocs.  */
+
+static boolean
+allocate_dynrelocs (h, inf)
+     struct elf_link_hash_entry *h;
+     PTR inf;
+{
+  struct bfd_link_info *info;
+  struct elf_sh_link_hash_table *htab;
+  struct elf_sh_link_hash_entry *eh;
+  struct elf_sh_dyn_relocs *p;
+
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+
+  if (h->root.type == bfd_link_hash_warning)
+    /* When warning symbols are created, they **replace** the "real"
+       entry in the hash table, thus we never get to see the real
+       symbol in a hash traversal.  So look at it now.  */
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+  info = (struct bfd_link_info *) inf;
+  htab = sh_elf_hash_table (info);
+
+  if (htab->root.dynamic_sections_created
+      && h->plt.refcount > 0)
+    {
+      /* Make sure this symbol is output as a dynamic symbol.
+        Undefined weak syms won't yet be marked as dynamic.  */
+      if (h->dynindx == -1
+         && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
+       {
+         if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+           return false;
+       }
+
+      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h))
+       {
+         asection *s = htab->splt;
+
+         /* If this is the first .plt entry, make room for the special
+            first entry.  */
+         if (s->_raw_size == 0)
+           s->_raw_size += PLT_ENTRY_SIZE;
+
+         h->plt.offset = s->_raw_size;
+
+         /* If this symbol is not defined in a regular file, and we are
+            not generating a shared library, then set the symbol to this
+            location in the .plt.  This is required to make function
+            pointers compare as equal between the normal executable and
+            the shared library.  */
+         if (! info->shared
+             && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+           {
+             h->root.u.def.section = s;
+             h->root.u.def.value = h->plt.offset;
+           }
+
+         /* Make room for this entry.  */
+         s->_raw_size += PLT_ENTRY_SIZE;
+
+         /* We also need to make an entry in the .got.plt section, which
+            will be placed in the .got section by the linker script.  */
+         htab->sgotplt->_raw_size += 4;
+
+         /* We also need to make an entry in the .rel.plt section.  */
+         htab->srelplt->_raw_size += sizeof (Elf32_External_Rela);
+       }
+      else
+       {
+         h->plt.offset = (bfd_vma) -1;
+         h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
+       }
+    }
+  else
+    {
+      h->plt.offset = (bfd_vma) -1;
+      h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
+    }
+
+  if (h->got.refcount > 0)
+    {
+      asection *s;
+      boolean dyn;
+
+      /* Make sure this symbol is output as a dynamic symbol.
+        Undefined weak syms won't yet be marked as dynamic.  */
+      if (h->dynindx == -1
+         && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
+       {
+         if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+           return false;
+       }
+
+      s = htab->sgot;
+#ifdef INCLUDE_SHMEDIA
+      if (h->type == STT_DATALABEL)
+       {
+         struct elf_sh_link_hash_entry *hsh;
+
+         h = (struct elf_link_hash_entry *) h->root.u.i.link;
+         hsh = (struct elf_sh_link_hash_entry *)h;
+         hsh->datalabel_got_offset = s->_raw_size;
+       }
+      else
+       h->got.offset = s->_raw_size;
+#else
+      h->got.offset = s->_raw_size;
+#endif
+      s->_raw_size += 4;
+      dyn = htab->root.dynamic_sections_created;
+      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h))
+       htab->srelgot->_raw_size += sizeof (Elf32_External_Rela);
+    }
+  else
+    h->got.offset = (bfd_vma) -1;
+
+  eh = (struct elf_sh_link_hash_entry *) h;
+  if (eh->dyn_relocs == NULL)
+    return true;
+
+  /* In the shared -Bsymbolic case, discard space allocated for
+     dynamic pc-relative relocs against symbols which turn out to be
+     defined in regular objects.  For the normal shared case, discard
+     space for pc-relative relocs that have become local due to symbol
+     visibility changes.  */
+
+  if (info->shared)
+    {
+      if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
+         && ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0
+             || info->symbolic))
+       {
+         struct elf_sh_dyn_relocs **pp;
+
+         for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+           {
+             p->count -= p->pc_count;
+             p->pc_count = 0;
+             if (p->count == 0)
+               *pp = p->next;
+             else
+               pp = &p->next;
+           }
+       }
+    }
+  else
+    {
+      /* For the non-shared case, discard space for relocs against
+        symbols which turn out to need copy relocs or are not
+        dynamic.  */
+
+      if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0
+         && (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
+              && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+             || (htab->root.dynamic_sections_created
+                 && (h->root.type == bfd_link_hash_undefweak
+                     || h->root.type == bfd_link_hash_undefined))))
+       {
+         /* Make sure this symbol is output as a dynamic symbol.
+            Undefined weak syms won't yet be marked as dynamic.  */
+         if (h->dynindx == -1
+             && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
+           {
+             if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+               return false;
+           }
+
+         /* If that succeeded, we know we'll be keeping all the
+            relocs.  */
+         if (h->dynindx != -1)
+           goto keep;
+       }
+
+      eh->dyn_relocs = NULL;
+
+    keep: ;
+    }
+
+  /* Finally, allocate space.  */
+  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *sreloc = elf_section_data (p->sec)->sreloc;
+      sreloc->_raw_size += p->count * sizeof (Elf32_External_Rela);
+    }
+
+  return true;
+}
+
+/* Find any dynamic relocs that apply to read-only sections.  */
+
+static boolean
+readonly_dynrelocs (h, inf)
+     struct elf_link_hash_entry *h;
+     PTR inf;
+{
+  struct elf_sh_link_hash_entry *eh;
+  struct elf_sh_dyn_relocs *p;
+
+  if (h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+  eh = (struct elf_sh_link_hash_entry *) h;
+  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *s = p->sec->output_section;
+
+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
+       {
+         struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+         info->flags |= DF_TEXTREL;
+
+         /* Not an error, just cut short the traversal.  */
+         return false;
+       }
+    }
+  return true;
+}
+
 /* Set the sizes of the dynamic sections.  */
 
 static boolean
@@ -3782,15 +4071,17 @@ sh_elf_size_dynamic_sections (output_bfd, info)
      bfd *output_bfd ATTRIBUTE_UNUSED;
      struct bfd_link_info *info;
 {
+  struct elf_sh_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  boolean plt;
   boolean relocs;
+  bfd *ibfd;
 
-  dynobj = elf_hash_table (info)->dynobj;
+  htab = sh_elf_hash_table (info);
+  dynobj = htab->root.dynobj;
   BFD_ASSERT (dynobj != NULL);
 
-  if (elf_hash_table (info)->dynamic_sections_created)
+  if (htab->root.dynamic_sections_created)
     {
       /* Set the contents of the .interp section to the interpreter.  */
       if (! info->shared)
@@ -3801,106 +4092,135 @@ sh_elf_size_dynamic_sections (output_bfd, info)
          s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
        }
     }
-  else
-    {
-      /* We may have created entries in the .rela.got section.
-        However, if we are not creating the dynamic sections, we will
-        not actually use these entries.  Reset the size of .rela.got,
-        which will cause it to get stripped from the output file
-        below.  */
-      s = bfd_get_section_by_name (dynobj, ".rela.got");
-      if (s != NULL)
-       s->_raw_size = 0;
-    }
 
-  /* If this is a -Bsymbolic shared link, then we need to discard all
-     PC relative relocs against symbols defined in a regular object.
-     We allocated space for them in the check_relocs routine, but we
-     will not fill them in in the relocate_section routine.  */
-  if (info->shared && info->symbolic)
-    sh_elf_link_hash_traverse (sh_elf_hash_table (info),
-                              sh_elf_discard_copies,
-                              (PTR) NULL);
-
-  /* The check_relocs and adjust_dynamic_symbol entry points have
-     determined the sizes of the various dynamic sections.  Allocate
-     memory for them.  */
-  plt = false;
-  relocs = false;
-  for (s = dynobj->sections; s != NULL; s = s->next)
+  /* Set up .got offsets for local syms, and space for local dynamic
+     relocs.  */
+  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
     {
-      const char *name;
-      boolean strip;
+      bfd_signed_vma *local_got;
+      bfd_signed_vma *end_local_got;
+      bfd_size_type locsymcount;
+      Elf_Internal_Shdr *symtab_hdr;
+      asection *srel;
 
-      if ((s->flags & SEC_LINKER_CREATED) == 0)
+      if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
        continue;
 
-      /* It's OK to base decisions on the section name, because none
-        of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
-
-      strip = false;
-
-      if (strcmp (name, ".plt") == 0)
+      for (s = ibfd->sections; s != NULL; s = s->next)
        {
-         if (s->_raw_size == 0)
-           {
-             /* Strip this section if we don't need it; see the
-                comment below.  */
-             strip = true;
-           }
-         else
+         struct elf_sh_dyn_relocs *p;
+
+         for (p = ((struct elf_sh_dyn_relocs *)
+                   elf_section_data (s)->local_dynrel);
+              p != NULL;
+              p = p->next)
            {
-             /* Remember whether there is a PLT.  */
-             plt = true;
+             if (! bfd_is_abs_section (p->sec)
+                 && bfd_is_abs_section (p->sec->output_section))
+               {
+                 /* Input section has been discarded, either because
+                    it is a copy of a linkonce section or due to
+                    linker script /DISCARD/, so we'll be discarding
+                    the relocs too.  */
+               }
+             else if (p->count != 0)
+               {
+                 srel = elf_section_data (p->sec)->sreloc;
+                 srel->_raw_size += p->count * sizeof (Elf32_External_Rela);
+                 if ((p->sec->output_section->flags & SEC_READONLY) != 0)
+                   info->flags |= DF_TEXTREL;
+               }
            }
        }
-      else if (strncmp (name, ".rela", 5) == 0)
+
+      local_got = elf_local_got_refcounts (ibfd);
+      if (!local_got)
+       continue;
+
+      symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
+      locsymcount = symtab_hdr->sh_info;
+#ifdef INCLUDE_SHMEDIA
+      /* Count datalabel local GOT.  */
+      locsymcount *= 2;
+#endif
+      end_local_got = local_got + locsymcount;
+      s = htab->sgot;
+      srel = htab->srelgot;
+      for (; local_got < end_local_got; ++local_got)
        {
-         if (s->_raw_size == 0)
+         if (*local_got > 0)
            {
-             /* If we don't need this section, strip it from the
-                output file.  This is mostly to handle .rela.bss and
-                .rela.plt.  We must create both sections in
-                create_dynamic_sections, because they must be created
-                before the linker maps input sections to output
-                sections.  The linker does that before
-                adjust_dynamic_symbol is called, and it is that
-                function which decides whether anything needs to go
-                into these sections.  */
-             strip = true;
+             *local_got = s->_raw_size;
+             s->_raw_size += 4;
+             if (info->shared)
+               srel->_raw_size += sizeof (Elf32_External_Rela);
            }
          else
-           {
-             /* Remember whether there are any reloc sections other
-                than .rela.plt.  */
-             if (strcmp (name, ".rela.plt") != 0)
-               relocs = true;
-
-             /* We use the reloc_count field as a counter if we need
-                to copy relocs into the output file.  */
-             s->reloc_count = 0;
-           }
+           *local_got = (bfd_vma) -1;
+       }
+    }
+
+  /* Allocate global sym .plt and .got entries, and space for global
+     sym dynamic relocs.  */
+  elf_link_hash_traverse (&htab->root, allocate_dynrelocs, (PTR) info);
+
+  /* We now have determined the sizes of the various dynamic sections.
+     Allocate memory for them.  */
+  relocs = false;
+  for (s = dynobj->sections; s != NULL; s = s->next)
+    {
+      if ((s->flags & SEC_LINKER_CREATED) == 0)
+       continue;
+
+      if (s == htab->splt
+         || s == htab->sgot
+         || s == htab->sgotplt)
+       {
+         /* Strip this section if we don't need it; see the
+            comment below.  */
+       }
+      else if (strncmp (bfd_get_section_name (dynobj, s), ".rela", 5) == 0)
+       {
+         if (s->_raw_size != 0 && s != htab->srelplt)
+           relocs = true;
+
+         /* We use the reloc_count field as a counter if we need
+            to copy relocs into the output file.  */
+         s->reloc_count = 0;
        }
-      else if (strncmp (name, ".got", 4) != 0)
+      else
        {
          /* It's not one of our sections, so don't allocate space.  */
          continue;
        }
 
-      if (strip)
+      if (s->_raw_size == 0)
        {
+         /* If we don't need this section, strip it from the
+            output file.  This is mostly to handle .rela.bss and
+            .rela.plt.  We must create both sections in
+            create_dynamic_sections, because they must be created
+            before the linker maps input sections to output
+            sections.  The linker does that before
+            adjust_dynamic_symbol is called, and it is that
+            function which decides whether anything needs to go
+            into these sections.  */
+
          _bfd_strip_section_from_output (info, s);
          continue;
        }
 
-      /* Allocate memory for the section contents.  */
-      s->contents = (bfd_byte *) bfd_alloc (dynobj, s->_raw_size);
-      if (s->contents == NULL && s->_raw_size != 0)
+      /* Allocate memory for the section contents.  We use bfd_zalloc
+        here in case unused entries are not reclaimed before the
+        section's contents are written out.  This should not happen,
+        but this way if it does, we get a R_SH_NONE reloc instead
+        of garbage.  */
+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size);
+      if (s->contents == NULL)
        return false;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
+  if (htab->root.dynamic_sections_created)
     {
       /* Add some entries to the .dynamic section.  We fill in the
         values later, in sh_elf_finish_dynamic_sections, but we
@@ -3912,64 +4232,44 @@ sh_elf_size_dynamic_sections (output_bfd, info)
 
       if (! info->shared)
        {
-         if (!add_dynamic_entry (DT_DEBUG, 0))
+         if (! add_dynamic_entry (DT_DEBUG, 0))
            return false;
        }
 
-      if (plt)
+      if (htab->splt->_raw_size != 0)
        {
-         if (!add_dynamic_entry (DT_PLTGOT, 0)
-             || !add_dynamic_entry (DT_PLTRELSZ, 0)
-             || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-             || !add_dynamic_entry (DT_JMPREL, 0))
+         if (! add_dynamic_entry (DT_PLTGOT, 0)
+             || ! add_dynamic_entry (DT_PLTRELSZ, 0)
+             || ! add_dynamic_entry (DT_PLTREL, DT_RELA)
+             || ! add_dynamic_entry (DT_JMPREL, 0))
            return false;
        }
 
       if (relocs)
        {
-         if (!add_dynamic_entry (DT_RELA, 0)
-             || !add_dynamic_entry (DT_RELASZ, 0)
-             || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
+         if (! add_dynamic_entry (DT_RELA, 0)
+             || ! add_dynamic_entry (DT_RELASZ, 0)
+             || ! add_dynamic_entry (DT_RELAENT,
+                                     sizeof (Elf32_External_Rela)))
            return false;
-       }
 
-      if ((info->flags & DF_TEXTREL) != 0)
-       {
-         if (!add_dynamic_entry (DT_TEXTREL, 0))
-           return false;
+         /* If any dynamic relocs apply to a read-only section,
+            then we need a DT_TEXTREL entry.  */
+         if ((info->flags & DF_TEXTREL) == 0)
+           elf_link_hash_traverse (&htab->root, readonly_dynrelocs,
+                                   (PTR) info);
+
+         if ((info->flags & DF_TEXTREL) != 0)
+           {
+             if (! add_dynamic_entry (DT_TEXTREL, 0))
+               return false;
+           }
        }
     }
 #undef add_dynamic_entry
 
   return true;
 }
-
-/* This function is called via sh_elf_link_hash_traverse if we are
-   creating a shared object with -Bsymbolic.  It discards the space
-   allocated to copy PC relative relocs against symbols which are
-   defined in regular objects.  We allocated space for them in the
-   check_relocs routine, but we won't fill them in in the
-   relocate_section routine.  */
-
-static boolean
-sh_elf_discard_copies (h, ignore)
-     struct elf_sh_link_hash_entry *h;
-     PTR ignore ATTRIBUTE_UNUSED;
-{
-  struct elf_sh_pcrel_relocs_copied *s;
-
-  if (h->root.root.type == bfd_link_hash_warning)
-    h = (struct elf_sh_link_hash_entry *) h->root.root.u.i.link;
-
-  /* We only discard relocs for symbols defined in a regular object.  */
-  if ((h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
-    return true;
-
-  for (s = h->pcrel_relocs_copied; s != NULL; s = s->next)
-    s->section->_raw_size -= s->count * sizeof (Elf32_External_Rela);
-
-  return true;
-}
 \f
 /* Relocate an SH ELF section.  */
 
@@ -3985,6 +4285,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
      Elf_Internal_Sym *local_syms;
      asection **local_sections;
 {
+  struct elf_sh_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   Elf_Internal_Rela *rel, *relend;
@@ -3995,14 +4296,15 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
   asection *splt;
   asection *sreloc;
 
+  htab = sh_elf_hash_table (info);
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
-  dynobj = elf_hash_table (info)->dynobj;
+  dynobj = htab->root.dynobj;
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
-  sgot = NULL;
-  sgotplt = NULL;
-  splt = NULL;
+  sgot = htab->sgot;
+  sgotplt = htab->sgotplt;
+  splt = htab->splt;
   sreloc = NULL;
 
   rel = relocs;
@@ -4025,7 +4327,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
       r_type = ELF32_R_TYPE (rel->r_info);
 
       /* Many of the relocs are only used for relaxing, and are
-         handled entirely by the relaxation code.  */
+        handled entirely by the relaxation code.  */
       if (r_type > (int) R_SH_LAST_INVALID_RELOC
          && r_type < (int) R_SH_LOOP_START)
        continue;
@@ -4050,7 +4352,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
       howto = sh_elf_howto_table + r_type;
 
       /* For relocs that aren't partial_inplace, we get the addend from
-         the relocation.  */
+        the relocation.  */
       if (! howto->partial_inplace)
        addend = rel->r_addend;
 
@@ -4129,9 +4431,9 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                  return false;
                }
 
-              addend = bfd_get_32 (input_bfd, contents + rel->r_offset);
-              msec = sec;
-              addend =
+             addend = bfd_get_32 (input_bfd, contents + rel->r_offset);
+             msec = sec;
+             addend =
                _bfd_elf_rel_local_sym (output_bfd, sym, &msec, addend)
                - relocation;
              addend += msec->output_section->vma + msec->output_offset;
@@ -4162,6 +4464,9 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          if (h->root.type == bfd_link_hash_defined
              || h->root.type == bfd_link_hash_defweak)
            {
+             boolean dyn;
+
+             dyn = htab->root.dynamic_sections_created;
              sec = h->root.u.def.section;
              /* In these cases, we don't need the relocation value.
                 We check specially because in some obscure cases
@@ -4182,7 +4487,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                       || r_type == R_SH_GOT_MEDLOW16
                       || r_type == R_SH_GOT_MEDHI16
                       || r_type == R_SH_GOT_HI16)
-                     && elf_hash_table (info)->dynamic_sections_created
+                     && WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)
                      && (! info->shared
                          || (! info->symbolic && h->dynindx != -1)
                          || (h->elf_link_hash_flags
@@ -4197,15 +4502,17 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                          || (h->elf_link_hash_flags
                              & ELF_LINK_HASH_DEF_REGULAR) == 0)
                      && ((r_type == R_SH_DIR32
-                          && !(ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-                               || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN))
+                          && (h->elf_link_hash_flags
+                              & ELF_LINK_FORCED_LOCAL) == 0)
                          || r_type == R_SH_REL32)
                      && ((input_section->flags & SEC_ALLOC) != 0
                          /* DWARF will emit R_SH_DIR32 relocations in its
                             sections against symbols defined externally
                             in shared libraries.  We can't do anything
                             with them here.  */
-                         || (input_section->flags & SEC_DEBUGGING) != 0)))
+                         || ((input_section->flags & SEC_DEBUGGING) != 0
+                             && (h->elf_link_hash_flags
+                                 & ELF_LINK_HASH_DEF_DYNAMIC) != 0))))
                relocation = 0;
              else if (sec->output_section == NULL)
                {
@@ -4228,14 +4535,17 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          else if (h->root.type == bfd_link_hash_undefweak)
            relocation = 0;
          else if (info->shared
-              && (!info->symbolic || info->allow_shlib_undefined)
-              && !info->no_undefined)
+                  && (! info->symbolic || info->allow_shlib_undefined)
+                  && ! info->no_undefined
+                  && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
            relocation = 0;
          else
            {
              if (! ((*info->callbacks->undefined_symbol)
                     (info, h->root.root.string, input_bfd,
-                     input_section, rel->r_offset, true)))
+                     input_section, rel->r_offset,
+                     (!info->shared || info->no_undefined
+                      || ELF_ST_VISIBILITY (h->other)))))
                return false;
              relocation = 0;
            }
@@ -4416,8 +4726,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
             procedure linkage table.  */
 
          if (h == NULL
-             || ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-             || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN
+             || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)
              || ! info->shared
              || info->symbolic
              || h->dynindx == -1
@@ -4427,12 +4736,8 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
 
          /* Relocation is to the entry for this symbol in the global
             offset table extension for the procedure linkage table.  */
-         if (sgotplt == NULL)
-           {
-             sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
-             BFD_ASSERT (sgotplt != NULL);
-           }
 
+         BFD_ASSERT (sgotplt != NULL);
          relocation = (sgotplt->output_offset
                        + ((h->plt.offset / elf_sh_sizeof_plt (info)
                            - 1 + 3) * 4));
@@ -4455,15 +4760,13 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
 #endif
          /* Relocation is to the entry for this symbol in the global
             offset table.  */
-         if (sgot == NULL)
-           {
-             sgot = bfd_get_section_by_name (dynobj, ".got");
-             BFD_ASSERT (sgot != NULL);
-           }
+
+         BFD_ASSERT (sgot != NULL);
 
          if (h != NULL)
            {
              bfd_vma off;
+             boolean dyn;
 
              off = h->got.offset;
 #ifdef INCLUDE_SHMEDIA
@@ -4477,11 +4780,11 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
 #endif
              BFD_ASSERT (off != (bfd_vma) -1);
 
-             if (! elf_hash_table (info)->dynamic_sections_created
+             dyn = htab->root.dynamic_sections_created;
+             if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)
                  || (info->shared
                      && (info->symbolic || h->dynindx == -1
-                         || ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-                         || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN)
+                         || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
                      && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
                {
                  /* This is actually a static link, or it is a
@@ -4585,7 +4888,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            }
 
 #ifdef GOT_BIAS
-         relocation -= GOT_BIAS;
+         relocation -= GOT_BIAS;
 #endif
 
          goto final_link_relocate;
@@ -4600,11 +4903,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          /* Relocation is relative to the start of the global offset
             table.  */
 
-         if (sgot == NULL)
-           {
-             sgot = bfd_get_section_by_name (dynobj, ".got");
-             BFD_ASSERT (sgot != NULL);
-           }
+         BFD_ASSERT (sgot != NULL);
 
          /* Note that sgot->output_offset is not involved in this
             calculation.  We always want the start of .got.  If we
@@ -4630,12 +4929,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
 #endif
          /* Use global offset table as symbol value.  */
 
-         if (sgot == NULL)
-           {
-             sgot = bfd_get_section_by_name (dynobj, ".got");
-             BFD_ASSERT (sgot != NULL);
-           }
-
+         BFD_ASSERT (sgot != NULL);
          relocation = sgot->output_section->vma;
 
 #ifdef GOT_BIAS
@@ -4661,8 +4955,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          if (h == NULL)
            goto final_link_relocate;
 
-         if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-             || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN)
+         if (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)
            goto final_link_relocate;
 
          if (h->plt.offset == (bfd_vma) -1)
@@ -4673,12 +4966,7 @@ sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
              goto final_link_relocate;
            }
 
-         if (splt == NULL)
-           {
-             splt = bfd_get_section_by_name (dynobj, ".plt");
-             BFD_ASSERT (splt != NULL);
-           }
-
+         BFD_ASSERT (splt != NULL);
          relocation = (splt->output_section->vma
                        + splt->output_offset
                        + h->plt.offset);
@@ -4896,18 +5184,186 @@ sh_elf_gc_mark_hook (sec, info, rel, h, sym)
 
 static boolean
 sh_elf_gc_sweep_hook (abfd, info, sec, relocs)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     struct bfd_link_info *info ATTRIBUTE_UNUSED;
-     asection *sec ATTRIBUTE_UNUSED;
-     const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED;
+     bfd *abfd;
+     struct bfd_link_info *info;
+     asection *sec;
+     const Elf_Internal_Rela *relocs;
 {
-  /* We use got and plt entries for sh, but it would seem that the
-     existing SH code does no sort of reference counting or whatnot on
-     its GOT and PLT entries, so it is not possible to garbage collect
-     them at this time.  */
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  bfd_signed_vma *local_got_refcounts;
+  const Elf_Internal_Rela *rel, *relend;
+  unsigned long r_symndx;
+  struct elf_link_hash_entry *h;
+
+  elf_section_data (sec)->local_dynrel = NULL;
+
+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (abfd);
+  local_got_refcounts = elf_local_got_refcounts (abfd);
+
+  relend = relocs + sec->reloc_count;
+  for (rel = relocs; rel < relend; rel++)
+    switch (ELF32_R_TYPE (rel->r_info))
+      {
+      case R_SH_GOT32:
+      case R_SH_GOTOFF:
+      case R_SH_GOTPC:
+#ifdef INCLUDE_SHMEDIA
+      case R_SH_GOT_LOW16:
+      case R_SH_GOT_MEDLOW16:
+      case R_SH_GOT_MEDHI16:
+      case R_SH_GOT_HI16:
+      case R_SH_GOT10BY4:
+      case R_SH_GOT10BY8:
+      case R_SH_GOTOFF_LOW16:
+      case R_SH_GOTOFF_MEDLOW16:
+      case R_SH_GOTOFF_MEDHI16:
+      case R_SH_GOTOFF_HI16:
+      case R_SH_GOTPC_LOW16:
+      case R_SH_GOTPC_MEDLOW16:
+      case R_SH_GOTPC_MEDHI16:
+      case R_SH_GOTPC_HI16:
+#endif
+       r_symndx = ELF32_R_SYM (rel->r_info);
+       if (r_symndx >= symtab_hdr->sh_info)
+         {
+           h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+           if (h->got.refcount > 0)
+             h->got.refcount -= 1;
+         }
+       else if (local_got_refcounts != NULL)
+         {
+           if (local_got_refcounts[r_symndx] > 0)
+             local_got_refcounts[r_symndx] -= 1;
+         }
+       break;
+
+      case R_SH_DIR32:
+      case R_SH_REL32:
+       r_symndx = ELF32_R_SYM (rel->r_info);
+       if (r_symndx >= symtab_hdr->sh_info)
+         {
+           struct elf_sh_link_hash_entry *eh;
+           struct elf_sh_dyn_relocs **pp;
+           struct elf_sh_dyn_relocs *p;
+
+           h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
+           if (!info->shared && h->plt.refcount > 0)
+             h->plt.refcount -= 1;
+
+           eh = (struct elf_sh_link_hash_entry *) h;
+
+           for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next)
+             if (p->sec == sec)
+               {
+                 if (ELF32_R_TYPE (rel->r_info) == R_SH_REL32)
+                   p->pc_count -= 1;
+                 p->count -= 1;
+                 if (p->count == 0)
+                   *pp = p->next;
+                 break;
+               }
+         }
+       break;
+
+      case R_SH_PLT32:
+#ifdef INCLUDE_SHMEDIA
+      case R_SH_PLT_LOW16:
+      case R_SH_PLT_MEDLOW16:
+      case R_SH_PLT_MEDHI16:
+      case R_SH_PLT_HI16:
+#endif
+       r_symndx = ELF32_R_SYM (rel->r_info);
+       if (r_symndx >= symtab_hdr->sh_info)
+         {
+           h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+           if (h->plt.refcount > 0)
+             h->plt.refcount -= 1;
+         }
+       break;
+
+      case R_SH_GOTPLT32:
+#ifdef INCLUDE_SHMEDIA
+      case R_SH_GOTPLT_LOW16:
+      case R_SH_GOTPLT_MEDLOW16:
+      case R_SH_GOTPLT_MEDHI16:
+      case R_SH_GOTPLT_HI16:
+      case R_SH_GOTPLT10BY4:
+      case R_SH_GOTPLT10BY8:
+#endif
+       r_symndx = ELF32_R_SYM (rel->r_info);
+       if (r_symndx >= symtab_hdr->sh_info)
+         {
+           h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+           if (h->got.refcount > 0)
+             h->got.refcount -= 1;
+           if (h->plt.refcount > 0)
+             h->plt.refcount -= 1;
+         }
+       else if (local_got_refcounts != NULL)
+         {
+           if (local_got_refcounts[r_symndx] > 0)
+             local_got_refcounts[r_symndx] -= 1;
+         }
+       break;
+
+      default:
+       break;
+      }
+
   return true;
 }
 
+/* Copy the extra info we tack onto an elf_link_hash_entry.  */
+
+static void
+sh_elf_copy_indirect_symbol (bed, dir, ind)
+     struct elf_backend_data *bed;
+     struct elf_link_hash_entry *dir, *ind;
+{
+  struct elf_sh_link_hash_entry *edir, *eind;
+
+  edir = (struct elf_sh_link_hash_entry *) dir;
+  eind = (struct elf_sh_link_hash_entry *) ind;
+
+  if (eind->dyn_relocs != NULL)
+    {
+      if (edir->dyn_relocs != NULL)
+       {
+         struct elf_sh_dyn_relocs **pp;
+         struct elf_sh_dyn_relocs *p;
+
+         BFD_ASSERT (ind->root.type != bfd_link_hash_indirect);
+
+         /* Add reloc counts against the weak sym to the strong sym
+            list.  Merge any entries against the same section.  */
+         for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
+           {
+             struct elf_sh_dyn_relocs *q;
+
+             for (q = edir->dyn_relocs; q != NULL; q = q->next)
+               if (q->sec == p->sec)
+                 {
+                   q->pc_count += p->pc_count;
+                   q->count += p->count;
+                   *pp = p->next;
+                   break;
+                 }
+             if (q == NULL)
+               pp = &p->next;
+           }
+         *pp = edir->dyn_relocs;
+       }
+
+      edir->dyn_relocs = eind->dyn_relocs;
+      eind->dyn_relocs = NULL;
+    }
+
+  _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
+}
+
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
@@ -4921,6 +5377,7 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
 {
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  struct elf_sh_link_hash_table *htab;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
   bfd *dynobj;
@@ -4942,7 +5399,8 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
   if (!elf_bad_symtab (abfd))
     sym_hashes_end -= symtab_hdr->sh_info;
 
-  dynobj = elf_hash_table (info)->dynobj;
+  htab = sh_elf_hash_table (info);
+  dynobj = htab->root.dynobj;
   local_got_offsets = elf_local_got_offsets (abfd);
 
   rel_end = relocs + sec->reloc_count;
@@ -4958,7 +5416,7 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
        h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 
       /* Some relocs require a global offset table.  */
-      if (dynobj == NULL)
+      if (htab->sgot == NULL)
        {
          switch (ELF32_R_TYPE (rel->r_info))
            {
@@ -4988,8 +5446,9 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
            case R_SH_GOTPC_MEDHI16:
            case R_SH_GOTPC_HI16:
 #endif
-             elf_hash_table (info)->dynobj = dynobj = abfd;
-             if (! _bfd_elf_create_got_section (dynobj, info))
+             if (dynobj == NULL)
+               htab->root.dynobj = dynobj = abfd;
+             if (! create_got_section (dynobj, info))
                return false;
              break;
 
@@ -4999,16 +5458,16 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
        }
 
       switch (ELF32_R_TYPE (rel->r_info))
-        {
-        /* This relocation describes the C++ object vtable hierarchy.
-           Reconstruct it for later use during GC.  */
+       {
+         /* This relocation describes the C++ object vtable hierarchy.
+            Reconstruct it for later use during GC.  */
        case R_SH_GNU_VTINHERIT:
          if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
            return false;
          break;
 
-        /* This relocation describes which C++ vtable entries are actually
-           used.  Record for later use during GC.  */
+         /* This relocation describes which C++ vtable entries are actually
+            used.  Record for later use during GC.  */
        case R_SH_GNU_VTENTRY:
          if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend))
            return false;
@@ -5024,133 +5483,34 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
        case R_SH_GOT10BY4:
        case R_SH_GOT10BY8:
 #endif
-         /* This symbol requires a global offset table entry.  */
-
-         if (sgot == NULL)
-           {
-             sgot = bfd_get_section_by_name (dynobj, ".got");
-             BFD_ASSERT (sgot != NULL);
-           }
-
-         if (srelgot == NULL
-             && (h != NULL || info->shared))
-           {
-             srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
-             if (srelgot == NULL)
-               {
-                 srelgot = bfd_make_section (dynobj, ".rela.got");
-                 if (srelgot == NULL
-                     || ! bfd_set_section_flags (dynobj, srelgot,
-                                                 (SEC_ALLOC
-                                                  | SEC_LOAD
-                                                  | SEC_HAS_CONTENTS
-                                                  | SEC_IN_MEMORY
-                                                  | SEC_LINKER_CREATED
-                                                  | SEC_READONLY))
-                     || ! bfd_set_section_alignment (dynobj, srelgot, 2))
-                   return false;
-               }
-           }
-
          if (h != NULL)
-           {
-#ifdef INCLUDE_SHMEDIA
-             if (h->type == STT_DATALABEL)
-               {
-                 struct elf_sh_link_hash_entry *hsh;
-
-                 h = (struct elf_link_hash_entry *) h->root.u.i.link;
-                 hsh = (struct elf_sh_link_hash_entry *)h;
-                 if (hsh->datalabel_got_offset != (bfd_vma) -1)
-                   break;
-
-                 hsh->datalabel_got_offset = sgot->_raw_size;
-               }
-             else
-               {
-#endif
-             if (h->got.offset != (bfd_vma) -1)
-               {
-                 /* We have already allocated space in the .got.  */
-                 break;
-               }
-             h->got.offset = sgot->_raw_size;
-#ifdef INCLUDE_SHMEDIA
-               }
-#endif
-
-             /* Make sure this symbol is output as a dynamic symbol.  */
-             if (h->dynindx == -1)
-               {
-                 if (! bfd_elf32_link_record_dynamic_symbol (info, h))
-                   return false;
-               }
-
-             srelgot->_raw_size += sizeof (Elf32_External_Rela);
-           }
+           h->got.refcount += 1;
          else
            {
+             bfd_signed_vma *local_got_refcounts;
+
              /* This is a global offset table entry for a local
-                symbol.  */
-             if (local_got_offsets == NULL)
+                symbol.  */
+             local_got_refcounts = elf_local_got_refcounts (abfd);
+             if (local_got_refcounts == NULL)
                {
                  bfd_size_type size;
-                 register unsigned int i;
 
                  size = symtab_hdr->sh_info;
-                 size *= sizeof (bfd_vma);
+                 size *= sizeof (bfd_signed_vma);
 #ifdef INCLUDE_SHMEDIA
                  /* Reserve space for both the datalabel and
                     codelabel local GOT offsets.  */
                  size *= 2;
 #endif
-                 local_got_offsets = (bfd_vma *) bfd_alloc (abfd, size);
-                 if (local_got_offsets == NULL)
+                 local_got_refcounts = ((bfd_signed_vma *)
+                                        bfd_zalloc (abfd, size));
+                 if (local_got_refcounts == NULL)
                    return false;
-                 elf_local_got_offsets (abfd) = local_got_offsets;
-                 for (i = 0; i < symtab_hdr->sh_info; i++)
-                   local_got_offsets[i] = (bfd_vma) -1;
-#ifdef INCLUDE_SHMEDIA
-                 for (; i < 2 * symtab_hdr->sh_info; i++)
-                   local_got_offsets[i] = (bfd_vma) -1;
-#endif
-               }
-#ifdef INCLUDE_SHMEDIA
-             if ((rel->r_addend & 1) != 0)
-               {
-                 if (local_got_offsets[symtab_hdr->sh_info
-                                       + r_symndx] != (bfd_vma) -1)
-                   {
-                     /* We have already allocated space in the .got.  */
-                     break;
-                   }
-                 local_got_offsets[symtab_hdr->sh_info
-                                   + r_symndx] = sgot->_raw_size;
-               }
-             else
-               {
-#endif
-             if (local_got_offsets[r_symndx] != (bfd_vma) -1)
-               {
-                 /* We have already allocated space in the .got.  */
-                 break;
-               }
-             local_got_offsets[r_symndx] = sgot->_raw_size;
-#ifdef INCLUDE_SHMEDIA
-               }
-#endif
-
-             if (info->shared)
-               {
-                 /* If we are generating a shared object, we need to
-                    output a R_SH_RELATIVE reloc so that the dynamic
-                    linker can adjust this GOT entry.  */
-                 srelgot->_raw_size += sizeof (Elf32_External_Rela);
+                 elf_local_got_refcounts (abfd) = local_got_refcounts;
                }
+             local_got_refcounts[r_symndx] += 1;
            }
-
-         sgot->_raw_size += 4;
-
          break;
 
        case R_SH_GOTPLT32:
@@ -5166,22 +5526,14 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
             creating a procedure linkage table entry.  */
 
          if (h == NULL
-             || ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-             || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN
+             || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)
              || ! info->shared
              || info->symbolic
-             || h->dynindx == -1
-             || h->got.offset != (bfd_vma) -1)
+             || h->dynindx == -1)
            goto force_got;
 
-         /* Make sure this symbol is output as a dynamic symbol.  */
-         if (h->dynindx == -1)
-           {
-             if (! bfd_elf32_link_record_dynamic_symbol (info, h))
-               return false;
-           }
-
          h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+         h->plt.refcount += 1;
 
          break;
 
@@ -5204,18 +5556,20 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
          if (h == NULL)
            continue;
 
-         if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-             || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN)
+         if (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)
            break;
 
          h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
-
+         h->plt.refcount += 1;
          break;
 
        case R_SH_DIR32:
        case R_SH_REL32:
-         if (h != NULL)
-           h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
+         if (h != NULL && ! info->shared)
+           {
+             h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
+             h->plt.refcount += 1;
+           }
 
          /* If we are creating a shared library, and this is a reloc
             against a global symbol, or a non PC relative reloc
@@ -5228,15 +5582,35 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
             possible that DEF_REGULAR is not set now but will be set
             later (it is never cleared).  We account for that
             possibility below by storing information in the
-            pcrel_relocs_copied field of the hash table entry.  */
-         if (info->shared
-             && (sec->flags & SEC_ALLOC) != 0
-             && (ELF32_R_TYPE (rel->r_info) != R_SH_REL32
-                 || (h != NULL
-                     && (! info->symbolic
-                         || (h->elf_link_hash_flags
-                             & ELF_LINK_HASH_DEF_REGULAR) == 0))))
+            dyn_relocs field of the hash table entry. A similar
+            situation occurs when creating shared libraries and symbol
+            visibility changes render the symbol local.
+
+            If on the other hand, we are creating an executable, we
+            may need to keep relocations for symbols satisfied by a
+            dynamic library if we manage to avoid copy relocs for the
+            symbol.  */
+         if ((info->shared
+              && (sec->flags & SEC_ALLOC) != 0
+              && (ELF32_R_TYPE (rel->r_info) != R_SH_REL32
+                  || (h != NULL
+                      && (! info->symbolic
+                          || h->root.type == bfd_link_hash_defweak
+                          || (h->elf_link_hash_flags
+                              & ELF_LINK_HASH_DEF_REGULAR) == 0))))
+             || (! info->shared
+                 && (sec->flags & SEC_ALLOC) != 0
+                 && h != NULL
+                 && (h->root.type == bfd_link_hash_defweak
+                     || (h->elf_link_hash_flags
+                         & ELF_LINK_HASH_DEF_REGULAR) == 0)))
            {
+             struct elf_sh_dyn_relocs *p;
+             struct elf_sh_dyn_relocs **head;
+
+             if (dynobj == NULL)
+               htab->root.dynobj = dynobj = abfd;
+
              /* When creating a shared object, we must copy these
                 reloc types into the output file.  We create a reloc
                 section in dynobj and make room for this reloc.  */
@@ -5272,44 +5646,44 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
                    }
                  if (sec->flags & SEC_READONLY)
                    info->flags |= DF_TEXTREL;
+                 elf_section_data (sec)->sreloc = sreloc;
                }
 
-             sreloc->_raw_size += sizeof (Elf32_External_Rela);
-
-             /* If we are linking with -Bsymbolic, and this is a
-                global symbol, we count the number of PC relative
-                relocations we have entered for this symbol, so that
-                we can discard them again if the symbol is later
-                defined by a regular object.  Note that this function
-                is only called if we are using an elf_sh linker
-                hash table, which means that h is really a pointer to
-                an elf_sh_link_hash_entry.  */
-             if (h != NULL && info->symbolic
-                 && ELF32_R_TYPE (rel->r_info) == R_SH_REL32)
+             /* If this is a global symbol, we count the number of
+                relocations we need for this symbol.  */
+             if (h != NULL)
+               head = &((struct elf_sh_link_hash_entry *) h)->dyn_relocs;
+             else
                {
-                 struct elf_sh_link_hash_entry *eh;
-                 struct elf_sh_pcrel_relocs_copied *p;
+                 asection *s;
 
-                 eh = (struct elf_sh_link_hash_entry *) h;
+                 /* Track dynamic relocs needed for local syms too.  */
+                 s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
+                                                sec, r_symndx);
+                 if (s == NULL)
+                   return false;
 
-                 for (p = eh->pcrel_relocs_copied; p != NULL; p = p->next)
-                   if (p->section == sreloc)
-                     break;
+                 head = ((struct elf_sh_dyn_relocs **)
+                         &elf_section_data (s)->local_dynrel);
+               }
 
+             p = *head;
+             if (p == NULL || p->sec != sec)
+               {
+                 bfd_size_type amt = sizeof (*p);
+                 p = ((struct elf_sh_dyn_relocs *) bfd_alloc (dynobj, amt));
                  if (p == NULL)
-                   {
-                     p = ((struct elf_sh_pcrel_relocs_copied *)
-                          bfd_alloc (dynobj, (bfd_size_type) sizeof *p));
-                     if (p == NULL)
-                       return false;
-                     p->next = eh->pcrel_relocs_copied;
-                     eh->pcrel_relocs_copied = p;
-                     p->section = sreloc;
-                     p->count = 0;
-                   }
-
-                 ++p->count;
+                   return false;
+                 p->next = *head;
+                 *head = p;
+                 p->sec = sec;
+                 p->count = 0;
+                 p->pc_count = 0;
                }
+
+             p->count += 1;
+             if (ELF32_R_TYPE (rel->r_info) == R_SH_REL32)
+               p->pc_count += 1;
            }
 
          break;
@@ -5443,9 +5817,11 @@ sh_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
      struct elf_link_hash_entry *h;
      Elf_Internal_Sym *sym;
 {
+  struct elf_sh_link_hash_table *htab;
   bfd *dynobj;
 
-  dynobj = elf_hash_table (info)->dynobj;
+  htab = sh_elf_hash_table (info);
+  dynobj = htab->root.dynobj;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
@@ -5462,9 +5838,9 @@ sh_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
 
       BFD_ASSERT (h->dynindx != -1);
 
-      splt = bfd_get_section_by_name (dynobj, ".plt");
-      sgot = bfd_get_section_by_name (dynobj, ".got.plt");
-      srel = bfd_get_section_by_name (dynobj, ".rela.plt");
+      splt = htab->splt;
+      sgot = htab->sgotplt;
+      srel = htab->srelplt;
       BFD_ASSERT (splt != NULL && sgot != NULL && srel != NULL);
 
       /* Get the index in the procedure linkage table which
@@ -5592,21 +5968,23 @@ sh_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
       /* This symbol has an entry in the global offset table.  Set it
         up.  */
 
-      sgot = bfd_get_section_by_name (dynobj, ".got");
-      srel = bfd_get_section_by_name (dynobj, ".rela.got");
+      sgot = htab->sgot;
+      srel = htab->srelgot;
       BFD_ASSERT (sgot != NULL && srel != NULL);
 
       rel.r_offset = (sgot->output_section->vma
                      + sgot->output_offset
                      + (h->got.offset &~ (bfd_vma) 1));
 
-      /* If this is a -Bsymbolic link, and the symbol is defined
-        locally, we just want to emit a RELATIVE reloc.  Likewise if
-        the symbol was forced to be local because of a version file.
+      /* If this is a static link, or it is a -Bsymbolic link and the
+        symbol is defined locally or was forced to be local because
+        of a version file, we just want to emit a RELATIVE reloc.
         The entry in the global offset table will already have been
         initialized in the relocate_section function.  */
       if (info->shared
-         && (info->symbolic || h->dynindx == -1)
+         && (info->symbolic
+             || h->dynindx == -1
+             || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
          && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
        {
          rel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE);
@@ -5668,29 +6046,29 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
      bfd *output_bfd;
      struct bfd_link_info *info;
 {
+  struct elf_sh_link_hash_table *htab;
   bfd *dynobj;
   asection *sgot;
   asection *sdyn;
 
-  dynobj = elf_hash_table (info)->dynobj;
+  htab = sh_elf_hash_table (info);
+  dynobj = htab->root.dynobj;
 
-  sgot = bfd_get_section_by_name (dynobj, ".got.plt");
-  BFD_ASSERT (sgot != NULL);
+  sgot = htab->sgotplt;
   sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
 
-  if (elf_hash_table (info)->dynamic_sections_created)
+  if (htab->root.dynamic_sections_created)
     {
       asection *splt;
       Elf32_External_Dyn *dyncon, *dynconend;
 
-      BFD_ASSERT (sdyn != NULL);
+      BFD_ASSERT (sgot != NULL && sdyn != NULL);
 
       dyncon = (Elf32_External_Dyn *) sdyn->contents;
       dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
       for (; dyncon < dynconend; dyncon++)
        {
          Elf_Internal_Dyn dyn;
-         const char *name;
          asection *s;
 
          bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
@@ -5701,20 +6079,19 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
              break;
 
            case DT_PLTGOT:
-             name = ".got";
+             s = htab->sgot->output_section;
              goto get_vma;
 
            case DT_JMPREL:
-             name = ".rela.plt";
+             s = htab->srelplt->output_section;
            get_vma:
-             s = bfd_get_section_by_name (output_bfd, name);
              BFD_ASSERT (s != NULL);
              dyn.d_un.d_ptr = s->vma;
              bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
              break;
 
            case DT_PLTRELSZ:
-             s = bfd_get_section_by_name (output_bfd, ".rela.plt");
+             s = htab->srelplt->output_section;
              BFD_ASSERT (s != NULL);
              if (s->_cooked_size != 0)
                dyn.d_un.d_val = s->_cooked_size;
@@ -5733,9 +6110,9 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
                 the linker script arranges for .rela.plt to follow all
                 other relocation sections, we don't have to worry
                 about changing the DT_RELA entry.  */
-             s = bfd_get_section_by_name (output_bfd, ".rela.plt");
-             if (s != NULL)
+             if (htab->srelplt != NULL)
                {
+                 s = htab->srelplt->output_section;
                  if (s->_cooked_size != 0)
                    dyn.d_un.d_val -= s->_cooked_size;
                  else
@@ -5747,7 +6124,7 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
        }
 
       /* Fill in the first entry in the procedure linkage table.  */
-      splt = bfd_get_section_by_name (dynobj, ".plt");
+      splt = htab->splt;
       if (splt && splt->_raw_size > 0)
        {
          if (info->shared)
@@ -5793,7 +6170,7 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
     }
 
   /* Fill in the first three entries in the global offset table.  */
-  if (sgot->_raw_size > 0)
+  if (sgot && sgot->_raw_size > 0)
     {
       if (sdyn == NULL)
        bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents);
@@ -5803,9 +6180,9 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
                    sgot->contents);
       bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 4);
       bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 8);
-    }
 
-  elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
+      elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
+    }
 
   return true;
 }
@@ -5853,11 +6230,11 @@ sh_elf_reloc_type_class (rela)
 #define bfd_elf32_bfd_merge_private_bfd_data \
                                        sh_elf_merge_private_data
 
-#define elf_backend_gc_mark_hook        sh_elf_gc_mark_hook
-#define elf_backend_gc_sweep_hook       sh_elf_gc_sweep_hook
-#define elf_backend_check_relocs        sh_elf_check_relocs
-
-#define elf_backend_can_gc_sections    1
+#define elf_backend_gc_mark_hook       sh_elf_gc_mark_hook
+#define elf_backend_gc_sweep_hook      sh_elf_gc_sweep_hook
+#define elf_backend_check_relocs       sh_elf_check_relocs
+#define elf_backend_copy_indirect_symbol \
+                                       sh_elf_copy_indirect_symbol
 #define elf_backend_create_dynamic_sections \
                                        sh_elf_create_dynamic_sections
 #define bfd_elf32_bfd_link_hash_table_create \
@@ -5872,6 +6249,8 @@ sh_elf_reloc_type_class (rela)
                                        sh_elf_finish_dynamic_sections
 #define elf_backend_reloc_type_class   sh_elf_reloc_type_class
 
+#define elf_backend_can_gc_sections    1
+#define elf_backend_can_refcount       1
 #define elf_backend_want_got_plt       1
 #define elf_backend_plt_readonly       1
 #define elf_backend_want_plt_sym       0
index 4aeb32d6d3912a4a6918784eda34d793604241c9..e1d095d523125c54d7ebf43ac15013570297911e 100644 (file)
@@ -3403,7 +3403,7 @@ elf64_alpha_merge_ind_symbols (hi, dummy)
        {
          rin = ri->next;
          for (rs = rsh; rs ; rs = rs->next)
-           if (ri->rtype == rs->rtype)
+           if (ri->rtype == rs->rtype && ri->srel == rs->srel)
              {
                rs->count += ri->count;
                goto found_reloc;
@@ -5480,7 +5480,7 @@ elf64_alpha_ecoff_debug_swap =
 \f
 /* Use a non-standard hash bucket size of 8.  */
 
-const struct elf_size_info alpha_elf_size_info =
+static const struct elf_size_info alpha_elf_size_info =
 {
   sizeof (Elf64_External_Ehdr),
   sizeof (Elf64_External_Phdr),
@@ -5509,11 +5509,13 @@ const struct elf_size_info alpha_elf_size_info =
   NULL
 };
 
+#ifndef ELF_ARCH
 #define TARGET_LITTLE_SYM      bfd_elf64_alpha_vec
 #define TARGET_LITTLE_NAME     "elf64-alpha"
 #define ELF_ARCH               bfd_arch_alpha
 #define ELF_MACHINE_CODE       EM_ALPHA
 #define ELF_MAXPAGESIZE        0x10000
+#endif /* ELF_ARCH */
 
 #define bfd_elf64_bfd_link_hash_table_create \
   elf64_alpha_bfd_link_hash_table_create
index 0224d336af7c3a2f9075c598dde6d495f42bb383..41174e95c0f247f2abf5c4d67581034e6987aedd 100644 (file)
@@ -143,7 +143,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_NONE",        /* name */
         false,                 /* partial_inplace */
-        0xff,                  /* src_mask */
+        0,                     /* src_mask */
         0,                     /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -174,7 +174,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_ADDR24",      /* name */
         false,                 /* partial_inplace */
-        0xfc000003,            /* src_mask */
+        0,                     /* src_mask */
         0x03fffffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -251,7 +251,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_ADDR14",      /* name */
         false,                 /* partial_inplace */
-        0xffff0003,            /* src_mask */
+        0,                     /* src_mask */
         0x0000fffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -268,7 +268,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_brtaken_reloc, /* special_function */
         "R_PPC64_ADDR14_BRTAKEN",/* name */
         false,                 /* partial_inplace */
-        0xffff0003,            /* src_mask */
+        0,                     /* src_mask */
         0x0000fffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -285,7 +285,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_brtaken_reloc, /* special_function */
         "R_PPC64_ADDR14_BRNTAKEN",/* name */
         false,                 /* partial_inplace */
-        0xffff0003,            /* src_mask */
+        0,                     /* src_mask */
         0x0000fffc,            /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -300,7 +300,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_REL24",       /* name */
         false,                 /* partial_inplace */
-        0xfc000003,            /* src_mask */
+        0,                     /* src_mask */
         0x03fffffc,            /* dst_mask */
         true),                 /* pcrel_offset */
 
@@ -315,7 +315,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_REL14",       /* name */
         false,                 /* partial_inplace */
-        0xffff0003,            /* src_mask */
+        0,                     /* src_mask */
         0x0000fffc,            /* dst_mask */
         true),                 /* pcrel_offset */
 
@@ -332,7 +332,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_brtaken_reloc, /* special_function */
         "R_PPC64_REL14_BRTAKEN", /* name */
         false,                 /* partial_inplace */
-        0xffff0003,            /* src_mask */
+        0,                     /* src_mask */
         0x0000fffc,            /* dst_mask */
         true),                 /* pcrel_offset */
 
@@ -349,7 +349,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_brtaken_reloc, /* special_function */
         "R_PPC64_REL14_BRNTAKEN",/* name */
         false,                 /* partial_inplace */
-        0xffff0003,            /* src_mask */
+        0,                     /* src_mask */
         0x0000fffc,            /* dst_mask */
         true),                 /* pcrel_offset */
 
@@ -682,7 +682,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_ADDR30",      /* name */
         false,                 /* partial_inplace */
-        0x00000003,            /* src_mask */
+        0,                     /* src_mask */
         0xfffffffc,            /* dst_mask */
         true),                 /* pcrel_offset */
 
@@ -998,7 +998,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_ADDR16_DS",   /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1013,7 +1013,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         bfd_elf_generic_reloc, /* special_function */
         "R_PPC64_ADDR16_LO_DS",/* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1028,7 +1028,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_unhandled_reloc, /* special_function */
         "R_PPC64_GOT16_DS",    /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1043,7 +1043,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_unhandled_reloc, /* special_function */
         "R_PPC64_GOT16_LO_DS", /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1058,7 +1058,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_unhandled_reloc, /* special_function */
         "R_PPC64_PLT16_LO_DS", /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1073,7 +1073,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_sectoff_reloc, /* special_function */
         "R_PPC64_SECTOFF_DS",  /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1088,7 +1088,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_sectoff_reloc, /* special_function */
         "R_PPC64_SECTOFF_LO_DS",/* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1103,7 +1103,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_toc_reloc,   /* special_function */
         "R_PPC64_TOC16_DS",    /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1118,7 +1118,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_toc_reloc,   /* special_function */
         "R_PPC64_TOC16_LO_DS", /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1134,7 +1134,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_unhandled_reloc, /* special_function */
         "R_PPC64_PLTGOT16_DS", /* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -1150,7 +1150,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         ppc64_elf_unhandled_reloc, /* special_function */
         "R_PPC64_PLTGOT16_LO_DS",/* name */
         false,                 /* partial_inplace */
-        0x0003,                /* src_mask */
+        0,                     /* src_mask */
         0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
@@ -3758,7 +3758,23 @@ edit_opd (obfd, info)
                    }
 
                  skip = sym_sec->output_section == bfd_abs_section_ptr;
-                 if (!skip)
+                 if (skip)
+                   {
+                     if (h != NULL)
+                       {
+                         /* Arrange for the function descriptor sym
+                            to be dropped.  */
+                         struct elf_link_hash_entry *fdh;
+                         struct ppc_link_hash_entry *fh;
+
+                         fh = (struct ppc_link_hash_entry *) h;
+                         BFD_ASSERT (fh->is_func);
+                         fdh = fh->oh;
+                         fdh->root.u.def.value = 0;
+                         fdh->root.u.def.section = sym_sec;
+                       }
+                   }
+                 else
                    {
                      /* We'll be keeping this opd entry.  */
 
index ba5df98ce1b130c7d1fdef01fd08822a57b7df2e..9340e3348e4a9051941fa4083e62938ee393da66 100644 (file)
@@ -3714,7 +3714,7 @@ sh64_elf64_size_dynamic_sections (output_bfd, info)
        }
 
       /* Allocate memory for the section contents.  */
-      s->contents = (bfd_byte *) bfd_alloc (dynobj, s->_raw_size);
+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size);
       if (s->contents == NULL && s->_raw_size != 0)
        return false;
     }
index eb667eb50e223a17ab7e275e05a785f9f9361f2c..4f54cd35ccc6276c867d417e7a87ded5ac696e46 100644 (file)
@@ -1377,6 +1377,7 @@ elf_slurp_reloc_table_from_section (abfd, asect, rel_hdr, reloc_count,
   arelent *relent;
   unsigned int i;
   int entsize;
+  unsigned int symcount;
 
   allocated = (PTR) bfd_malloc (rel_hdr->sh_size);
   if (allocated == NULL)
@@ -1393,6 +1394,11 @@ elf_slurp_reloc_table_from_section (abfd, asect, rel_hdr, reloc_count,
   BFD_ASSERT (entsize == sizeof (Elf_External_Rel)
              || entsize == sizeof (Elf_External_Rela));
 
+  if (dynamic)
+    symcount = bfd_get_dynamic_symcount (abfd);
+  else
+    symcount = bfd_get_symcount (abfd);
+
   for (i = 0, relent = relents;
        i < reloc_count;
        i++, relent++, native_relocs += entsize)
@@ -1421,6 +1427,13 @@ elf_slurp_reloc_table_from_section (abfd, asect, rel_hdr, reloc_count,
 
       if (ELF_R_SYM (rela.r_info) == 0)
        relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+      else if (ELF_R_SYM (rela.r_info) > symcount)
+       {
+         (*_bfd_error_handler)
+           (_("%s(%s): relocation %d has invalid symbol index %ld"),
+            abfd->filename, asect->name, i, ELF_R_SYM (rela.r_info));
+         relent->sym_ptr_ptr = bfd_abs_section.symbol_ptr_ptr;
+       }
       else
        {
          asymbol **ps, *s;
index 4eea4156acee3b7ef6348be3d6d90dd5705f8126..251bd21ab384a07678a1ed161867b4395a48b4c7 100644 (file)
@@ -343,7 +343,7 @@ elf_link_add_archive_symbols (abfd, info)
                                        false, false, false);
 
              if (h == NULL)
-               {
+               {
                  /* We also need to check references to the symbol
                     without the version.  */
 
@@ -899,19 +899,19 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
 
 /* This function is called to create an indirect symbol from the
    default for the symbol with the default version if needed. The
-   symbol is described by H, NAME, SYM, SEC, VALUE, and OVERRIDE.  We
+   symbol is described by H, NAME, SYM, PSEC, VALUE, and OVERRIDE.  We
    set DYNSYM if the new indirect symbol is dynamic. DT_NEEDED
    indicates if it comes from a DT_NEEDED entry of a shared object.  */
 
 static boolean
-elf_add_default_symbol (abfd, info, h, name, sym, sec, value,
+elf_add_default_symbol (abfd, info, h, name, sym, psec, value,
                        dynsym, override, dt_needed)
      bfd *abfd;
      struct bfd_link_info *info;
      struct elf_link_hash_entry *h;
      const char *name;
      Elf_Internal_Sym *sym;
-     asection **sec;
+     asection **psec;
      bfd_vma *value;
      boolean *dynsym;
      boolean override;
@@ -926,6 +926,7 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value,
   boolean dynamic;
   char *p;
   size_t len, shortlen;
+  asection *sec;
 
   /* If this symbol has a version, and it is the default version, we
      create an indirect symbol from the default name to the fully
@@ -970,7 +971,8 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value,
      actually going to define an indirect symbol.  */
   type_change_ok = false;
   size_change_ok = false;
-  if (! elf_merge_symbol (abfd, info, shortname, sym, sec, value,
+  sec = *psec;
+  if (! elf_merge_symbol (abfd, info, shortname, sym, &sec, value,
                          &hi, &override, &type_change_ok,
                          &size_change_ok, dt_needed))
     return false;
@@ -1077,7 +1079,8 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value,
   /* Once again, merge with any existing symbol.  */
   type_change_ok = false;
   size_change_ok = false;
-  if (! elf_merge_symbol (abfd, info, shortname, sym, sec, value,
+  sec = *psec;
+  if (! elf_merge_symbol (abfd, info, shortname, sym, &sec, value,
                          &hi, &override, &type_change_ok,
                          &size_change_ok, dt_needed))
     return false;
@@ -1085,10 +1088,13 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value,
   if (override)
     {
       /* Here SHORTNAME is a versioned name, so we don't expect to see
-        the type of override we do in the case above.  */
-      (*_bfd_error_handler)
-       (_("%s: warning: unexpected redefinition of `%s'"),
-        bfd_archive_filename (abfd), shortname);
+        the type of override we do in the case above unless it is
+        overridden by a versioned definiton.  */
+      if (hi->root.type != bfd_link_hash_defined
+         && hi->root.type != bfd_link_hash_defweak)
+       (*_bfd_error_handler)
+         (_("%s: warning: unexpected redefinition of indirect versioned symbol `%s'"),
+          bfd_archive_filename (abfd), shortname);
     }
   else
     {
@@ -2765,9 +2771,9 @@ compute_bucket_count (info)
   elf_link_hash_traverse (elf_hash_table (info),
                          elf_collect_hash_codes, &hashcodesp);
 
-/* We have a problem here.  The following code to optimize the table
-   size requires an integer type with more the 32 bits.  If
-   BFD_HOST_U_64_BIT is set we know about such a type.  */
+  /* We have a problem here.  The following code to optimize the table
+     size requires an integer type with more the 32 bits.  If
+     BFD_HOST_U_64_BIT is set we know about such a type.  */
 #ifdef BFD_HOST_U_64_BIT
   if (info->optimize)
     {
@@ -2938,6 +2944,9 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
       struct elf_info_failed eif;
       struct elf_link_hash_entry *h;
       asection *dynstr;
+      struct bfd_elf_version_tree *t;
+      struct bfd_elf_version_expr *d;
+      boolean all_defined;
 
       *sinterpptr = bfd_get_section_by_name (dynobj, ".interp");
       BFD_ASSERT (*sinterpptr != NULL || info->shared);
@@ -3018,6 +3027,57 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
            return false;
        }
 
+      /* Make all global versions with definiton.  */
+      for (t = verdefs; t != NULL; t = t->next)
+       for (d = t->globals; d != NULL; d = d->next)
+         if (!d->symver && strchr (d->pattern, '*') == NULL)
+           {
+             const char *verstr, *name;
+             size_t namelen, verlen, newlen;
+             char *newname, *p;
+             struct elf_link_hash_entry *newh;
+
+             name = d->pattern;
+             namelen = strlen (name);
+             verstr = t->name;
+             verlen = strlen (verstr);
+             newlen = namelen + verlen + 3; 
+
+             newname = (char *) bfd_malloc ((bfd_size_type) newlen);
+             if (newname == NULL)
+               return false;
+             memcpy (newname, name, namelen);
+
+             /* Check the hidden versioned definition.  */
+             p = newname + namelen;
+             *p++ = ELF_VER_CHR;
+             memcpy (p, verstr, verlen + 1);
+             newh = elf_link_hash_lookup (elf_hash_table (info),
+                                          newname, false, false,
+                                          false);
+             if (newh == NULL
+                 || (newh->root.type != bfd_link_hash_defined
+                     && newh->root.type != bfd_link_hash_defweak))
+               {
+                 /* Check the default versioned definition.  */
+                 *p++ = ELF_VER_CHR;
+                 memcpy (p, verstr, verlen + 1);
+                 newh = elf_link_hash_lookup (elf_hash_table (info),
+                                              newname, false, false,
+                                              false);
+               }
+             free (newname);
+
+             /* Mark this version if there is a definition and it is
+                not defined in a shared object.  */
+             if (newh != NULL
+                 && ((newh->elf_link_hash_flags
+                      & ELF_LINK_HASH_DEF_DYNAMIC) == 0)
+                 && (newh->root.type == bfd_link_hash_defined
+                     || newh->root.type == bfd_link_hash_defweak))
+               d->symver = 1;
+           }
+
       /* Attach all the symbols to their version information.  */
       asvinfo.output_bfd = output_bfd;
       asvinfo.info = info;
@@ -3030,6 +3090,28 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
       if (asvinfo.failed)
        return false;
 
+      if (!info->allow_undefined_version)
+       {
+         /* Check if all global versions have a definiton.  */
+         all_defined = true;
+         for (t = verdefs; t != NULL; t = t->next)
+           for (d = t->globals; d != NULL; d = d->next)
+             if (!d->symver && !d->script
+                 && strchr (d->pattern, '*') == NULL)
+               {
+                 (*_bfd_error_handler)
+                   (_("%s: undefined version: %s"),
+                    d->pattern, t->name);
+                 all_defined = false;
+               }
+
+         if (!all_defined)
+           {
+             bfd_set_error (bfd_error_bad_value);
+             return false;
+           }
+       }
+
       /* Find all symbols which were defined in a dynamic object and make
         the backend pick a reasonable value for them.  */
       elf_link_hash_traverse (elf_hash_table (info),
@@ -3085,7 +3167,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
                    {
                      (*_bfd_error_handler)
                        (_("%s: .preinit_array section is not allowed in DSO"),
-                         bfd_archive_filename (sub));
+                        bfd_archive_filename (sub));
                      break;
                    }
 
@@ -3941,7 +4023,7 @@ elf_adjust_dynamic_symbol (h, data)
       && (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) == 0)
     (*_bfd_error_handler)
       (_("warning: type and size of dynamic symbol `%s' are not defined"),
-        h->root.root.string);
+       h->root.root.string);
 
   dynobj = elf_hash_table (eif->info)->dynobj;
   bed = get_elf_backend_data (dynobj);
@@ -4001,7 +4083,7 @@ elf_export_symbol (h, data)
 
       if (!eif->verdefs)
        {
-doit:
+       doit:
          if (! _bfd_elf_link_record_dynamic_symbol (eif->info, h))
            {
              eif->failed = true;
@@ -4258,7 +4340,6 @@ elf_link_assign_sym_version (h, data)
            (_("%s: undefined versioned symbol name %s"),
             bfd_get_filename (sinfo->output_bfd), h->root.root.string);
          bfd_set_error (bfd_error_bad_value);
-error_return:
          sinfo->failed = true;
          return false;
        }
@@ -4272,45 +4353,58 @@ error_return:
   if (h->verinfo.vertree == NULL && sinfo->verdefs != NULL)
     {
       struct bfd_elf_version_tree *t;
-      struct bfd_elf_version_tree *deflt;
+      struct bfd_elf_version_tree *local_ver;
       struct bfd_elf_version_expr *d;
 
       /* See if can find what version this symbol is in.  If the
         symbol is supposed to be local, then don't actually register
         it.  */
-      deflt = NULL;
+      local_ver = NULL;
       for (t = sinfo->verdefs; t != NULL; t = t->next)
        {
          if (t->globals != NULL)
            {
+             boolean matched;
+
+             matched = false;
              for (d = t->globals; d != NULL; d = d->next)
                {
                  if ((*d->match) (d, h->root.root.string))
                    {
-                     h->verinfo.vertree = t;
-                     break;
+                     if (d->symver)
+                       matched = true;
+                     else
+                       {
+                         /* There is a version without definition.  Make
+                            the symbol the default definition for this
+                            version.  */
+                         h->verinfo.vertree = t;
+                         local_ver = NULL;
+                         d->script = 1;
+                         break;
+                       }
                    }
                }
 
              if (d != NULL)
                break;
+             else if (matched)
+               /* There is no undefined version for this symbol. Hide the
+                  default one.  */
+               (*bed->elf_backend_hide_symbol) (info, h, true);
            }
 
          if (t->locals != NULL)
            {
              for (d = t->locals; d != NULL; d = d->next)
                {
+                 /* If the match is "*", keep looking for a more
+                    explicit, perhaps even global, match.  */
                  if (d->pattern[0] == '*' && d->pattern[1] == '\0')
-                   deflt = t;
+                   local_ver = t;
                  else if ((*d->match) (d, h->root.root.string))
                    {
-                     h->verinfo.vertree = t;
-                     if (h->dynindx != -1
-                         && info->shared
-                         && ! info->export_dynamic)
-                       {
-                         (*bed->elf_backend_hide_symbol) (info, h, true);
-                       }
+                     local_ver = t;
                      break;
                    }
                }
@@ -4320,9 +4414,9 @@ error_return:
            }
        }
 
-      if (deflt != NULL && h->verinfo.vertree == NULL)
+      if (local_ver != NULL)
        {
-         h->verinfo.vertree = deflt;
+         h->verinfo.vertree = local_ver;
          if (h->dynindx != -1
              && info->shared
              && ! info->export_dynamic)
@@ -4330,43 +4424,6 @@ error_return:
              (*bed->elf_backend_hide_symbol) (info, h, true);
            }
        }
-
-      /* We need to check if a hidden versioned definition should
-        hide the default one.  */
-      if (h->dynindx != -1 && h->verinfo.vertree != NULL)
-       {
-         const char *verstr, *name;
-         size_t namelen, verlen, newlen;
-         char *newname;
-         struct elf_link_hash_entry *newh;
-
-         name = h->root.root.string;
-         namelen = strlen (name);
-         verstr = h->verinfo.vertree->name;
-         verlen = strlen (verstr);
-         newlen = namelen + verlen + 2;
-
-         newname = (char *) bfd_malloc ((bfd_size_type) newlen);
-         if (newname == NULL)
-           goto error_return;
-         memcpy (newname, name, namelen);
-
-         /* Check the hidden versioned definition.  */
-         p = newname + namelen;
-         *p++ = ELF_VER_CHR;
-         memcpy (p, verstr, verlen + 1);
-         newh = elf_link_hash_lookup (elf_hash_table (info), newname,
-                                   false, false, false);
-
-         if (newh
-             && (newh->root.type == bfd_link_hash_defined
-                 || newh->root.type == bfd_link_hash_defweak))
-           /* We find a hidden versioned definition. Hide the default
-              one.  */
-           (*bed->elf_backend_hide_symbol) (info, h, true);
-
-         free (newname);
-       }
     }
 
   return true;
@@ -4576,7 +4633,7 @@ elf_link_adjust_relocs (abfd, rel_hdr, count, rel_hash)
 
          for (j = 0; j < bed->s->int_rels_per_ext_rel; j++)
            irela[j].r_info = ELF_R_INFO ((*rel_hash)->indx,
-                                      ELF_R_TYPE (irela[j].r_info));
+                                         ELF_R_TYPE (irela[j].r_info));
 
          if (bed->s->swap_reloca_out)
            (*bed->s->swap_reloca_out) (abfd, irela, (bfd_byte *) erela);
@@ -4589,10 +4646,12 @@ elf_link_adjust_relocs (abfd, rel_hdr, count, rel_hash)
   free (irela);
 }
 
-struct elf_link_sort_rela {
+struct elf_link_sort_rela
+{
   bfd_vma offset;
   enum elf_reloc_type_class type;
-  union {
+  union
+  {
     Elf_Internal_Rel rel;
     Elf_Internal_Rela rela;
   } u;
@@ -5266,7 +5325,7 @@ elf_bfd_final_link (abfd, info)
              size = 0;
              for (o = sec->link_order_head; o != NULL; o = o->next)
                if (size < o->offset + o->size)
-             size = o->offset + o->size;
+                 size = o->offset + o->size;
            }
          end = sec->vma + size;
        }
@@ -5405,8 +5464,8 @@ elf_bfd_final_link (abfd, info)
              sym = e->isym;
 
              if (e->isym.st_shndx != SHN_UNDEF
-                  && (e->isym.st_shndx < SHN_LORESERVE
-                      || e->isym.st_shndx > SHN_HIRESERVE))
+                 && (e->isym.st_shndx < SHN_LORESERVE
+                     || e->isym.st_shndx > SHN_HIRESERVE))
                {
                  s = bfd_section_from_elf_index (e->input_bfd,
                                                  e->isym.st_shndx);
@@ -6343,7 +6402,7 @@ elf_link_output_extsym (h, data)
 
   /* If we're stripping it, then it was just a dynamic symbol, and
      there's nothing else to do.  */
-  if (strip)
+  if (strip || (input_sec->flags & SEC_EXCLUDE) != 0)
     return true;
 
   h->indx = bfd_get_symcount (finfo->output_bfd);
@@ -6395,19 +6454,19 @@ elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
     }
   else
     {
-      (*_bfd_error_handler) (
-        _("%s: relocation size mismatch in %s section %s"),
-        bfd_get_filename (output_bfd),
-        bfd_archive_filename (input_section->owner),
-        input_section->name);
+      (*_bfd_error_handler)
+       (_("%s: relocation size mismatch in %s section %s"),
+        bfd_get_filename (output_bfd),
+        bfd_archive_filename (input_section->owner),
+        input_section->name);
       bfd_set_error (bfd_error_wrong_object_format);
       return false;
     }
 
   bed = get_elf_backend_data (output_bfd);
   irela = internal_relocs;
-  irelaend = irela + NUM_SHDR_ENTRIES (input_rel_hdr)
-                    * bed->s->int_rels_per_ext_rel;
+  irelaend = irela + (NUM_SHDR_ENTRIES (input_rel_hdr)
+                     * bed->s->int_rels_per_ext_rel);
 
   if (input_rel_hdr->sh_entsize == sizeof (Elf_External_Rel))
     {
@@ -7043,7 +7102,6 @@ elf_link_input_bfd (finfo, input_bfd)
                                          internal_relocs))
                    return false;
                }
-
            }
        }
 
@@ -7560,28 +7618,27 @@ elf_finish_pointer_linker_section (output_bfd, input_bfd, info, lsect, h,
 /* Garbage collect unused sections.  */
 
 static boolean elf_gc_mark
-  PARAMS ((struct bfd_link_info *info, asection *sec,
-          asection * (*gc_mark_hook)
-            PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
-                     struct elf_link_hash_entry *, Elf_Internal_Sym *))));
+  PARAMS ((struct bfd_link_info *, asection *,
+          asection * (*) (asection *, struct bfd_link_info *,
+                          Elf_Internal_Rela *, struct elf_link_hash_entry *,
+                          Elf_Internal_Sym *)));
 
 static boolean elf_gc_sweep
-  PARAMS ((struct bfd_link_info *info,
-          boolean (*gc_sweep_hook)
-            PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *o,
-                     const Elf_Internal_Rela *relocs))));
+  PARAMS ((struct bfd_link_info *,
+          boolean (*) (bfd *, struct bfd_link_info *, asection *,
+                       const Elf_Internal_Rela *)));
 
 static boolean elf_gc_sweep_symbol
-  PARAMS ((struct elf_link_hash_entry *h, PTR idxptr));
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 static boolean elf_gc_allocate_got_offsets
-  PARAMS ((struct elf_link_hash_entry *h, PTR offarg));
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 static boolean elf_gc_propagate_vtable_entries_used
-  PARAMS ((struct elf_link_hash_entry *h, PTR dummy));
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 static boolean elf_gc_smash_unused_vtentry_relocs
-  PARAMS ((struct elf_link_hash_entry *h, PTR dummy));
+  PARAMS ((struct elf_link_hash_entry *, PTR));
 
 /* The mark phase of garbage collection.  For a given section, mark
    it and any sections in this section's group, and all the sections
@@ -7591,9 +7648,10 @@ static boolean
 elf_gc_mark (info, sec, gc_mark_hook)
      struct bfd_link_info *info;
      asection *sec;
-     asection * (*gc_mark_hook)
-       PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
-               struct elf_link_hash_entry *, Elf_Internal_Sym *));
+     asection * (*gc_mark_hook) PARAMS ((asection *, struct bfd_link_info *,
+                                        Elf_Internal_Rela *,
+                                        struct elf_link_hash_entry *,
+                                        Elf_Internal_Sym *));
 {
   boolean ret;
   asection *group_sec;
@@ -7705,9 +7763,8 @@ elf_gc_mark (info, sec, gc_mark_hook)
 static boolean
 elf_gc_sweep (info, gc_sweep_hook)
      struct bfd_link_info *info;
-     boolean (*gc_sweep_hook)
-       PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *o,
-               const Elf_Internal_Rela *relocs));
+     boolean (*gc_sweep_hook) PARAMS ((bfd *, struct bfd_link_info *,
+                                      asection *, const Elf_Internal_Rela *));
 {
   bfd *sub;
 
@@ -8422,7 +8479,12 @@ elf_bfd_discard_info (output_bfd, info)
          if (_bfd_elf_discard_section_eh_frame (abfd, info, eh, ehdr,
                                                 elf_reloc_symbol_deleted_p,
                                                 &cookie))
-           ret = true;
+           {
+             /* Relocs have been edited.  Ensure edited version is
+                used later in relocate_section.  */
+             elf_section_data (eh)->relocs = cookie.rels;
+             ret = true;
+           }
          if (cookie.rels && elf_section_data (eh)->relocs != cookie.rels)
            free (cookie.rels);
        }
index 9459aed176140c6a2c8e3562f57ea235fba1e9f5..fb26ad57bacbc20d1f5db33ad4a6dc94051aa161 100644 (file)
@@ -1446,15 +1446,18 @@ mips_elf_global_got_index (abfd, h)
   bfd_vma index;
   asection *sgot;
   struct mips_got_info *g;
+  long global_got_dynindx = 0;
 
   g = mips_elf_got_info (abfd, &sgot);
+  if (g->global_gotsym != NULL)
+    global_got_dynindx = g->global_gotsym->dynindx;
 
   /* Once we determine the global GOT entry with the lowest dynamic
      symbol table index, we must put all dynamic symbols with greater
      indices into the GOT.  That makes it easy to calculate the GOT
      offset.  */
-  BFD_ASSERT (h->dynindx >= g->global_gotsym->dynindx);
-  index = ((h->dynindx - g->global_gotsym->dynindx + g->local_gotno)
+  BFD_ASSERT (h->dynindx >= global_got_dynindx);
+  index = ((h->dynindx - global_got_dynindx + g->local_gotno)
           * MIPS_ELF_GOT_SIZE (abfd));
   BFD_ASSERT (index < sgot->_raw_size);
 
index 87e97d04b146880454e6c56694df12850e2f1704..d1c5eb13b40da2e1d7df51ddded4e1ed8e04f370 100644 (file)
@@ -1414,7 +1414,7 @@ ieee_archive_p (abfd)
 
   abfd->tdata.ieee_ar_data = (ieee_ar_data_type *) bfd_alloc (abfd, amt);
   if (!abfd->tdata.ieee_ar_data)
-    goto error_return;
+    goto error_ret_restore;
   ieee = IEEE_AR_DATA (abfd);
 
   /* Ignore the return value here.  It doesn't matter if we don't read
@@ -1530,13 +1530,13 @@ ieee_archive_p (abfd)
   return abfd->xvec;
 
  got_wrong_format_error:
-  bfd_release (abfd, ieee);
-  abfd->tdata.ieee_ar_data = save;
   bfd_set_error (bfd_error_wrong_format);
-
  error_return:
   if (elts != NULL)
     free (elts);
+  bfd_release (abfd, ieee);
+ error_ret_restore:
+  abfd->tdata.ieee_ar_data = save;
 
   return NULL;
 }
@@ -1732,7 +1732,7 @@ ieee_object_p (abfd)
 got_wrong_format:
   bfd_set_error (bfd_error_wrong_format);
 fail:
-  (void) bfd_release (abfd, ieee);
+  bfd_release (abfd, ieee);
   abfd->tdata.ieee_data = save;
   return (const bfd_target *) NULL;
 }
index 4cba29bf7bb938170dbd9c4fbbdd3fca16b18051..8188c01c89efa08c3cf44a165770e4c3455843ea 100644 (file)
@@ -193,19 +193,16 @@ static boolean
 ihex_mkobject (abfd)
      bfd *abfd;
 {
-  if (abfd->tdata.ihex_data == NULL)
-    {
-      struct ihex_data_struct *tdata;
-      bfd_size_type amt = sizeof (struct ihex_data_struct);
+  struct ihex_data_struct *tdata;
+  bfd_size_type amt = sizeof (struct ihex_data_struct);
 
-      tdata = (struct ihex_data_struct *) bfd_alloc (abfd, amt);
-      if (tdata == NULL)
-       return false;
-      abfd->tdata.ihex_data = tdata;
-      tdata->head = NULL;
-      tdata->tail = NULL;
-    }
+  tdata = (struct ihex_data_struct *) bfd_alloc (abfd, amt);
+  if (tdata == NULL)
+    return false;
 
+  abfd->tdata.ihex_data = tdata;
+  tdata->head = NULL;
+  tdata->tail = NULL;
   return true;
 }
 
@@ -513,6 +510,7 @@ static const bfd_target *
 ihex_object_p (abfd)
      bfd *abfd;
 {
+  PTR tdata_save;
   bfd_byte b[9];
   unsigned int i;
   unsigned int type;
@@ -551,9 +549,14 @@ ihex_object_p (abfd)
     }
 
   /* OK, it looks like it really is an Intel Hex file.  */
-  if (! ihex_mkobject (abfd)
-      || ! ihex_scan (abfd))
-    return NULL;
+  tdata_save = abfd->tdata.any;
+  if (! ihex_mkobject (abfd) || ! ihex_scan (abfd))
+    {
+      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
+       bfd_release (abfd, abfd->tdata.any);
+      abfd->tdata.any = tdata_save;
+      return NULL;
+    }
 
   return abfd->xvec;
 }
index bec80049f49b8afd21385f5a5208d1a6a232def6..348011425905ddf20ef6a521c87b9558b578590c 100644 (file)
@@ -799,6 +799,9 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_386_RELATIVE",
   "BFD_RELOC_386_GOTOFF",
   "BFD_RELOC_386_GOTPC",
+  "BFD_RELOC_386_TLS_TPOFF",
+  "BFD_RELOC_386_TLS_IE",
+  "BFD_RELOC_386_TLS_GOTIE",
   "BFD_RELOC_386_TLS_LE",
   "BFD_RELOC_386_TLS_GD",
   "BFD_RELOC_386_TLS_LDM",
index c20e9a3dfbd5abcb35ecb03c0afb0113b7ff9e4a..a621acc4b27c88b1ccf5d873c7acdebdd94e9318 100644 (file)
@@ -1207,7 +1207,10 @@ _("%s: Recognised but unhandled machine type (0x%x) in Import Library Format arc
     return NULL;
 
   if (bfd_bread (ptr, size, abfd) != size)
-    return NULL;
+    {
+      bfd_release (abfd, ptr);
+      return NULL;
+    }
 
   symbol_name = ptr;
   source_dll  = ptr + strlen (ptr) + 1;
@@ -1219,14 +1222,17 @@ _("%s: Recognised but unhandled machine type (0x%x) in Import Library Format arc
        (_("%s: string not null terminated in ILF object file."),
         bfd_archive_filename (abfd));
       bfd_set_error (bfd_error_malformed_archive);
-
+      bfd_release (abfd, ptr);
       return NULL;
     }
 
   /* Now construct the bfd.  */
   if (! pe_ILF_build_a_bfd (abfd, magic, symbol_name,
                            source_dll, ordinal, types))
-    return NULL;
+    {
+      bfd_release (abfd, ptr);
+      return NULL;
+    }
 
   return abfd->xvec;
 }
index fdc178156ad60e1476fb6675c28ee14019241d1c..e73f09b0b68469087b49ae256abd0ff88dc22e60 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bfd 2.12.91\n"
 "POT-Creation-Date: 2002-07-23 15:55-0400\n"
-"PO-Revision-Date: 2002-07-29 16:34+0200\n"
+"PO-Revision-Date: 2002-07-30 21:55+0200\n"
 "Last-Translator: Christian Rose <menthos@menthos.com>\n"
 "Language-Team: Swedish <sv@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -2555,7 +2555,7 @@ msgstr ""
 
 #: peigen.c:1192 pepigen.c:1192
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma: Tips/Ordning Medlemsnamn Bundet till\n"
+msgstr "\tvma: Tips/Ordn Medlemsnamn Bundet till\n"
 
 #: peigen.c:1217 pepigen.c:1217
 msgid ""
index 80dc9e118676c4b372717d7e0ed49d47ed77a592..092c0ac5a0c83c72cabd9b913e02a2b53deec6da 100644 (file)
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.12-pre020121\n"
-"POT-Creation-Date: 2002-01-17 12:55+0000\n"
-"PO-Revision-Date: 2002-01-24 13:11EET\n"
+"Project-Id-Version: bfd 2.12.91\n"
+"POT-Creation-Date: 2002-07-23 15:55-0400\n"
+"PO-Revision-Date: 2002-08-10 13:11EET\n"
 "Last-Translator: Deniz Akkus Kanca <deniz@arayan.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-9\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 0.9.5\n"
 
-#: aout-adobe.c:196
+#: aout-adobe.c:197
 #, c-format
 msgid "%s: Unknown section type in a.out.adobe file: %x\n"
-msgstr "%s: a.out.adobe dosyasýnda bilinmeyen bölüm türü: %x\n"
+msgstr "%s: a.out.adobe dosyasında bilinmeyen bölüm türü: %x\n"
 
 #: aout-cris.c:208
 #, c-format
 msgid "%s: Invalid relocation type exported: %d"
-msgstr "%s: Geçersiz yer deðiþtirme türü ihraç edilmiþ: %d"
+msgstr "%s: Geçersiz yer değiştirme türü ihraç edilmiş: %d"
 
 #: aout-cris.c:252
 #, c-format
 msgid "%s: Invalid relocation type imported: %d"
-msgstr "%s: Geçersiz yer deðiþtirme türü ithal edilmiþ: %d"
+msgstr "%s: Geçersiz yer değiştirme türü ithal edilmiş: %d"
 
 #: aout-cris.c:263
 #, c-format
 msgid "%s: Bad relocation record imported: %d"
-msgstr "%s: Geçersiz yer deðiþtirme kaydý ithal edilmiþ: %d"
+msgstr "%s: Geçersiz yer değiştirme kaydı ithal edilmiş: %d"
 
 #: aoutx.h:1282 aoutx.h:1699
 #, c-format
 msgid "%s: can not represent section `%s' in a.out object file format"
-msgstr "%s: `%s' bölümü a.out nesne dosya biçeminde gösterilemez"
+msgstr "%s: `%s' bölümü a.out nesne dosya biçeminde gösterilemez"
 
 #: aoutx.h:1669
 #, c-format
 msgid "%s: can not represent section for symbol `%s' in a.out object file format"
-msgstr "%s: `%s' sembol bölümü a.out nesne dosyasýnda gösterilemez"
+msgstr "%s: `%s' sembol bölümü a.out nesne dosyasında gösterilemez"
 
 #: aoutx.h:1671
 msgid "*unknown*"
 msgstr "*bilinmeyen*"
 
-#: aoutx.h:3735
+#: aoutx.h:3732
 #, c-format
 msgid "%s: relocateable link from %s to %s not supported"
-msgstr "%s: %s'dan %s'ya yeri deðiþtirilebilen bað desteklenmiyor"
+msgstr "%s: %s'dan %s'ya yeri değiştirilebilen bağ desteklenmiyor"
 
 #: archive.c:1826
 msgid "Warning: writing archive was slow: rewriting timestamp\n"
-msgstr "Uyarý: arþiv yazma iþlemi yavaþ: zaman damgasý yeniden yazýlýyor\n"
+msgstr "Uyarı: arşiv yazma işlemi yavaş: zaman damgası yeniden yazılıyor\n"
 
 #: archive.c:2093
 msgid "Reading archive file mod timestamp"
-msgstr "Arþiv dosyasý deðiþim zaman damgasý okunuyor"
+msgstr "Arşiv dosyası değişim zaman damgası okunuyor"
 
 #. FIXME: bfd can't call perror.
 #: archive.c:2120
 msgid "Writing updated armap timestamp"
-msgstr "Güncellenmiþ armap zaman damgasý yazýlýyor"
+msgstr "Güncellenmiş armap zaman damgası yazılıyor"
 
-#: bfd.c:281
+#: bfd.c:274
 msgid "No error"
 msgstr "Hata yok"
 
-#: bfd.c:282
+#: bfd.c:275
 msgid "System call error"
-msgstr "Sistem çaðrý hatasý"
+msgstr "Sistem çağrı hatası"
 
-#: bfd.c:283
+#: bfd.c:276
 msgid "Invalid bfd target"
-msgstr "Geçersiz bfd hedefi"
+msgstr "Geçersiz bfd hedefi"
 
-#: bfd.c:284
+#: bfd.c:277
 msgid "File in wrong format"
-msgstr "Dosya yanlýþ biçemde"
+msgstr "Dosya yanlış biçemde"
 
-#: bfd.c:285
+#: bfd.c:278
 msgid "Archive object file in wrong format"
-msgstr "Arþiv nesne dosyasý yanlýþ biçemde"
+msgstr "Arşiv nesne dosyası yanlış biçemde"
 
-#: bfd.c:286
+#: bfd.c:279
 msgid "Invalid operation"
-msgstr "Geçersiz iþlem"
+msgstr "Geçersiz işlem"
 
-#: bfd.c:287
+#: bfd.c:280
 msgid "Memory exhausted"
-msgstr "Bellek tükendi"
+msgstr "Bellek tükendi"
 
-#: bfd.c:288
+#: bfd.c:281
 msgid "No symbols"
 msgstr "Sembol yok"
 
-#: bfd.c:289
+#: bfd.c:282
 msgid "Archive has no index; run ranlib to add one"
-msgstr "Arþivin indeksi yok; ranlib çalýþtýrarak indeks ekleyin"
+msgstr "Arşivin indeksi yok; ranlib çalıştırarak indeks ekleyin"
 
-#: bfd.c:290
+#: bfd.c:283
 msgid "No more archived files"
-msgstr "Baþka arþivlenmiþ dosya yok"
+msgstr "Başka arşivlenmiş dosya yok"
 
-#: bfd.c:291
+#: bfd.c:284
 msgid "Malformed archive"
-msgstr "Bozuk arþiv"
+msgstr "Bozuk arşiv"
 
-#: bfd.c:292
+#: bfd.c:285
 msgid "File format not recognized"
-msgstr "Dosya biçemi tanýnmýyor"
+msgstr "Dosya biçemi tanınmıyor"
 
-#: bfd.c:293
+#: bfd.c:286
 msgid "File format is ambiguous"
-msgstr "Dosya biçemi belirsiz"
+msgstr "Dosya biçemi belirsiz"
 
-#: bfd.c:294
+#: bfd.c:287
 msgid "Section has no contents"
-msgstr "Bölümde içerik yok"
+msgstr "Bölümde içerik yok"
 
-#: bfd.c:295
+#: bfd.c:288
 msgid "Nonrepresentable section on output"
-msgstr "Çýktýda gösterilemeyen bölüm"
+msgstr "Çıktıda gösterilemeyen bölüm"
 
-#: bfd.c:296
+#: bfd.c:289
 msgid "Symbol needs debug section which does not exist"
-msgstr "Sembol, olmayan hata ayýklama bölümünü istiyor"
+msgstr "Sembol, olmayan hata ayıklama bölümünü istiyor"
 
-#: bfd.c:297
+#: bfd.c:290
 msgid "Bad value"
-msgstr "Geçersiz deðer"
+msgstr "Geçersiz değer"
 
-#: bfd.c:298
+#: bfd.c:291
 msgid "File truncated"
-msgstr "Dosya budandý"
+msgstr "Dosya budandı"
 
-#: bfd.c:299
+#: bfd.c:292
 msgid "File too big"
-msgstr "Dosya fazla büyük"
+msgstr "Dosya fazla büyük"
 
-#: bfd.c:300
+#: bfd.c:293
 msgid "#<Invalid error code>"
-msgstr "#<Geçersiz hata kodu>"
+msgstr "#<Geçersiz hata kodu>"
 
-#: bfd.c:707
+#: bfd.c:700
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
-msgstr "BFD %s, olumlama baþarýsýz %s:%d"
+msgstr "BFD %s, olumlama başarısız %s:%d"
 
-#: bfd.c:726
+#: bfd.c:719
 #, c-format
 msgid "BFD %s internal error, aborting at %s line %d in %s\n"
-msgstr "BFD %s iç hatasý, %s'da, %d satýrý, %s içerisinde iþlem durduruldu\n"
+msgstr "BFD %s iç hatası, %s'da, %d satırı, %s içerisinde işlem durduruldu\n"
 
-#: bfd.c:730
+#: bfd.c:723
 #, c-format
-msgid "BFD %sinternal error, aborting at %s line %d\n"
-msgstr "BFD %s iç hatasý, %s, %d satýrýnda iþlem durduruldu\n"
+msgid "BFD %s internal error, aborting at %s line %d\n"
+msgstr "BFD %s iç hatası, %s, %d satırında işlem durduruldu\n"
 
-#: bfd.c:732
+#: bfd.c:725
 msgid "Please report this bug.\n"
-msgstr "Lütfen bu hatayý bildirin.\n"
+msgstr "Lütfen bu hatayı bildirin.\n"
 
 #: binary.c:306
 #, c-format
 msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
-msgstr "Uyarý: `%s' bölümü çok büyük (negatif) dosya göreli konumu 0x%lx'e yazýlýyor."
+msgstr "Uyarı: `%s' bölümü çok büyük (negatif) dosya göreli konumu 0x%lx'e yazılıyor."
 
 #: coff-a29k.c:119
 msgid "Missing IHCONST"
@@ -178,1337 +178,1584 @@ msgstr "IHCONST yok"
 msgid "Missing IHIHALF"
 msgstr "IHIHALF yok"
 
-#: coff-a29k.c:212
+#: coff-a29k.c:212 coff-or32.c:229
 msgid "Unrecognized reloc"
-msgstr "Tanýnmayan yer deðiþtirme"
+msgstr "Tanınmayan yer değiştirme"
 
 #: coff-a29k.c:408
 msgid "missing IHCONST reloc"
-msgstr "eksik IHCONST yer deðiþtirmesi"
+msgstr "eksik IHCONST yer değiştirmesi"
 
 #: coff-a29k.c:498
 msgid "missing IHIHALF reloc"
-msgstr "eksik IHIHALF yer deðiþtirmesi"
+msgstr "eksik IHIHALF yer değiştirmesi"
 
-#: coff-alpha.c:881 coff-alpha.c:918
+#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1432
 msgid "GP relative relocation used when GP not defined"
-msgstr "GP tanýmlanmamýþken GP göreli yer deðiþtirmesi kullanýlmýþ"
+msgstr "GP tanımlanmamışken GP göreli yer değiştirmesi kullanılmış"
 
 #: coff-alpha.c:1485
 msgid "using multiple gp values"
-msgstr "birden fazla gp deðeri kullanýlýyor"
+msgstr "birden fazla gp değeri kullanılıyor"
 
-#: coff-alpha.c:1989 coff-mips.c:1433
-msgid "GP relative relocation when GP not defined"
-msgstr "GP tanýmlanmamýþken GP göreli yer deðiþtirmesi"
-
-#: coff-arm.c:1051 elf32-arm.h:285
+#: coff-arm.c:1066 elf32-arm.h:285
 #, c-format
 msgid "%s: unable to find THUMB glue '%s' for `%s'"
-msgstr "%1$s: `%3$s' için THUMB birleþtiricisi '%2$s' bulunamadý "
+msgstr "%1$s: `%3$s' için THUMB birleştiricisi '%2$s' bulunamadı "
 
-#: coff-arm.c:1080 elf32-arm.h:320
+#: coff-arm.c:1096 elf32-arm.h:320
 #, c-format
 msgid "%s: unable to find ARM glue '%s' for `%s'"
-msgstr "%1$s: `%3$s' için ARM birleþtiricisi '%2$s' bulunamadý"
+msgstr "%1$s: `%3$s' için ARM birleştiricisi '%2$s' bulunamadı"
 
-#: coff-arm.c:1375 coff-arm.c:1470 elf32-arm.h:886 elf32-arm.h:990
+#: coff-arm.c:1391 coff-arm.c:1486 elf32-arm.h:887 elf32-arm.h:991
 #, c-format
 msgid "%s(%s): warning: interworking not enabled."
-msgstr "%s(%s): uyarý: beraber çalýþma kipi etkin deðil."
+msgstr "%s(%s): uyarı: beraber çalışma kipi etkin değil."
 
-#: coff-arm.c:1379 elf32-arm.h:993
+#: coff-arm.c:1395 elf32-arm.h:994
 #, c-format
 msgid "  first occurrence: %s: arm call to thumb"
-msgstr "  ilk ortaya çýkýþ: %s: thumb'a arm'dan çaðrý"
+msgstr "  ilk ortaya çıkış: %s: thumb'a arm'dan çağrı"
 
-#: coff-arm.c:1474 elf32-arm.h:889
+#: coff-arm.c:1490 elf32-arm.h:890
 #, c-format
 msgid "  first occurrence: %s: thumb call to arm"
-msgstr "  ilk ortaya çýkýþ: %s: arm'a thumb'dan çaðrý"
+msgstr "  ilk ortaya çıkış: %s: arm'a thumb'dan çağrı"
 
-#: coff-arm.c:1477
+#: coff-arm.c:1493
 msgid "  consider relinking with --support-old-code enabled"
-msgstr "  --support-old-code seçeneði ile yeniden baðlamayý deneyin"
+msgstr "  --support-old-code seçeneği ile yeniden bağlamayı deneyin"
 
-#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017
+#: coff-arm.c:1785 coff-tic80.c:686 cofflink.c:3031
 #, c-format
 msgid "%s: bad reloc address 0x%lx in section `%s'"
-msgstr "%1$s:  `%3$s' bölümünde geçersiz yer deðiþtirme adresi 0x%2$lx"
+msgstr "%1$s:  `%3$s' bölümünde geçersiz yer değiştirme adresi 0x%2$lx"
 
-#: coff-arm.c:2107
+#: coff-arm.c:2127
 #, c-format
 msgid "%s: illegal symbol index in reloc: %d"
-msgstr "%s: yer deðiþtirmede geçersiz sembol indeksi: %d"
+msgstr "%s: yer değiştirmede geçersiz sembol indeksi: %d"
 
-#: coff-arm.c:2235
+#: coff-arm.c:2255
 #, c-format
-msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d"
-msgstr "%s: HATA: APCS-%d için derlenmiþ fakat hedef %s APCS-%d kullanýyor"
+msgid "ERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%d"
+msgstr "Hata: %s APCS-%d için derlenmiş, fakat %s APCS-%d için derlenmiş"
 
-#: coff-arm.c:2250
+#: coff-arm.c:2270 elf32-arm.h:2297
 #, c-format
-msgid "%s: ERROR: passes floats in float registers whereas target %s uses integer registers"
-msgstr "%s: HATA: kayan sayýlarý kayan yazmaçlarda geçiriyor fakat hedef %s tamsayý yazmaç kullanýyor"
+msgid "ERROR: %s passes floats in float registers, whereas %s passes them in integer registers"
+msgstr ""
+"Hata: %s kayan sayıları kayan sayı yazmaçlarında geçiriyor, \n"
+"      fakat %s tamsayı yazmaçlarında geçiriyor"
 
-#: coff-arm.c:2253
+#: coff-arm.c:2273 elf32-arm.h:2302
 #, c-format
-msgid "%s: ERROR: passes floats in integer registers whereas target %s uses float registers"
-msgstr "%s: HATA: kayan sayýlarý tamsayý yazmaçlarda geçiriyor fakat hedef %s kayan yazmaç kullanýyor"
+msgid "ERROR: %s passes floats in integer registers, whereas %s passes them in float registers"
+msgstr ""
+"Hata: %s kayan sayıları tamsayı yazmaçlarında geçiriyor, \n"
+"      fakat %s kayan sayı yazmaçlarında geçiriyor"
 
-#: coff-arm.c:2268
+#: coff-arm.c:2288
 #, c-format
-msgid "%s: ERROR: compiled as position independent code, whereas target %s is absolute position"
-msgstr "%s: HATA: yerden baðýmsýz kod olarak derlendi, fakat hedef %s yere baðýmlý"
+msgid "ERROR: %s is compiled as position independent code, whereas target %s is absolute position"
+msgstr "HATA: %s yerden bağımsız kod olarak derlendi, fakat hedef %s yere bağımlı"
 
-#: coff-arm.c:2271
+#: coff-arm.c:2291
 #, c-format
-msgid "%s: ERROR: compiled as absolute position code, whereas target %s is position independent"
-msgstr "%s: HATA: yere baðýmlý kod olarak derlendi, fakat hedef %s yerden baðýmsýz"
+msgid "ERROR: %s is compiled as absolute position code, whereas target %s is position independent"
+msgstr "HATA: %s yere bağımlı kod olarak derlendi, fakat hedef %s yerden bağımsız"
 
-#: coff-arm.c:2300
+#: coff-arm.c:2320 elf32-arm.h:2358
 #, c-format
-msgid "Warning: input file %s supports interworking, whereas %s does not."
-msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý destekliyor, fakat %s desteklemiyor."
+msgid "Warning: %s supports interworking, whereas %s does not"
+msgstr "Uyarı: %s girdi dosyası beraber çalışmayı destekliyor, fakat %s desteklemiyor."
 
-#: coff-arm.c:2303
+#: coff-arm.c:2323 elf32-arm.h:2365
 #, c-format
-msgid "Warning: input file %s does not support interworking, whereas %s does."
-msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý desteklemiyor, fakat %s destekliyor."
+msgid "Warning: %s does not support interworking, whereas %s does"
+msgstr "Uyarı: %s girdi dosyası beraber çalışmayı desteklemiyor, fakat %s destekliyor."
 
-#: coff-arm.c:2330
+#: coff-arm.c:2350
 #, c-format
 msgid "private flags = %x:"
-msgstr "özel bayraklar = %x:"
+msgstr "özel bayraklar = %x:"
 
-#: coff-arm.c:2338 elf32-arm.h:2408
+#: coff-arm.c:2358 elf32-arm.h:2418
 msgid " [floats passed in float registers]"
-msgstr " [kayan sayýlar kayan yazmaçlarda geçirildi]"
+msgstr " [kayan sayılar kayan yazmaçlarda geçirildi]"
 
-#: coff-arm.c:2340
+#: coff-arm.c:2360
 msgid " [floats passed in integer registers]"
-msgstr " [kayan sayýlar tamsayý yazmaçlarda geçirildi]"
+msgstr " [kayan sayılar tamsayı yazmaçlarda geçirildi]"
 
-#: coff-arm.c:2343 elf32-arm.h:2411
+#: coff-arm.c:2363 elf32-arm.h:2421
 msgid " [position independent]"
-msgstr " [yerden baðýmsýz]"
+msgstr " [yerden bağımsız]"
 
-#: coff-arm.c:2345
+#: coff-arm.c:2365
 msgid " [absolute position]"
-msgstr " [yere baðýmlý]"
+msgstr " [yere bağımlı]"
 
-#: coff-arm.c:2349
+#: coff-arm.c:2369
 msgid " [interworking flag not initialised]"
-msgstr " [beraber çalýþma bayraðýna öndeðer atanmamýþ]"
+msgstr " [beraber çalışma bayrağına öndeğer atanmamış]"
 
-#: coff-arm.c:2351
+#: coff-arm.c:2371
 msgid " [interworking supported]"
-msgstr " [beraber çalýþma destekleniyor]"
+msgstr " [beraber çalışma destekleniyor]"
 
-#: coff-arm.c:2353
+#: coff-arm.c:2373
 msgid " [interworking not supported]"
-msgstr " [beraber çalýþma desteklenmiyor]"
+msgstr " [beraber çalışma desteklenmiyor]"
 
-#: coff-arm.c:2401
+#: coff-arm.c:2421 elf32-arm.h:2124
 #, c-format
-msgid "Warning: Not setting interworking flag of %s, since it has already been specified as non-interworking"
-msgstr "Uyarý: %s beraber çalýþma bayraðý atanmadý, çünkü beraber çalýþma olmayacaðý önceden belirtilmiþ"
+msgid "Warning: Not setting interworking flag of %s since it has already been specified as non-interworking"
+msgstr "Uyarı: %s beraber çalışma bayrağı atanmadı, çünkü beraber çalışma olmayacağı önceden belirtilmiş"
 
-#: coff-arm.c:2405
+#: coff-arm.c:2425 elf32-arm.h:2128
 #, c-format
 msgid "Warning: Clearing the interworking flag of %s due to outside request"
-msgstr "Uyarý: %s beraber çalýþma bayraðý dýþ istek üzerine temizlendi"
+msgstr "Uyarı: %s beraber çalışma bayrağı dış istek üzerine temizlendi"
 
 #: coff-i960.c:136 coff-i960.c:485
 msgid "uncertain calling convention for non-COFF symbol"
-msgstr "COFF olmayan sembol için belirsiz çaðrý davranýþý"
+msgstr "COFF olmayan sembol için belirsiz çağrı davranışı"
 
-#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212
+#: coff-m68k.c:481 coff-mips.c:2429 elf32-m68k.c:2157 elf32-mips.c:1844
 msgid "unsupported reloc type"
-msgstr "desteklenmeyen yer deðiþtirme türü"
+msgstr "desteklenmeyen yer değiştirme türü"
 
-#: coff-mips.c:875 elf32-mips.c:1987 elf64-mips.c:1739
+#: coff-mips.c:874 elf32-mips.c:1062 elf64-mips.c:1609
 msgid "GP relative relocation when _gp not defined"
-msgstr "_gp tanýmsýz iken GP göreli yer deðiþtirmesi"
+msgstr "_gp tanımsız iken GP göreli yer değiştirmesi"
 
 #. No other sections should appear in -membedded-pic
 #. code.
-#: coff-mips.c:2468
+#: coff-mips.c:2466
 msgid "reloc against unsupported section"
-msgstr "desteklenmeyen bölümde yer deðiþtirme"
+msgstr "desteklenmeyen bölümde yer değiştirme"
 
-#: coff-mips.c:2476
+#: coff-mips.c:2474
 msgid "reloc not properly aligned"
-msgstr "yer deðiþtirme doðru hizalanmamýþ"
+msgstr "yer değiştirme doğru hizalanmamış"
 
-#: coff-rs6000.c:2710 coff64-rs6000.c:1164
+#: coff-rs6000.c:2766
 #, c-format
 msgid "%s: unsupported relocation type 0x%02x"
-msgstr "%s: desteklenmeyen yükleyici yerdeðiþimi 0x%02x"
+msgstr "%s: desteklenmeyen yükleyici yerdeğişimi 0x%02x"
 
-#: coff-rs6000.c:2756 coff64-rs6000.c:1210
+#: coff-rs6000.c:2859
 #, c-format
 msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
-msgstr "%s: 0x%x'da TOC girdisi olmayan `%s' sembolüne TOC yerdeðiþimi"
+msgstr "%s: 0x%x'da TOC girdisi olmayan `%s' sembolüne TOC yerdeğişimi"
 
-#: coff-rs6000.c:3006 coff64-rs6000.c:2060
+#: coff-rs6000.c:3590 coff64-rs6000.c:2091
 #, c-format
 msgid "%s: symbol `%s' has unrecognized smclas %d"
-msgstr "%s: `%s' sembolünde bilinmeyen %d var"
+msgstr "%s: `%s' sembolünde bilinmeyen %d var"
 
 #: coff-tic54x.c:279 coff-tic80.c:449
 #, c-format
 msgid "Unrecognized reloc type 0x%x"
-msgstr "Bilinmeyen yer deðiþtirme türü 0x%x"
+msgstr "Bilinmeyen yer değiştirme türü 0x%x"
 
-#: coff-tic54x.c:390 coffcode.h:4847
+#: coff-tic54x.c:390 coffcode.h:4974
 #, c-format
 msgid "%s: warning: illegal symbol index %ld in relocs"
-msgstr "%s: uyarý: yer deðiþtirmelerde geçersiz sembol indeksi %ld"
+msgstr "%s: uyarı: yer değiştirmelerde geçersiz sembol indeksi %ld"
 
 #: coff-w65.c:363
 #, c-format
 msgid "ignoring reloc %s\n"
-msgstr "yer deðiþtirme %s yoksayýldý\n"
+msgstr "yer değiştirme %s yoksayıldı\n"
 
-#: coffcode.h:1081
+#: coffcode.h:1086
 #, c-format
 msgid "%s (%s): Section flag %s (0x%x) ignored"
-msgstr "%s (%s): Bölüm bayraðý %s (0x%x) yoksayýldý"
+msgstr "%s (%s): Bölüm bayrağı %s (0x%x) yoksayıldı"
 
-#: coffcode.h:2125
+#: coffcode.h:2143
 #, c-format
 msgid "Unrecognized TI COFF target id '0x%x'"
-msgstr "Tanýnmayan TI COFF hedef kimliði '0x%x'"
+msgstr "Tanınmayan TI COFF hedef kimliği '0x%x'"
 
-#: coffcode.h:4236
+#: coffcode.h:4365
 #, c-format
 msgid "%s: warning: illegal symbol index %ld in line numbers"
-msgstr "%s: uyarý: satýr numaralarýnda geçersiz sembol indeksi %ld"
+msgstr "%s: uyarı: satır numaralarında geçersiz sembol indeksi %ld"
 
-#: coffcode.h:4250
+#: coffcode.h:4379
 #, c-format
 msgid "%s: warning: duplicate line number information for `%s'"
-msgstr "%s: uyarý: `%s' için tekrarlanmýþ satýr numarasý bilgisi"
+msgstr "%s: uyarı: `%s' için tekrarlanmış satır numarası bilgisi"
 
-#: coffcode.h:4609
+#: coffcode.h:4736
 #, c-format
 msgid "%s: Unrecognized storage class %d for %s symbol `%s'"
-msgstr "%1$s: %3$s sembolü `%4$s' için bilinmeyen saklama sýnýfý %2$d"
+msgstr "%1$s: %3$s sembolü `%4$s' için bilinmeyen saklama sınıfı %2$d"
 
-#: coffcode.h:4740
+#: coffcode.h:4867
 #, c-format
 msgid "warning: %s: local symbol `%s' has no section"
-msgstr "uyarý: %s: `%s' yerel sembolünün bölümü yok"
+msgstr "uyarı: %s: `%s' yerel sembolünün bölümü yok"
 
-#: coffcode.h:4885
+#: coffcode.h:5012
 #, c-format
 msgid "%s: illegal relocation type %d at address 0x%lx"
-msgstr "%1$s: 0x%3$lx adresinde geçersiz yer deðiþtirme türü %2$d"
+msgstr "%1$s: 0x%3$lx adresinde geçersiz yer değiştirme türü %2$d"
 
 #: coffgen.c:1661
 #, c-format
 msgid "%s: bad string table size %lu"
-msgstr "%s: geçersiz dizge tablo boyu %lu"
+msgstr "%s: geçersiz dizge tablo boyu %lu"
 
-#: coffgen.c:2138
-#, c-format
-msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld"
-msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld sonraki %ld"
-
-#: cofflink.c:536 elflink.h:1967
+#: cofflink.c:534 elflink.h:1912
 #, c-format
 msgid "Warning: type of symbol `%s' changed from %d to %d in %s"
-msgstr "Uyarý: %4$s içerisinde `%1$s' sembolünün türü %2$d'den %3$d'e deðiþtirildi"
+msgstr "Uyarı: %4$s içerisinde `%1$s' sembolünün türü %2$d'den %3$d'e değiştirildi"
 
-#: cofflink.c:2317
+#: cofflink.c:2321
 #, c-format
 msgid "%s: relocs in section `%s', but it has no contents"
-msgstr "%s: `%s' bölümünde yer deðiþtirmeler mevcut, fakat içi boþ"
+msgstr "%s: `%s' bölümünde yer değiştirmeler mevcut, fakat içi boş"
 
-#: cofflink.c:2653 coffswap.h:889
+#: cofflink.c:2664 coffswap.h:877
 #, c-format
 msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
-msgstr "%s: %s: yer deðiþtirme taþmasý: 0x%lx > 0xffff"
+msgstr "%s: %s: yer değiştirme taşması: 0x%lx > 0xffff"
 
-#: cofflink.c:2662 coffswap.h:876
+#: cofflink.c:2673 coffswap.h:864
 #, c-format
 msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: uyarý: %s: satýr numarasý taþmasý: 0x%lx > 0xffff"
+msgstr "%s: uyarı: %s: satır numarası taşması: 0x%lx > 0xffff"
 
-#: dwarf2.c:381
+#: dwarf2.c:382
 msgid "Dwarf Error: Can't find .debug_str section."
-msgstr "Dwarf Hatasý: .debug_str bölümü bulunamadý."
+msgstr "Dwarf Hatası: .debug_str bölümü bulunamadı."
 
-#: dwarf2.c:398
+#: dwarf2.c:399
 #, c-format
-msgid "Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str size (%u)."
+msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."
 msgstr ""
-"Dwarf Hatasý: DW_FORM_strp göreli konumu (%u) .debug_str boyutundan (%u) \n"
-"              daha büyük veya eþit."
+"Dwarf Hatası: DW_FORM_strp göreli konumu (%lu) .debug_str boyutundan (%lu) \n"
+"              daha büyük veya eşit."
 
-#: dwarf2.c:542
+#: dwarf2.c:543
 msgid "Dwarf Error: Can't find .debug_abbrev section."
-msgstr "Dwarf Hatasý: .debug_abbrev bölümü bulunamadý."
+msgstr "Dwarf Hatası: .debug_abbrev bölümü bulunamadı."
 
-#: dwarf2.c:559
+#: dwarf2.c:560
 #, c-format
-msgid "Dwarf Error: Abbrev offset (%u) greater than or equal to abbrev size (%u)."
+msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."
 msgstr ""
-"Dwarf Hatasý: Kýsaltma göreli konumu (%u) kýsaltma boyutundan (%u) \n"
-"              daha büyük veya eþit."
+"Dwarf Hatası: Kısaltma göreli konumu (%lu) kısaltma boyutundan (%lu) \n"
+"              daha büyük veya eşit."
 
-#: dwarf2.c:756
+#: dwarf2.c:757
 #, c-format
-msgid "Dwarf Error: Invalid or unhandled FORM value: %d."
-msgstr "Dwarf Hatasý: Geçersiz veya desteklenmeyen FORM deðeri: %d."
+msgid "Dwarf Error: Invalid or unhandled FORM value: %u."
+msgstr "Dwarf Hatası: Geçersiz veya desteklenmeyen FORM değeri: %u."
 
-#: dwarf2.c:843
+#: dwarf2.c:852
 msgid "Dwarf Error: mangled line number section (bad file number)."
-msgstr "Dwarf Hatasý: bozulmuþ satýr numarasý bölümü (geçersiz dosya numarasý)."
+msgstr "Dwarf Hatası: bozulmuş satır numarası bölümü (geçersiz dosya numarası)."
 
-#: dwarf2.c:929
+#: dwarf2.c:938
 msgid "Dwarf Error: Can't find .debug_line section."
-msgstr "Dwarf Hatasý: .debug_line bölümü bulunamadý."
+msgstr "Dwarf Hatası: .debug_line bölümü bulunamadı."
 
-#: dwarf2.c:952
+#: dwarf2.c:961
 #, c-format
-msgid "Dwarf Error: Line offset (%u) greater than or equal to line size (%u)."
+msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."
 msgstr ""
-"Dwarf Hatasý: Satýr göreli konumu (%u) satýr boyutundan (%u)\n"
-"              daha büyük veya eþit."
+"Dwarf Hatası: Satır göreli konumu (%lu) satır boyutundan (%lu)\n"
+"              daha büyük veya eşit."
 
-#: dwarf2.c:1143
+#: dwarf2.c:1159
 msgid "Dwarf Error: mangled line number section."
-msgstr "Dwarf Hatasý: bozuk satýr numarasý bölümü."
+msgstr "Dwarf Hatası: bozuk satır numarası bölümü."
 
-#: dwarf2.c:1318 dwarf2.c:1532
+#: dwarf2.c:1355 dwarf2.c:1566
 #, c-format
-msgid "Dwarf Error: Could not find abbrev number %d."
-msgstr "Dwarf Hatasý: Kýsaltma numarasý %d bulunamadý."
+msgid "Dwarf Error: Could not find abbrev number %u."
+msgstr "Dwarf Hatası: Kısaltma numarası %u bulunamadı."
 
-#: dwarf2.c:1493
+#: dwarf2.c:1527
 #, c-format
-msgid "Dwarf Error: found dwarf version '%hu', this reader only handles version 2 information."
-msgstr "Dwarf Hatasý: dwarf sürümü '%hu' bulundu, bu okuyucu yalnýzca sürüm 2 bilgisini anlayabiliyor."
+msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."
+msgstr "Dwarf Hatası: dwarf sürümü '%u' bulundu, bu okuyucu yalnızca sürüm 2 bilgisini anlayabiliyor."
 
-#: dwarf2.c:1500
+#: dwarf2.c:1534
 #, c-format
 msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
-msgstr "Dwarf Hatasý: adres boyu '%u' bulundu, bu okuyucu '%u'dan daha büyük boylarý okuyamýyor."
+msgstr "Dwarf Hatası: adres boyu '%u' bulundu, bu okuyucu '%u'dan daha büyük boyları okuyamıyor."
 
-#: dwarf2.c:1523
+#: dwarf2.c:1557
 #, c-format
-msgid "Dwarf Error: Bad abbrev number: %d."
-msgstr "Dwarf Hatasý: Geçersiz kýsaltma numarasý: %d."
+msgid "Dwarf Error: Bad abbrev number: %u."
+msgstr "Dwarf Hatası: Geçersiz kısaltma numarası: %u."
 
-#: ecoff.c:1328
+#: ecoff.c:1318
 #, c-format
 msgid "Unknown basic type %d"
-msgstr "Bilinmeyen temel tür %d"
+msgstr "Bilinmeyen temel tür %d"
 
-#: ecoff.c:1597
+#: ecoff.c:1578
 #, c-format
-msgid "\n      End+1 symbol: %ld"
-msgstr "\n      Son+1 sembolü: %ld"
+msgid ""
+"\n"
+"      End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      Son+1 sembolü: %ld"
 
-#: ecoff.c:1604 ecoff.c:1607
+#: ecoff.c:1585 ecoff.c:1588
 #, c-format
-msgid "\n      First symbol: %ld"
-msgstr "\n      Ýlk sembol: %ld"
+msgid ""
+"\n"
+"      First symbol: %ld"
+msgstr ""
+"\n"
+"      İlk sembol: %ld"
 
-#: ecoff.c:1619
+#: ecoff.c:1600
 #, c-format
-msgid "\n      End+1 symbol: %-7ld   Type:  %s"
-msgstr "\n      Son+1 sembolü: %-7ld   Tür:  %s"
+msgid ""
+"\n"
+"      End+1 symbol: %-7ld   Type:  %s"
+msgstr ""
+"\n"
+"      Son+1 sembolü: %-7ld   Tür:  %s"
 
-#: ecoff.c:1626
+#: ecoff.c:1607
 #, c-format
-msgid "\n      Local symbol: %ld"
-msgstr "\n      Yerel sembol: %ld"
+msgid ""
+"\n"
+"      Local symbol: %ld"
+msgstr ""
+"\n"
+"      Yerel sembol: %ld"
 
-#: ecoff.c:1634
+#: ecoff.c:1615
 #, c-format
-msgid "\n      struct; End+1 symbol: %ld"
-msgstr "\n      yapý; Son+1 sembolü: %ld"
+msgid ""
+"\n"
+"      struct; End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      yapı; Son+1 sembolü: %ld"
 
-#: ecoff.c:1639
+#: ecoff.c:1620
 #, c-format
-msgid "\n      union; End+1 symbol: %ld"
-msgstr "\n      birleþim; Son+1 sembolü: %ld"
+msgid ""
+"\n"
+"      union; End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      birleşim; Son+1 sembolü: %ld"
 
-#: ecoff.c:1644
+#: ecoff.c:1625
 #, c-format
-msgid "\n      enum; End+1 symbol: %ld"
-msgstr "\n      enum; Son+1 sembolü: %ld"
+msgid ""
+"\n"
+"      enum; End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      enum; Son+1 sembolü: %ld"
 
-#: ecoff.c:1650
+#: ecoff.c:1631
 #, c-format
-msgid "\n      Type: %s"
-msgstr "\n      Tür: %s"
+msgid ""
+"\n"
+"      Type: %s"
+msgstr ""
+"\n"
+"      Tür: %s"
 
-#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201
-#: elf64-x86-64.c:1275
+#: elf-hppa.h:1476 elf-hppa.h:1509 elf32-ppc.c:3091 elf32-sh.c:4213
+#: elf64-sh64.c:1659
 #, c-format
 msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
-msgstr "%1$s: uyarý: %3$s bölümünden `%2$s' sembolüne çözümlenemeyen yer deðiþimi"
+msgstr "%1$s: uyarı: %3$s bölümünden `%2$s' sembolüne çözümlenemeyen yer değişimi"
 
-#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835
-#: elf32-cris.c:1392 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547
-#: elf32-i860.c:1048 elf32-m32r.c:1281 elf32-openrisc.c:455 elf32-v850.c:1691
-#: elf64-mmix.c:1164
+#: elf-m10200.c:446 elf-m10300.c:656 elf32-arm.h:2084 elf32-avr.c:833
+#: elf32-cris.c:1403 elf32-d10v.c:481 elf32-fr30.c:635 elf32-frv.c:809
+#: elf32-h8300.c:548 elf32-i860.c:1031 elf32-m32r.c:1278 elf32-openrisc.c:439
+#: elf32-v850.c:1691 elf32-xstormy16.c:933 elf64-mmix.c:1302
 msgid "internal error: out of range error"
-msgstr "iç hata: kapsam dýþý hatasý"
+msgstr "iç hata: kapsam dışı hatası"
 
-#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839
-#: elf32-cris.c:1396 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551
-#: elf32-i860.c:1052 elf32-m32r.c:1285 elf32-mips.c:7565 elf32-openrisc.c:459
-#: elf32-v850.c:1695 elf64-mips.c:4464 elf64-mmix.c:1168
+#: elf-m10200.c:450 elf-m10300.c:660 elf32-arm.h:2088 elf32-avr.c:837
+#: elf32-cris.c:1407 elf32-d10v.c:485 elf32-fr30.c:639 elf32-frv.c:813
+#: elf32-h8300.c:552 elf32-i860.c:1035 elf32-m32r.c:1282 elf32-openrisc.c:443
+#: elf32-v850.c:1695 elf32-xstormy16.c:937 elf64-mmix.c:1306 elfxx-mips.c:5264
 msgid "internal error: unsupported relocation error"
-msgstr "iç hata: desteklenmeyen yer deðiþim hatasý"
+msgstr "iç hata: desteklenmeyen yer değişim hatası"
 
-#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490
-#: elf32-h8300.c:555 elf32-m32r.c:1289
+#: elf-m10200.c:454 elf-m10300.c:664 elf32-arm.h:2092 elf32-d10v.c:489
+#: elf32-h8300.c:556 elf32-m32r.c:1286
 msgid "internal error: dangerous error"
-msgstr "iç hata: ölümcül hata"
+msgstr "iç hata: ölümcül hata"
 
-#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847
-#: elf32-cris.c:1404 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559
-#: elf32-i860.c:1060 elf32-m32r.c:1293 elf32-openrisc.c:467 elf32-v850.c:1715
-#: elf64-mmix.c:1176
+#: elf-m10200.c:458 elf-m10300.c:668 elf32-arm.h:2096 elf32-avr.c:845
+#: elf32-cris.c:1415 elf32-d10v.c:493 elf32-fr30.c:647 elf32-frv.c:821
+#: elf32-h8300.c:560 elf32-i860.c:1043 elf32-m32r.c:1290 elf32-openrisc.c:451
+#: elf32-v850.c:1715 elf32-xstormy16.c:945 elf64-mmix.c:1314
 msgid "internal error: unknown error"
-msgstr "iç hata: bilinmeyen hata"
+msgstr "iç hata: bilinmeyen hata"
 
-#: elf.c:345
+#: elf.c:343
 #, c-format
 msgid "%s: invalid string offset %u >= %lu for section `%s'"
-msgstr "%1$s: `%4$s' bölümünde geçersiz dizge göreli konumu  %2$u >= %3$lu"
+msgstr "%1$s: `%4$s' bölümünde geçersiz dizge göreli konumu  %2$u >= %3$lu"
 
-#: elf.c:450
+#: elf.c:589
 #, c-format
 msgid "%s: invalid SHT_GROUP entry"
-msgstr "%s: geçersiz SHT_GROUP girdisi"
+msgstr "%s: geçersiz SHT_GROUP girdisi"
 
-#: elf.c:531
+#: elf.c:660
 #, c-format
 msgid "%s: no group info for section %s"
-msgstr "%s: %s bölümünde grup bilgisi yok"
+msgstr "%s: %s bölümünde grup bilgisi yok"
 
-#: elf.c:842
-msgid "\nProgram Header:\n"
-msgstr "\nYazýlým Baþlýðý:\n"
+#: elf.c:1023
+msgid ""
+"\n"
+"Program Header:\n"
+msgstr ""
+"\n"
+"Yazılım Başlığı:\n"
 
-#: elf.c:891
-msgid "\nDynamic Section:\n"
-msgstr "\nDinamik Bölüm:\n"
+#: elf.c:1073
+msgid ""
+"\n"
+"Dynamic Section:\n"
+msgstr ""
+"\n"
+"Dinamik Bölüm:\n"
 
-#: elf.c:1020
-msgid "\nVersion definitions:\n"
-msgstr "\nSürüm tanýmlarý:\n"
+#: elf.c:1202
+msgid ""
+"\n"
+"Version definitions:\n"
+msgstr ""
+"\n"
+"Sürüm tanımları:\n"
 
-#: elf.c:1043
-msgid "\nVersion References:\n"
-msgstr "\nSürüm Referanslarý:\n"
+#: elf.c:1225
+msgid ""
+"\n"
+"Version References:\n"
+msgstr ""
+"\n"
+"Sürüm Referansları:\n"
 
-#: elf.c:1048
+#: elf.c:1230
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  %s'den isteniyor:\n"
 
-#: elf.c:1675
+#: elf.c:1902
 #, c-format
 msgid "%s: invalid link %lu for reloc section %s (index %u)"
-msgstr "%1$s: yerdeðiþim bölümü %3$s (indeks %4$u) için geçersiz bað %2$lu"
+msgstr "%1$s: yerdeğişim bölümü %3$s (indeks %4$u) için geçersiz bağ %2$lu"
 
-#: elf.c:3289
+#: elf.c:3603
 #, c-format
 msgid "%s: Not enough room for program headers (allocated %u, need %u)"
-msgstr "%s: Yazýlým baþlýklarý için yeterli yer yok (%u ayrýldý, %u gerekli)"
+msgstr "%s: Yazılım başlıkları için yeterli yer yok (%u ayrıldı, %u gerekli)"
 
-#: elf.c:3393
+#: elf.c:3708
 #, c-format
 msgid "%s: Not enough room for program headers, try linking with -N"
-msgstr "%s: yazýlým baþlýklarý için gerekli yer yok, -N ile baðlamayý deneyin"
+msgstr "%s: yazılım başlıkları için gerekli yer yok, -N ile bağlamayı deneyin"
 
-#: elf.c:3518
+#: elf.c:3833
 #, c-format
 msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x"
-msgstr "Hata: Parçadaki (%s) ilk bölüm 0x%x'de, parça ise 0x%x'de baþlýyor"
+msgstr "Hata: Parçadaki (%s) ilk bölüm 0x%x'de, parça ise 0x%x'de başlıyor"
 
-#: elf.c:3804
+#: elf.c:4148
 #, c-format
 msgid "%s: warning: allocated section `%s' not in segment"
-msgstr "%s: uyarý: ayrýlmýþ `%s' bölümü parça içinde deðil"
+msgstr "%s: uyarı: ayrılmış `%s' bölümü parça içinde değil"
 
-#: elf.c:4138
+#: elf.c:4472
 #, c-format
 msgid "%s: symbol `%s' required but not present"
-msgstr "%s: `%s' sembolü gerekli fakat mevcut deðil"
-
-#: elf.c:4147
-#, c-format
-msgid "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx%s\n"
-msgstr "bfd sembolünden elf sembolü:0x%.8lx, isim= %s, sem num = %d, bayrak = 0x%.8lx%s\n"
+msgstr "%s: `%s' sembolü gerekli fakat mevcut değil"
 
-#: elf.c:4391
+#: elf.c:4749
 #, c-format
-msgid "%s: warning: Empty loadable segment detected\n"
-msgstr "%s: uyarý: Boþ yüklenebilir parça bulundu\n"
+msgid "%s: warning: Empty loadable segment detected, is this intentional ?\n"
+msgstr "%s: uyarı: Boş yüklenebilir parça bulundu, bu isteyerek mi yapılıyor?\n"
 
-#: elf.c:5804
+#: elf.c:6193
 #, c-format
 msgid "%s: unsupported relocation type %s"
-msgstr "%s: desteklenmeyen yerdeðiþim türü %s"
+msgstr "%s: desteklenmeyen yerdeğişim türü %s"
 
-#: elf32-arm.h:1224
+#: elf32-arm.h:1221
 #, c-format
 msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'."
-msgstr "%s: Uyarý: Arm BLX iþlemi Arm iþlevi '%s' hedefliyor."
+msgstr "%s: Uyarı: Arm BLX işlemi Arm işlevi '%s' hedefliyor."
 
-#: elf32-arm.h:1420
+#: elf32-arm.h:1417
 #, c-format
 msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'."
-msgstr "%s: Uyarý: Thumb BLX iþlemi thumb iþlevi '%s'ý hedefliyor."
+msgstr "%s: Uyarı: Thumb BLX işlemi thumb işlevi '%s'ı hedefliyor."
 
-#: elf32-arm.h:1904 elf32-i386.c:1776 elf32-sh.c:3133
+#: elf32-arm.h:1914 elf32-sh.c:4125
 #, c-format
 msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section"
-msgstr "%s(%s+0x%lx): SEC_MERGE bölümüne %s yerdeðiþimi"
+msgstr "%s(%s+0x%lx): SEC_MERGE bölümüne %s yerdeğişimi"
 
-#: elf32-arm.h:1998
+#: elf32-arm.h:2008
 #, c-format
 msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section"
-msgstr "%1$s: uyarý: %4$s bölümünden `%3$s' sembolüne çözümlenemeyen %2$d yer deðiþimi"
-
-#: elf32-arm.h:2114
-#, c-format
-msgid "Warning: Not setting interwork flag of %s since it has already been specified as non-interworking"
-msgstr "Uyarý: beraber çalýþmaz diye önceden belirtilmiþ olduðundan %s'nin beraber çalýþma bayraðý atanmadý"
-
-#: elf32-arm.h:2118
-#, c-format
-msgid "Warning: Clearing the interwork flag of %s due to outside request"
-msgstr "Uyarý: Dýþ isteðe uyularak %s'nin beraber çalýþma bayraðý temizlendi"
+msgstr "%1$s: uyarı: %4$s bölümünden `%3$s' sembolüne çözümlenemeyen %2$d yer değişimi"
 
-#: elf32-arm.h:2166
+#: elf32-arm.h:2176
 #, c-format
-msgid "Warning: Clearing the interwork flag in %s because non-interworking code in %s has been linked with it"
-msgstr "Uyarý: %2$s'deki beraber çalýþmaz kod ona baðlandýðý için %1$s'nin beraber çalýþma bayraðý temizlendi"
+msgid "Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it"
+msgstr "Uyarı: %2$s'deki beraber çalışmaz kod ona bağlandığı için %1$s'nin beraber çalışma bayrağı temizlendi"
 
-#: elf32-arm.h:2261
+#: elf32-arm.h:2271
 #, c-format
-msgid "Error: %s compiled for EABI version %d, whereas %s is compiled for version %d"
-msgstr "Hata: %s EABI sürüm %d için derlenmiþ, fakat %s %d sürümü için derlenmiþ"
+msgid "ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d"
+msgstr "Hata: %s EABI sürüm %d için derlenmiş, fakat %s %d sürümü için derlenmiş"
 
-#: elf32-arm.h:2275
+#: elf32-arm.h:2285
 #, c-format
-msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d"
-msgstr "Hata: %s APCS-%d için derlenmiþ, fakat %s APCS-%d için derlenmiþ"
+msgid "ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d"
+msgstr "HATA: %s, APCS-%d için derlenmiş fakat hedef %s APCS-%d kullanıyor"
 
-#: elf32-arm.h:2287
+#: elf32-arm.h:2313
 #, c-format
-msgid "Error: %s passes floats in FP registers, whereas %s passes them in integer registers"
-msgstr ""
-"Hata: %s kayan sayýlarý kayan sayý yazmaçlarýnda geçiriyor, \n"
-"      fakat %s tamsayý yazmaçlarýnda geçiriyor"
-
-#: elf32-arm.h:2292
-#, c-format
-msgid "Error: %s passes floats in integer registers, whereas %s passes them in FP registers"
-msgstr ""
-"Hata: %s kayan sayýlarý tamsayý yazmaçlarýnda geçiriyor, \n"
-"      fakat %s kayan sayý yazmaçlarýnda geçiriyor"
+msgid "ERROR: %s uses VFP instructions, whereas %s uses FPA instructions"
+msgstr "Hata: %s VFP işlemi kullanıyor, fakat %s FPA işlemi kullanıyor"
 
-#: elf32-arm.h:2303
+#: elf32-arm.h:2318
 #, c-format
-msgid "Error: %s uses VFP instructions, whereas %s FPA instructions"
-msgstr "Hata: %s VFP iþlemi kullanýyor, fakat %s FPA iþlemi kullanýyor"
+msgid "ERROR: %s uses FPA instructions, whereas %s uses VFP instructions"
+msgstr "Hata: %s FPA işlemi kullanıyor, fakat %s VFP işlemi kullanıyor"
 
-#: elf32-arm.h:2308
+#: elf32-arm.h:2338
 #, c-format
-msgid "Error: %s uses FPA instructions, whereas %s VFP instructions"
-msgstr "Hata: %s FPA iþlemi kullanýyor, fakat %s VFP iþlemi kullanýyor"
-
-#: elf32-arm.h:2328
-#, c-format
-msgid "Error: %s uses software FP, whereas %s uses hardware FP"
+msgid "ERROR: %s uses software FP, whereas %s uses hardware FP"
 msgstr ""
-"Hata: %s yazýlýmda kayan sayý kullanýyor,\n"
-"      fakat %s donanýmda kayan sayý kullanýyor"
+"Hata: %s yazılımda kayan sayı kullanıyor,\n"
+"      fakat %s donanımda kayan sayı kullanıyor"
 
-#: elf32-arm.h:2333
+#: elf32-arm.h:2343
 #, c-format
-msgid "Error: %s uses hardware FP, whereas %s uses software FP"
+msgid "ERROR: %s uses hardware FP, whereas %s uses software FP"
 msgstr ""
-"Hata: %s donanýmda kayan sayý kullanýyor,\n"
-"      fakat %s yazýlýmda kayan sayý kullanýyor"
-
-#: elf32-arm.h:2348
-#, c-format
-msgid "Warning: %s supports interworking, whereas %s does not"
-msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý destekliyor, fakat %s desteklemiyor."
-
-#: elf32-arm.h:2355
-#, c-format
-msgid "Warning: %s does not support interworking, whereas %s does"
-msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý desteklemiyor, fakat %s destekliyor."
+"Hata: %s donanımda kayan sayı kullanıyor,\n"
+"      fakat %s yazılımda kayan sayı kullanıyor"
 
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.h:2386 elf32-cris.c:2970 elf32-m68k.c:410 elf32-mips.c:3232
+#: elf32-arm.h:2396 elf32-cris.c:2988 elf32-m68k.c:410 elf32-vax.c:543
+#: elfxx-mips.c:7756
 #, c-format
 msgid "private flags = %lx:"
-msgstr "özel bayraklar = %lx:"
+msgstr "özel bayraklar = %lx:"
 
-#: elf32-arm.h:2395
+#: elf32-arm.h:2405
 msgid " [interworking enabled]"
-msgstr " [beraber çalýþma etkinleþtirilmiþ]"
-
-#: elf32-arm.h:2398
-msgid " [APCS-26]"
-msgstr " [APCS-26]"
+msgstr " [beraber çalışma etkinleştirilmiş]"
 
-#: elf32-arm.h:2400
-msgid " [APCS-32]"
-msgstr " [APCS-32]"
-
-#: elf32-arm.h:2403
+#: elf32-arm.h:2413
 msgid " [VFP float format]"
-msgstr " [VFP kayan nokta biçemi]"
+msgstr " [VFP kayan nokta biçemi]"
 
-#: elf32-arm.h:2405
+#: elf32-arm.h:2415
 msgid " [FPA float format]"
-msgstr " [FPA kayan nokta biçemi]"
+msgstr " [FPA kayan nokta biçemi]"
 
-#: elf32-arm.h:2414
+#: elf32-arm.h:2424
 msgid " [new ABI]"
 msgstr " [yeni ABI]"
 
-#: elf32-arm.h:2417
+#: elf32-arm.h:2427
 msgid " [old ABI]"
 msgstr " [eski ABI]"
 
-#: elf32-arm.h:2420
+#: elf32-arm.h:2430
 msgid " [software FP]"
-msgstr " [yazýlým FP]"
+msgstr " [yazılım FP]"
 
-#: elf32-arm.h:2428
+#: elf32-arm.h:2438
 msgid " [Version1 EABI]"
-msgstr " [Sürüm1 EABI]"
+msgstr " [Sürüm1 EABI]"
 
-#: elf32-arm.h:2431 elf32-arm.h:2442
+#: elf32-arm.h:2441 elf32-arm.h:2452
 msgid " [sorted symbol table]"
-msgstr " [sýralanmýþ sembol tablosu]"
+msgstr " [sıralanmış sembol tablosu]"
 
-#: elf32-arm.h:2433 elf32-arm.h:2444
+#: elf32-arm.h:2443 elf32-arm.h:2454
 msgid " [unsorted symbol table]"
-msgstr " [sýralanmamýþ sembol tablosu]"
+msgstr " [sıralanmamış sembol tablosu]"
 
-#: elf32-arm.h:2439
+#: elf32-arm.h:2449
 msgid " [Version2 EABI]"
-msgstr " [Sürüm2 EABI]"
+msgstr " [Sürüm2 EABI]"
 
-#: elf32-arm.h:2447
+#: elf32-arm.h:2457
 msgid " [dynamic symbols use segment index]"
-msgstr " [dinamik semboller bölüm indeksini kullanýyor]"
+msgstr " [dinamik semboller bölüm indeksini kullanıyor]"
 
-#: elf32-arm.h:2450
+#: elf32-arm.h:2460
 msgid " [mapping symbols precede others]"
-msgstr " [eþleþme sembolleri diðerlerinden önceliklidir]"
+msgstr " [eşleşme sembolleri diğerlerinden önceliklidir]"
 
-#: elf32-arm.h:2457
+#: elf32-arm.h:2467
 msgid " <EABI version unrecognised>"
-msgstr " <EABI sürümü bilinmiyor>"
+msgstr " <EABI sürümü bilinmiyor>"
 
-#: elf32-arm.h:2464
+#: elf32-arm.h:2474
 msgid " [relocatable executable]"
-msgstr " [yer deðiþtirebilir uygulama]"
+msgstr " [yer değiştirebilir uygulama]"
 
-#: elf32-arm.h:2467
+#: elf32-arm.h:2477
 msgid " [has entry point]"
-msgstr " [girdi noktasý var]"
+msgstr " [girdi noktası var]"
 
-#: elf32-arm.h:2472
+#: elf32-arm.h:2482
 msgid "<Unrecognised flag bits set>"
-msgstr "<Bilinmeyen bayrak bitleri atanmýþ>"
+msgstr "<Bilinmeyen bayrak bitleri atanmış>"
 
-#: elf32-avr.c:843 elf32-cris.c:1400 elf32-fr30.c:661 elf32-i860.c:1056
-#: elf32-openrisc.c:463 elf32-v850.c:1699 elf64-mmix.c:1172
+#: elf32-avr.c:841 elf32-cris.c:1411 elf32-fr30.c:643 elf32-frv.c:817
+#: elf32-i860.c:1039 elf32-openrisc.c:447 elf32-v850.c:1699
+#: elf32-xstormy16.c:941 elf64-mmix.c:1310
 msgid "internal error: dangerous relocation"
-msgstr "iç hata: tehlikeli yer deðiþim"
+msgstr "iç hata: tehlikeli yer değişim"
 
 #: elf32-cris.c:949
 #, c-format
 msgid "%s: unresolvable relocation %s against symbol `%s' from %s section"
-msgstr "%1$s: uyarý: %4$s bölümünden `%3$s' sembolüne çözümlenemeyen %2$s yer deðiþimi"
+msgstr "%1$s: uyarı: %4$s bölümünden `%3$s' sembolüne çözümlenemeyen %2$s yer değişimi"
 
 #: elf32-cris.c:1012
 #, c-format
 msgid "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section"
-msgstr "%1$s: %4$s bölümünden `%3$s' sembolüne %2$s yer deðiþimi için PLT veya GOT yok"
+msgstr "%1$s: %4$s bölümünden `%3$s' sembolüne %2$s yer değişimi için PLT veya GOT yok"
 
-#: elf32-cris.c:1015 elf32-cris.c:1142
+#: elf32-cris.c:1015 elf32-cris.c:1141
 msgid "[whose name is lost]"
-msgstr "[adý kaybolmuþ]"
+msgstr "[adı kaybolmuş]"
 
-#: elf32-cris.c:1131
+#: elf32-cris.c:1130
 #, c-format
 msgid "%s: relocation %s with non-zero addend %d against local symbol from %s section"
 msgstr ""
-"%1$s: %4$s bölümünden yerel sembol sýfýr olmayan %3$d eklemesi ile\n"
-"      %2$s yerdeðiþimi"
+"%1$s: %4$s bölümünden yerel sembol sıfır olmayan %3$d eklemesi ile\n"
+"      %2$s yerdeğişimi"
 
-#: elf32-cris.c:1138
+#: elf32-cris.c:1137
 #, c-format
 msgid "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section"
-msgstr "%1$s: %5$s bölümünden `%4$s' sembolüne sýfýr olmayan %3$d eklemesi ile       %2$s yerdeðiþimi"
+msgstr "%1$s: %5$s bölümünden `%4$s' sembolüne sıfır olmayan %3$d eklemesi ile       %2$s yerdeğişimi"
 
-#: elf32-cris.c:1156
+#: elf32-cris.c:1155
 #, c-format
 msgid "%s: relocation %s is not allowed for global symbol: `%s' from %s section"
-msgstr "%1$s: %4$s bölümünden %3$s evrensel sembolü için %2$s yerdeðiþimi yapýlamaz"
+msgstr "%1$s: %4$s bölümünden %3$s evrensel sembolü için %2$s yerdeğişimi yapılamaz"
 
-#: elf32-cris.c:1275
+#: elf32-cris.c:1170
+#, c-format
+msgid "%s: relocation %s in section %s with no GOT created"
+msgstr "%1$s: `%3$s' bölümünde %2$s yer değiştirmesi mevcut, fakat GOT oluşturulmamış"
+
+#: elf32-cris.c:1288
 #, c-format
 msgid "%s: Internal inconsistency; no relocation section %s"
-msgstr "%s: Ýç tutarsýzlýk; %s yerdeðiþim bölümü yok"
+msgstr "%s: İç tutarsızlık; %s yerdeğişim bölümü yok"
 
-#: elf32-cris.c:2508
+#: elf32-cris.c:2514
 #, c-format
 msgid ""
 "%s, section %s:\n"
 "  relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr ""
-"%s, %s bölümü:\n"
-"  %s yer deðiþimi paylaþýmlý nesne oluþtururken kullanýlamaz;\n"
+"%s, %s bölümü:\n"
+"  %s yer değişimi paylaşımlı nesne oluştururken kullanılamaz;\n"
 "  -fPIC ile yeniden derleyin"
 
-#: elf32-cris.c:2973
+#: elf32-cris.c:2991
 msgid " [symbols have a _ prefix]"
-msgstr " [semboller _ önekine sahip]"
+msgstr " [semboller _ önekine sahip]"
 
-#: elf32-cris.c:3012
+#: elf32-cris.c:3030
 #, c-format
 msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols"
-msgstr "%s: _-önekli sembolleri kullanýyor, fakat dosyaya öneksiz sembolleri yazýyor"
+msgstr "%s: _-önekli sembolleri kullanıyor, fakat dosyaya öneksiz sembolleri yazıyor"
 
-#: elf32-cris.c:3013
+#: elf32-cris.c:3031
 #, c-format
 msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols"
-msgstr "%s: öneksiz sembolleri kullanýyor, fakat dosyaya _-önekli sembolleri yazýyor"
+msgstr "%s: öneksiz sembolleri kullanıyor, fakat dosyaya _-önekli sembolleri yazıyor"
+
+#: elf32-frv.c:1217
+#, c-format
+msgid "%s: compiled with %s and linked with modules that use non-pic relocations"
+msgstr "%s: %s ile derlendi ve normal derlenmiş modüllerle bağlandı"
+
+#: elf32-frv.c:1267
+#, c-format
+msgid "%s: compiled with %s and linked with modules compiled with %s"
+msgstr "%s: %s ile derlendi ve %s ile derlenmiş modüllerle bağlandı"
+
+#: elf32-frv.c:1279
+#, c-format
+msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"
+msgstr "%s: önceki modüllerden farklı bilinmeyen e_flags (0x%lx)  alanları kullanılıyor (0x%lx)"
+
+#: elf32-frv.c:1315
+#, c-format
+msgid "private flags = 0x%lx:"
+msgstr "özel bayraklar = 0x%lx:"
 
 #: elf32-gen.c:82 elf64-gen.c:82
 #, c-format
 msgid "%s: Relocations in generic ELF (EM: %d)"
-msgstr "%s: Normal ELF'de yerdeðiþimler (EM: %d)"
+msgstr "%s: Normal ELF'de yerdeğişimler (EM: %d)"
 
-#: elf32-hppa.c:646
+#: elf32-hppa.c:671 elf64-ppc.c:2323
 #, c-format
 msgid "%s: cannot create stub entry %s"
-msgstr "%s: koçan giriþi %s oluþturulamadý"
+msgstr "%s: koçan girişi %s oluşturulamadı"
 
-#: elf32-hppa.c:937 elf32-hppa.c:3540
+#: elf32-hppa.c:956 elf32-hppa.c:3555
 #, c-format
 msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections"
-msgstr "%s(%s+0x%lx): %s'e ulaþýlamadý, -ffunction-sections ile derleyin"
+msgstr "%s(%s+0x%lx): %s'e ulaşılamadı, -ffunction-sections ile derleyin"
 
-#: elf32-hppa.c:1312
+#: elf32-hppa.c:1338 elf64-x86-64.c:673
 #, c-format
 msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC"
-msgstr "%s: %s yer deðiþimi paylaþýmlý nesne oluþturulurken kullanýlamaz; -fPIC ile yeniden derleyin"
+msgstr "%s: %s yer değişimi paylaşımlı nesne oluşturulurken kullanılamaz; -fPIC ile yeniden derleyin"
 
-#: elf32-hppa.c:1332
+#: elf32-hppa.c:1358
 #, c-format
 msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC"
-msgstr "%s: %s yer deðiþimi paylaþýmlý nesne oluþtururken kullanýlamaz; -fPIC ile yeniden derleyin"
+msgstr "%s: %s yer değişimi paylaşımlı nesne oluştururken kullanılamaz; -fPIC ile yeniden derleyin"
 
-#: elf32-hppa.c:1525
+#: elf32-hppa.c:1551
 #, c-format
 msgid "Could not find relocation section for %s"
-msgstr "%s için yer deðiþtirme bölümü bulunamadý"
+msgstr "%s için yer değiştirme bölümü bulunamadı"
 
-#: elf32-hppa.c:2862
+#: elf32-hppa.c:2855
 #, c-format
 msgid "%s: duplicate export stub %s"
-msgstr "%s: birden fazla ihraç koçaný %s"
+msgstr "%s: birden fazla ihraç koçanı %s"
 
-#: elf32-hppa.c:3424
+#: elf32-hppa.c:3433
 #, c-format
 msgid "%s(%s+0x%lx): fixing %s"
-msgstr "%s(%s+0x%lx): %s düzeltiliyor"
+msgstr "%s(%s+0x%lx): %s düzeltiliyor"
 
-#: elf32-hppa.c:4064
+#: elf32-hppa.c:4080
 #, c-format
 msgid "%s(%s+0x%lx): cannot handle %s for %s"
-msgstr "%1$s(%2$s+0x%3$lx): %5$s için %4$s iþlenemedi"
+msgstr "%1$s(%2$s+0x%3$lx): %5$s için %4$s işlenemedi"
 
-#: elf32-hppa.c:4403
+#: elf32-hppa.c:4393
 msgid ".got section not immediately after .plt section"
-msgstr ".got bölümü .plt bölümünün hemen arkasýnda deðil"
+msgstr ".got bölümü .plt bölümünün hemen arkasında değil"
 
-#: elf32-i386.c:298
+#: elf32-i386.c:379
 #, c-format
 msgid "%s: invalid relocation type %d"
-msgstr "%s: geçersiz yer deðiþim türü %d"
+msgstr "%s: geçersiz yer değişim türü %d"
 
-#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595
+#: elf32-i386.c:876 elf32-s390.c:649 elf64-s390.c:595 elf64-x86-64.c:591
 #, c-format
 msgid "%s: bad symbol index: %d"
-msgstr "%s: geçersiz sembol indeksi: %d"
+msgstr "%s: geçersiz sembol indeksi: %d"
+
+#: elf32-i386.c:948
+#, c-format
+msgid "%s: `%s' accessed both as normal and thread local symbol"
+msgstr "%s: `%s'a hem normal, hem de dal yerel sembolü olarak erişildi"
 
-#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2085 elf64-s390.c:759
+#: elf32-i386.c:1072 elf32-s390.c:808 elf64-ppc.c:2827 elf64-s390.c:759
+#: elf64-x86-64.c:761
 #, c-format
 msgid "%s: bad relocation section name `%s'"
-msgstr "%s: geçersiz yerdeðiþim bölümü adý `%s'"
+msgstr "%s: geçersiz yerdeğişim bölümü adı `%s'"
 
-#: elf32-i386.c:2067 elf32-s390.c:1949 elf64-ppc.c:3908 elf64-s390.c:1953
+#: elf32-i386.c:1159 elf64-alpha.c:4768
+#, c-format
+msgid "%s: TLS local exec code cannot be linked into shared objects"
+msgstr "%s: TLS yerel çalıştırma kodu paylaşımlı nesnelere bağlanamaz"
+
+#: elf32-i386.c:2747 elf32-s390.c:1981 elf32-sparc.c:1571 elf64-ppc.c:5918
+#: elf64-s390.c:1945 elf64-sparc.c:2578 elf64-x86-64.c:1948
 #, c-format
 msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'"
-msgstr "%s(%s+0x%lx): `%s' sembolüne çözümlenemeyen yer deðiþimi"
+msgstr "%s(%s+0x%lx): `%s' sembolüne çözümlenemeyen yer değişimi"
 
-#: elf32-i386.c:2105 elf32-s390.c:1987 elf64-s390.c:1991
+#: elf32-i386.c:2784 elf32-s390.c:2019 elf64-ppc.c:5977 elf64-s390.c:1983
+#: elf64-x86-64.c:1986
 #, c-format
 msgid "%s(%s+0x%lx): reloc against `%s': error %d"
-msgstr "%s(%s+0x%lx): %s'e yer deðiþimi: %d hatasý"
+msgstr "%s(%s+0x%lx): %s'e yer değişimi: %d hatası"
 
 #: elf32-m32r.c:924
 msgid "SDA relocation when _SDA_BASE_ not defined"
-msgstr "_SDA_BASE_ tanýmlanmamýþ iken SDA yer deðiþimi"
+msgstr "_SDA_BASE_ tanımlanmamış iken SDA yer değişimi"
 
-#: elf32-ia64.c:3538 elf32-m32r.c:1008 elf32-ppc.c:2930 elf64-ia64.c:3538
+#: elf32-ia64.c:3687 elf32-m32r.c:1013 elf32-ppc.c:2987 elf64-alpha.c:4185
+#: elf64-alpha.c:4313 elf64-ia64.c:3687
 #, c-format
 msgid "%s: unknown relocation type %d"
-msgstr "%s: bilinmeyen yer deðiþim türü %d"
+msgstr "%s: bilinmeyen yer değişim türü %d"
 
-#: elf32-m32r.c:1224
+#: elf32-m32r.c:1221
 #, c-format
 msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
-msgstr "%1$s: Bir %3$s yer deðiþiminin hedefi (%2$s) yanlýþ bölümde (%4$s)"
+msgstr "%1$s: Bir %3$s yer değişiminin hedefi (%2$s) yanlış bölümde (%4$s)"
 
-#: elf32-m32r.c:2001
+#: elf32-m32r.c:1947
 #, c-format
 msgid "%s: Instruction set mismatch with previous modules"
-msgstr "%s: Önceki modüllerle iþlem uyuþmazlýðý"
+msgstr "%s: Önceki modüllerle işlem uyuşmazlığı"
 
-#: elf32-m32r.c:2024
+#: elf32-m32r.c:1970
 #, c-format
 msgid "private flags = %lx"
-msgstr "özel bayraklar = %lx"
+msgstr "özel bayraklar = %lx"
 
-#: elf32-m32r.c:2029
+#: elf32-m32r.c:1975
 msgid ": m32r instructions"
-msgstr ": m32r iþlemleri"
+msgstr ": m32r işlemleri"
 
-#: elf32-m32r.c:2030
+#: elf32-m32r.c:1976
 msgid ": m32rx instructions"
-msgstr ": m32rx iþlemleri"
+msgstr ": m32rx işlemleri"
 
 #: elf32-m68k.c:413
 msgid " [cpu32]"
 msgstr " [cpu32]"
 
-#: elf32-mcore.c:353 elf32-mcore.c:479
+#: elf32-m68k.c:416
+msgid " [m68000]"
+msgstr " [m68000]"
+
+#: elf32-mcore.c:354 elf32-mcore.c:457
 #, c-format
 msgid "%s: Relocation %s (%d) is not currently supported.\n"
-msgstr "%s: %s (%d) yer deðiþimi henüz desteklenmiyor.\n"
+msgstr "%s: %s (%d) yer değişimi henüz desteklenmiyor.\n"
 
-#: elf32-mcore.c:438
+#: elf32-mcore.c:442
 #, c-format
 msgid "%s: Unknown relocation type %d\n"
-msgstr "%s: Bilinmeyen yer deðiþim türü %d\n"
+msgstr "%s: Bilinmeyen yer değişim türü %d\n"
 
-#: elf32-mips.c:2146 elf64-mips.c:1972
+#: elf32-mips.c:1152 elf64-mips.c:1783
 msgid "32bits gp relative relocation occurs for an external symbol"
-msgstr "32 bitlik gp göreceli yer deðiþim bir dýþ sembol için yapýlýyor"
+msgstr "32 bitlik gp göreceli yer değişim bir dış sembol için yapılıyor"
 
-#: elf32-mips.c:2295
+#: elf32-mips.c:1301
 #, c-format
 msgid "Linking mips16 objects into %s format is not supported"
-msgstr "mips16 nesnelerini %s biçemine baðlamak desteklenmiyor"
+msgstr "mips16 nesnelerini %s biçemine bağlamak desteklenmiyor"
 
-#: elf32-mips.c:3119
+#: elf32-ppc.c:1460
 #, c-format
-msgid "%s: linking PIC files with non-PIC files"
-msgstr "%s: PIC dosyalarý PIC olmayan dosyalarla baðlanýyor"
+msgid "%s: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%s: -mrelocatable ile derlendi ve normal derlenmiş modüllerle bağlandı"
 
-#: elf32-mips.c:3129
+#: elf32-ppc.c:1468
 #, c-format
-msgid "%s: linking abicalls files with non-abicalls files"
-msgstr "%s: abicalls dosyalarý abicalls olmayan dosyalarla baðlanýyor"
+msgid "%s: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%s: normal derlendi ve -mrelocatable ile derlenmiş modüllere bağlandı"
 
-#: elf32-mips.c:3158
+#: elf32-ppc.c:1494 elf64-sparc.c:2989 elfxx-mips.c:7713
 #, c-format
-msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
-msgstr "%1$s: Önceki modüllerle (-mips%3$d) ile ISA uyumsuzluðu (-mips%2$d)"
+msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
+msgstr "%1$s: önceki modüllerden (0x%3$lx) farklı e_flags (0x%2$lx) alanları kullanılıyor"
 
-#: elf32-mips.c:3167
+#: elf32-ppc.c:1592
 #, c-format
-msgid "%s: ISA mismatch (%d) with previous modules (%d)"
-msgstr "%1$s: Önceki modüllerle (%3$d) ile ISA uyumsuzluðu (%2$d)"
+msgid "%s: Unknown special linker type %d"
+msgstr "%s: Bilinmeyen özel bağlayıcı türü %d"
 
-#: elf32-mips.c:3190
+#: elf32-ppc.c:2273 elf32-ppc.c:2307 elf32-ppc.c:2342
 #, c-format
-msgid "%s: ABI mismatch: linking %s module with previous %s modules"
-msgstr "%s: ABI uyumsuzluðu: %s modülü önceki %s modülle baðlanýyor"
+msgid "%s: relocation %s cannot be used when making a shared object"
+msgstr "%s: %s yerdeğişimi paylaşımlı nesne oluşturulurken kullanılamaz"
 
-#: elf32-mips.c:3204 elf32-ppc.c:1470 elf64-ppc.c:1538 elf64-sparc.c:3033
+#: elf32-ppc.c:3126 elf64-ppc.c:5473
 #, c-format
-msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%1$s: önceki modüllerden (0x%3$lx) farklý e_flags (0x%2$lx) alanlarý kullanýlýyor"
-
-#: elf32-mips.c:3235
-msgid " [abi=O32]"
-msgstr " [abi=O32]"
-
-#: elf32-mips.c:3237
-msgid " [abi=O64]"
-msgstr " [abi=O64]"
-
-#: elf32-mips.c:3239
-msgid " [abi=EABI32]"
-msgstr " [abi=EABI32]"
-
-#: elf32-mips.c:3241
-msgid " [abi=EABI64]"
-msgstr " [abi=EABI64]"
-
-#: elf32-mips.c:3243
-msgid " [abi unknown]"
-msgstr " [abi bilinmiyor]"
-
-#: elf32-mips.c:3245
-msgid " [abi=N32]"
-msgstr " [abi=N32]"
-
-#: elf32-mips.c:3247
-msgid " [abi=64]"
-msgstr " [abi=64]"
-
-#: elf32-mips.c:3249
-msgid " [no abi set]"
-msgstr " [abi atanmamýþ]"
-
-#: elf32-mips.c:3252
-msgid " [mips1]"
-msgstr " [mips1]"
-
-#: elf32-mips.c:3254
-msgid " [mips2]"
-msgstr " [mips2]"
-
-#: elf32-mips.c:3256
-msgid " [mips3]"
-msgstr " [mips3]"
-
-#: elf32-mips.c:3258
-msgid " [mips4]"
-msgstr " [mips4]"
-
-#: elf32-mips.c:3260
-msgid " [mips5]"
-msgstr " [mips5]"
-
-#: elf32-mips.c:3262
-msgid " [mips32]"
-msgstr " [mips32]"
-
-#: elf32-mips.c:3264
-msgid " [mips64]"
-msgstr " [mips64]"
-
-#: elf32-mips.c:3266
-msgid " [unknown ISA]"
-msgstr " [bilinmeyen ISA]"
-
-#: elf32-mips.c:3269
-msgid " [32bitmode]"
-msgstr " [32bitkipi]"
-
-#: elf32-mips.c:3271
-msgid " [not 32bitmode]"
-msgstr " [32bitkipi deðil]"
-
-#: elf32-mips.c:4947
-msgid "static procedure (no name)"
-msgstr "statik altyordam (isimsiz)"
+msgid "%s: unknown relocation type %d for symbol %s"
+msgstr "%1$s: %3$s sembolü için bilinmeyen %2$d türünde yerdeğişimi"
 
-#: elf32-mips.c:5565 elf64-mips.c:6694
+#: elf32-ppc.c:3482 elf32-ppc.c:3503 elf32-ppc.c:3553
 #, c-format
-msgid "%s: illegal section name `%s'"
-msgstr "%s: geçersiz bölüm adý `%s'"
-
-#: elf32-mips.c:6132 elf64-mips.c:3150
-msgid "not enough GOT space for local GOT entries"
-msgstr "yerel GOT girdileri için yeterli GOT yeri yok"
+msgid "%s: The target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr "%1$s: %3$s yerdeğişiminin hedefi (%2$s) yanlış çıktı bölümünde (%4$s)"
 
-#: elf32-mips.c:7238 elf64-mips.c:4203
+#: elf32-ppc.c:3619
 #, c-format
-msgid "%s: %s+0x%lx: jump to stub routine which is not jal"
-msgstr "%s: %s+0x%lx: jal olmayan koçan yordamýna sýçrama"
+msgid "%s: Relocation %s is not yet supported for symbol %s."
+msgstr "%s: %s yerdeğişimi %s sembolü için henüz desteklenmiyor."
 
-#: elf32-mips.c:8237 elf64-mips.c:5891
+#: elf32-sh.c:1964
 #, c-format
-msgid "%s: Malformed reloc detected for section %s"
-msgstr "%s: %s bölümü için geçersiz yer deðiþim bulundu"
+msgid "%s: 0x%lx: warning: bad R_SH_USES offset"
+msgstr "%s: 0x%lx: uyarı: hatalı R_SH_USES göreli konumu"
 
-#: elf32-mips.c:8315 elf64-mips.c:5969
+#: elf32-sh.c:1976
 #, c-format
-msgid "%s: CALL16 reloc at 0x%lx not against global symbol"
-msgstr "%s: 0x%lx'deki CALL16 yerdeðiþimi evrensel sembole göre deðil"
+msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr "%s: 0x%lx: uyarı: R_SH_USES bilinmeyen insn 0x%x'ı imliyor"
 
-#: elf32-ppc.c:1436 elf64-ppc.c:1503
+#: elf32-sh.c:1993
 #, c-format
-msgid "%s: compiled with -mrelocatable and linked with modules compiled normally"
-msgstr "%s: -mrelocatable ile derlendi ve normal derlenmiþ modüllerle baðlandý"
+msgid "%s: 0x%lx: warning: bad R_SH_USES load offset"
+msgstr "%s: 0x%lx: uyarı: hatalı R_SH_USES yükleme göreli konumu"
 
-#: elf32-ppc.c:1444 elf64-ppc.c:1511
+#: elf32-sh.c:2008
 #, c-format
-msgid "%s: compiled normally and linked with modules compiled with -mrelocatable"
-msgstr "%s: normal derlendi ve -mrelocatable ile derlenmiþ modüllere baðlandý"
+msgid "%s: 0x%lx: warning: could not find expected reloc"
+msgstr "%s: 0x%lx: uyarı: beklenen yerdeğişim bulunamadı"
 
-#: elf32-ppc.c:1568
+#: elf32-sh.c:2036
 #, c-format
-msgid "%s: Unknown special linker type %d"
-msgstr "%s: Bilinmeyen özel baðlayýcý türü %d"
+msgid "%s: 0x%lx: warning: symbol in unexpected section"
+msgstr "%s: 0x%lx: uyarı: beklenmeyen bölümde sembol"
 
-#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287
+#: elf32-sh.c:2153
 #, c-format
-msgid "%s: relocation %s cannot be used when making a shared object"
-msgstr "%s: %s yerdeðiþimi paylaþýmlý nesne oluþturulurken kullanýlamaz"
+msgid "%s: 0x%lx: warning: could not find expected COUNT reloc"
+msgstr "%s: 0x%lx: uyarı: beklenen COUNT yerdeğişimi bulunamadı"
 
-#: elf32-ppc.c:3097 elf64-ppc.c:3500
+#: elf32-sh.c:2162
 #, c-format
-msgid "%s: unknown relocation type %d for symbol %s"
-msgstr "%1$s: %3$s sembolü için bilinmeyen %2$d türünde yerdeðiþimi"
+msgid "%s: 0x%lx: warning: bad count"
+msgstr "%s: 0x%lx: uyarı: hatalı sayım"
 
-#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523
+#: elf32-sh.c:2550 elf32-sh.c:2926
 #, c-format
-msgid "%s: The target (%s) of a %s relocation is in the wrong output section (%s)"
-msgstr "%1$s: %3$s yerdeðiþiminin hedefi (%2$s) yanlýþ çýktý bölümünde (%4$s)"
+msgid "%s: 0x%lx: fatal: reloc overflow while relaxing"
+msgstr "%s: 0x%lx: ölümcül: gevşetilirken yerdeğişim taşması"
 
-#: elf32-ppc.c:3589
-#, c-format
-msgid "%s: Relocation %s is not yet supported for symbol %s."
-msgstr "%s: %s yerdeðiþimi %s sembolü için henüz desteklenmiyor."
+#: elf32-sh.c:4073 elf64-sh64.c:1576
+msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
+msgstr "Yerel sembolde STO_SH5_ISA32 desteklenmiyor"
 
-#: elf32-sh.c:1101
+#: elf32-sh.c:4284
 #, c-format
-msgid "%s: 0x%lx: warning: bad R_SH_USES offset"
-msgstr "%s: 0x%lx: uyarý: hatalý R_SH_USES göreli konumu"
+msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation"
+msgstr "%s: 0x%lx: ölümcül: gevşetme destek yerdeğişimi için hizalanmamış dal"
 
-#: elf32-sh.c:1113
+#: elf32-sh64.c:203 elf64-sh64.c:2364
 #, c-format
-msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
-msgstr "%s: 0x%lx: uyarý: R_SH_USES bilinmeyen insn 0x%x'ý imliyor"
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: 32 bitlik sistem için derlenmiş ve %s 64 bit"
 
-#: elf32-sh.c:1130
+#: elf32-sh64.c:206 elf64-sh64.c:2367
 #, c-format
-msgid "%s: 0x%lx: warning: bad R_SH_USES load offset"
-msgstr "%s: 0x%lx: uyarý: hatalý R_SH_USES yükleme göreli konumu"
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: 64 bitlik sistem için derlenmiş ve %s 32 bit"
 
-#: elf32-sh.c:1145
+#: elf32-sh64.c:208 elf64-sh64.c:2369
 #, c-format
-msgid "%s: 0x%lx: warning: could not find expected reloc"
-msgstr "%s: 0x%lx: uyarý: beklenen yerdeðiþim bulunamadý"
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: nesne boyu hedef %s'nin boyuyla eşleşmiyor"
 
-#: elf32-sh.c:1202
+#: elf32-sh64.c:440 elf64-sh64.c:2941
 #, c-format
-msgid "%s: 0x%lx: warning: symbol in unexpected section"
-msgstr "%s: 0x%lx: uyarý: beklenmeyen bölümde sembol"
+msgid "%s: encountered datalabel symbol in input"
+msgstr "%s: girdide veri etiketi sembolüne rastlandı"
+
+#: elf32-sh64.c:523
+msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
+msgstr "PTB uyumsuzluğu: SHmedia adresi (bit 0 == 1)"
+
+#: elf32-sh64.c:526
+msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
+msgstr "PTA uyumsuzluğu: SHcompact adresi (bit 0 == 0)"
 
-#: elf32-sh.c:1323
+#: elf32-sh64.c:544
 #, c-format
-msgid "%s: 0x%lx: warning: could not find expected COUNT reloc"
-msgstr "%s: 0x%lx: uyarý: beklenen COUNT yerdeðiþimi bulunamadý"
+msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
+msgstr "%s: GAS hatası: R_SH_PT_16 içeren PTB yönergesi beklenmiyordu"
 
-#: elf32-sh.c:1332
+#: elf32-sh64.c:593 elf64-sh64.c:1703
 #, c-format
-msgid "%s: 0x%lx: warning: bad count"
-msgstr "%s: 0x%lx: uyarý: hatalý sayým"
+msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
+msgstr "%1$s: %3$08x ve %4$08x yerdeğiştirmesinde hizalanmamış yer değiştirme türü %2$d\n"
 
-#: elf32-sh.c:1741 elf32-sh.c:2132
+#: elf32-sh64.c:677
 #, c-format
-msgid "%s: 0x%lx: fatal: reloc overflow while relaxing"
-msgstr "%s: 0x%lx: ölümcül: gevþetilirken yerdeðiþim taþmasý"
+msgid "%s: could not write out added .cranges entries"
+msgstr "%s: eklenen .cranges girdileri yazılamadı"
 
-#: elf32-sh.c:3267
+#: elf32-sh64.c:739
 #, c-format
-msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation"
-msgstr "%s: 0x%lx: ölümcül: gevþetme destek yerdeðiþimi için hizalanmamýþ dal"
+msgid "%s: could not write out sorted .cranges entries"
+msgstr "%s: sıralanmış .cranges girdileri yazılamadı"
 
-#: elf32-sparc.c:1554 elf64-sparc.c:2286
+#: elf32-sparc.c:1535 elf64-sparc.c:2224
 #, c-format
 msgid "%s: probably compiled without -fPIC?"
-msgstr "%s: acaba -fPIC olmaksýzýn mý derlenmiþ?"
+msgstr "%s: acaba -fPIC olmaksızın mı derlenmiş?"
 
-#: elf32-sparc.c:2007
+#: elf32-sparc.c:2002
 #, c-format
 msgid "%s: compiled for a 64 bit system and target is 32 bit"
-msgstr "%s: 64 bitlik sistem için derlenmiþ ve hedef 32 bit"
+msgstr "%s: 64 bitlik sistem için derlenmiş ve hedef 32 bit"
 
-#: elf32-sparc.c:2021
+#: elf32-sparc.c:2016
 #, c-format
 msgid "%s: linking little endian files with big endian files"
-msgstr "%s: küçük sonlu dosyalar büyük sonlu dosyalarla baðlanýyor"
+msgstr "%s: küçük sonlu dosyalar büyük sonlu dosyalarla bağlanıyor"
 
 #: elf32-v850.c:682
 #, c-format
 msgid "Variable `%s' cannot occupy in multiple small data regions"
-msgstr "`%s' deðiþkeni birden fazla küçük veri sahasýný kapsayamaz"
+msgstr "`%s' değişkeni birden fazla küçük veri sahasını kapsayamaz"
 
 #: elf32-v850.c:685
 #, c-format
 msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
-msgstr "`%s' deðiþkeni küçük, sýfýr ve ufak veri sahalarýndan yalnýz birinde olabilir"
+msgstr "`%s' değişkeni küçük, sıfır ve ufak veri sahalarından yalnız birinde olabilir"
 
 #: elf32-v850.c:688
 #, c-format
 msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
-msgstr "`%s' deðiþkeni ayný anda hem küçük hem sýfýr veri sahalarýnda bulunamaz"
+msgstr "`%s' değişkeni aynı anda hem küçük hem sıfır veri sahalarında bulunamaz"
 
 #: elf32-v850.c:691
 #, c-format
 msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
-msgstr "`%s' deðiþkeni ayný anda hem küçük hem ufak veri sahalarýnda bulunamaz"
+msgstr "`%s' değişkeni aynı anda hem küçük hem ufak veri sahalarında bulunamaz"
 
 #: elf32-v850.c:694
 #, c-format
 msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
-msgstr "`%s' deðiþkeni ayný anda hem sýfýr hem ufak veri sahalarýnda bulunamaz"
+msgstr "`%s' değişkeni aynı anda hem sıfır hem ufak veri sahalarında bulunamaz"
 
 #: elf32-v850.c:1072
 msgid "FAILED to find previous HI16 reloc\n"
-msgstr "önceki HI16 yerdeðiþimi BULUNAMADI\n"
+msgstr "önceki HI16 yerdeğişimi BULUNAMADI\n"
 
 #: elf32-v850.c:1703
 msgid "could not locate special linker symbol __gp"
-msgstr "özel baðlayýcý sembolü __gp bulunamadý"
+msgstr "özel bağlayıcı sembolü __gp bulunamadı"
 
 #: elf32-v850.c:1707
 msgid "could not locate special linker symbol __ep"
-msgstr "özel baðlayýcý sembolü __ep bulunamadý"
+msgstr "özel bağlayıcı sembolü __ep bulunamadı"
 
 #: elf32-v850.c:1711
 msgid "could not locate special linker symbol __ctbp"
-msgstr "özel baðlayýcý sembolü __ctbp bulunamadý"
+msgstr "özel bağlayıcı sembolü __ctbp bulunamadı"
 
-#: elf32-v850.c:1877
+#: elf32-v850.c:1875
 #, c-format
 msgid "%s: Architecture mismatch with previous modules"
-msgstr "%s: Önceki modüllerle platform uyumsuzluðu"
+msgstr "%s: Önceki modüllerle platform uyumsuzluğu"
 
-#: elf32-v850.c:1897
+#: elf32-v850.c:1895
 #, c-format
 msgid "private flags = %lx: "
-msgstr "özel bayraklar = %lx:"
+msgstr "özel bayraklar = %lx:"
 
-#: elf32-v850.c:1902
+#: elf32-v850.c:1900
 msgid "v850 architecture"
 msgstr "v850 platformu"
 
-#: elf32-v850.c:1903
+#: elf32-v850.c:1901
 msgid "v850e architecture"
 msgstr "v850e platformu"
 
-#: elf32-v850.c:1904
+#: elf32-v850.c:1902
 msgid "v850ea architecture"
 msgstr "v850ea platformu"
 
-#: elf64-alpha.c:858
+#: elf32-vax.c:546
+msgid " [nonpic]"
+msgstr " [nonpic]"
+
+#: elf32-vax.c:549
+msgid " [d-float]"
+msgstr " [d-float]"
+
+#: elf32-vax.c:552
+msgid " [g-float]"
+msgstr " [g-float]"
+
+#: elf32-vax.c:674
+#, c-format
+msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld"
+msgstr "%1$s: uyarı: `%3$s'ye GOT %2$ld eklentisi bir önceki %4$ld GOT eklentisiyle eşleşmiyor"
+
+#: elf32-vax.c:1679
+#, c-format
+msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
+msgstr "%1$s: uyarı: %4$s bölümünden `%3$s' sembolüne PLT eklentisi %2$d yok sayıldı"
+
+#: elf32-vax.c:1814
+#, c-format
+msgid "%s: warning: %s relocation against symbol `%s' from %s section"
+msgstr "%1$s: uyarı: %4$s bölümünden `%3$s' sembolüne %2$s yer değişimi"
+
+#: elf32-vax.c:1820
+#, c-format
+msgid "%s: warning: %s relocation to 0x%x from %s section"
+msgstr "%1$s: uyarı: %4$s bölümünden 0x%3$x'e %2$s yer değişimi"
+
+#: elf32-ia64.c:2280 elf32-xstormy16.c:414 elf64-ia64.c:2280
+msgid "non-zero addend in @fptr reloc"
+msgstr "@fptr yerdeğişiminde sıfır olmayan eklenti"
+
+#: elf64-alpha.c:1097
 msgid "GPDISP relocation did not find ldah and lda instructions"
-msgstr "GPDISP yerdeðiþimi ldah ve lda iþlemlerini bulamadý"
+msgstr "GPDISP yerdeğişimi ldah ve lda işlemlerini bulamadı"
 
-#: elf64-alpha.c:2934
+#: elf64-alpha.c:3675
 #, c-format
 msgid "%s: .got subsegment exceeds 64K (size %d)"
-msgstr "%s: .got alt parçasý 64K'yý aþýyor (boy %d)"
+msgstr "%s: .got alt parçası 64K'yı aşıyor (boy %d)"
 
-#: elf64-alpha.c:3518 elf64-alpha.c:3530
+#: elf64-alpha.c:4498 elf64-alpha.c:4510
 #, c-format
 msgid "%s: gp-relative relocation against dynamic symbol %s"
-msgstr "%s: %s dinamik sembolüne gp göreceli yer deðiþimi"
+msgstr "%s: %s dinamik sembolüne gp göreceli yer değişimi"
+
+#: elf64-alpha.c:4536 elf64-alpha.c:4676
+#, c-format
+msgid "%s: pc-relative relocation against dynamic symbol %s"
+msgstr "%s: %s dinamik sembolüne pc göreceli yer değişimi"
+
+#: elf64-alpha.c:4564
+#, c-format
+msgid "%s: change in gp: BRSGP %s"
+msgstr "%s: gp içinde değişiklik: BRSGP %s"
 
-#: elf64-hppa.c:2070
+#: elf64-alpha.c:4589
+msgid "<unknown>"
+msgstr "<bilinmeyen>"
+
+#: elf64-alpha.c:4594
+#, c-format
+msgid "%s: !samegp reloc against symbol without .prologue: %s"
+msgstr "%s: .prologue olmaksızın sembole !samegp yerdeğişimi: %s"
+
+#: elf64-alpha.c:4639
+#, c-format
+msgid "%s: unhandled dynamic relocation against %s"
+msgstr "%s: %s'e desteklenmeyen dinamik yerdeğişim"
+
+#: elf64-alpha.c:4752
+#, c-format
+msgid "%s: dtp-relative relocation against dynamic symbol %s"
+msgstr "%s: %s dinamik sembolüne dtp göreceli yer değişimi"
+
+#: elf64-alpha.c:4775
+#, c-format
+msgid "%s: tp-relative relocation against dynamic symbol %s"
+msgstr "%s: %s dinamik sembolüne tp göreceli yer değişimi"
+
+#: elf64-hppa.c:2080
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %ld"
-msgstr "%s için koçan girdisi .plt'yi yükleyemedi, dp görecesi = %ld"
+msgstr "%s için koçan girdisi .plt'yi yükleyemedi, dp görecesi = %ld"
 
-#: elf64-mmix.c:1268
+#: elf64-mmix.c:1002
 #, c-format
-msgid "%s: register relocation against non-register symbol: %s in %s"
-msgstr "%1$s: yazmaç olmayan sembole yazmaç yerdeðiþimi: %3$s içinde %2$s"
+msgid ""
+"%s: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n"
+msgstr ""
+"%s: bağlayıcı tarafından ayrılmış global yazmaç değeri için iç tutarsızlık hatası:\n"
+" 0x%lx%08lx != gevşetilmiş: 0x%lx%08lx\n"
 
-#: elf64-mmix.c:1270
-msgid "(unknown)"
-msgstr "(bilinmeyen)"
+#: elf64-mmix.c:1386
+#, c-format
+msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s"
+msgstr "%s: yazmaç sembolüne temel artı görece yerdeğişimi: %s içinde (bilinmeyen)"
+
+#: elf64-mmix.c:1391
+#, c-format
+msgid "%s: base-plus-offset relocation against register symbol: %s in %s"
+msgstr "%1$s: yazmaç sembolüne temel artı görece yerdeğişimi: %3$s içinde %2$s"
 
-#: elf64-mmix.c:1305
+#: elf64-mmix.c:1435
+#, c-format
+msgid "%s: register relocation against non-register symbol: (unknown) in %s"
+msgstr "%s: yazmaç olmayan sembole yazmaç yerdeğişimi: %s içinde (bilinmeyen)"
+
+#: elf64-mmix.c:1440
+#, c-format
+msgid "%s: register relocation against non-register symbol: %s in %s"
+msgstr "%1$s: yazmaç olmayan sembole yazmaç yerdeğişimi: %3$s içinde %2$s"
+
+#: elf64-mmix.c:1477
 #, c-format
 msgid "%s: directive LOCAL valid only with a register or absolute value"
-msgstr "%s: YEREL (LOCAL) yönergesi yalnýz bir yazmaç veya kesin deðerle geçerlidir"
+msgstr "%s: YEREL (LOCAL) yönergesi yalnız bir yazmaç veya kesin değerle geçerlidir"
 
-#: elf64-mmix.c:1333
+#: elf64-mmix.c:1505
 #, c-format
 msgid "%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld."
 msgstr ""
-"%s: YEREL (LOCAL) yönergesi: $%ld yazmacý yerel yazmaç deðil.\n"
-"    Ýlk evrensel yazmaç: $%ld."
+"%s: YEREL (LOCAL) yönergesi: $%ld yazmacı yerel yazmaç değil.\n"
+"    İlk evrensel yazmaç: $%ld."
 
-#: elf64-mmix.c:1609
+#: elf64-mmix.c:1965
 #, c-format
 msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
 msgstr ""
-"%s: Hata: `%s' birden fazla defa tanýmlanmýþ; %s'nin baþlangýcý daha önce\n"
-"    baðlanan bir dosyada.\n"
+"%s: Hata: `%s' birden fazla defa tanımlanmış; %s'nin başlangıcı daha önce\n"
+"    bağlanan bir dosyada.\n"
 
-#: elf64-mmix.c:1668
+#: elf64-mmix.c:2024
 msgid "Register section has contents\n"
-msgstr "Yazmaç bölümünde içerik yok\n"
+msgstr "Yazmaç bölümünde içerik yok\n"
+
+#: elf64-mmix.c:2186
+#, c-format
+msgid ""
+"Internal inconsistency: remaining %u != max %u.\n"
+"  Please report this bug."
+msgstr ""
+"İç uyumsuzluk: kalan %u != maksimum %u. \n"
+"  Lütfen bu hatayı bildirin."
 
-#: elf64-ppc.c:1466 libbfd.c:1436
+#: elf64-ppc.c:1669 libbfd.c:1435
 #, c-format
 msgid "%s: compiled for a big endian system and target is little endian"
-msgstr "%s: büyük sonlu sistem için derlenmiþ ve hedef küçük sonlu"
+msgstr "%s: büyük sonlu sistem için derlenmiş ve hedef küçük sonlu"
 
-#: elf64-ppc.c:1468 libbfd.c:1438
+#: elf64-ppc.c:1671 libbfd.c:1437
 #, c-format
 msgid "%s: compiled for a little endian system and target is big endian"
-msgstr "%s: küçük sonlu sistem için derlenmiþ ve hedef büyük sonlu"
+msgstr "%s: küçük sonlu sistem için derlenmiş ve hedef büyük sonlu"
 
-#: elf64-ppc.c:3166
+#: elf64-ppc.c:3610
 #, c-format
-msgid "linkage table overflow against `%s'"
-msgstr "`%s'ye baðlama tablosu taþmasý"
+msgid "%s: unexpected reloc type %u in .opd section"
+msgstr "%s: opd bölümünde beklenmeyen yerdeğişim türü %u"
 
-#: elf64-ppc.c:3244
-msgid "stub section size doesn't match calculated size"
-msgstr "koçan bölümü boyu hesaplanan boyla eþleþmiyor"
+#: elf64-ppc.c:3630
+#, c-format
+msgid "%s: .opd is not a regular array of opd entries"
+msgstr "%s: opd, opd girdilerinin düzenli dizisi değil"
+
+#: elf64-ppc.c:3672
+#, c-format
+msgid "%s: undefined sym `%s' in .opd section"
+msgstr "%s: opd bölümünde tanımlanmamış `%s' sembolü"
+
+#: elf64-ppc.c:4397
+#, c-format
+msgid "can't find branch stub `%s'"
+msgstr "`%s' dal koçanı bulunamadı"
+
+#: elf64-ppc.c:4436 elf64-ppc.c:4501
+#, c-format
+msgid "linkage table error against `%s'"
+msgstr "`%s'ye bağlama tablosu hatası"
 
-#: elf64-ppc.c:3845
+#: elf64-ppc.c:4573
+#, c-format
+msgid "can't build branch stub `%s'"
+msgstr "`%s' dal koçanı derlenemedi"
+
+#: elf64-ppc.c:5179
+msgid "stubs don't match calculated size"
+msgstr "koçanlar hesaplanan boyla eşleşmiyor"
+
+#: elf64-ppc.c:5828
 #, c-format
 msgid "%s: Relocation %s is not supported for symbol %s."
-msgstr "%s: %s yerdeðiþimi %s sembolü için henüz desteklenmiyor."
+msgstr "%s: %s yerdeğişimi %s sembolü için henüz desteklenmiyor."
 
-#: elf64-ppc.c:3889
+#: elf64-ppc.c:5872
 #, c-format
 msgid "%s: error: relocation %s not a multiple of 4"
-msgstr "%s: hata: %s yerdeðiþimi 4'ün katý deðil"
+msgstr "%s: hata: %s yerdeğişimi 4'ün katı değil"
 
-#: elf64-sparc.c:1277
+#: elf64-sparc.c:1280
 #, c-format
 msgid "%s: check_relocs: unhandled reloc type %d"
-msgstr "%s: check_relocs: desteklenmeyen yerdeðiþim türü %d"
+msgstr "%s: check_relocs: desteklenmeyen yerdeğişim türü %d"
 
-#: elf64-sparc.c:1314
+#: elf64-sparc.c:1317
 #, c-format
 msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER"
-msgstr "%s: Yalnýz %%g[2367] yazmaçlarý STT_REGISTER ile bildirilebilir"
+msgstr "%s: Yalnız %%g[2367] yazmaçları STT_REGISTER ile bildirilebilir"
 
-#: elf64-sparc.c:1334
+#: elf64-sparc.c:1337
 #, c-format
-msgid "Register %%g%d used incompatibly: %s in %s"
-msgstr "%%g%1$d yazmacý uyumsuz kullanýlmýþ: %3$s içinde %2$s"
+msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s"
+msgstr "%%g%1$d yazmacı uyumsuz kullanılmış: %3$s içinde %2$s, daha önce %5$s içinde %4$s idi"
 
-#: elf64-sparc.c:1338 elf64-sparc.c:1362 elf64-sparc.c:1411
+#: elf64-sparc.c:1360
 #, c-format
-msgid "  previously %s in %s"
-msgstr "  daha önce %2$s içinde %1$s"
+msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s"
+msgstr "`%1$s' sembolünün farklı türleri var: %2$s içinde REGISTER (yazmaç), daha önce %4$s içinde %3$s"
 
-#: elf64-sparc.c:1359 elf64-sparc.c:1408
+#: elf64-sparc.c:1406
 #, c-format
-msgid "Symbol `%s' has differing types: %s in %s"
-msgstr "`%1$s' sembolünün farklý türleri var: %3$s içinde %2$s"
+msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s"
+msgstr ""
+"`%1$s' sembolünün farklı türleri var: %3$s içinde %2$s, \n"
+"  daha önce %4$s içinde REGISTER (yazmaç)"
 
-#: elf64-sparc.c:3014
+#: elf64-sparc.c:2970
 #, c-format
 msgid "%s: linking UltraSPARC specific with HAL specific code"
-msgstr "%s: UltraSPARC'a özel kod HAL'e özel kod ile baðlanýyor"
+msgstr "%s: UltraSPARC'a özel kod HAL'e özel kod ile bağlanıyor"
 
-#: elfcode.h:1218
+#: elfcode.h:1198
 #, c-format
 msgid "%s: version count (%ld) does not match symbol count (%ld)"
-msgstr "%s: sürüm sayýsý (%ld) sembol sayýsý (%ld) ile eþleþmiyor"
+msgstr "%s: sürüm sayısı (%ld) sembol sayısı (%ld) ile eşleşmiyor"
 
-#: elflink.c:434
+#: elflink.c:440
 #, c-format
 msgid "%s: Section %s is too large to add hole of %ld bytes"
-msgstr "%s: %s bölümü içine %ld baytlýk bir delik koymak için fazla büyük"
+msgstr "%s: %s bölümü içine %ld baytlık bir delik koymak için fazla büyük"
 
-#: elflink.h:1113
+#: elflink.h:1090
 #, c-format
 msgid "%s: warning: unexpected redefinition of `%s'"
-msgstr "%s: uyarý: `%s' için beklenmeyen yeniden tanýmlama"
+msgstr "%s: uyarı: `%s' için beklenmeyen yeniden tanımlama"
 
-#: elflink.h:1784
+#: elflink.h:1727
 #, c-format
 msgid "%s: %s: invalid version %u (max %d)"
-msgstr "%s: %s: geçersiz sürüm %u (maksimum %d)"
+msgstr "%s: %s: geçersiz sürüm %u (maksimum %d)"
 
-#: elflink.h:1825
+#: elflink.h:1768
 #, c-format
 msgid "%s: %s: invalid needed version %d"
-msgstr "%s: %s: geçersiz gerekli sürüm %d"
+msgstr "%s: %s: geçersiz gerekli sürüm %d"
 
-#: elflink.h:1945
+#: elflink.h:1890
 #, c-format
 msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s"
-msgstr "Uyarý: `%s' sembolünün boyu %lu'dan %lu'ya %s içerisinde deðiþti"
+msgstr "Uyarı: `%s' sembolünün boyu %lu'dan %lu'ya %s içerisinde değişti"
 
-#: elflink.h:4020
+#: elflink.h:3174
+#, c-format
+msgid "%s: .preinit_array section is not allowed in DSO"
+msgstr "%s: DSO içinde preinit_array'e izin verilmiyor"
+
+#: elflink.h:4030
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
-msgstr "uyarý: `%s' dinamik sembolünün türü ve boyu tanýmlý deðil"
+msgstr "uyarı: `%s' dinamik sembolünün türü ve boyu tanımlı değil"
 
-#: elflink.h:4329
+#: elflink.h:4345
 #, c-format
 msgid "%s: undefined versioned symbol name %s"
-msgstr "%s: sürümlü sembol ismi %s tanýmlý deðil"
+msgstr "%s: sürümlü sembol ismi %s tanımlı değil"
 
-#: elflink.h:4559 elflink.h:4567 elflink.h:6218 elflink.h:7295
+#: elflink.h:4611 elflink.h:4619 elflink.h:6508 elflink.h:7600
 msgid "Error: out of memory"
-msgstr "Hata: bellek tükendi"
+msgstr "Hata: bellek tükendi"
 
-#: elflink.h:4729
+#: elflink.h:4781
 msgid "Not enough memory to sort relocations"
-msgstr "Yerdeðiþimleri sýralamak için gerekli bellek yok"
+msgstr "Yerdeğişimleri sıralamak için gerekli bellek yok"
+
+#: elflink.h:5682 elflink.h:5725
+#, c-format
+msgid "%s: could not find output section %s"
+msgstr "%s: çıktı bölümü %s bulunamadı"
 
-#: elflink.h:5995
+#: elflink.h:5688
+#, c-format
+msgid "warning: %s section has zero size"
+msgstr "uyarı: %s bölümü sıfır boyunda"
+
+#: elflink.h:6275
 #, c-format
 msgid "%s: could not find output section %s for input section %s"
-msgstr "%1$s: girdi bölümü %3$s için çýktý bölümü %2$s bulunamadý"
+msgstr "%1$s: girdi bölümü %3$s için çıktı bölümü %2$s bulunamadı"
+
+#: elflink.h:6486
+#, c-format
+msgid "%s: relocation size mismatch in %s section %s"
+msgstr "%1$s: %3$s bölümünde %2$s içinde yerdeğişim boy uyuşmazlığı"
 
-#: elflink.h:6568
+#: elflink.h:6849
 msgid "warning: relocation against removed section; zeroing"
-msgstr "uyarý: silinmiþ bölüme yer deðiþim; sýfýrlandý"
+msgstr "uyarı: silinmiş bölüme yer değişim; sıfırlandı"
 
-#: elflink.h:6598
+#: elflink.h:6879
 msgid "warning: relocation against removed section"
-msgstr "%1$s: silinmiþ bölüme yerdeðiþim"
+msgstr "%1$s: silinmiş bölüme yerdeğişim"
 
-#: elflink.h:6611
+#: elflink.h:6892
 #, c-format
 msgid "local symbols in discarded section %s"
-msgstr "atýlmýþ %s bölümünde yerel semboller"
+msgstr "atılmış %s bölümünde yerel semboller"
+
+#: elfxx-mips.c:734
+msgid "static procedure (no name)"
+msgstr "statik altyordam (isimsiz)"
+
+#: elfxx-mips.c:1601
+msgid "not enough GOT space for local GOT entries"
+msgstr "yerel GOT girdileri için yeterli GOT yeri yok"
+
+#: elfxx-mips.c:2750
+#, c-format
+msgid "%s: %s+0x%lx: jump to stub routine which is not jal"
+msgstr "%s: %s+0x%lx: jal olmayan koçan yordamına sıçrama"
+
+#: elfxx-mips.c:4270
+#, c-format
+msgid "%s: Malformed reloc detected for section %s"
+msgstr "%s: %s bölümü için geçersiz yer değişim bulundu"
+
+#: elfxx-mips.c:4348
+#, c-format
+msgid "%s: CALL16 reloc at 0x%lx not against global symbol"
+msgstr "%s: 0x%lx'deki CALL16 yerdeğişimi evrensel sembole göre değil"
+
+#: elfxx-mips.c:7301
+#, c-format
+msgid "%s: illegal section name `%s'"
+msgstr "%s: geçersiz bölüm adı `%s'"
+
+#: elfxx-mips.c:7615
+#, c-format
+msgid "%s: linking PIC files with non-PIC files"
+msgstr "%s: PIC dosyaları PIC olmayan dosyalarla bağlanıyor"
 
-#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456
+#: elfxx-mips.c:7625
+#, c-format
+msgid "%s: linking abicalls files with non-abicalls files"
+msgstr "%s: abicalls dosyaları abicalls olmayan dosyalarla bağlanıyor"
+
+#: elfxx-mips.c:7654
+#, c-format
+msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
+msgstr "%1$s: Önceki modüllerle (-mips%3$d) ile ISA uyumsuzluğu (-mips%2$d)"
+
+#: elfxx-mips.c:7676
+#, c-format
+msgid "%s: ISA mismatch (%d) with previous modules (%d)"
+msgstr "%1$s: Önceki modüllerle (%3$d) ile ISA uyumsuzluğu (%2$d)"
+
+#: elfxx-mips.c:7699
+#, c-format
+msgid "%s: ABI mismatch: linking %s module with previous %s modules"
+msgstr "%s: ABI uyumsuzluğu: %s modülü önceki %s modülle bağlanıyor"
+
+#: elfxx-mips.c:7759
+msgid " [abi=O32]"
+msgstr " [abi=O32]"
+
+#: elfxx-mips.c:7761
+msgid " [abi=O64]"
+msgstr " [abi=O64]"
+
+#: elfxx-mips.c:7763
+msgid " [abi=EABI32]"
+msgstr " [abi=EABI32]"
+
+#: elfxx-mips.c:7765
+msgid " [abi=EABI64]"
+msgstr " [abi=EABI64]"
+
+#: elfxx-mips.c:7767
+msgid " [abi unknown]"
+msgstr " [abi bilinmiyor]"
+
+#: elfxx-mips.c:7769
+msgid " [abi=N32]"
+msgstr " [abi=N32]"
+
+#: elfxx-mips.c:7771
+msgid " [abi=64]"
+msgstr " [abi=64]"
+
+#: elfxx-mips.c:7773
+msgid " [no abi set]"
+msgstr " [abi atanmamış]"
+
+#: elfxx-mips.c:7776
+msgid " [mips1]"
+msgstr " [mips1]"
+
+#: elfxx-mips.c:7778
+msgid " [mips2]"
+msgstr " [mips2]"
+
+#: elfxx-mips.c:7780
+msgid " [mips3]"
+msgstr " [mips3]"
+
+#: elfxx-mips.c:7782
+msgid " [mips4]"
+msgstr " [mips4]"
+
+#: elfxx-mips.c:7784
+msgid " [mips5]"
+msgstr " [mips5]"
+
+#: elfxx-mips.c:7786
+msgid " [mips32]"
+msgstr " [mips32]"
+
+#: elfxx-mips.c:7788
+msgid " [mips64]"
+msgstr " [mips64]"
+
+#: elfxx-mips.c:7790
+msgid " [unknown ISA]"
+msgstr " [bilinmeyen ISA]"
+
+#: elfxx-mips.c:7793
+msgid " [mdmx]"
+msgstr " [mdmx]"
+
+#: elfxx-mips.c:7796
+msgid " [mips16]"
+msgstr " [mips16]"
+
+#: elfxx-mips.c:7799
+msgid " [32bitmode]"
+msgstr " [32bitkipi]"
+
+#: elfxx-mips.c:7801
+msgid " [not 32bitmode]"
+msgstr " [32bitkipi değil]"
+
+#: i386linux.c:458 m68klinux.c:462 sparclinux.c:459
 #, c-format
 msgid "Output file requires shared library `%s'\n"
-msgstr "Çýktý dosyasý için paylaþýmlý kitaplýk `%s' gerekli\n"
+msgstr "Çıktı dosyası için paylaşımlı kitaplık `%s' gerekli\n"
 
-#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464
+#: i386linux.c:466 m68klinux.c:470 sparclinux.c:467
 #, c-format
 msgid "Output file requires shared library `%s.so.%s'\n"
-msgstr "Çýktý dosyasý için paylaþýmlý kitaplýk `%s.so.%s' gerekli\n"
+msgstr "Çıktı dosyası için paylaşımlı kitaplık `%s.so.%s' gerekli\n"
 
-#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708
-#: sparclinux.c:655 sparclinux.c:705
+#: i386linux.c:655 i386linux.c:705 m68klinux.c:662 m68klinux.c:710
+#: sparclinux.c:657 sparclinux.c:707
 #, c-format
 msgid "Symbol %s not defined for fixups\n"
-msgstr "%s sembolü düzeltmeler için tanýmlý deðil\n"
+msgstr "%s sembolü düzeltmeler için tanımlı değil\n"
 
-#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729
+#: i386linux.c:729 m68klinux.c:734 sparclinux.c:731
 msgid "Warning: fixup count mismatch\n"
-msgstr "Uyarý: düzeltme sayý uyumsuzluðu\n"
+msgstr "Uyarı: düzeltme sayı uyumsuzluğu\n"
 
 #: ieee.c:235
 #, c-format
@@ -1518,261 +1765,261 @@ msgstr "%s: dizge fazla uzun (%d karakter, en fazla 65535)"
 #: ieee.c:365
 #, c-format
 msgid "%s: unrecognized symbol `%s' flags 0x%x"
-msgstr "%s: bilinmeyen `%s' sembol bayraklarý 0x%x"
+msgstr "%s: bilinmeyen `%s' sembol bayrakları 0x%x"
 
 #: ieee.c:877
 #, c-format
-msgid "%s: unimplemented ATI record  %u for symbol %u"
-msgstr "%1$s: %3$u için desteklenmeyen ATI kaydý %2$u"
+msgid "%s: unimplemented ATI record %u for symbol %u"
+msgstr "%1$s: %3$u sembolü için desteklenmeyen ATI kaydı %2$u"
 
 #: ieee.c:902
 #, c-format
 msgid "%s: unexpected ATN type %d in external part"
-msgstr "%s: dýþ parçada beklenmeyen ATN türü %d"
+msgstr "%s: dış parçada beklenmeyen ATN türü %d"
 
 #: ieee.c:924
 #, c-format
 msgid "%s: unexpected type after ATN"
-msgstr "%s: ATN'den sonra beklenmeyen tür"
+msgstr "%s: ATN'den sonra beklenmeyen tür"
 
 #: ihex.c:258
 #, c-format
 msgid "%s:%d: unexpected character `%s' in Intel Hex file\n"
-msgstr "%s:%d: Intel Onaltýlýk dosyasýnda beklenmeyen `%s' karakteri\n"
+msgstr "%s:%d: Intel Onaltılık dosyasında beklenmeyen `%s' karakteri\n"
 
-#: ihex.c:368
+#: ihex.c:366
 #, c-format
 msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr ""
-"%s:%u: Intel Onaltýlýk dosyasýnda hatalý saðlama toplamý\n"
+"%s:%u: Intel Onaltılık dosyasında hatalı sağlama toplamı\n"
 "       (%u beklendi, %u bulundu)"
 
-#: ihex.c:422
+#: ihex.c:420
 #, c-format
 msgid "%s:%u: bad extended address record length in Intel Hex file"
-msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun adres kaydý uzunluðu"
+msgstr "%s:%u: Intel Onaltılık dosyasında hatalı uzun adres kaydı uzunluğu"
 
-#: ihex.c:439
+#: ihex.c:437
 #, c-format
 msgid "%s:%u: bad extended start address length in Intel Hex file"
-msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun baþlangýç adresi uzunluðu"
+msgstr "%s:%u: Intel Onaltılık dosyasında hatalı uzun başlangıç adresi uzunluğu"
 
-#: ihex.c:456
+#: ihex.c:454
 #, c-format
 msgid "%s:%u: bad extended linear address record length in Intel Hex file"
-msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun lineer adres kaydý uzunluðu"
+msgstr "%s:%u: Intel Onaltılık dosyasında hatalı uzun lineer adres kaydı uzunluğu"
 
-#: ihex.c:473
+#: ihex.c:471
 #, c-format
 msgid "%s:%u: bad extended linear start address length in Intel Hex file"
-msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun lineer baþlangýç adres uzunluðu"
+msgstr "%s:%u: Intel Onaltılık dosyasında hatalı uzun lineer başlangıç adres uzunluğu"
 
-#: ihex.c:490
+#: ihex.c:488
 #, c-format
 msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n"
-msgstr "%s:%u: Intel Onaltýlýk dosyasýnda bilinmeyen onaltýlýk türü %u\n"
+msgstr "%s:%u: Intel Onaltılık dosyasında bilinmeyen onaltılık türü %u\n"
 
-#: ihex.c:610
+#: ihex.c:607
 #, c-format
 msgid "%s: internal error in ihex_read_section"
-msgstr "%s: ihex_read_section'da iç hata"
+msgstr "%s: ihex_read_section'da iç hata"
 
-#: ihex.c:645
+#: ihex.c:642
 #, c-format
 msgid "%s: bad section length in ihex_read_section"
-msgstr "%s: ihex_read_section'da hatalý bölüm uzunluðu"
+msgstr "%s: ihex_read_section'da hatalı bölüm uzunluğu"
 
-#: ihex.c:863
+#: ihex.c:860
 #, c-format
-msgid "%s: address 0x%s out of range for Intex Hex file"
-msgstr "%s: Intex Onaltýlýk dosyasý için 0x%s adresi kapsamdýþý"
+msgid "%s: address 0x%s out of range for Intel Hex file"
+msgstr "%s: Intex Onaltılık dosyası için 0x%s adresi kapsamdışı"
 
 #: libbfd.c:492
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "eþlenmeyen: veri=%lx eþleþen=%d\n"
+msgstr "eşlenmeyen: veri=%lx eşleşen=%d\n"
 
 #: libbfd.c:495
 msgid "not mapping: env var not set\n"
-msgstr "eþlenmeyen: çevre deðiþkeni atanmamýþ\n"
+msgstr "eşlenmeyen: çevre değişkeni atanmamış\n"
 
-#: libbfd.c:1463
+#: libbfd.c:1466
 #, c-format
-msgid "Deprecated %s called"
-msgstr "Geçerliliði kalkmýþ %s çaðrýldý"
+msgid "Deprecated %s called at %s line %d in %s\n"
+msgstr "Geçersizleşmiş %s, %s'da, %d satırı, %s içerisinde çağrıldı\n"
 
-#: libbfd.c:1465
+#: libbfd.c:1469
 #, c-format
-msgid " at %s line %d in %s\n"
-msgstr "%s, %d satýrý, %s içerisinde\n"
+msgid "Deprecated %s called\n"
+msgstr "Geçerliliği kalkmış %s çağrıldı\n"
 
-#: linker.c:1849
+#: linker.c:1873
 #, c-format
 msgid "%s: indirect symbol `%s' to `%s' is a loop"
-msgstr "%1$s: `%3$s'den endirekt sembol `%2$s'e çevrim"
+msgstr "%1$s: `%3$s'den endirekt sembol `%2$s'e çevrim"
 
-#: linker.c:2745
+#: linker.c:2776
 #, c-format
 msgid "Attempt to do relocateable link with %s input and %s output"
-msgstr "%s girdi ve %s çýktýsý ile yerdeðiþimli bað deneniyor"
+msgstr "%s girdi ve %s çıktısı ile yerdeğişimli bağ deneniyor"
 
-#: merge.c:897
+#: merge.c:892
 #, c-format
 msgid "%s: access beyond end of merged section (%ld + %ld)"
-msgstr "%s: karýþtýrýlmýþ bölümün sonundan ileride eriþim (%ld + %ld)"
+msgstr "%s: karıştırılmış bölümün sonundan ileride erişim (%ld + %ld)"
 
 #: mmo.c:460
 #, c-format
 msgid "%s: No core to allocate section name %s\n"
-msgstr "%s: %s bölüm adýný ayýracak `core' yok\n"
+msgstr "%s: %s bölüm adını ayıracak `core' yok\n"
 
-#: mmo.c:537
+#: mmo.c:536
 #, c-format
 msgid "%s: No core to allocate a symbol %d bytes long\n"
-msgstr "%s: %d bayt uzunluðunda bir sembole yer ayýrmak için `core' yok\n"
+msgstr "%s: %d bayt uzunluğunda bir sembole yer ayırmak için `core' yok\n"
 
-#: mmo.c:1190
+#: mmo.c:1245
 #, c-format
 msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n"
-msgstr "%s: geçersiz mmo dosyasý: $255 için baþlangýç deðeri `Main' deðil\n"
+msgstr "%s: geçersiz mmo dosyası: $255 için başlangıç değeri `Main' değil\n"
 
-#: mmo.c:1336
+#: mmo.c:1391
 #, c-format
 msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
 msgstr ""
-"%1$s: `%4$s' ile baþlayan sembol adýndan sonra desteklenmeyen\n"
-"    geniþ karakter dizisi 0x%2$02X 0x%3$02X\n"
+"%1$s: `%4$s' ile başlayan sembol adından sonra desteklenmeyen\n"
+"    geniş karakter dizisi 0x%2$02X 0x%3$02X\n"
 
-#: mmo.c:1571
+#: mmo.c:1633
 #, c-format
 msgid "%s: invalid mmo file: unsupported lopcode `%d'\n"
-msgstr "%s: geçersiz mmo dosyasý: desteklenmeyen lopkod `%d'\n"
+msgstr "%s: geçersiz mmo dosyası: desteklenmeyen lopkod `%d'\n"
 
-#: mmo.c:1581
+#: mmo.c:1643
 #, c-format
 msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
-msgstr "%s: geçersiz mmo dosyasý: YZ = 1 beklendi, lop_quote için YZ = %d bulundu\n"
+msgstr "%s: geçersiz mmo dosyası: YZ = 1 beklendi, lop_quote için YZ = %d bulundu\n"
 
-#: mmo.c:1617
+#: mmo.c:1679
 #, c-format
 msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr ""
-"%s: geçersiz mmo dosyasý: z = 1 veya z = 2 beklendi, \n"
-"    lop_loc için z = %d bulundu\n"
+"%s: geçersiz mmo dosyası: z = 1 veya z = 2 beklendi, \n"
+"    lop_loc için z = %d bulundu\n"
 
-#: mmo.c:1663
+#: mmo.c:1725
 #, c-format
 msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
-msgstr "%s: geçersiz mmo dosyasý: z = 1 veya z = 2 beklendi;     lop_fixo için z = %d bulundu\n"
+msgstr "%s: geçersiz mmo dosyası: z = 1 veya z = 2 beklendi;     lop_fixo için z = %d bulundu\n"
 
-#: mmo.c:1702
+#: mmo.c:1764
 #, c-format
 msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
-msgstr "%s: geçersiz mmo dosyasý: y = 0 beklendi; lop_fixrx için y = %d bulundu\n"
+msgstr "%s: geçersiz mmo dosyası: y = 0 beklendi; lop_fixrx için y = %d bulundu\n"
 
-#: mmo.c:1711
+#: mmo.c:1773
 #, c-format
 msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr ""
-"%s: geçersiz mmo dosyasý: z = 16 veya z = 24 beklendi;\n"
-"    lop_fixrx için z = %d bulundu\n"
+"%s: geçersiz mmo dosyası: z = 16 veya z = 24 beklendi;\n"
+"    lop_fixrx için z = %d bulundu\n"
 
-#: mmo.c:1734
+#: mmo.c:1796
 #, c-format
 msgid "%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
 msgstr ""
-"%s: geçersiz mmo dosyasý: iþlenen word'un ilk baytý 0 veya 1 olmalý; \n"
-"    lop_fixrx için %d bulundu\n"
+"%s: geçersiz mmo dosyası: işlenen word'un ilk baytı 0 veya 1 olmalı; \n"
+"    lop_fixrx için %d bulundu\n"
 
-#: mmo.c:1757
+#: mmo.c:1819
 #, c-format
 msgid "%s: cannot allocate file name for file number %d, %d bytes\n"
-msgstr "%s: %d sayýlý dosya için dosya adý ayrýlamadý, %d bayt\n"
+msgstr "%s: %d sayılı dosya için dosya adı ayrılamadı, %d bayt\n"
 
-#: mmo.c:1777
+#: mmo.c:1839
 #, c-format
 msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
-msgstr "%s: geçersiz mmo dosyasý: %d sayýlý dosya, `%s', zaten `%s' olarak girilmiþ\n"
+msgstr "%s: geçersiz mmo dosyası: %d sayılı dosya, `%s', zaten `%s' olarak girilmiş\n"
 
-#: mmo.c:1790
+#: mmo.c:1852
 #, c-format
 msgid "%s: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr ""
-"%s: geçersiz mmo dosyasý: %d sayýsý için dosya adý kullanýmdan\n"
-"    önce belirtilmemiþ\n"
+"%s: geçersiz mmo dosyası: %d sayısı için dosya adı kullanımdan\n"
+"    önce belirtilmemiş\n"
 
-#: mmo.c:1896
+#: mmo.c:1958
 #, c-format
 msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr ""
-"%s: geçersiz mmo dosyasý: lop_stab'in y ve z alanlarý sýfýr deðil;\n"
+"%s: geçersiz mmo dosyası: lop_stab'in y ve z alanları sıfır değil;\n"
 "    y: %d, z: %d\n"
 
-#: mmo.c:1932
+#: mmo.c:1994
 #, c-format
 msgid "%s: invalid mmo file: lop_end not last item in file\n"
-msgstr "%s: geçersiz mmo dosyasý: lop_end dosyadaki son girdi deðil\n"
+msgstr "%s: geçersiz mmo dosyası: lop_end dosyadaki son girdi değil\n"
 
-#: mmo.c:1945
+#: mmo.c:2007
 #, c-format
 msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr ""
-"%s: geçersiz mmo dosyasý: lop_end'in YZ'si (%ld); bir önceki \n"
-"    lop_stab'in (%ld) dörtlü sayýsýna eþit deðil\n"
+"%s: geçersiz mmo dosyası: lop_end'in YZ'si (%ld); bir önceki \n"
+"    lop_stab'in (%ld) dörtlü sayısına eşit değil\n"
 
-#: mmo.c:2610
+#: mmo.c:2670
 #, c-format
 msgid "%s: invalid symbol table: duplicate symbol `%s'\n"
-msgstr "%s: geçersiz sembol tablosu: tekrarlanmýþ sembol `%s'\n"
+msgstr "%s: geçersiz sembol tablosu: tekrarlanmış sembol `%s'\n"
 
-#: mmo.c:2898
+#: mmo.c:2921
 #, c-format
 msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr ""
-"%1$s: Hatalý sembol tanýmý: `Main' baþlangýç adresi %3$s yerine \n"
-"    %2$s olarak tanýmlanmýþ\n"
+"%1$s: Hatalı sembol tanımı: `Main' başlangıç adresi %3$s yerine \n"
+"    %2$s olarak tanımlanmış\n"
 
-#: mmo.c:2932
+#: mmo.c:3011
 #, c-format
 msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr ""
-"%s: uyarý: sembol tablosu mmo için fazla büyük, 65535 32-bit word'den\n"
-"    fazla: %d. Yalnýz `Main' üretilecek. \n"
+"%s: uyarı: sembol tablosu mmo için fazla büyük, 65535 32-bit word'den\n"
+"    fazla: %d. Yalnız `Main' üretilecek. \n"
 
-#: mmo.c:2977
+#: mmo.c:3056
 #, c-format
 msgid "%s: internal error, symbol table changed size from %d to %d words\n"
-msgstr "%s: iç hata, sembol tablosu büyüklüðü %d'den %d word'e deðiþti\n"
+msgstr "%s: iç hata, sembol tablosu büyüklüğü %d'den %d word'e değişti\n"
 
-#: mmo.c:3032
+#: mmo.c:3111
 #, c-format
 msgid "%s: internal error, internal register section %s had contents\n"
-msgstr "%s: iç hata, %s iç yazmaç bölümü içerik taþýyor\n"
+msgstr "%s: iç hata, %s iç yazmaç bölümü içerik taşıyor\n"
 
-#: mmo.c:3084
+#: mmo.c:3163
 #, c-format
 msgid "%s: no initialized registers; section length 0\n"
-msgstr "%s: ilklenen yazmaç yok; bölüm uzunluðu 0\n"
+msgstr "%s: ilklenen yazmaç yok; bölüm uzunluğu 0\n"
 
-#: mmo.c:3090
+#: mmo.c:3169
 #, c-format
 msgid "%s: too many initialized registers; section length %ld\n"
-msgstr "%s: çok fazla ilklenmiþ yazmaç; bölüm uzunluðu %ld\n"
+msgstr "%s: çok fazla ilklenmiş yazmaç; bölüm uzunluğu %ld\n"
 
-#: mmo.c:3095
+#: mmo.c:3174
 #, c-format
 msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n"
-msgstr "%s: %ld uzunluðunda ilklenmiþ yazmaçlar için hatalý baþlangýç adresi: 0x%lx%08lx\n"
+msgstr "%s: %ld uzunluğunda ilklenmiş yazmaçlar için hatalı başlangıç adresi: 0x%lx%08lx\n"
 
-#: oasys.c:1036
+#: oasys.c:1029
 #, c-format
 msgid "%s: can not represent section `%s' in oasys"
-msgstr "%s: oasys'de `%s' bölümü gösterilemiyor"
+msgstr "%s: oasys'de `%s' bölümü gösterilemiyor"
 
 #: osf-core.c:132
 #, c-format
 msgid "Unhandled OSF/1 core file section type %d\n"
-msgstr "Desteklenmeyen OSF/1 core dosyasý bölüm türü %d\n"
+msgstr "Desteklenmeyen OSF/1 core dosyası bölüm türü %d\n"
 
 #: pe-mips.c:658
 #, c-format
@@ -1787,62 +2034,66 @@ msgstr "%s: `ld -r' PE MIPS nesneleri ile birlikte desteklenmiyor\n"
 #: pe-mips.c:794
 #, c-format
 msgid "%s: unimplemented %s\n"
-msgstr "%s: tamamlanmamýþ %s\n"
+msgstr "%s: tamamlanmamış %s\n"
 
 #: pe-mips.c:820
 #, c-format
 msgid "%s: jump too far away\n"
-msgstr "%s: sýçrama fazla uzak\n"
+msgstr "%s: sıçrama fazla uzak\n"
 
 #: pe-mips.c:847
 #, c-format
 msgid "%s: bad pair/reflo after refhi\n"
-msgstr "%s: refhi'den sonra hatalý çift/reflo\n"
+msgstr "%s: refhi'den sonra hatalı çift/reflo\n"
 
 #. XXX code yet to be written.
 #: peicode.h:785
 #, c-format
 msgid "%s: Unhandled import type; %x"
-msgstr "%s: Desteklenmeyen ithal türü; %x"
+msgstr "%s: Desteklenmeyen ithal türü; %x"
 
 #: peicode.h:790
 #, c-format
 msgid "%s: Unrecognised import type; %x"
-msgstr "%s: Tanýnmayan ithal türü; %x"
+msgstr "%s: Tanınmayan ithal türü; %x"
 
 #: peicode.h:804
 #, c-format
 msgid "%s: Unrecognised import name type; %x"
-msgstr "%s: Tanýnmayan ithal isim türü; %x"
+msgstr "%s: Tanınmayan ithal isim türü; %x"
 
 #: peicode.h:1162
 #, c-format
 msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive"
-msgstr "%s: Ýthal Kitaplýk Biçem (ILF) arþivinde tanýnmayan makina türü (0x%x) "
+msgstr "%s: İthal Kitaplık Biçem (ILF) arşivinde tanınmayan makina türü (0x%x) "
 
 #: peicode.h:1174
 #, c-format
 msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
-msgstr "%s: Ýthal Kitaplýk Biçem (ILF) arþivinde bilinen fakat desteklenmeyen makina türü (0x%x)"
+msgstr "%s: İthal Kitaplık Biçem (ILF) arşivinde bilinen fakat desteklenmeyen makina türü (0x%x)"
 
 #: peicode.h:1191
 #, c-format
 msgid "%s: size field is zero in Import Library Format header"
-msgstr "%s: Ýthal Kitaplýk Biçem (ILF) baþlýðýnda boy alaný sýfýr"
+msgstr "%s: İthal Kitaplık Biçem (ILF) başlığında boy alanı sıfır"
 
 #: peicode.h:1219
 #, c-format
 msgid "%s: string not null terminated in ILF object file."
-msgstr "%s: ILF nesne dosyasýnda dizge boþ deðerle sonlanmamýþ."
+msgstr "%s: ILF nesne dosyasında dizge boş değerle sonlanmamış."
 
 #: ppcboot.c:416
-msgid "\nppcboot header:\n"
-msgstr "\nppcboot baþlýðý:\n"
+msgid ""
+"\n"
+"ppcboot header:\n"
+msgstr ""
+"\n"
+"ppcboot başlığı:\n"
 
 #: ppcboot.c:417
 #, c-format
 msgid "Entry offset        = 0x%.8lx (%ld)\n"
-msgstr "Girdi göreli konumu = 0x%.8lx (%ld)\n"
+msgstr "Girdi göreli konumu = 0x%.8lx (%ld)\n"
 
 #: ppcboot.c:418
 #, c-format
@@ -1852,702 +2103,807 @@ msgstr "Uzunluk             = 0x%.8lx (%ld)\n"
 #: ppcboot.c:421
 #, c-format
 msgid "Flag field          = 0x%.2x\n"
-msgstr "Bayrak alaný        = 0x%.2x\n"
+msgstr "Bayrak alanı        = 0x%.2x\n"
 
 #: ppcboot.c:427
 #, c-format
 msgid "Partition name      = \"%s\"\n"
-msgstr "Bölüm adý           = \"%s\"\n"
+msgstr "Bölüm adı           = \"%s\"\n"
 
 #: ppcboot.c:446
 #, c-format
-msgid "\nPartition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
-msgstr "\nBölüm[%d] baþlangýcý  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgid ""
+"\n"
+"Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr ""
+"\n"
+"Bölüm[%d] başlangıcı  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
 #: ppcboot.c:452
 #, c-format
 msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
-msgstr "Bölüm[%d] sonu    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr "Bölüm[%d] sonu    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
 #: ppcboot.c:458
 #, c-format
 msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
-msgstr "Bölüm[%d] sektörü = 0x%.8lx (%ld)\n"
+msgstr "Bölüm[%d] sektörü = 0x%.8lx (%ld)\n"
 
 #: ppcboot.c:459
 #, c-format
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
-msgstr "Bölüm[%d] uzunluðu = 0x%.8lx (%ld)\n"
+msgstr "Bölüm[%d] uzunluğu = 0x%.8lx (%ld)\n"
 
-#: som.c:5402
+#: som.c:5398
 msgid "som_sizeof_headers unimplemented"
-msgstr "som_sizeof_headers tamamlanmamýþ"
+msgstr "som_sizeof_headers tamamlanmamış"
 
 #: srec.c:301
 #, c-format
 msgid "%s:%d: Unexpected character `%s' in S-record file\n"
-msgstr "%s:%d: S-kayýt dosyasýnda beklenmeyen `%s' karakteri\n"
+msgstr "%s:%d: S-kayıt dosyasında beklenmeyen `%s' karakteri\n"
 
-#: syms.c:996
+#: stabs.c:319
+#, c-format
+msgid "%s(%s+0x%lx): Stabs entry has invalid string index."
+msgstr "%s(%s+0x%lx): Stabs girdisinde geçersiz dizge indeksi."
+
+#: syms.c:1044
 msgid "Unsupported .stab relocation"
-msgstr "Desteklenmeyen .stab yerdeðiþimi"
+msgstr "Desteklenmeyen .stab yerdeğişimi"
 
 #: vms-gsd.c:356
 #, c-format
 msgid "bfd_make_section (%s) failed"
-msgstr "bfd_make_section (%s) baþarýsýz"
+msgstr "bfd_make_section (%s) başarısız"
 
 #: vms-gsd.c:371
 #, c-format
 msgid "bfd_set_section_flags (%s, %x) failed"
-msgstr "bfd_set_section_flags (%s, %x) baþarýsýz"
+msgstr "bfd_set_section_flags (%s, %x) başarısız"
 
 #: vms-gsd.c:407
 #, c-format
 msgid "Size mismatch section %s=%lx, %s=%lx"
-msgstr "Boy uyumsuzluðu bölümü %s=%lx, %s=%lx"
+msgstr "Boy uyumsuzluğu bölümü %s=%lx, %s=%lx"
 
-#: vms-gsd.c:704
+#: vms-gsd.c:702
 #, c-format
 msgid "unknown gsd/egsd subtype %d"
-msgstr "bilinmeyen gsd/egsd alt türü %d"
+msgstr "bilinmeyen gsd/egsd alt türü %d"
 
 #: vms-hdr.c:406
 msgid "Object module NOT error-free !\n"
-msgstr "Nesne modülü hatasýz DEÐÝL !\n"
+msgstr "Nesne modülü hatasız DEĞİL !\n"
 
 #: vms-misc.c:543
 #, c-format
 msgid "Stack overflow (%d) in _bfd_vms_push"
-msgstr "_bfd_vms_push'da yýðýt taþmasý (%d)"
+msgstr "_bfd_vms_push'da yığıt taşması (%d)"
 
 #: vms-misc.c:561
 msgid "Stack underflow in _bfd_vms_pop"
-msgstr "_bfd_vms_pop'da yýðýt alt taþmasý"
+msgstr "_bfd_vms_pop'da yığıt alt taşması"
 
 #: vms-misc.c:919
 msgid "_bfd_vms_output_counted called with zero bytes"
-msgstr "_bfd_vms_output_counted sýfýr bayt ile çaðrýldý"
+msgstr "_bfd_vms_output_counted sıfır bayt ile çağrıldı"
 
 #: vms-misc.c:924
 msgid "_bfd_vms_output_counted called with too many bytes"
-msgstr "_bfd_vms_output_counted fazla bayt ile çaðrýldý"
+msgstr "_bfd_vms_output_counted fazla bayt ile çağrıldı"
 
 #: vms-misc.c:1055
 #, c-format
 msgid "Symbol %s replaced by %s\n"
-msgstr "%s sembolü %s ile deðiþtirildi\n"
+msgstr "%s sembolü %s ile değiştirildi\n"
 
 #: vms-misc.c:1117
 #, c-format
 msgid "failed to enter %s"
-msgstr "%s'e giriþ baþarýsýz"
+msgstr "%s'e giriş başarısız"
 
-#: vms-tir.c:78
+#: vms-tir.c:81
 msgid "No Mem !"
-msgstr "Hafýza Yok !"
+msgstr "Hafıza Yok !"
 
-#: vms-tir.c:313
-msgid "Bad section index in ETIR_S_C_STA_PQ"
-msgstr "ETIR_S_C_STA_PQ'de hatalý bölüm indeksi"
-
-#: vms-tir.c:328
+#: vms-tir.c:362
 #, c-format
-msgid "Unsupported STA cmd %d"
-msgstr "Desteklenmeyen STA komutu %d"
+msgid "bad section index in %s"
+msgstr "%s içinde hatalı bölüm indeksi"
 
-#: vms-tir.c:333 vms-tir.c:1301
+#: vms-tir.c:375
 #, c-format
-msgid "Reserved STA cmd %d"
-msgstr "Ayrýlmýþ STA komutu %d"
+msgid "unsupported STA cmd %s"
+msgstr "Desteklenmeyen STA komutu %s"
 
-#: vms-tir.c:443
+#: vms-tir.c:380 vms-tir.c:1240
 #, c-format
-msgid "ETIR_S_C_STO_GBL: no symbol \"%s\""
-msgstr "ETIR_S_C_STO_GBL: sembol yok \"%s\""
+msgid "reserved STA cmd %d"
+msgstr "Ayrılmış STA komutu %d"
 
-#: vms-tir.c:465
+#: vms-tir.c:491 vms-tir.c:514
 #, c-format
-msgid "ETIR_S_C_STO_CA: no symbol \"%s\""
-msgstr "ETIR_S_C_STO_CA: sembol yok \"%s\""
-
-#: vms-tir.c:478
-msgid "ETIR_S_C_STO_RB/AB: Not supported"
-msgstr "ETIR_S_C_STO_RB/AB: Desteklenmiyor"
+msgid "%s: no symbol \"%s\""
+msgstr "%s: \"%s\" sembolü yok"
 
-#: vms-tir.c:538
-msgid "ETIR_S_C_STO_LP_PSB: Not supported"
-msgstr "ETIR_S_C_STO_LP_PSB: Desteklenmiyor"
-
-#: vms-tir.c:544
-msgid "ETIR_S_C_STO_HINT_GBL: not implemented"
-msgstr "ETIR_S_C_STO_HINT_GBL: tamamlanmamýþ"
-
-#: vms-tir.c:550
-msgid "ETIR_S_C_STO_HINT_PS: not implemented"
-msgstr "ETIR_S_C_STO_HINT_PS: tamamlanmamýþ"
-
-#: vms-tir.c:554 vms-tir.c:1473
+#. unsigned shift
+#. rotate
+#. Redefine symbol to current location.
+#. Define a literal.
+#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829
+#: vms-tir.c:838 vms-tir.c:1563
 #, c-format
-msgid "Reserved STO cmd %d"
-msgstr "Ayrýlmýþ STO komutu %d"
-
-#: vms-tir.c:667
-msgid "ETIR_S_C_OPR_INSV: Not supported"
-msgstr "ETIR_S_C_OPR_INSV: Desteklenmiyor"
+msgid "%s: not supported"
+msgstr "%s: desteklenmiyor"
 
-#: vms-tir.c:685
-msgid "ETIR_S_C_OPR_USH: Not supported"
-msgstr "ETIR_S_C_OPR_USH: Desteklenmiyor"
-
-#: vms-tir.c:691
-msgid "ETIR_S_C_OPR_ROT: Not supported"
-msgstr "ETIR_S_C_OPR_ROT: Desteklenmiyor"
-
-#: vms-tir.c:710
-msgid "ETIR_S_C_OPR_REDEF: Not supported"
-msgstr "ETIR_S_C_OPR_REDEF: Desteklenmiyor"
-
-#: vms-tir.c:716
-msgid "ETIR_S_C_OPR_DFLIT: Not supported"
-msgstr "ETIR_S_C_OPR_DFLIT: Desteklenmiyor"
-
-#: vms-tir.c:720 vms-tir.c:1668
+#: vms-tir.c:586 vms-tir.c:1418
 #, c-format
-msgid "Reserved OPR cmd %d"
-msgstr "Ayrýlmýþ OPR komutu %d"
+msgid "%s: not implemented"
+msgstr "%s: tamamlanmamış"
 
-#: vms-tir.c:788 vms-tir.c:1737
+#: vms-tir.c:590 vms-tir.c:1422
 #, c-format
-msgid "Reserved CTL cmd %d"
-msgstr "Ayrýlmýþ CTL komutu %d"
+msgid "reserved STO cmd %d"
+msgstr "Ayrılmış STO komutu %d"
 
-#: vms-tir.c:816
-msgid "ETIR_S_C_STC_LP: not supported"
-msgstr "ETIR_S_C_STC_LP: desteklenmiyor"
+#: vms-tir.c:708 vms-tir.c:1568
+#, c-format
+msgid "reserved OPR cmd %d"
+msgstr "Ayrılmış OPR komutu %d"
 
-#: vms-tir.c:834
-msgid "ETIR_S_C_STC_GBL: not supported"
-msgstr "ETIR_S_C_STC_GBL: desteklenmiyor"
+#: vms-tir.c:776 vms-tir.c:1632
+#, c-format
+msgid "reserved CTL cmd %d"
+msgstr "Ayrılmış CTL komutu %d"
 
-#: vms-tir.c:842
-msgid "ETIR_S_C_STC_GCA: not supported"
-msgstr "ETIR_S_C_STC_GCA: desteklenmiyor"
+#. stack byte from image
+#. arg: none.
+#: vms-tir.c:1148
+msgid "stack-from-image not implemented"
+msgstr "Görüntüden-yığıt tamamlanmamış"
 
-#: vms-tir.c:851
-msgid "ETIR_S_C_STC_PS: not supported"
-msgstr "ETIR_S_C_STC_PS: desteklenmiyor"
+#: vms-tir.c:1166
+msgid "stack-entry-mask not fully implemented"
+msgstr "Yığın girdi maskı tamamlanmamış"
 
+#. compare procedure argument
+#. arg: cs     symbol name
+#. by  argument index
+#. da  argument descriptor
 #.
-#. * stack byte from image
-#. * arg: -
-#. *
-#.
-#: vms-tir.c:1199
-msgid "Stack-from-image not implemented"
-msgstr "Görüntüden-yýðýt tamamlanmamýþ"
-
-#: vms-tir.c:1219
-msgid "Stack-entry-mask not fully implemented"
-msgstr "Yýðýn girdi maský tamamlanmamýþ"
-
-#.
-#. * compare procedure argument
-#. * arg: cs   symbol name
-#. *   by      argument index
-#. *   da      argument descriptor
-#. *
-#. * compare argument descriptor with symbol argument (ARG$V_PASSMECH)
-#. * and stack TRUE (args match) or FALSE (args dont match) value
-#.
-#: vms-tir.c:1235
+#. compare argument descriptor with symbol argument (ARG$V_PASSMECH)
+#. and stack TRUE (args match) or FALSE (args dont match) value.
+#: vms-tir.c:1180
 msgid "PASSMECH not fully implemented"
-msgstr "PASSMECH tamamlanmamýþ"
+msgstr "PASSMECH tamamlanmamış"
 
-#: vms-tir.c:1256
-msgid "Stack-local-symbol not fully implemented"
-msgstr "Yerel sembol yýðýtý tamamlanmamýþ"
+#: vms-tir.c:1199
+msgid "stack-local-symbol not fully implemented"
+msgstr "Yerel sembol yığıtı tamamlanmamış"
 
-#: vms-tir.c:1271
-msgid "Stack-literal not fully implemented"
-msgstr "Yýðýt sabiti tamamlanmamýþ"
+#: vms-tir.c:1212
+msgid "stack-literal not fully implemented"
+msgstr "Yığıt sabiti tamamlanmamış"
 
-#: vms-tir.c:1294
-msgid "Stack-local-symbol-entry-point-mask not fully implemented"
-msgstr "Yýðýn yerel sembol girdi nokta maský tamamlanmamýþ"
+#: vms-tir.c:1233
+msgid "stack-local-symbol-entry-point-mask not fully implemented"
+msgstr "Yığın yerel sembol girdi noktası maskı tamamlanmamış"
 
-#: vms-tir.c:1469
+#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611
+#: vms-tir.c:1619 vms-tir.c:1627
 #, c-format
-msgid "Unimplemented STO cmd %d"
-msgstr "Tamamlanmamýþ STO komutu %d"
-
-#: vms-tir.c:1608
-msgid "TIR_S_C_OPR_ASH incomplete"
-msgstr "TIR_S_C_OPR_ASH tamamlanmamýþ"
-
-#: vms-tir.c:1622
-msgid "TIR_S_C_OPR_USH incomplete"
-msgstr "TIR_S_C_OPR_USH tamamlanmamýþ"
+msgid "%s: not fully implemented"
+msgstr "%s: tamamlanmamış"
 
-#: vms-tir.c:1636
-msgid "TIR_S_C_OPR_ROT incomplete"
-msgstr "TIR_S_C_OPR_ROT tamamlanmamýþ"
-
-#.
-#. * redefine symbol to current location
-#.
-#: vms-tir.c:1657
-msgid "TIR_S_C_OPR_REDEF not supported"
-msgstr "TIR_S_C_OPR_REDEF desteklenmiyor"
-
-#.
-#. * define a literal
-#.
-#: vms-tir.c:1664
-msgid "TIR_S_C_OPR_DFLIT not supported"
-msgstr "TIR_S_C_OPR_DFLIT desteklenmiyor"
-
-#: vms-tir.c:1718
-msgid "TIR_S_C_CTL_DFLOC not fully implemented"
-msgstr "TIR_S_C_CTL_DFLOC tamamlanmamýþ"
-
-#: vms-tir.c:1726
-msgid "TIR_S_C_CTL_STLOC not fully implemented"
-msgstr "TIR_S_C_CTL_STLOC tamamlanmamýþ"
-
-#: vms-tir.c:1734
-msgid "TIR_S_C_CTL_STKDL not fully implemented"
-msgstr "TIR_S_C_CTL_STKDL tamamlanmamýþ"
-
-#: vms-tir.c:1791
+#: vms-tir.c:1684
 #, c-format
-msgid "Obj code %d not found"
-msgstr "Nesne kodu %d bulunmadý"
+msgid "obj code %d not found"
+msgstr "Nesne kodu %d bulunmadı"
 
-#: vms-tir.c:2137
+#: vms-tir.c:2019
 #, c-format
 msgid "SEC_RELOC with no relocs in section %s"
-msgstr "%s bölümünde yerdeðiþim olmaksýzýn SEC_RELOC"
+msgstr "%s bölümünde yerdeğişim olmaksızın SEC_RELOC"
 
-#: vms-tir.c:2424
+#: vms-tir.c:2307
 #, c-format
 msgid "Unhandled relocation %s"
-msgstr "Desteklenmeyen yerdeðiþim %s"
+msgstr "Desteklenmeyen yerdeğişim %s"
 
-#: xcofflink.c:1241
+#: xcofflink.c:1243
 #, c-format
 msgid "%s: `%s' has line numbers but no enclosing section"
-msgstr "%s: `%s' satýr numaralarýna sahip fakat onu içeren bölümü yok"
+msgstr "%s: `%s' satır numaralarına sahip fakat onu içeren bölümü yok"
 
-#: xcofflink.c:1294
+#: xcofflink.c:1296
 #, c-format
 msgid "%s: class %d symbol `%s' has no aux entries"
-msgstr "%s: sýnýf %d sembol `%s'un alternatif girdileri yok"
+msgstr "%s: sınıf %d sembol `%s'un alternatif girdileri yok"
 
-#: xcofflink.c:1317
+#: xcofflink.c:1319
 #, c-format
 msgid "%s: symbol `%s' has unrecognized csect type %d"
-msgstr "%s: `%s' sembolünde bilinmeyen csect türü %d var"
+msgstr "%s: `%s' sembolünde bilinmeyen csect türü %d var"
 
-#: xcofflink.c:1329
+#: xcofflink.c:1331
 #, c-format
 msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
-msgstr "%s: hatalý XTY_ER sembolü `%s': sýnýf %d scnum %d scnlen %d"
+msgstr "%s: hatalı XTY_ER sembolü `%s': sınıf %d scnum %d scnlen %d"
 
-#: xcofflink.c:1365
+#: xcofflink.c:1367
 #, c-format
 msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d"
-msgstr "%s: XMC_TC0 sembolü `%s': sýnýf %d scnlen %d"
+msgstr "%s: XMC_TC0 sembolü `%s': sınıf %d scnlen %d"
 
-#: xcofflink.c:1517
+#: xcofflink.c:1519
 #, c-format
 msgid "%s: csect `%s' not in enclosing section"
-msgstr "%s: csect `%s' onu içeren bölümde deðil"
+msgstr "%s: csect `%s' onu içeren bölümde değil"
 
-#: xcofflink.c:1624
+#: xcofflink.c:1626
 #, c-format
 msgid "%s: misplaced XTY_LD `%s'"
-msgstr "%s: XTY_LD `%s'yanlýþ yerde"
+msgstr "%s: XTY_LD `%s'yanlış yerde"
 
-#: xcofflink.c:1948
+#: xcofflink.c:1957
 #, c-format
 msgid "%s: reloc %s:%d not in csect"
-msgstr "%s: yerdeðiþim %s:%d csect içinde deðil"
+msgstr "%s: yerdeğişim %s:%d csect içinde değil"
 
-#: xcofflink.c:2083
+#: xcofflink.c:2092
 #, c-format
 msgid "%s: XCOFF shared object when not producing XCOFF output"
-msgstr "%s: XCOFF çýktýsý oluþturulmazken XCOFF paylaþýmlý nesnesi"
+msgstr "%s: XCOFF çıktısı oluşturulmazken XCOFF paylaşımlı nesnesi"
 
-#: xcofflink.c:2104
+#: xcofflink.c:2113
 #, c-format
 msgid "%s: dynamic object with no .loader section"
-msgstr "%s: .loader bölümü olmayan dinamik nesne"
+msgstr "%s: .loader bölümü olmayan dinamik nesne"
 
-#: xcofflink.c:2749
+#: xcofflink.c:2758
 #, c-format
 msgid "%s: no such symbol"
-msgstr "%s: böyle bir sembol yok"
+msgstr "%s: böyle bir sembol yok"
 
-#: xcofflink.c:2890
+#: xcofflink.c:2891
 msgid "error: undefined symbol __rtinit"
-msgstr "hata: tanýmlanmamýþ sembol __rtinit"
+msgstr "hata: tanımlanmamış sembol __rtinit"
 
-#: xcofflink.c:3458
+#: xcofflink.c:3453
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
-msgstr "uyarý: tanýmlanmamýþ `%s' sembolünü ihraç denemesi"
+msgstr "uyarı: tanımlanmamış `%s' sembolünü ihraç denemesi"
 
-#: xcofflink.c:4452
+#: xcofflink.c:4447
 #, c-format
 msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
-msgstr "TOC taþmasý: 0x%lx > 0x10000; -mminimal-toc ile derlemeyi deneyin"
+msgstr "TOC taşması: 0x%lx > 0x10000; -mminimal-toc ile derlemeyi deneyin"
 
-#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117
+#: xcofflink.c:5287 xcofflink.c:5756 xcofflink.c:5818 xcofflink.c:6119
 #, c-format
 msgid "%s: loader reloc in unrecognized section `%s'"
-msgstr "%s: bilinmeyen `%s' bölümünde yükleyici yerdeðiþimi"
+msgstr "%s: bilinmeyen `%s' bölümünde yükleyici yerdeğişimi"
 
-#: xcofflink.c:5314 xcofflink.c:6128
+#: xcofflink.c:5309 xcofflink.c:6130
 #, c-format
 msgid "%s: `%s' in loader reloc but not loader sym"
-msgstr "%s: `%s' yükleyici yerdeðiþiminde fakat yükleyici sembolü deðil"
+msgstr "%s: `%s' yükleyici yerdeğişiminde fakat yükleyici sembolü değil"
 
-#: xcofflink.c:5329
+#: xcofflink.c:5324
 #, c-format
 msgid "%s: loader reloc in read-only section %s"
-msgstr "%s: %s salt-okunur bölümünde yükleyici yerdeðiþimi"
+msgstr "%s: %s salt-okunur bölümünde yükleyici yerdeğişimi"
 
-#: elf32-ia64.c:2190 elf64-ia64.c:2190
+#: elf32-ia64.c:2222 elf64-ia64.c:2222
 msgid "@pltoff reloc against local symbol"
 msgstr "yerel sembole @pltoff yerdegisimi"
 
-#: elf32-ia64.c:2248 elf64-ia64.c:2248
-msgid "non-zero addend in @fptr reloc"
-msgstr "@fptr yerdeðiþiminde sýfýr olmayan eklenti"
-
-#: elf32-ia64.c:3414 elf64-ia64.c:3414
+#: elf32-ia64.c:3562 elf64-ia64.c:3562
 #, c-format
 msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
-msgstr "%s: kýsa veri bölümünde taþma (0x%lx >= 0x400000)"
+msgstr "%s: kısa veri bölümünde taşma (0x%lx >= 0x400000)"
 
-#: elf32-ia64.c:3425 elf64-ia64.c:3425
+#: elf32-ia64.c:3573 elf64-ia64.c:3573
 #, c-format
 msgid "%s: __gp does not cover short data segment"
-msgstr "%s: __gp kýsa veri bölümünü kapsamýyor"
+msgstr "%s: __gp kısa veri bölümünü kapsamıyor"
 
-#: elf32-ia64.c:3729 elf64-ia64.c:3729
+#: elf32-ia64.c:3858 elf64-ia64.c:3858
 #, c-format
 msgid "%s: linking non-pic code in a shared library"
-msgstr "%s: pic olmayan kod paylaþmalý kitaplýkta baðlanýyor"
+msgstr "%s: pic olmayan kod paylaşmalı kitaplıkta bağlanıyor"
 
-#: elf32-ia64.c:3762 elf64-ia64.c:3762
+#: elf32-ia64.c:3891 elf64-ia64.c:3891
 #, c-format
 msgid "%s: @gprel relocation against dynamic symbol %s"
-msgstr "%s: %s dinamik sembolüne @gprel yerdeðiþimi"
+msgstr "%s: %s dinamik sembolüne @gprel yerdeğişimi"
 
-#: elf32-ia64.c:3901 elf64-ia64.c:3901
+#: elf32-ia64.c:4030 elf64-ia64.c:4030
 #, c-format
 msgid "%s: dynamic relocation against speculation fixup"
-msgstr "%s: kuþkulu düzeltmeye dinamik yerdeðiþim"
+msgstr "%s: kuşkulu düzeltmeye dinamik yerdeğişim"
 
-#: elf32-ia64.c:3909 elf64-ia64.c:3909
+#: elf32-ia64.c:4038 elf64-ia64.c:4038
 #, c-format
 msgid "%s: speculation fixup against undefined weak symbol"
-msgstr "%s: tanýmlanmamýþ gevþek sembole tartýþmalý düzeltme"
+msgstr "%s: tanımlanmamış gevşek sembole tartışmalı düzeltme"
 
-#: elf32-ia64.c:4093 elf64-ia64.c:4093
+#: elf32-ia64.c:4271 elf64-ia64.c:4271
 msgid "unsupported reloc"
-msgstr "desteklenmeyen yerdeðiþim"
+msgstr "desteklenmeyen yerdeğişim"
 
-#: elf32-ia64.c:4373 elf64-ia64.c:4373
+#: elf32-ia64.c:4551 elf64-ia64.c:4551
 #, c-format
 msgid "%s: linking trap-on-NULL-dereference with non-trapping files"
-msgstr "%s: NULL-halinde-tuzakla karþý-baþvurusu tuzaklamayan dosyalarla baðlandý"
+msgstr "%s: NULL-halinde-tuzakla karşı-başvurusu tuzaklamayan dosyalarla bağlandı"
 
-#: elf32-ia64.c:4382 elf64-ia64.c:4382
+#: elf32-ia64.c:4560 elf64-ia64.c:4560
 #, c-format
 msgid "%s: linking big-endian files with little-endian files"
-msgstr "%s: büyük sonlu dosyalar küçük sonlu dosyalarla baðlanýyor"
+msgstr "%s: büyük sonlu dosyalar küçük sonlu dosyalarla bağlanıyor"
 
-#: elf32-ia64.c:4391 elf64-ia64.c:4391
+#: elf32-ia64.c:4569 elf64-ia64.c:4569
 #, c-format
 msgid "%s: linking 64-bit files with 32-bit files"
-msgstr "%s: 64 bitlik dosyalar 32 bitlik dosyalarla baðlanýyor"
+msgstr "%s: 64 bitlik dosyalar 32 bitlik dosyalarla bağlanıyor"
 
-#: elf32-ia64.c:4400 elf64-ia64.c:4400
+#: elf32-ia64.c:4578 elf64-ia64.c:4578
 #, c-format
 msgid "%s: linking constant-gp files with non-constant-gp files"
-msgstr "%s: constant-gp dosyalarý constant-gp olmayan dosyalarla baðlanýyor"
+msgstr "%s: constant-gp dosyaları constant-gp olmayan dosyalarla bağlanıyor"
 
-#: elf32-ia64.c:4410 elf64-ia64.c:4410
+#: elf32-ia64.c:4588 elf64-ia64.c:4588
 #, c-format
 msgid "%s: linking auto-pic files with non-auto-pic files"
-msgstr "%s: auto-pic dosyalarý auto-pic olmayan dosyalarla baðlanýyor"
+msgstr "%s: auto-pic dosyaları auto-pic olmayan dosyalarla bağlanıyor"
 
-#: peigen.c:964 pepigen.c:964
+#: peigen.c:962 pepigen.c:962
 #, c-format
 msgid "%s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: satýr numarasý taþmasý: 0x%lx > 0xffff"
+msgstr "%s: satır numarası taşması: 0x%lx > 0xffff"
 
-#: peigen.c:981 pepigen.c:981
+#: peigen.c:979 pepigen.c:979
 #, c-format
 msgid "%s: reloc overflow 1: 0x%lx > 0xffff"
-msgstr "%s: yerdeðiþim taþmasý 1: 0x%lx > 0xffff"
+msgstr "%s: yerdeğişim taşması 1: 0x%lx > 0xffff"
 
-#: peigen.c:995 pepigen.c:995
+#: peigen.c:993 pepigen.c:993
 msgid "Export Directory [.edata (or where ever we found it)]"
-msgstr "Ýhraç Dizini [.edata (veya nerede bulundu ise)]"
+msgstr "İhraç Dizini [.edata (veya nerede bulundu ise)]"
 
-#: peigen.c:996 pepigen.c:996
+#: peigen.c:994 pepigen.c:994
 msgid "Import Directory [parts of .idata]"
-msgstr "Ýthal Dizini [.idata'nýn parçalarý]"
+msgstr "İthal Dizini [.idata'nın parçaları]"
 
-#: peigen.c:997 pepigen.c:997
+#: peigen.c:995 pepigen.c:995
 msgid "Resource Directory [.rsrc]"
 msgstr "Kaynak Dizini [.rsrc]"
 
-#: peigen.c:998 pepigen.c:998
+#: peigen.c:996 pepigen.c:996
 msgid "Exception Directory [.pdata]"
-msgstr "Ýstisna Dizini [.pdata]"
+msgstr "İstisna Dizini [.pdata]"
 
-#: peigen.c:999 pepigen.c:999
+#: peigen.c:997 pepigen.c:997
 msgid "Security Directory"
-msgstr "Güvenlik Dizini"
+msgstr "Güvenlik Dizini"
 
-#: peigen.c:1000 pepigen.c:1000
+#: peigen.c:998 pepigen.c:998
 msgid "Base Relocation Directory [.reloc]"
-msgstr "Temel Yerdeðiþim Dizini [.reloc]"
+msgstr "Temel Yerdeğişim Dizini [.reloc]"
 
-#: peigen.c:1001 pepigen.c:1001
+#: peigen.c:999 pepigen.c:999
 msgid "Debug Directory"
-msgstr "Hata Ayýklama Dizini"
+msgstr "Hata Ayıklama Dizini"
 
-#: peigen.c:1002 pepigen.c:1002
+#: peigen.c:1000 pepigen.c:1000
 msgid "Description Directory"
-msgstr "Açýklama Dizini"
+msgstr "Açıklama Dizini"
 
-#: peigen.c:1003 pepigen.c:1003
+#: peigen.c:1001 pepigen.c:1001
 msgid "Special Directory"
-msgstr "Özel Dizin"
+msgstr "Özel Dizin"
 
-#: peigen.c:1004 pepigen.c:1004
+#: peigen.c:1002 pepigen.c:1002
 msgid "Thread Storage Directory [.tls]"
 msgstr "Dal Saklama Dizini [.tls]"
 
-#: peigen.c:1005 pepigen.c:1005
+#: peigen.c:1003 pepigen.c:1003
 msgid "Load Configuration Directory"
-msgstr "Ayar Yükleme Dizini"
+msgstr "Ayar Yükleme Dizini"
 
-#: peigen.c:1006 pepigen.c:1006
+#: peigen.c:1004 pepigen.c:1004
 msgid "Bound Import Directory"
-msgstr "Sýnýr Ýthal Dizini"
+msgstr "Sınır İthal Dizini"
 
-#: peigen.c:1007 pepigen.c:1007
+#: peigen.c:1005 pepigen.c:1005
 msgid "Import Address Table Directory"
-msgstr "Adres Tablosu Ýthal Dizini"
+msgstr "Adres Tablosu İthal Dizini"
 
-#: peigen.c:1008 pepigen.c:1008
+#: peigen.c:1006 pepigen.c:1006
 msgid "Delay Import Directory"
-msgstr "Gecikmeli Ýthal Dizini"
+msgstr "Gecikmeli İthal Dizini"
 
-#: peigen.c:1009 peigen.c:1010 pepigen.c:1009 pepigen.c:1010
+#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008
 msgid "Reserved"
-msgstr "Ayrýlmýþ"
+msgstr "Ayrılmış"
 
-#: peigen.c:1073 pepigen.c:1073
-msgid "\nThere is an import table, but the section containing it could not be found\n"
-msgstr "\nBir ithal tablosu var, fakat onu içeren bölüm bulunamadý\n"
+#: peigen.c:1071 pepigen.c:1071
+msgid ""
+"\n"
+"There is an import table, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Bir ithal tablosu var, fakat onu içeren bölüm bulunamadı\n"
 
-#: peigen.c:1078 pepigen.c:1078
+#: peigen.c:1076 pepigen.c:1076
 #, c-format
-msgid "\nThere is an import table in %s at 0x%lx\n"
-msgstr "\n%s içerisinde 0x%lx'de bir ithal tablosu var\n"
+msgid ""
+"\n"
+"There is an import table in %s at 0x%lx\n"
+msgstr ""
+"\n"
+"%s içerisinde 0x%lx'de bir ithal tablosu var\n"
 
-#: peigen.c:1115 pepigen.c:1115
+#: peigen.c:1113 pepigen.c:1113
 #, c-format
-msgid "\nFunction descriptor located at the start address: %04lx\n"
-msgstr "\nBaþlangýç adresinde iþlev betimleyicisi bulundu: %04lx\n"
+msgid ""
+"\n"
+"Function descriptor located at the start address: %04lx\n"
+msgstr ""
+"\n"
+"Başlangıç adresinde işlev betimleyicisi bulundu: %04lx\n"
 
-#: peigen.c:1118 pepigen.c:1118
+#: peigen.c:1116 pepigen.c:1116
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
-msgstr "\tkod temeli %08lx toc (yüklenebilir/gerçek) %08lx/%08lx\n"
+msgstr "\tkod temeli %08lx toc (yüklenebilir/gerçek) %08lx/%08lx\n"
 
-#: peigen.c:1124 pepigen.c:1124
-msgid "\nNo reldata section! Function descriptor not decoded.\n"
-msgstr "\nReldata bölümü yok! Ýþlev betimleyicisi çözümlenemedi.\n"
+#: peigen.c:1122 pepigen.c:1122
+msgid ""
+"\n"
+"No reldata section! Function descriptor not decoded.\n"
+msgstr ""
+"\n"
+"Reldata bölümü yok! İşlev betimleyicisi çözümlenemedi.\n"
 
-#: peigen.c:1129 pepigen.c:1129
+#: peigen.c:1127 pepigen.c:1127
 #, c-format
-msgid "\nThe Import Tables (interpreted %s section contents)\n"
-msgstr "\nÝthal Tablolarý (%s bölüm içeriði çözümlendi)\n"
-
-#: peigen.c:1132 pepigen.c:1132
-msgid " vma:            Hint    Time      Forward  DLL       First\n"
-msgstr " vma:            Ýpucu   Zaman     Ýleri    DLL       Ýlk\n"
+msgid ""
+"\n"
+"The Import Tables (interpreted %s section contents)\n"
+msgstr ""
+"\n"
+"İthal Tabloları (%s bölüm içeriği çözümlendi)\n"
 
-#: peigen.c:1134 pepigen.c:1134
-msgid "                 Table   Stamp     Chain    Name      Thunk\n"
-msgstr "                 Tablo   Damga     Zincir   Ýsim      Parça\n"
+#: peigen.c:1130 pepigen.c:1130
+msgid ""
+" vma:            Hint    Time      Forward  DLL       First\n"
+"                 Table   Stamp     Chain    Name      Thunk\n"
+msgstr ""
+" vma:            İpucu   Zaman     İleri    DLL       İlk\n"
+"                 Tablo   Damga     Zincir   İsim      Parça\n"
 
-#: peigen.c:1182 pepigen.c:1182
+#: peigen.c:1181 pepigen.c:1181
 #, c-format
-msgid "\n\tDLL Name: %s\n"
-msgstr "\n\tDLL Adý: %s\n"
-
-#: peigen.c:1186 peigen.c:1249 pepigen.c:1186 pepigen.c:1249
-msgid "\tvma:  Hint/Ord Member-Name\n"
-msgstr "\tvma:  Ýpucu/Sýra Üye-Adý\n"
-
-#: peigen.c:1248 pepigen.c:1248
-msgid "\tThe Import Address Table (difference found)\n"
-msgstr "\tÝthal Adres Tablosu (fark bulundu)\n"
+msgid ""
+"\n"
+"\tDLL Name: %s\n"
+msgstr ""
+"\n"
+"\tDLL Adı: %s\n"
 
-#: peigen.c:1255 pepigen.c:1255
-msgid "\t>>> Ran out of IAT members!\n"
-msgstr "\t>>> IAT üyeleri bitti!\n"
+#: peigen.c:1192 pepigen.c:1192
+msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
+msgstr "\tvma:  İpucu/Sıra Üye-Adı Sınır\n"
 
-#: peigen.c:1273 pepigen.c:1273
-msgid "\tThe Import Address Table is identical\n"
-msgstr "\tÝthal Adres Tablosu ayný\n"
+#: peigen.c:1217 pepigen.c:1217
+msgid ""
+"\n"
+"There is a first thunk, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Bir ilk parça var, fakat onu içeren bölüm bulunamadı\n"
 
-#: peigen.c:1345 pepigen.c:1345
-msgid "\nThere is an export table, but the section containing it could not be found\n"
-msgstr "\nBir ihraç tablosu var, fakat onu içeren bölüm bulunamadý\n"
+#: peigen.c:1357 pepigen.c:1357
+msgid ""
+"\n"
+"There is an export table, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Bir ihraç tablosu var, fakat onu içeren bölüm bulunamadı\n"
 
-#: peigen.c:1350 pepigen.c:1350
+#: peigen.c:1362 pepigen.c:1362
 #, c-format
-msgid "\nThere is an export table in %s at 0x%lx\n"
-msgstr "\n%s içinde 0x%lx'de bir ihraç tablosu var\n"
+msgid ""
+"\n"
+"There is an export table in %s at 0x%lx\n"
+msgstr ""
+"\n"
+"%s içinde 0x%lx'de bir ihraç tablosu var\n"
 
-#: peigen.c:1381 pepigen.c:1381
+#: peigen.c:1393 pepigen.c:1393
 #, c-format
-msgid "\nThe Export Tables (interpreted %s section contents)\n\n"
-msgstr "\nÝhraç Tablolarý (%s bölüm içeriði çözümlendi)\n\n"
+msgid ""
+"\n"
+"The Export Tables (interpreted %s section contents)\n"
+"\n"
+msgstr ""
+"\n"
+"İhraç Tabloları (%s bölüm içeriği çözümlendi)\n"
+"\n"
 
-#: peigen.c:1385 pepigen.c:1385
+#: peigen.c:1397 pepigen.c:1397
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
-msgstr "Ýhraç Bayraklarý \t\t\t%lx\n"
+msgstr "İhraç Bayrakları \t\t\t%lx\n"
 
-#: peigen.c:1388 pepigen.c:1388
+#: peigen.c:1400 pepigen.c:1400
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
-msgstr "Saat/Tarih damgasý \t\t%lx\n"
+msgstr "Saat/Tarih damgası \t\t%lx\n"
 
-#: peigen.c:1391 pepigen.c:1391
+#: peigen.c:1403 pepigen.c:1403
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
-msgstr "Majör/Minör \t\t\t%d/%d\n"
+msgstr "Majör/Minör \t\t\t%d/%d\n"
 
-#: peigen.c:1394 pepigen.c:1394
+#: peigen.c:1406 pepigen.c:1406
 msgid "Name \t\t\t\t"
-msgstr "Ýsim \t\t\t\t"
+msgstr "İsim \t\t\t\t"
 
-#: peigen.c:1400 pepigen.c:1400
+#: peigen.c:1412 pepigen.c:1412
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Onluk Sistem \t\t\t%ld\n"
 
-#: peigen.c:1403 pepigen.c:1403
+#: peigen.c:1415 pepigen.c:1415
 msgid "Number in:\n"
-msgstr "Sayý içinde:\n"
+msgstr "Sayı içinde:\n"
 
-#: peigen.c:1406 pepigen.c:1406
+#: peigen.c:1418 pepigen.c:1418
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
-msgstr "\tÝhraç Adres Tablosu \t\t%08lx\n"
+msgstr "\tİhraç Adres Tablosu \t\t%08lx\n"
 
-#: peigen.c:1410 pepigen.c:1410
+#: peigen.c:1422 pepigen.c:1422
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
-msgstr "\t[Ýsim Gösterge/Onluk] Tablo\t%08lx\n"
+msgstr "\t[İsim Gösterge/Onluk] Tablo\t%08lx\n"
 
-#: peigen.c:1413 pepigen.c:1413
+#: peigen.c:1425 pepigen.c:1425
 msgid "Table Addresses\n"
 msgstr "Tablo Adresleri\n"
 
-#: peigen.c:1416 pepigen.c:1416
+#: peigen.c:1428 pepigen.c:1428
 msgid "\tExport Address Table \t\t"
-msgstr "\tÝhraç Adres Tablosu \t\t"
+msgstr "\tİhraç Adres Tablosu \t\t"
 
-#: peigen.c:1421 pepigen.c:1421
+#: peigen.c:1433 pepigen.c:1433
 msgid "\tName Pointer Table \t\t"
-msgstr "\tÝsim Gösterge Tablosu \t\t"
+msgstr "\tİsim Gösterge Tablosu \t\t"
 
-#: peigen.c:1426 pepigen.c:1426
+#: peigen.c:1438 pepigen.c:1438
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tOnluk Tablo \t\t\t"
 
-#: peigen.c:1441 pepigen.c:1441
+#: peigen.c:1453 pepigen.c:1453
 #, c-format
-msgid "\nExport Address Table -- Ordinal Base %ld\n"
-msgstr "\nÝhraç Adres Tablosu -- Onluk Sistem %ld\n"
+msgid ""
+"\n"
+"Export Address Table -- Ordinal Base %ld\n"
+msgstr ""
+"\n"
+"İhraç Adres Tablosu -- Onluk Sistem %ld\n"
 
-#: peigen.c:1460 pepigen.c:1460
+#: peigen.c:1472 pepigen.c:1472
 msgid "Forwarder RVA"
-msgstr "RVA Yönlendiricisi"
+msgstr "RVA Yönlendiricisi"
 
-#: peigen.c:1471 pepigen.c:1471
+#: peigen.c:1483 pepigen.c:1483
 msgid "Export RVA"
-msgstr "RVA Ýhracý"
+msgstr "RVA İhracı"
 
-#: peigen.c:1478 pepigen.c:1478
-msgid "\n[Ordinal/Name Pointer] Table\n"
-msgstr "\n[Onluk/Ýsim Gösterge] Tablosu\n"
+#: peigen.c:1490 pepigen.c:1490
+msgid ""
+"\n"
+"[Ordinal/Name Pointer] Table\n"
+msgstr ""
+"\n"
+"[Onluk/İsim Gösterge] Tablosu\n"
 
-#: peigen.c:1533 pepigen.c:1533
+#: peigen.c:1545 pepigen.c:1545
 #, c-format
 msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
-msgstr "Uyarý, .pdata bölüm boyu (%ld) %d'nin katý deðil\n"
+msgstr "Uyarı, .pdata bölüm boyu (%ld) %d'nin katı değil\n"
 
-#: peigen.c:1537 pepigen.c:1537
-msgid "\nThe Function Table (interpreted .pdata section contents)\n"
-msgstr "\nÝþlev Tablosu (.pdata bölüm içeriði çözümlendi)\n"
+#: peigen.c:1549 pepigen.c:1549
+msgid ""
+"\n"
+"The Function Table (interpreted .pdata section contents)\n"
+msgstr ""
+"\n"
+"İşlev Tablosu (.pdata bölüm içeriği çözümlendi)\n"
 
-#: peigen.c:1540 pepigen.c:1540
+#: peigen.c:1552 pepigen.c:1552
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
-msgstr " vma:\t\t\tBaþlangýç Adresi Sonlanma Adresi  Geri Al Bilgisi\n"
-
-#: peigen.c:1543 pepigen.c:1543
-msgid " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
-msgstr " vma:\t\tBaþl.    Son      EH       EH       PrologSon  Ýstisna\n"
+msgstr " vma:\t\t\tBaşlangıç Adresi Sonlanma Adresi  Geri Al Bilgisi\n"
 
-#: peigen.c:1545 pepigen.c:1545
-msgid "     \t\tAddress  Address  Handler  Data     Address    Mask\n"
-msgstr "     \t\tAdres    Adres    Yön.     Veri     Adres      Mask\n"
+#: peigen.c:1554 pepigen.c:1554
+msgid ""
+" vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
+"     \t\tAddress  Address  Handler  Data     Address    Mask\n"
+msgstr ""
+" vma:\t\tBaşl.    Son      EH       EH       PrologSon  İstisna\n"
+"     \t\tAdres    Adres    Yakalay  Veri     Adres      Maske\n"
 
-#: peigen.c:1613 pepigen.c:1613
+#: peigen.c:1624 pepigen.c:1624
 msgid " Register save millicode"
 msgstr " Yazma milikodunu kaydet"
 
-#: peigen.c:1616 pepigen.c:1616
+#: peigen.c:1627 pepigen.c:1627
 msgid " Register restore millicode"
 msgstr " Geri alma milikodunu kaydet"
 
-#: peigen.c:1619 pepigen.c:1619
+#: peigen.c:1630 pepigen.c:1630
 msgid " Glue code sequence"
-msgstr " Birleþtirici kod dizisi"
+msgstr " Birleştirici kod dizisi"
 
-#: peigen.c:1671 pepigen.c:1671
-msgid "\n\nPE File Base Relocations (interpreted .reloc section contents)\n"
-msgstr "\n\nPE Dosya Temel Yerdeðiþimi (.reloc bölüm içeriði çözümlendi)\n"
+#: peigen.c:1682 pepigen.c:1682
+msgid ""
+"\n"
+"\n"
+"PE File Base Relocations (interpreted .reloc section contents)\n"
+msgstr ""
+"\n"
+"\n"
+"PE Dosya Temel Yerdeğişimi (.reloc bölüm içeriği çözümlendi)\n"
 
-#: peigen.c:1701 pepigen.c:1701
+#: peigen.c:1712 pepigen.c:1712
 #, c-format
-msgid "\nVirtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
-msgstr "\nSanal Adres: %08lx Parça boyu %ld (0x%lx) Düzeltme Sayýsý %ld\n"
+msgid ""
+"\n"
+"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
+msgstr ""
+"\n"
+"Sanal Adres: %08lx Parça boyu %ld (0x%lx) Düzeltme Sayısı %ld\n"
 
-#: peigen.c:1714 pepigen.c:1714
+#: peigen.c:1725 pepigen.c:1725
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
-msgstr "\tyer deðiþim %4d göreli konum %4x [%4lx] %s"
+msgstr "\tyer değişim %4d göreli konum %4x [%4lx] %s"
 
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:1754 pepigen.c:1754
+#: peigen.c:1765 pepigen.c:1765
 #, c-format
-msgid "\nCharacteristics 0x%x\n"
-msgstr "\nÖzellikler 0x%x\n"
+msgid ""
+"\n"
+"Characteristics 0x%x\n"
+msgstr ""
+"\n"
+"Özellikler 0x%x\n"
+
+#~ msgid "GP relative relocation when GP not defined"
+#~ msgstr "GP tanımlanmamışken GP göreli yer değiştirmesi"
+
+#~ msgid "%s: ERROR: passes floats in float registers whereas target %s uses integer registers"
+#~ msgstr "%s: HATA: kayan sayıları kayan yazmaçlarda geçiriyor fakat hedef %s tamsayı yazmaç kullanıyor"
+
+#~ msgid "%s: ERROR: passes floats in integer registers whereas target %s uses float registers"
+#~ msgstr "%s: HATA: kayan sayıları tamsayı yazmaçlarda geçiriyor fakat hedef %s kayan yazmaç kullanıyor"
+
+#~ msgid "Warning: input file %s supports interworking, whereas %s does not."
+#~ msgstr "Uyarı: %s girdi dosyası beraber çalışmayı destekliyor, fakat %s desteklemiyor."
+
+#~ msgid "Warning: input file %s does not support interworking, whereas %s does."
+#~ msgstr "Uyarı: %s girdi dosyası beraber çalışmayı desteklemiyor, fakat %s destekliyor."
+
+#~ msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld"
+#~ msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld sonraki %ld"
+
+#~ msgid "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx%s\n"
+#~ msgstr "bfd sembolünden elf sembolü:0x%.8lx, isim= %s, sem num = %d, bayrak = 0x%.8lx%s\n"
+
+#~ msgid "Warning: Not setting interwork flag of %s since it has already been specified as non-interworking"
+#~ msgstr "Uyarı: beraber çalışmaz diye önceden belirtilmiş olduğundan %s'nin beraber çalışma bayrağı atanmadı"
+
+#~ msgid "Warning: Clearing the interwork flag of %s due to outside request"
+#~ msgstr "Uyarı: Dış isteğe uyularak %s'nin beraber çalışma bayrağı temizlendi"
+
+#~ msgid " [APCS-26]"
+#~ msgstr " [APCS-26]"
+
+#~ msgid " [APCS-32]"
+#~ msgstr " [APCS-32]"
+
+#~ msgid "(unknown)"
+#~ msgstr "(bilinmeyen)"
+
+#~ msgid "  previously %s in %s"
+#~ msgstr "  daha önce %2$s içinde %1$s"
+
+#~ msgid "ETIR_S_C_STO_GBL: no symbol \"%s\""
+#~ msgstr "ETIR_S_C_STO_GBL: sembol yok \"%s\""
+
+#~ msgid "ETIR_S_C_STO_CA: no symbol \"%s\""
+#~ msgstr "ETIR_S_C_STO_CA: sembol yok \"%s\""
+
+#~ msgid "ETIR_S_C_STO_RB/AB: Not supported"
+#~ msgstr "ETIR_S_C_STO_RB/AB: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_STO_LP_PSB: Not supported"
+#~ msgstr "ETIR_S_C_STO_LP_PSB: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_STO_HINT_GBL: not implemented"
+#~ msgstr "ETIR_S_C_STO_HINT_GBL: tamamlanmamış"
+
+#~ msgid "ETIR_S_C_STO_HINT_PS: not implemented"
+#~ msgstr "ETIR_S_C_STO_HINT_PS: tamamlanmamış"
+
+#~ msgid "ETIR_S_C_OPR_INSV: Not supported"
+#~ msgstr "ETIR_S_C_OPR_INSV: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_OPR_USH: Not supported"
+#~ msgstr "ETIR_S_C_OPR_USH: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_OPR_ROT: Not supported"
+#~ msgstr "ETIR_S_C_OPR_ROT: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_OPR_REDEF: Not supported"
+#~ msgstr "ETIR_S_C_OPR_REDEF: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_OPR_DFLIT: Not supported"
+#~ msgstr "ETIR_S_C_OPR_DFLIT: Desteklenmiyor"
+
+#~ msgid "ETIR_S_C_STC_GBL: not supported"
+#~ msgstr "ETIR_S_C_STC_GBL: desteklenmiyor"
+
+#~ msgid "ETIR_S_C_STC_GCA: not supported"
+#~ msgstr "ETIR_S_C_STC_GCA: desteklenmiyor"
+
+#~ msgid "ETIR_S_C_STC_PS: not supported"
+#~ msgstr "ETIR_S_C_STC_PS: desteklenmiyor"
+
+#~ msgid "Unimplemented STO cmd %d"
+#~ msgstr "Tamamlanmamış STO komutu %d"
+
+#~ msgid "TIR_S_C_OPR_ASH incomplete"
+#~ msgstr "TIR_S_C_OPR_ASH tamamlanmamış"
+
+#~ msgid "TIR_S_C_OPR_USH incomplete"
+#~ msgstr "TIR_S_C_OPR_USH tamamlanmamış"
+
+#~ msgid "TIR_S_C_OPR_ROT incomplete"
+#~ msgstr "TIR_S_C_OPR_ROT tamamlanmamış"
+
+#~ msgid "TIR_S_C_OPR_REDEF not supported"
+#~ msgstr "TIR_S_C_OPR_REDEF desteklenmiyor"
+
+#~ msgid "TIR_S_C_OPR_DFLIT not supported"
+#~ msgstr "TIR_S_C_OPR_DFLIT desteklenmiyor"
+
+#~ msgid "TIR_S_C_CTL_DFLOC not fully implemented"
+#~ msgstr "TIR_S_C_CTL_DFLOC tamamlanmamış"
+
+#~ msgid "TIR_S_C_CTL_STLOC not fully implemented"
+#~ msgstr "TIR_S_C_CTL_STLOC tamamlanmamış"
+
+#~ msgid "TIR_S_C_CTL_STKDL not fully implemented"
+#~ msgstr "TIR_S_C_CTL_STKDL tamamlanmamış"
+
+#~ msgid " vma:            Hint    Time      Forward  DLL       First\n"
+#~ msgstr " vma:            İpucu   Zaman     İleri    DLL       İlk\n"
+
+#~ msgid "\tThe Import Address Table (difference found)\n"
+#~ msgstr "\tİthal Adres Tablosu (fark bulundu)\n"
+
+#~ msgid "\t>>> Ran out of IAT members!\n"
+#~ msgstr "\t>>> IAT üyeleri bitti!\n"
+
+#~ msgid "\tThe Import Address Table is identical\n"
+#~ msgstr "\tİthal Adres Tablosu aynı\n"
+
+#~ msgid "     \t\tAddress  Address  Handler  Data     Address    Mask\n"
+#~ msgstr "     \t\tAdres    Adres    Yön.     Veri     Adres      Mask\n"
index 2e10dce34d697a833384ebdebe0acb1dbe8f7230..59f7819d635cf9bcf812d610eafdb551b612158a 100644 (file)
@@ -2122,6 +2122,12 @@ ENUMX
   BFD_RELOC_386_GOTOFF
 ENUMX
   BFD_RELOC_386_GOTPC
+ENUMX
+  BFD_RELOC_386_TLS_TPOFF
+ENUMX
+  BFD_RELOC_386_TLS_IE
+ENUMX
+  BFD_RELOC_386_TLS_GOTIE
 ENUMX
   BFD_RELOC_386_TLS_LE
 ENUMX
index 4034e353865c48e51ca61ea1caf764e6d6d35347..129b2ba4bb53cbbcf987e81a4943414f1143c485 100644 (file)
@@ -230,22 +230,23 @@ static boolean
 srec_mkobject (abfd)
      bfd *abfd;
 {
+  bfd_size_type amt;
+  tdata_type *tdata;
+
   srec_init ();
 
-  if (abfd->tdata.srec_data == NULL)
-    {
-      bfd_size_type amt = sizeof (tdata_type);
-      tdata_type *tdata = (tdata_type *) bfd_alloc (abfd, amt);
-      if (tdata == NULL)
-       return false;
-      abfd->tdata.srec_data = tdata;
-      tdata->type = 1;
-      tdata->head = NULL;
-      tdata->tail = NULL;
-      tdata->symbols = NULL;
-      tdata->symtail = NULL;
-      tdata->csymbols = NULL;
-    }
+  amt = sizeof (tdata_type);
+  tdata = (tdata_type *) bfd_alloc (abfd, amt);
+  if (tdata == NULL)
+    return false;
+    
+  abfd->tdata.srec_data = tdata;
+  tdata->type = 1;
+  tdata->head = NULL;
+  tdata->tail = NULL;
+  tdata->symbols = NULL;
+  tdata->symtail = NULL;
+  tdata->csymbols = NULL;
 
   return true;
 }
@@ -640,6 +641,7 @@ static const bfd_target *
 srec_object_p (abfd)
      bfd *abfd;
 {
+  PTR tdata_save;
   bfd_byte b[4];
 
   srec_init ();
@@ -654,9 +656,14 @@ srec_object_p (abfd)
       return NULL;
     }
 
-  if (! srec_mkobject (abfd)
-      || ! srec_scan (abfd))
-    return NULL;
+  tdata_save = abfd->tdata.any;
+  if (! srec_mkobject (abfd) || ! srec_scan (abfd))
+    {
+      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
+       bfd_release (abfd, abfd->tdata.any);
+      abfd->tdata.any = tdata_save;
+      return NULL;
+    }
 
   if (abfd->symcount > 0)
     abfd->flags |= HAS_SYMS;
@@ -670,6 +677,7 @@ static const bfd_target *
 symbolsrec_object_p (abfd)
      bfd *abfd;
 {
+  PTR tdata_save;
   char b[2];
 
   srec_init ();
@@ -684,9 +692,14 @@ symbolsrec_object_p (abfd)
       return NULL;
     }
 
-  if (! srec_mkobject (abfd)
-      || ! srec_scan (abfd))
-    return NULL;
+  tdata_save = abfd->tdata.any;
+  if (! srec_mkobject (abfd) || ! srec_scan (abfd))
+    {
+      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
+       bfd_release (abfd, abfd->tdata.any);
+      abfd->tdata.any = tdata_save;
+      return NULL;
+    }
 
   if (abfd->symcount > 0)
     abfd->flags |= HAS_SYMS;
index d03eb02e2182f86aff38e589d9c1775ce9c0c873..d41edf64668d16efb873f29d95eb4a9a4c58dd3c 100644 (file)
@@ -519,6 +519,7 @@ extern const bfd_target bfd_elf32_h8300_vec;
 extern const bfd_target bfd_elf32_hppa_linux_vec;
 extern const bfd_target bfd_elf32_hppa_vec;
 extern const bfd_target bfd_elf32_i370_vec;
+extern const bfd_target bfd_elf32_i386_freebsd_vec;
 extern const bfd_target bfd_elf32_i386_vec;
 extern const bfd_target bfd_elf32_i386qnx_vec;
 extern const bfd_target bfd_elf32_i860_little_vec;
@@ -564,6 +565,7 @@ extern const bfd_target bfd_elf32_us_cris_vec;
 extern const bfd_target bfd_elf32_v850_vec;
 extern const bfd_target bfd_elf32_vax_vec;
 extern const bfd_target bfd_elf32_xstormy16_vec;
+extern const bfd_target bfd_elf64_alpha_freebsd_vec;
 extern const bfd_target bfd_elf64_alpha_vec;
 extern const bfd_target bfd_elf64_big_generic_vec;
 extern const bfd_target bfd_elf64_bigmips_vec;
@@ -781,6 +783,7 @@ static const bfd_target * const _bfd_target_vector[] = {
        &bfd_elf32_hppa_linux_vec,
        &bfd_elf32_hppa_vec,
        &bfd_elf32_i370_vec,
+       &bfd_elf32_i386_freebsd_vec,
        &bfd_elf32_i386_vec,
        &bfd_elf32_i386qnx_vec,
        &bfd_elf32_i860_little_vec,
@@ -831,6 +834,7 @@ static const bfd_target * const _bfd_target_vector[] = {
        &bfd_elf32_vax_vec,
        &bfd_elf32_xstormy16_vec,
 #ifdef BFD64
+       &bfd_elf64_alpha_freebsd_vec,
        &bfd_elf64_alpha_vec,
        &bfd_elf64_big_generic_vec,
        &bfd_elf64_bigmips_vec,
index 297bbe60a4a415f0d0e6846df9c61188de2f883a..684c3dbd2e48aad0aa86c5311e5390d28fcfcf2c 100644 (file)
@@ -612,6 +612,7 @@ versados_object_p (abfd)
 {
   struct ext_vheader ext;
   unsigned char len;
+  tdata_type *tdata_save;
 
   if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
     return NULL;
@@ -642,9 +643,12 @@ versados_object_p (abfd)
 
   /* OK, looks like a record, build the tdata and read in.  */
 
-  if (!versados_mkobject (abfd)
-      || !versados_scan (abfd))
-    return NULL;
+  tdata_save = abfd->tdata.versados_data;
+  if (!versados_mkobject (abfd) || !versados_scan (abfd))
+    {
+      abfd->tdata.versados_data = tdata_save;
+      return NULL;
+    }
 
   return abfd->xvec;
 }
index b871a5d3ae0142f80c65e8a839e5a21167a4eba8..3b043b47b76acdc2d869180f43ad19757795bc17 100644 (file)
@@ -292,23 +292,23 @@ _bfd_vms_get_record (abfd)
 
   if (PRIV (buf_size) == 0)
     {
+      bfd_size_type amt;
+
       if (PRIV (is_vax))
        {
-         PRIV (vms_buf) = (unsigned char *) malloc (OBJ_S_C_MAXRECSIZ);
-         PRIV (buf_size) = OBJ_S_C_MAXRECSIZ;
+         amt = OBJ_S_C_MAXRECSIZ;
          PRIV (file_format) = FF_VAX;
        }
       else
-       PRIV (vms_buf) = (unsigned char *) malloc (6);
+       amt = 6;
+      PRIV (vms_buf) = (unsigned char *) bfd_malloc (amt);
+      PRIV (buf_size) = amt;
     }
 
   vms_buf = PRIV (vms_buf);
 
   if (vms_buf == 0)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return -1;
-    }
+    return -1;
 
   switch (PRIV (file_format))
     {
@@ -371,7 +371,7 @@ _bfd_vms_get_record (abfd)
   if (PRIV (is_vax))
     {
       PRIV (rec_length) = bfd_bread (vms_buf, (bfd_size_type) PRIV (buf_size),
-                                   abfd);
+                                    abfd);
       if (PRIV (rec_length) <= 0)
        {
          bfd_set_error (bfd_error_file_truncated);
@@ -383,7 +383,7 @@ _bfd_vms_get_record (abfd)
     {
       /* extract vms record length  */
 
-      _bfd_vms_get_header_values (abfd, vms_buf+test_start, NULL,
+      _bfd_vms_get_header_values (abfd, vms_buf + test_start, NULL,
                                  &PRIV (rec_length));
 
       if (PRIV (rec_length) <= 0)
@@ -405,13 +405,11 @@ _bfd_vms_get_record (abfd)
       if (PRIV (rec_length) > PRIV (buf_size))
        {
          PRIV (vms_buf) = ((unsigned char *)
-                           realloc (vms_buf, (size_t) PRIV (rec_length)));
+                           bfd_realloc (vms_buf,
+                                        (bfd_size_type) PRIV (rec_length)));
          vms_buf = PRIV (vms_buf);
          if (vms_buf == 0)
-           {
-             bfd_set_error (bfd_error_no_memory);
-             return -1;
-           }
+           return -1;
          PRIV (buf_size) = PRIV (rec_length);
        }
 
@@ -593,7 +591,8 @@ add_new_contents (abfd, section)
   if (sptr != NULL)
     return sptr;
 
-  newptr = (vms_section *) bfd_malloc ((bfd_size_type) sizeof (vms_section));
+  newptr = (vms_section *) bfd_alloc (abfd,
+                                     (bfd_size_type) sizeof (vms_section));
   if (newptr == (vms_section *) NULL)
     return NULL;
   newptr->contents = (unsigned char *) bfd_alloc (abfd, section->_raw_size);
index c9d8ab6efd96ae29b8c6f8a5c522c6d3f212819c..fc6bcc3e161b5450d32bbed9f143c14a2576552e 100644 (file)
--- a/bfd/vms.c
+++ b/bfd/vms.c
@@ -238,13 +238,10 @@ vms_initialize (abfd)
   int i;
   bfd_size_type amt;
 
-  if (abfd->tdata.any != 0)
-    return true;
-
   bfd_set_start_address (abfd, (bfd_vma) -1);
 
   amt = sizeof (struct vms_private_data_struct);
-  abfd->tdata.any = (struct vms_private_data_struct*) bfd_malloc (amt);
+  abfd->tdata.any = (struct vms_private_data_struct*) bfd_alloc (abfd, amt);
   if (abfd->tdata.any == 0)
     return false;
 
@@ -261,49 +258,32 @@ vms_initialize (abfd)
   PRIV (sections) = NULL;
 
   amt = sizeof (struct stack_struct) * STACKSIZE;
-  PRIV (stack) = (struct stack_struct *) bfd_malloc (amt);
+  PRIV (stack) = (struct stack_struct *) bfd_alloc (abfd, amt);
   if (PRIV (stack) == 0)
-    {
-     vms_init_no_mem1:
-      free (abfd->tdata.any);
-      abfd->tdata.any = 0;
-      return false;
-    }
+    goto error_ret1;
   PRIV (stackptr) = 0;
 
   amt = sizeof (struct bfd_hash_table);
-  PRIV (vms_symbol_table) = (struct bfd_hash_table *) bfd_malloc (amt);
+  PRIV (vms_symbol_table) = (struct bfd_hash_table *) bfd_alloc (abfd, amt);
   if (PRIV (vms_symbol_table) == 0)
-    {
-     vms_init_no_mem2:
-      free (PRIV (stack));
-      PRIV (stack) = 0;
-      goto vms_init_no_mem1;
-    }
+    goto error_ret1;
 
   if (!bfd_hash_table_init (PRIV (vms_symbol_table), _bfd_vms_hash_newfunc))
-    return false;
+    goto error_ret1;
 
   amt = sizeof (struct location_struct) * LOCATION_SAVE_SIZE;
-  PRIV (location_stack) = (struct location_struct *) bfd_malloc (amt);
+  PRIV (location_stack) = (struct location_struct *) bfd_alloc (abfd, amt);
   if (PRIV (location_stack) == 0)
-    {
-     vms_init_no_mem3:
-      free (PRIV (vms_symbol_table));
-      PRIV (vms_symbol_table) = 0;
-      goto vms_init_no_mem2;
-    }
+    goto error_ret2;
 
   for (i = 0; i < VMS_SECTION_COUNT; i++)
     PRIV (vms_section_table)[i] = NULL;
 
-  PRIV (output_buf) = (unsigned char *) malloc (MAX_OUTREC_SIZE);
+  amt = MAX_OUTREC_SIZE;
+  PRIV (output_buf) = (unsigned char *) bfd_alloc (abfd, amt);
   if (PRIV (output_buf) == 0)
-    {
-      free (PRIV (location_stack));
-      PRIV (location_stack) = 0;
-      goto vms_init_no_mem3;
-    }
+    goto error_ret2;
+
   PRIV (push_level) = 0;
   PRIV (pushed_size) = 0;
   PRIV (length_pos) = 2;
@@ -311,6 +291,13 @@ vms_initialize (abfd)
   PRIV (output_alignment) = 1;
 
   return true;
+
+ error_ret2:
+  bfd_hash_table_free (PRIV (vms_symbol_table));
+ error_ret1:
+  bfd_release (abfd, abfd->tdata.any);
+  abfd->tdata.any = 0;
+  return false;
 }
 
 /* Fill symbol->section with section ptr
@@ -394,22 +381,17 @@ vms_object_p (abfd)
   int prev_type;
   const struct bfd_target *target_vector = 0;
   const bfd_arch_info_type *arch = 0;
+  PTR tdata_save = abfd->tdata.any;
 
 #if VMS_DEBUG
   vms_debug (1, "vms_object_p(%p)\n", abfd);
 #endif
 
   if (!vms_initialize (abfd))
-    {
-      fprintf (stderr, "vms_initialize () failed !!\n");
-      return 0;
-    }
+    goto error_ret;
 
   if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET))
-    {
-      bfd_set_error (bfd_error_file_truncated);
-      return 0;
-    }
+    goto err_wrong_format;
 
   prev_type = -1;
 
@@ -423,8 +405,7 @@ vms_object_p (abfd)
 #if VMS_DEBUG
          vms_debug (2, "next_record failed\n");
 #endif
-         bfd_set_error (bfd_error_wrong_format);
-         return 0;
+         goto err_wrong_format;
        }
 
       if ((prev_type == EOBJ_S_C_EGSD)
@@ -435,8 +416,7 @@ vms_object_p (abfd)
 #if VMS_DEBUG
              vms_debug (2, "vms_fixup_sections failed\n");
 #endif
-             bfd_set_error (bfd_error_wrong_format);
-             return 0;
+             goto err_wrong_format;
            }
        }
 
@@ -488,8 +468,7 @@ vms_object_p (abfd)
 #if VMS_DEBUG
          vms_debug (2, "slurp type %d failed with %d\n", prev_type, err);
 #endif
-         bfd_set_error (bfd_error_wrong_format);
-         return 0;
+         goto err_wrong_format;
        }
     }
   while ((prev_type != EOBJ_S_C_EEOM) && (prev_type != OBJ_S_C_EOM) && (prev_type != OBJ_S_C_EOMW));
@@ -501,8 +480,7 @@ vms_object_p (abfd)
 #if VMS_DEBUG
          vms_debug (2, "vms_fixup_sections failed\n");
 #endif
-         bfd_set_error (bfd_error_wrong_format);
-         return 0;
+         goto err_wrong_format;
        }
 
       /* set arch_info to vax  */
@@ -529,12 +507,19 @@ vms_object_p (abfd)
 #if VMS_DEBUG
       vms_debug (2, "arch not found\n");
 #endif
-      bfd_set_error (bfd_error_wrong_format);
-      return 0;
+      goto err_wrong_format;
     }
   abfd->arch_info = arch;
 
   return target_vector;
+
+ err_wrong_format:
+  bfd_set_error (bfd_error_wrong_format);
+ error_ret:
+  if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
+    bfd_release (abfd, abfd->tdata.any);
+  abfd->tdata.any = tdata_save;
+  return NULL;
 }
 
 /* Check the format for a file being read.
@@ -562,10 +547,7 @@ vms_mkobject (abfd)
 #endif
 
   if (!vms_initialize (abfd))
-    {
-      fprintf (stderr, "vms_initialize () failed !!\n");
-      return 0;
-    }
+    return 0;
 
   {
 #ifdef __VAX
@@ -646,10 +628,6 @@ static boolean
 vms_close_and_cleanup (abfd)
      bfd *abfd;
 {
-  asection *sec;
-  vms_section *es, *es1;
-  int i;
-
 #if VMS_DEBUG
   vms_debug (1, "vms_close_and_cleanup(%p)\n", abfd);
 #endif
@@ -657,63 +635,15 @@ vms_close_and_cleanup (abfd)
     return true;
 
   if (PRIV (vms_buf) != NULL)
-    {
-      free (PRIV (vms_buf));
-      PRIV (vms_buf) = NULL;
-    }
-  PRIV (buf_size) = 0;
-
-  if (PRIV (output_buf) != 0)
-    {
-      free (PRIV (output_buf));
-      PRIV (output_buf) = 0;
-    }
-
-  sec = abfd->sections;
-  while (sec != NULL)
-    {
-      if (sec->contents)
-       free (sec->contents);
-      sec = sec->next;
-    }
+    free (PRIV (vms_buf));
 
   if (PRIV (sections) != NULL)
-    {
-      free (PRIV (sections));
-      PRIV (sections) = NULL;
-    }
+    free (PRIV (sections));
 
   if (PRIV (vms_symbol_table))
-    {
-      bfd_hash_table_free (PRIV (vms_symbol_table));
-      PRIV (vms_symbol_table) = 0;
-    }
-
-  if (PRIV (stack))
-    {
-      free (PRIV (stack));
-      PRIV (stack) = 0;
-    }
-
-  if (PRIV (location_stack))
-    {
-      free (PRIV (location_stack));
-      PRIV (location_stack) = 0;
-    }
-
-  for (i = 0; i < VMS_SECTION_COUNT; i++)
-    {
-      es = PRIV (vms_section_table)[i];
-      while (es != NULL)
-       {
-         es1 = es->next;
-         free (es);
-         es = es1;
-       }
-      PRIV (vms_section_table)[i] = NULL;
-   }
+    bfd_hash_table_free (PRIV (vms_symbol_table));
 
-  free (abfd->tdata.any);
+  bfd_release (abfd, abfd->tdata.any);
   abfd->tdata.any = NULL;
 
   return true;
index c1793544e3377fa88c6df9c136dc2b5ec3b67554..a869d7d3d6d9838c44a7f85bf7c9e6122a4586c0 100644 (file)
@@ -5887,7 +5887,10 @@ xcoff_write_global_symbol (h, inf)
       isym.n_value = (h->root.u.def.section->output_section->vma
                      + h->root.u.def.section->output_offset
                      + h->root.u.def.value);
-      isym.n_scnum = h->root.u.def.section->output_section->target_index;
+      if (bfd_is_abs_section (h->root.u.def.section->output_section))
+       isym.n_scnum = N_ABS;
+      else
+       isym.n_scnum = h->root.u.def.section->output_section->target_index;
       isym.n_sclass = C_HIDEXT;
       aux.x_csect.x_smtyp = XTY_SD;