This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PR12760 plugin vs. warning syms
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Cc: "H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Mon, 16 May 2011 10:25:24 +0930
- Subject: PR12760 plugin vs. warning syms
I've committed this version of HJ's patch to fix the segfault caused
by having a NULL u.undef.abfd. I think this should be done even
though it's not a full fix for warning symbols.
PR ld/12760
* plugin.c (plugin_notice): Set u.undef.abfd for symbols made
undefweak.
Index: ld/plugin.c
===================================================================
RCS file: /cvs/src/src/ld/plugin.c,v
retrieving revision 1.33
diff -u -p -r1.33 plugin.c
--- ld/plugin.c 24 Apr 2011 10:02:14 -0000 1.33
+++ ld/plugin.c 15 May 2011 13:18:27 -0000
@@ -912,6 +912,8 @@ plugin_notice (struct bfd_link_info *inf
{
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 *inf
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. */
--
Alan Modra
Australia Development Lab, IBM