X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fvarobj.c;h=80b7c9a967d569f10c6196ea80e17874bf5094a1;hb=b16f7544121b8d4f0f98e0ff121aabe8a1509b93;hp=8f95cc2c76c7d31d3cf5a4ef33f0740ec142eca4;hpb=31f628ae8f5aada207d489fbcf5436bdc3b4b3f7;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/varobj.c b/gdb/varobj.c index 8f95cc2..80b7c9a 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -16,7 +16,6 @@ along with this program. If not, see . */ #include "defs.h" -#include "exceptions.h" #include "value.h" #include "expression.h" #include "frame.h" @@ -24,9 +23,6 @@ #include "gdbcmd.h" #include "block.h" #include "valprint.h" - -#include "gdb_assert.h" -#include #include "gdb_regex.h" #include "varobj.h" @@ -299,7 +295,7 @@ varobj_create (char *objname, { struct frame_info *fi; struct frame_id old_id = null_frame_id; - struct block *block; + const struct block *block; const char *p; struct value *value = NULL; volatile struct gdb_exception except; @@ -1004,18 +1000,18 @@ varobj_get_gdb_type (struct varobj *var) static int is_path_expr_parent (struct varobj *var) { - struct type *type; - - /* "Fake" children are not path_expr parents. */ - if (CPLUS_FAKE_CHILD (var)) - return 0; + gdb_assert (var->root->lang_ops->is_path_expr_parent != NULL); + return var->root->lang_ops->is_path_expr_parent (var); +} - type = varobj_get_value_type (var); +/* Is VAR a path expression parent, i.e., can it be used to construct + a valid path expression? By default we assume any VAR can be a path + parent. */ - /* Anonymous unions and structs are also not path_expr parents. */ - return !((TYPE_CODE (type) == TYPE_CODE_STRUCT - || TYPE_CODE (type) == TYPE_CODE_UNION) - && TYPE_NAME (type) == NULL); +int +varobj_default_is_path_expr_parent (struct varobj *var) +{ + return 1; } /* Return the path expression parent for VAR. */ @@ -2729,24 +2725,6 @@ all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data) (*func) (var_root->rootvar, data); } } - -extern void _initialize_varobj (void); -void -_initialize_varobj (void) -{ - int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE; - - varobj_table = xmalloc (sizeof_table); - memset (varobj_table, 0, sizeof_table); - - add_setshow_zuinteger_cmd ("varobj", class_maintenance, - &varobjdebug, - _("Set varobj debugging."), - _("Show varobj debugging."), - _("When non-zero, varobj debugging is enabled."), - NULL, show_varobjdebug, - &setdebuglist, &showdebuglist); -} /* Invalidate varobj VAR if it is tied to locals and re-create it if it is defined on globals. It is a helper for varobj_invalidate. @@ -2789,3 +2767,21 @@ varobj_invalidate (void) { all_root_varobjs (varobj_invalidate_iter, NULL); } + +extern void _initialize_varobj (void); +void +_initialize_varobj (void) +{ + int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE; + + varobj_table = xmalloc (sizeof_table); + memset (varobj_table, 0, sizeof_table); + + add_setshow_zuinteger_cmd ("varobj", class_maintenance, + &varobjdebug, + _("Set varobj debugging."), + _("Show varobj debugging."), + _("When non-zero, varobj debugging is enabled."), + NULL, show_varobjdebug, + &setdebuglist, &showdebuglist); +}