PR 2434
bfd/ * elflink.c (struct elf_smash_syms_data, elf_smash_syms): Delete. (elf_link_add_object_symbols): Delete unnecessary locals. Rename hash_table -> htab. Formatting. Save entire symbol table before loading as-needed syms, and restore afterwards if lib not needed. Use bfd_hash_allocate rather than bfd_alloc for sym name. Free some buffers earlier. * bfd-in.h (struct bfd_hash_table): Add entsize. (bfd_hash_table_init, bfd_hash_table_init_n): Adjust prototype. * elf-bfd.h (_bfd_elf_link_hash_table_init): Likewise * hash.c (bfd_hash_table_init_n): Add entsize param, save to hash table. (bfd_hash_table_init): Add param, adjust calls. * aoutx.h: Adjust all hash_table_init functions and calls. * bfd.c: Likewise. * coff-arm.c: Likewise. * coff-h8300.c: Likewise. * coff-ppc.c: Likewise. * cofflink.c: Likewise. * ecoff.c: Likewise. * ecofflink.c: Likewise. * elf-m10300.c: Likewise. * elf-strtab.c: Likewise. * elf.c: Likewise. * elf32-arm.c: Likewise. * elf32-bfin.c: Likewise. * elf32-cris.c: Likewise. * elf32-frv.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i386.c: Likewise. * elf32-m32r.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-m68k.c: Likewise. * elf32-ppc.c: Likewise. * elf32-s390.c: Likewise. * elf32-sh.c: Likewise. * elf32-vax.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sh64.c: Likewise. * elf64-x86-64.c: Likewise. * elfxx-ia64.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-sparc.c: Likewise. * i386linux.c: Likewise. * libaout.h: Likewise. * libbfd-in.h: Likewise. * libcoff-in.h: Likewise. * linker.c: Likewise. * m68klinux.c: Likewise. * merge.c: Likewise. * opncls.c: Likewise. * pdp11.c: Likewise. * sparclinux.c: Likewise. * stabs.c: Likewise. * sunos.c: Likewise. * vms.c: Likewise. * xcofflink.c: Likewise. * section.c (struct section_hash_entry): Move to.. * libbfd-in.h: ..here. * Makefile.am: Run "make dep-am" * Makefile.in: Regenerate. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * libcoff.h: Regenerate. binutils/ * ieee.c (write_ieee_debugging_info): Adjust bfd_hash_table_init calls. * wrstabs.c (write_stabs_in_sections_debugging_info): Likewise. ld/ * ldcref.c (add_cref): Adjust bfd_hash_table_init calls. * ldlang.c (output_statement_table_init, lang_init): Likewise. * ldmain.c (add_ysym, add_wrap, add_keepsyms_file): Likewise. (undefined_symbol): Likewise.
This commit is contained in:
parent
d4bb535096
commit
66eb6687c9
@ -1,3 +1,73 @@
|
|||||||
|
2006-03-16 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
PR 2434
|
||||||
|
* elflink.c (struct elf_smash_syms_data, elf_smash_syms): Delete.
|
||||||
|
(elf_link_add_object_symbols): Delete unnecessary locals. Rename
|
||||||
|
hash_table -> htab. Formatting. Save entire symbol table
|
||||||
|
before loading as-needed syms, and restore afterwards if lib not
|
||||||
|
needed. Use bfd_hash_allocate rather than bfd_alloc for sym
|
||||||
|
name. Free some buffers earlier.
|
||||||
|
* bfd-in.h (struct bfd_hash_table): Add entsize.
|
||||||
|
(bfd_hash_table_init, bfd_hash_table_init_n): Adjust prototype.
|
||||||
|
* elf-bfd.h (_bfd_elf_link_hash_table_init): Likewise
|
||||||
|
* hash.c (bfd_hash_table_init_n): Add entsize param, save to
|
||||||
|
hash table.
|
||||||
|
(bfd_hash_table_init): Add param, adjust calls.
|
||||||
|
* aoutx.h: Adjust all hash_table_init functions and calls.
|
||||||
|
* bfd.c: Likewise.
|
||||||
|
* coff-arm.c: Likewise.
|
||||||
|
* coff-h8300.c: Likewise.
|
||||||
|
* coff-ppc.c: Likewise.
|
||||||
|
* cofflink.c: Likewise.
|
||||||
|
* ecoff.c: Likewise.
|
||||||
|
* ecofflink.c: Likewise.
|
||||||
|
* elf-m10300.c: Likewise.
|
||||||
|
* elf-strtab.c: Likewise.
|
||||||
|
* elf.c: Likewise.
|
||||||
|
* elf32-arm.c: Likewise.
|
||||||
|
* elf32-bfin.c: Likewise.
|
||||||
|
* elf32-cris.c: Likewise.
|
||||||
|
* elf32-frv.c: Likewise.
|
||||||
|
* elf32-hppa.c: Likewise.
|
||||||
|
* elf32-i386.c: Likewise.
|
||||||
|
* elf32-m32r.c: Likewise.
|
||||||
|
* elf32-m68hc1x.c: Likewise.
|
||||||
|
* elf32-m68k.c: Likewise.
|
||||||
|
* elf32-ppc.c: Likewise.
|
||||||
|
* elf32-s390.c: Likewise.
|
||||||
|
* elf32-sh.c: Likewise.
|
||||||
|
* elf32-vax.c: Likewise.
|
||||||
|
* elf64-alpha.c: Likewise.
|
||||||
|
* elf64-hppa.c: Likewise.
|
||||||
|
* elf64-ppc.c: Likewise.
|
||||||
|
* elf64-s390.c: Likewise.
|
||||||
|
* elf64-sh64.c: Likewise.
|
||||||
|
* elf64-x86-64.c: Likewise.
|
||||||
|
* elfxx-ia64.c: Likewise.
|
||||||
|
* elfxx-mips.c: Likewise.
|
||||||
|
* elfxx-sparc.c: Likewise.
|
||||||
|
* i386linux.c: Likewise.
|
||||||
|
* libaout.h: Likewise.
|
||||||
|
* libbfd-in.h: Likewise.
|
||||||
|
* libcoff-in.h: Likewise.
|
||||||
|
* linker.c: Likewise.
|
||||||
|
* m68klinux.c: Likewise.
|
||||||
|
* merge.c: Likewise.
|
||||||
|
* opncls.c: Likewise.
|
||||||
|
* pdp11.c: Likewise.
|
||||||
|
* sparclinux.c: Likewise.
|
||||||
|
* stabs.c: Likewise.
|
||||||
|
* sunos.c: Likewise.
|
||||||
|
* vms.c: Likewise.
|
||||||
|
* xcofflink.c: Likewise.
|
||||||
|
* section.c (struct section_hash_entry): Move to..
|
||||||
|
* libbfd-in.h: ..here.
|
||||||
|
* Makefile.am: Run "make dep-am"
|
||||||
|
* Makefile.in: Regenerate.
|
||||||
|
* bfd-in2.h: Regenerate.
|
||||||
|
* libbfd.h: Regenerate.
|
||||||
|
* libcoff.h: Regenerate.
|
||||||
|
|
||||||
2006-03-16 Alan Modra <amodra@bigpond.net.au>
|
2006-03-16 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elf32-ppc.c (ppc_elf_check_relocs): REL24 and REL14 relocs
|
* elf32-ppc.c (ppc_elf_check_relocs): REL24 and REL14 relocs
|
||||||
|
@ -1000,7 +1000,8 @@ cpu-m68hc11.lo: cpu-m68hc11.c $(INCDIR)/filenames.h \
|
|||||||
$(INCDIR)/hashtab.h
|
$(INCDIR)/hashtab.h
|
||||||
cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h \
|
cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h \
|
||||||
$(INCDIR)/hashtab.h
|
$(INCDIR)/hashtab.h
|
||||||
cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||||
|
$(INCDIR)/opcode/m68k.h
|
||||||
cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
||||||
cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
||||||
cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
||||||
@ -1218,10 +1219,11 @@ elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
|||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
|
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
|
||||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
||||||
elf32-target.h
|
elf32-target.h
|
||||||
elf32-arm.lo: elf32-arm.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
elf32-arm.lo: elf32-arm.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf-vxworks.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
|
elf-vxworks.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
|
||||||
|
elf32-target.h
|
||||||
elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h \
|
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h \
|
||||||
@ -1312,7 +1314,8 @@ elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
|||||||
elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h \
|
||||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/m68k.h \
|
||||||
|
elf32-target.h
|
||||||
elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
|
elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
|
||||||
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||||
@ -1439,17 +1442,17 @@ elf32-xtensa.lo: elf32-xtensa.c $(INCDIR)/filenames.h \
|
|||||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/xtensa-isa.h \
|
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/xtensa-isa.h \
|
||||||
$(INCDIR)/xtensa-config.h elf32-target.h
|
$(INCDIR)/xtensa-config.h elf32-target.h
|
||||||
elf32-xc16x.lo: elf32-xc16x.c $(INCDIR)/filenames.h \
|
elf32-xc16x.lo: elf32-xc16x.c $(INCDIR)/filenames.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/xc16x.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
$(INCDIR)/elf/xc16x.h $(INCDIR)/elf/reloc-macros.h \
|
||||||
elf32-target.h
|
$(INCDIR)/elf/dwarf2.h $(INCDIR)/libiberty.h elf32-target.h
|
||||||
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||||
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h
|
||||||
elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/safe-ctype.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/safe-ctype.h \
|
||||||
$(INCDIR)/libiberty.h
|
$(INCDIR)/libiberty.h $(INCDIR)/objalloc.h
|
||||||
elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h
|
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -1567,7 +1567,8 @@ cpu-m68hc11.lo: cpu-m68hc11.c $(INCDIR)/filenames.h \
|
|||||||
$(INCDIR)/hashtab.h
|
$(INCDIR)/hashtab.h
|
||||||
cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h \
|
cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h \
|
||||||
$(INCDIR)/hashtab.h
|
$(INCDIR)/hashtab.h
|
||||||
cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||||
|
$(INCDIR)/opcode/m68k.h
|
||||||
cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
||||||
cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
||||||
cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h
|
||||||
@ -1785,10 +1786,11 @@ elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
|||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
|
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
|
||||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
||||||
elf32-target.h
|
elf32-target.h
|
||||||
elf32-arm.lo: elf32-arm.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
elf32-arm.lo: elf32-arm.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf-vxworks.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
|
elf-vxworks.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
|
||||||
|
elf32-target.h
|
||||||
elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h \
|
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h \
|
||||||
@ -1879,7 +1881,8 @@ elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
|||||||
elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h \
|
||||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/m68k.h \
|
||||||
|
elf32-target.h
|
||||||
elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
|
elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
|
||||||
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||||
@ -2006,17 +2009,17 @@ elf32-xtensa.lo: elf32-xtensa.c $(INCDIR)/filenames.h \
|
|||||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/xtensa-isa.h \
|
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/xtensa-isa.h \
|
||||||
$(INCDIR)/xtensa-config.h elf32-target.h
|
$(INCDIR)/xtensa-config.h elf32-target.h
|
||||||
elf32-xc16x.lo: elf32-xc16x.c $(INCDIR)/filenames.h \
|
elf32-xc16x.lo: elf32-xc16x.c $(INCDIR)/filenames.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/xc16x.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
$(INCDIR)/elf/xc16x.h $(INCDIR)/elf/reloc-macros.h \
|
||||||
elf32-target.h
|
$(INCDIR)/elf/dwarf2.h $(INCDIR)/libiberty.h elf32-target.h
|
||||||
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||||
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h
|
||||||
elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||||
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
$(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/safe-ctype.h \
|
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/safe-ctype.h \
|
||||||
$(INCDIR)/libiberty.h
|
$(INCDIR)/libiberty.h $(INCDIR)/objalloc.h
|
||||||
elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h
|
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h
|
||||||
|
15
bfd/aoutx.h
15
bfd/aoutx.h
@ -1,6 +1,6 @@
|
|||||||
/* BFD semi-generic back-end for a.out binaries.
|
/* BFD semi-generic back-end for a.out binaries.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
|
|
||||||
@ -2859,9 +2859,10 @@ NAME (aout, link_hash_table_init) (struct aout_link_hash_table *table,
|
|||||||
bfd *abfd,
|
bfd *abfd,
|
||||||
struct bfd_hash_entry *(*newfunc)
|
struct bfd_hash_entry *(*newfunc)
|
||||||
(struct bfd_hash_entry *, struct bfd_hash_table *,
|
(struct bfd_hash_entry *, struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
return _bfd_link_hash_table_init (&table->root, abfd, newfunc);
|
return _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create an a.out link hash table. */
|
/* Create an a.out link hash table. */
|
||||||
@ -2876,8 +2877,9 @@ NAME (aout, link_hash_table_create) (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! NAME (aout, link_hash_table_init) (ret, abfd,
|
if (!NAME (aout, link_hash_table_init) (ret, abfd,
|
||||||
NAME (aout, link_hash_newfunc)))
|
NAME (aout, link_hash_newfunc),
|
||||||
|
sizeof (struct aout_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -5252,8 +5254,9 @@ NAME (aout, final_link) (bfd *abfd,
|
|||||||
aout_info.symbol_map = NULL;
|
aout_info.symbol_map = NULL;
|
||||||
aout_info.output_syms = NULL;
|
aout_info.output_syms = NULL;
|
||||||
|
|
||||||
if (! bfd_hash_table_init_n (&aout_info.includes.root,
|
if (!bfd_hash_table_init_n (&aout_info.includes.root,
|
||||||
aout_link_includes_newfunc,
|
aout_link_includes_newfunc,
|
||||||
|
sizeof (struct aout_link_includes_entry),
|
||||||
251))
|
251))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
includes_hash_initialized = TRUE;
|
includes_hash_initialized = TRUE;
|
||||||
|
@ -376,6 +376,8 @@ struct bfd_hash_table
|
|||||||
struct bfd_hash_entry **table;
|
struct bfd_hash_entry **table;
|
||||||
/* The number of slots in the hash table. */
|
/* The number of slots in the hash table. */
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
|
/* The size of elements. */
|
||||||
|
unsigned int entsize;
|
||||||
/* A function used to create new elements in the hash table. The
|
/* A function used to create new elements in the hash table. The
|
||||||
first entry is itself a pointer to an element. When this
|
first entry is itself a pointer to an element. When this
|
||||||
function is first invoked, this pointer will be NULL. However,
|
function is first invoked, this pointer will be NULL. However,
|
||||||
@ -395,7 +397,8 @@ extern bfd_boolean bfd_hash_table_init
|
|||||||
(struct bfd_hash_table *,
|
(struct bfd_hash_table *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
|
|
||||||
/* Initialize a hash table specifying a size. */
|
/* Initialize a hash table specifying a size. */
|
||||||
extern bfd_boolean bfd_hash_table_init_n
|
extern bfd_boolean bfd_hash_table_init_n
|
||||||
@ -403,7 +406,7 @@ extern bfd_boolean bfd_hash_table_init_n
|
|||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *),
|
const char *),
|
||||||
unsigned int size);
|
unsigned int, unsigned int);
|
||||||
|
|
||||||
/* Free up a hash table. */
|
/* Free up a hash table. */
|
||||||
extern void bfd_hash_table_free
|
extern void bfd_hash_table_free
|
||||||
|
@ -383,6 +383,8 @@ struct bfd_hash_table
|
|||||||
struct bfd_hash_entry **table;
|
struct bfd_hash_entry **table;
|
||||||
/* The number of slots in the hash table. */
|
/* The number of slots in the hash table. */
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
|
/* The size of elements. */
|
||||||
|
unsigned int entsize;
|
||||||
/* A function used to create new elements in the hash table. The
|
/* A function used to create new elements in the hash table. The
|
||||||
first entry is itself a pointer to an element. When this
|
first entry is itself a pointer to an element. When this
|
||||||
function is first invoked, this pointer will be NULL. However,
|
function is first invoked, this pointer will be NULL. However,
|
||||||
@ -402,7 +404,8 @@ extern bfd_boolean bfd_hash_table_init
|
|||||||
(struct bfd_hash_table *,
|
(struct bfd_hash_table *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
|
|
||||||
/* Initialize a hash table specifying a size. */
|
/* Initialize a hash table specifying a size. */
|
||||||
extern bfd_boolean bfd_hash_table_init_n
|
extern bfd_boolean bfd_hash_table_init_n
|
||||||
@ -410,7 +413,7 @@ extern bfd_boolean bfd_hash_table_init_n
|
|||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *),
|
const char *),
|
||||||
unsigned int size);
|
unsigned int, unsigned int);
|
||||||
|
|
||||||
/* Free up a hash table. */
|
/* Free up a hash table. */
|
||||||
extern void bfd_hash_table_free
|
extern void bfd_hash_table_free
|
||||||
|
@ -1440,7 +1440,8 @@ bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve)
|
|||||||
preserve->section_count = abfd->section_count;
|
preserve->section_count = abfd->section_count;
|
||||||
preserve->section_htab = abfd->section_htab;
|
preserve->section_htab = abfd->section_htab;
|
||||||
|
|
||||||
if (! bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc))
|
if (! bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc,
|
||||||
|
sizeof (struct section_hash_entry)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
abfd->tdata.any = NULL;
|
abfd->tdata.any = NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for ARM COFF files.
|
/* BFD back-end for ARM COFF files.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
|
|
||||||
@ -879,8 +879,10 @@ coff_arm_link_hash_table_create (bfd * abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_coff_link_hash_table_init
|
if (!_bfd_coff_link_hash_table_init (&ret->root,
|
||||||
(& ret->root, abfd, _bfd_coff_link_hash_newfunc))
|
abfd,
|
||||||
|
_bfd_coff_link_hash_newfunc,
|
||||||
|
sizeof (struct coff_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for Renesas H8/300 COFF binaries.
|
/* BFD back-end for Renesas H8/300 COFF binaries.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Steve Chamberlain, <sac@cygnus.com>.
|
Written by Steve Chamberlain, <sac@cygnus.com>.
|
||||||
|
|
||||||
@ -63,13 +63,6 @@ static struct bfd_hash_entry *
|
|||||||
funcvec_hash_newfunc
|
funcvec_hash_newfunc
|
||||||
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
|
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
|
||||||
|
|
||||||
static bfd_boolean
|
|
||||||
funcvec_hash_table_init
|
|
||||||
(struct funcvec_hash_table *, bfd *,
|
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
|
||||||
struct bfd_hash_table *,
|
|
||||||
const char *));
|
|
||||||
|
|
||||||
static bfd_reloc_status_type special
|
static bfd_reloc_status_type special
|
||||||
(bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **);
|
(bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **);
|
||||||
static int select_reloc
|
static int select_reloc
|
||||||
@ -181,13 +174,14 @@ funcvec_hash_table_init (struct funcvec_hash_table *table,
|
|||||||
struct bfd_hash_entry *(*newfunc)
|
struct bfd_hash_entry *(*newfunc)
|
||||||
(struct bfd_hash_entry *,
|
(struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
/* Initialize our local fields, then call the generic initialization
|
/* Initialize our local fields, then call the generic initialization
|
||||||
routine. */
|
routine. */
|
||||||
table->offset = 0;
|
table->offset = 0;
|
||||||
table->abfd = abfd;
|
table->abfd = abfd;
|
||||||
return (bfd_hash_table_init (&table->root, newfunc));
|
return (bfd_hash_table_init (&table->root, newfunc, entsize));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the derived linker hash table. We use a derived hash table
|
/* Create the derived linker hash table. We use a derived hash table
|
||||||
@ -204,7 +198,8 @@ h8300_coff_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (!_bfd_link_hash_table_init (&ret->root.root, abfd,
|
if (!_bfd_link_hash_table_init (&ret->root.root, abfd,
|
||||||
_bfd_generic_link_hash_newfunc))
|
_bfd_generic_link_hash_newfunc,
|
||||||
|
sizeof (struct generic_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1298,7 +1293,8 @@ h8300_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
|
|
||||||
/* And initialize the funcvec hash table. */
|
/* And initialize the funcvec hash table. */
|
||||||
if (!funcvec_hash_table_init (funcvec_hash_table, abfd,
|
if (!funcvec_hash_table_init (funcvec_hash_table, abfd,
|
||||||
funcvec_hash_newfunc))
|
funcvec_hash_newfunc,
|
||||||
|
sizeof (struct funcvec_hash_entry)))
|
||||||
{
|
{
|
||||||
bfd_release (abfd, funcvec_hash_table);
|
bfd_release (abfd, funcvec_hash_table);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for PowerPC Microsoft Portable Executable files.
|
/* BFD back-end for PowerPC Microsoft Portable Executable files.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
Original version pieced together by Kim Knuttila (krk@cygnus.com)
|
Original version pieced together by Kim Knuttila (krk@cygnus.com)
|
||||||
@ -127,11 +127,6 @@ struct ppc_coff_link_hash_table
|
|||||||
static struct bfd_hash_entry *ppc_coff_link_hash_newfunc
|
static struct bfd_hash_entry *ppc_coff_link_hash_newfunc
|
||||||
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
|
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
|
||||||
const char *));
|
const char *));
|
||||||
static bfd_boolean ppc_coff_link_hash_table_init
|
|
||||||
PARAMS ((struct ppc_coff_link_hash_table *, bfd *,
|
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
|
||||||
struct bfd_hash_table *,
|
|
||||||
const char *)));
|
|
||||||
static struct bfd_link_hash_table *ppc_coff_link_hash_table_create
|
static struct bfd_link_hash_table *ppc_coff_link_hash_table_create
|
||||||
PARAMS ((bfd *));
|
PARAMS ((bfd *));
|
||||||
static bfd_boolean coff_ppc_relocate_section
|
static bfd_boolean coff_ppc_relocate_section
|
||||||
@ -184,14 +179,14 @@ ppc_coff_link_hash_newfunc (entry, table, string)
|
|||||||
/* Initialize a PE linker hash table. */
|
/* Initialize a PE linker hash table. */
|
||||||
|
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
ppc_coff_link_hash_table_init (table, abfd, newfunc)
|
ppc_coff_link_hash_table_init (struct ppc_coff_link_hash_table *table,
|
||||||
struct ppc_coff_link_hash_table *table;
|
bfd *abfd,
|
||||||
bfd *abfd;
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
|
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
return _bfd_coff_link_hash_table_init (&table->root, abfd, newfunc);
|
return _bfd_coff_link_hash_table_init (&table->root, abfd, newfunc, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a PE linker hash table. */
|
/* Create a PE linker hash table. */
|
||||||
@ -206,8 +201,9 @@ ppc_coff_link_hash_table_create (abfd)
|
|||||||
ret = (struct ppc_coff_link_hash_table *) bfd_malloc (amt);
|
ret = (struct ppc_coff_link_hash_table *) bfd_malloc (amt);
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! ppc_coff_link_hash_table_init (ret, abfd,
|
if (!ppc_coff_link_hash_table_init (ret, abfd,
|
||||||
ppc_coff_link_hash_newfunc))
|
ppc_coff_link_hash_newfunc,
|
||||||
|
sizeof (struct ppc_coff_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* COFF specific linker code.
|
/* COFF specific linker code.
|
||||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005 Free Software Foundation, Inc.
|
2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -94,10 +94,11 @@ _bfd_coff_link_hash_table_init (struct coff_link_hash_table *table,
|
|||||||
bfd *abfd,
|
bfd *abfd,
|
||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
memset (&table->stab_info, 0, sizeof (table->stab_info));
|
memset (&table->stab_info, 0, sizeof (table->stab_info));
|
||||||
return _bfd_link_hash_table_init (&table->root, abfd, newfunc);
|
return _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a COFF linker hash table. */
|
/* Create a COFF linker hash table. */
|
||||||
@ -113,7 +114,8 @@ _bfd_coff_link_hash_table_create (bfd *abfd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_coff_link_hash_table_init (ret, abfd,
|
if (! _bfd_coff_link_hash_table_init (ret, abfd,
|
||||||
_bfd_coff_link_hash_newfunc))
|
_bfd_coff_link_hash_newfunc,
|
||||||
|
sizeof (struct coff_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Generic ECOFF (Extended-COFF) routines.
|
/* Generic ECOFF (Extended-COFF) routines.
|
||||||
Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||||
2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Original version by Per Bothner.
|
Original version by Per Bothner.
|
||||||
Full support added by Ian Lance Taylor, ian@cygnus.com.
|
Full support added by Ian Lance Taylor, ian@cygnus.com.
|
||||||
|
|
||||||
@ -3285,8 +3285,9 @@ _bfd_ecoff_bfd_link_hash_table_create (bfd *abfd)
|
|||||||
ret = bfd_malloc (amt);
|
ret = bfd_malloc (amt);
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! _bfd_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_link_hash_table_init (&ret->root, abfd,
|
||||||
ecoff_link_hash_newfunc))
|
ecoff_link_hash_newfunc,
|
||||||
|
sizeof (struct ecoff_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Routines to link ECOFF debugging information.
|
/* Routines to link ECOFF debugging information.
|
||||||
Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
|
Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005 Free Software Foundation, Inc.
|
2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>.
|
Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -501,8 +501,8 @@ bfd_ecoff_debug_init (output_bfd, output_debug, output_swap, info)
|
|||||||
ainfo = (struct accumulate *) bfd_malloc (amt);
|
ainfo = (struct accumulate *) bfd_malloc (amt);
|
||||||
if (!ainfo)
|
if (!ainfo)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! bfd_hash_table_init_n (&ainfo->fdr_hash.table, string_hash_newfunc,
|
if (!bfd_hash_table_init_n (&ainfo->fdr_hash.table, string_hash_newfunc,
|
||||||
1021))
|
sizeof (struct string_hash_entry), 1021))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ainfo->line = NULL;
|
ainfo->line = NULL;
|
||||||
@ -528,7 +528,8 @@ bfd_ecoff_debug_init (output_bfd, output_debug, output_swap, info)
|
|||||||
|
|
||||||
if (! info->relocatable)
|
if (! info->relocatable)
|
||||||
{
|
{
|
||||||
if (! bfd_hash_table_init (&ainfo->str_hash.table, string_hash_newfunc))
|
if (!bfd_hash_table_init (&ainfo->str_hash.table, string_hash_newfunc,
|
||||||
|
sizeof (struct string_hash_entry)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* The first entry in the string table is the empty string. */
|
/* The first entry in the string table is the empty string. */
|
||||||
|
@ -1489,7 +1489,8 @@ extern bfd_boolean _bfd_elf_link_hash_fixup_symbol
|
|||||||
extern bfd_boolean _bfd_elf_link_hash_table_init
|
extern bfd_boolean _bfd_elf_link_hash_table_init
|
||||||
(struct elf_link_hash_table *, bfd *,
|
(struct elf_link_hash_table *, bfd *,
|
||||||
struct bfd_hash_entry *(*)
|
struct bfd_hash_entry *(*)
|
||||||
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
|
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
|
||||||
|
unsigned int);
|
||||||
extern bfd_boolean _bfd_elf_slurp_version_tables
|
extern bfd_boolean _bfd_elf_slurp_version_tables
|
||||||
(bfd *, bfd_boolean);
|
(bfd *, bfd_boolean);
|
||||||
extern bfd_boolean _bfd_elf_merge_sections
|
extern bfd_boolean _bfd_elf_merge_sections
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Matsushita 10300 specific support for 32-bit ELF
|
/* Matsushita 10300 specific support for 32-bit ELF
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
Free Software Foundation, Inc.
|
2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -3695,8 +3695,9 @@ elf32_mn10300_link_hash_table_create (abfd)
|
|||||||
if (ret == (struct elf32_mn10300_link_hash_table *) NULL)
|
if (ret == (struct elf32_mn10300_link_hash_table *) NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
elf32_mn10300_link_hash_newfunc))
|
elf32_mn10300_link_hash_newfunc,
|
||||||
|
sizeof (struct elf32_mn10300_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -3712,8 +3713,9 @@ elf32_mn10300_link_hash_table_create (abfd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd,
|
||||||
elf32_mn10300_link_hash_newfunc))
|
elf32_mn10300_link_hash_newfunc,
|
||||||
|
sizeof (struct elf32_mn10300_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret->static_hash_table);
|
free (ret->static_hash_table);
|
||||||
free (ret);
|
free (ret);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* ELF strtab with GC and suffix merging support.
|
/* ELF strtab with GC and suffix merging support.
|
||||||
Copyright 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
Copyright 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Jakub Jelinek <jakub@redhat.com>.
|
Written by Jakub Jelinek <jakub@redhat.com>.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -99,7 +99,8 @@ _bfd_elf_strtab_init (void)
|
|||||||
if (table == NULL)
|
if (table == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! bfd_hash_table_init (&table->table, elf_strtab_hash_newfunc))
|
if (!bfd_hash_table_init (&table->table, elf_strtab_hash_newfunc,
|
||||||
|
sizeof (struct elf_strtab_hash_entry)))
|
||||||
{
|
{
|
||||||
free (table);
|
free (table);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1561,7 +1561,8 @@ _bfd_elf_link_hash_table_init
|
|||||||
bfd *abfd,
|
bfd *abfd,
|
||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
bfd_boolean ret;
|
bfd_boolean ret;
|
||||||
int can_refcount = get_elf_backend_data (abfd)->can_refcount;
|
int can_refcount = get_elf_backend_data (abfd)->can_refcount;
|
||||||
@ -1588,7 +1589,7 @@ _bfd_elf_link_hash_table_init
|
|||||||
table->loaded = NULL;
|
table->loaded = NULL;
|
||||||
table->is_relocatable_executable = FALSE;
|
table->is_relocatable_executable = FALSE;
|
||||||
|
|
||||||
ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc);
|
ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
|
||||||
table->root.type = bfd_link_elf_hash_table;
|
table->root.type = bfd_link_elf_hash_table;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1606,7 +1607,8 @@ _bfd_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (ret, abfd, _bfd_elf_link_hash_newfunc))
|
if (! _bfd_elf_link_hash_table_init (ret, abfd, _bfd_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1967,7 +1967,8 @@ elf32_arm_link_hash_table_create (bfd *abfd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_bfd_elf_link_hash_table_init (& ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (& ret->root, abfd,
|
||||||
elf32_arm_link_hash_newfunc))
|
elf32_arm_link_hash_newfunc,
|
||||||
|
sizeof (struct elf32_arm_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* ADI Blackfin BFD support for 32-bit ELF.
|
/* ADI Blackfin BFD support for 32-bit ELF.
|
||||||
Copyright 2005 Free Software Foundation, Inc.
|
Copyright 2005, 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -2224,7 +2224,8 @@ bfin_link_hash_table_create (bfd * abfd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
bfin_link_hash_newfunc))
|
bfin_link_hash_newfunc,
|
||||||
|
sizeof (struct bfin_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* CRIS-specific support for 32-bit ELF.
|
/* CRIS-specific support for 32-bit ELF.
|
||||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Axis Communications AB.
|
Contributed by Axis Communications AB.
|
||||||
Written by Hans-Peter Nilsson, based on elf32-fr30.c
|
Written by Hans-Peter Nilsson, based on elf32-fr30.c
|
||||||
@ -849,8 +849,9 @@ elf_cris_link_hash_table_create (abfd)
|
|||||||
if (ret == (struct elf_cris_link_hash_table *) NULL)
|
if (ret == (struct elf_cris_link_hash_table *) NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
elf_cris_link_hash_newfunc))
|
elf_cris_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_cris_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* FRV-specific support for 32-bit ELF.
|
/* FRV-specific support for 32-bit ELF.
|
||||||
Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
Copyright 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -1008,8 +1008,9 @@ frvfdpic_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
|
||||||
_bfd_elf_link_hash_newfunc))
|
_bfd_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -394,14 +394,16 @@ elf32_hppa_link_hash_table_create (bfd *abfd)
|
|||||||
if (htab == NULL)
|
if (htab == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd, hppa_link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd, hppa_link_hash_newfunc,
|
||||||
|
sizeof (struct elf32_hppa_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (htab);
|
free (htab);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Init the stub hash table too. */
|
/* Init the stub hash table too. */
|
||||||
if (!bfd_hash_table_init (&htab->bstab, stub_hash_newfunc))
|
if (!bfd_hash_table_init (&htab->bstab, stub_hash_newfunc,
|
||||||
|
sizeof (struct elf32_hppa_stub_hash_entry)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
htab->stub_bfd = NULL;
|
htab->stub_bfd = NULL;
|
||||||
|
@ -721,7 +721,8 @@ elf_i386_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
|
||||||
|
sizeof (struct elf_i386_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1572,8 +1572,9 @@ m32r_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
m32r_elf_link_hash_newfunc))
|
m32r_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_m32r_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Motorola 68HC11/HC12-specific support for 32-bit ELF
|
/* Motorola 68HC11/HC12-specific support for 32-bit ELF
|
||||||
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Stephane Carrez (stcarrez@nerim.fr)
|
Contributed by Stephane Carrez (stcarrez@nerim.fr)
|
||||||
|
|
||||||
@ -70,8 +70,9 @@ m68hc11_elf_hash_table_create (bfd *abfd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
memset (ret, 0, amt);
|
memset (ret, 0, amt);
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
_bfd_elf_link_hash_newfunc))
|
_bfd_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -85,7 +86,8 @@ m68hc11_elf_hash_table_create (bfd *abfd)
|
|||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (!bfd_hash_table_init (ret->stub_hash_table, stub_hash_newfunc))
|
if (!bfd_hash_table_init (ret->stub_hash_table, stub_hash_newfunc,
|
||||||
|
sizeof (struct elf32_m68hc11_stub_hash_entry)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ret->stub_bfd = NULL;
|
ret->stub_bfd = NULL;
|
||||||
|
@ -361,8 +361,9 @@ elf_m68k_link_hash_table_create (abfd)
|
|||||||
if (ret == (struct elf_m68k_link_hash_table *) NULL)
|
if (ret == (struct elf_m68k_link_hash_table *) NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
elf_m68k_link_hash_newfunc))
|
elf_m68k_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_m68k_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* PowerPC-specific support for 32-bit ELF
|
/* PowerPC-specific support for 32-bit ELF
|
||||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005 Free Software Foundation, Inc.
|
2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -2430,8 +2430,9 @@ ppc_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
|
||||||
ppc_elf_link_hash_newfunc))
|
ppc_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct ppc_elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -771,7 +771,8 @@ elf_s390_link_hash_table_create (abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
|
||||||
|
sizeof (struct elf_s390_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -3612,8 +3612,9 @@ sh_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == (struct elf_sh_link_hash_table *) NULL)
|
if (ret == (struct elf_sh_link_hash_table *) NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
sh_elf_link_hash_newfunc))
|
sh_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_sh_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* VAX series support for 32-bit ELF
|
/* VAX series support for 32-bit ELF
|
||||||
Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005 Free Software Foundation, Inc.
|
2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Contributed by Matt Thomas <matt@3am-software.com>.
|
Contributed by Matt Thomas <matt@3am-software.com>.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -468,8 +468,9 @@ elf_vax_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
elf_vax_link_hash_newfunc))
|
elf_vax_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_vax_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Alpha specific support for 64-bit ELF
|
/* Alpha specific support for 64-bit ELF
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
Free Software Foundation, Inc.
|
2006 Free Software Foundation, Inc.
|
||||||
Contributed by Richard Henderson <rth@tamu.edu>.
|
Contributed by Richard Henderson <rth@tamu.edu>.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -273,8 +273,9 @@ elf64_alpha_bfd_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == (struct alpha_elf_link_hash_table *) NULL)
|
if (ret == (struct alpha_elf_link_hash_table *) NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
elf64_alpha_link_hash_newfunc))
|
elf64_alpha_link_hash_newfunc,
|
||||||
|
sizeof (struct alpha_elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Support for HPPA 64-bit ELF
|
/* Support for HPPA 64-bit ELF
|
||||||
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -157,9 +157,6 @@ struct elf64_hppa_link_hash_table
|
|||||||
typedef struct bfd_hash_entry *(*new_hash_entry_func)
|
typedef struct bfd_hash_entry *(*new_hash_entry_func)
|
||||||
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
|
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
|
||||||
|
|
||||||
static bfd_boolean elf64_hppa_dyn_hash_table_init
|
|
||||||
PARAMS ((struct elf64_hppa_dyn_hash_table *ht, bfd *abfd,
|
|
||||||
new_hash_entry_func new));
|
|
||||||
static struct bfd_hash_entry *elf64_hppa_new_dyn_hash_entry
|
static struct bfd_hash_entry *elf64_hppa_new_dyn_hash_entry
|
||||||
PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
|
PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
|
||||||
const char *string));
|
const char *string));
|
||||||
@ -276,13 +273,13 @@ static int elf64_hppa_elf_get_symbol_type
|
|||||||
PARAMS ((Elf_Internal_Sym *, int));
|
PARAMS ((Elf_Internal_Sym *, int));
|
||||||
|
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
elf64_hppa_dyn_hash_table_init (ht, abfd, new)
|
elf64_hppa_dyn_hash_table_init (struct elf64_hppa_dyn_hash_table *ht,
|
||||||
struct elf64_hppa_dyn_hash_table *ht;
|
bfd *abfd ATTRIBUTE_UNUSED,
|
||||||
bfd *abfd ATTRIBUTE_UNUSED;
|
new_hash_entry_func new,
|
||||||
new_hash_entry_func new;
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
memset (ht, 0, sizeof (*ht));
|
memset (ht, 0, sizeof (*ht));
|
||||||
return bfd_hash_table_init (&ht->root, new);
|
return bfd_hash_table_init (&ht->root, new, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bfd_hash_entry*
|
static struct bfd_hash_entry*
|
||||||
@ -328,14 +325,16 @@ elf64_hppa_hash_table_create (abfd)
|
|||||||
if (!ret)
|
if (!ret)
|
||||||
return 0;
|
return 0;
|
||||||
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
_bfd_elf_link_hash_newfunc))
|
_bfd_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
bfd_release (abfd, ret);
|
bfd_release (abfd, ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!elf64_hppa_dyn_hash_table_init (&ret->dyn_hash_table, abfd,
|
if (!elf64_hppa_dyn_hash_table_init (&ret->dyn_hash_table, abfd,
|
||||||
elf64_hppa_new_dyn_hash_entry))
|
elf64_hppa_new_dyn_hash_entry,
|
||||||
|
sizeof (struct elf64_hppa_dyn_hash_entry)))
|
||||||
return 0;
|
return 0;
|
||||||
return &ret->root.root;
|
return &ret->root.root;
|
||||||
}
|
}
|
||||||
|
@ -3464,18 +3464,21 @@ ppc64_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (htab == NULL)
|
if (htab == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&htab->elf, abfd, link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd, link_hash_newfunc,
|
||||||
|
sizeof (struct ppc_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (htab);
|
free (htab);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Init the stub hash table too. */
|
/* Init the stub hash table too. */
|
||||||
if (!bfd_hash_table_init (&htab->stub_hash_table, stub_hash_newfunc))
|
if (!bfd_hash_table_init (&htab->stub_hash_table, stub_hash_newfunc,
|
||||||
|
sizeof (struct ppc_stub_hash_entry)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* And the branch hash table. */
|
/* And the branch hash table. */
|
||||||
if (!bfd_hash_table_init (&htab->branch_hash_table, branch_hash_newfunc))
|
if (!bfd_hash_table_init (&htab->branch_hash_table, branch_hash_newfunc,
|
||||||
|
sizeof (struct ppc_branch_hash_entry)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Initializing two fields of the union is just cosmetic. We really
|
/* Initializing two fields of the union is just cosmetic. We really
|
||||||
|
@ -724,7 +724,8 @@ elf_s390_link_hash_table_create (abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
|
||||||
|
sizeof (struct elf_s390_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* SuperH SH64-specific support for 64-bit ELF
|
/* SuperH SH64-specific support for 64-bit ELF
|
||||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -3138,8 +3138,9 @@ sh64_elf64_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == (struct elf_sh64_link_hash_table *) NULL)
|
if (ret == (struct elf_sh64_link_hash_table *) NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
sh64_elf64_link_hash_newfunc))
|
sh64_elf64_link_hash_newfunc,
|
||||||
|
sizeof (struct elf_sh64_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -510,7 +510,8 @@ elf64_x86_64_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
|
||||||
|
sizeof (struct elf64_x86_64_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
341
bfd/elflink.c
341
bfd/elflink.c
@ -26,6 +26,7 @@
|
|||||||
#include "elf-bfd.h"
|
#include "elf-bfd.h"
|
||||||
#include "safe-ctype.h"
|
#include "safe-ctype.h"
|
||||||
#include "libiberty.h"
|
#include "libiberty.h"
|
||||||
|
#include "objalloc.h"
|
||||||
|
|
||||||
/* Define a symbol in a dynamic linkage section. */
|
/* Define a symbol in a dynamic linkage section. */
|
||||||
|
|
||||||
@ -2875,98 +2876,6 @@ elf_add_dt_needed_tag (bfd *abfd,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called via elf_link_hash_traverse, elf_smash_syms sets all symbols
|
|
||||||
belonging to NOT_NEEDED to bfd_link_hash_new. We know there are no
|
|
||||||
references from regular objects to these symbols.
|
|
||||||
|
|
||||||
??? Should we do something about references from other dynamic
|
|
||||||
obects? If not, we potentially lose some warnings about undefined
|
|
||||||
symbols. But how can we recover the initial undefined / undefweak
|
|
||||||
state? */
|
|
||||||
|
|
||||||
struct elf_smash_syms_data
|
|
||||||
{
|
|
||||||
bfd *not_needed;
|
|
||||||
struct elf_link_hash_table *htab;
|
|
||||||
bfd_boolean twiddled;
|
|
||||||
};
|
|
||||||
|
|
||||||
static bfd_boolean
|
|
||||||
elf_smash_syms (struct elf_link_hash_entry *h, void *data)
|
|
||||||
{
|
|
||||||
struct elf_smash_syms_data *inf = (struct elf_smash_syms_data *) data;
|
|
||||||
struct bfd_link_hash_entry *bh;
|
|
||||||
|
|
||||||
switch (h->root.type)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case bfd_link_hash_new:
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
case bfd_link_hash_undefined:
|
|
||||||
if (h->root.u.undef.abfd != inf->not_needed)
|
|
||||||
return TRUE;
|
|
||||||
if (h->root.u.undef.weak != NULL
|
|
||||||
&& h->root.u.undef.weak != inf->not_needed)
|
|
||||||
{
|
|
||||||
/* Symbol was undefweak in u.undef.weak bfd, and has become
|
|
||||||
undefined in as-needed lib. Restore weak. */
|
|
||||||
h->root.type = bfd_link_hash_undefweak;
|
|
||||||
h->root.u.undef.abfd = h->root.u.undef.weak;
|
|
||||||
if (h->root.u.undef.next != NULL
|
|
||||||
|| inf->htab->root.undefs_tail == &h->root)
|
|
||||||
inf->twiddled = TRUE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case bfd_link_hash_undefweak:
|
|
||||||
if (h->root.u.undef.abfd != inf->not_needed)
|
|
||||||
return TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case bfd_link_hash_defined:
|
|
||||||
case bfd_link_hash_defweak:
|
|
||||||
if (h->root.u.def.section->owner != inf->not_needed)
|
|
||||||
return TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case bfd_link_hash_common:
|
|
||||||
if (h->root.u.c.p->section->owner != inf->not_needed)
|
|
||||||
return TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case bfd_link_hash_warning:
|
|
||||||
case bfd_link_hash_indirect:
|
|
||||||
elf_smash_syms ((struct elf_link_hash_entry *) h->root.u.i.link, data);
|
|
||||||
if (h->root.u.i.link->type != bfd_link_hash_new)
|
|
||||||
return TRUE;
|
|
||||||
if (h->root.u.i.link->u.undef.abfd != inf->not_needed)
|
|
||||||
return TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* There is no way we can undo symbol table state from defined or
|
|
||||||
defweak back to undefined. */
|
|
||||||
if (h->ref_regular)
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
/* Set sym back to newly created state, but keep undef.next if it is
|
|
||||||
being used as a list pointer. */
|
|
||||||
bh = h->root.u.undef.next;
|
|
||||||
if (bh == &h->root)
|
|
||||||
bh = NULL;
|
|
||||||
if (bh != NULL || inf->htab->root.undefs_tail == &h->root)
|
|
||||||
inf->twiddled = TRUE;
|
|
||||||
(*inf->htab->root.table.newfunc) (&h->root.root,
|
|
||||||
&inf->htab->root.table,
|
|
||||||
h->root.root.string);
|
|
||||||
h->root.u.undef.next = bh;
|
|
||||||
h->root.u.undef.abfd = inf->not_needed;
|
|
||||||
h->non_elf = 0;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sort symbol by value and section. */
|
/* Sort symbol by value and section. */
|
||||||
static int
|
static int
|
||||||
elf_sort_symbol (const void *arg1, const void *arg2)
|
elf_sort_symbol (const void *arg1, const void *arg2)
|
||||||
@ -3136,14 +3045,6 @@ elf_finalize_dynstr (bfd *output_bfd, struct bfd_link_info *info)
|
|||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
||||||
{
|
{
|
||||||
bfd_boolean (*add_symbol_hook)
|
|
||||||
(bfd *, struct bfd_link_info *, Elf_Internal_Sym *,
|
|
||||||
const char **, flagword *, asection **, bfd_vma *);
|
|
||||||
bfd_boolean (*check_relocs)
|
|
||||||
(bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
|
|
||||||
bfd_boolean (*check_directives)
|
|
||||||
(bfd *, struct bfd_link_info *);
|
|
||||||
bfd_boolean collect;
|
|
||||||
Elf_Internal_Shdr *hdr;
|
Elf_Internal_Shdr *hdr;
|
||||||
bfd_size_type symcount;
|
bfd_size_type symcount;
|
||||||
bfd_size_type extsymcount;
|
bfd_size_type extsymcount;
|
||||||
@ -3160,14 +3061,20 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
Elf_Internal_Sym *isymend;
|
Elf_Internal_Sym *isymend;
|
||||||
const struct elf_backend_data *bed;
|
const struct elf_backend_data *bed;
|
||||||
bfd_boolean add_needed;
|
bfd_boolean add_needed;
|
||||||
struct elf_link_hash_table * hash_table;
|
struct elf_link_hash_table *htab;
|
||||||
bfd_size_type amt;
|
bfd_size_type amt;
|
||||||
|
void *alloc_mark = NULL;
|
||||||
|
void *old_tab = NULL;
|
||||||
|
void *old_hash;
|
||||||
|
void *old_ent;
|
||||||
|
struct bfd_link_hash_entry *old_undefs = NULL;
|
||||||
|
struct bfd_link_hash_entry *old_undefs_tail = NULL;
|
||||||
|
long old_dynsymcount = 0;
|
||||||
|
size_t tabsize = 0;
|
||||||
|
size_t hashsize = 0;
|
||||||
|
|
||||||
hash_table = elf_hash_table (info);
|
htab = elf_hash_table (info);
|
||||||
|
|
||||||
bed = get_elf_backend_data (abfd);
|
bed = get_elf_backend_data (abfd);
|
||||||
add_symbol_hook = bed->elf_add_symbol_hook;
|
|
||||||
collect = bed->collect;
|
|
||||||
|
|
||||||
if ((abfd->flags & DYNAMIC) == 0)
|
if ((abfd->flags & DYNAMIC) == 0)
|
||||||
dynamic = FALSE;
|
dynamic = FALSE;
|
||||||
@ -3179,8 +3086,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
hope of using a dynamic object which does not exactly match
|
hope of using a dynamic object which does not exactly match
|
||||||
the format of the output file. */
|
the format of the output file. */
|
||||||
if (info->relocatable
|
if (info->relocatable
|
||||||
|| !is_elf_hash_table (hash_table)
|
|| !is_elf_hash_table (htab)
|
||||||
|| hash_table->root.creator != abfd->xvec)
|
|| htab->root.creator != abfd->xvec)
|
||||||
{
|
{
|
||||||
if (info->relocatable)
|
if (info->relocatable)
|
||||||
bfd_set_error (bfd_error_invalid_operation);
|
bfd_set_error (bfd_error_invalid_operation);
|
||||||
@ -3223,8 +3130,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
{
|
{
|
||||||
struct elf_link_hash_entry *h;
|
struct elf_link_hash_entry *h;
|
||||||
|
|
||||||
h = elf_link_hash_lookup (hash_table, name,
|
h = elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE);
|
||||||
FALSE, FALSE, TRUE);
|
|
||||||
|
|
||||||
/* FIXME: What about bfd_link_hash_common? */
|
/* FIXME: What about bfd_link_hash_common? */
|
||||||
if (h != NULL
|
if (h != NULL
|
||||||
@ -3251,7 +3157,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
|
|
||||||
if (! (_bfd_generic_link_add_one_symbol
|
if (! (_bfd_generic_link_add_one_symbol
|
||||||
(info, abfd, name, BSF_WARNING, s, 0, msg,
|
(info, abfd, name, BSF_WARNING, s, 0, msg,
|
||||||
FALSE, collect, NULL)))
|
FALSE, bed->collect, NULL)))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
|
|
||||||
if (! info->relocatable)
|
if (! info->relocatable)
|
||||||
@ -3277,15 +3183,15 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
format. FIXME: If there are no input BFD's of the same
|
format. FIXME: If there are no input BFD's of the same
|
||||||
format as the output, we can't make a shared library. */
|
format as the output, we can't make a shared library. */
|
||||||
if (info->shared
|
if (info->shared
|
||||||
&& is_elf_hash_table (hash_table)
|
&& is_elf_hash_table (htab)
|
||||||
&& hash_table->root.creator == abfd->xvec
|
&& htab->root.creator == abfd->xvec
|
||||||
&& ! hash_table->dynamic_sections_created)
|
&& !htab->dynamic_sections_created)
|
||||||
{
|
{
|
||||||
if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
|
if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!is_elf_hash_table (hash_table))
|
else if (!is_elf_hash_table (htab))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3360,9 +3266,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
n->name = anm;
|
n->name = anm;
|
||||||
n->by = abfd;
|
n->by = abfd;
|
||||||
n->next = NULL;
|
n->next = NULL;
|
||||||
for (pn = & hash_table->needed;
|
for (pn = &htab->needed; *pn != NULL; pn = &(*pn)->next)
|
||||||
*pn != NULL;
|
|
||||||
pn = &(*pn)->next)
|
|
||||||
;
|
;
|
||||||
*pn = n;
|
*pn = n;
|
||||||
}
|
}
|
||||||
@ -3434,9 +3338,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
if (rpath)
|
if (rpath)
|
||||||
{
|
{
|
||||||
struct bfd_link_needed_list **pn;
|
struct bfd_link_needed_list **pn;
|
||||||
for (pn = & hash_table->runpath;
|
for (pn = &htab->runpath; *pn != NULL; pn = &(*pn)->next)
|
||||||
*pn != NULL;
|
|
||||||
pn = &(*pn)->next)
|
|
||||||
;
|
;
|
||||||
*pn = rpath;
|
*pn = rpath;
|
||||||
}
|
}
|
||||||
@ -3544,8 +3446,57 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
weaks = NULL;
|
/* If we are loading an as-needed shared lib, save the symbol table
|
||||||
|
state before we start adding symbols. If the lib turns out
|
||||||
|
to be unneeded, restore the state. */
|
||||||
|
if ((elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
size_t entsize;
|
||||||
|
|
||||||
|
for (entsize = 0, i = 0; i < htab->root.table.size; i++)
|
||||||
|
{
|
||||||
|
struct bfd_hash_entry *p;
|
||||||
|
|
||||||
|
for (p = htab->root.table.table[i]; p != NULL; p = p->next)
|
||||||
|
entsize += htab->root.table.entsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
tabsize = htab->root.table.size * sizeof (struct bfd_hash_entry *);
|
||||||
|
hashsize = extsymcount * sizeof (struct elf_link_hash_entry *);
|
||||||
|
old_tab = bfd_malloc (tabsize + entsize + hashsize);
|
||||||
|
if (old_tab == NULL)
|
||||||
|
goto error_free_vers;
|
||||||
|
|
||||||
|
/* Remember the current objalloc pointer, so that all mem for
|
||||||
|
symbols added can later be reclaimed. */
|
||||||
|
alloc_mark = bfd_hash_allocate (&htab->root.table, 1);
|
||||||
|
if (alloc_mark == NULL)
|
||||||
|
goto error_free_vers;
|
||||||
|
|
||||||
|
/* Clone the symbol table and sym hashes. Remember some
|
||||||
|
pointers into the symbol table, and dynamic symbol count. */
|
||||||
|
old_hash = (char *) old_tab + tabsize;
|
||||||
|
old_ent = (char *) old_hash + hashsize;
|
||||||
|
memcpy (old_tab, htab->root.table.table, tabsize);
|
||||||
|
memcpy (old_hash, sym_hash, hashsize);
|
||||||
|
old_undefs = htab->root.undefs;
|
||||||
|
old_undefs_tail = htab->root.undefs_tail;
|
||||||
|
old_dynsymcount = htab->dynsymcount;
|
||||||
|
|
||||||
|
for (i = 0; i < htab->root.table.size; i++)
|
||||||
|
{
|
||||||
|
struct bfd_hash_entry *p;
|
||||||
|
|
||||||
|
for (p = htab->root.table.table[i]; p != NULL; p = p->next)
|
||||||
|
{
|
||||||
|
memcpy (old_ent, p, htab->root.table.entsize);
|
||||||
|
old_ent = (char *) old_ent + htab->root.table.entsize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
weaks = NULL;
|
||||||
ever = extversym != NULL ? extversym + extsymoff : NULL;
|
ever = extversym != NULL ? extversym + extsymoff : NULL;
|
||||||
for (isym = isymbuf, isymend = isymbuf + extsymcount;
|
for (isym = isymbuf, isymend = isymbuf + extsymcount;
|
||||||
isym < isymend;
|
isym < isymend;
|
||||||
@ -3597,7 +3548,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
|
|
||||||
if (isym->st_shndx == SHN_UNDEF)
|
if (isym->st_shndx == SHN_UNDEF)
|
||||||
sec = bfd_und_section_ptr;
|
sec = bfd_und_section_ptr;
|
||||||
else if (isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE)
|
else if (isym->st_shndx < SHN_LORESERVE
|
||||||
|
|| isym->st_shndx > SHN_HIRESERVE)
|
||||||
{
|
{
|
||||||
sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
|
sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
|
||||||
if (sec == NULL)
|
if (sec == NULL)
|
||||||
@ -3608,8 +3560,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
default visibility. */
|
default visibility. */
|
||||||
sec = bfd_und_section_ptr;
|
sec = bfd_und_section_ptr;
|
||||||
isym->st_shndx = SHN_UNDEF;
|
isym->st_shndx = SHN_UNDEF;
|
||||||
isym->st_other = STV_DEFAULT
|
isym->st_other = (STV_DEFAULT
|
||||||
| (isym->st_other & ~ ELF_ST_VISIBILITY(-1));
|
| (isym->st_other & ~ ELF_ST_VISIBILITY (-1)));
|
||||||
}
|
}
|
||||||
else if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
|
else if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
|
||||||
value -= sec->vma;
|
value -= sec->vma;
|
||||||
@ -3650,10 +3602,10 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
sec = tcomm;
|
sec = tcomm;
|
||||||
}
|
}
|
||||||
else if (add_symbol_hook)
|
else if (bed->elf_add_symbol_hook)
|
||||||
{
|
{
|
||||||
if (! (*add_symbol_hook) (abfd, info, isym, &name, &flags, &sec,
|
if (! (*bed->elf_add_symbol_hook) (abfd, info, isym, &name, &flags,
|
||||||
&value))
|
&sec, &value))
|
||||||
goto error_free_vers;
|
goto error_free_vers;
|
||||||
|
|
||||||
/* The hook function sets the name to NULL if this symbol
|
/* The hook function sets the name to NULL if this symbol
|
||||||
@ -3676,12 +3628,12 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
definition = TRUE;
|
definition = TRUE;
|
||||||
|
|
||||||
size_change_ok = FALSE;
|
size_change_ok = FALSE;
|
||||||
type_change_ok = get_elf_backend_data (abfd)->type_change_ok;
|
type_change_ok = bed->type_change_ok;
|
||||||
old_alignment = 0;
|
old_alignment = 0;
|
||||||
old_bfd = NULL;
|
old_bfd = NULL;
|
||||||
new_sec = sec;
|
new_sec = sec;
|
||||||
|
|
||||||
if (is_elf_hash_table (hash_table))
|
if (is_elf_hash_table (htab))
|
||||||
{
|
{
|
||||||
Elf_Internal_Versym iver;
|
Elf_Internal_Versym iver;
|
||||||
unsigned int vernum = 0;
|
unsigned int vernum = 0;
|
||||||
@ -3776,7 +3728,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
&& isym->st_shndx != SHN_UNDEF)
|
&& isym->st_shndx != SHN_UNDEF)
|
||||||
++newlen;
|
++newlen;
|
||||||
|
|
||||||
newname = bfd_alloc (abfd, newlen);
|
newname = bfd_hash_allocate (&htab->root.table, newlen);
|
||||||
if (newname == NULL)
|
if (newname == NULL)
|
||||||
goto error_free_vers;
|
goto error_free_vers;
|
||||||
memcpy (newname, name, namelen);
|
memcpy (newname, name, namelen);
|
||||||
@ -3840,7 +3792,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (! (_bfd_generic_link_add_one_symbol
|
if (! (_bfd_generic_link_add_one_symbol
|
||||||
(info, abfd, name, flags, sec, value, NULL, FALSE, collect,
|
(info, abfd, name, flags, sec, value, NULL, FALSE, bed->collect,
|
||||||
(struct bfd_link_hash_entry **) sym_hash)))
|
(struct bfd_link_hash_entry **) sym_hash)))
|
||||||
goto error_free_vers;
|
goto error_free_vers;
|
||||||
|
|
||||||
@ -3855,7 +3807,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
&& definition
|
&& definition
|
||||||
&& (flags & BSF_WEAK) != 0
|
&& (flags & BSF_WEAK) != 0
|
||||||
&& ELF_ST_TYPE (isym->st_info) != STT_FUNC
|
&& ELF_ST_TYPE (isym->st_info) != STT_FUNC
|
||||||
&& is_elf_hash_table (hash_table)
|
&& is_elf_hash_table (htab)
|
||||||
&& h->u.weakdef == NULL)
|
&& h->u.weakdef == NULL)
|
||||||
{
|
{
|
||||||
/* Keep a list of all weak defined non function symbols from
|
/* Keep a list of all weak defined non function symbols from
|
||||||
@ -3898,7 +3850,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
h->root.u.c.p->alignment_power = old_alignment;
|
h->root.u.c.p->alignment_power = old_alignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_elf_hash_table (hash_table))
|
if (is_elf_hash_table (htab))
|
||||||
{
|
{
|
||||||
bfd_boolean dynsym;
|
bfd_boolean dynsym;
|
||||||
|
|
||||||
@ -3998,7 +3950,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
&& (abfd->no_export
|
&& (abfd->no_export
|
||||||
|| (abfd->my_archive && abfd->my_archive->no_export))
|
|| (abfd->my_archive && abfd->my_archive->no_export))
|
||||||
&& ELF_ST_VISIBILITY (isym->st_other) != STV_INTERNAL)
|
&& ELF_ST_VISIBILITY (isym->st_other) != STV_INTERNAL)
|
||||||
isym->st_other = STV_HIDDEN | (isym->st_other & ~ ELF_ST_VISIBILITY (-1));
|
isym->st_other = (STV_HIDDEN
|
||||||
|
| (isym->st_other & ~ELF_ST_VISIBILITY (-1)));
|
||||||
|
|
||||||
if (isym->st_other != 0 && !dynamic)
|
if (isym->st_other != 0 && !dynamic)
|
||||||
{
|
{
|
||||||
@ -4071,13 +4024,13 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
{
|
{
|
||||||
/* Queue non-default versions so that .symver x, x@FOO
|
/* Queue non-default versions so that .symver x, x@FOO
|
||||||
aliases can be checked. */
|
aliases can be checked. */
|
||||||
if (! nondeflt_vers)
|
if (!nondeflt_vers)
|
||||||
{
|
{
|
||||||
amt = (isymend - isym + 1)
|
amt = ((isymend - isym + 1)
|
||||||
* sizeof (struct elf_link_hash_entry *);
|
* sizeof (struct elf_link_hash_entry *));
|
||||||
nondeflt_vers = bfd_malloc (amt);
|
nondeflt_vers = bfd_malloc (amt);
|
||||||
}
|
}
|
||||||
nondeflt_vers [nondeflt_vers_cnt++] = h;
|
nondeflt_vers[nondeflt_vers_cnt++] = h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4089,7 +4042,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
&& ! new_weakdef
|
&& ! new_weakdef
|
||||||
&& h->u.weakdef->dynindx == -1)
|
&& h->u.weakdef->dynindx == -1)
|
||||||
{
|
{
|
||||||
if (! bfd_elf_link_record_dynamic_symbol (info, h->u.weakdef))
|
if (!bfd_elf_link_record_dynamic_symbol (info, h->u.weakdef))
|
||||||
goto error_free_vers;
|
goto error_free_vers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4139,6 +4092,59 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (extversym != NULL)
|
||||||
|
{
|
||||||
|
free (extversym);
|
||||||
|
extversym = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isymbuf != NULL)
|
||||||
|
{
|
||||||
|
free (isymbuf);
|
||||||
|
isymbuf = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
/* Restore the symbol table. */
|
||||||
|
old_hash = (char *) old_tab + tabsize;
|
||||||
|
old_ent = (char *) old_hash + hashsize;
|
||||||
|
sym_hash = elf_sym_hashes (abfd);
|
||||||
|
memcpy (htab->root.table.table, old_tab, tabsize);
|
||||||
|
memcpy (sym_hash, old_hash, hashsize);
|
||||||
|
htab->root.undefs = old_undefs;
|
||||||
|
htab->root.undefs_tail = old_undefs_tail;
|
||||||
|
for (i = 0; i < htab->root.table.size; i++)
|
||||||
|
{
|
||||||
|
struct bfd_hash_entry *p;
|
||||||
|
struct elf_link_hash_entry *h;
|
||||||
|
|
||||||
|
for (p = htab->root.table.table[i]; p != NULL; p = p->next)
|
||||||
|
{
|
||||||
|
h = (struct elf_link_hash_entry *) p;
|
||||||
|
if (h->dynindx >= old_dynsymcount)
|
||||||
|
_bfd_elf_strtab_delref (htab->dynstr, h->dynstr_index);
|
||||||
|
memcpy (p, old_ent, htab->root.table.entsize);
|
||||||
|
old_ent = (char *) old_ent + htab->root.table.entsize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free (old_tab);
|
||||||
|
objalloc_free_block ((struct objalloc *) htab->root.table.memory,
|
||||||
|
alloc_mark);
|
||||||
|
if (nondeflt_vers != NULL)
|
||||||
|
free (nondeflt_vers);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (old_tab != NULL)
|
||||||
|
{
|
||||||
|
free (old_tab);
|
||||||
|
old_tab = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Now that all the symbols from this input file are created, handle
|
/* Now that all the symbols from this input file are created, handle
|
||||||
.symver foo, foo@BAR such that any relocs against foo become foo@BAR. */
|
.symver foo, foo@BAR such that any relocs against foo become foo@BAR. */
|
||||||
if (nondeflt_vers != NULL)
|
if (nondeflt_vers != NULL)
|
||||||
@ -4162,7 +4168,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
shortname[amt] = '\0';
|
shortname[amt] = '\0';
|
||||||
|
|
||||||
hi = (struct elf_link_hash_entry *)
|
hi = (struct elf_link_hash_entry *)
|
||||||
bfd_link_hash_lookup (&hash_table->root, shortname,
|
bfd_link_hash_lookup (&htab->root, shortname,
|
||||||
FALSE, FALSE, FALSE);
|
FALSE, FALSE, FALSE);
|
||||||
if (hi != NULL
|
if (hi != NULL
|
||||||
&& hi->root.type == h->root.type
|
&& hi->root.type == h->root.type
|
||||||
@ -4188,31 +4194,6 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
nondeflt_vers = NULL;
|
nondeflt_vers = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extversym != NULL)
|
|
||||||
{
|
|
||||||
free (extversym);
|
|
||||||
extversym = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isymbuf != NULL)
|
|
||||||
free (isymbuf);
|
|
||||||
isymbuf = NULL;
|
|
||||||
|
|
||||||
if (!add_needed
|
|
||||||
&& (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0)
|
|
||||||
{
|
|
||||||
/* Remove symbols defined in an as-needed shared lib that wasn't
|
|
||||||
needed. */
|
|
||||||
struct elf_smash_syms_data inf;
|
|
||||||
inf.not_needed = abfd;
|
|
||||||
inf.htab = hash_table;
|
|
||||||
inf.twiddled = FALSE;
|
|
||||||
elf_link_hash_traverse (hash_table, elf_smash_syms, &inf);
|
|
||||||
if (inf.twiddled)
|
|
||||||
bfd_link_repair_undef_list (&hash_table->root);
|
|
||||||
weaks = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now set the weakdefs field correctly for all the weak defined
|
/* Now set the weakdefs field correctly for all the weak defined
|
||||||
symbols we found. The only way to do this is to search all the
|
symbols we found. The only way to do this is to search all the
|
||||||
symbols. Since we only need the information for non functions in
|
symbols. Since we only need the information for non functions in
|
||||||
@ -4352,9 +4333,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
free (sorted_sym_hash);
|
free (sorted_sym_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
check_directives = get_elf_backend_data (abfd)->check_directives;
|
if (bed->check_directives)
|
||||||
if (check_directives)
|
(*bed->check_directives) (abfd, info);
|
||||||
check_directives (abfd, info);
|
|
||||||
|
|
||||||
/* If this object is the same format as the output object, and it is
|
/* If this object is the same format as the output object, and it is
|
||||||
not a shared library, then let the backend look through the
|
not a shared library, then let the backend look through the
|
||||||
@ -4373,11 +4353,10 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
|
|
||||||
I have no idea how to handle linking PIC code into a file of a
|
I have no idea how to handle linking PIC code into a file of a
|
||||||
different format. It probably can't be done. */
|
different format. It probably can't be done. */
|
||||||
check_relocs = get_elf_backend_data (abfd)->check_relocs;
|
|
||||||
if (! dynamic
|
if (! dynamic
|
||||||
&& is_elf_hash_table (hash_table)
|
&& is_elf_hash_table (htab)
|
||||||
&& hash_table->root.creator == abfd->xvec
|
&& htab->root.creator == abfd->xvec
|
||||||
&& check_relocs != NULL)
|
&& bed->check_relocs != NULL)
|
||||||
{
|
{
|
||||||
asection *o;
|
asection *o;
|
||||||
|
|
||||||
@ -4398,7 +4377,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
if (internal_relocs == NULL)
|
if (internal_relocs == NULL)
|
||||||
goto error_return;
|
goto error_return;
|
||||||
|
|
||||||
ok = (*check_relocs) (abfd, info, o, internal_relocs);
|
ok = (*bed->check_relocs) (abfd, info, o, internal_relocs);
|
||||||
|
|
||||||
if (elf_section_data (o)->relocs != internal_relocs)
|
if (elf_section_data (o)->relocs != internal_relocs)
|
||||||
free (internal_relocs);
|
free (internal_relocs);
|
||||||
@ -4412,7 +4391,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
of the .stab/.stabstr sections. */
|
of the .stab/.stabstr sections. */
|
||||||
if (! dynamic
|
if (! dynamic
|
||||||
&& ! info->traditional_format
|
&& ! info->traditional_format
|
||||||
&& is_elf_hash_table (hash_table)
|
&& is_elf_hash_table (htab)
|
||||||
&& (info->strip != strip_all && info->strip != strip_debugger))
|
&& (info->strip != strip_all && info->strip != strip_debugger))
|
||||||
{
|
{
|
||||||
asection *stabstr;
|
asection *stabstr;
|
||||||
@ -4433,10 +4412,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
struct bfd_elf_section_data *secdata;
|
struct bfd_elf_section_data *secdata;
|
||||||
|
|
||||||
secdata = elf_section_data (stab);
|
secdata = elf_section_data (stab);
|
||||||
if (! _bfd_link_section_stabs (abfd,
|
if (! _bfd_link_section_stabs (abfd, &htab->stab_info, stab,
|
||||||
&hash_table->stab_info,
|
stabstr, &secdata->sec_info,
|
||||||
stab, stabstr,
|
|
||||||
&secdata->sec_info,
|
|
||||||
&string_offset))
|
&string_offset))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
if (secdata->sec_info)
|
if (secdata->sec_info)
|
||||||
@ -4445,7 +4422,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_elf_hash_table (hash_table) && add_needed)
|
if (is_elf_hash_table (htab) && add_needed)
|
||||||
{
|
{
|
||||||
/* Add this bfd to the loaded list. */
|
/* Add this bfd to the loaded list. */
|
||||||
struct elf_link_loaded_list *n;
|
struct elf_link_loaded_list *n;
|
||||||
@ -4454,13 +4431,15 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
if (n == NULL)
|
if (n == NULL)
|
||||||
goto error_return;
|
goto error_return;
|
||||||
n->abfd = abfd;
|
n->abfd = abfd;
|
||||||
n->next = hash_table->loaded;
|
n->next = htab->loaded;
|
||||||
hash_table->loaded = n;
|
htab->loaded = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
error_free_vers:
|
error_free_vers:
|
||||||
|
if (old_tab != NULL)
|
||||||
|
free (old_tab);
|
||||||
if (nondeflt_vers != NULL)
|
if (nondeflt_vers != NULL)
|
||||||
free (nondeflt_vers);
|
free (nondeflt_vers);
|
||||||
if (extversym != NULL)
|
if (extversym != NULL)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* IA-64 support for 64-bit ELF
|
/* IA-64 support for 64-bit ELF
|
||||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||||
|
|
||||||
@ -1918,7 +1918,8 @@ elfNN_ia64_hash_table_create (abfd)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
elfNN_ia64_new_elf_hash_entry))
|
elfNN_ia64_new_elf_hash_entry,
|
||||||
|
sizeof (struct elfNN_ia64_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* MIPS-specific support for ELF
|
/* MIPS-specific support for ELF
|
||||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
2003, 2004, 2005 Free Software Foundation, Inc.
|
2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Most of the information added by Ian Lance Taylor, Cygnus Support,
|
Most of the information added by Ian Lance Taylor, Cygnus Support,
|
||||||
<ian@cygnus.com>.
|
<ian@cygnus.com>.
|
||||||
@ -8944,8 +8944,9 @@ _bfd_mips_elf_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
|
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
|
||||||
mips_elf_link_hash_newfunc))
|
mips_elf_link_hash_newfunc,
|
||||||
|
sizeof (struct mips_elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -810,7 +810,8 @@ _bfd_sparc_elf_link_hash_table_create (bfd *abfd)
|
|||||||
ret->dynamic_interpreter_size = sizeof ELF32_DYNAMIC_INTERPRETER;
|
ret->dynamic_interpreter_size = sizeof ELF32_DYNAMIC_INTERPRETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc))
|
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
|
||||||
|
sizeof (struct _bfd_sparc_elf_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
15
bfd/hash.c
15
bfd/hash.c
@ -1,6 +1,6 @@
|
|||||||
/* hash.c -- hash table routines for BFD
|
/* hash.c -- hash table routines for BFD
|
||||||
Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004, 2005
|
Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004, 2005,
|
||||||
Free Software Foundation, Inc.
|
2006 Free Software Foundation, Inc.
|
||||||
Written by Steve Chamberlain <sac@cygnus.com>
|
Written by Steve Chamberlain <sac@cygnus.com>
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -308,6 +308,7 @@ bfd_hash_table_init_n (struct bfd_hash_table *table,
|
|||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *),
|
const char *),
|
||||||
|
unsigned int entsize,
|
||||||
unsigned int size)
|
unsigned int size)
|
||||||
{
|
{
|
||||||
unsigned int alloc;
|
unsigned int alloc;
|
||||||
@ -328,6 +329,7 @@ bfd_hash_table_init_n (struct bfd_hash_table *table,
|
|||||||
}
|
}
|
||||||
memset ((void *) table->table, 0, alloc);
|
memset ((void *) table->table, 0, alloc);
|
||||||
table->size = size;
|
table->size = size;
|
||||||
|
table->entsize = entsize;
|
||||||
table->newfunc = newfunc;
|
table->newfunc = newfunc;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -338,9 +340,11 @@ bfd_boolean
|
|||||||
bfd_hash_table_init (struct bfd_hash_table *table,
|
bfd_hash_table_init (struct bfd_hash_table *table,
|
||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
return bfd_hash_table_init_n (table, newfunc, bfd_default_hash_table_size);
|
return bfd_hash_table_init_n (table, newfunc, entsize,
|
||||||
|
bfd_default_hash_table_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free a hash table. */
|
/* Free a hash table. */
|
||||||
@ -591,7 +595,8 @@ _bfd_stringtab_init (void)
|
|||||||
if (table == NULL)
|
if (table == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! bfd_hash_table_init (& table->table, strtab_hash_newfunc))
|
if (!bfd_hash_table_init (&table->table, strtab_hash_newfunc,
|
||||||
|
sizeof (struct strtab_hash_entry)))
|
||||||
{
|
{
|
||||||
free (table);
|
free (table);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for linux flavored i386 a.out binaries.
|
/* BFD back-end for linux flavored i386 a.out binaries.
|
||||||
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001, 2002, 2003,
|
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001, 2002, 2003,
|
||||||
2004 Free Software Foundation, Inc.
|
2004, 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -231,8 +231,9 @@ linux_link_hash_table_create (abfd)
|
|||||||
ret = (struct linux_link_hash_table *) bfd_alloc (abfd, amt);
|
ret = (struct linux_link_hash_table *) bfd_alloc (abfd, amt);
|
||||||
if (ret == (struct linux_link_hash_table *) NULL)
|
if (ret == (struct linux_link_hash_table *) NULL)
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
if (! NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
if (!NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
||||||
linux_link_hash_newfunc))
|
linux_link_hash_newfunc,
|
||||||
|
sizeof (struct linux_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end data structures for a.out (and similar) files.
|
/* BFD back-end data structures for a.out (and similar) files.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
|
|
||||||
@ -575,7 +575,8 @@ extern bfd_boolean NAME (aout, link_hash_table_init)
|
|||||||
(struct aout_link_hash_table *, bfd *,
|
(struct aout_link_hash_table *, bfd *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
|
|
||||||
extern struct bfd_link_hash_table * NAME (aout, link_hash_table_create)
|
extern struct bfd_link_hash_table * NAME (aout, link_hash_table_create)
|
||||||
(bfd *);
|
(bfd *);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
(This include file is not for users of the library.)
|
(This include file is not for users of the library.)
|
||||||
|
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||||
1999, 2000, 2001, 2002, 2003, 2004, 2005
|
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
@ -53,6 +53,12 @@ struct bfd_in_memory
|
|||||||
bfd_byte *buffer;
|
bfd_byte *buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct section_hash_entry
|
||||||
|
{
|
||||||
|
struct bfd_hash_entry root;
|
||||||
|
asection section;
|
||||||
|
};
|
||||||
|
|
||||||
/* tdata for an archive. For an input archive, cache
|
/* tdata for an archive. For an input archive, cache
|
||||||
needs to be free()'d. For an output archive, symdefs do. */
|
needs to be free()'d. For an output archive, symdefs do. */
|
||||||
|
|
||||||
@ -468,7 +474,8 @@ extern bfd_boolean _bfd_link_hash_table_init
|
|||||||
(struct bfd_link_hash_table *, bfd *,
|
(struct bfd_link_hash_table *, bfd *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
|
|
||||||
/* Generic link hash table creation routine. */
|
/* Generic link hash table creation routine. */
|
||||||
extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
|
extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
|
||||||
|
@ -58,6 +58,12 @@ struct bfd_in_memory
|
|||||||
bfd_byte *buffer;
|
bfd_byte *buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct section_hash_entry
|
||||||
|
{
|
||||||
|
struct bfd_hash_entry root;
|
||||||
|
asection section;
|
||||||
|
};
|
||||||
|
|
||||||
/* tdata for an archive. For an input archive, cache
|
/* tdata for an archive. For an input archive, cache
|
||||||
needs to be free()'d. For an output archive, symdefs do. */
|
needs to be free()'d. For an output archive, symdefs do. */
|
||||||
|
|
||||||
@ -473,7 +479,8 @@ extern bfd_boolean _bfd_link_hash_table_init
|
|||||||
(struct bfd_link_hash_table *, bfd *,
|
(struct bfd_link_hash_table *, bfd *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
|
|
||||||
/* Generic link hash table creation routine. */
|
/* Generic link hash table creation routine. */
|
||||||
extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
|
extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD COFF object file private structure.
|
/* BFD COFF object file private structure.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
|
|
||||||
@ -421,7 +421,8 @@ struct coff_debug_merge_hash_table
|
|||||||
/* Initialize a COFF debug merge hash table. */
|
/* Initialize a COFF debug merge hash table. */
|
||||||
|
|
||||||
#define coff_debug_merge_hash_table_init(table) \
|
#define coff_debug_merge_hash_table_init(table) \
|
||||||
(bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc))
|
(bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
|
||||||
|
sizeof (struct coff_debug_merge_hash_entry)))
|
||||||
|
|
||||||
/* Free a COFF debug merge hash table. */
|
/* Free a COFF debug merge hash table. */
|
||||||
|
|
||||||
@ -537,7 +538,8 @@ extern bfd_boolean _bfd_coff_link_hash_table_init
|
|||||||
(struct coff_link_hash_table *, bfd *,
|
(struct coff_link_hash_table *, bfd *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
|
extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
|
||||||
(bfd *);
|
(bfd *);
|
||||||
extern const char *_bfd_coff_internal_syment_name
|
extern const char *_bfd_coff_internal_syment_name
|
||||||
|
@ -425,7 +425,8 @@ struct coff_debug_merge_hash_table
|
|||||||
/* Initialize a COFF debug merge hash table. */
|
/* Initialize a COFF debug merge hash table. */
|
||||||
|
|
||||||
#define coff_debug_merge_hash_table_init(table) \
|
#define coff_debug_merge_hash_table_init(table) \
|
||||||
(bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc))
|
(bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
|
||||||
|
sizeof (struct coff_debug_merge_hash_entry)))
|
||||||
|
|
||||||
/* Free a COFF debug merge hash table. */
|
/* Free a COFF debug merge hash table. */
|
||||||
|
|
||||||
@ -541,7 +542,8 @@ extern bfd_boolean _bfd_coff_link_hash_table_init
|
|||||||
(struct coff_link_hash_table *, bfd *,
|
(struct coff_link_hash_table *, bfd *,
|
||||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *));
|
const char *),
|
||||||
|
unsigned int);
|
||||||
extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
|
extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
|
||||||
(bfd *);
|
(bfd *);
|
||||||
extern const char *_bfd_coff_internal_syment_name
|
extern const char *_bfd_coff_internal_syment_name
|
||||||
|
22
bfd/linker.c
22
bfd/linker.c
@ -1,6 +1,6 @@
|
|||||||
/* linker.c -- BFD linker routines
|
/* linker.c -- BFD linker routines
|
||||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
2003, 2004, 2005 Free Software Foundation, Inc.
|
2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support
|
Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -472,14 +472,15 @@ _bfd_link_hash_table_init
|
|||||||
bfd *abfd,
|
bfd *abfd,
|
||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
table->creator = abfd->xvec;
|
table->creator = abfd->xvec;
|
||||||
table->undefs = NULL;
|
table->undefs = NULL;
|
||||||
table->undefs_tail = NULL;
|
table->undefs_tail = NULL;
|
||||||
table->type = bfd_link_generic_hash_table;
|
table->type = bfd_link_generic_hash_table;
|
||||||
|
|
||||||
return bfd_hash_table_init (&table->table, newfunc);
|
return bfd_hash_table_init (&table->table, newfunc, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look up a symbol in a link hash table. If follow is TRUE, we
|
/* Look up a symbol in a link hash table. If follow is TRUE, we
|
||||||
@ -709,7 +710,8 @@ _bfd_generic_link_hash_table_create (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! _bfd_link_hash_table_init (&ret->root, abfd,
|
if (! _bfd_link_hash_table_init (&ret->root, abfd,
|
||||||
_bfd_generic_link_hash_newfunc))
|
_bfd_generic_link_hash_newfunc,
|
||||||
|
sizeof (struct generic_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -901,9 +903,10 @@ archive_hash_table_init
|
|||||||
(struct archive_hash_table *table,
|
(struct archive_hash_table *table,
|
||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
return bfd_hash_table_init (&table->table, newfunc);
|
return bfd_hash_table_init (&table->table, newfunc, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look up an entry in an archive hash table. */
|
/* Look up an entry in an archive hash table. */
|
||||||
@ -981,7 +984,8 @@ _bfd_generic_link_add_archive_symbols
|
|||||||
|
|
||||||
/* In order to quickly determine whether an symbol is defined in
|
/* In order to quickly determine whether an symbol is defined in
|
||||||
this archive, we build a hash table of the symbols. */
|
this archive, we build a hash table of the symbols. */
|
||||||
if (! archive_hash_table_init (&arsym_hash, archive_hash_newfunc))
|
if (! archive_hash_table_init (&arsym_hash, archive_hash_newfunc,
|
||||||
|
sizeof (struct archive_hash_entry)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
for (arsym = arsyms, indx = 0; arsym < arsym_end; arsym++, indx++)
|
for (arsym = arsyms, indx = 0; arsym < arsym_end; arsym++, indx++)
|
||||||
{
|
{
|
||||||
@ -2952,7 +2956,9 @@ bfd_boolean
|
|||||||
bfd_section_already_linked_table_init (void)
|
bfd_section_already_linked_table_init (void)
|
||||||
{
|
{
|
||||||
return bfd_hash_table_init_n (&_bfd_section_already_linked_table,
|
return bfd_hash_table_init_n (&_bfd_section_already_linked_table,
|
||||||
already_linked_newfunc, 42);
|
already_linked_newfunc,
|
||||||
|
sizeof (struct bfd_section_already_linked_hash_entry),
|
||||||
|
42);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for linux flavored m68k a.out binaries.
|
/* BFD back-end for linux flavored m68k a.out binaries.
|
||||||
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
|
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
|
||||||
2003, 2004 Free Software Foundation, Inc.
|
2003, 2004, 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -235,8 +235,9 @@ linux_link_hash_table_create (abfd)
|
|||||||
bfd_set_error (bfd_error_no_memory);
|
bfd_set_error (bfd_error_no_memory);
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
}
|
}
|
||||||
if (! NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
if (!NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
||||||
linux_link_hash_newfunc))
|
linux_link_hash_newfunc,
|
||||||
|
sizeof (struct linux_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* SEC_MERGE support.
|
/* SEC_MERGE support.
|
||||||
Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
Copyright 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
|
Free Software Foundation, Inc.
|
||||||
Written by Jakub Jelinek <jakub@redhat.com>.
|
Written by Jakub Jelinek <jakub@redhat.com>.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -242,7 +243,7 @@ sec_merge_init (unsigned int entsize, bfd_boolean strings)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (! bfd_hash_table_init_n (&table->table, sec_merge_hash_newfunc,
|
if (! bfd_hash_table_init_n (&table->table, sec_merge_hash_newfunc,
|
||||||
16699))
|
sizeof (struct sec_merge_hash_entry), 16699))
|
||||||
{
|
{
|
||||||
free (table);
|
free (table);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* opncls.c -- open and close a BFD.
|
/* opncls.c -- open and close a BFD.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
|
||||||
2001, 2002, 2003, 2004, 2005
|
2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
@ -71,7 +71,7 @@ _bfd_new_bfd (void)
|
|||||||
nbfd->iostream = NULL;
|
nbfd->iostream = NULL;
|
||||||
nbfd->where = 0;
|
nbfd->where = 0;
|
||||||
if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc,
|
if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc,
|
||||||
251))
|
sizeof (struct section_hash_entry), 251))
|
||||||
{
|
{
|
||||||
free (nbfd);
|
free (nbfd);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
14
bfd/pdp11.c
14
bfd/pdp11.c
@ -1,5 +1,6 @@
|
|||||||
/* BFD back-end for PDP-11 a.out binaries.
|
/* BFD back-end for PDP-11 a.out binaries.
|
||||||
Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
Copyright 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -2446,9 +2447,10 @@ NAME (aout, link_hash_table_init) (struct aout_link_hash_table *table,
|
|||||||
bfd *abfd,
|
bfd *abfd,
|
||||||
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
|
||||||
struct bfd_hash_table *,
|
struct bfd_hash_table *,
|
||||||
const char *))
|
const char *),
|
||||||
|
unsigned int entsize)
|
||||||
{
|
{
|
||||||
return _bfd_link_hash_table_init (&table->root, abfd, newfunc);
|
return _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create an a.out link hash table. */
|
/* Create an a.out link hash table. */
|
||||||
@ -2463,7 +2465,8 @@ NAME (aout, link_hash_table_create) (bfd *abfd)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! NAME (aout, link_hash_table_init) (ret, abfd,
|
if (! NAME (aout, link_hash_table_init) (ret, abfd,
|
||||||
NAME (aout, link_hash_newfunc)))
|
NAME (aout, link_hash_newfunc),
|
||||||
|
sizeof (struct aout_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -3657,8 +3660,9 @@ NAME (aout, final_link) (bfd *abfd,
|
|||||||
aout_info.symbol_map = NULL;
|
aout_info.symbol_map = NULL;
|
||||||
aout_info.output_syms = NULL;
|
aout_info.output_syms = NULL;
|
||||||
|
|
||||||
if (! bfd_hash_table_init_n (&aout_info.includes.root,
|
if (!bfd_hash_table_init_n (&aout_info.includes.root,
|
||||||
aout_link_includes_newfunc,
|
aout_link_includes_newfunc,
|
||||||
|
sizeof (struct aout_link_includes_entry),
|
||||||
251))
|
251))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
includes_hash_initialized = TRUE;
|
includes_hash_initialized = TRUE;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Object file "section" support for the BFD library.
|
/* Object file "section" support for the BFD library.
|
||||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005
|
2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
|
|
||||||
@ -713,12 +713,6 @@ STD_SECTION (bfd_abs_section, 0, bfd_abs_symbol, BFD_ABS_SECTION_NAME, 2);
|
|||||||
STD_SECTION (bfd_ind_section, 0, bfd_ind_symbol, BFD_IND_SECTION_NAME, 3);
|
STD_SECTION (bfd_ind_section, 0, bfd_ind_symbol, BFD_IND_SECTION_NAME, 3);
|
||||||
#undef STD_SECTION
|
#undef STD_SECTION
|
||||||
|
|
||||||
struct section_hash_entry
|
|
||||||
{
|
|
||||||
struct bfd_hash_entry root;
|
|
||||||
asection section;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Initialize an entry in the section hash table. */
|
/* Initialize an entry in the section hash table. */
|
||||||
|
|
||||||
struct bfd_hash_entry *
|
struct bfd_hash_entry *
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for linux flavored sparc a.out binaries.
|
/* BFD back-end for linux flavored sparc a.out binaries.
|
||||||
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
|
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
|
||||||
2003, 2004 Free Software Foundation, Inc.
|
2003, 2004, 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
|
||||||
@ -232,8 +232,9 @@ linux_link_hash_table_create (abfd)
|
|||||||
ret = (struct linux_link_hash_table *) bfd_malloc (amt);
|
ret = (struct linux_link_hash_table *) bfd_malloc (amt);
|
||||||
if (ret == (struct linux_link_hash_table *) NULL)
|
if (ret == (struct linux_link_hash_table *) NULL)
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
if (! NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
if (!NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
||||||
linux_link_hash_newfunc))
|
linux_link_hash_newfunc,
|
||||||
|
sizeof (struct linux_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return (struct bfd_link_hash_table *) NULL;
|
return (struct bfd_link_hash_table *) NULL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Stabs in sections linking support.
|
/* Stabs in sections linking support.
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
Free Software Foundation, Inc.
|
2006 Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -195,7 +195,8 @@ _bfd_link_section_stabs (bfd *abfd,
|
|||||||
/* Make sure the first byte is zero. */
|
/* Make sure the first byte is zero. */
|
||||||
(void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
|
(void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
|
||||||
if (! bfd_hash_table_init (&sinfo->includes,
|
if (! bfd_hash_table_init (&sinfo->includes,
|
||||||
stab_link_includes_newfunc))
|
stab_link_includes_newfunc,
|
||||||
|
sizeof (struct stab_link_includes_entry)))
|
||||||
goto error_return;
|
goto error_return;
|
||||||
sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
|
sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
|
||||||
if (sinfo->stabstr == NULL)
|
if (sinfo->stabstr == NULL)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD backend for SunOS binaries.
|
/* BFD backend for SunOS binaries.
|
||||||
Copyright 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
Copyright 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||||
2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Cygnus Support.
|
Written by Cygnus Support.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -679,8 +679,9 @@ sunos_link_hash_table_create (bfd *abfd)
|
|||||||
ret = bfd_malloc (amt);
|
ret = bfd_malloc (amt);
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! NAME (aout, link_hash_table_init) (&ret->root, abfd,
|
if (!NAME (aout, link_hash_table_init) (&ret->root, abfd,
|
||||||
sunos_link_hash_newfunc))
|
sunos_link_hash_newfunc,
|
||||||
|
sizeof (struct sunos_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* vms.c -- BFD back-end for VAX (openVMS/VAX) and
|
/* vms.c -- BFD back-end for VAX (openVMS/VAX) and
|
||||||
EVAX (openVMS/Alpha) files.
|
EVAX (openVMS/Alpha) files.
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
Free Software Foundation, Inc.
|
2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Written by Klaus K"ampf (kkaempf@rmi.de)
|
Written by Klaus K"ampf (kkaempf@rmi.de)
|
||||||
|
|
||||||
@ -77,7 +77,8 @@ vms_initialize (bfd * abfd)
|
|||||||
if (PRIV (vms_symbol_table) == NULL)
|
if (PRIV (vms_symbol_table) == NULL)
|
||||||
goto error_ret1;
|
goto error_ret1;
|
||||||
|
|
||||||
if (!bfd_hash_table_init (PRIV (vms_symbol_table), _bfd_vms_hash_newfunc))
|
if (!bfd_hash_table_init (PRIV (vms_symbol_table), _bfd_vms_hash_newfunc,
|
||||||
|
sizeof (vms_symbol_entry)))
|
||||||
goto error_ret1;
|
goto error_ret1;
|
||||||
|
|
||||||
amt = sizeof (struct location_struct) * LOCATION_SAVE_SIZE;
|
amt = sizeof (struct location_struct) * LOCATION_SAVE_SIZE;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* POWER/PowerPC XCOFF linker support.
|
/* POWER/PowerPC XCOFF linker support.
|
||||||
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
Free Software Foundation, Inc.
|
2005, 2006 Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor <ian@cygnus.com>, Cygnus Support.
|
Written by Ian Lance Taylor <ian@cygnus.com>, Cygnus Support.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -444,7 +444,8 @@ _bfd_xcoff_bfd_link_hash_table_create (bfd *abfd)
|
|||||||
ret = bfd_malloc (amt);
|
ret = bfd_malloc (amt);
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (! _bfd_link_hash_table_init (&ret->root, abfd, xcoff_link_hash_newfunc))
|
if (!_bfd_link_hash_table_init (&ret->root, abfd, xcoff_link_hash_newfunc,
|
||||||
|
sizeof (struct xcoff_link_hash_entry)))
|
||||||
{
|
{
|
||||||
free (ret);
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2006-03-16 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
PR 2434
|
||||||
|
* ieee.c (write_ieee_debugging_info): Adjust bfd_hash_table_init calls.
|
||||||
|
* wrstabs.c (write_stabs_in_sections_debugging_info): Likewise.
|
||||||
|
|
||||||
2006-03-13 Ben Elliston <bje@au.ibm.com>
|
2006-03-13 Ben Elliston <bje@au.ibm.com>
|
||||||
|
|
||||||
* bucomm.c (display_target_list): Make local variable `a' to be of
|
* bucomm.c (display_target_list): Make local variable `a' to be of
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* ieee.c -- Read and write IEEE-695 debugging information.
|
/* ieee.c -- Read and write IEEE-695 debugging information.
|
||||||
Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003
|
Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor <ian@cygnus.com>.
|
Written by Ian Lance Taylor <ian@cygnus.com>.
|
||||||
|
|
||||||
@ -4594,8 +4594,10 @@ write_ieee_debugging_info (bfd *abfd, void *dhandle)
|
|||||||
info.type_indx = 256;
|
info.type_indx = 256;
|
||||||
info.name_indx = 32;
|
info.name_indx = 32;
|
||||||
|
|
||||||
if (! bfd_hash_table_init (&info.typedefs.root, ieee_name_type_newfunc)
|
if (!bfd_hash_table_init (&info.typedefs.root, ieee_name_type_newfunc,
|
||||||
|| ! bfd_hash_table_init (&info.tags.root, ieee_name_type_newfunc))
|
sizeof (struct ieee_name_type_hash_entry))
|
||||||
|
|| !bfd_hash_table_init (&info.tags.root, ieee_name_type_newfunc,
|
||||||
|
sizeof (struct ieee_name_type_hash_entry)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (! ieee_init_buffer (&info, &info.global_types)
|
if (! ieee_init_buffer (&info, &info.global_types)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* wrstabs.c -- Output stabs debugging information
|
/* wrstabs.c -- Output stabs debugging information
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor <ian@cygnus.com>.
|
Written by Ian Lance Taylor <ian@cygnus.com>.
|
||||||
|
|
||||||
@ -480,8 +480,10 @@ write_stabs_in_sections_debugging_info (bfd *abfd, void *dhandle,
|
|||||||
/* Reserve 1 byte for a null byte. */
|
/* Reserve 1 byte for a null byte. */
|
||||||
info.strings_size = 1;
|
info.strings_size = 1;
|
||||||
|
|
||||||
if (! bfd_hash_table_init (&info.strhash.table, string_hash_newfunc)
|
if (!bfd_hash_table_init (&info.strhash.table, string_hash_newfunc,
|
||||||
|| ! bfd_hash_table_init (&info.typedef_hash.table, string_hash_newfunc))
|
sizeof (struct string_hash_entry))
|
||||||
|
|| !bfd_hash_table_init (&info.typedef_hash.table, string_hash_newfunc,
|
||||||
|
sizeof (struct string_hash_entry)))
|
||||||
{
|
{
|
||||||
non_fatal ("bfd_hash_table_init_failed: %s",
|
non_fatal ("bfd_hash_table_init_failed: %s",
|
||||||
bfd_errmsg (bfd_get_error ()));
|
bfd_errmsg (bfd_get_error ()));
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2006-03-16 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
PR 2434
|
||||||
|
* ldcref.c (add_cref): Adjust bfd_hash_table_init calls.
|
||||||
|
* ldlang.c (output_statement_table_init, lang_init): Likewise.
|
||||||
|
* ldmain.c (add_ysym, add_wrap, add_keepsyms_file): Likewise.
|
||||||
|
(undefined_symbol): Likewise.
|
||||||
|
|
||||||
2006-03-07 Richard Sandiford <richard@codesourcery.com>
|
2006-03-07 Richard Sandiford <richard@codesourcery.com>
|
||||||
Daniel Jacobowitz <dan@codesourcery.com>
|
Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
Zack Weinberg <zack@codesourcery.com>
|
Zack Weinberg <zack@codesourcery.com>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* ldcref.c -- output a cross reference table
|
/* ldcref.c -- output a cross reference table
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor <ian@cygnus.com>
|
Written by Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
@ -149,7 +149,8 @@ add_cref (const char *name,
|
|||||||
|
|
||||||
if (! cref_initialized)
|
if (! cref_initialized)
|
||||||
{
|
{
|
||||||
if (! bfd_hash_table_init (&cref_table.root, cref_hash_newfunc))
|
if (!bfd_hash_table_init (&cref_table.root, cref_hash_newfunc,
|
||||||
|
sizeof (struct cref_hash_entry)))
|
||||||
einfo (_("%X%P: bfd_hash_table_init of cref table failed: %E\n"));
|
einfo (_("%X%P: bfd_hash_table_init of cref table failed: %E\n"));
|
||||||
cref_initialized = TRUE;
|
cref_initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
12
ld/ldlang.c
12
ld/ldlang.c
@ -1,6 +1,6 @@
|
|||||||
/* Linker command language support.
|
/* Linker command language support.
|
||||||
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||||
2001, 2002, 2003, 2004, 2005
|
2001, 2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GLD, the Gnu Linker.
|
This file is part of GLD, the Gnu Linker.
|
||||||
@ -933,8 +933,10 @@ output_statement_newfunc (struct bfd_hash_entry *entry,
|
|||||||
static void
|
static void
|
||||||
output_statement_table_init (void)
|
output_statement_table_init (void)
|
||||||
{
|
{
|
||||||
if (! bfd_hash_table_init_n (&output_statement_table,
|
if (!bfd_hash_table_init_n (&output_statement_table,
|
||||||
output_statement_newfunc, 61))
|
output_statement_newfunc,
|
||||||
|
sizeof (struct output_statement_hash_entry),
|
||||||
|
61))
|
||||||
einfo (_("%P%F: can not create hash table: %E\n"));
|
einfo (_("%P%F: can not create hash table: %E\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -974,7 +976,9 @@ lang_init (void)
|
|||||||
of code-complexity here in ld, besides the initialization which just
|
of code-complexity here in ld, besides the initialization which just
|
||||||
looks like other code here. */
|
looks like other code here. */
|
||||||
if (!bfd_hash_table_init_n (&lang_definedness_table,
|
if (!bfd_hash_table_init_n (&lang_definedness_table,
|
||||||
lang_definedness_newfunc, 3))
|
lang_definedness_newfunc,
|
||||||
|
sizeof (struct lang_definedness_hash_entry),
|
||||||
|
3))
|
||||||
einfo (_("%P%F: can not create hash table: %E\n"));
|
einfo (_("%P%F: can not create hash table: %E\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
ld/ldmain.c
14
ld/ldmain.c
@ -1,6 +1,6 @@
|
|||||||
/* Main program of GNU linker.
|
/* Main program of GNU linker.
|
||||||
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||||
2002, 2003, 2004, 2005
|
2002, 2003, 2004, 2005, 2006
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Steve Chamberlain steve@cygnus.com
|
Written by Steve Chamberlain steve@cygnus.com
|
||||||
|
|
||||||
@ -777,8 +777,9 @@ add_ysym (const char *name)
|
|||||||
if (link_info.notice_hash == NULL)
|
if (link_info.notice_hash == NULL)
|
||||||
{
|
{
|
||||||
link_info.notice_hash = xmalloc (sizeof (struct bfd_hash_table));
|
link_info.notice_hash = xmalloc (sizeof (struct bfd_hash_table));
|
||||||
if (! bfd_hash_table_init_n (link_info.notice_hash,
|
if (!bfd_hash_table_init_n (link_info.notice_hash,
|
||||||
bfd_hash_newfunc,
|
bfd_hash_newfunc,
|
||||||
|
sizeof (struct bfd_hash_entry),
|
||||||
61))
|
61))
|
||||||
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
|
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
|
||||||
}
|
}
|
||||||
@ -795,8 +796,9 @@ add_wrap (const char *name)
|
|||||||
if (link_info.wrap_hash == NULL)
|
if (link_info.wrap_hash == NULL)
|
||||||
{
|
{
|
||||||
link_info.wrap_hash = xmalloc (sizeof (struct bfd_hash_table));
|
link_info.wrap_hash = xmalloc (sizeof (struct bfd_hash_table));
|
||||||
if (! bfd_hash_table_init_n (link_info.wrap_hash,
|
if (!bfd_hash_table_init_n (link_info.wrap_hash,
|
||||||
bfd_hash_newfunc,
|
bfd_hash_newfunc,
|
||||||
|
sizeof (struct bfd_hash_entry),
|
||||||
61))
|
61))
|
||||||
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
|
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
|
||||||
}
|
}
|
||||||
@ -827,7 +829,8 @@ add_keepsyms_file (const char *filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
link_info.keep_hash = xmalloc (sizeof (struct bfd_hash_table));
|
link_info.keep_hash = xmalloc (sizeof (struct bfd_hash_table));
|
||||||
if (! bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc))
|
if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc,
|
||||||
|
sizeof (struct bfd_hash_entry)))
|
||||||
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
|
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
|
||||||
|
|
||||||
bufsize = 100;
|
bufsize = 100;
|
||||||
@ -1326,7 +1329,8 @@ undefined_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
|||||||
if (hash == NULL)
|
if (hash == NULL)
|
||||||
{
|
{
|
||||||
hash = xmalloc (sizeof (struct bfd_hash_table));
|
hash = xmalloc (sizeof (struct bfd_hash_table));
|
||||||
if (! bfd_hash_table_init (hash, bfd_hash_newfunc))
|
if (!bfd_hash_table_init (hash, bfd_hash_newfunc,
|
||||||
|
sizeof (struct bfd_hash_entry)))
|
||||||
einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
|
einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user