diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-03-01 19:34:46 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-03-01 19:34:46 +0000 |
commit | 9733fc944203887f70b8b4e42514b46d7679d360 (patch) | |
tree | 97cb11b272a0beda2f82b0f901ecc2ca08b03a25 | |
parent | 65419985ef80b508daf59c7cd47f7e23c479c202 (diff) | |
download | gdb-9733fc944203887f70b8b4e42514b46d7679d360.zip gdb-9733fc944203887f70b8b4e42514b46d7679d360.tar.gz gdb-9733fc944203887f70b8b4e42514b46d7679d360.tar.bz2 |
gdb/
* gdbtypes.c (lookup_struct_elt_type): Correct noerr for recursive
calls.
gdb/testsuite/
* gdb.cp/inherit.exp (test_print_mi_member_types): New function.
(do_tests): Call it.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/inherit.exp | 124 |
4 files changed, 134 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 73b503d..3fdd9a5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-03-01 Daniel Jacobowitz <dan@codesourcery.com> + + * gdbtypes.c (lookup_struct_elt_type): Correct noerr for recursive + calls. + 2006-03-01 Randolph Chung <tausq@debian.org> * somread.c (som_symfile_read): Update comment and remove unneeded diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index dde327b..0d29728 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1271,7 +1271,7 @@ lookup_struct_elt_type (struct type *type, char *name, int noerr) { struct type *t; - t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, noerr); + t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 1); if (t != NULL) { return t; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 45f0711..888069a 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-03-01 Daniel Jacobowitz <dan@codesourcery.com> + + * gdb.cp/inherit.exp (test_print_mi_member_types): New function. + (do_tests): Call it. + 2006-02-28 Alexandre Oliva <aoliva@redhat.com> * gdb.base/prelink.exp: New test. diff --git a/gdb/testsuite/gdb.cp/inherit.exp b/gdb/testsuite/gdb.cp/inherit.exp index 9ae1c1e..e90c0c6 100644 --- a/gdb/testsuite/gdb.cp/inherit.exp +++ b/gdb/testsuite/gdb.cp/inherit.exp @@ -1,5 +1,5 @@ # Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, -# 2004 Free Software Foundation, Inc. +# 2004, 2006 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 @@ -373,6 +373,127 @@ proc test_print_mi_members {} { gdb_test "print g_E.E::x" "$vhn = 32" } +# Multiple inheritance, print individual member types. + +proc test_print_mi_member_types {} { + global gdb_prompt + global nl + global vhn + + # Print the types of some members of g_D without qualifying them. + gdb_test "ptype g_D.b" "type = int" + gdb_test "ptype g_D.c" "type = int" + gdb_test "ptype g_D.d" "type = int" + + # Print the types of qualified members; none of these tests pass today. + + # Print all members of g_A. + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_A.A::a" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_A.A::x" "type = int" + + # Print all members of g_B. + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.A::a" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.A::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.B::b" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.B::x" "type = int" + + # Print all members of g_C. + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.A::a" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.A::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.C::c" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.C::x" "type = int" + + # Print all members of g_D. + # + # g_D.A::a and g_D.A::x are ambiguous member accesses, and gdb + # should detect these. There are no ways to PASS these tests + # because I don't know what the gdb message will be. -- chastain + # 2004-01-27. + + set name "ptype g_D.A::a" + gdb_test_multiple "ptype g_D.A::a" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_D.A::a" + } + } + + set name "ptype g_D.A::x" + gdb_test_multiple "ptype g_D.A::x" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_D.A::x" + } + } + + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.B::b" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.B::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.C::c" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.C::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.D::d" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.D::x" "type = int" + + # Print all members of g_E. + # g_E.A::a and g_E.A::x are ambiguous. + + set name "ptype g_E.A::a" + gdb_test_multiple "ptype g_E.A::a" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_E.A::a" + } + } + + set name "ptype g_E.A::x" + gdb_test_multiple "ptype g_E.A::x" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_E.A::x" + } + } + + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.B::b" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.B::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.C::c" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.C::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.D::d" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.D::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.E::e" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.E::x" "type = int" +} + # Multiple inheritance, print complete classes. proc test_print_mi_classes { } { @@ -668,6 +789,7 @@ proc do_tests { } { test_print_si_members test_print_si_classes test_print_mi_members + test_print_mi_member_types test_print_mi_classes test_print_anon_union |