From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28189 invoked by alias); 26 Aug 2003 13:44:20 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 28160 invoked from network); 26 Aug 2003 13:44:19 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 26 Aug 2003 13:44:19 -0000 Received: from drow by nevyn.them.org with local (Exim 4.20 #1 (Debian)) id 19re7O-0003Ls-WF for ; Tue, 26 Aug 2003 09:44:18 -0400 Date: Tue, 26 Aug 2003 13:44:00 -0000 From: Daniel Jacobowitz To: gdb@sources.redhat.com Subject: Re: New stabs with gcc HEAD Message-ID: <20030826134418.GA12859@nevyn.them.org> Mail-Followup-To: gdb@sources.redhat.com References: <200308261012.h7QACZgo022761@duracef.shout.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200308261012.h7QACZgo022761@duracef.shout.net> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-08/txt/msg00288.txt.bz2 On Tue, Aug 26, 2003 at 06:12:35AM -0400, Michael Elizabeth Chastain wrote: > [Argh! I sent this to gcc@sources.redhat.com because I was thinking of gcc. > But I really want to talk about the issue with gdb people first!] > > gcc HEAD changed its stabs and gdb is choking on the new stabs. > This happens with C++ and type "char *". > > The test case is pretty simple: > > char * dm_type_char_star (char *p) > { > return p; > } > > int main () > { > return 0; > } > > Compile this with "g++ -gstabs+" with an i386 target. > (It's important to use an i386 because the bug depends on > target-specific definition of __builtin_va_list). > > The old good stabs look like this: > > .stabs "char:t(0,2)=r(0,2);0;127;",128,0,0,0 > .stabs "__builtin_va_list:t(0,20)=*(0,2)",128,0,0,0 > .stabs "_Z17dm_type_char_starPc:F(0,24)=*(0,2)",36,0,2,_Z17dm_type_char_starPc > > There is a stab for "char" type. Then the types that use "char *" > refer back to (0,2). > > The new bad stabs look like this: > > .stabs "__builtin_va_list:t(0,10)=*(0,11)=r(0,11);0;127;",128,0,0,0 > .stabs "_Z17dm_type_char_starPc:F(0,13)=*(0,11)",36,0,2,_Z17dm_type_char_starPc > > There is no more stab for the builtin type "char". So > __builtin_va_list defines its own integral type as > (0,11) with no name, and then dm_type_char_star refers to it. > > The lack of a name means gdb isn't going to print "char". > In fact, gdb 5.3 gets unhappy: > > (gdb) print &'dm_type_char_star(char*)' > $1 = ( *(*)( > *)) 0x80482f4 > > gdb HEAD behaves the same way. > > Over in gcc land, I found the critical patch, so it ought to > be easy for gcc to revert their behavior if we ask them to. > (In fact I even patched my own compiler but the patch is probably > bogus). > > So my question is: should we enhance gdb to handle these stabs? > It would be painful, because there is no type name, so we would > have to infer from the "0;127" range that this is a "char". > Or should we push back on gcc to emit an explicit stab for > the "char" type? I'd say GCC was broken. What patch broke it? -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer