gdb
authorTom Tromey <tromey@redhat.com>
Tue, 19 Jan 2010 18:11:19 +0000 (18:11 +0000)
committerTom Tromey <tromey@redhat.com>
Tue, 19 Jan 2010 18:11:19 +0000 (18:11 +0000)
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.

gdb/ChangeLog
gdb/dwarf2read.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/namespace.cc
gdb/testsuite/gdb.cp/namespace.exp

index b34eb93a8d0f9f4de988449627c7c32fa5c81134..84f6736fe8deee0aa39cd17a21bb78c715c8a92a 100644 (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>
 
        * NEWS: Add entry for "set/show ada trust-PAD-over-XVS" commands.
index 4903ac4a0b520da0a3a36a2d2839735092d2269d..db516539029f3c1c4a18db1752a863b9ba589b1a 100644 (file)
@@ -2386,7 +2386,8 @@ partial_die_parent_scope (struct partial_die_info *pdi,
       || parent->tag == DW_TAG_structure_type
       || parent->tag == DW_TAG_class_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)
        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->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.  */
     parent->scope = grandparent_scope;
   else
index 9c3dc8084c0bcd3747f2ab89f4e925d17bd20658..e302bcb22d78b4b2ce57e06a4d6a99bb730c1d0c 100644 (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>
 
        * gdb.mi/mi-break.exp (set line_callme_head, set line_callme_body): New.
index 4ac918764cc34852e80c0487deaa2051fca62200..f918b63de93804601bbb38d9abe8537d75a0912d 100644 (file)
@@ -8,6 +8,11 @@ namespace AAA {
     int xx;
     int fum (int);
   };
+  enum SomeEnum {
+    ALPHA,
+    BETA,
+    DELTA
+  };
 };
 
 int AAA::inA::fum (int i)
@@ -174,6 +179,7 @@ int main ()
 {
   using AAA::inA;
   char c1;
+  AAA::SomeEnum var = AAA::ALPHA;
 
   using namespace BBB;
   
index a2b8242e8c453312560d0344208ffd5e4b95eb10..4362fd840f600a75d99a05abfeae1564f6aed8d3 100644 (file)
@@ -164,7 +164,7 @@ gdb_expect {
 # Break on a function in a namespace
 
 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
 
@@ -189,7 +189,7 @@ gdb_expect {
 # Break on a function in a nested namespace
 
 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
 
@@ -214,7 +214,7 @@ gdb_expect {
 # Break on a function in a class in a namespace
 
 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
 # 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 cXOtherFile" "No symbol \"cXOtherFile\" in current context."
 gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context."
+
+# Enum tests.
+gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA"