Name of symbol missing when printing global variable's address
authorJoel Brobecker <brobecker@gnat.com>
Tue, 11 Sep 2012 21:26:16 +0000 (21:26 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Tue, 11 Sep 2012 21:26:16 +0000 (21:26 +0000)
commitd9eaeb59a428f57acfe2877e3d21df5fac59fbe3
treea7f661b937237d77fe2f15225c182eb5a0bc7de0
parenta83e9154c2f2a7c2c3a399c25c3931560a990d40
Name of symbol missing when printing global variable's address

The build_address_symbolic funnction filters out data symbols if
their size is set to zero.  But the problem is that the COFF symbol
table (for instance) does not provide any size information, leaving
the size to its default value of zero, thus always triggering
the filter.

This shows up when trying to print the address of a global variable
when debugging a Windows executable, for instance.

gdb/ChangeLog:

        * symtab.h (struct minimal_symbol) [has_size]: New field.
        (MSYMBOL_SIZE): Adjust to forbid macro from being used as lvalue.
        (SET_MSYMBOL_SIZE, MSYMBOL_HAS_SIZE): New macros.
        * printcmd.c (build_address_symbolic): Only filter out zero-sized
        minimal symbols if the symbol's size is actually known.
        * minsyms.c (prim_record_minimal_symbol_full): Adjust setting
        of msymbol's size field.  Add comment.
        * elfread.c (elf_symtab_read, elf_rel_plt_read): Use
        SET_MSYMBOL_SIZE to set the minimal symbol size.
gdb/ChangeLog
gdb/elfread.c
gdb/minsyms.c
gdb/printcmd.c
gdb/symtab.h