Index: dwarf2read.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2read.c,v retrieving revision 1.568 diff -u -p -r1.568 dwarf2read.c --- dwarf2read.c 9 Oct 2011 19:34:18 -0000 1.568 +++ dwarf2read.c 11 Oct 2011 18:24:49 -0000 @@ -3897,7 +3897,10 @@ partial_die_parent_scope (struct partial return NULL; } - if (parent->tag == DW_TAG_namespace + if (pdi->tag == DW_TAG_enumerator) + /* Enumerators should not get the name of the enumeration as a prefix. */ + parent->scope = grandparent_scope; + else if (parent->tag == DW_TAG_namespace || parent->tag == DW_TAG_module || parent->tag == DW_TAG_structure_type || parent->tag == DW_TAG_class_type @@ -3912,9 +3915,6 @@ partial_die_parent_scope (struct partial grandparent_scope, parent->name, 0, cu); } - else if (parent->tag == DW_TAG_enumerator) - /* Enumerators should not get the name of the enumeration as a prefix. */ - parent->scope = grandparent_scope; else { /* FIXME drow/2004-04-01: What should we be doing with Index: testsuite/gdb.cp/Makefile.in =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/Makefile.in,v retrieving revision 1.13 diff -u -p -r1.13 Makefile.in --- testsuite/gdb.cp/Makefile.in 22 Feb 2011 20:52:46 -0000 1.13 +++ testsuite/gdb.cp/Makefile.in 11 Oct 2011 18:24:51 -0000 @@ -7,9 +7,9 @@ EXECUTABLES = abstract-origin ambiguous exception expand-sals extern-c formatted-ref fpointer gdb1355 \ gdb2384 hang infcall-dlopen inherit koenig local m-data m-static \ mb-ctor mb-inline mb-templates member-ptr method misc namespace \ - namespace-nested-import nextoverthrow noparam nsdecl nsimport \ - nsnested nsnoimports nsrecurs nsstress nsusing operator oranking \ - overload overload-const ovldbreak pass-by-ref pr-1023 pr-1210 \ + namespace-enum namespace-nested-import nextoverthrow noparam nsdecl \ + nsimport nsnested nsnoimports nsrecurs nsstress nsusing operator \ + oranking overload overload-const ovldbreak pass-by-ref pr-1023 pr-1210 \ pr-574 pr10728 pr12028 pr9631 printmethod psmang ptype-cv-cp \ re-set-overloaded ref-typ ref-typ2 rtti shadow smartp temargs \ templates try_catch typedef-operator userdef virtbase virtfunc \ Index: testsuite/gdb.cp/namespace-enum-main.cc =================================================================== RCS file: testsuite/gdb.cp/namespace-enum-main.cc diff -N testsuite/gdb.cp/namespace-enum-main.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.cp/namespace-enum-main.cc 11 Oct 2011 18:24:51 -0000 @@ -0,0 +1,5 @@ +namespace foo { +int aglobal = 0; +} + +int main() {return 0;} Index: testsuite/gdb.cp/namespace-enum.cc =================================================================== RCS file: testsuite/gdb.cp/namespace-enum.cc diff -N testsuite/gdb.cp/namespace-enum.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.cp/namespace-enum.cc 11 Oct 2011 18:24:51 -0000 @@ -0,0 +1,8 @@ +enum A { A_A }; +enum A a = A_A; + +namespace foo +{ +enum B { B_B }; +enum B b = B_B; +}; Index: testsuite/gdb.cp/namespace-enum.exp =================================================================== RCS file: testsuite/gdb.cp/namespace-enum.exp diff -N testsuite/gdb.cp/namespace-enum.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.cp/namespace-enum.exp 11 Oct 2011 18:24:51 -0000 @@ -0,0 +1,42 @@ +# Copyright 2011 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set testfile namespace-enum +set srcfile0 ${testfile}.cc +set objfile0 ${testfile}.o +set srcfile1 ${testfile}-main.cc +set objfile1 ${testfile}-main.o +set binfile ${testfile} + +if { [gdb_compile "$srcdir/$subdir/$srcfile0" "$objdir/$subdir/$objfile0" object {debug c++}] != "" } { + untested namespace-enum.exp + return -1 +} + +if { [gdb_compile "$srcdir/$subdir/$srcfile1" "$objdir/$subdir/$objfile1" object {debug c++}] != "" } { + untested namespace-enum.exp + return -1 +} + +if { [gdb_compile "$objdir/$subdir/$objfile0 $objdir/$subdir/$objfile1" "${binfile}" executable {debug c++}] != "" } { + untested namespace-enum.exp + return -1 +} + +clean_restart ${binfile} +gdb_test "print foo::B::B_B" "`foo::B' is not defined as an aggregate type." +gdb_test "print foo::B_B" "foo::B_B" +gdb_test "print A_A" "A_A" +