From 8b25c274b06a5d594d7952e73740f5f20b83e507 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 16 May 2011 00:58:11 +0000 Subject: PR ld/12760 * plugin.c (plugin_notice): Set u.undef.abfd for symbols made undefweak. --- ld/plugin.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'ld/plugin.c') diff --git a/ld/plugin.c b/ld/plugin.c index 8d9603bb9d..07c60686e5 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -912,6 +912,8 @@ plugin_notice (struct bfd_link_info *info, { if (h != NULL) { + bfd *sym_bfd; + /* No further processing if this def/ref is from an IR dummy BFD. */ if (is_ir_dummy_bfd (abfd)) return TRUE; @@ -928,10 +930,13 @@ plugin_notice (struct bfd_link_info *info, to be undefined. */ else if (((h->type == bfd_link_hash_defweak || h->type == bfd_link_hash_defined) - && is_ir_dummy_bfd (h->u.def.section->owner)) + && is_ir_dummy_bfd (sym_bfd = h->u.def.section->owner)) || (h->type == bfd_link_hash_common - && is_ir_dummy_bfd (h->u.c.p->section->owner))) - h->type = bfd_link_hash_undefweak; + && is_ir_dummy_bfd (sym_bfd = h->u.c.p->section->owner))) + { + h->type = bfd_link_hash_undefweak; + h->u.undef.abfd = sym_bfd; + } } /* Continue with cref/nocrossref/trace-sym processing. */ -- cgit v1.2.1