I'm having trouble trying to display structure members with names like
C keywords.  GDB refuses to display the member called `complex' in
this case.

Here is the structure:

    (gdb) p g_global_paramv[37].info
    $27 = {
      complex = {
        paramc = 20,
        paramv = 0xd14f4 <_sys_opt>
      },
      cmd = {
        cmd_fct = 0x14,
        wrap = 0xd14f4 <_sys_opt>
      },
      alias = {
        type = 20,
        link = 0xd14f4 <_sys_opt>
      }
    }

Printing other members is no problem:

    (gdb) p g_global_paramv[37].info.cmd
    $28 = {
      cmd_fct = 0x14,
      wrap = 0xd14f4 <_sys_opt>
    }
    (gdb) p g_global_paramv[37].info.alias
    $29 = {
      type = 20,
      link = 0xd14f4 <_sys_opt>
    }

But trying to print the member `complex' results in an error:

    (gdb) p g_global_paramv[37].info.complex
    A syntax error in expression, near `complex'.

Note that the error message for non-existing members is different
depending if their names are C keywords (`long' and `int' => "syntax
error") or not (`foobar', `xyz' => "no member named ...").

    (gdb) p g_global_paramv[37].info.foobar
    There is no member named foobar.
    (gdb) p g_global_paramv[37].info.long
    A syntax error in expression, near `long'.
    (gdb) p g_global_paramv[37].info.int
    A syntax error in expression, near `int'.
    (gdb) p g_global_paramv[37].info.xyz
    There is no member named xyz.
    (gdb)

This happens using gdb-7.8 configured as following:

    (gdb) show version
    GNU gdb (GDB) 7.8
    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 "--host=x86_64-unknown-linux-gnu
--target=arm-cortexa8-linux-gnueabi".
    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".
    (gdb) show configuration
    This GDB was configured as follows:
       configure --host=x86_64-unknown-linux-gnu
--target=arm-cortexa8-linux-gnueabi
                 --with-auto-load-dir=$debugdir:$datadir/auto-load
                 --with-auto-load-safe-path=$debugdir:$datadir/auto-load
                 --with-expat
                 --with-gdb-datadir=/usr/local/share/gdb (relocatable)
                 --with-jit-reader-dir=/usr/local/lib/gdb (relocatable)
                 --without-libunwind-ia64
                 --with-lzma
                 --with-python=/usr
                 --without-guile
                 --with-separate-debug-dir=/usr/local/lib/debug (relocatable)
                 --with-zlib
                 --without-babeltrace

    ("Relocatable" means the directory can be moved with the GDB installation
    tree, and GDB will still find it.)

The code was compiled using:

    $ arm-cortexa8-linux-gnueabi-gcc --version
    arm-cortexa8-linux-gnueabi-gcc (OSELAS.Toolchain-2012.12.1
linaro-4.7-2012.11) 4.7.3 20121106 (prerelease)
    Copyright (C) 2012 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

GDB itself was compiled with:

    $ gcc --version
    gcc (Debian 4.9.0-7) 4.9.0
    Copyright (C) 2014 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Thank you very much!

 Emílio

_______________________________________________
bug-gdb mailing list
bug-gdb@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-gdb

Reply via email to