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);
+}