aboutsummaryrefslogtreecommitdiff
path: root/gdb/symtab.c
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2010-06-29 16:53:10 +0000
committerDoug Evans <dje@google.com>2010-06-29 16:53:10 +0000
commit254e6b9ed4abf109cb8399aa3f8f387f7eb2465c (patch)
tree2bc97c84786aa776590c3ff3c28dedb572e1d449 /gdb/symtab.c
parent6e70227d64c310278ef73303b2137a9997cb4c0f (diff)
downloadgdb-254e6b9ed4abf109cb8399aa3f8f387f7eb2465c.zip
gdb-254e6b9ed4abf109cb8399aa3f8f387f7eb2465c.tar.gz
gdb-254e6b9ed4abf109cb8399aa3f8f387f7eb2465c.tar.bz2
PR c++/11702
* NEWS: Add entry. * dwarf2read.c (dwarf2_add_field): If DW_AT_const_value is present, create a symbol for the field and record the value. (new_symbol): Handle DW_TAG_member. * gdbtypes.c (field_is_static): Remove FIXME. * symtab.c (search_symbols): When searching for VARIABLES_DOMAIN, only ignore LOC_CONST symbols that are enums. testsuite/ Test PR c++/11702. * gdb.cp/m-static.exp: Add testcase. * gdb.cp/m-static.h (gnu_obj_4): Add initialized static const member.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r--gdb/symtab.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c
index feb986f..9472c24 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -3057,10 +3057,15 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
if (file_matches (real_symtab->filename, files, nfiles)
&& ((regexp == NULL
|| re_exec (SYMBOL_NATURAL_NAME (sym)) != 0)
- && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (sym) != LOC_TYPEDEF
+ && ((kind == VARIABLES_DOMAIN
+ && SYMBOL_CLASS (sym) != LOC_TYPEDEF
&& SYMBOL_CLASS (sym) != LOC_UNRESOLVED
&& SYMBOL_CLASS (sym) != LOC_BLOCK
- && SYMBOL_CLASS (sym) != LOC_CONST)
+ /* LOC_CONST can be used for more than just enums,
+ e.g., c++ static const members.
+ We only want to skip enums here. */
+ && !(SYMBOL_CLASS (sym) == LOC_CONST
+ && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_ENUM))
|| (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (sym) == LOC_BLOCK)
|| (kind == TYPES_DOMAIN && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
{