xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/varobj.c (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1 /* Implementation of the GDB variable objects API.
2 
3    Copyright (C) 1999-2016 Free Software Foundation, Inc.
4 
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.
9 
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.
14 
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/>.  */
17 
18 #include "defs.h"
19 #include "value.h"
20 #include "expression.h"
21 #include "frame.h"
22 #include "language.h"
23 #include "gdbcmd.h"
24 #include "block.h"
25 #include "valprint.h"
26 #include "gdb_regex.h"
27 
28 #include "varobj.h"
29 #include "vec.h"
30 #include "gdbthread.h"
31 #include "inferior.h"
32 #include "varobj-iter.h"
33 
34 #if HAVE_PYTHON
35 #include "python/python.h"
36 #include "python/python-internal.h"
37 #else
38 typedef int PyObject;
39 #endif
40 
41 /* Non-zero if we want to see trace of varobj level stuff.  */
42 
43 unsigned int varobjdebug = 0;
44 static void
45 show_varobjdebug (struct ui_file *file, int from_tty,
46 		  struct cmd_list_element *c, const char *value)
47 {
48   fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
49 }
50 
51 /* String representations of gdb's format codes.  */
52 char *varobj_format_string[] =
53   { "natural", "binary", "decimal", "hexadecimal", "octal", "zero-hexadecimal" };
54 
55 /* True if we want to allow Python-based pretty-printing.  */
56 static int pretty_printing = 0;
57 
58 void
59 varobj_enable_pretty_printing (void)
60 {
61   pretty_printing = 1;
62 }
63 
64 /* Data structures */
65 
66 /* Every root variable has one of these structures saved in its
67    varobj.  Members which must be free'd are noted.  */
68 struct varobj_root
69 {
70 
71   /* Alloc'd expression for this parent.  */
72   struct expression *exp;
73 
74   /* Block for which this expression is valid.  */
75   const struct block *valid_block;
76 
77   /* The frame for this expression.  This field is set iff valid_block is
78      not NULL.  */
79   struct frame_id frame;
80 
81   /* The global thread ID that this varobj_root belongs to.  This field
82      is only valid if valid_block is not NULL.
83      When not 0, indicates which thread 'frame' belongs to.
84      When 0, indicates that the thread list was empty when the varobj_root
85      was created.  */
86   int thread_id;
87 
88   /* If 1, the -var-update always recomputes the value in the
89      current thread and frame.  Otherwise, variable object is
90      always updated in the specific scope/thread/frame.  */
91   int floating;
92 
93   /* Flag that indicates validity: set to 0 when this varobj_root refers
94      to symbols that do not exist anymore.  */
95   int is_valid;
96 
97   /* Language-related operations for this variable and its
98      children.  */
99   const struct lang_varobj_ops *lang_ops;
100 
101   /* The varobj for this root node.  */
102   struct varobj *rootvar;
103 
104   /* Next root variable */
105   struct varobj_root *next;
106 };
107 
108 /* Dynamic part of varobj.  */
109 
110 struct varobj_dynamic
111 {
112   /* Whether the children of this varobj were requested.  This field is
113      used to decide if dynamic varobj should recompute their children.
114      In the event that the frontend never asked for the children, we
115      can avoid that.  */
116   int children_requested;
117 
118   /* The pretty-printer constructor.  If NULL, then the default
119      pretty-printer will be looked up.  If None, then no
120      pretty-printer will be installed.  */
121   PyObject *constructor;
122 
123   /* The pretty-printer that has been constructed.  If NULL, then a
124      new printer object is needed, and one will be constructed.  */
125   PyObject *pretty_printer;
126 
127   /* The iterator returned by the printer's 'children' method, or NULL
128      if not available.  */
129   struct varobj_iter *child_iter;
130 
131   /* We request one extra item from the iterator, so that we can
132      report to the caller whether there are more items than we have
133      already reported.  However, we don't want to install this value
134      when we read it, because that will mess up future updates.  So,
135      we stash it here instead.  */
136   varobj_item *saved_item;
137 };
138 
139 /* A list of varobjs */
140 
141 struct vlist
142 {
143   struct varobj *var;
144   struct vlist *next;
145 };
146 
147 /* Private function prototypes */
148 
149 /* Helper functions for the above subcommands.  */
150 
151 static int delete_variable (struct varobj *, int);
152 
153 static void delete_variable_1 (int *, struct varobj *, int, int);
154 
155 static int install_variable (struct varobj *);
156 
157 static void uninstall_variable (struct varobj *);
158 
159 static struct varobj *create_child (struct varobj *, int, char *);
160 
161 static struct varobj *
162 create_child_with_value (struct varobj *parent, int index,
163 			 struct varobj_item *item);
164 
165 /* Utility routines */
166 
167 static struct varobj *new_variable (void);
168 
169 static struct varobj *new_root_variable (void);
170 
171 static void free_variable (struct varobj *var);
172 
173 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
174 
175 static enum varobj_display_formats variable_default_display (struct varobj *);
176 
177 static int update_type_if_necessary (struct varobj *var,
178 				     struct value *new_value);
179 
180 static int install_new_value (struct varobj *var, struct value *value,
181 			      int initial);
182 
183 /* Language-specific routines.  */
184 
185 static int number_of_children (const struct varobj *);
186 
187 static char *name_of_variable (const struct varobj *);
188 
189 static char *name_of_child (struct varobj *, int);
190 
191 static struct value *value_of_root (struct varobj **var_handle, int *);
192 
193 static struct value *value_of_child (const struct varobj *parent, int index);
194 
195 static char *my_value_of_variable (struct varobj *var,
196 				   enum varobj_display_formats format);
197 
198 static int is_root_p (const struct varobj *var);
199 
200 static struct varobj *varobj_add_child (struct varobj *var,
201 					struct varobj_item *item);
202 
203 /* Private data */
204 
205 /* Mappings of varobj_display_formats enums to gdb's format codes.  */
206 static int format_code[] = { 0, 't', 'd', 'x', 'o', 'z' };
207 
208 /* Header of the list of root variable objects.  */
209 static struct varobj_root *rootlist;
210 
211 /* Prime number indicating the number of buckets in the hash table.  */
212 /* A prime large enough to avoid too many collisions.  */
213 #define VAROBJ_TABLE_SIZE 227
214 
215 /* Pointer to the varobj hash table (built at run time).  */
216 static struct vlist **varobj_table;
217 
218 
219 
220 /* API Implementation */
221 static int
222 is_root_p (const struct varobj *var)
223 {
224   return (var->root->rootvar == var);
225 }
226 
227 #ifdef HAVE_PYTHON
228 /* Helper function to install a Python environment suitable for
229    use during operations on VAR.  */
230 struct cleanup *
231 varobj_ensure_python_env (const struct varobj *var)
232 {
233   return ensure_python_env (var->root->exp->gdbarch,
234 			    var->root->exp->language_defn);
235 }
236 #endif
237 
238 /* Return the full FRAME which corresponds to the given CORE_ADDR
239    or NULL if no FRAME on the chain corresponds to CORE_ADDR.  */
240 
241 static struct frame_info *
242 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
243 {
244   struct frame_info *frame = NULL;
245 
246   if (frame_addr == (CORE_ADDR) 0)
247     return NULL;
248 
249   for (frame = get_current_frame ();
250        frame != NULL;
251        frame = get_prev_frame (frame))
252     {
253       /* The CORE_ADDR we get as argument was parsed from a string GDB
254 	 output as $fp.  This output got truncated to gdbarch_addr_bit.
255 	 Truncate the frame base address in the same manner before
256 	 comparing it against our argument.  */
257       CORE_ADDR frame_base = get_frame_base_address (frame);
258       int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
259 
260       if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
261 	frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
262 
263       if (frame_base == frame_addr)
264 	return frame;
265     }
266 
267   return NULL;
268 }
269 
270 /* Creates a varobj (not its children).  */
271 
272 struct varobj *
273 varobj_create (char *objname,
274 	       char *expression, CORE_ADDR frame, enum varobj_type type)
275 {
276   struct varobj *var;
277   struct cleanup *old_chain;
278 
279   /* Fill out a varobj structure for the (root) variable being constructed.  */
280   var = new_root_variable ();
281   old_chain = make_cleanup_free_variable (var);
282 
283   if (expression != NULL)
284     {
285       struct frame_info *fi;
286       struct frame_id old_id = null_frame_id;
287       const struct block *block;
288       const char *p;
289       struct value *value = NULL;
290       CORE_ADDR pc;
291 
292       /* Parse and evaluate the expression, filling in as much of the
293          variable's data as possible.  */
294 
295       if (has_stack_frames ())
296 	{
297 	  /* Allow creator to specify context of variable.  */
298 	  if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
299 	    fi = get_selected_frame (NULL);
300 	  else
301 	    /* FIXME: cagney/2002-11-23: This code should be doing a
302 	       lookup using the frame ID and not just the frame's
303 	       ``address''.  This, of course, means an interface
304 	       change.  However, with out that interface change ISAs,
305 	       such as the ia64 with its two stacks, won't work.
306 	       Similar goes for the case where there is a frameless
307 	       function.  */
308 	    fi = find_frame_addr_in_frame_chain (frame);
309 	}
310       else
311 	fi = NULL;
312 
313       /* frame = -2 means always use selected frame.  */
314       if (type == USE_SELECTED_FRAME)
315 	var->root->floating = 1;
316 
317       pc = 0;
318       block = NULL;
319       if (fi != NULL)
320 	{
321 	  block = get_frame_block (fi, 0);
322 	  pc = get_frame_pc (fi);
323 	}
324 
325       p = expression;
326       innermost_block = NULL;
327       /* Wrap the call to parse expression, so we can
328          return a sensible error.  */
329       TRY
330 	{
331 	  var->root->exp = parse_exp_1 (&p, pc, block, 0);
332 	}
333 
334       CATCH (except, RETURN_MASK_ERROR)
335 	{
336 	  do_cleanups (old_chain);
337 	  return NULL;
338 	}
339       END_CATCH
340 
341       /* Don't allow variables to be created for types.  */
342       if (var->root->exp->elts[0].opcode == OP_TYPE
343 	  || var->root->exp->elts[0].opcode == OP_TYPEOF
344 	  || var->root->exp->elts[0].opcode == OP_DECLTYPE)
345 	{
346 	  do_cleanups (old_chain);
347 	  fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
348 			      " as an expression.\n");
349 	  return NULL;
350 	}
351 
352       var->format = variable_default_display (var);
353       var->root->valid_block = innermost_block;
354       var->name = xstrdup (expression);
355       /* For a root var, the name and the expr are the same.  */
356       var->path_expr = xstrdup (expression);
357 
358       /* When the frame is different from the current frame,
359          we must select the appropriate frame before parsing
360          the expression, otherwise the value will not be current.
361          Since select_frame is so benign, just call it for all cases.  */
362       if (innermost_block)
363 	{
364 	  /* User could specify explicit FRAME-ADDR which was not found but
365 	     EXPRESSION is frame specific and we would not be able to evaluate
366 	     it correctly next time.  With VALID_BLOCK set we must also set
367 	     FRAME and THREAD_ID.  */
368 	  if (fi == NULL)
369 	    error (_("Failed to find the specified frame"));
370 
371 	  var->root->frame = get_frame_id (fi);
372 	  var->root->thread_id = ptid_to_global_thread_id (inferior_ptid);
373 	  old_id = get_frame_id (get_selected_frame (NULL));
374 	  select_frame (fi);
375 	}
376 
377       /* We definitely need to catch errors here.
378          If evaluate_expression succeeds we got the value we wanted.
379          But if it fails, we still go on with a call to evaluate_type().  */
380       TRY
381 	{
382 	  value = evaluate_expression (var->root->exp);
383 	}
384       CATCH (except, RETURN_MASK_ERROR)
385 	{
386 	  /* Error getting the value.  Try to at least get the
387 	     right type.  */
388 	  struct value *type_only_value = evaluate_type (var->root->exp);
389 
390 	  var->type = value_type (type_only_value);
391 	}
392       END_CATCH
393 
394       if (value != NULL)
395 	{
396 	  int real_type_found = 0;
397 
398 	  var->type = value_actual_type (value, 0, &real_type_found);
399 	  if (real_type_found)
400 	    value = value_cast (var->type, value);
401 	}
402 
403       /* Set language info */
404       var->root->lang_ops = var->root->exp->language_defn->la_varobj_ops;
405 
406       install_new_value (var, value, 1 /* Initial assignment */);
407 
408       /* Set ourselves as our root.  */
409       var->root->rootvar = var;
410 
411       /* Reset the selected frame.  */
412       if (frame_id_p (old_id))
413 	select_frame (frame_find_by_id (old_id));
414     }
415 
416   /* If the variable object name is null, that means this
417      is a temporary variable, so don't install it.  */
418 
419   if ((var != NULL) && (objname != NULL))
420     {
421       var->obj_name = xstrdup (objname);
422 
423       /* If a varobj name is duplicated, the install will fail so
424          we must cleanup.  */
425       if (!install_variable (var))
426 	{
427 	  do_cleanups (old_chain);
428 	  return NULL;
429 	}
430     }
431 
432   discard_cleanups (old_chain);
433   return var;
434 }
435 
436 /* Generates an unique name that can be used for a varobj.  */
437 
438 char *
439 varobj_gen_name (void)
440 {
441   static int id = 0;
442   char *obj_name;
443 
444   /* Generate a name for this object.  */
445   id++;
446   obj_name = xstrprintf ("var%d", id);
447 
448   return obj_name;
449 }
450 
451 /* Given an OBJNAME, returns the pointer to the corresponding varobj.  Call
452    error if OBJNAME cannot be found.  */
453 
454 struct varobj *
455 varobj_get_handle (char *objname)
456 {
457   struct vlist *cv;
458   const char *chp;
459   unsigned int index = 0;
460   unsigned int i = 1;
461 
462   for (chp = objname; *chp; chp++)
463     {
464       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
465     }
466 
467   cv = *(varobj_table + index);
468   while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
469     cv = cv->next;
470 
471   if (cv == NULL)
472     error (_("Variable object not found"));
473 
474   return cv->var;
475 }
476 
477 /* Given the handle, return the name of the object.  */
478 
479 char *
480 varobj_get_objname (const struct varobj *var)
481 {
482   return var->obj_name;
483 }
484 
485 /* Given the handle, return the expression represented by the object.  The
486    result must be freed by the caller.  */
487 
488 char *
489 varobj_get_expression (const struct varobj *var)
490 {
491   return name_of_variable (var);
492 }
493 
494 /* See varobj.h.  */
495 
496 int
497 varobj_delete (struct varobj *var, int only_children)
498 {
499   return delete_variable (var, only_children);
500 }
501 
502 #if HAVE_PYTHON
503 
504 /* Convenience function for varobj_set_visualizer.  Instantiate a
505    pretty-printer for a given value.  */
506 static PyObject *
507 instantiate_pretty_printer (PyObject *constructor, struct value *value)
508 {
509   PyObject *val_obj = NULL;
510   PyObject *printer;
511 
512   val_obj = value_to_value_object (value);
513   if (! val_obj)
514     return NULL;
515 
516   printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
517   Py_DECREF (val_obj);
518   return printer;
519 }
520 
521 #endif
522 
523 /* Set/Get variable object display format.  */
524 
525 enum varobj_display_formats
526 varobj_set_display_format (struct varobj *var,
527 			   enum varobj_display_formats format)
528 {
529   switch (format)
530     {
531     case FORMAT_NATURAL:
532     case FORMAT_BINARY:
533     case FORMAT_DECIMAL:
534     case FORMAT_HEXADECIMAL:
535     case FORMAT_OCTAL:
536     case FORMAT_ZHEXADECIMAL:
537       var->format = format;
538       break;
539 
540     default:
541       var->format = variable_default_display (var);
542     }
543 
544   if (varobj_value_is_changeable_p (var)
545       && var->value && !value_lazy (var->value))
546     {
547       xfree (var->print_value);
548       var->print_value = varobj_value_get_print_value (var->value,
549 						       var->format, var);
550     }
551 
552   return var->format;
553 }
554 
555 enum varobj_display_formats
556 varobj_get_display_format (const struct varobj *var)
557 {
558   return var->format;
559 }
560 
561 char *
562 varobj_get_display_hint (const struct varobj *var)
563 {
564   char *result = NULL;
565 
566 #if HAVE_PYTHON
567   struct cleanup *back_to;
568 
569   if (!gdb_python_initialized)
570     return NULL;
571 
572   back_to = varobj_ensure_python_env (var);
573 
574   if (var->dynamic->pretty_printer != NULL)
575     result = gdbpy_get_display_hint (var->dynamic->pretty_printer);
576 
577   do_cleanups (back_to);
578 #endif
579 
580   return result;
581 }
582 
583 /* Return true if the varobj has items after TO, false otherwise.  */
584 
585 int
586 varobj_has_more (const struct varobj *var, int to)
587 {
588   if (VEC_length (varobj_p, var->children) > to)
589     return 1;
590   return ((to == -1 || VEC_length (varobj_p, var->children) == to)
591 	  && (var->dynamic->saved_item != NULL));
592 }
593 
594 /* If the variable object is bound to a specific thread, that
595    is its evaluation can always be done in context of a frame
596    inside that thread, returns GDB id of the thread -- which
597    is always positive.  Otherwise, returns -1.  */
598 int
599 varobj_get_thread_id (const struct varobj *var)
600 {
601   if (var->root->valid_block && var->root->thread_id > 0)
602     return var->root->thread_id;
603   else
604     return -1;
605 }
606 
607 void
608 varobj_set_frozen (struct varobj *var, int frozen)
609 {
610   /* When a variable is unfrozen, we don't fetch its value.
611      The 'not_fetched' flag remains set, so next -var-update
612      won't complain.
613 
614      We don't fetch the value, because for structures the client
615      should do -var-update anyway.  It would be bad to have different
616      client-size logic for structure and other types.  */
617   var->frozen = frozen;
618 }
619 
620 int
621 varobj_get_frozen (const struct varobj *var)
622 {
623   return var->frozen;
624 }
625 
626 /* A helper function that restricts a range to what is actually
627    available in a VEC.  This follows the usual rules for the meaning
628    of FROM and TO -- if either is negative, the entire range is
629    used.  */
630 
631 void
632 varobj_restrict_range (VEC (varobj_p) *children, int *from, int *to)
633 {
634   if (*from < 0 || *to < 0)
635     {
636       *from = 0;
637       *to = VEC_length (varobj_p, children);
638     }
639   else
640     {
641       if (*from > VEC_length (varobj_p, children))
642 	*from = VEC_length (varobj_p, children);
643       if (*to > VEC_length (varobj_p, children))
644 	*to = VEC_length (varobj_p, children);
645       if (*from > *to)
646 	*from = *to;
647     }
648 }
649 
650 /* A helper for update_dynamic_varobj_children that installs a new
651    child when needed.  */
652 
653 static void
654 install_dynamic_child (struct varobj *var,
655 		       VEC (varobj_p) **changed,
656 		       VEC (varobj_p) **type_changed,
657 		       VEC (varobj_p) **newobj,
658 		       VEC (varobj_p) **unchanged,
659 		       int *cchanged,
660 		       int index,
661 		       struct varobj_item *item)
662 {
663   if (VEC_length (varobj_p, var->children) < index + 1)
664     {
665       /* There's no child yet.  */
666       struct varobj *child = varobj_add_child (var, item);
667 
668       if (newobj)
669 	{
670 	  VEC_safe_push (varobj_p, *newobj, child);
671 	  *cchanged = 1;
672 	}
673     }
674   else
675     {
676       varobj_p existing = VEC_index (varobj_p, var->children, index);
677       int type_updated = update_type_if_necessary (existing, item->value);
678 
679       if (type_updated)
680 	{
681 	  if (type_changed)
682 	    VEC_safe_push (varobj_p, *type_changed, existing);
683 	}
684       if (install_new_value (existing, item->value, 0))
685 	{
686 	  if (!type_updated && changed)
687 	    VEC_safe_push (varobj_p, *changed, existing);
688 	}
689       else if (!type_updated && unchanged)
690 	VEC_safe_push (varobj_p, *unchanged, existing);
691     }
692 }
693 
694 #if HAVE_PYTHON
695 
696 static int
697 dynamic_varobj_has_child_method (const struct varobj *var)
698 {
699   struct cleanup *back_to;
700   PyObject *printer = var->dynamic->pretty_printer;
701   int result;
702 
703   if (!gdb_python_initialized)
704     return 0;
705 
706   back_to = varobj_ensure_python_env (var);
707   result = PyObject_HasAttr (printer, gdbpy_children_cst);
708   do_cleanups (back_to);
709   return result;
710 }
711 #endif
712 
713 /* A factory for creating dynamic varobj's iterators.  Returns an
714    iterator object suitable for iterating over VAR's children.  */
715 
716 static struct varobj_iter *
717 varobj_get_iterator (struct varobj *var)
718 {
719 #if HAVE_PYTHON
720   if (var->dynamic->pretty_printer)
721     return py_varobj_get_iterator (var, var->dynamic->pretty_printer);
722 #endif
723 
724   gdb_assert_not_reached (_("\
725 requested an iterator from a non-dynamic varobj"));
726 }
727 
728 /* Release and clear VAR's saved item, if any.  */
729 
730 static void
731 varobj_clear_saved_item (struct varobj_dynamic *var)
732 {
733   if (var->saved_item != NULL)
734     {
735       value_free (var->saved_item->value);
736       xfree (var->saved_item);
737       var->saved_item = NULL;
738     }
739 }
740 
741 static int
742 update_dynamic_varobj_children (struct varobj *var,
743 				VEC (varobj_p) **changed,
744 				VEC (varobj_p) **type_changed,
745 				VEC (varobj_p) **newobj,
746 				VEC (varobj_p) **unchanged,
747 				int *cchanged,
748 				int update_children,
749 				int from,
750 				int to)
751 {
752   int i;
753 
754   *cchanged = 0;
755 
756   if (update_children || var->dynamic->child_iter == NULL)
757     {
758       varobj_iter_delete (var->dynamic->child_iter);
759       var->dynamic->child_iter = varobj_get_iterator (var);
760 
761       varobj_clear_saved_item (var->dynamic);
762 
763       i = 0;
764 
765       if (var->dynamic->child_iter == NULL)
766 	return 0;
767     }
768   else
769     i = VEC_length (varobj_p, var->children);
770 
771   /* We ask for one extra child, so that MI can report whether there
772      are more children.  */
773   for (; to < 0 || i < to + 1; ++i)
774     {
775       varobj_item *item;
776 
777       /* See if there was a leftover from last time.  */
778       if (var->dynamic->saved_item != NULL)
779 	{
780 	  item = var->dynamic->saved_item;
781 	  var->dynamic->saved_item = NULL;
782 	}
783       else
784 	{
785 	  item = varobj_iter_next (var->dynamic->child_iter);
786 	  /* Release vitem->value so its lifetime is not bound to the
787 	     execution of a command.  */
788 	  if (item != NULL && item->value != NULL)
789 	    release_value_or_incref (item->value);
790 	}
791 
792       if (item == NULL)
793 	{
794 	  /* Iteration is done.  Remove iterator from VAR.  */
795 	  varobj_iter_delete (var->dynamic->child_iter);
796 	  var->dynamic->child_iter = NULL;
797 	  break;
798 	}
799       /* We don't want to push the extra child on any report list.  */
800       if (to < 0 || i < to)
801 	{
802 	  int can_mention = from < 0 || i >= from;
803 
804 	  install_dynamic_child (var, can_mention ? changed : NULL,
805 				 can_mention ? type_changed : NULL,
806 				 can_mention ? newobj : NULL,
807 				 can_mention ? unchanged : NULL,
808 				 can_mention ? cchanged : NULL, i,
809 				 item);
810 
811 	  xfree (item);
812 	}
813       else
814 	{
815 	  var->dynamic->saved_item = item;
816 
817 	  /* We want to truncate the child list just before this
818 	     element.  */
819 	  break;
820 	}
821     }
822 
823   if (i < VEC_length (varobj_p, var->children))
824     {
825       int j;
826 
827       *cchanged = 1;
828       for (j = i; j < VEC_length (varobj_p, var->children); ++j)
829 	varobj_delete (VEC_index (varobj_p, var->children, j), 0);
830       VEC_truncate (varobj_p, var->children, i);
831     }
832 
833   /* If there are fewer children than requested, note that the list of
834      children changed.  */
835   if (to >= 0 && VEC_length (varobj_p, var->children) < to)
836     *cchanged = 1;
837 
838   var->num_children = VEC_length (varobj_p, var->children);
839 
840   return 1;
841 }
842 
843 int
844 varobj_get_num_children (struct varobj *var)
845 {
846   if (var->num_children == -1)
847     {
848       if (varobj_is_dynamic_p (var))
849 	{
850 	  int dummy;
851 
852 	  /* If we have a dynamic varobj, don't report -1 children.
853 	     So, try to fetch some children first.  */
854 	  update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL, &dummy,
855 					  0, 0, 0);
856 	}
857       else
858 	var->num_children = number_of_children (var);
859     }
860 
861   return var->num_children >= 0 ? var->num_children : 0;
862 }
863 
864 /* Creates a list of the immediate children of a variable object;
865    the return code is the number of such children or -1 on error.  */
866 
867 VEC (varobj_p)*
868 varobj_list_children (struct varobj *var, int *from, int *to)
869 {
870   char *name;
871   int i, children_changed;
872 
873   var->dynamic->children_requested = 1;
874 
875   if (varobj_is_dynamic_p (var))
876     {
877       /* This, in theory, can result in the number of children changing without
878 	 frontend noticing.  But well, calling -var-list-children on the same
879 	 varobj twice is not something a sane frontend would do.  */
880       update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL,
881 				      &children_changed, 0, 0, *to);
882       varobj_restrict_range (var->children, from, to);
883       return var->children;
884     }
885 
886   if (var->num_children == -1)
887     var->num_children = number_of_children (var);
888 
889   /* If that failed, give up.  */
890   if (var->num_children == -1)
891     return var->children;
892 
893   /* If we're called when the list of children is not yet initialized,
894      allocate enough elements in it.  */
895   while (VEC_length (varobj_p, var->children) < var->num_children)
896     VEC_safe_push (varobj_p, var->children, NULL);
897 
898   for (i = 0; i < var->num_children; i++)
899     {
900       varobj_p existing = VEC_index (varobj_p, var->children, i);
901 
902       if (existing == NULL)
903 	{
904 	  /* Either it's the first call to varobj_list_children for
905 	     this variable object, and the child was never created,
906 	     or it was explicitly deleted by the client.  */
907 	  name = name_of_child (var, i);
908 	  existing = create_child (var, i, name);
909 	  VEC_replace (varobj_p, var->children, i, existing);
910 	}
911     }
912 
913   varobj_restrict_range (var->children, from, to);
914   return var->children;
915 }
916 
917 static struct varobj *
918 varobj_add_child (struct varobj *var, struct varobj_item *item)
919 {
920   varobj_p v = create_child_with_value (var,
921 					VEC_length (varobj_p, var->children),
922 					item);
923 
924   VEC_safe_push (varobj_p, var->children, v);
925   return v;
926 }
927 
928 /* Obtain the type of an object Variable as a string similar to the one gdb
929    prints on the console.  The caller is responsible for freeing the string.
930    */
931 
932 char *
933 varobj_get_type (struct varobj *var)
934 {
935   /* For the "fake" variables, do not return a type.  (Its type is
936      NULL, too.)
937      Do not return a type for invalid variables as well.  */
938   if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
939     return NULL;
940 
941   return type_to_string (var->type);
942 }
943 
944 /* Obtain the type of an object variable.  */
945 
946 struct type *
947 varobj_get_gdb_type (const struct varobj *var)
948 {
949   return var->type;
950 }
951 
952 /* Is VAR a path expression parent, i.e., can it be used to construct
953    a valid path expression?  */
954 
955 static int
956 is_path_expr_parent (const struct varobj *var)
957 {
958   gdb_assert (var->root->lang_ops->is_path_expr_parent != NULL);
959   return var->root->lang_ops->is_path_expr_parent (var);
960 }
961 
962 /* Is VAR a path expression parent, i.e., can it be used to construct
963    a valid path expression?  By default we assume any VAR can be a path
964    parent.  */
965 
966 int
967 varobj_default_is_path_expr_parent (const struct varobj *var)
968 {
969   return 1;
970 }
971 
972 /* Return the path expression parent for VAR.  */
973 
974 const struct varobj *
975 varobj_get_path_expr_parent (const struct varobj *var)
976 {
977   const struct varobj *parent = var;
978 
979   while (!is_root_p (parent) && !is_path_expr_parent (parent))
980     parent = parent->parent;
981 
982   return parent;
983 }
984 
985 /* Return a pointer to the full rooted expression of varobj VAR.
986    If it has not been computed yet, compute it.  */
987 char *
988 varobj_get_path_expr (const struct varobj *var)
989 {
990   if (var->path_expr == NULL)
991     {
992       /* For root varobjs, we initialize path_expr
993 	 when creating varobj, so here it should be
994 	 child varobj.  */
995       struct varobj *mutable_var = (struct varobj *) var;
996       gdb_assert (!is_root_p (var));
997 
998       mutable_var->path_expr = (*var->root->lang_ops->path_expr_of_child) (var);
999     }
1000 
1001   return var->path_expr;
1002 }
1003 
1004 const struct language_defn *
1005 varobj_get_language (const struct varobj *var)
1006 {
1007   return var->root->exp->language_defn;
1008 }
1009 
1010 int
1011 varobj_get_attributes (const struct varobj *var)
1012 {
1013   int attributes = 0;
1014 
1015   if (varobj_editable_p (var))
1016     /* FIXME: define masks for attributes.  */
1017     attributes |= 0x00000001;	/* Editable */
1018 
1019   return attributes;
1020 }
1021 
1022 /* Return true if VAR is a dynamic varobj.  */
1023 
1024 int
1025 varobj_is_dynamic_p (const struct varobj *var)
1026 {
1027   return var->dynamic->pretty_printer != NULL;
1028 }
1029 
1030 char *
1031 varobj_get_formatted_value (struct varobj *var,
1032 			    enum varobj_display_formats format)
1033 {
1034   return my_value_of_variable (var, format);
1035 }
1036 
1037 char *
1038 varobj_get_value (struct varobj *var)
1039 {
1040   return my_value_of_variable (var, var->format);
1041 }
1042 
1043 /* Set the value of an object variable (if it is editable) to the
1044    value of the given expression.  */
1045 /* Note: Invokes functions that can call error().  */
1046 
1047 int
1048 varobj_set_value (struct varobj *var, char *expression)
1049 {
1050   struct value *val = NULL; /* Initialize to keep gcc happy.  */
1051   /* The argument "expression" contains the variable's new value.
1052      We need to first construct a legal expression for this -- ugh!  */
1053   /* Does this cover all the bases?  */
1054   struct expression *exp;
1055   struct value *value = NULL; /* Initialize to keep gcc happy.  */
1056   int saved_input_radix = input_radix;
1057   const char *s = expression;
1058 
1059   gdb_assert (varobj_editable_p (var));
1060 
1061   input_radix = 10;		/* ALWAYS reset to decimal temporarily.  */
1062   exp = parse_exp_1 (&s, 0, 0, 0);
1063   TRY
1064     {
1065       value = evaluate_expression (exp);
1066     }
1067 
1068   CATCH (except, RETURN_MASK_ERROR)
1069     {
1070       /* We cannot proceed without a valid expression.  */
1071       xfree (exp);
1072       return 0;
1073     }
1074   END_CATCH
1075 
1076   /* All types that are editable must also be changeable.  */
1077   gdb_assert (varobj_value_is_changeable_p (var));
1078 
1079   /* The value of a changeable variable object must not be lazy.  */
1080   gdb_assert (!value_lazy (var->value));
1081 
1082   /* Need to coerce the input.  We want to check if the
1083      value of the variable object will be different
1084      after assignment, and the first thing value_assign
1085      does is coerce the input.
1086      For example, if we are assigning an array to a pointer variable we
1087      should compare the pointer with the array's address, not with the
1088      array's content.  */
1089   value = coerce_array (value);
1090 
1091   /* The new value may be lazy.  value_assign, or
1092      rather value_contents, will take care of this.  */
1093   TRY
1094     {
1095       val = value_assign (var->value, value);
1096     }
1097 
1098   CATCH (except, RETURN_MASK_ERROR)
1099     {
1100       return 0;
1101     }
1102   END_CATCH
1103 
1104   /* If the value has changed, record it, so that next -var-update can
1105      report this change.  If a variable had a value of '1', we've set it
1106      to '333' and then set again to '1', when -var-update will report this
1107      variable as changed -- because the first assignment has set the
1108      'updated' flag.  There's no need to optimize that, because return value
1109      of -var-update should be considered an approximation.  */
1110   var->updated = install_new_value (var, val, 0 /* Compare values.  */);
1111   input_radix = saved_input_radix;
1112   return 1;
1113 }
1114 
1115 #if HAVE_PYTHON
1116 
1117 /* A helper function to install a constructor function and visualizer
1118    in a varobj_dynamic.  */
1119 
1120 static void
1121 install_visualizer (struct varobj_dynamic *var, PyObject *constructor,
1122 		    PyObject *visualizer)
1123 {
1124   Py_XDECREF (var->constructor);
1125   var->constructor = constructor;
1126 
1127   Py_XDECREF (var->pretty_printer);
1128   var->pretty_printer = visualizer;
1129 
1130   varobj_iter_delete (var->child_iter);
1131   var->child_iter = NULL;
1132 }
1133 
1134 /* Install the default visualizer for VAR.  */
1135 
1136 static void
1137 install_default_visualizer (struct varobj *var)
1138 {
1139   /* Do not install a visualizer on a CPLUS_FAKE_CHILD.  */
1140   if (CPLUS_FAKE_CHILD (var))
1141     return;
1142 
1143   if (pretty_printing)
1144     {
1145       PyObject *pretty_printer = NULL;
1146 
1147       if (var->value)
1148 	{
1149 	  pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1150 	  if (! pretty_printer)
1151 	    {
1152 	      gdbpy_print_stack ();
1153 	      error (_("Cannot instantiate printer for default visualizer"));
1154 	    }
1155 	}
1156 
1157       if (pretty_printer == Py_None)
1158 	{
1159 	  Py_DECREF (pretty_printer);
1160 	  pretty_printer = NULL;
1161 	}
1162 
1163       install_visualizer (var->dynamic, NULL, pretty_printer);
1164     }
1165 }
1166 
1167 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1168    make a new object.  */
1169 
1170 static void
1171 construct_visualizer (struct varobj *var, PyObject *constructor)
1172 {
1173   PyObject *pretty_printer;
1174 
1175   /* Do not install a visualizer on a CPLUS_FAKE_CHILD.  */
1176   if (CPLUS_FAKE_CHILD (var))
1177     return;
1178 
1179   Py_INCREF (constructor);
1180   if (constructor == Py_None)
1181     pretty_printer = NULL;
1182   else
1183     {
1184       pretty_printer = instantiate_pretty_printer (constructor, var->value);
1185       if (! pretty_printer)
1186 	{
1187 	  gdbpy_print_stack ();
1188 	  Py_DECREF (constructor);
1189 	  constructor = Py_None;
1190 	  Py_INCREF (constructor);
1191 	}
1192 
1193       if (pretty_printer == Py_None)
1194 	{
1195 	  Py_DECREF (pretty_printer);
1196 	  pretty_printer = NULL;
1197 	}
1198     }
1199 
1200   install_visualizer (var->dynamic, constructor, pretty_printer);
1201 }
1202 
1203 #endif /* HAVE_PYTHON */
1204 
1205 /* A helper function for install_new_value.  This creates and installs
1206    a visualizer for VAR, if appropriate.  */
1207 
1208 static void
1209 install_new_value_visualizer (struct varobj *var)
1210 {
1211 #if HAVE_PYTHON
1212   /* If the constructor is None, then we want the raw value.  If VAR
1213      does not have a value, just skip this.  */
1214   if (!gdb_python_initialized)
1215     return;
1216 
1217   if (var->dynamic->constructor != Py_None && var->value != NULL)
1218     {
1219       struct cleanup *cleanup;
1220 
1221       cleanup = varobj_ensure_python_env (var);
1222 
1223       if (var->dynamic->constructor == NULL)
1224 	install_default_visualizer (var);
1225       else
1226 	construct_visualizer (var, var->dynamic->constructor);
1227 
1228       do_cleanups (cleanup);
1229     }
1230 #else
1231   /* Do nothing.  */
1232 #endif
1233 }
1234 
1235 /* When using RTTI to determine variable type it may be changed in runtime when
1236    the variable value is changed.  This function checks whether type of varobj
1237    VAR will change when a new value NEW_VALUE is assigned and if it is so
1238    updates the type of VAR.  */
1239 
1240 static int
1241 update_type_if_necessary (struct varobj *var, struct value *new_value)
1242 {
1243   if (new_value)
1244     {
1245       struct value_print_options opts;
1246 
1247       get_user_print_options (&opts);
1248       if (opts.objectprint)
1249 	{
1250 	  struct type *new_type;
1251 	  char *curr_type_str, *new_type_str;
1252 	  int type_name_changed;
1253 
1254 	  new_type = value_actual_type (new_value, 0, 0);
1255 	  new_type_str = type_to_string (new_type);
1256 	  curr_type_str = varobj_get_type (var);
1257 	  type_name_changed = strcmp (curr_type_str, new_type_str) != 0;
1258 	  xfree (curr_type_str);
1259 	  xfree (new_type_str);
1260 
1261 	  if (type_name_changed)
1262 	    {
1263 	      var->type = new_type;
1264 
1265 	      /* This information may be not valid for a new type.  */
1266 	      varobj_delete (var, 1);
1267 	      VEC_free (varobj_p, var->children);
1268 	      var->num_children = -1;
1269 	    }
1270 	  xfree (new_type_str);
1271 	  xfree (curr_type_str);
1272 	  return type_name_changed;
1273 	}
1274     }
1275 
1276   return 0;
1277 }
1278 
1279 /* Assign a new value to a variable object.  If INITIAL is non-zero,
1280    this is the first assignement after the variable object was just
1281    created, or changed type.  In that case, just assign the value
1282    and return 0.
1283    Otherwise, assign the new value, and return 1 if the value is
1284    different from the current one, 0 otherwise.  The comparison is
1285    done on textual representation of value.  Therefore, some types
1286    need not be compared.  E.g.  for structures the reported value is
1287    always "{...}", so no comparison is necessary here.  If the old
1288    value was NULL and new one is not, or vice versa, we always return 1.
1289 
1290    The VALUE parameter should not be released -- the function will
1291    take care of releasing it when needed.  */
1292 static int
1293 install_new_value (struct varobj *var, struct value *value, int initial)
1294 {
1295   int changeable;
1296   int need_to_fetch;
1297   int changed = 0;
1298   int intentionally_not_fetched = 0;
1299   char *print_value = NULL;
1300 
1301   /* We need to know the varobj's type to decide if the value should
1302      be fetched or not.  C++ fake children (public/protected/private)
1303      don't have a type.  */
1304   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1305   changeable = varobj_value_is_changeable_p (var);
1306 
1307   /* If the type has custom visualizer, we consider it to be always
1308      changeable.  FIXME: need to make sure this behaviour will not
1309      mess up read-sensitive values.  */
1310   if (var->dynamic->pretty_printer != NULL)
1311     changeable = 1;
1312 
1313   need_to_fetch = changeable;
1314 
1315   /* We are not interested in the address of references, and given
1316      that in C++ a reference is not rebindable, it cannot
1317      meaningfully change.  So, get hold of the real value.  */
1318   if (value)
1319     value = coerce_ref (value);
1320 
1321   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1322     /* For unions, we need to fetch the value implicitly because
1323        of implementation of union member fetch.  When gdb
1324        creates a value for a field and the value of the enclosing
1325        structure is not lazy,  it immediately copies the necessary
1326        bytes from the enclosing values.  If the enclosing value is
1327        lazy, the call to value_fetch_lazy on the field will read
1328        the data from memory.  For unions, that means we'll read the
1329        same memory more than once, which is not desirable.  So
1330        fetch now.  */
1331     need_to_fetch = 1;
1332 
1333   /* The new value might be lazy.  If the type is changeable,
1334      that is we'll be comparing values of this type, fetch the
1335      value now.  Otherwise, on the next update the old value
1336      will be lazy, which means we've lost that old value.  */
1337   if (need_to_fetch && value && value_lazy (value))
1338     {
1339       const struct varobj *parent = var->parent;
1340       int frozen = var->frozen;
1341 
1342       for (; !frozen && parent; parent = parent->parent)
1343 	frozen |= parent->frozen;
1344 
1345       if (frozen && initial)
1346 	{
1347 	  /* For variables that are frozen, or are children of frozen
1348 	     variables, we don't do fetch on initial assignment.
1349 	     For non-initial assignemnt we do the fetch, since it means we're
1350 	     explicitly asked to compare the new value with the old one.  */
1351 	  intentionally_not_fetched = 1;
1352 	}
1353       else
1354 	{
1355 
1356 	  TRY
1357 	    {
1358 	      value_fetch_lazy (value);
1359 	    }
1360 
1361 	  CATCH (except, RETURN_MASK_ERROR)
1362 	    {
1363 	      /* Set the value to NULL, so that for the next -var-update,
1364 		 we don't try to compare the new value with this value,
1365 		 that we couldn't even read.  */
1366 	      value = NULL;
1367 	    }
1368 	  END_CATCH
1369 	}
1370     }
1371 
1372   /* Get a reference now, before possibly passing it to any Python
1373      code that might release it.  */
1374   if (value != NULL)
1375     value_incref (value);
1376 
1377   /* Below, we'll be comparing string rendering of old and new
1378      values.  Don't get string rendering if the value is
1379      lazy -- if it is, the code above has decided that the value
1380      should not be fetched.  */
1381   if (value != NULL && !value_lazy (value)
1382       && var->dynamic->pretty_printer == NULL)
1383     print_value = varobj_value_get_print_value (value, var->format, var);
1384 
1385   /* If the type is changeable, compare the old and the new values.
1386      If this is the initial assignment, we don't have any old value
1387      to compare with.  */
1388   if (!initial && changeable)
1389     {
1390       /* If the value of the varobj was changed by -var-set-value,
1391 	 then the value in the varobj and in the target is the same.
1392 	 However, that value is different from the value that the
1393 	 varobj had after the previous -var-update.  So need to the
1394 	 varobj as changed.  */
1395       if (var->updated)
1396 	{
1397 	  changed = 1;
1398 	}
1399       else if (var->dynamic->pretty_printer == NULL)
1400 	{
1401 	  /* Try to compare the values.  That requires that both
1402 	     values are non-lazy.  */
1403 	  if (var->not_fetched && value_lazy (var->value))
1404 	    {
1405 	      /* This is a frozen varobj and the value was never read.
1406 		 Presumably, UI shows some "never read" indicator.
1407 		 Now that we've fetched the real value, we need to report
1408 		 this varobj as changed so that UI can show the real
1409 		 value.  */
1410 	      changed = 1;
1411 	    }
1412           else  if (var->value == NULL && value == NULL)
1413 	    /* Equal.  */
1414 	    ;
1415 	  else if (var->value == NULL || value == NULL)
1416 	    {
1417 	      changed = 1;
1418 	    }
1419 	  else
1420 	    {
1421 	      gdb_assert (!value_lazy (var->value));
1422 	      gdb_assert (!value_lazy (value));
1423 
1424 	      gdb_assert (var->print_value != NULL && print_value != NULL);
1425 	      if (strcmp (var->print_value, print_value) != 0)
1426 		changed = 1;
1427 	    }
1428 	}
1429     }
1430 
1431   if (!initial && !changeable)
1432     {
1433       /* For values that are not changeable, we don't compare the values.
1434 	 However, we want to notice if a value was not NULL and now is NULL,
1435 	 or vise versa, so that we report when top-level varobjs come in scope
1436 	 and leave the scope.  */
1437       changed = (var->value != NULL) != (value != NULL);
1438     }
1439 
1440   /* We must always keep the new value, since children depend on it.  */
1441   if (var->value != NULL && var->value != value)
1442     value_free (var->value);
1443   var->value = value;
1444   if (value && value_lazy (value) && intentionally_not_fetched)
1445     var->not_fetched = 1;
1446   else
1447     var->not_fetched = 0;
1448   var->updated = 0;
1449 
1450   install_new_value_visualizer (var);
1451 
1452   /* If we installed a pretty-printer, re-compare the printed version
1453      to see if the variable changed.  */
1454   if (var->dynamic->pretty_printer != NULL)
1455     {
1456       xfree (print_value);
1457       print_value = varobj_value_get_print_value (var->value, var->format,
1458 						  var);
1459       if ((var->print_value == NULL && print_value != NULL)
1460 	  || (var->print_value != NULL && print_value == NULL)
1461 	  || (var->print_value != NULL && print_value != NULL
1462 	      && strcmp (var->print_value, print_value) != 0))
1463 	changed = 1;
1464     }
1465   if (var->print_value)
1466     xfree (var->print_value);
1467   var->print_value = print_value;
1468 
1469   gdb_assert (!var->value || value_type (var->value));
1470 
1471   return changed;
1472 }
1473 
1474 /* Return the requested range for a varobj.  VAR is the varobj.  FROM
1475    and TO are out parameters; *FROM and *TO will be set to the
1476    selected sub-range of VAR.  If no range was selected using
1477    -var-set-update-range, then both will be -1.  */
1478 void
1479 varobj_get_child_range (const struct varobj *var, int *from, int *to)
1480 {
1481   *from = var->from;
1482   *to = var->to;
1483 }
1484 
1485 /* Set the selected sub-range of children of VAR to start at index
1486    FROM and end at index TO.  If either FROM or TO is less than zero,
1487    this is interpreted as a request for all children.  */
1488 void
1489 varobj_set_child_range (struct varobj *var, int from, int to)
1490 {
1491   var->from = from;
1492   var->to = to;
1493 }
1494 
1495 void
1496 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1497 {
1498 #if HAVE_PYTHON
1499   PyObject *mainmod, *globals, *constructor;
1500   struct cleanup *back_to;
1501 
1502   if (!gdb_python_initialized)
1503     return;
1504 
1505   back_to = varobj_ensure_python_env (var);
1506 
1507   mainmod = PyImport_AddModule ("__main__");
1508   globals = PyModule_GetDict (mainmod);
1509   Py_INCREF (globals);
1510   make_cleanup_py_decref (globals);
1511 
1512   constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1513 
1514   if (! constructor)
1515     {
1516       gdbpy_print_stack ();
1517       error (_("Could not evaluate visualizer expression: %s"), visualizer);
1518     }
1519 
1520   construct_visualizer (var, constructor);
1521   Py_XDECREF (constructor);
1522 
1523   /* If there are any children now, wipe them.  */
1524   varobj_delete (var, 1 /* children only */);
1525   var->num_children = -1;
1526 
1527   do_cleanups (back_to);
1528 #else
1529   error (_("Python support required"));
1530 #endif
1531 }
1532 
1533 /* If NEW_VALUE is the new value of the given varobj (var), return
1534    non-zero if var has mutated.  In other words, if the type of
1535    the new value is different from the type of the varobj's old
1536    value.
1537 
1538    NEW_VALUE may be NULL, if the varobj is now out of scope.  */
1539 
1540 static int
1541 varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
1542 			  struct type *new_type)
1543 {
1544   /* If we haven't previously computed the number of children in var,
1545      it does not matter from the front-end's perspective whether
1546      the type has mutated or not.  For all intents and purposes,
1547      it has not mutated.  */
1548   if (var->num_children < 0)
1549     return 0;
1550 
1551   if (var->root->lang_ops->value_has_mutated)
1552     {
1553       /* The varobj module, when installing new values, explicitly strips
1554 	 references, saying that we're not interested in those addresses.
1555 	 But detection of mutation happens before installing the new
1556 	 value, so our value may be a reference that we need to strip
1557 	 in order to remain consistent.  */
1558       if (new_value != NULL)
1559 	new_value = coerce_ref (new_value);
1560       return var->root->lang_ops->value_has_mutated (var, new_value, new_type);
1561     }
1562   else
1563     return 0;
1564 }
1565 
1566 /* Update the values for a variable and its children.  This is a
1567    two-pronged attack.  First, re-parse the value for the root's
1568    expression to see if it's changed.  Then go all the way
1569    through its children, reconstructing them and noting if they've
1570    changed.
1571 
1572    The EXPLICIT parameter specifies if this call is result
1573    of MI request to update this specific variable, or
1574    result of implicit -var-update *.  For implicit request, we don't
1575    update frozen variables.
1576 
1577    NOTE: This function may delete the caller's varobj.  If it
1578    returns TYPE_CHANGED, then it has done this and VARP will be modified
1579    to point to the new varobj.  */
1580 
1581 VEC(varobj_update_result) *
1582 varobj_update (struct varobj **varp, int is_explicit)
1583 {
1584   int type_changed = 0;
1585   int i;
1586   struct value *newobj;
1587   VEC (varobj_update_result) *stack = NULL;
1588   VEC (varobj_update_result) *result = NULL;
1589 
1590   /* Frozen means frozen -- we don't check for any change in
1591      this varobj, including its going out of scope, or
1592      changing type.  One use case for frozen varobjs is
1593      retaining previously evaluated expressions, and we don't
1594      want them to be reevaluated at all.  */
1595   if (!is_explicit && (*varp)->frozen)
1596     return result;
1597 
1598   if (!(*varp)->root->is_valid)
1599     {
1600       varobj_update_result r = {0};
1601 
1602       r.varobj = *varp;
1603       r.status = VAROBJ_INVALID;
1604       VEC_safe_push (varobj_update_result, result, &r);
1605       return result;
1606     }
1607 
1608   if ((*varp)->root->rootvar == *varp)
1609     {
1610       varobj_update_result r = {0};
1611 
1612       r.varobj = *varp;
1613       r.status = VAROBJ_IN_SCOPE;
1614 
1615       /* Update the root variable.  value_of_root can return NULL
1616 	 if the variable is no longer around, i.e. we stepped out of
1617 	 the frame in which a local existed.  We are letting the
1618 	 value_of_root variable dispose of the varobj if the type
1619 	 has changed.  */
1620       newobj = value_of_root (varp, &type_changed);
1621       if (update_type_if_necessary(*varp, newobj))
1622 	  type_changed = 1;
1623       r.varobj = *varp;
1624       r.type_changed = type_changed;
1625       if (install_new_value ((*varp), newobj, type_changed))
1626 	r.changed = 1;
1627 
1628       if (newobj == NULL)
1629 	r.status = VAROBJ_NOT_IN_SCOPE;
1630       r.value_installed = 1;
1631 
1632       if (r.status == VAROBJ_NOT_IN_SCOPE)
1633 	{
1634 	  if (r.type_changed || r.changed)
1635 	    VEC_safe_push (varobj_update_result, result, &r);
1636 	  return result;
1637 	}
1638 
1639       VEC_safe_push (varobj_update_result, stack, &r);
1640     }
1641   else
1642     {
1643       varobj_update_result r = {0};
1644 
1645       r.varobj = *varp;
1646       VEC_safe_push (varobj_update_result, stack, &r);
1647     }
1648 
1649   /* Walk through the children, reconstructing them all.  */
1650   while (!VEC_empty (varobj_update_result, stack))
1651     {
1652       varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1653       struct varobj *v = r.varobj;
1654 
1655       VEC_pop (varobj_update_result, stack);
1656 
1657       /* Update this variable, unless it's a root, which is already
1658 	 updated.  */
1659       if (!r.value_installed)
1660 	{
1661 	  struct type *new_type;
1662 
1663 	  newobj = value_of_child (v->parent, v->index);
1664 	  if (update_type_if_necessary(v, newobj))
1665 	    r.type_changed = 1;
1666 	  if (newobj)
1667 	    new_type = value_type (newobj);
1668 	  else
1669 	    new_type = v->root->lang_ops->type_of_child (v->parent, v->index);
1670 
1671 	  if (varobj_value_has_mutated (v, newobj, new_type))
1672 	    {
1673 	      /* The children are no longer valid; delete them now.
1674 	         Report the fact that its type changed as well.  */
1675 	      varobj_delete (v, 1 /* only_children */);
1676 	      v->num_children = -1;
1677 	      v->to = -1;
1678 	      v->from = -1;
1679 	      v->type = new_type;
1680 	      r.type_changed = 1;
1681 	    }
1682 
1683 	  if (install_new_value (v, newobj, r.type_changed))
1684 	    {
1685 	      r.changed = 1;
1686 	      v->updated = 0;
1687 	    }
1688 	}
1689 
1690       /* We probably should not get children of a dynamic varobj, but
1691 	 for which -var-list-children was never invoked.  */
1692       if (varobj_is_dynamic_p (v))
1693 	{
1694 	  VEC (varobj_p) *changed = 0, *type_changed = 0, *unchanged = 0;
1695 	  VEC (varobj_p) *newobj = 0;
1696 	  int i, children_changed = 0;
1697 
1698 	  if (v->frozen)
1699 	    continue;
1700 
1701 	  if (!v->dynamic->children_requested)
1702 	    {
1703 	      int dummy;
1704 
1705 	      /* If we initially did not have potential children, but
1706 		 now we do, consider the varobj as changed.
1707 		 Otherwise, if children were never requested, consider
1708 		 it as unchanged -- presumably, such varobj is not yet
1709 		 expanded in the UI, so we need not bother getting
1710 		 it.  */
1711 	      if (!varobj_has_more (v, 0))
1712 		{
1713 		  update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
1714 						  &dummy, 0, 0, 0);
1715 		  if (varobj_has_more (v, 0))
1716 		    r.changed = 1;
1717 		}
1718 
1719 	      if (r.changed)
1720 		VEC_safe_push (varobj_update_result, result, &r);
1721 
1722 	      continue;
1723 	    }
1724 
1725 	  /* If update_dynamic_varobj_children returns 0, then we have
1726 	     a non-conforming pretty-printer, so we skip it.  */
1727 	  if (update_dynamic_varobj_children (v, &changed, &type_changed, &newobj,
1728 					      &unchanged, &children_changed, 1,
1729 					      v->from, v->to))
1730 	    {
1731 	      if (children_changed || newobj)
1732 		{
1733 		  r.children_changed = 1;
1734 		  r.newobj = newobj;
1735 		}
1736 	      /* Push in reverse order so that the first child is
1737 		 popped from the work stack first, and so will be
1738 		 added to result first.  This does not affect
1739 		 correctness, just "nicer".  */
1740 	      for (i = VEC_length (varobj_p, type_changed) - 1; i >= 0; --i)
1741 		{
1742 		  varobj_p tmp = VEC_index (varobj_p, type_changed, i);
1743 		  varobj_update_result r = {0};
1744 
1745 		  /* Type may change only if value was changed.  */
1746 		  r.varobj = tmp;
1747 		  r.changed = 1;
1748 		  r.type_changed = 1;
1749 		  r.value_installed = 1;
1750 		  VEC_safe_push (varobj_update_result, stack, &r);
1751 		}
1752 	      for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
1753 		{
1754 		  varobj_p tmp = VEC_index (varobj_p, changed, i);
1755 		  varobj_update_result r = {0};
1756 
1757 		  r.varobj = tmp;
1758 		  r.changed = 1;
1759 		  r.value_installed = 1;
1760 		  VEC_safe_push (varobj_update_result, stack, &r);
1761 		}
1762 	      for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
1763 	      	{
1764 		  varobj_p tmp = VEC_index (varobj_p, unchanged, i);
1765 
1766 	      	  if (!tmp->frozen)
1767 	      	    {
1768 	      	      varobj_update_result r = {0};
1769 
1770 		      r.varobj = tmp;
1771 	      	      r.value_installed = 1;
1772 	      	      VEC_safe_push (varobj_update_result, stack, &r);
1773 	      	    }
1774 	      	}
1775 	      if (r.changed || r.children_changed)
1776 		VEC_safe_push (varobj_update_result, result, &r);
1777 
1778 	      /* Free CHANGED, TYPE_CHANGED and UNCHANGED, but not NEW,
1779 		 because NEW has been put into the result vector.  */
1780 	      VEC_free (varobj_p, changed);
1781 	      VEC_free (varobj_p, type_changed);
1782 	      VEC_free (varobj_p, unchanged);
1783 
1784 	      continue;
1785 	    }
1786 	}
1787 
1788       /* Push any children.  Use reverse order so that the first
1789 	 child is popped from the work stack first, and so
1790 	 will be added to result first.  This does not
1791 	 affect correctness, just "nicer".  */
1792       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1793 	{
1794 	  varobj_p c = VEC_index (varobj_p, v->children, i);
1795 
1796 	  /* Child may be NULL if explicitly deleted by -var-delete.  */
1797 	  if (c != NULL && !c->frozen)
1798 	    {
1799 	      varobj_update_result r = {0};
1800 
1801 	      r.varobj = c;
1802 	      VEC_safe_push (varobj_update_result, stack, &r);
1803 	    }
1804 	}
1805 
1806       if (r.changed || r.type_changed)
1807 	VEC_safe_push (varobj_update_result, result, &r);
1808     }
1809 
1810   VEC_free (varobj_update_result, stack);
1811 
1812   return result;
1813 }
1814 
1815 
1816 /* Helper functions */
1817 
1818 /*
1819  * Variable object construction/destruction
1820  */
1821 
1822 static int
1823 delete_variable (struct varobj *var, int only_children_p)
1824 {
1825   int delcount = 0;
1826 
1827   delete_variable_1 (&delcount, var, only_children_p,
1828 		     1 /* remove_from_parent_p */ );
1829 
1830   return delcount;
1831 }
1832 
1833 /* Delete the variable object VAR and its children.  */
1834 /* IMPORTANT NOTE: If we delete a variable which is a child
1835    and the parent is not removed we dump core.  It must be always
1836    initially called with remove_from_parent_p set.  */
1837 static void
1838 delete_variable_1 (int *delcountp, struct varobj *var, int only_children_p,
1839 		   int remove_from_parent_p)
1840 {
1841   int i;
1842 
1843   /* Delete any children of this variable, too.  */
1844   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1845     {
1846       varobj_p child = VEC_index (varobj_p, var->children, i);
1847 
1848       if (!child)
1849 	continue;
1850       if (!remove_from_parent_p)
1851 	child->parent = NULL;
1852       delete_variable_1 (delcountp, child, 0, only_children_p);
1853     }
1854   VEC_free (varobj_p, var->children);
1855 
1856   /* if we were called to delete only the children we are done here.  */
1857   if (only_children_p)
1858     return;
1859 
1860   /* Otherwise, add it to the list of deleted ones and proceed to do so.  */
1861   /* If the name is null, this is a temporary variable, that has not
1862      yet been installed, don't report it, it belongs to the caller...  */
1863   if (var->obj_name != NULL)
1864     {
1865       *delcountp = *delcountp + 1;
1866     }
1867 
1868   /* If this variable has a parent, remove it from its parent's list.  */
1869   /* OPTIMIZATION: if the parent of this variable is also being deleted,
1870      (as indicated by remove_from_parent_p) we don't bother doing an
1871      expensive list search to find the element to remove when we are
1872      discarding the list afterwards.  */
1873   if ((remove_from_parent_p) && (var->parent != NULL))
1874     {
1875       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1876     }
1877 
1878   if (var->obj_name != NULL)
1879     uninstall_variable (var);
1880 
1881   /* Free memory associated with this variable.  */
1882   free_variable (var);
1883 }
1884 
1885 /* Install the given variable VAR with the object name VAR->OBJ_NAME.  */
1886 static int
1887 install_variable (struct varobj *var)
1888 {
1889   struct vlist *cv;
1890   struct vlist *newvl;
1891   const char *chp;
1892   unsigned int index = 0;
1893   unsigned int i = 1;
1894 
1895   for (chp = var->obj_name; *chp; chp++)
1896     {
1897       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1898     }
1899 
1900   cv = *(varobj_table + index);
1901   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1902     cv = cv->next;
1903 
1904   if (cv != NULL)
1905     error (_("Duplicate variable object name"));
1906 
1907   /* Add varobj to hash table.  */
1908   newvl = XNEW (struct vlist);
1909   newvl->next = *(varobj_table + index);
1910   newvl->var = var;
1911   *(varobj_table + index) = newvl;
1912 
1913   /* If root, add varobj to root list.  */
1914   if (is_root_p (var))
1915     {
1916       /* Add to list of root variables.  */
1917       if (rootlist == NULL)
1918 	var->root->next = NULL;
1919       else
1920 	var->root->next = rootlist;
1921       rootlist = var->root;
1922     }
1923 
1924   return 1;			/* OK */
1925 }
1926 
1927 /* Unistall the object VAR.  */
1928 static void
1929 uninstall_variable (struct varobj *var)
1930 {
1931   struct vlist *cv;
1932   struct vlist *prev;
1933   struct varobj_root *cr;
1934   struct varobj_root *prer;
1935   const char *chp;
1936   unsigned int index = 0;
1937   unsigned int i = 1;
1938 
1939   /* Remove varobj from hash table.  */
1940   for (chp = var->obj_name; *chp; chp++)
1941     {
1942       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1943     }
1944 
1945   cv = *(varobj_table + index);
1946   prev = NULL;
1947   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1948     {
1949       prev = cv;
1950       cv = cv->next;
1951     }
1952 
1953   if (varobjdebug)
1954     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
1955 
1956   if (cv == NULL)
1957     {
1958       warning
1959 	("Assertion failed: Could not find variable object \"%s\" to delete",
1960 	 var->obj_name);
1961       return;
1962     }
1963 
1964   if (prev == NULL)
1965     *(varobj_table + index) = cv->next;
1966   else
1967     prev->next = cv->next;
1968 
1969   xfree (cv);
1970 
1971   /* If root, remove varobj from root list.  */
1972   if (is_root_p (var))
1973     {
1974       /* Remove from list of root variables.  */
1975       if (rootlist == var->root)
1976 	rootlist = var->root->next;
1977       else
1978 	{
1979 	  prer = NULL;
1980 	  cr = rootlist;
1981 	  while ((cr != NULL) && (cr->rootvar != var))
1982 	    {
1983 	      prer = cr;
1984 	      cr = cr->next;
1985 	    }
1986 	  if (cr == NULL)
1987 	    {
1988 	      warning (_("Assertion failed: Could not find "
1989 		         "varobj \"%s\" in root list"),
1990 		       var->obj_name);
1991 	      return;
1992 	    }
1993 	  if (prer == NULL)
1994 	    rootlist = NULL;
1995 	  else
1996 	    prer->next = cr->next;
1997 	}
1998     }
1999 
2000 }
2001 
2002 /* Create and install a child of the parent of the given name.
2003 
2004    The created VAROBJ takes ownership of the allocated NAME.  */
2005 
2006 static struct varobj *
2007 create_child (struct varobj *parent, int index, char *name)
2008 {
2009   struct varobj_item item;
2010 
2011   item.name = name;
2012   item.value = value_of_child (parent, index);
2013 
2014   return create_child_with_value (parent, index, &item);
2015 }
2016 
2017 static struct varobj *
2018 create_child_with_value (struct varobj *parent, int index,
2019 			 struct varobj_item *item)
2020 {
2021   struct varobj *child;
2022   char *childs_name;
2023 
2024   child = new_variable ();
2025 
2026   /* NAME is allocated by caller.  */
2027   child->name = item->name;
2028   child->index = index;
2029   child->parent = parent;
2030   child->root = parent->root;
2031 
2032   if (varobj_is_anonymous_child (child))
2033     childs_name = xstrprintf ("%s.%d_anonymous", parent->obj_name, index);
2034   else
2035     childs_name = xstrprintf ("%s.%s", parent->obj_name, item->name);
2036   child->obj_name = childs_name;
2037 
2038   install_variable (child);
2039 
2040   /* Compute the type of the child.  Must do this before
2041      calling install_new_value.  */
2042   if (item->value != NULL)
2043     /* If the child had no evaluation errors, var->value
2044        will be non-NULL and contain a valid type.  */
2045     child->type = value_actual_type (item->value, 0, NULL);
2046   else
2047     /* Otherwise, we must compute the type.  */
2048     child->type = (*child->root->lang_ops->type_of_child) (child->parent,
2049 							   child->index);
2050   install_new_value (child, item->value, 1);
2051 
2052   return child;
2053 }
2054 
2055 
2056 /*
2057  * Miscellaneous utility functions.
2058  */
2059 
2060 /* Allocate memory and initialize a new variable.  */
2061 static struct varobj *
2062 new_variable (void)
2063 {
2064   struct varobj *var;
2065 
2066   var = XNEW (struct varobj);
2067   var->name = NULL;
2068   var->path_expr = NULL;
2069   var->obj_name = NULL;
2070   var->index = -1;
2071   var->type = NULL;
2072   var->value = NULL;
2073   var->num_children = -1;
2074   var->parent = NULL;
2075   var->children = NULL;
2076   var->format = FORMAT_NATURAL;
2077   var->root = NULL;
2078   var->updated = 0;
2079   var->print_value = NULL;
2080   var->frozen = 0;
2081   var->not_fetched = 0;
2082   var->dynamic = XNEW (struct varobj_dynamic);
2083   var->dynamic->children_requested = 0;
2084   var->from = -1;
2085   var->to = -1;
2086   var->dynamic->constructor = 0;
2087   var->dynamic->pretty_printer = 0;
2088   var->dynamic->child_iter = 0;
2089   var->dynamic->saved_item = 0;
2090 
2091   return var;
2092 }
2093 
2094 /* Allocate memory and initialize a new root variable.  */
2095 static struct varobj *
2096 new_root_variable (void)
2097 {
2098   struct varobj *var = new_variable ();
2099 
2100   var->root = XNEW (struct varobj_root);
2101   var->root->lang_ops = NULL;
2102   var->root->exp = NULL;
2103   var->root->valid_block = NULL;
2104   var->root->frame = null_frame_id;
2105   var->root->floating = 0;
2106   var->root->rootvar = NULL;
2107   var->root->is_valid = 1;
2108 
2109   return var;
2110 }
2111 
2112 /* Free any allocated memory associated with VAR.  */
2113 static void
2114 free_variable (struct varobj *var)
2115 {
2116 #if HAVE_PYTHON
2117   if (var->dynamic->pretty_printer != NULL)
2118     {
2119       struct cleanup *cleanup = varobj_ensure_python_env (var);
2120 
2121       Py_XDECREF (var->dynamic->constructor);
2122       Py_XDECREF (var->dynamic->pretty_printer);
2123       do_cleanups (cleanup);
2124     }
2125 #endif
2126 
2127   varobj_iter_delete (var->dynamic->child_iter);
2128   varobj_clear_saved_item (var->dynamic);
2129   value_free (var->value);
2130 
2131   /* Free the expression if this is a root variable.  */
2132   if (is_root_p (var))
2133     {
2134       xfree (var->root->exp);
2135       xfree (var->root);
2136     }
2137 
2138   xfree (var->name);
2139   xfree (var->obj_name);
2140   xfree (var->print_value);
2141   xfree (var->path_expr);
2142   xfree (var->dynamic);
2143   xfree (var);
2144 }
2145 
2146 static void
2147 do_free_variable_cleanup (void *var)
2148 {
2149   free_variable ((struct varobj *) var);
2150 }
2151 
2152 static struct cleanup *
2153 make_cleanup_free_variable (struct varobj *var)
2154 {
2155   return make_cleanup (do_free_variable_cleanup, var);
2156 }
2157 
2158 /* Return the type of the value that's stored in VAR,
2159    or that would have being stored there if the
2160    value were accessible.
2161 
2162    This differs from VAR->type in that VAR->type is always
2163    the true type of the expession in the source language.
2164    The return value of this function is the type we're
2165    actually storing in varobj, and using for displaying
2166    the values and for comparing previous and new values.
2167 
2168    For example, top-level references are always stripped.  */
2169 struct type *
2170 varobj_get_value_type (const struct varobj *var)
2171 {
2172   struct type *type;
2173 
2174   if (var->value)
2175     type = value_type (var->value);
2176   else
2177     type = var->type;
2178 
2179   type = check_typedef (type);
2180 
2181   if (TYPE_CODE (type) == TYPE_CODE_REF)
2182     type = get_target_type (type);
2183 
2184   type = check_typedef (type);
2185 
2186   return type;
2187 }
2188 
2189 /* What is the default display for this variable? We assume that
2190    everything is "natural".  Any exceptions?  */
2191 static enum varobj_display_formats
2192 variable_default_display (struct varobj *var)
2193 {
2194   return FORMAT_NATURAL;
2195 }
2196 
2197 /*
2198  * Language-dependencies
2199  */
2200 
2201 /* Common entry points */
2202 
2203 /* Return the number of children for a given variable.
2204    The result of this function is defined by the language
2205    implementation.  The number of children returned by this function
2206    is the number of children that the user will see in the variable
2207    display.  */
2208 static int
2209 number_of_children (const struct varobj *var)
2210 {
2211   return (*var->root->lang_ops->number_of_children) (var);
2212 }
2213 
2214 /* What is the expression for the root varobj VAR? Returns a malloc'd
2215    string.  */
2216 static char *
2217 name_of_variable (const struct varobj *var)
2218 {
2219   return (*var->root->lang_ops->name_of_variable) (var);
2220 }
2221 
2222 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd
2223    string.  */
2224 static char *
2225 name_of_child (struct varobj *var, int index)
2226 {
2227   return (*var->root->lang_ops->name_of_child) (var, index);
2228 }
2229 
2230 /* If frame associated with VAR can be found, switch
2231    to it and return 1.  Otherwise, return 0.  */
2232 
2233 static int
2234 check_scope (const struct varobj *var)
2235 {
2236   struct frame_info *fi;
2237   int scope;
2238 
2239   fi = frame_find_by_id (var->root->frame);
2240   scope = fi != NULL;
2241 
2242   if (fi)
2243     {
2244       CORE_ADDR pc = get_frame_pc (fi);
2245 
2246       if (pc <  BLOCK_START (var->root->valid_block) ||
2247 	  pc >= BLOCK_END (var->root->valid_block))
2248 	scope = 0;
2249       else
2250 	select_frame (fi);
2251     }
2252   return scope;
2253 }
2254 
2255 /* Helper function to value_of_root.  */
2256 
2257 static struct value *
2258 value_of_root_1 (struct varobj **var_handle)
2259 {
2260   struct value *new_val = NULL;
2261   struct varobj *var = *var_handle;
2262   int within_scope = 0;
2263   struct cleanup *back_to;
2264 
2265   /*  Only root variables can be updated...  */
2266   if (!is_root_p (var))
2267     /* Not a root var.  */
2268     return NULL;
2269 
2270   back_to = make_cleanup_restore_current_thread ();
2271 
2272   /* Determine whether the variable is still around.  */
2273   if (var->root->valid_block == NULL || var->root->floating)
2274     within_scope = 1;
2275   else if (var->root->thread_id == 0)
2276     {
2277       /* The program was single-threaded when the variable object was
2278 	 created.  Technically, it's possible that the program became
2279 	 multi-threaded since then, but we don't support such
2280 	 scenario yet.  */
2281       within_scope = check_scope (var);
2282     }
2283   else
2284     {
2285       ptid_t ptid = global_thread_id_to_ptid (var->root->thread_id);
2286 
2287       if (!ptid_equal (minus_one_ptid, ptid))
2288 	{
2289 	  switch_to_thread (ptid);
2290 	  within_scope = check_scope (var);
2291 	}
2292     }
2293 
2294   if (within_scope)
2295     {
2296 
2297       /* We need to catch errors here, because if evaluate
2298          expression fails we want to just return NULL.  */
2299       TRY
2300 	{
2301 	  new_val = evaluate_expression (var->root->exp);
2302 	}
2303       CATCH (except, RETURN_MASK_ERROR)
2304 	{
2305 	}
2306       END_CATCH
2307     }
2308 
2309   do_cleanups (back_to);
2310 
2311   return new_val;
2312 }
2313 
2314 /* What is the ``struct value *'' of the root variable VAR?
2315    For floating variable object, evaluation can get us a value
2316    of different type from what is stored in varobj already.  In
2317    that case:
2318    - *type_changed will be set to 1
2319    - old varobj will be freed, and new one will be
2320    created, with the same name.
2321    - *var_handle will be set to the new varobj
2322    Otherwise, *type_changed will be set to 0.  */
2323 static struct value *
2324 value_of_root (struct varobj **var_handle, int *type_changed)
2325 {
2326   struct varobj *var;
2327 
2328   if (var_handle == NULL)
2329     return NULL;
2330 
2331   var = *var_handle;
2332 
2333   /* This should really be an exception, since this should
2334      only get called with a root variable.  */
2335 
2336   if (!is_root_p (var))
2337     return NULL;
2338 
2339   if (var->root->floating)
2340     {
2341       struct varobj *tmp_var;
2342       char *old_type, *new_type;
2343 
2344       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2345 			       USE_SELECTED_FRAME);
2346       if (tmp_var == NULL)
2347 	{
2348 	  return NULL;
2349 	}
2350       old_type = varobj_get_type (var);
2351       new_type = varobj_get_type (tmp_var);
2352       if (strcmp (old_type, new_type) == 0)
2353 	{
2354 	  /* The expression presently stored inside var->root->exp
2355 	     remembers the locations of local variables relatively to
2356 	     the frame where the expression was created (in DWARF location
2357 	     button, for example).  Naturally, those locations are not
2358 	     correct in other frames, so update the expression.  */
2359 
2360          struct expression *tmp_exp = var->root->exp;
2361 
2362          var->root->exp = tmp_var->root->exp;
2363          tmp_var->root->exp = tmp_exp;
2364 
2365 	  varobj_delete (tmp_var, 0);
2366 	  *type_changed = 0;
2367 	}
2368       else
2369 	{
2370 	  tmp_var->obj_name = xstrdup (var->obj_name);
2371 	  tmp_var->from = var->from;
2372 	  tmp_var->to = var->to;
2373 	  varobj_delete (var, 0);
2374 
2375 	  install_variable (tmp_var);
2376 	  *var_handle = tmp_var;
2377 	  var = *var_handle;
2378 	  *type_changed = 1;
2379 	}
2380       xfree (old_type);
2381       xfree (new_type);
2382     }
2383   else
2384     {
2385       *type_changed = 0;
2386     }
2387 
2388   {
2389     struct value *value;
2390 
2391     value = value_of_root_1 (var_handle);
2392     if (var->value == NULL || value == NULL)
2393       {
2394 	/* For root varobj-s, a NULL value indicates a scoping issue.
2395 	   So, nothing to do in terms of checking for mutations.  */
2396       }
2397     else if (varobj_value_has_mutated (var, value, value_type (value)))
2398       {
2399 	/* The type has mutated, so the children are no longer valid.
2400 	   Just delete them, and tell our caller that the type has
2401 	   changed.  */
2402 	varobj_delete (var, 1 /* only_children */);
2403 	var->num_children = -1;
2404 	var->to = -1;
2405 	var->from = -1;
2406 	*type_changed = 1;
2407       }
2408     return value;
2409   }
2410 }
2411 
2412 /* What is the ``struct value *'' for the INDEX'th child of PARENT?  */
2413 static struct value *
2414 value_of_child (const struct varobj *parent, int index)
2415 {
2416   struct value *value;
2417 
2418   value = (*parent->root->lang_ops->value_of_child) (parent, index);
2419 
2420   return value;
2421 }
2422 
2423 /* GDB already has a command called "value_of_variable".  Sigh.  */
2424 static char *
2425 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2426 {
2427   if (var->root->is_valid)
2428     {
2429       if (var->dynamic->pretty_printer != NULL)
2430 	return varobj_value_get_print_value (var->value, var->format, var);
2431       return (*var->root->lang_ops->value_of_variable) (var, format);
2432     }
2433   else
2434     return NULL;
2435 }
2436 
2437 void
2438 varobj_formatted_print_options (struct value_print_options *opts,
2439 				enum varobj_display_formats format)
2440 {
2441   get_formatted_print_options (opts, format_code[(int) format]);
2442   opts->deref_ref = 0;
2443   opts->raw = 1;
2444 }
2445 
2446 char *
2447 varobj_value_get_print_value (struct value *value,
2448 			      enum varobj_display_formats format,
2449 			      const struct varobj *var)
2450 {
2451   struct ui_file *stb;
2452   struct cleanup *old_chain;
2453   char *thevalue = NULL;
2454   struct value_print_options opts;
2455   struct type *type = NULL;
2456   long len = 0;
2457   char *encoding = NULL;
2458   /* Initialize it just to avoid a GCC false warning.  */
2459   CORE_ADDR str_addr = 0;
2460   int string_print = 0;
2461 
2462   if (value == NULL)
2463     return NULL;
2464 
2465   stb = mem_fileopen ();
2466   old_chain = make_cleanup_ui_file_delete (stb);
2467 
2468 #if HAVE_PYTHON
2469   if (gdb_python_initialized)
2470     {
2471       PyObject *value_formatter =  var->dynamic->pretty_printer;
2472 
2473       varobj_ensure_python_env (var);
2474 
2475       if (value_formatter)
2476 	{
2477 	  /* First check to see if we have any children at all.  If so,
2478 	     we simply return {...}.  */
2479 	  if (dynamic_varobj_has_child_method (var))
2480 	    {
2481 	      do_cleanups (old_chain);
2482 	      return xstrdup ("{...}");
2483 	    }
2484 
2485 	  if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2486 	    {
2487 	      struct value *replacement;
2488 	      PyObject *output = NULL;
2489 
2490 	      output = apply_varobj_pretty_printer (value_formatter,
2491 						    &replacement,
2492 						    stb);
2493 
2494 	      /* If we have string like output ...  */
2495 	      if (output)
2496 		{
2497 		  make_cleanup_py_decref (output);
2498 
2499 		  /* If this is a lazy string, extract it.  For lazy
2500 		     strings we always print as a string, so set
2501 		     string_print.  */
2502 		  if (gdbpy_is_lazy_string (output))
2503 		    {
2504 		      gdbpy_extract_lazy_string (output, &str_addr, &type,
2505 						 &len, &encoding);
2506 		      make_cleanup (free_current_contents, &encoding);
2507 		      string_print = 1;
2508 		    }
2509 		  else
2510 		    {
2511 		      /* If it is a regular (non-lazy) string, extract
2512 			 it and copy the contents into THEVALUE.  If the
2513 			 hint says to print it as a string, set
2514 			 string_print.  Otherwise just return the extracted
2515 			 string as a value.  */
2516 
2517 		      char *s = python_string_to_target_string (output);
2518 
2519 		      if (s)
2520 			{
2521 			  struct gdbarch *gdbarch;
2522 			  char *hint;
2523 
2524 			  hint = gdbpy_get_display_hint (value_formatter);
2525 			  if (hint)
2526 			    {
2527 			      if (!strcmp (hint, "string"))
2528 				string_print = 1;
2529 			      xfree (hint);
2530 			    }
2531 
2532 			  len = strlen (s);
2533 			  thevalue = (char *) xmemdup (s, len + 1, len + 1);
2534 			  gdbarch = get_type_arch (value_type (value));
2535 			  type = builtin_type (gdbarch)->builtin_char;
2536 			  xfree (s);
2537 
2538 			  if (!string_print)
2539 			    {
2540 			      do_cleanups (old_chain);
2541 			      return thevalue;
2542 			    }
2543 
2544 			  make_cleanup (xfree, thevalue);
2545 			}
2546 		      else
2547 			gdbpy_print_stack ();
2548 		    }
2549 		}
2550 	      /* If the printer returned a replacement value, set VALUE
2551 		 to REPLACEMENT.  If there is not a replacement value,
2552 		 just use the value passed to this function.  */
2553 	      if (replacement)
2554 		value = replacement;
2555 	    }
2556 	}
2557     }
2558 #endif
2559 
2560   varobj_formatted_print_options (&opts, format);
2561 
2562   /* If the THEVALUE has contents, it is a regular string.  */
2563   if (thevalue)
2564     LA_PRINT_STRING (stb, type, (gdb_byte *) thevalue, len, encoding, 0, &opts);
2565   else if (string_print)
2566     /* Otherwise, if string_print is set, and it is not a regular
2567        string, it is a lazy string.  */
2568     val_print_string (type, encoding, str_addr, len, stb, &opts);
2569   else
2570     /* All other cases.  */
2571     common_val_print (value, stb, 0, &opts, current_language);
2572 
2573   thevalue = ui_file_xstrdup (stb, NULL);
2574 
2575   do_cleanups (old_chain);
2576   return thevalue;
2577 }
2578 
2579 int
2580 varobj_editable_p (const struct varobj *var)
2581 {
2582   struct type *type;
2583 
2584   if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2585     return 0;
2586 
2587   type = varobj_get_value_type (var);
2588 
2589   switch (TYPE_CODE (type))
2590     {
2591     case TYPE_CODE_STRUCT:
2592     case TYPE_CODE_UNION:
2593     case TYPE_CODE_ARRAY:
2594     case TYPE_CODE_FUNC:
2595     case TYPE_CODE_METHOD:
2596       return 0;
2597       break;
2598 
2599     default:
2600       return 1;
2601       break;
2602     }
2603 }
2604 
2605 /* Call VAR's value_is_changeable_p language-specific callback.  */
2606 
2607 int
2608 varobj_value_is_changeable_p (const struct varobj *var)
2609 {
2610   return var->root->lang_ops->value_is_changeable_p (var);
2611 }
2612 
2613 /* Return 1 if that varobj is floating, that is is always evaluated in the
2614    selected frame, and not bound to thread/frame.  Such variable objects
2615    are created using '@' as frame specifier to -var-create.  */
2616 int
2617 varobj_floating_p (const struct varobj *var)
2618 {
2619   return var->root->floating;
2620 }
2621 
2622 /* Implement the "value_is_changeable_p" varobj callback for most
2623    languages.  */
2624 
2625 int
2626 varobj_default_value_is_changeable_p (const struct varobj *var)
2627 {
2628   int r;
2629   struct type *type;
2630 
2631   if (CPLUS_FAKE_CHILD (var))
2632     return 0;
2633 
2634   type = varobj_get_value_type (var);
2635 
2636   switch (TYPE_CODE (type))
2637     {
2638     case TYPE_CODE_STRUCT:
2639     case TYPE_CODE_UNION:
2640     case TYPE_CODE_ARRAY:
2641       r = 0;
2642       break;
2643 
2644     default:
2645       r = 1;
2646     }
2647 
2648   return r;
2649 }
2650 
2651 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
2652    with an arbitrary caller supplied DATA pointer.  */
2653 
2654 void
2655 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
2656 {
2657   struct varobj_root *var_root, *var_root_next;
2658 
2659   /* Iterate "safely" - handle if the callee deletes its passed VAROBJ.  */
2660 
2661   for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
2662     {
2663       var_root_next = var_root->next;
2664 
2665       (*func) (var_root->rootvar, data);
2666     }
2667 }
2668 
2669 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
2670    defined on globals.  It is a helper for varobj_invalidate.
2671 
2672    This function is called after changing the symbol file, in this case the
2673    pointers to "struct type" stored by the varobj are no longer valid.  All
2674    varobj must be either re-evaluated, or marked as invalid here.  */
2675 
2676 static void
2677 varobj_invalidate_iter (struct varobj *var, void *unused)
2678 {
2679   /* global and floating var must be re-evaluated.  */
2680   if (var->root->floating || var->root->valid_block == NULL)
2681     {
2682       struct varobj *tmp_var;
2683 
2684       /* Try to create a varobj with same expression.  If we succeed
2685 	 replace the old varobj, otherwise invalidate it.  */
2686       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2687 			       USE_CURRENT_FRAME);
2688       if (tmp_var != NULL)
2689 	{
2690 	  tmp_var->obj_name = xstrdup (var->obj_name);
2691 	  varobj_delete (var, 0);
2692 	  install_variable (tmp_var);
2693 	}
2694       else
2695 	var->root->is_valid = 0;
2696     }
2697   else /* locals must be invalidated.  */
2698     var->root->is_valid = 0;
2699 }
2700 
2701 /* Invalidate the varobjs that are tied to locals and re-create the ones that
2702    are defined on globals.
2703    Invalidated varobjs will be always printed in_scope="invalid".  */
2704 
2705 void
2706 varobj_invalidate (void)
2707 {
2708   all_root_varobjs (varobj_invalidate_iter, NULL);
2709 }
2710 
2711 extern void _initialize_varobj (void);
2712 void
2713 _initialize_varobj (void)
2714 {
2715   varobj_table = XCNEWVEC (struct vlist *, VAROBJ_TABLE_SIZE);
2716 
2717   add_setshow_zuinteger_cmd ("varobj", class_maintenance,
2718 			     &varobjdebug,
2719 			     _("Set varobj debugging."),
2720 			     _("Show varobj debugging."),
2721 			     _("When non-zero, varobj debugging is enabled."),
2722 			     NULL, show_varobjdebug,
2723 			     &setdebuglist, &showdebuglist);
2724 }
2725