PR c++/8000:
	* dwarf2read.c (partial_die_parent_scope): Put enumeration type
	into parent scope, and enumerator into grandparent scope.
gdb/testsuite
	PR c++/8000:
	* gdb.cp/namespace.exp: Use new enum.  Fix line numbers in
	existing tests.
	* gdb.cp/namespace.cc (AAA::SomeEnum): New enum.
	(main): Use AAA::SomeEnum.
This commit is contained in:
Tom Tromey
2010-01-19 18:11:19 +00:00
parent 5696ab0b73
commit ceeb3d5ab6
5 changed files with 29 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2010-01-19 Tom Tromey <tromey@redhat.com>
PR c++/8000:
* dwarf2read.c (partial_die_parent_scope): Put enumeration type
into parent scope, and enumerator into grandparent scope.
2010-01-19 Joel Brobecker <brobecker@adacore.com> 2010-01-19 Joel Brobecker <brobecker@adacore.com>
* NEWS: Add entry for "set/show ada trust-PAD-over-XVS" commands. * NEWS: Add entry for "set/show ada trust-PAD-over-XVS" commands.

View File

@ -2386,7 +2386,8 @@ partial_die_parent_scope (struct partial_die_info *pdi,
|| parent->tag == DW_TAG_structure_type || parent->tag == DW_TAG_structure_type
|| parent->tag == DW_TAG_class_type || parent->tag == DW_TAG_class_type
|| parent->tag == DW_TAG_interface_type || parent->tag == DW_TAG_interface_type
|| parent->tag == DW_TAG_union_type) || parent->tag == DW_TAG_union_type
|| parent->tag == DW_TAG_enumeration_type)
{ {
if (grandparent_scope == NULL) if (grandparent_scope == NULL)
parent->scope = parent->name; parent->scope = parent->name;
@ -2394,7 +2395,7 @@ partial_die_parent_scope (struct partial_die_info *pdi,
parent->scope = typename_concat (&cu->comp_unit_obstack, grandparent_scope, parent->scope = typename_concat (&cu->comp_unit_obstack, grandparent_scope,
parent->name, cu); parent->name, cu);
} }
else if (parent->tag == DW_TAG_enumeration_type) else if (parent->tag == DW_TAG_enumerator)
/* Enumerators should not get the name of the enumeration as a prefix. */ /* Enumerators should not get the name of the enumeration as a prefix. */
parent->scope = grandparent_scope; parent->scope = grandparent_scope;
else else

View File

@ -1,3 +1,11 @@
2010-01-19 Tom Tromey <tromey@redhat.com>
PR c++/8000:
* gdb.cp/namespace.exp: Use new enum. Fix line numbers in
existing tests.
* gdb.cp/namespace.cc (AAA::SomeEnum): New enum.
(main): Use AAA::SomeEnum.
2010-01-19 Jan Kratochvil <jan.kratochvil@redhat.com> 2010-01-19 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.mi/mi-break.exp (set line_callme_head, set line_callme_body): New. * gdb.mi/mi-break.exp (set line_callme_head, set line_callme_body): New.

View File

@ -8,6 +8,11 @@ namespace AAA {
int xx; int xx;
int fum (int); int fum (int);
}; };
enum SomeEnum {
ALPHA,
BETA,
DELTA
};
}; };
int AAA::inA::fum (int i) int AAA::inA::fum (int i)
@ -174,6 +179,7 @@ int main ()
{ {
using AAA::inA; using AAA::inA;
char c1; char c1;
AAA::SomeEnum var = AAA::ALPHA;
using namespace BBB; using namespace BBB;

View File

@ -164,7 +164,7 @@ gdb_expect {
# Break on a function in a namespace # Break on a function in a namespace
gdb_test "break AAA::xyzq" \ gdb_test "break AAA::xyzq" \
"Breakpoint.*at $hex: file.*namespace.cc, line 42\\." "Breakpoint.*at $hex: file.*namespace.cc, line 47\\."
# Call a function in a nested namespace # Call a function in a nested namespace
@ -189,7 +189,7 @@ gdb_expect {
# Break on a function in a nested namespace # Break on a function in a nested namespace
gdb_test "break BBB::CCC::xyzq" \ gdb_test "break BBB::CCC::xyzq" \
"Breakpoint.*at $hex: file.*namespace.cc, line 58\\." "Breakpoint.*at $hex: file.*namespace.cc, line 63\\."
# Print address of a function in a class in a namespace # Print address of a function in a class in a namespace
@ -214,7 +214,7 @@ gdb_expect {
# Break on a function in a class in a namespace # Break on a function in a class in a namespace
gdb_test "break BBB::Class::xyzq" \ gdb_test "break BBB::Class::xyzq" \
"Breakpoint.*at $hex: file.*namespace.cc, line 63\\." "Breakpoint.*at $hex: file.*namespace.cc, line 68\\."
# Test to see if the appropriate namespaces are in scope when trying # Test to see if the appropriate namespaces are in scope when trying
# to print out stuff from within a function defined within a # to print out stuff from within a function defined within a
@ -271,3 +271,6 @@ gdb_test "print G::Xg" "\\$\[0-9\].* = 10"
gdb_test "print G::XgX" "\\$\[0-9\].* = 11" gdb_test "print G::XgX" "\\$\[0-9\].* = 11"
gdb_test "print cXOtherFile" "No symbol \"cXOtherFile\" in current context." gdb_test "print cXOtherFile" "No symbol \"cXOtherFile\" in current context."
gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context." gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context."
# Enum tests.
gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA"