bug-gdb
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Displaying structure members named like C keywords.


From: Emilio Lopes
Subject: Re: Displaying structure members named like C keywords.
Date: Tue, 26 Aug 2014 13:45:50 +0200

Hello Sergio,

I was able to reproduce this issue on the host (x86_64 GNU/Linux)!

Here we go:

    $ cat gdb-reproducer.c
    #include <iostream>

    using std::cout;

    typedef struct {
            int rlevel;
            int complex;
    } param_t;

    int main(int argc, char *argv[]) {
            param_t foo;

            foo.rlevel = 4;
            foo.complex= foo.rlevel + 11;

            cout << "foo.complex: " << foo.complex << "\n";

            return(0);
    }

    $ g++ -Wall -ggdb3  gdb-reproducer.c && ./a.out
    foo.complex: 15

    $ gdb a.out
    GNU gdb (Debian 7.7.1+dfsg-3) 7.7.1
    Copyright (C) 2014 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from a.out...done.
    (gdb) b main
    Breakpoint 1 at 0x4007c6: file gdb-reproducer.c, line 13.
    (gdb) r
    Starting program: /home/lopes/projects/c/a.out

    Breakpoint 1, main (argc=1, argv=0x7fffffffe958) at gdb-reproducer.c:13
    13        foo.rlevel = 4;
    (gdb) n
    14        foo.complex= foo.rlevel + 11;
    (gdb) n
    16        cout << "foo.complex: " << foo.complex << "\n";
    (gdb) p foo
    $1 = {rlevel = 4, complex = 15}
    (gdb) ptype foo
    type = struct param_t {
        int rlevel;
        int complex;
    }
    (gdb) p foo.complex
    A syntax error in expression, near `'.
    (gdb) info shared
    From                To                  Syms Read   Shared Object Library
    0x00007ffff7ddcae0  0x00007ffff7df5170  Yes
/lib64/ld-linux-x86-64.so.2
                                            No          linux-vdso.so.1
    0x00007ffff7b2c8e0  0x00007ffff7b9480a  Yes
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
    0x00007ffff77d5580  0x00007ffff7840de6  Yes
/lib/x86_64-linux-gnu/libm.so.6
    0x00007ffff75bcab0  0x00007ffff75cc995  Yes
/lib/x86_64-linux-gnu/libgcc_s.so.1
    0x00007ffff72304a0  0x00007ffff735a613  Yes
/lib/x86_64-linux-gnu/libc.so.6
    (gdb) noshared
    (gdb) p foo.complex
    $2 = 15
    (gdb) p foo
    $3 = {rlevel = 4, complex = 15}
    (gdb) p foo.complex
    $4 = 15
    (gdb) shared libstdc.*
    Reading symbols from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20...done.
    done.
    Loaded symbols for /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    (gdb) p foo.complex
    A syntax error in expression, near `'.
    (gdb) p foo
    $5 = {rlevel = 4, complex = 15}
    (gdb) ptype foo
    type = struct param_t {
        int rlevel;
        int complex;
    }

It seems that something in the debug info of libstdc++ is causing the problem.

Some info about the system I'm using:

    $ uname -a
    Linux lopes 3.14-1-amd64 #1 SMP Debian 3.14.12-1 (2014-07-11)
x86_64 GNU/Linux
    $ g++ -v
    Using built-in specs.
    COLLECT_GCC=g++
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Debian
4.9.1-4' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.9 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre
--enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64
--with-arch-directory=amd64
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc
--enable-multiarch --with-arch-32=i586 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib
--with-tune=generic --enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 4.9.1 (Debian 4.9.1-4)
    $ dpkg -l | grep -F 'libstdc++'
    ii  libstdc++-4.9-dev:amd64 4.9.1-4          amd64            GNU
Standard C++ Library v3 (development files)
    ii  libstdc++6:amd64        4.9.1-4          amd64            GNU
Standard C++ Library v3
    ii  libstdc++6-4.9-dbg:amd6 4.9.1-4          amd64            GNU
Standard C++ Library v3 (debugging files)
    $ dpkg -l | grep -F 'gcc'
    ii  gcc                     4:4.9.0-4        amd64            GNU C compiler
    ii  gcc-4.7-base:amd64      4.7.4-2          amd64            GCC,
the GNU Compiler Collection (base package)
    ii  gcc-4.8                 4.8.3-7          amd64            GNU C compiler
    ii  gcc-4.8-base:amd64      4.8.3-7          amd64            GCC,
the GNU Compiler Collection (base package)
    ii  gcc-4.9                 4.9.1-4          amd64            GNU C compiler
    ii  gcc-4.9-base:amd64      4.9.1-4          amd64            GCC,
the GNU Compiler Collection (base package)
    ii  libgcc-4.8-dev:amd64    4.8.3-7          amd64            GCC
support library (development files)
    ii  libgcc-4.9-dev:amd64    4.9.1-4          amd64            GCC
support library (development files)
    ii  libgcc1:amd64           1:4.9.1-4        amd64            GCC
support library
    ii  libgcc1-dbg:amd64       1:4.9.1-4        amd64            GCC
support library (debug symbols)
    ii  linux-compiler-gcc-4.8- 3.14.15-2        amd64
Compiler for Linux on x86 (meta-package)

Please let me know if you can reproduce this.  I've also seen this
error when using GDB 7.8 and IIRC 7.6.

Thank you very much!

 Emílio



reply via email to

[Prev in Thread] Current Thread [Next in Thread]