From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Received: (qmail 27618 invoked from network); 11 Jan 2003 20:54:39 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by 209.249.29.67 with SMTP; 11 Jan 2003 20:54:39 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 18XUWw-0007Nw-00; Sat, 11 Jan 2003 16:55:06 -0600 Received: from drow by nevyn.them.org with local (Exim 3.36 #1 (Debian)) id 18XSec-0001t7-00; Sat, 11 Jan 2003 15:54:54 -0500 Date: Sat, 11 Jan 2003 20:54:00 -0000 From: Daniel Jacobowitz To: Andrew Cagney Cc: gdb-patches@sources.redhat.com Subject: Re: [unwind-20030108-branch] Add sentinel-frame + misc Message-ID: <20030111205454.GA7058@nevyn.them.org> Mail-Followup-To: Andrew Cagney , gdb-patches@sources.redhat.com References: <3E1E2D1B.5020100@redhat.com> <3E1E6C23.8050407@redhat.com> <20030110213400.GA8623@nevyn.them.org> <3E205F17.3060906@redhat.com> <20030111183437.GB1930@nevyn.them.org> <3E2081C3.1080504@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3E2081C3.1080504@redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-01/txt/msg00459.txt.bz2 On Sat, Jan 11, 2003 at 03:42:43PM -0500, Andrew Cagney wrote: > > >It's hardly a bug; more of a deep interface shortcoming. Consider: > > Which is a bug. > > >File A declares a type 'struct foo'. > >File B declares a type 'struct foo'. > >Header C forward declares 'struct foo;' and 'struct foo *get_foo ()'. > >File D includes Header C and uses 'get_foo'. > > > >I'm sitting in File D, and I want to look in the debugger at this > >opaque unwind cache. There's no possible way to associate it with > >either struct foo. > > > >That's why I think the construct should be avoided; if one of them is > >A_foo and the other is B_foo, and we do a bit of casting, then at least > >I can dump the one I want. > > Shouldn't something like: > ('File A:struct foo' *) get_foo() > work? Even: > (gdb) list 'File A' > (gdb) print *(struct foo) get_foo() It would be nice if we defined a syntax for this, preferably one which won't conflict with everything under the sun. Neither of the above work, by the way. > How does GDB differentiate between variables and enum's when they have > multiple declarations? Badly? If I refer to a variable declared in File D, I always get the version from File B; no matter what cast or listing games I play. If I print a variable in File A it gets the type from File A, but once I'm outside that file, no beans. Hmm, even worse: before loading symbols for Files A or B explicitly, I get the type from File A; once symbols are loaded I get the type from File B. I suppose we could work around this for debugging purposes by: File A: typedef struct foo foobaz; File B: typedef struct foo foobar; Which does work "correctly" in the debugger; so my objection is withdrawn. We do need to solve this problem someday. I've put together a testcase; I'll put it in GNATS later. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer