This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH] prevent core dump for multiple def symbols
- From: Fergal Daly <fergal at esatclear dot ie>
- To: gdb-patches at sources dot redhat dot com
- Date: Fri, 11 Jun 2004 15:45:26 +0100
- Subject: [PATCH] prevent core dump for multiple def symbols
I have a .so file that makes gdb dump core. The problem shows up in
bfd/linker.c:1800
if (! ((*info->callbacks->multiple_definition)
(info, h->root.string, msec->owner, msec, mval,
abfd, section, value)))
return FALSE;
because info->callbacks->multiple_definition is null.
I have no idea if this patch is "the right thing" but it allows me to debug
my app. It just sets the callback to a dummy callback which returns TRUE
when the link_info is being created. I presume this is OK because all the
other callbacks are set to dummies too.
This was logged as bug 1668, hopefully this is a fix for it.
Patch below,
F
--- ./bfd/simple.c.orig 2004-06-11 15:32:40.620497552 +0100
+++ ./bfd/simple.c 2004-06-11 15:18:42.043980560 +0100
@@ -78,6 +78,19 @@
return TRUE;
}
+static bfd_boolean
+simple_dummy_multiple_definition (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
+ const char *name ATTRIBUTE_UNUSED,
+ bfd *obfd ATTRIBUTE_UNUSED,
+ asection *osec,
+ bfd_vma oval ATTRIBUTE_UNUSED,
+ bfd *nbfd ATTRIBUTE_UNUSED,
+ asection *nsec ATTRIBUTE_UNUSED,
+ bfd_vma nval ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
struct saved_output_info
{
bfd_vma offset;
@@ -171,6 +184,7 @@
callbacks.reloc_overflow = simple_dummy_reloc_overflow;
callbacks.reloc_dangerous = simple_dummy_reloc_dangerous;
callbacks.unattached_reloc = simple_dummy_unattached_reloc;
+ callbacks.multiple_definition = simple_dummy_multiple_definition;
memset (&link_order, 0, sizeof (link_order));
link_order.next = NULL;