Struct fields printed in a strange way

Ramana Radhakrishnan ramana.radhakrishnan@codito.com
Wed Nov 24 17:53:00 GMT 2004


Hi,

> Hello all,
>
> [ Apologies: I forgot to set the Reply-To field the first time.
> Please re-send your reply if it was lost inside the bit bucket. ]
Its still lost ! :-)

>
> gdb seems slightly confused when the name of a struct field is
> suffixed with "__0".
>
> $ cat foo.c
> struct foo { double x__0, y__0, z__1; } bar;
>
> int main(void) { return 0; }
>
> $ gcc-3.3.2 -Wall -ansi -pedantic -g3 foo.c

I was able to repeat this with

[ramana@numenor gdb]$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit
--host=i386-redhat-linux
Thread model: posix
gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1)

and


GNU gdb 6.3.50_2004-11-23-cvs

>
> $ gdb a.out
> GNU gdb 6.0-2mdk (Mandrake Linux)
> Copyright 2003 Free Software Foundation, Inc.
> [...]
> This GDB was configured as "i586-mandrake-linux-gnu"...Using host
> libthread_db library "/lib/tls/libthread_db.so.1".
>
> (gdb) print bar
> $1 = {::x(void) = 0, ::y(void) = 0, z__1 = 0}
>
> (gdb) show language
> The current source language is "auto; currently c".
>
> Why is x__0 changed to ::x(void)? Is the "__0" suffix reserved in gdb?


This appears to be due to the way in which the structs are handled in
c-valprint.c . The demangler gets called here because the function
c_val_print prints the structure fields using the printer from the c++
language implementation. Should there not be a C equivalent for this ?
This btw is from yesterday's CVS sources.



cheers
Ramana





>
> --
> Regards, Grumble
>


----
Ramana Radhakrishnan
GNU Tools.
Codito Technologies



More information about the Gdb mailing list