From eaae8ded6211112d8b3f31b095433d660bcc5e59 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 15 Jul 2005 12:18:01 +0000 Subject: [PATCH] * elflink.c (bfd_elf_record_link_assignment): Remove output_bfd param. (_bfd_elf_provide_symbol): Allow redefinition of weak syms and those defined in output sections. Call bfd_elf_record_link_assignment. * bfd-in.h (bfd_elf_record_link_assignment): Update prototype. * bfd-in2.h: Regenerate. --- bfd/ChangeLog | 8 ++++++++ bfd/bfd-in.h | 2 +- bfd/bfd-in2.h | 2 +- bfd/elflink.c | 10 +++++++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a078260..7d836d1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2005-07-15 Alan Modra + + * elflink.c (bfd_elf_record_link_assignment): Remove output_bfd param. + (_bfd_elf_provide_symbol): Allow redefinition of weak syms and those + defined in output sections. Call bfd_elf_record_link_assignment. + * bfd-in.h (bfd_elf_record_link_assignment): Update prototype. + * bfd-in2.h: Regenerate. + 2005-07-14 Jim Blandy Add support for m32c-*-elf (Renesas m32c and m16c). diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 34188d1..33e19ea 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -633,7 +633,7 @@ enum dynamic_lib_link_class { }; extern bfd_boolean bfd_elf_record_link_assignment - (bfd *, struct bfd_link_info *, const char *, bfd_boolean); + (struct bfd_link_info *, const char *, bfd_boolean); extern struct bfd_link_needed_list *bfd_elf_get_needed_list (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_elf_get_bfd_needed_list diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 96cf124..062a819 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -640,7 +640,7 @@ enum dynamic_lib_link_class { }; extern bfd_boolean bfd_elf_record_link_assignment - (bfd *, struct bfd_link_info *, const char *, bfd_boolean); + (struct bfd_link_info *, const char *, bfd_boolean); extern struct bfd_link_needed_list *bfd_elf_get_needed_list (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_elf_get_bfd_needed_list diff --git a/bfd/elflink.c b/bfd/elflink.c index 791575b..7307c15 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -433,8 +433,7 @@ bfd_elf_link_record_dynamic_symbol (struct bfd_link_info *info, this in case some dynamic object refers to this symbol. */ bfd_boolean -bfd_elf_record_link_assignment (bfd *output_bfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info, +bfd_elf_record_link_assignment (struct bfd_link_info *info, const char *name, bfd_boolean provide) { @@ -9843,8 +9842,13 @@ _bfd_elf_provide_symbol (struct bfd_link_info *info, const char *name, { struct elf_link_hash_entry *h; + bfd_elf_record_link_assignment (info, name, TRUE); + h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); - if (h != NULL && !h->def_regular) + if (h != NULL + && !(h->root.type == bfd_link_hash_defined + && h->root.u.def.section != NULL + && h->root.u.def.section != h->root.u.def.section->output_section)) bfd_elf_set_symbol (h, val, s); } -- 2.7.4