diff options
author | Phil Muldoon <pmuldoon@redhat.com> | 2011-04-29 12:45:46 +0000 |
---|---|---|
committer | Phil Muldoon <pmuldoon@redhat.com> | 2011-04-29 12:45:46 +0000 |
commit | d65aec65d9e22f5232e414a4d8abef8f1279b090 (patch) | |
tree | d63d1f287b66a4d4591ca1010fa34023de1cbc42 /gdb | |
parent | b15d6aa360e54b5b921960261a015466f18bcb3c (diff) | |
download | gdb-d65aec65d9e22f5232e414a4d8abef8f1279b090.zip gdb-d65aec65d9e22f5232e414a4d8abef8f1279b090.tar.gz gdb-d65aec65d9e22f5232e414a4d8abef8f1279b090.tar.bz2 |
2011-04-29 Phil Muldoon <pmuldoon@redhat.com>
PR mi/12531
* varobj.c (install_default_visualizer): Do not install a
visualizer if the varobj is CPLUS_FAKE_CHILD.
(construct_visualizer): Likewise.
2011-04-29 Phil Muldoon <pmuldoon@redhat.com>
PR mi/12531
* gdb.python/py-mi.exp: Add CPLUS_FAKE_CHILD tests and a C++
compile target.
* gdb.python/py-prettyprint.exp: Add C++ object for
CPLUS_FAKE_CHILD test.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-mi.exp | 40 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-prettyprint.c | 11 | ||||
-rw-r--r-- | gdb/varobj.c | 8 |
5 files changed, 76 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 96e27346..7d40f8e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2011-04-29 Phil Muldoon <pmuldoon@redhat.com> + + PR mi/12531 + + * varobj.c (install_default_visualizer): Do not install a + visualizer if the varobj is CPLUS_FAKE_CHILD. + (construct_visualizer): Likewise. + 2011-04-28 Jan Kratochvil <jan.kratochvil@redhat.com> * symtab.c (expand_partial_symbol_name): New variable NCMP. Support diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d2a6344..470f0d8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2011-04-29 Phil Muldoon <pmuldoon@redhat.com> + + PR mi/12531 + + * gdb.python/py-mi.exp: Add CPLUS_FAKE_CHILD tests and a C++ + compile target. + * gdb.python/py-prettyprint.exp: Add C++ object for + CPLUS_FAKE_CHILD test. + 2011-04-28 Ulrich Weigand <ulrich.weigand@linaro.org> * gdb.base/signest.exp: New file. diff --git a/gdb/testsuite/gdb.python/py-mi.exp b/gdb/testsuite/gdb.python/py-mi.exp index 629417b..37359e9 100644 --- a/gdb/testsuite/gdb.python/py-mi.exp +++ b/gdb/testsuite/gdb.python/py-mi.exp @@ -283,4 +283,44 @@ mi_list_varobj_children nstype2 { { {nstype2.<error at 0>} {<error at 0>} 6 {char \[6\]} } } "list children after setting exception flag" +# C++ MI tests +gdb_exit +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ + executable {debug c++ additional_flags=-DMI}] != "" } { + untested "Couldn't compile ${srcfile} in c++ mode" + return -1 +} + +if [mi_gdb_start] { + continue +} +mi_delete_breakpoints +mi_gdb_reinitialize_dir $srcdir/$subdir +mi_gdb_load ${binfile} + +if {[lsearch -exact [mi_get_features] python] < 0} { + unsupported "python support is disabled" + return -1 +} + +mi_runto main +mi_continue_to_line \ + [gdb_get_line_number {break to inspect struct and union} ${testfile}.c] \ + "step to breakpoint" + +# Test python/12531. Install visualizer on a cplus_fake_child. +mi_create_varobj fake fake \ + "create fake varobj" + +mi_list_varobj_children fake { + { fake.private private 1 } +} "list children of fake" + +mi_list_varobj_children fake.private { + { fake.private.sname sname 0 int } +} "list children fake.private" + +mi_gdb_test "-var-set-visualizer fake.private gdb.default_visualizer" \ + "\\^done" "Install visualizer on a cplus_fake_child" + remote_file host delete ${remote_python_file} diff --git a/gdb/testsuite/gdb.python/py-prettyprint.c b/gdb/testsuite/gdb.python/py-prettyprint.c index 1d88b4e..b65a84f 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.c +++ b/gdb/testsuite/gdb.python/py-prettyprint.c @@ -94,6 +94,16 @@ class Derived : public Vbase1, public Vbase2, public Vbase3 } }; +class Fake +{ + int sname; + + public: + Fake (const int name = 0): + sname (name) + { + } +}; #endif struct substruct { @@ -267,6 +277,7 @@ main () Derived derived; + Fake fake (42); #endif add_item (&c, 23); /* MI breakpoint here */ diff --git a/gdb/varobj.c b/gdb/varobj.c index bfb3851..e068823 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -1397,6 +1397,10 @@ install_visualizer (struct varobj *var, PyObject *constructor, static void install_default_visualizer (struct varobj *var) { + /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */ + if (CPLUS_FAKE_CHILD (var)) + return; + if (pretty_printing) { PyObject *pretty_printer = NULL; @@ -1429,6 +1433,10 @@ construct_visualizer (struct varobj *var, PyObject *constructor) { PyObject *pretty_printer; + /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */ + if (CPLUS_FAKE_CHILD (var)) + return; + Py_INCREF (constructor); if (constructor == Py_None) pretty_printer = NULL; |