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.
This commit is contained in:
Phil Muldoon 2011-04-29 12:45:46 +00:00
parent b15d6aa360
commit d65aec65d9
5 changed files with 76 additions and 0 deletions

View File

@ -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

View File

@ -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.

View File

@ -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}

View File

@ -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 */

View File

@ -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;