From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8324 invoked by alias); 11 Jun 2004 14:53:48 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 8276 invoked from network); 11 Jun 2004 14:53:45 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sourceware.org with SMTP; 11 Jun 2004 14:53:45 -0000 Received: from drow by nevyn.them.org with local (Exim 4.34 #1 (Debian)) id 1BYnPZ-0006I5-RR; Fri, 11 Jun 2004 10:53:42 -0400 Date: Fri, 11 Jun 2004 14:53:00 -0000 From: Daniel Jacobowitz To: Fergal Daly , binutils@sources.redhat.com Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH] prevent core dump for multiple def symbols Message-ID: <20040611145341.GA24143@nevyn.them.org> Mail-Followup-To: Fergal Daly , binutils@sources.redhat.com, gdb-patches@sources.redhat.com References: <20040611144526.GF16613@dyn.fergaldaly.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040611144526.GF16613@dyn.fergaldaly.com> User-Agent: Mutt/1.5.5.1+cvs20040105i X-SW-Source: 2004-06/txt/msg00259.txt.bz2 The files in bfd/ are maintained as part of GNU Binutils, so you need to ask on the binutils list about this patch. It seems obvious and correct to me. Is multiple_definition a recent callback or did I just miss it when I wrote simple.c? [I won't even ask how you have a shared library with multiple definitions of a dynamic symbol.] On Fri, Jun 11, 2004 at 03:45:26PM +0100, Fergal Daly wrote: > 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; > -- Daniel Jacobowitz