1 /* Implementation of the GDB variable objects API.
3 Copyright (C) 1999-2012 Free Software Foundation, Inc.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 #include "exceptions.h"
21 #include "expression.h"
28 #include "gdb_assert.h"
29 #include "gdb_string.h"
30 #include "gdb_regex.h"
34 #include "gdbthread.h"
36 #include "ada-varobj.h"
40 #include "python/python.h"
41 #include "python/python-internal.h"
46 /* The names of varobjs representing anonymous structs or unions. */
47 #define ANONYMOUS_STRUCT_NAME _("<anonymous struct>")
48 #define ANONYMOUS_UNION_NAME _("<anonymous union>")
50 /* Non-zero if we want to see trace of varobj level stuff. */
54 show_varobjdebug (struct ui_file *file, int from_tty,
55 struct cmd_list_element *c, const char *value)
57 fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
60 /* String representations of gdb's format codes. */
61 char *varobj_format_string[] =
62 { "natural", "binary", "decimal", "hexadecimal", "octal" };
64 /* String representations of gdb's known languages. */
65 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
67 /* True if we want to allow Python-based pretty-printing. */
68 static int pretty_printing = 0;
71 varobj_enable_pretty_printing (void)
78 /* Every root variable has one of these structures saved in its
79 varobj. Members which must be free'd are noted. */
83 /* Alloc'd expression for this parent. */
84 struct expression *exp;
86 /* Block for which this expression is valid. */
87 struct block *valid_block;
89 /* The frame for this expression. This field is set iff valid_block is
91 struct frame_id frame;
93 /* The thread ID that this varobj_root belong to. This field
94 is only valid if valid_block is not NULL.
95 When not 0, indicates which thread 'frame' belongs to.
96 When 0, indicates that the thread list was empty when the varobj_root
100 /* If 1, the -var-update always recomputes the value in the
101 current thread and frame. Otherwise, variable object is
102 always updated in the specific scope/thread/frame. */
105 /* Flag that indicates validity: set to 0 when this varobj_root refers
106 to symbols that do not exist anymore. */
109 /* Language info for this variable and its children. */
110 struct language_specific *lang;
112 /* The varobj for this root node. */
113 struct varobj *rootvar;
115 /* Next root variable */
116 struct varobj_root *next;
119 /* Every variable in the system has a structure of this type defined
120 for it. This structure holds all information necessary to manipulate
121 a particular object variable. Members which must be freed are noted. */
125 /* Alloc'd name of the variable for this object. If this variable is a
126 child, then this name will be the child's source name.
127 (bar, not foo.bar). */
128 /* NOTE: This is the "expression". */
131 /* Alloc'd expression for this child. Can be used to create a
132 root variable corresponding to this child. */
135 /* The alloc'd name for this variable's object. This is here for
136 convenience when constructing this object's children. */
139 /* Index of this variable in its parent or -1. */
142 /* The type of this variable. This can be NULL
143 for artifial variable objects -- currently, the "accessibility"
144 variable objects in C++. */
147 /* The value of this expression or subexpression. A NULL value
148 indicates there was an error getting this value.
149 Invariant: if varobj_value_is_changeable_p (this) is non-zero,
150 the value is either NULL, or not lazy. */
153 /* The number of (immediate) children this variable has. */
156 /* If this object is a child, this points to its immediate parent. */
157 struct varobj *parent;
159 /* Children of this object. */
160 VEC (varobj_p) *children;
162 /* Whether the children of this varobj were requested. This field is
163 used to decide if dynamic varobj should recompute their children.
164 In the event that the frontend never asked for the children, we
166 int children_requested;
168 /* Description of the root variable. Points to root variable for
170 struct varobj_root *root;
172 /* The format of the output for this object. */
173 enum varobj_display_formats format;
175 /* Was this variable updated via a varobj_set_value operation. */
178 /* Last print value. */
181 /* Is this variable frozen. Frozen variables are never implicitly
182 updated by -var-update *
183 or -var-update <direct-or-indirect-parent>. */
186 /* Is the value of this variable intentionally not fetched? It is
187 not fetched if either the variable is frozen, or any parents is
191 /* Sub-range of children which the MI consumer has requested. If
192 FROM < 0 or TO < 0, means that all children have been
197 /* The pretty-printer constructor. If NULL, then the default
198 pretty-printer will be looked up. If None, then no
199 pretty-printer will be installed. */
200 PyObject *constructor;
202 /* The pretty-printer that has been constructed. If NULL, then a
203 new printer object is needed, and one will be constructed. */
204 PyObject *pretty_printer;
206 /* The iterator returned by the printer's 'children' method, or NULL
208 PyObject *child_iter;
210 /* We request one extra item from the iterator, so that we can
211 report to the caller whether there are more items than we have
212 already reported. However, we don't want to install this value
213 when we read it, because that will mess up future updates. So,
214 we stash it here instead. */
215 PyObject *saved_item;
221 struct cpstack *next;
224 /* A list of varobjs */
232 /* Private function prototypes */
234 /* Helper functions for the above subcommands. */
236 static int delete_variable (struct cpstack **, struct varobj *, int);
238 static void delete_variable_1 (struct cpstack **, int *,
239 struct varobj *, int, int);
241 static int install_variable (struct varobj *);
243 static void uninstall_variable (struct varobj *);
245 static struct varobj *create_child (struct varobj *, int, char *);
247 static struct varobj *
248 create_child_with_value (struct varobj *parent, int index, const char *name,
249 struct value *value);
251 /* Utility routines */
253 static struct varobj *new_variable (void);
255 static struct varobj *new_root_variable (void);
257 static void free_variable (struct varobj *var);
259 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
261 static struct type *get_type (struct varobj *var);
263 static struct type *get_value_type (struct varobj *var);
265 static struct type *get_target_type (struct type *);
267 static enum varobj_display_formats variable_default_display (struct varobj *);
269 static void cppush (struct cpstack **pstack, char *name);
271 static char *cppop (struct cpstack **pstack);
273 static int update_type_if_necessary (struct varobj *var,
274 struct value *new_value);
276 static int install_new_value (struct varobj *var, struct value *value,
279 /* Language-specific routines. */
281 static enum varobj_languages variable_language (struct varobj *var);
283 static int number_of_children (struct varobj *);
285 static char *name_of_variable (struct varobj *);
287 static char *name_of_child (struct varobj *, int);
289 static struct value *value_of_root (struct varobj **var_handle, int *);
291 static struct value *value_of_child (struct varobj *parent, int index);
293 static char *my_value_of_variable (struct varobj *var,
294 enum varobj_display_formats format);
296 static char *value_get_print_value (struct value *value,
297 enum varobj_display_formats format,
300 static int varobj_value_is_changeable_p (struct varobj *var);
302 static int is_root_p (struct varobj *var);
306 static struct varobj *varobj_add_child (struct varobj *var,
308 struct value *value);
310 #endif /* HAVE_PYTHON */
312 static int default_value_is_changeable_p (struct varobj *var);
314 /* C implementation */
316 static int c_number_of_children (struct varobj *var);
318 static char *c_name_of_variable (struct varobj *parent);
320 static char *c_name_of_child (struct varobj *parent, int index);
322 static char *c_path_expr_of_child (struct varobj *child);
324 static struct value *c_value_of_root (struct varobj **var_handle);
326 static struct value *c_value_of_child (struct varobj *parent, int index);
328 static struct type *c_type_of_child (struct varobj *parent, int index);
330 static char *c_value_of_variable (struct varobj *var,
331 enum varobj_display_formats format);
333 /* C++ implementation */
335 static int cplus_number_of_children (struct varobj *var);
337 static void cplus_class_num_children (struct type *type, int children[3]);
339 static char *cplus_name_of_variable (struct varobj *parent);
341 static char *cplus_name_of_child (struct varobj *parent, int index);
343 static char *cplus_path_expr_of_child (struct varobj *child);
345 static struct value *cplus_value_of_root (struct varobj **var_handle);
347 static struct value *cplus_value_of_child (struct varobj *parent, int index);
349 static struct type *cplus_type_of_child (struct varobj *parent, int index);
351 static char *cplus_value_of_variable (struct varobj *var,
352 enum varobj_display_formats format);
354 /* Java implementation */
356 static int java_number_of_children (struct varobj *var);
358 static char *java_name_of_variable (struct varobj *parent);
360 static char *java_name_of_child (struct varobj *parent, int index);
362 static char *java_path_expr_of_child (struct varobj *child);
364 static struct value *java_value_of_root (struct varobj **var_handle);
366 static struct value *java_value_of_child (struct varobj *parent, int index);
368 static struct type *java_type_of_child (struct varobj *parent, int index);
370 static char *java_value_of_variable (struct varobj *var,
371 enum varobj_display_formats format);
373 /* Ada implementation */
375 static int ada_number_of_children (struct varobj *var);
377 static char *ada_name_of_variable (struct varobj *parent);
379 static char *ada_name_of_child (struct varobj *parent, int index);
381 static char *ada_path_expr_of_child (struct varobj *child);
383 static struct value *ada_value_of_root (struct varobj **var_handle);
385 static struct value *ada_value_of_child (struct varobj *parent, int index);
387 static struct type *ada_type_of_child (struct varobj *parent, int index);
389 static char *ada_value_of_variable (struct varobj *var,
390 enum varobj_display_formats format);
392 static int ada_value_is_changeable_p (struct varobj *var);
394 static int ada_value_has_mutated (struct varobj *var, struct value *new_val,
395 struct type *new_type);
397 /* The language specific vector */
399 struct language_specific
402 /* The language of this variable. */
403 enum varobj_languages language;
405 /* The number of children of PARENT. */
406 int (*number_of_children) (struct varobj * parent);
408 /* The name (expression) of a root varobj. */
409 char *(*name_of_variable) (struct varobj * parent);
411 /* The name of the INDEX'th child of PARENT. */
412 char *(*name_of_child) (struct varobj * parent, int index);
414 /* Returns the rooted expression of CHILD, which is a variable
415 obtain that has some parent. */
416 char *(*path_expr_of_child) (struct varobj * child);
418 /* The ``struct value *'' of the root variable ROOT. */
419 struct value *(*value_of_root) (struct varobj ** root_handle);
421 /* The ``struct value *'' of the INDEX'th child of PARENT. */
422 struct value *(*value_of_child) (struct varobj * parent, int index);
424 /* The type of the INDEX'th child of PARENT. */
425 struct type *(*type_of_child) (struct varobj * parent, int index);
427 /* The current value of VAR. */
428 char *(*value_of_variable) (struct varobj * var,
429 enum varobj_display_formats format);
431 /* Return non-zero if changes in value of VAR must be detected and
432 reported by -var-update. Return zero if -var-update should never
433 report changes of such values. This makes sense for structures
434 (since the changes in children values will be reported separately),
435 or for artifical objects (like 'public' pseudo-field in C++).
437 Return value of 0 means that gdb need not call value_fetch_lazy
438 for the value of this variable object. */
439 int (*value_is_changeable_p) (struct varobj *var);
441 /* Return nonzero if the type of VAR has mutated.
443 VAR's value is still the varobj's previous value, while NEW_VALUE
444 is VAR's new value and NEW_TYPE is the var's new type. NEW_VALUE
445 may be NULL indicating that there is no value available (the varobj
446 may be out of scope, of may be the child of a null pointer, for
447 instance). NEW_TYPE, on the other hand, must never be NULL.
449 This function should also be able to assume that var's number of
450 children is set (not < 0).
452 Languages where types do not mutate can set this to NULL. */
453 int (*value_has_mutated) (struct varobj *var, struct value *new_value,
454 struct type *new_type);
457 /* Array of known source language routines. */
458 static struct language_specific languages[vlang_end] = {
459 /* Unknown (try treating as C). */
462 c_number_of_children,
465 c_path_expr_of_child,
470 default_value_is_changeable_p,
471 NULL /* value_has_mutated */}
476 c_number_of_children,
479 c_path_expr_of_child,
484 default_value_is_changeable_p,
485 NULL /* value_has_mutated */}
490 cplus_number_of_children,
491 cplus_name_of_variable,
493 cplus_path_expr_of_child,
495 cplus_value_of_child,
497 cplus_value_of_variable,
498 default_value_is_changeable_p,
499 NULL /* value_has_mutated */}
504 java_number_of_children,
505 java_name_of_variable,
507 java_path_expr_of_child,
511 java_value_of_variable,
512 default_value_is_changeable_p,
513 NULL /* value_has_mutated */},
517 ada_number_of_children,
518 ada_name_of_variable,
520 ada_path_expr_of_child,
524 ada_value_of_variable,
525 ada_value_is_changeable_p,
526 ada_value_has_mutated}
529 /* A little convenience enum for dealing with C++/Java. */
532 v_public = 0, v_private, v_protected
537 /* Mappings of varobj_display_formats enums to gdb's format codes. */
538 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
540 /* Header of the list of root variable objects. */
541 static struct varobj_root *rootlist;
543 /* Prime number indicating the number of buckets in the hash table. */
544 /* A prime large enough to avoid too many colisions. */
545 #define VAROBJ_TABLE_SIZE 227
547 /* Pointer to the varobj hash table (built at run time). */
548 static struct vlist **varobj_table;
550 /* Is the variable X one of our "fake" children? */
551 #define CPLUS_FAKE_CHILD(x) \
552 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
555 /* API Implementation */
557 is_root_p (struct varobj *var)
559 return (var->root->rootvar == var);
563 /* Helper function to install a Python environment suitable for
564 use during operations on VAR. */
565 static struct cleanup *
566 varobj_ensure_python_env (struct varobj *var)
568 return ensure_python_env (var->root->exp->gdbarch,
569 var->root->exp->language_defn);
573 /* Creates a varobj (not its children). */
575 /* Return the full FRAME which corresponds to the given CORE_ADDR
576 or NULL if no FRAME on the chain corresponds to CORE_ADDR. */
578 static struct frame_info *
579 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
581 struct frame_info *frame = NULL;
583 if (frame_addr == (CORE_ADDR) 0)
586 for (frame = get_current_frame ();
588 frame = get_prev_frame (frame))
590 /* The CORE_ADDR we get as argument was parsed from a string GDB
591 output as $fp. This output got truncated to gdbarch_addr_bit.
592 Truncate the frame base address in the same manner before
593 comparing it against our argument. */
594 CORE_ADDR frame_base = get_frame_base_address (frame);
595 int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
597 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
598 frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
600 if (frame_base == frame_addr)
608 varobj_create (char *objname,
609 char *expression, CORE_ADDR frame, enum varobj_type type)
612 struct cleanup *old_chain;
614 /* Fill out a varobj structure for the (root) variable being constructed. */
615 var = new_root_variable ();
616 old_chain = make_cleanup_free_variable (var);
618 if (expression != NULL)
620 struct frame_info *fi;
621 struct frame_id old_id = null_frame_id;
624 enum varobj_languages lang;
625 struct value *value = NULL;
626 volatile struct gdb_exception except;
628 /* Parse and evaluate the expression, filling in as much of the
629 variable's data as possible. */
631 if (has_stack_frames ())
633 /* Allow creator to specify context of variable. */
634 if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
635 fi = get_selected_frame (NULL);
637 /* FIXME: cagney/2002-11-23: This code should be doing a
638 lookup using the frame ID and not just the frame's
639 ``address''. This, of course, means an interface
640 change. However, with out that interface change ISAs,
641 such as the ia64 with its two stacks, won't work.
642 Similar goes for the case where there is a frameless
644 fi = find_frame_addr_in_frame_chain (frame);
649 /* frame = -2 means always use selected frame. */
650 if (type == USE_SELECTED_FRAME)
651 var->root->floating = 1;
655 block = get_frame_block (fi, 0);
658 innermost_block = NULL;
659 /* Wrap the call to parse expression, so we can
660 return a sensible error. */
661 TRY_CATCH (except, RETURN_MASK_ERROR)
663 var->root->exp = parse_exp_1 (&p, block, 0);
666 if (except.reason < 0)
668 do_cleanups (old_chain);
672 /* Don't allow variables to be created for types. */
673 if (var->root->exp->elts[0].opcode == OP_TYPE)
675 do_cleanups (old_chain);
676 fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
677 " as an expression.\n");
681 var->format = variable_default_display (var);
682 var->root->valid_block = innermost_block;
683 var->name = xstrdup (expression);
684 /* For a root var, the name and the expr are the same. */
685 var->path_expr = xstrdup (expression);
687 /* When the frame is different from the current frame,
688 we must select the appropriate frame before parsing
689 the expression, otherwise the value will not be current.
690 Since select_frame is so benign, just call it for all cases. */
693 /* User could specify explicit FRAME-ADDR which was not found but
694 EXPRESSION is frame specific and we would not be able to evaluate
695 it correctly next time. With VALID_BLOCK set we must also set
696 FRAME and THREAD_ID. */
698 error (_("Failed to find the specified frame"));
700 var->root->frame = get_frame_id (fi);
701 var->root->thread_id = pid_to_thread_id (inferior_ptid);
702 old_id = get_frame_id (get_selected_frame (NULL));
706 /* We definitely need to catch errors here.
707 If evaluate_expression succeeds we got the value we wanted.
708 But if it fails, we still go on with a call to evaluate_type(). */
709 TRY_CATCH (except, RETURN_MASK_ERROR)
711 value = evaluate_expression (var->root->exp);
714 if (except.reason < 0)
716 /* Error getting the value. Try to at least get the
718 struct value *type_only_value = evaluate_type (var->root->exp);
720 var->type = value_type (type_only_value);
724 int real_type_found = 0;
726 var->type = value_actual_type (value, 0, &real_type_found);
728 value = value_cast (var->type, value);
731 /* Set language info */
732 lang = variable_language (var);
733 var->root->lang = &languages[lang];
735 install_new_value (var, value, 1 /* Initial assignment */);
737 /* Set ourselves as our root. */
738 var->root->rootvar = var;
740 /* Reset the selected frame. */
741 if (frame_id_p (old_id))
742 select_frame (frame_find_by_id (old_id));
745 /* If the variable object name is null, that means this
746 is a temporary variable, so don't install it. */
748 if ((var != NULL) && (objname != NULL))
750 var->obj_name = xstrdup (objname);
752 /* If a varobj name is duplicated, the install will fail so
754 if (!install_variable (var))
756 do_cleanups (old_chain);
761 discard_cleanups (old_chain);
765 /* Generates an unique name that can be used for a varobj. */
768 varobj_gen_name (void)
773 /* Generate a name for this object. */
775 obj_name = xstrprintf ("var%d", id);
780 /* Given an OBJNAME, returns the pointer to the corresponding varobj. Call
781 error if OBJNAME cannot be found. */
784 varobj_get_handle (char *objname)
788 unsigned int index = 0;
791 for (chp = objname; *chp; chp++)
793 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
796 cv = *(varobj_table + index);
797 while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
801 error (_("Variable object not found"));
806 /* Given the handle, return the name of the object. */
809 varobj_get_objname (struct varobj *var)
811 return var->obj_name;
814 /* Given the handle, return the expression represented by the object. */
817 varobj_get_expression (struct varobj *var)
819 return name_of_variable (var);
822 /* Deletes a varobj and all its children if only_children == 0,
823 otherwise deletes only the children; returns a malloc'ed list of
824 all the (malloc'ed) names of the variables that have been deleted
825 (NULL terminated). */
828 varobj_delete (struct varobj *var, char ***dellist, int only_children)
832 struct cpstack *result = NULL;
835 /* Initialize a stack for temporary results. */
836 cppush (&result, NULL);
839 /* Delete only the variable children. */
840 delcount = delete_variable (&result, var, 1 /* only the children */ );
842 /* Delete the variable and all its children. */
843 delcount = delete_variable (&result, var, 0 /* parent+children */ );
845 /* We may have been asked to return a list of what has been deleted. */
848 *dellist = xmalloc ((delcount + 1) * sizeof (char *));
852 *cp = cppop (&result);
853 while ((*cp != NULL) && (mycount > 0))
857 *cp = cppop (&result);
860 if (mycount || (*cp != NULL))
861 warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
870 /* Convenience function for varobj_set_visualizer. Instantiate a
871 pretty-printer for a given value. */
873 instantiate_pretty_printer (PyObject *constructor, struct value *value)
875 PyObject *val_obj = NULL;
878 val_obj = value_to_value_object (value);
882 printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
889 /* Set/Get variable object display format. */
891 enum varobj_display_formats
892 varobj_set_display_format (struct varobj *var,
893 enum varobj_display_formats format)
900 case FORMAT_HEXADECIMAL:
902 var->format = format;
906 var->format = variable_default_display (var);
909 if (varobj_value_is_changeable_p (var)
910 && var->value && !value_lazy (var->value))
912 xfree (var->print_value);
913 var->print_value = value_get_print_value (var->value, var->format, var);
919 enum varobj_display_formats
920 varobj_get_display_format (struct varobj *var)
926 varobj_get_display_hint (struct varobj *var)
931 struct cleanup *back_to = varobj_ensure_python_env (var);
933 if (var->pretty_printer)
934 result = gdbpy_get_display_hint (var->pretty_printer);
936 do_cleanups (back_to);
942 /* Return true if the varobj has items after TO, false otherwise. */
945 varobj_has_more (struct varobj *var, int to)
947 if (VEC_length (varobj_p, var->children) > to)
949 return ((to == -1 || VEC_length (varobj_p, var->children) == to)
950 && var->saved_item != NULL);
953 /* If the variable object is bound to a specific thread, that
954 is its evaluation can always be done in context of a frame
955 inside that thread, returns GDB id of the thread -- which
956 is always positive. Otherwise, returns -1. */
958 varobj_get_thread_id (struct varobj *var)
960 if (var->root->valid_block && var->root->thread_id > 0)
961 return var->root->thread_id;
967 varobj_set_frozen (struct varobj *var, int frozen)
969 /* When a variable is unfrozen, we don't fetch its value.
970 The 'not_fetched' flag remains set, so next -var-update
973 We don't fetch the value, because for structures the client
974 should do -var-update anyway. It would be bad to have different
975 client-size logic for structure and other types. */
976 var->frozen = frozen;
980 varobj_get_frozen (struct varobj *var)
985 /* A helper function that restricts a range to what is actually
986 available in a VEC. This follows the usual rules for the meaning
987 of FROM and TO -- if either is negative, the entire range is
991 restrict_range (VEC (varobj_p) *children, int *from, int *to)
993 if (*from < 0 || *to < 0)
996 *to = VEC_length (varobj_p, children);
1000 if (*from > VEC_length (varobj_p, children))
1001 *from = VEC_length (varobj_p, children);
1002 if (*to > VEC_length (varobj_p, children))
1003 *to = VEC_length (varobj_p, children);
1011 /* A helper for update_dynamic_varobj_children that installs a new
1012 child when needed. */
1015 install_dynamic_child (struct varobj *var,
1016 VEC (varobj_p) **changed,
1017 VEC (varobj_p) **type_changed,
1018 VEC (varobj_p) **new,
1019 VEC (varobj_p) **unchanged,
1023 struct value *value)
1025 if (VEC_length (varobj_p, var->children) < index + 1)
1027 /* There's no child yet. */
1028 struct varobj *child = varobj_add_child (var, name, value);
1032 VEC_safe_push (varobj_p, *new, child);
1038 varobj_p existing = VEC_index (varobj_p, var->children, index);
1040 int type_updated = update_type_if_necessary (existing, value);
1044 VEC_safe_push (varobj_p, *type_changed, existing);
1046 if (install_new_value (existing, value, 0))
1048 if (!type_updated && changed)
1049 VEC_safe_push (varobj_p, *changed, existing);
1051 else if (!type_updated && unchanged)
1052 VEC_safe_push (varobj_p, *unchanged, existing);
1057 dynamic_varobj_has_child_method (struct varobj *var)
1059 struct cleanup *back_to;
1060 PyObject *printer = var->pretty_printer;
1063 back_to = varobj_ensure_python_env (var);
1064 result = PyObject_HasAttr (printer, gdbpy_children_cst);
1065 do_cleanups (back_to);
1072 update_dynamic_varobj_children (struct varobj *var,
1073 VEC (varobj_p) **changed,
1074 VEC (varobj_p) **type_changed,
1075 VEC (varobj_p) **new,
1076 VEC (varobj_p) **unchanged,
1078 int update_children,
1083 struct cleanup *back_to;
1086 PyObject *printer = var->pretty_printer;
1088 back_to = varobj_ensure_python_env (var);
1091 if (!PyObject_HasAttr (printer, gdbpy_children_cst))
1093 do_cleanups (back_to);
1097 if (update_children || !var->child_iter)
1099 children = PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
1104 gdbpy_print_stack ();
1105 error (_("Null value returned for children"));
1108 make_cleanup_py_decref (children);
1110 if (!PyIter_Check (children))
1111 error (_("Returned value is not iterable"));
1113 Py_XDECREF (var->child_iter);
1114 var->child_iter = PyObject_GetIter (children);
1115 if (!var->child_iter)
1117 gdbpy_print_stack ();
1118 error (_("Could not get children iterator"));
1121 Py_XDECREF (var->saved_item);
1122 var->saved_item = NULL;
1127 i = VEC_length (varobj_p, var->children);
1129 /* We ask for one extra child, so that MI can report whether there
1130 are more children. */
1131 for (; to < 0 || i < to + 1; ++i)
1136 /* See if there was a leftover from last time. */
1137 if (var->saved_item)
1139 item = var->saved_item;
1140 var->saved_item = NULL;
1143 item = PyIter_Next (var->child_iter);
1147 /* Normal end of iteration. */
1148 if (!PyErr_Occurred ())
1151 /* If we got a memory error, just use the text as the
1153 if (PyErr_ExceptionMatches (gdbpy_gdb_memory_error))
1155 PyObject *type, *value, *trace;
1156 char *name_str, *value_str;
1158 PyErr_Fetch (&type, &value, &trace);
1159 value_str = gdbpy_exception_to_string (type, value);
1165 gdbpy_print_stack ();
1169 name_str = xstrprintf ("<error at %d>", i);
1170 item = Py_BuildValue ("(ss)", name_str, value_str);
1175 gdbpy_print_stack ();
1183 /* Any other kind of error. */
1184 gdbpy_print_stack ();
1189 /* We don't want to push the extra child on any report list. */
1190 if (to < 0 || i < to)
1195 struct cleanup *inner;
1196 int can_mention = from < 0 || i >= from;
1198 inner = make_cleanup_py_decref (item);
1200 if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
1202 gdbpy_print_stack ();
1203 error (_("Invalid item from the child list"));
1206 v = convert_value_from_python (py_v);
1208 gdbpy_print_stack ();
1209 install_dynamic_child (var, can_mention ? changed : NULL,
1210 can_mention ? type_changed : NULL,
1211 can_mention ? new : NULL,
1212 can_mention ? unchanged : NULL,
1213 can_mention ? cchanged : NULL, i, name, v);
1214 do_cleanups (inner);
1218 Py_XDECREF (var->saved_item);
1219 var->saved_item = item;
1221 /* We want to truncate the child list just before this
1230 if (i < VEC_length (varobj_p, var->children))
1235 for (j = i; j < VEC_length (varobj_p, var->children); ++j)
1236 varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0);
1237 VEC_truncate (varobj_p, var->children, i);
1240 /* If there are fewer children than requested, note that the list of
1241 children changed. */
1242 if (to >= 0 && VEC_length (varobj_p, var->children) < to)
1245 var->num_children = VEC_length (varobj_p, var->children);
1247 do_cleanups (back_to);
1251 gdb_assert (0 && "should never be called if Python is not enabled");
1256 varobj_get_num_children (struct varobj *var)
1258 if (var->num_children == -1)
1260 if (var->pretty_printer)
1264 /* If we have a dynamic varobj, don't report -1 children.
1265 So, try to fetch some children first. */
1266 update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL, &dummy,
1270 var->num_children = number_of_children (var);
1273 return var->num_children >= 0 ? var->num_children : 0;
1276 /* Creates a list of the immediate children of a variable object;
1277 the return code is the number of such children or -1 on error. */
1280 varobj_list_children (struct varobj *var, int *from, int *to)
1283 int i, children_changed;
1285 var->children_requested = 1;
1287 if (var->pretty_printer)
1289 /* This, in theory, can result in the number of children changing without
1290 frontend noticing. But well, calling -var-list-children on the same
1291 varobj twice is not something a sane frontend would do. */
1292 update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL,
1293 &children_changed, 0, 0, *to);
1294 restrict_range (var->children, from, to);
1295 return var->children;
1298 if (var->num_children == -1)
1299 var->num_children = number_of_children (var);
1301 /* If that failed, give up. */
1302 if (var->num_children == -1)
1303 return var->children;
1305 /* If we're called when the list of children is not yet initialized,
1306 allocate enough elements in it. */
1307 while (VEC_length (varobj_p, var->children) < var->num_children)
1308 VEC_safe_push (varobj_p, var->children, NULL);
1310 for (i = 0; i < var->num_children; i++)
1312 varobj_p existing = VEC_index (varobj_p, var->children, i);
1314 if (existing == NULL)
1316 /* Either it's the first call to varobj_list_children for
1317 this variable object, and the child was never created,
1318 or it was explicitly deleted by the client. */
1319 name = name_of_child (var, i);
1320 existing = create_child (var, i, name);
1321 VEC_replace (varobj_p, var->children, i, existing);
1325 restrict_range (var->children, from, to);
1326 return var->children;
1331 static struct varobj *
1332 varobj_add_child (struct varobj *var, const char *name, struct value *value)
1334 varobj_p v = create_child_with_value (var,
1335 VEC_length (varobj_p, var->children),
1338 VEC_safe_push (varobj_p, var->children, v);
1342 #endif /* HAVE_PYTHON */
1344 /* Obtain the type of an object Variable as a string similar to the one gdb
1345 prints on the console. */
1348 varobj_get_type (struct varobj *var)
1350 /* For the "fake" variables, do not return a type. (It's type is
1352 Do not return a type for invalid variables as well. */
1353 if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
1356 return type_to_string (var->type);
1359 /* Obtain the type of an object variable. */
1362 varobj_get_gdb_type (struct varobj *var)
1367 /* Is VAR a path expression parent, i.e., can it be used to construct
1368 a valid path expression? */
1371 is_path_expr_parent (struct varobj *var)
1375 /* "Fake" children are not path_expr parents. */
1376 if (CPLUS_FAKE_CHILD (var))
1379 type = get_value_type (var);
1381 /* Anonymous unions and structs are also not path_expr parents. */
1382 return !((TYPE_CODE (type) == TYPE_CODE_STRUCT
1383 || TYPE_CODE (type) == TYPE_CODE_UNION)
1384 && TYPE_NAME (type) == NULL);
1387 /* Return the path expression parent for VAR. */
1389 static struct varobj *
1390 get_path_expr_parent (struct varobj *var)
1392 struct varobj *parent = var;
1394 while (!is_root_p (parent) && !is_path_expr_parent (parent))
1395 parent = parent->parent;
1400 /* Return a pointer to the full rooted expression of varobj VAR.
1401 If it has not been computed yet, compute it. */
1403 varobj_get_path_expr (struct varobj *var)
1405 if (var->path_expr != NULL)
1406 return var->path_expr;
1409 /* For root varobjs, we initialize path_expr
1410 when creating varobj, so here it should be
1412 gdb_assert (!is_root_p (var));
1413 return (*var->root->lang->path_expr_of_child) (var);
1417 enum varobj_languages
1418 varobj_get_language (struct varobj *var)
1420 return variable_language (var);
1424 varobj_get_attributes (struct varobj *var)
1428 if (varobj_editable_p (var))
1429 /* FIXME: define masks for attributes. */
1430 attributes |= 0x00000001; /* Editable */
1436 varobj_pretty_printed_p (struct varobj *var)
1438 return var->pretty_printer != NULL;
1442 varobj_get_formatted_value (struct varobj *var,
1443 enum varobj_display_formats format)
1445 return my_value_of_variable (var, format);
1449 varobj_get_value (struct varobj *var)
1451 return my_value_of_variable (var, var->format);
1454 /* Set the value of an object variable (if it is editable) to the
1455 value of the given expression. */
1456 /* Note: Invokes functions that can call error(). */
1459 varobj_set_value (struct varobj *var, char *expression)
1461 struct value *val = NULL; /* Initialize to keep gcc happy. */
1462 /* The argument "expression" contains the variable's new value.
1463 We need to first construct a legal expression for this -- ugh! */
1464 /* Does this cover all the bases? */
1465 struct expression *exp;
1466 struct value *value = NULL; /* Initialize to keep gcc happy. */
1467 int saved_input_radix = input_radix;
1468 char *s = expression;
1469 volatile struct gdb_exception except;
1471 gdb_assert (varobj_editable_p (var));
1473 input_radix = 10; /* ALWAYS reset to decimal temporarily. */
1474 exp = parse_exp_1 (&s, 0, 0);
1475 TRY_CATCH (except, RETURN_MASK_ERROR)
1477 value = evaluate_expression (exp);
1480 if (except.reason < 0)
1482 /* We cannot proceed without a valid expression. */
1487 /* All types that are editable must also be changeable. */
1488 gdb_assert (varobj_value_is_changeable_p (var));
1490 /* The value of a changeable variable object must not be lazy. */
1491 gdb_assert (!value_lazy (var->value));
1493 /* Need to coerce the input. We want to check if the
1494 value of the variable object will be different
1495 after assignment, and the first thing value_assign
1496 does is coerce the input.
1497 For example, if we are assigning an array to a pointer variable we
1498 should compare the pointer with the array's address, not with the
1500 value = coerce_array (value);
1502 /* The new value may be lazy. value_assign, or
1503 rather value_contents, will take care of this. */
1504 TRY_CATCH (except, RETURN_MASK_ERROR)
1506 val = value_assign (var->value, value);
1509 if (except.reason < 0)
1512 /* If the value has changed, record it, so that next -var-update can
1513 report this change. If a variable had a value of '1', we've set it
1514 to '333' and then set again to '1', when -var-update will report this
1515 variable as changed -- because the first assignment has set the
1516 'updated' flag. There's no need to optimize that, because return value
1517 of -var-update should be considered an approximation. */
1518 var->updated = install_new_value (var, val, 0 /* Compare values. */);
1519 input_radix = saved_input_radix;
1525 /* A helper function to install a constructor function and visualizer
1529 install_visualizer (struct varobj *var, PyObject *constructor,
1530 PyObject *visualizer)
1532 Py_XDECREF (var->constructor);
1533 var->constructor = constructor;
1535 Py_XDECREF (var->pretty_printer);
1536 var->pretty_printer = visualizer;
1538 Py_XDECREF (var->child_iter);
1539 var->child_iter = NULL;
1542 /* Install the default visualizer for VAR. */
1545 install_default_visualizer (struct varobj *var)
1547 /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */
1548 if (CPLUS_FAKE_CHILD (var))
1551 if (pretty_printing)
1553 PyObject *pretty_printer = NULL;
1557 pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1558 if (! pretty_printer)
1560 gdbpy_print_stack ();
1561 error (_("Cannot instantiate printer for default visualizer"));
1565 if (pretty_printer == Py_None)
1567 Py_DECREF (pretty_printer);
1568 pretty_printer = NULL;
1571 install_visualizer (var, NULL, pretty_printer);
1575 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1576 make a new object. */
1579 construct_visualizer (struct varobj *var, PyObject *constructor)
1581 PyObject *pretty_printer;
1583 /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */
1584 if (CPLUS_FAKE_CHILD (var))
1587 Py_INCREF (constructor);
1588 if (constructor == Py_None)
1589 pretty_printer = NULL;
1592 pretty_printer = instantiate_pretty_printer (constructor, var->value);
1593 if (! pretty_printer)
1595 gdbpy_print_stack ();
1596 Py_DECREF (constructor);
1597 constructor = Py_None;
1598 Py_INCREF (constructor);
1601 if (pretty_printer == Py_None)
1603 Py_DECREF (pretty_printer);
1604 pretty_printer = NULL;
1608 install_visualizer (var, constructor, pretty_printer);
1611 #endif /* HAVE_PYTHON */
1613 /* A helper function for install_new_value. This creates and installs
1614 a visualizer for VAR, if appropriate. */
1617 install_new_value_visualizer (struct varobj *var)
1620 /* If the constructor is None, then we want the raw value. If VAR
1621 does not have a value, just skip this. */
1622 if (var->constructor != Py_None && var->value)
1624 struct cleanup *cleanup;
1626 cleanup = varobj_ensure_python_env (var);
1628 if (!var->constructor)
1629 install_default_visualizer (var);
1631 construct_visualizer (var, var->constructor);
1633 do_cleanups (cleanup);
1640 /* When using RTTI to determine variable type it may be changed in runtime when
1641 the variable value is changed. This function checks whether type of varobj
1642 VAR will change when a new value NEW_VALUE is assigned and if it is so
1643 updates the type of VAR. */
1646 update_type_if_necessary (struct varobj *var, struct value *new_value)
1650 struct value_print_options opts;
1652 get_user_print_options (&opts);
1653 if (opts.objectprint)
1655 struct type *new_type;
1656 char *curr_type_str, *new_type_str;
1658 new_type = value_actual_type (new_value, 0, 0);
1659 new_type_str = type_to_string (new_type);
1660 curr_type_str = varobj_get_type (var);
1661 if (strcmp (curr_type_str, new_type_str) != 0)
1663 var->type = new_type;
1665 /* This information may be not valid for a new type. */
1666 varobj_delete (var, NULL, 1);
1667 VEC_free (varobj_p, var->children);
1668 var->num_children = -1;
1677 /* Assign a new value to a variable object. If INITIAL is non-zero,
1678 this is the first assignement after the variable object was just
1679 created, or changed type. In that case, just assign the value
1681 Otherwise, assign the new value, and return 1 if the value is
1682 different from the current one, 0 otherwise. The comparison is
1683 done on textual representation of value. Therefore, some types
1684 need not be compared. E.g. for structures the reported value is
1685 always "{...}", so no comparison is necessary here. If the old
1686 value was NULL and new one is not, or vice versa, we always return 1.
1688 The VALUE parameter should not be released -- the function will
1689 take care of releasing it when needed. */
1691 install_new_value (struct varobj *var, struct value *value, int initial)
1696 int intentionally_not_fetched = 0;
1697 char *print_value = NULL;
1699 /* We need to know the varobj's type to decide if the value should
1700 be fetched or not. C++ fake children (public/protected/private)
1701 don't have a type. */
1702 gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1703 changeable = varobj_value_is_changeable_p (var);
1705 /* If the type has custom visualizer, we consider it to be always
1706 changeable. FIXME: need to make sure this behaviour will not
1707 mess up read-sensitive values. */
1708 if (var->pretty_printer)
1711 need_to_fetch = changeable;
1713 /* We are not interested in the address of references, and given
1714 that in C++ a reference is not rebindable, it cannot
1715 meaningfully change. So, get hold of the real value. */
1717 value = coerce_ref (value);
1719 if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1720 /* For unions, we need to fetch the value implicitly because
1721 of implementation of union member fetch. When gdb
1722 creates a value for a field and the value of the enclosing
1723 structure is not lazy, it immediately copies the necessary
1724 bytes from the enclosing values. If the enclosing value is
1725 lazy, the call to value_fetch_lazy on the field will read
1726 the data from memory. For unions, that means we'll read the
1727 same memory more than once, which is not desirable. So
1731 /* The new value might be lazy. If the type is changeable,
1732 that is we'll be comparing values of this type, fetch the
1733 value now. Otherwise, on the next update the old value
1734 will be lazy, which means we've lost that old value. */
1735 if (need_to_fetch && value && value_lazy (value))
1737 struct varobj *parent = var->parent;
1738 int frozen = var->frozen;
1740 for (; !frozen && parent; parent = parent->parent)
1741 frozen |= parent->frozen;
1743 if (frozen && initial)
1745 /* For variables that are frozen, or are children of frozen
1746 variables, we don't do fetch on initial assignment.
1747 For non-initial assignemnt we do the fetch, since it means we're
1748 explicitly asked to compare the new value with the old one. */
1749 intentionally_not_fetched = 1;
1753 volatile struct gdb_exception except;
1755 TRY_CATCH (except, RETURN_MASK_ERROR)
1757 value_fetch_lazy (value);
1760 if (except.reason < 0)
1762 /* Set the value to NULL, so that for the next -var-update,
1763 we don't try to compare the new value with this value,
1764 that we couldn't even read. */
1770 /* Get a reference now, before possibly passing it to any Python
1771 code that might release it. */
1773 value_incref (value);
1775 /* Below, we'll be comparing string rendering of old and new
1776 values. Don't get string rendering if the value is
1777 lazy -- if it is, the code above has decided that the value
1778 should not be fetched. */
1779 if (value && !value_lazy (value) && !var->pretty_printer)
1780 print_value = value_get_print_value (value, var->format, var);
1782 /* If the type is changeable, compare the old and the new values.
1783 If this is the initial assignment, we don't have any old value
1785 if (!initial && changeable)
1787 /* If the value of the varobj was changed by -var-set-value,
1788 then the value in the varobj and in the target is the same.
1789 However, that value is different from the value that the
1790 varobj had after the previous -var-update. So need to the
1791 varobj as changed. */
1796 else if (! var->pretty_printer)
1798 /* Try to compare the values. That requires that both
1799 values are non-lazy. */
1800 if (var->not_fetched && value_lazy (var->value))
1802 /* This is a frozen varobj and the value was never read.
1803 Presumably, UI shows some "never read" indicator.
1804 Now that we've fetched the real value, we need to report
1805 this varobj as changed so that UI can show the real
1809 else if (var->value == NULL && value == NULL)
1812 else if (var->value == NULL || value == NULL)
1818 gdb_assert (!value_lazy (var->value));
1819 gdb_assert (!value_lazy (value));
1821 gdb_assert (var->print_value != NULL && print_value != NULL);
1822 if (strcmp (var->print_value, print_value) != 0)
1828 if (!initial && !changeable)
1830 /* For values that are not changeable, we don't compare the values.
1831 However, we want to notice if a value was not NULL and now is NULL,
1832 or vise versa, so that we report when top-level varobjs come in scope
1833 and leave the scope. */
1834 changed = (var->value != NULL) != (value != NULL);
1837 /* We must always keep the new value, since children depend on it. */
1838 if (var->value != NULL && var->value != value)
1839 value_free (var->value);
1841 if (value && value_lazy (value) && intentionally_not_fetched)
1842 var->not_fetched = 1;
1844 var->not_fetched = 0;
1847 install_new_value_visualizer (var);
1849 /* If we installed a pretty-printer, re-compare the printed version
1850 to see if the variable changed. */
1851 if (var->pretty_printer)
1853 xfree (print_value);
1854 print_value = value_get_print_value (var->value, var->format, var);
1855 if ((var->print_value == NULL && print_value != NULL)
1856 || (var->print_value != NULL && print_value == NULL)
1857 || (var->print_value != NULL && print_value != NULL
1858 && strcmp (var->print_value, print_value) != 0))
1861 if (var->print_value)
1862 xfree (var->print_value);
1863 var->print_value = print_value;
1865 gdb_assert (!var->value || value_type (var->value));
1870 /* Return the requested range for a varobj. VAR is the varobj. FROM
1871 and TO are out parameters; *FROM and *TO will be set to the
1872 selected sub-range of VAR. If no range was selected using
1873 -var-set-update-range, then both will be -1. */
1875 varobj_get_child_range (struct varobj *var, int *from, int *to)
1881 /* Set the selected sub-range of children of VAR to start at index
1882 FROM and end at index TO. If either FROM or TO is less than zero,
1883 this is interpreted as a request for all children. */
1885 varobj_set_child_range (struct varobj *var, int from, int to)
1892 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1895 PyObject *mainmod, *globals, *constructor;
1896 struct cleanup *back_to;
1898 back_to = varobj_ensure_python_env (var);
1900 mainmod = PyImport_AddModule ("__main__");
1901 globals = PyModule_GetDict (mainmod);
1902 Py_INCREF (globals);
1903 make_cleanup_py_decref (globals);
1905 constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1909 gdbpy_print_stack ();
1910 error (_("Could not evaluate visualizer expression: %s"), visualizer);
1913 construct_visualizer (var, constructor);
1914 Py_XDECREF (constructor);
1916 /* If there are any children now, wipe them. */
1917 varobj_delete (var, NULL, 1 /* children only */);
1918 var->num_children = -1;
1920 do_cleanups (back_to);
1922 error (_("Python support required"));
1926 /* If NEW_VALUE is the new value of the given varobj (var), return
1927 non-zero if var has mutated. In other words, if the type of
1928 the new value is different from the type of the varobj's old
1931 NEW_VALUE may be NULL, if the varobj is now out of scope. */
1934 varobj_value_has_mutated (struct varobj *var, struct value *new_value,
1935 struct type *new_type)
1937 /* If we haven't previously computed the number of children in var,
1938 it does not matter from the front-end's perspective whether
1939 the type has mutated or not. For all intents and purposes,
1940 it has not mutated. */
1941 if (var->num_children < 0)
1944 if (var->root->lang->value_has_mutated)
1945 return var->root->lang->value_has_mutated (var, new_value, new_type);
1950 /* Update the values for a variable and its children. This is a
1951 two-pronged attack. First, re-parse the value for the root's
1952 expression to see if it's changed. Then go all the way
1953 through its children, reconstructing them and noting if they've
1956 The EXPLICIT parameter specifies if this call is result
1957 of MI request to update this specific variable, or
1958 result of implicit -var-update *. For implicit request, we don't
1959 update frozen variables.
1961 NOTE: This function may delete the caller's varobj. If it
1962 returns TYPE_CHANGED, then it has done this and VARP will be modified
1963 to point to the new varobj. */
1965 VEC(varobj_update_result) *
1966 varobj_update (struct varobj **varp, int explicit)
1969 int type_changed = 0;
1972 VEC (varobj_update_result) *stack = NULL;
1973 VEC (varobj_update_result) *result = NULL;
1975 /* Frozen means frozen -- we don't check for any change in
1976 this varobj, including its going out of scope, or
1977 changing type. One use case for frozen varobjs is
1978 retaining previously evaluated expressions, and we don't
1979 want them to be reevaluated at all. */
1980 if (!explicit && (*varp)->frozen)
1983 if (!(*varp)->root->is_valid)
1985 varobj_update_result r = {0};
1988 r.status = VAROBJ_INVALID;
1989 VEC_safe_push (varobj_update_result, result, &r);
1993 if ((*varp)->root->rootvar == *varp)
1995 varobj_update_result r = {0};
1998 r.status = VAROBJ_IN_SCOPE;
2000 /* Update the root variable. value_of_root can return NULL
2001 if the variable is no longer around, i.e. we stepped out of
2002 the frame in which a local existed. We are letting the
2003 value_of_root variable dispose of the varobj if the type
2005 new = value_of_root (varp, &type_changed);
2006 if (update_type_if_necessary(*varp, new))
2009 r.type_changed = type_changed;
2010 if (install_new_value ((*varp), new, type_changed))
2014 r.status = VAROBJ_NOT_IN_SCOPE;
2015 r.value_installed = 1;
2017 if (r.status == VAROBJ_NOT_IN_SCOPE)
2019 if (r.type_changed || r.changed)
2020 VEC_safe_push (varobj_update_result, result, &r);
2024 VEC_safe_push (varobj_update_result, stack, &r);
2028 varobj_update_result r = {0};
2031 VEC_safe_push (varobj_update_result, stack, &r);
2034 /* Walk through the children, reconstructing them all. */
2035 while (!VEC_empty (varobj_update_result, stack))
2037 varobj_update_result r = *(VEC_last (varobj_update_result, stack));
2038 struct varobj *v = r.varobj;
2040 VEC_pop (varobj_update_result, stack);
2042 /* Update this variable, unless it's a root, which is already
2044 if (!r.value_installed)
2046 struct type *new_type;
2048 new = value_of_child (v->parent, v->index);
2049 if (update_type_if_necessary(v, new))
2052 new_type = value_type (new);
2054 new_type = v->root->lang->type_of_child (v->parent, v->index);
2056 if (varobj_value_has_mutated (v, new, new_type))
2058 /* The children are no longer valid; delete them now.
2059 Report the fact that its type changed as well. */
2060 varobj_delete (v, NULL, 1 /* only_children */);
2061 v->num_children = -1;
2068 if (install_new_value (v, new, r.type_changed))
2075 /* We probably should not get children of a varobj that has a
2076 pretty-printer, but for which -var-list-children was never
2078 if (v->pretty_printer)
2080 VEC (varobj_p) *changed = 0, *type_changed = 0, *unchanged = 0;
2081 VEC (varobj_p) *new = 0;
2082 int i, children_changed = 0;
2087 if (!v->children_requested)
2091 /* If we initially did not have potential children, but
2092 now we do, consider the varobj as changed.
2093 Otherwise, if children were never requested, consider
2094 it as unchanged -- presumably, such varobj is not yet
2095 expanded in the UI, so we need not bother getting
2097 if (!varobj_has_more (v, 0))
2099 update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
2101 if (varobj_has_more (v, 0))
2106 VEC_safe_push (varobj_update_result, result, &r);
2111 /* If update_dynamic_varobj_children returns 0, then we have
2112 a non-conforming pretty-printer, so we skip it. */
2113 if (update_dynamic_varobj_children (v, &changed, &type_changed, &new,
2114 &unchanged, &children_changed, 1,
2117 if (children_changed || new)
2119 r.children_changed = 1;
2122 /* Push in reverse order so that the first child is
2123 popped from the work stack first, and so will be
2124 added to result first. This does not affect
2125 correctness, just "nicer". */
2126 for (i = VEC_length (varobj_p, type_changed) - 1; i >= 0; --i)
2128 varobj_p tmp = VEC_index (varobj_p, type_changed, i);
2129 varobj_update_result r = {0};
2131 /* Type may change only if value was changed. */
2135 r.value_installed = 1;
2136 VEC_safe_push (varobj_update_result, stack, &r);
2138 for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
2140 varobj_p tmp = VEC_index (varobj_p, changed, i);
2141 varobj_update_result r = {0};
2145 r.value_installed = 1;
2146 VEC_safe_push (varobj_update_result, stack, &r);
2148 for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
2150 varobj_p tmp = VEC_index (varobj_p, unchanged, i);
2154 varobj_update_result r = {0};
2157 r.value_installed = 1;
2158 VEC_safe_push (varobj_update_result, stack, &r);
2161 if (r.changed || r.children_changed)
2162 VEC_safe_push (varobj_update_result, result, &r);
2164 /* Free CHANGED, TYPE_CHANGED and UNCHANGED, but not NEW,
2165 because NEW has been put into the result vector. */
2166 VEC_free (varobj_p, changed);
2167 VEC_free (varobj_p, type_changed);
2168 VEC_free (varobj_p, unchanged);
2174 /* Push any children. Use reverse order so that the first
2175 child is popped from the work stack first, and so
2176 will be added to result first. This does not
2177 affect correctness, just "nicer". */
2178 for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
2180 varobj_p c = VEC_index (varobj_p, v->children, i);
2182 /* Child may be NULL if explicitly deleted by -var-delete. */
2183 if (c != NULL && !c->frozen)
2185 varobj_update_result r = {0};
2188 VEC_safe_push (varobj_update_result, stack, &r);
2192 if (r.changed || r.type_changed)
2193 VEC_safe_push (varobj_update_result, result, &r);
2196 VEC_free (varobj_update_result, stack);
2202 /* Helper functions */
2205 * Variable object construction/destruction
2209 delete_variable (struct cpstack **resultp, struct varobj *var,
2210 int only_children_p)
2214 delete_variable_1 (resultp, &delcount, var,
2215 only_children_p, 1 /* remove_from_parent_p */ );
2220 /* Delete the variable object VAR and its children. */
2221 /* IMPORTANT NOTE: If we delete a variable which is a child
2222 and the parent is not removed we dump core. It must be always
2223 initially called with remove_from_parent_p set. */
2225 delete_variable_1 (struct cpstack **resultp, int *delcountp,
2226 struct varobj *var, int only_children_p,
2227 int remove_from_parent_p)
2231 /* Delete any children of this variable, too. */
2232 for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
2234 varobj_p child = VEC_index (varobj_p, var->children, i);
2238 if (!remove_from_parent_p)
2239 child->parent = NULL;
2240 delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
2242 VEC_free (varobj_p, var->children);
2244 /* if we were called to delete only the children we are done here. */
2245 if (only_children_p)
2248 /* Otherwise, add it to the list of deleted ones and proceed to do so. */
2249 /* If the name is null, this is a temporary variable, that has not
2250 yet been installed, don't report it, it belongs to the caller... */
2251 if (var->obj_name != NULL)
2253 cppush (resultp, xstrdup (var->obj_name));
2254 *delcountp = *delcountp + 1;
2257 /* If this variable has a parent, remove it from its parent's list. */
2258 /* OPTIMIZATION: if the parent of this variable is also being deleted,
2259 (as indicated by remove_from_parent_p) we don't bother doing an
2260 expensive list search to find the element to remove when we are
2261 discarding the list afterwards. */
2262 if ((remove_from_parent_p) && (var->parent != NULL))
2264 VEC_replace (varobj_p, var->parent->children, var->index, NULL);
2267 if (var->obj_name != NULL)
2268 uninstall_variable (var);
2270 /* Free memory associated with this variable. */
2271 free_variable (var);
2274 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
2276 install_variable (struct varobj *var)
2279 struct vlist *newvl;
2281 unsigned int index = 0;
2284 for (chp = var->obj_name; *chp; chp++)
2286 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
2289 cv = *(varobj_table + index);
2290 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2294 error (_("Duplicate variable object name"));
2296 /* Add varobj to hash table. */
2297 newvl = xmalloc (sizeof (struct vlist));
2298 newvl->next = *(varobj_table + index);
2300 *(varobj_table + index) = newvl;
2302 /* If root, add varobj to root list. */
2303 if (is_root_p (var))
2305 /* Add to list of root variables. */
2306 if (rootlist == NULL)
2307 var->root->next = NULL;
2309 var->root->next = rootlist;
2310 rootlist = var->root;
2316 /* Unistall the object VAR. */
2318 uninstall_variable (struct varobj *var)
2322 struct varobj_root *cr;
2323 struct varobj_root *prer;
2325 unsigned int index = 0;
2328 /* Remove varobj from hash table. */
2329 for (chp = var->obj_name; *chp; chp++)
2331 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
2334 cv = *(varobj_table + index);
2336 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2343 fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
2348 ("Assertion failed: Could not find variable object \"%s\" to delete",
2354 *(varobj_table + index) = cv->next;
2356 prev->next = cv->next;
2360 /* If root, remove varobj from root list. */
2361 if (is_root_p (var))
2363 /* Remove from list of root variables. */
2364 if (rootlist == var->root)
2365 rootlist = var->root->next;
2370 while ((cr != NULL) && (cr->rootvar != var))
2377 warning (_("Assertion failed: Could not find "
2378 "varobj \"%s\" in root list"),
2385 prer->next = cr->next;
2391 /* Create and install a child of the parent of the given name. */
2392 static struct varobj *
2393 create_child (struct varobj *parent, int index, char *name)
2395 return create_child_with_value (parent, index, name,
2396 value_of_child (parent, index));
2399 /* Does CHILD represent a child with no name? This happens when
2400 the child is an anonmous struct or union and it has no field name
2401 in its parent variable.
2403 This has already been determined by *_describe_child. The easiest
2404 thing to do is to compare the child's name with ANONYMOUS_*_NAME. */
2407 is_anonymous_child (struct varobj *child)
2409 return (strcmp (child->name, ANONYMOUS_STRUCT_NAME) == 0
2410 || strcmp (child->name, ANONYMOUS_UNION_NAME) == 0);
2413 static struct varobj *
2414 create_child_with_value (struct varobj *parent, int index, const char *name,
2415 struct value *value)
2417 struct varobj *child;
2420 child = new_variable ();
2422 /* Name is allocated by name_of_child. */
2423 /* FIXME: xstrdup should not be here. */
2424 child->name = xstrdup (name);
2425 child->index = index;
2426 child->parent = parent;
2427 child->root = parent->root;
2429 if (is_anonymous_child (child))
2430 childs_name = xstrprintf ("%s.%d_anonymous", parent->obj_name, index);
2432 childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
2433 child->obj_name = childs_name;
2435 install_variable (child);
2437 /* Compute the type of the child. Must do this before
2438 calling install_new_value. */
2440 /* If the child had no evaluation errors, var->value
2441 will be non-NULL and contain a valid type. */
2442 child->type = value_actual_type (value, 0, NULL);
2444 /* Otherwise, we must compute the type. */
2445 child->type = (*child->root->lang->type_of_child) (child->parent,
2447 install_new_value (child, value, 1);
2454 * Miscellaneous utility functions.
2457 /* Allocate memory and initialize a new variable. */
2458 static struct varobj *
2463 var = (struct varobj *) xmalloc (sizeof (struct varobj));
2465 var->path_expr = NULL;
2466 var->obj_name = NULL;
2470 var->num_children = -1;
2472 var->children = NULL;
2476 var->print_value = NULL;
2478 var->not_fetched = 0;
2479 var->children_requested = 0;
2482 var->constructor = 0;
2483 var->pretty_printer = 0;
2484 var->child_iter = 0;
2485 var->saved_item = 0;
2490 /* Allocate memory and initialize a new root variable. */
2491 static struct varobj *
2492 new_root_variable (void)
2494 struct varobj *var = new_variable ();
2496 var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));
2497 var->root->lang = NULL;
2498 var->root->exp = NULL;
2499 var->root->valid_block = NULL;
2500 var->root->frame = null_frame_id;
2501 var->root->floating = 0;
2502 var->root->rootvar = NULL;
2503 var->root->is_valid = 1;
2508 /* Free any allocated memory associated with VAR. */
2510 free_variable (struct varobj *var)
2513 if (var->pretty_printer)
2515 struct cleanup *cleanup = varobj_ensure_python_env (var);
2516 Py_XDECREF (var->constructor);
2517 Py_XDECREF (var->pretty_printer);
2518 Py_XDECREF (var->child_iter);
2519 Py_XDECREF (var->saved_item);
2520 do_cleanups (cleanup);
2524 value_free (var->value);
2526 /* Free the expression if this is a root variable. */
2527 if (is_root_p (var))
2529 xfree (var->root->exp);
2534 xfree (var->obj_name);
2535 xfree (var->print_value);
2536 xfree (var->path_expr);
2541 do_free_variable_cleanup (void *var)
2543 free_variable (var);
2546 static struct cleanup *
2547 make_cleanup_free_variable (struct varobj *var)
2549 return make_cleanup (do_free_variable_cleanup, var);
2552 /* This returns the type of the variable. It also skips past typedefs
2553 to return the real type of the variable.
2555 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2556 except within get_target_type and get_type. */
2557 static struct type *
2558 get_type (struct varobj *var)
2564 type = check_typedef (type);
2569 /* Return the type of the value that's stored in VAR,
2570 or that would have being stored there if the
2571 value were accessible.
2573 This differs from VAR->type in that VAR->type is always
2574 the true type of the expession in the source language.
2575 The return value of this function is the type we're
2576 actually storing in varobj, and using for displaying
2577 the values and for comparing previous and new values.
2579 For example, top-level references are always stripped. */
2580 static struct type *
2581 get_value_type (struct varobj *var)
2586 type = value_type (var->value);
2590 type = check_typedef (type);
2592 if (TYPE_CODE (type) == TYPE_CODE_REF)
2593 type = get_target_type (type);
2595 type = check_typedef (type);
2600 /* This returns the target type (or NULL) of TYPE, also skipping
2601 past typedefs, just like get_type ().
2603 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2604 except within get_target_type and get_type. */
2605 static struct type *
2606 get_target_type (struct type *type)
2610 type = TYPE_TARGET_TYPE (type);
2612 type = check_typedef (type);
2618 /* What is the default display for this variable? We assume that
2619 everything is "natural". Any exceptions? */
2620 static enum varobj_display_formats
2621 variable_default_display (struct varobj *var)
2623 return FORMAT_NATURAL;
2626 /* FIXME: The following should be generic for any pointer. */
2628 cppush (struct cpstack **pstack, char *name)
2632 s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2638 /* FIXME: The following should be generic for any pointer. */
2640 cppop (struct cpstack **pstack)
2645 if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2650 *pstack = (*pstack)->next;
2657 * Language-dependencies
2660 /* Common entry points */
2662 /* Get the language of variable VAR. */
2663 static enum varobj_languages
2664 variable_language (struct varobj *var)
2666 enum varobj_languages lang;
2668 switch (var->root->exp->language_defn->la_language)
2674 case language_cplus:
2688 /* Return the number of children for a given variable.
2689 The result of this function is defined by the language
2690 implementation. The number of children returned by this function
2691 is the number of children that the user will see in the variable
2694 number_of_children (struct varobj *var)
2696 return (*var->root->lang->number_of_children) (var);
2699 /* What is the expression for the root varobj VAR? Returns a malloc'd
2702 name_of_variable (struct varobj *var)
2704 return (*var->root->lang->name_of_variable) (var);
2707 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd
2710 name_of_child (struct varobj *var, int index)
2712 return (*var->root->lang->name_of_child) (var, index);
2715 /* What is the ``struct value *'' of the root variable VAR?
2716 For floating variable object, evaluation can get us a value
2717 of different type from what is stored in varobj already. In
2719 - *type_changed will be set to 1
2720 - old varobj will be freed, and new one will be
2721 created, with the same name.
2722 - *var_handle will be set to the new varobj
2723 Otherwise, *type_changed will be set to 0. */
2724 static struct value *
2725 value_of_root (struct varobj **var_handle, int *type_changed)
2729 if (var_handle == NULL)
2734 /* This should really be an exception, since this should
2735 only get called with a root variable. */
2737 if (!is_root_p (var))
2740 if (var->root->floating)
2742 struct varobj *tmp_var;
2743 char *old_type, *new_type;
2745 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2746 USE_SELECTED_FRAME);
2747 if (tmp_var == NULL)
2751 old_type = varobj_get_type (var);
2752 new_type = varobj_get_type (tmp_var);
2753 if (strcmp (old_type, new_type) == 0)
2755 /* The expression presently stored inside var->root->exp
2756 remembers the locations of local variables relatively to
2757 the frame where the expression was created (in DWARF location
2758 button, for example). Naturally, those locations are not
2759 correct in other frames, so update the expression. */
2761 struct expression *tmp_exp = var->root->exp;
2763 var->root->exp = tmp_var->root->exp;
2764 tmp_var->root->exp = tmp_exp;
2766 varobj_delete (tmp_var, NULL, 0);
2771 tmp_var->obj_name = xstrdup (var->obj_name);
2772 tmp_var->from = var->from;
2773 tmp_var->to = var->to;
2774 varobj_delete (var, NULL, 0);
2776 install_variable (tmp_var);
2777 *var_handle = tmp_var;
2790 struct value *value;
2792 value = (*var->root->lang->value_of_root) (var_handle);
2793 if (var->value == NULL || value == NULL)
2795 /* For root varobj-s, a NULL value indicates a scoping issue.
2796 So, nothing to do in terms of checking for mutations. */
2798 else if (varobj_value_has_mutated (var, value, value_type (value)))
2800 /* The type has mutated, so the children are no longer valid.
2801 Just delete them, and tell our caller that the type has
2803 varobj_delete (var, NULL, 1 /* only_children */);
2804 var->num_children = -1;
2813 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
2814 static struct value *
2815 value_of_child (struct varobj *parent, int index)
2817 struct value *value;
2819 value = (*parent->root->lang->value_of_child) (parent, index);
2824 /* GDB already has a command called "value_of_variable". Sigh. */
2826 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2828 if (var->root->is_valid)
2830 if (var->pretty_printer)
2831 return value_get_print_value (var->value, var->format, var);
2832 return (*var->root->lang->value_of_variable) (var, format);
2839 value_get_print_value (struct value *value, enum varobj_display_formats format,
2842 struct ui_file *stb;
2843 struct cleanup *old_chain;
2844 gdb_byte *thevalue = NULL;
2845 struct value_print_options opts;
2846 struct type *type = NULL;
2848 char *encoding = NULL;
2849 struct gdbarch *gdbarch = NULL;
2850 /* Initialize it just to avoid a GCC false warning. */
2851 CORE_ADDR str_addr = 0;
2852 int string_print = 0;
2857 stb = mem_fileopen ();
2858 old_chain = make_cleanup_ui_file_delete (stb);
2860 gdbarch = get_type_arch (value_type (value));
2863 PyObject *value_formatter = var->pretty_printer;
2865 varobj_ensure_python_env (var);
2867 if (value_formatter)
2869 /* First check to see if we have any children at all. If so,
2870 we simply return {...}. */
2871 if (dynamic_varobj_has_child_method (var))
2873 do_cleanups (old_chain);
2874 return xstrdup ("{...}");
2877 if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2879 struct value *replacement;
2880 PyObject *output = NULL;
2882 output = apply_varobj_pretty_printer (value_formatter,
2886 /* If we have string like output ... */
2889 make_cleanup_py_decref (output);
2891 /* If this is a lazy string, extract it. For lazy
2892 strings we always print as a string, so set
2894 if (gdbpy_is_lazy_string (output))
2896 gdbpy_extract_lazy_string (output, &str_addr, &type,
2898 make_cleanup (free_current_contents, &encoding);
2903 /* If it is a regular (non-lazy) string, extract
2904 it and copy the contents into THEVALUE. If the
2905 hint says to print it as a string, set
2906 string_print. Otherwise just return the extracted
2907 string as a value. */
2910 = python_string_to_target_python_string (output);
2914 char *s = PyString_AsString (py_str);
2917 hint = gdbpy_get_display_hint (value_formatter);
2920 if (!strcmp (hint, "string"))
2925 len = PyString_Size (py_str);
2926 thevalue = xmemdup (s, len + 1, len + 1);
2927 type = builtin_type (gdbarch)->builtin_char;
2932 do_cleanups (old_chain);
2936 make_cleanup (xfree, thevalue);
2939 gdbpy_print_stack ();
2942 /* If the printer returned a replacement value, set VALUE
2943 to REPLACEMENT. If there is not a replacement value,
2944 just use the value passed to this function. */
2946 value = replacement;
2952 get_formatted_print_options (&opts, format_code[(int) format]);
2956 /* If the THEVALUE has contents, it is a regular string. */
2958 LA_PRINT_STRING (stb, type, thevalue, len, encoding, 0, &opts);
2959 else if (string_print)
2960 /* Otherwise, if string_print is set, and it is not a regular
2961 string, it is a lazy string. */
2962 val_print_string (type, encoding, str_addr, len, stb, &opts);
2964 /* All other cases. */
2965 common_val_print (value, stb, 0, &opts, current_language);
2967 thevalue = ui_file_xstrdup (stb, NULL);
2969 do_cleanups (old_chain);
2974 varobj_editable_p (struct varobj *var)
2978 if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2981 type = get_value_type (var);
2983 switch (TYPE_CODE (type))
2985 case TYPE_CODE_STRUCT:
2986 case TYPE_CODE_UNION:
2987 case TYPE_CODE_ARRAY:
2988 case TYPE_CODE_FUNC:
2989 case TYPE_CODE_METHOD:
2999 /* Call VAR's value_is_changeable_p language-specific callback. */
3002 varobj_value_is_changeable_p (struct varobj *var)
3004 return var->root->lang->value_is_changeable_p (var);
3007 /* Return 1 if that varobj is floating, that is is always evaluated in the
3008 selected frame, and not bound to thread/frame. Such variable objects
3009 are created using '@' as frame specifier to -var-create. */
3011 varobj_floating_p (struct varobj *var)
3013 return var->root->floating;
3016 /* Given the value and the type of a variable object,
3017 adjust the value and type to those necessary
3018 for getting children of the variable object.
3019 This includes dereferencing top-level references
3020 to all types and dereferencing pointers to
3023 If LOOKUP_ACTUAL_TYPE is set the enclosing type of the
3024 value will be fetched and if it differs from static type
3025 the value will be casted to it.
3027 Both TYPE and *TYPE should be non-null. VALUE
3028 can be null if we want to only translate type.
3029 *VALUE can be null as well -- if the parent
3032 If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
3033 depending on whether pointer was dereferenced
3034 in this function. */
3036 adjust_value_for_child_access (struct value **value,
3039 int lookup_actual_type)
3041 gdb_assert (type && *type);
3046 *type = check_typedef (*type);
3048 /* The type of value stored in varobj, that is passed
3049 to us, is already supposed to be
3050 reference-stripped. */
3052 gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
3054 /* Pointers to structures are treated just like
3055 structures when accessing children. Don't
3056 dererences pointers to other types. */
3057 if (TYPE_CODE (*type) == TYPE_CODE_PTR)
3059 struct type *target_type = get_target_type (*type);
3060 if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
3061 || TYPE_CODE (target_type) == TYPE_CODE_UNION)
3063 if (value && *value)
3065 volatile struct gdb_exception except;
3067 TRY_CATCH (except, RETURN_MASK_ERROR)
3069 *value = value_ind (*value);
3072 if (except.reason < 0)
3075 *type = target_type;
3081 /* The 'get_target_type' function calls check_typedef on
3082 result, so we can immediately check type code. No
3083 need to call check_typedef here. */
3085 /* Access a real type of the value (if necessary and possible). */
3086 if (value && *value && lookup_actual_type)
3088 struct type *enclosing_type;
3089 int real_type_found = 0;
3091 enclosing_type = value_actual_type (*value, 1, &real_type_found);
3092 if (real_type_found)
3094 *type = enclosing_type;
3095 *value = value_cast (enclosing_type, *value);
3100 /* Implement the "value_is_changeable_p" varobj callback for most
3104 default_value_is_changeable_p (struct varobj *var)
3109 if (CPLUS_FAKE_CHILD (var))
3112 type = get_value_type (var);
3114 switch (TYPE_CODE (type))
3116 case TYPE_CODE_STRUCT:
3117 case TYPE_CODE_UNION:
3118 case TYPE_CODE_ARRAY:
3132 c_number_of_children (struct varobj *var)
3134 struct type *type = get_value_type (var);
3136 struct type *target;
3138 adjust_value_for_child_access (NULL, &type, NULL, 0);
3139 target = get_target_type (type);
3141 switch (TYPE_CODE (type))
3143 case TYPE_CODE_ARRAY:
3144 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
3145 && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
3146 children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
3148 /* If we don't know how many elements there are, don't display
3153 case TYPE_CODE_STRUCT:
3154 case TYPE_CODE_UNION:
3155 children = TYPE_NFIELDS (type);
3159 /* The type here is a pointer to non-struct. Typically, pointers
3160 have one child, except for function ptrs, which have no children,
3161 and except for void*, as we don't know what to show.
3163 We can show char* so we allow it to be dereferenced. If you decide
3164 to test for it, please mind that a little magic is necessary to
3165 properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
3166 TYPE_NAME == "char". */
3167 if (TYPE_CODE (target) == TYPE_CODE_FUNC
3168 || TYPE_CODE (target) == TYPE_CODE_VOID)
3175 /* Other types have no children. */
3183 c_name_of_variable (struct varobj *parent)
3185 return xstrdup (parent->name);
3188 /* Return the value of element TYPE_INDEX of a structure
3189 value VALUE. VALUE's type should be a structure,
3190 or union, or a typedef to struct/union.
3192 Returns NULL if getting the value fails. Never throws. */
3193 static struct value *
3194 value_struct_element_index (struct value *value, int type_index)
3196 struct value *result = NULL;
3197 volatile struct gdb_exception e;
3198 struct type *type = value_type (value);
3200 type = check_typedef (type);
3202 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
3203 || TYPE_CODE (type) == TYPE_CODE_UNION);
3205 TRY_CATCH (e, RETURN_MASK_ERROR)
3207 if (field_is_static (&TYPE_FIELD (type, type_index)))
3208 result = value_static_field (type, type_index);
3210 result = value_primitive_field (value, 0, type_index, type);
3222 /* Obtain the information about child INDEX of the variable
3224 If CNAME is not null, sets *CNAME to the name of the child relative
3226 If CVALUE is not null, sets *CVALUE to the value of the child.
3227 If CTYPE is not null, sets *CTYPE to the type of the child.
3229 If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
3230 information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
3233 c_describe_child (struct varobj *parent, int index,
3234 char **cname, struct value **cvalue, struct type **ctype,
3235 char **cfull_expression)
3237 struct value *value = parent->value;
3238 struct type *type = get_value_type (parent);
3239 char *parent_expression = NULL;
3241 volatile struct gdb_exception except;
3249 if (cfull_expression)
3251 *cfull_expression = NULL;
3252 parent_expression = varobj_get_path_expr (get_path_expr_parent (parent));
3254 adjust_value_for_child_access (&value, &type, &was_ptr, 0);
3256 switch (TYPE_CODE (type))
3258 case TYPE_CODE_ARRAY:
3261 = xstrdup (int_string (index
3262 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
3265 if (cvalue && value)
3267 int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
3269 TRY_CATCH (except, RETURN_MASK_ERROR)
3271 *cvalue = value_subscript (value, real_index);
3276 *ctype = get_target_type (type);
3278 if (cfull_expression)
3280 xstrprintf ("(%s)[%s]", parent_expression,
3282 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
3288 case TYPE_CODE_STRUCT:
3289 case TYPE_CODE_UNION:
3291 const char *field_name;
3293 /* If the type is anonymous and the field has no name,
3294 set an appropriate name. */
3295 field_name = TYPE_FIELD_NAME (type, index);
3296 if (field_name == NULL || *field_name == '\0')
3300 if (TYPE_CODE (TYPE_FIELD_TYPE (type, index))
3301 == TYPE_CODE_STRUCT)
3302 *cname = xstrdup (ANONYMOUS_STRUCT_NAME);
3304 *cname = xstrdup (ANONYMOUS_UNION_NAME);
3307 if (cfull_expression)
3308 *cfull_expression = xstrdup ("");
3313 *cname = xstrdup (field_name);
3315 if (cfull_expression)
3317 char *join = was_ptr ? "->" : ".";
3319 *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression,
3324 if (cvalue && value)
3326 /* For C, varobj index is the same as type index. */
3327 *cvalue = value_struct_element_index (value, index);
3331 *ctype = TYPE_FIELD_TYPE (type, index);
3337 *cname = xstrprintf ("*%s", parent->name);
3339 if (cvalue && value)
3341 TRY_CATCH (except, RETURN_MASK_ERROR)
3343 *cvalue = value_ind (value);
3346 if (except.reason < 0)
3350 /* Don't use get_target_type because it calls
3351 check_typedef and here, we want to show the true
3352 declared type of the variable. */
3354 *ctype = TYPE_TARGET_TYPE (type);
3356 if (cfull_expression)
3357 *cfull_expression = xstrprintf ("*(%s)", parent_expression);
3362 /* This should not happen. */
3364 *cname = xstrdup ("???");
3365 if (cfull_expression)
3366 *cfull_expression = xstrdup ("???");
3367 /* Don't set value and type, we don't know then. */
3372 c_name_of_child (struct varobj *parent, int index)
3376 c_describe_child (parent, index, &name, NULL, NULL, NULL);
3381 c_path_expr_of_child (struct varobj *child)
3383 c_describe_child (child->parent, child->index, NULL, NULL, NULL,
3385 return child->path_expr;
3388 /* If frame associated with VAR can be found, switch
3389 to it and return 1. Otherwise, return 0. */
3391 check_scope (struct varobj *var)
3393 struct frame_info *fi;
3396 fi = frame_find_by_id (var->root->frame);
3401 CORE_ADDR pc = get_frame_pc (fi);
3403 if (pc < BLOCK_START (var->root->valid_block) ||
3404 pc >= BLOCK_END (var->root->valid_block))
3412 static struct value *
3413 c_value_of_root (struct varobj **var_handle)
3415 struct value *new_val = NULL;
3416 struct varobj *var = *var_handle;
3417 int within_scope = 0;
3418 struct cleanup *back_to;
3420 /* Only root variables can be updated... */
3421 if (!is_root_p (var))
3422 /* Not a root var. */
3425 back_to = make_cleanup_restore_current_thread ();
3427 /* Determine whether the variable is still around. */
3428 if (var->root->valid_block == NULL || var->root->floating)
3430 else if (var->root->thread_id == 0)
3432 /* The program was single-threaded when the variable object was
3433 created. Technically, it's possible that the program became
3434 multi-threaded since then, but we don't support such
3436 within_scope = check_scope (var);
3440 ptid_t ptid = thread_id_to_pid (var->root->thread_id);
3441 if (in_thread_list (ptid))
3443 switch_to_thread (ptid);
3444 within_scope = check_scope (var);
3450 volatile struct gdb_exception except;
3452 /* We need to catch errors here, because if evaluate
3453 expression fails we want to just return NULL. */
3454 TRY_CATCH (except, RETURN_MASK_ERROR)
3456 new_val = evaluate_expression (var->root->exp);
3462 do_cleanups (back_to);
3467 static struct value *
3468 c_value_of_child (struct varobj *parent, int index)
3470 struct value *value = NULL;
3472 c_describe_child (parent, index, NULL, &value, NULL, NULL);
3476 static struct type *
3477 c_type_of_child (struct varobj *parent, int index)
3479 struct type *type = NULL;
3481 c_describe_child (parent, index, NULL, NULL, &type, NULL);
3486 c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3488 /* BOGUS: if val_print sees a struct/class, or a reference to one,
3489 it will print out its children instead of "{...}". So we need to
3490 catch that case explicitly. */
3491 struct type *type = get_type (var);
3493 /* Strip top-level references. */
3494 while (TYPE_CODE (type) == TYPE_CODE_REF)
3495 type = check_typedef (TYPE_TARGET_TYPE (type));
3497 switch (TYPE_CODE (type))
3499 case TYPE_CODE_STRUCT:
3500 case TYPE_CODE_UNION:
3501 return xstrdup ("{...}");
3504 case TYPE_CODE_ARRAY:
3508 number = xstrprintf ("[%d]", var->num_children);
3515 if (var->value == NULL)
3517 /* This can happen if we attempt to get the value of a struct
3518 member when the parent is an invalid pointer. This is an
3519 error condition, so we should tell the caller. */
3524 if (var->not_fetched && value_lazy (var->value))
3525 /* Frozen variable and no value yet. We don't
3526 implicitly fetch the value. MI response will
3527 use empty string for the value, which is OK. */
3530 gdb_assert (varobj_value_is_changeable_p (var));
3531 gdb_assert (!value_lazy (var->value));
3533 /* If the specified format is the current one,
3534 we can reuse print_value. */
3535 if (format == var->format)
3536 return xstrdup (var->print_value);
3538 return value_get_print_value (var->value, format, var);
3548 cplus_number_of_children (struct varobj *var)
3550 struct value *value = NULL;
3552 int children, dont_know;
3553 int lookup_actual_type = 0;
3554 struct value_print_options opts;
3559 get_user_print_options (&opts);
3561 if (!CPLUS_FAKE_CHILD (var))
3563 type = get_value_type (var);
3565 /* It is necessary to access a real type (via RTTI). */
3566 if (opts.objectprint)
3569 lookup_actual_type = (TYPE_CODE (var->type) == TYPE_CODE_REF
3570 || TYPE_CODE (var->type) == TYPE_CODE_PTR);
3572 adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
3574 if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
3575 ((TYPE_CODE (type)) == TYPE_CODE_UNION))
3579 cplus_class_num_children (type, kids);
3580 if (kids[v_public] != 0)
3582 if (kids[v_private] != 0)
3584 if (kids[v_protected] != 0)
3587 /* Add any baseclasses. */
3588 children += TYPE_N_BASECLASSES (type);
3591 /* FIXME: save children in var. */
3598 type = get_value_type (var->parent);
3600 /* It is necessary to access a real type (via RTTI). */
3601 if (opts.objectprint)
3603 struct varobj *parent = var->parent;
3605 value = parent->value;
3606 lookup_actual_type = (TYPE_CODE (parent->type) == TYPE_CODE_REF
3607 || TYPE_CODE (parent->type) == TYPE_CODE_PTR);
3609 adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
3611 cplus_class_num_children (type, kids);
3612 if (strcmp (var->name, "public") == 0)
3613 children = kids[v_public];
3614 else if (strcmp (var->name, "private") == 0)
3615 children = kids[v_private];
3617 children = kids[v_protected];
3622 children = c_number_of_children (var);
3627 /* Compute # of public, private, and protected variables in this class.
3628 That means we need to descend into all baseclasses and find out
3629 how many are there, too. */
3631 cplus_class_num_children (struct type *type, int children[3])
3633 int i, vptr_fieldno;
3634 struct type *basetype = NULL;
3636 children[v_public] = 0;
3637 children[v_private] = 0;
3638 children[v_protected] = 0;
3640 vptr_fieldno = get_vptr_fieldno (type, &basetype);
3641 for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
3643 /* If we have a virtual table pointer, omit it. Even if virtual
3644 table pointers are not specifically marked in the debug info,
3645 they should be artificial. */
3646 if ((type == basetype && i == vptr_fieldno)
3647 || TYPE_FIELD_ARTIFICIAL (type, i))
3650 if (TYPE_FIELD_PROTECTED (type, i))
3651 children[v_protected]++;
3652 else if (TYPE_FIELD_PRIVATE (type, i))
3653 children[v_private]++;
3655 children[v_public]++;
3660 cplus_name_of_variable (struct varobj *parent)
3662 return c_name_of_variable (parent);
3665 enum accessibility { private_field, protected_field, public_field };
3667 /* Check if field INDEX of TYPE has the specified accessibility.
3668 Return 0 if so and 1 otherwise. */
3670 match_accessibility (struct type *type, int index, enum accessibility acc)
3672 if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
3674 else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
3676 else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
3677 && !TYPE_FIELD_PROTECTED (type, index))
3684 cplus_describe_child (struct varobj *parent, int index,
3685 char **cname, struct value **cvalue, struct type **ctype,
3686 char **cfull_expression)
3688 struct value *value;
3691 int lookup_actual_type = 0;
3692 char *parent_expression = NULL;
3694 struct value_print_options opts;
3702 if (cfull_expression)
3703 *cfull_expression = NULL;
3705 get_user_print_options (&opts);
3707 var = (CPLUS_FAKE_CHILD (parent)) ? parent->parent : parent;
3708 if (opts.objectprint)
3709 lookup_actual_type = (TYPE_CODE (var->type) == TYPE_CODE_REF
3710 || TYPE_CODE (var->type) == TYPE_CODE_PTR);
3712 type = get_value_type (var);
3713 if (cfull_expression)
3714 parent_expression = varobj_get_path_expr (get_path_expr_parent (var));
3716 adjust_value_for_child_access (&value, &type, &was_ptr, lookup_actual_type);
3718 if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3719 || TYPE_CODE (type) == TYPE_CODE_UNION)
3721 char *join = was_ptr ? "->" : ".";
3723 if (CPLUS_FAKE_CHILD (parent))
3725 /* The fields of the class type are ordered as they
3726 appear in the class. We are given an index for a
3727 particular access control type ("public","protected",
3728 or "private"). We must skip over fields that don't
3729 have the access control we are looking for to properly
3730 find the indexed field. */
3731 int type_index = TYPE_N_BASECLASSES (type);
3732 enum accessibility acc = public_field;
3734 struct type *basetype = NULL;
3735 const char *field_name;
3737 vptr_fieldno = get_vptr_fieldno (type, &basetype);
3738 if (strcmp (parent->name, "private") == 0)
3739 acc = private_field;
3740 else if (strcmp (parent->name, "protected") == 0)
3741 acc = protected_field;
3745 if ((type == basetype && type_index == vptr_fieldno)
3746 || TYPE_FIELD_ARTIFICIAL (type, type_index))
3748 else if (match_accessibility (type, type_index, acc))
3754 /* If the type is anonymous and the field has no name,
3755 set an appopriate name. */
3756 field_name = TYPE_FIELD_NAME (type, type_index);
3757 if (field_name == NULL || *field_name == '\0')
3761 if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
3762 == TYPE_CODE_STRUCT)
3763 *cname = xstrdup (ANONYMOUS_STRUCT_NAME);
3764 else if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
3766 *cname = xstrdup (ANONYMOUS_UNION_NAME);
3769 if (cfull_expression)
3770 *cfull_expression = xstrdup ("");
3775 *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
3777 if (cfull_expression)
3779 = xstrprintf ("((%s)%s%s)", parent_expression, join,
3783 if (cvalue && value)
3784 *cvalue = value_struct_element_index (value, type_index);
3787 *ctype = TYPE_FIELD_TYPE (type, type_index);
3789 else if (index < TYPE_N_BASECLASSES (type))
3791 /* This is a baseclass. */
3793 *cname = xstrdup (TYPE_FIELD_NAME (type, index));
3795 if (cvalue && value)
3796 *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
3800 *ctype = TYPE_FIELD_TYPE (type, index);
3803 if (cfull_expression)
3805 char *ptr = was_ptr ? "*" : "";
3807 /* Cast the parent to the base' type. Note that in gdb,
3810 will create an lvalue, for all appearences, so we don't
3811 need to use more fancy:
3815 When we are in the scope of the base class or of one
3816 of its children, the type field name will be interpreted
3817 as a constructor, if it exists. Therefore, we must
3818 indicate that the name is a class name by using the
3819 'class' keyword. See PR mi/11912 */
3820 *cfull_expression = xstrprintf ("(%s(class %s%s) %s)",
3822 TYPE_FIELD_NAME (type, index),
3829 char *access = NULL;
3832 cplus_class_num_children (type, children);
3834 /* Everything beyond the baseclasses can
3835 only be "public", "private", or "protected"
3837 The special "fake" children are always output by varobj in
3838 this order. So if INDEX == 2, it MUST be "protected". */
3839 index -= TYPE_N_BASECLASSES (type);
3843 if (children[v_public] > 0)
3845 else if (children[v_private] > 0)
3848 access = "protected";
3851 if (children[v_public] > 0)
3853 if (children[v_private] > 0)
3856 access = "protected";
3858 else if (children[v_private] > 0)
3859 access = "protected";
3862 /* Must be protected. */
3863 access = "protected";
3870 gdb_assert (access);
3872 *cname = xstrdup (access);
3874 /* Value and type and full expression are null here. */
3879 c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
3884 cplus_name_of_child (struct varobj *parent, int index)
3888 cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
3893 cplus_path_expr_of_child (struct varobj *child)
3895 cplus_describe_child (child->parent, child->index, NULL, NULL, NULL,
3897 return child->path_expr;
3900 static struct value *
3901 cplus_value_of_root (struct varobj **var_handle)
3903 return c_value_of_root (var_handle);
3906 static struct value *
3907 cplus_value_of_child (struct varobj *parent, int index)
3909 struct value *value = NULL;
3911 cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
3915 static struct type *
3916 cplus_type_of_child (struct varobj *parent, int index)
3918 struct type *type = NULL;
3920 cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
3925 cplus_value_of_variable (struct varobj *var,
3926 enum varobj_display_formats format)
3929 /* If we have one of our special types, don't print out
3931 if (CPLUS_FAKE_CHILD (var))
3932 return xstrdup ("");
3934 return c_value_of_variable (var, format);
3940 java_number_of_children (struct varobj *var)
3942 return cplus_number_of_children (var);
3946 java_name_of_variable (struct varobj *parent)
3950 name = cplus_name_of_variable (parent);
3951 /* If the name has "-" in it, it is because we
3952 needed to escape periods in the name... */
3955 while (*p != '\000')
3966 java_name_of_child (struct varobj *parent, int index)
3970 name = cplus_name_of_child (parent, index);
3971 /* Escape any periods in the name... */
3974 while (*p != '\000')
3985 java_path_expr_of_child (struct varobj *child)
3990 static struct value *
3991 java_value_of_root (struct varobj **var_handle)
3993 return cplus_value_of_root (var_handle);
3996 static struct value *
3997 java_value_of_child (struct varobj *parent, int index)
3999 return cplus_value_of_child (parent, index);
4002 static struct type *
4003 java_type_of_child (struct varobj *parent, int index)
4005 return cplus_type_of_child (parent, index);
4009 java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
4011 return cplus_value_of_variable (var, format);
4014 /* Ada specific callbacks for VAROBJs. */
4017 ada_number_of_children (struct varobj *var)
4019 return ada_varobj_get_number_of_children (var->value, var->type);
4023 ada_name_of_variable (struct varobj *parent)
4025 return c_name_of_variable (parent);
4029 ada_name_of_child (struct varobj *parent, int index)
4031 return ada_varobj_get_name_of_child (parent->value, parent->type,
4032 parent->name, index);
4036 ada_path_expr_of_child (struct varobj *child)
4038 struct varobj *parent = child->parent;
4039 const char *parent_path_expr = varobj_get_path_expr (parent);
4041 return ada_varobj_get_path_expr_of_child (parent->value,
4048 static struct value *
4049 ada_value_of_root (struct varobj **var_handle)
4051 return c_value_of_root (var_handle);
4054 static struct value *
4055 ada_value_of_child (struct varobj *parent, int index)
4057 return ada_varobj_get_value_of_child (parent->value, parent->type,
4058 parent->name, index);
4061 static struct type *
4062 ada_type_of_child (struct varobj *parent, int index)
4064 return ada_varobj_get_type_of_child (parent->value, parent->type,
4069 ada_value_of_variable (struct varobj *var, enum varobj_display_formats format)
4071 struct value_print_options opts;
4073 get_formatted_print_options (&opts, format_code[(int) format]);
4077 return ada_varobj_get_value_of_variable (var->value, var->type, &opts);
4080 /* Implement the "value_is_changeable_p" routine for Ada. */
4083 ada_value_is_changeable_p (struct varobj *var)
4085 struct type *type = var->value ? value_type (var->value) : var->type;
4087 if (ada_is_array_descriptor_type (type)
4088 && TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
4090 /* This is in reality a pointer to an unconstrained array.
4091 its value is changeable. */
4095 if (ada_is_string_type (type))
4097 /* We display the contents of the string in the array's
4098 "value" field. The contents can change, so consider
4099 that the array is changeable. */
4103 return default_value_is_changeable_p (var);
4106 /* Implement the "value_has_mutated" routine for Ada. */
4109 ada_value_has_mutated (struct varobj *var, struct value *new_val,
4110 struct type *new_type)
4116 /* If the number of fields have changed, then for sure the type
4118 if (ada_varobj_get_number_of_children (new_val, new_type)
4119 != var->num_children)
4122 /* If the number of fields have remained the same, then we need
4123 to check the name of each field. If they remain the same,
4124 then chances are the type hasn't mutated. This is technically
4125 an incomplete test, as the child's type might have changed
4126 despite the fact that the name remains the same. But we'll
4127 handle this situation by saying that the child has mutated,
4130 If only part (or none!) of the children have been fetched,
4131 then only check the ones we fetched. It does not matter
4132 to the frontend whether a child that it has not fetched yet
4133 has mutated or not. So just assume it hasn't. */
4135 restrict_range (var->children, &from, &to);
4136 for (i = from; i < to; i++)
4137 if (strcmp (ada_varobj_get_name_of_child (new_val, new_type,
4139 VEC_index (varobj_p, var->children, i)->name) != 0)
4145 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
4146 with an arbitrary caller supplied DATA pointer. */
4149 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
4151 struct varobj_root *var_root, *var_root_next;
4153 /* Iterate "safely" - handle if the callee deletes its passed VAROBJ. */
4155 for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
4157 var_root_next = var_root->next;
4159 (*func) (var_root->rootvar, data);
4163 extern void _initialize_varobj (void);
4165 _initialize_varobj (void)
4167 int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
4169 varobj_table = xmalloc (sizeof_table);
4170 memset (varobj_table, 0, sizeof_table);
4172 add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
4174 _("Set varobj debugging."),
4175 _("Show varobj debugging."),
4176 _("When non-zero, varobj debugging is enabled."),
4177 NULL, show_varobjdebug,
4178 &setlist, &showlist);
4181 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
4182 defined on globals. It is a helper for varobj_invalidate. */
4185 varobj_invalidate_iter (struct varobj *var, void *unused)
4187 /* Floating varobjs are reparsed on each stop, so we don't care if the
4188 presently parsed expression refers to something that's gone. */
4189 if (var->root->floating)
4192 /* global var must be re-evaluated. */
4193 if (var->root->valid_block == NULL)
4195 struct varobj *tmp_var;
4197 /* Try to create a varobj with same expression. If we succeed
4198 replace the old varobj, otherwise invalidate it. */
4199 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
4201 if (tmp_var != NULL)
4203 tmp_var->obj_name = xstrdup (var->obj_name);
4204 varobj_delete (var, NULL, 0);
4205 install_variable (tmp_var);
4208 var->root->is_valid = 0;
4210 else /* locals must be invalidated. */
4211 var->root->is_valid = 0;
4214 /* Invalidate the varobjs that are tied to locals and re-create the ones that
4215 are defined on globals.
4216 Invalidated varobjs will be always printed in_scope="invalid". */
4219 varobj_invalidate (void)
4221 all_root_varobjs (varobj_invalidate_iter, NULL);