* 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.
This commit is contained in:
Alan Modra 2005-07-15 12:18:01 +00:00
parent 265eeb58f3
commit eaae8ded62
4 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2005-07-15 Alan Modra <amodra@bigpond.net.au>
* 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 <jimb@redhat.com>
Add support for m32c-*-elf (Renesas m32c and m16c).

View File

@ -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

View File

@ -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

View File

@ -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);
}