gdb: Don't store a thread-id for floating varobj
When creating a varobj with -var-create a user can create either fixed varobj, or floating varobj. A fixed varobj will always be evaluated within the thread/frame/block in which the varobj was created, if that thread/frame/block is no longer available then the varobj is considered out of scope. A floating varobj will always be evaluated within the current thread/frame/block. Despite never using them GDB was storing the thread/frame/block into a floating varobj, and the thread-id would then be displayed when GDB reported on the state of the varobj, this could confuse a user into thinking that the thread-id was relevant. This commit prevents GDB storing the thread/frame/block onto floating varobj, and updates the few tests where this impacts the results. gdb/ChangeLog: * varobj.c (varobj_create): Don't set valid_block when creating a floating varobj. gdb/testsuite/ChangeLog: * gdb.python/py-mi.exp: Don't expect a thread-id for floating varobj. * gdb.mi/mi-var-create-rtti.exp: Likewise.
This commit is contained in:
parent
03d0bf7b78
commit
e707fc445e
5 changed files with 20 additions and 8 deletions
|
@ -1,3 +1,8 @@
|
|||
2018-01-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* varobj.c (varobj_create): Don't set valid_block when creating a
|
||||
floating varobj.
|
||||
|
||||
2018-01-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* varobj.c (varobj_create): Remove out of date comment.
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2018-01-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdb.python/py-mi.exp: Don't expect a thread-id for floating
|
||||
varobj.
|
||||
* gdb.mi/mi-var-create-rtti.exp: Likewise.
|
||||
|
||||
2018-01-21 Don Breazeal <donb@codesourcery.com>
|
||||
Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
|
|
|
@ -52,6 +52,6 @@ mi_gdb_test "-var-create sp1 * ((void*)\$sp)" \
|
|||
"\\^done,name=\"sp1\",numchild=\"0\",value=\"$hex\",type=\"void \\*\",thread-id=\"$decimal\",has_more=\"0\"" \
|
||||
"-var-create sp1 * \$sp"
|
||||
mi_gdb_test "-var-create sp2 @ ((void*)\$sp)" \
|
||||
"\\^done,name=\"sp2\",numchild=\"0\",value=\"$hex\",type=\"void \\*\",thread-id=\"$decimal\",has_more=\"0\"" \
|
||||
"\\^done,name=\"sp2\",numchild=\"0\",value=\"$hex\",type=\"void \\*\",has_more=\"0\"" \
|
||||
"-var-create sp2 @ \$sp"
|
||||
gdb_exit
|
||||
|
|
|
@ -101,7 +101,7 @@ mi_varobj_update_dynamic container "varobj update 1" {
|
|||
type_changed false new_num_children 1 dynamic 1 has_more 0
|
||||
} {
|
||||
} {
|
||||
{ name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 }
|
||||
{ name {container.\[0\]} exp {\[0\]} numchild 0 type int }
|
||||
}
|
||||
|
||||
mi_next "next over update 2"
|
||||
|
@ -110,7 +110,7 @@ mi_varobj_update_dynamic container "varobj update 2" {
|
|||
type_changed false new_num_children 2 dynamic 1 has_more 0
|
||||
} {
|
||||
} {
|
||||
{ name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 }
|
||||
{ name {container.\[1\]} exp {\[1\]} numchild 0 type int }
|
||||
}
|
||||
|
||||
mi_gdb_test "-var-set-visualizer container None" \
|
||||
|
@ -129,8 +129,8 @@ mi_varobj_update_dynamic container "varobj update after choosing default" {
|
|||
type_changed false new_num_children 2 dynamic 1 has_more 0
|
||||
} {
|
||||
} {
|
||||
{ name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 }
|
||||
{ name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 }
|
||||
{ name {container.\[0\]} exp {\[0\]} numchild 0 type int }
|
||||
{ name {container.\[1\]} exp {\[1\]} numchild 0 type int }
|
||||
}
|
||||
|
||||
mi_gdb_test "-var-set-visualizer container ContainerPrinter" \
|
||||
|
@ -142,8 +142,8 @@ mi_varobj_update_dynamic container \
|
|||
type_changed false new_num_children 2 dynamic 1 has_more 0
|
||||
} {
|
||||
} {
|
||||
{ name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 }
|
||||
{ name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 }
|
||||
{ name {container.\[0\]} exp {\[0\]} numchild 0 type int }
|
||||
{ name {container.\[1\]} exp {\[1\]} numchild 0 type int }
|
||||
}
|
||||
|
||||
mi_list_varobj_children_range container 1 2 2 {
|
||||
|
|
|
@ -336,7 +336,8 @@ varobj_create (const char *objname,
|
|||
}
|
||||
|
||||
var->format = variable_default_display (var.get ());
|
||||
var->root->valid_block = innermost_block.block ();
|
||||
var->root->valid_block =
|
||||
var->root->floating ? NULL : innermost_block.block ();
|
||||
var->name = expression;
|
||||
/* For a root var, the name and the expr are the same. */
|
||||
var->path_expr = expression;
|
||||
|
|
Loading…
Add table
Reference in a new issue