xref: /dragonfly/contrib/gdb-7/gdb/varobj.c (revision a68e0df0)
1 /* Implementation of the GDB variable objects API.
2 
3    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4    2009 Free Software Foundation, Inc.
5 
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10 
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18 
19 #include "defs.h"
20 #include "exceptions.h"
21 #include "value.h"
22 #include "expression.h"
23 #include "frame.h"
24 #include "language.h"
25 #include "wrapper.h"
26 #include "gdbcmd.h"
27 #include "block.h"
28 #include "valprint.h"
29 
30 #include "gdb_assert.h"
31 #include "gdb_string.h"
32 #include "gdb_regex.h"
33 
34 #include "varobj.h"
35 #include "vec.h"
36 #include "gdbthread.h"
37 #include "inferior.h"
38 
39 #if HAVE_PYTHON
40 #include "python/python.h"
41 #include "python/python-internal.h"
42 #else
43 typedef int PyObject;
44 #endif
45 
46 /* Non-zero if we want to see trace of varobj level stuff.  */
47 
48 int varobjdebug = 0;
49 static void
50 show_varobjdebug (struct ui_file *file, int from_tty,
51 		  struct cmd_list_element *c, const char *value)
52 {
53   fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
54 }
55 
56 /* String representations of gdb's format codes */
57 char *varobj_format_string[] =
58   { "natural", "binary", "decimal", "hexadecimal", "octal" };
59 
60 /* String representations of gdb's known languages */
61 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
62 
63 /* True if we want to allow Python-based pretty-printing.  */
64 static int pretty_printing = 0;
65 
66 void
67 varobj_enable_pretty_printing (void)
68 {
69   pretty_printing = 1;
70 }
71 
72 /* Data structures */
73 
74 /* Every root variable has one of these structures saved in its
75    varobj. Members which must be free'd are noted. */
76 struct varobj_root
77 {
78 
79   /* Alloc'd expression for this parent. */
80   struct expression *exp;
81 
82   /* Block for which this expression is valid */
83   struct block *valid_block;
84 
85   /* The frame for this expression.  This field is set iff valid_block is
86      not NULL.  */
87   struct frame_id frame;
88 
89   /* The thread ID that this varobj_root belong to.  This field
90      is only valid if valid_block is not NULL.
91      When not 0, indicates which thread 'frame' belongs to.
92      When 0, indicates that the thread list was empty when the varobj_root
93      was created.  */
94   int thread_id;
95 
96   /* If 1, the -var-update always recomputes the value in the
97      current thread and frame.  Otherwise, variable object is
98      always updated in the specific scope/thread/frame  */
99   int floating;
100 
101   /* Flag that indicates validity: set to 0 when this varobj_root refers
102      to symbols that do not exist anymore.  */
103   int is_valid;
104 
105   /* Language info for this variable and its children */
106   struct language_specific *lang;
107 
108   /* The varobj for this root node. */
109   struct varobj *rootvar;
110 
111   /* Next root variable */
112   struct varobj_root *next;
113 };
114 
115 /* Every variable in the system has a structure of this type defined
116    for it. This structure holds all information necessary to manipulate
117    a particular object variable. Members which must be freed are noted. */
118 struct varobj
119 {
120 
121   /* Alloc'd name of the variable for this object.. If this variable is a
122      child, then this name will be the child's source name.
123      (bar, not foo.bar) */
124   /* NOTE: This is the "expression" */
125   char *name;
126 
127   /* Alloc'd expression for this child.  Can be used to create a
128      root variable corresponding to this child.  */
129   char *path_expr;
130 
131   /* The alloc'd name for this variable's object. This is here for
132      convenience when constructing this object's children. */
133   char *obj_name;
134 
135   /* Index of this variable in its parent or -1 */
136   int index;
137 
138   /* The type of this variable.  This can be NULL
139      for artifial variable objects -- currently, the "accessibility"
140      variable objects in C++.  */
141   struct type *type;
142 
143   /* The value of this expression or subexpression.  A NULL value
144      indicates there was an error getting this value.
145      Invariant: if varobj_value_is_changeable_p (this) is non-zero,
146      the value is either NULL, or not lazy.  */
147   struct value *value;
148 
149   /* The number of (immediate) children this variable has */
150   int num_children;
151 
152   /* If this object is a child, this points to its immediate parent. */
153   struct varobj *parent;
154 
155   /* Children of this object.  */
156   VEC (varobj_p) *children;
157 
158   /* Whether the children of this varobj were requested.  This field is
159      used to decide if dynamic varobj should recompute their children.
160      In the event that the frontend never asked for the children, we
161      can avoid that.  */
162   int children_requested;
163 
164   /* Description of the root variable. Points to root variable for children. */
165   struct varobj_root *root;
166 
167   /* The format of the output for this object */
168   enum varobj_display_formats format;
169 
170   /* Was this variable updated via a varobj_set_value operation */
171   int updated;
172 
173   /* Last print value.  */
174   char *print_value;
175 
176   /* Is this variable frozen.  Frozen variables are never implicitly
177      updated by -var-update *
178      or -var-update <direct-or-indirect-parent>.  */
179   int frozen;
180 
181   /* Is the value of this variable intentionally not fetched?  It is
182      not fetched if either the variable is frozen, or any parents is
183      frozen.  */
184   int not_fetched;
185 
186   /* Sub-range of children which the MI consumer has requested.  If
187      FROM < 0 or TO < 0, means that all children have been
188      requested.  */
189   int from;
190   int to;
191 
192   /* The pretty-printer constructor.  If NULL, then the default
193      pretty-printer will be looked up.  If None, then no
194      pretty-printer will be installed.  */
195   PyObject *constructor;
196 
197   /* The pretty-printer that has been constructed.  If NULL, then a
198      new printer object is needed, and one will be constructed.  */
199   PyObject *pretty_printer;
200 
201   /* The iterator returned by the printer's 'children' method, or NULL
202      if not available.  */
203   PyObject *child_iter;
204 
205   /* We request one extra item from the iterator, so that we can
206      report to the caller whether there are more items than we have
207      already reported.  However, we don't want to install this value
208      when we read it, because that will mess up future updates.  So,
209      we stash it here instead.  */
210   PyObject *saved_item;
211 };
212 
213 struct cpstack
214 {
215   char *name;
216   struct cpstack *next;
217 };
218 
219 /* A list of varobjs */
220 
221 struct vlist
222 {
223   struct varobj *var;
224   struct vlist *next;
225 };
226 
227 /* Private function prototypes */
228 
229 /* Helper functions for the above subcommands. */
230 
231 static int delete_variable (struct cpstack **, struct varobj *, int);
232 
233 static void delete_variable_1 (struct cpstack **, int *,
234 			       struct varobj *, int, int);
235 
236 static int install_variable (struct varobj *);
237 
238 static void uninstall_variable (struct varobj *);
239 
240 static struct varobj *create_child (struct varobj *, int, char *);
241 
242 static struct varobj *
243 create_child_with_value (struct varobj *parent, int index, const char *name,
244 			 struct value *value);
245 
246 /* Utility routines */
247 
248 static struct varobj *new_variable (void);
249 
250 static struct varobj *new_root_variable (void);
251 
252 static void free_variable (struct varobj *var);
253 
254 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
255 
256 static struct type *get_type (struct varobj *var);
257 
258 static struct type *get_value_type (struct varobj *var);
259 
260 static struct type *get_target_type (struct type *);
261 
262 static enum varobj_display_formats variable_default_display (struct varobj *);
263 
264 static void cppush (struct cpstack **pstack, char *name);
265 
266 static char *cppop (struct cpstack **pstack);
267 
268 static int install_new_value (struct varobj *var, struct value *value,
269 			      int initial);
270 
271 /* Language-specific routines. */
272 
273 static enum varobj_languages variable_language (struct varobj *var);
274 
275 static int number_of_children (struct varobj *);
276 
277 static char *name_of_variable (struct varobj *);
278 
279 static char *name_of_child (struct varobj *, int);
280 
281 static struct value *value_of_root (struct varobj **var_handle, int *);
282 
283 static struct value *value_of_child (struct varobj *parent, int index);
284 
285 static char *my_value_of_variable (struct varobj *var,
286 				   enum varobj_display_formats format);
287 
288 static char *value_get_print_value (struct value *value,
289 				    enum varobj_display_formats format,
290 				    struct varobj *var);
291 
292 static int varobj_value_is_changeable_p (struct varobj *var);
293 
294 static int is_root_p (struct varobj *var);
295 
296 static struct varobj *
297 varobj_add_child (struct varobj *var, const char *name, struct value *value);
298 
299 /* C implementation */
300 
301 static int c_number_of_children (struct varobj *var);
302 
303 static char *c_name_of_variable (struct varobj *parent);
304 
305 static char *c_name_of_child (struct varobj *parent, int index);
306 
307 static char *c_path_expr_of_child (struct varobj *child);
308 
309 static struct value *c_value_of_root (struct varobj **var_handle);
310 
311 static struct value *c_value_of_child (struct varobj *parent, int index);
312 
313 static struct type *c_type_of_child (struct varobj *parent, int index);
314 
315 static char *c_value_of_variable (struct varobj *var,
316 				  enum varobj_display_formats format);
317 
318 /* C++ implementation */
319 
320 static int cplus_number_of_children (struct varobj *var);
321 
322 static void cplus_class_num_children (struct type *type, int children[3]);
323 
324 static char *cplus_name_of_variable (struct varobj *parent);
325 
326 static char *cplus_name_of_child (struct varobj *parent, int index);
327 
328 static char *cplus_path_expr_of_child (struct varobj *child);
329 
330 static struct value *cplus_value_of_root (struct varobj **var_handle);
331 
332 static struct value *cplus_value_of_child (struct varobj *parent, int index);
333 
334 static struct type *cplus_type_of_child (struct varobj *parent, int index);
335 
336 static char *cplus_value_of_variable (struct varobj *var,
337 				      enum varobj_display_formats format);
338 
339 /* Java implementation */
340 
341 static int java_number_of_children (struct varobj *var);
342 
343 static char *java_name_of_variable (struct varobj *parent);
344 
345 static char *java_name_of_child (struct varobj *parent, int index);
346 
347 static char *java_path_expr_of_child (struct varobj *child);
348 
349 static struct value *java_value_of_root (struct varobj **var_handle);
350 
351 static struct value *java_value_of_child (struct varobj *parent, int index);
352 
353 static struct type *java_type_of_child (struct varobj *parent, int index);
354 
355 static char *java_value_of_variable (struct varobj *var,
356 				     enum varobj_display_formats format);
357 
358 /* The language specific vector */
359 
360 struct language_specific
361 {
362 
363   /* The language of this variable */
364   enum varobj_languages language;
365 
366   /* The number of children of PARENT. */
367   int (*number_of_children) (struct varobj * parent);
368 
369   /* The name (expression) of a root varobj. */
370   char *(*name_of_variable) (struct varobj * parent);
371 
372   /* The name of the INDEX'th child of PARENT. */
373   char *(*name_of_child) (struct varobj * parent, int index);
374 
375   /* Returns the rooted expression of CHILD, which is a variable
376      obtain that has some parent.  */
377   char *(*path_expr_of_child) (struct varobj * child);
378 
379   /* The ``struct value *'' of the root variable ROOT. */
380   struct value *(*value_of_root) (struct varobj ** root_handle);
381 
382   /* The ``struct value *'' of the INDEX'th child of PARENT. */
383   struct value *(*value_of_child) (struct varobj * parent, int index);
384 
385   /* The type of the INDEX'th child of PARENT. */
386   struct type *(*type_of_child) (struct varobj * parent, int index);
387 
388   /* The current value of VAR. */
389   char *(*value_of_variable) (struct varobj * var,
390 			      enum varobj_display_formats format);
391 };
392 
393 /* Array of known source language routines. */
394 static struct language_specific languages[vlang_end] = {
395   /* Unknown (try treating as C */
396   {
397    vlang_unknown,
398    c_number_of_children,
399    c_name_of_variable,
400    c_name_of_child,
401    c_path_expr_of_child,
402    c_value_of_root,
403    c_value_of_child,
404    c_type_of_child,
405    c_value_of_variable}
406   ,
407   /* C */
408   {
409    vlang_c,
410    c_number_of_children,
411    c_name_of_variable,
412    c_name_of_child,
413    c_path_expr_of_child,
414    c_value_of_root,
415    c_value_of_child,
416    c_type_of_child,
417    c_value_of_variable}
418   ,
419   /* C++ */
420   {
421    vlang_cplus,
422    cplus_number_of_children,
423    cplus_name_of_variable,
424    cplus_name_of_child,
425    cplus_path_expr_of_child,
426    cplus_value_of_root,
427    cplus_value_of_child,
428    cplus_type_of_child,
429    cplus_value_of_variable}
430   ,
431   /* Java */
432   {
433    vlang_java,
434    java_number_of_children,
435    java_name_of_variable,
436    java_name_of_child,
437    java_path_expr_of_child,
438    java_value_of_root,
439    java_value_of_child,
440    java_type_of_child,
441    java_value_of_variable}
442 };
443 
444 /* A little convenience enum for dealing with C++/Java */
445 enum vsections
446 {
447   v_public = 0, v_private, v_protected
448 };
449 
450 /* Private data */
451 
452 /* Mappings of varobj_display_formats enums to gdb's format codes */
453 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
454 
455 /* Header of the list of root variable objects */
456 static struct varobj_root *rootlist;
457 
458 /* Prime number indicating the number of buckets in the hash table */
459 /* A prime large enough to avoid too many colisions */
460 #define VAROBJ_TABLE_SIZE 227
461 
462 /* Pointer to the varobj hash table (built at run time) */
463 static struct vlist **varobj_table;
464 
465 /* Is the variable X one of our "fake" children? */
466 #define CPLUS_FAKE_CHILD(x) \
467 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
468 
469 
470 /* API Implementation */
471 static int
472 is_root_p (struct varobj *var)
473 {
474   return (var->root->rootvar == var);
475 }
476 
477 #ifdef HAVE_PYTHON
478 /* Helper function to install a Python environment suitable for
479    use during operations on VAR.  */
480 struct cleanup *
481 varobj_ensure_python_env (struct varobj *var)
482 {
483   return ensure_python_env (var->root->exp->gdbarch,
484 			    var->root->exp->language_defn);
485 }
486 #endif
487 
488 /* Creates a varobj (not its children) */
489 
490 /* Return the full FRAME which corresponds to the given CORE_ADDR
491    or NULL if no FRAME on the chain corresponds to CORE_ADDR.  */
492 
493 static struct frame_info *
494 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
495 {
496   struct frame_info *frame = NULL;
497 
498   if (frame_addr == (CORE_ADDR) 0)
499     return NULL;
500 
501   for (frame = get_current_frame ();
502        frame != NULL;
503        frame = get_prev_frame (frame))
504     {
505       /* The CORE_ADDR we get as argument was parsed from a string GDB
506 	 output as $fp.  This output got truncated to gdbarch_addr_bit.
507 	 Truncate the frame base address in the same manner before
508 	 comparing it against our argument.  */
509       CORE_ADDR frame_base = get_frame_base_address (frame);
510       int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
511       if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
512 	frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
513 
514       if (frame_base == frame_addr)
515 	return frame;
516     }
517 
518   return NULL;
519 }
520 
521 struct varobj *
522 varobj_create (char *objname,
523 	       char *expression, CORE_ADDR frame, enum varobj_type type)
524 {
525   struct varobj *var;
526   struct frame_info *fi;
527   struct frame_info *old_fi = NULL;
528   struct block *block;
529   struct cleanup *old_chain;
530 
531   /* Fill out a varobj structure for the (root) variable being constructed. */
532   var = new_root_variable ();
533   old_chain = make_cleanup_free_variable (var);
534 
535   if (expression != NULL)
536     {
537       char *p;
538       enum varobj_languages lang;
539       struct value *value = NULL;
540 
541       /* Parse and evaluate the expression, filling in as much of the
542          variable's data as possible.  */
543 
544       if (has_stack_frames ())
545 	{
546 	  /* Allow creator to specify context of variable */
547 	  if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
548 	    fi = get_selected_frame (NULL);
549 	  else
550 	    /* FIXME: cagney/2002-11-23: This code should be doing a
551 	       lookup using the frame ID and not just the frame's
552 	       ``address''.  This, of course, means an interface
553 	       change.  However, with out that interface change ISAs,
554 	       such as the ia64 with its two stacks, won't work.
555 	       Similar goes for the case where there is a frameless
556 	       function.  */
557 	    fi = find_frame_addr_in_frame_chain (frame);
558 	}
559       else
560 	fi = NULL;
561 
562       /* frame = -2 means always use selected frame */
563       if (type == USE_SELECTED_FRAME)
564 	var->root->floating = 1;
565 
566       block = NULL;
567       if (fi != NULL)
568 	block = get_frame_block (fi, 0);
569 
570       p = expression;
571       innermost_block = NULL;
572       /* Wrap the call to parse expression, so we can
573          return a sensible error. */
574       if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
575 	{
576 	  return NULL;
577 	}
578 
579       /* Don't allow variables to be created for types. */
580       if (var->root->exp->elts[0].opcode == OP_TYPE)
581 	{
582 	  do_cleanups (old_chain);
583 	  fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
584 			      " as an expression.\n");
585 	  return NULL;
586 	}
587 
588       var->format = variable_default_display (var);
589       var->root->valid_block = innermost_block;
590       var->name = xstrdup (expression);
591       /* For a root var, the name and the expr are the same.  */
592       var->path_expr = xstrdup (expression);
593 
594       /* When the frame is different from the current frame,
595          we must select the appropriate frame before parsing
596          the expression, otherwise the value will not be current.
597          Since select_frame is so benign, just call it for all cases. */
598       if (innermost_block)
599 	{
600 	  /* User could specify explicit FRAME-ADDR which was not found but
601 	     EXPRESSION is frame specific and we would not be able to evaluate
602 	     it correctly next time.  With VALID_BLOCK set we must also set
603 	     FRAME and THREAD_ID.  */
604 	  if (fi == NULL)
605 	    error (_("Failed to find the specified frame"));
606 
607 	  var->root->frame = get_frame_id (fi);
608 	  var->root->thread_id = pid_to_thread_id (inferior_ptid);
609 	  old_fi = get_selected_frame (NULL);
610 	  select_frame (fi);
611 	}
612 
613       /* We definitely need to catch errors here.
614          If evaluate_expression succeeds we got the value we wanted.
615          But if it fails, we still go on with a call to evaluate_type()  */
616       if (!gdb_evaluate_expression (var->root->exp, &value))
617 	{
618 	  /* Error getting the value.  Try to at least get the
619 	     right type.  */
620 	  struct value *type_only_value = evaluate_type (var->root->exp);
621 	  var->type = value_type (type_only_value);
622 	}
623       else
624 	var->type = value_type (value);
625 
626       install_new_value (var, value, 1 /* Initial assignment */);
627 
628       /* Set language info */
629       lang = variable_language (var);
630       var->root->lang = &languages[lang];
631 
632       /* Set ourselves as our root */
633       var->root->rootvar = var;
634 
635       /* Reset the selected frame */
636       if (old_fi != NULL)
637 	select_frame (old_fi);
638     }
639 
640   /* If the variable object name is null, that means this
641      is a temporary variable, so don't install it. */
642 
643   if ((var != NULL) && (objname != NULL))
644     {
645       var->obj_name = xstrdup (objname);
646 
647       /* If a varobj name is duplicated, the install will fail so
648          we must clenup */
649       if (!install_variable (var))
650 	{
651 	  do_cleanups (old_chain);
652 	  return NULL;
653 	}
654     }
655 
656   discard_cleanups (old_chain);
657   return var;
658 }
659 
660 /* Generates an unique name that can be used for a varobj */
661 
662 char *
663 varobj_gen_name (void)
664 {
665   static int id = 0;
666   char *obj_name;
667 
668   /* generate a name for this object */
669   id++;
670   obj_name = xstrprintf ("var%d", id);
671 
672   return obj_name;
673 }
674 
675 /* Given an OBJNAME, returns the pointer to the corresponding varobj.  Call
676    error if OBJNAME cannot be found.  */
677 
678 struct varobj *
679 varobj_get_handle (char *objname)
680 {
681   struct vlist *cv;
682   const char *chp;
683   unsigned int index = 0;
684   unsigned int i = 1;
685 
686   for (chp = objname; *chp; chp++)
687     {
688       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
689     }
690 
691   cv = *(varobj_table + index);
692   while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
693     cv = cv->next;
694 
695   if (cv == NULL)
696     error (_("Variable object not found"));
697 
698   return cv->var;
699 }
700 
701 /* Given the handle, return the name of the object */
702 
703 char *
704 varobj_get_objname (struct varobj *var)
705 {
706   return var->obj_name;
707 }
708 
709 /* Given the handle, return the expression represented by the object */
710 
711 char *
712 varobj_get_expression (struct varobj *var)
713 {
714   return name_of_variable (var);
715 }
716 
717 /* Deletes a varobj and all its children if only_children == 0,
718    otherwise deletes only the children; returns a malloc'ed list of all the
719    (malloc'ed) names of the variables that have been deleted (NULL terminated) */
720 
721 int
722 varobj_delete (struct varobj *var, char ***dellist, int only_children)
723 {
724   int delcount;
725   int mycount;
726   struct cpstack *result = NULL;
727   char **cp;
728 
729   /* Initialize a stack for temporary results */
730   cppush (&result, NULL);
731 
732   if (only_children)
733     /* Delete only the variable children */
734     delcount = delete_variable (&result, var, 1 /* only the children */ );
735   else
736     /* Delete the variable and all its children */
737     delcount = delete_variable (&result, var, 0 /* parent+children */ );
738 
739   /* We may have been asked to return a list of what has been deleted */
740   if (dellist != NULL)
741     {
742       *dellist = xmalloc ((delcount + 1) * sizeof (char *));
743 
744       cp = *dellist;
745       mycount = delcount;
746       *cp = cppop (&result);
747       while ((*cp != NULL) && (mycount > 0))
748 	{
749 	  mycount--;
750 	  cp++;
751 	  *cp = cppop (&result);
752 	}
753 
754       if (mycount || (*cp != NULL))
755 	warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
756 		 mycount);
757     }
758 
759   return delcount;
760 }
761 
762 /* Convenience function for varobj_set_visualizer.  Instantiate a
763    pretty-printer for a given value.  */
764 static PyObject *
765 instantiate_pretty_printer (PyObject *constructor, struct value *value)
766 {
767 #if HAVE_PYTHON
768   PyObject *val_obj = NULL;
769   PyObject *printer;
770 
771   val_obj = value_to_value_object (value);
772   if (! val_obj)
773     return NULL;
774 
775   printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
776   Py_DECREF (val_obj);
777   return printer;
778 #endif
779   return NULL;
780 }
781 
782 /* Set/Get variable object display format */
783 
784 enum varobj_display_formats
785 varobj_set_display_format (struct varobj *var,
786 			   enum varobj_display_formats format)
787 {
788   switch (format)
789     {
790     case FORMAT_NATURAL:
791     case FORMAT_BINARY:
792     case FORMAT_DECIMAL:
793     case FORMAT_HEXADECIMAL:
794     case FORMAT_OCTAL:
795       var->format = format;
796       break;
797 
798     default:
799       var->format = variable_default_display (var);
800     }
801 
802   if (varobj_value_is_changeable_p (var)
803       && var->value && !value_lazy (var->value))
804     {
805       xfree (var->print_value);
806       var->print_value = value_get_print_value (var->value, var->format, var);
807     }
808 
809   return var->format;
810 }
811 
812 enum varobj_display_formats
813 varobj_get_display_format (struct varobj *var)
814 {
815   return var->format;
816 }
817 
818 char *
819 varobj_get_display_hint (struct varobj *var)
820 {
821   char *result = NULL;
822 
823 #if HAVE_PYTHON
824   struct cleanup *back_to = varobj_ensure_python_env (var);
825 
826   if (var->pretty_printer)
827     result = gdbpy_get_display_hint (var->pretty_printer);
828 
829   do_cleanups (back_to);
830 #endif
831 
832   return result;
833 }
834 
835 /* Return true if the varobj has items after TO, false otherwise.  */
836 
837 int
838 varobj_has_more (struct varobj *var, int to)
839 {
840   if (VEC_length (varobj_p, var->children) > to)
841     return 1;
842   return ((to == -1 || VEC_length (varobj_p, var->children) == to)
843 	  && var->saved_item != NULL);
844 }
845 
846 /* If the variable object is bound to a specific thread, that
847    is its evaluation can always be done in context of a frame
848    inside that thread, returns GDB id of the thread -- which
849    is always positive.  Otherwise, returns -1. */
850 int
851 varobj_get_thread_id (struct varobj *var)
852 {
853   if (var->root->valid_block && var->root->thread_id > 0)
854     return var->root->thread_id;
855   else
856     return -1;
857 }
858 
859 void
860 varobj_set_frozen (struct varobj *var, int frozen)
861 {
862   /* When a variable is unfrozen, we don't fetch its value.
863      The 'not_fetched' flag remains set, so next -var-update
864      won't complain.
865 
866      We don't fetch the value, because for structures the client
867      should do -var-update anyway.  It would be bad to have different
868      client-size logic for structure and other types.  */
869   var->frozen = frozen;
870 }
871 
872 int
873 varobj_get_frozen (struct varobj *var)
874 {
875   return var->frozen;
876 }
877 
878 /* A helper function that restricts a range to what is actually
879    available in a VEC.  This follows the usual rules for the meaning
880    of FROM and TO -- if either is negative, the entire range is
881    used.  */
882 
883 static void
884 restrict_range (VEC (varobj_p) *children, int *from, int *to)
885 {
886   if (*from < 0 || *to < 0)
887     {
888       *from = 0;
889       *to = VEC_length (varobj_p, children);
890     }
891   else
892     {
893       if (*from > VEC_length (varobj_p, children))
894 	*from = VEC_length (varobj_p, children);
895       if (*to > VEC_length (varobj_p, children))
896 	*to = VEC_length (varobj_p, children);
897       if (*from > *to)
898 	*from = *to;
899     }
900 }
901 
902 /* A helper for update_dynamic_varobj_children that installs a new
903    child when needed.  */
904 
905 static void
906 install_dynamic_child (struct varobj *var,
907 		       VEC (varobj_p) **changed,
908 		       VEC (varobj_p) **new,
909 		       VEC (varobj_p) **unchanged,
910 		       int *cchanged,
911 		       int index,
912 		       const char *name,
913 		       struct value *value)
914 {
915   if (VEC_length (varobj_p, var->children) < index + 1)
916     {
917       /* There's no child yet.  */
918       struct varobj *child = varobj_add_child (var, name, value);
919       if (new)
920 	{
921 	  VEC_safe_push (varobj_p, *new, child);
922 	  *cchanged = 1;
923 	}
924     }
925   else
926     {
927       varobj_p existing = VEC_index (varobj_p, var->children, index);
928       if (install_new_value (existing, value, 0))
929 	{
930 	  if (changed)
931 	    VEC_safe_push (varobj_p, *changed, existing);
932 	}
933       else if (unchanged)
934 	VEC_safe_push (varobj_p, *unchanged, existing);
935     }
936 }
937 
938 #if HAVE_PYTHON
939 
940 static int
941 dynamic_varobj_has_child_method (struct varobj *var)
942 {
943   struct cleanup *back_to;
944   PyObject *printer = var->pretty_printer;
945   int result;
946 
947   back_to = varobj_ensure_python_env (var);
948   result = PyObject_HasAttr (printer, gdbpy_children_cst);
949   do_cleanups (back_to);
950   return result;
951 }
952 
953 #endif
954 
955 static int
956 update_dynamic_varobj_children (struct varobj *var,
957 				VEC (varobj_p) **changed,
958 				VEC (varobj_p) **new,
959 				VEC (varobj_p) **unchanged,
960 				int *cchanged,
961 				int update_children,
962 				int from,
963 				int to)
964 {
965 #if HAVE_PYTHON
966   struct cleanup *back_to;
967   PyObject *children;
968   int i;
969   PyObject *printer = var->pretty_printer;
970 
971   back_to = varobj_ensure_python_env (var);
972 
973   *cchanged = 0;
974   if (!PyObject_HasAttr (printer, gdbpy_children_cst))
975     {
976       do_cleanups (back_to);
977       return 0;
978     }
979 
980   if (update_children || !var->child_iter)
981     {
982       children = PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
983 					     NULL);
984 
985       if (!children)
986 	{
987 	  gdbpy_print_stack ();
988 	  error (_("Null value returned for children"));
989 	}
990 
991       make_cleanup_py_decref (children);
992 
993       if (!PyIter_Check (children))
994 	error (_("Returned value is not iterable"));
995 
996       Py_XDECREF (var->child_iter);
997       var->child_iter = PyObject_GetIter (children);
998       if (!var->child_iter)
999 	{
1000 	  gdbpy_print_stack ();
1001 	  error (_("Could not get children iterator"));
1002 	}
1003 
1004       Py_XDECREF (var->saved_item);
1005       var->saved_item = NULL;
1006 
1007       i = 0;
1008     }
1009   else
1010     i = VEC_length (varobj_p, var->children);
1011 
1012   /* We ask for one extra child, so that MI can report whether there
1013      are more children.  */
1014   for (; to < 0 || i < to + 1; ++i)
1015     {
1016       PyObject *item;
1017 
1018       /* See if there was a leftover from last time.  */
1019       if (var->saved_item)
1020 	{
1021 	  item = var->saved_item;
1022 	  var->saved_item = NULL;
1023 	}
1024       else
1025 	item = PyIter_Next (var->child_iter);
1026 
1027       if (!item)
1028 	break;
1029 
1030       /* We don't want to push the extra child on any report list.  */
1031       if (to < 0 || i < to)
1032 	{
1033 	  PyObject *py_v;
1034 	  char *name;
1035 	  struct value *v;
1036 	  struct cleanup *inner;
1037 	  int can_mention = from < 0 || i >= from;
1038 
1039 	  inner = make_cleanup_py_decref (item);
1040 
1041 	  if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
1042 	    error (_("Invalid item from the child list"));
1043 
1044 	  v = convert_value_from_python (py_v);
1045 	  install_dynamic_child (var, can_mention ? changed : NULL,
1046 				 can_mention ? new : NULL,
1047 				 can_mention ? unchanged : NULL,
1048 				 can_mention ? cchanged : NULL, i, name, v);
1049 	  do_cleanups (inner);
1050 	}
1051       else
1052 	{
1053 	  Py_XDECREF (var->saved_item);
1054 	  var->saved_item = item;
1055 
1056 	  /* We want to truncate the child list just before this
1057 	     element.  */
1058 	  break;
1059 	}
1060     }
1061 
1062   if (i < VEC_length (varobj_p, var->children))
1063     {
1064       int j;
1065       *cchanged = 1;
1066       for (j = i; j < VEC_length (varobj_p, var->children); ++j)
1067 	varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0);
1068       VEC_truncate (varobj_p, var->children, i);
1069     }
1070 
1071   /* If there are fewer children than requested, note that the list of
1072      children changed.  */
1073   if (to >= 0 && VEC_length (varobj_p, var->children) < to)
1074     *cchanged = 1;
1075 
1076   var->num_children = VEC_length (varobj_p, var->children);
1077 
1078   do_cleanups (back_to);
1079 
1080   return 1;
1081 #else
1082   gdb_assert (0 && "should never be called if Python is not enabled");
1083 #endif
1084 }
1085 
1086 int
1087 varobj_get_num_children (struct varobj *var)
1088 {
1089   if (var->num_children == -1)
1090     {
1091       if (var->pretty_printer)
1092 	{
1093 	  int dummy;
1094 
1095 	  /* If we have a dynamic varobj, don't report -1 children.
1096 	     So, try to fetch some children first.  */
1097 	  update_dynamic_varobj_children (var, NULL, NULL, NULL, &dummy,
1098 					  0, 0, 0);
1099 	}
1100       else
1101 	var->num_children = number_of_children (var);
1102     }
1103 
1104   return var->num_children >= 0 ? var->num_children : 0;
1105 }
1106 
1107 /* Creates a list of the immediate children of a variable object;
1108    the return code is the number of such children or -1 on error */
1109 
1110 VEC (varobj_p)*
1111 varobj_list_children (struct varobj *var, int *from, int *to)
1112 {
1113   struct varobj *child;
1114   char *name;
1115   int i, children_changed;
1116 
1117   var->children_requested = 1;
1118 
1119   if (var->pretty_printer)
1120     {
1121       /* This, in theory, can result in the number of children changing without
1122 	 frontend noticing.  But well, calling -var-list-children on the same
1123 	 varobj twice is not something a sane frontend would do.  */
1124       update_dynamic_varobj_children (var, NULL, NULL, NULL, &children_changed,
1125 				      0, 0, *to);
1126       restrict_range (var->children, from, to);
1127       return var->children;
1128     }
1129 
1130   if (var->num_children == -1)
1131     var->num_children = number_of_children (var);
1132 
1133   /* If that failed, give up.  */
1134   if (var->num_children == -1)
1135     return var->children;
1136 
1137   /* If we're called when the list of children is not yet initialized,
1138      allocate enough elements in it.  */
1139   while (VEC_length (varobj_p, var->children) < var->num_children)
1140     VEC_safe_push (varobj_p, var->children, NULL);
1141 
1142   for (i = 0; i < var->num_children; i++)
1143     {
1144       varobj_p existing = VEC_index (varobj_p, var->children, i);
1145 
1146       if (existing == NULL)
1147 	{
1148 	  /* Either it's the first call to varobj_list_children for
1149 	     this variable object, and the child was never created,
1150 	     or it was explicitly deleted by the client.  */
1151 	  name = name_of_child (var, i);
1152 	  existing = create_child (var, i, name);
1153 	  VEC_replace (varobj_p, var->children, i, existing);
1154 	}
1155     }
1156 
1157   restrict_range (var->children, from, to);
1158   return var->children;
1159 }
1160 
1161 static struct varobj *
1162 varobj_add_child (struct varobj *var, const char *name, struct value *value)
1163 {
1164   varobj_p v = create_child_with_value (var,
1165 					VEC_length (varobj_p, var->children),
1166 					name, value);
1167   VEC_safe_push (varobj_p, var->children, v);
1168   return v;
1169 }
1170 
1171 /* Obtain the type of an object Variable as a string similar to the one gdb
1172    prints on the console */
1173 
1174 char *
1175 varobj_get_type (struct varobj *var)
1176 {
1177   /* For the "fake" variables, do not return a type. (It's type is
1178      NULL, too.)
1179      Do not return a type for invalid variables as well.  */
1180   if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
1181     return NULL;
1182 
1183   return type_to_string (var->type);
1184 }
1185 
1186 /* Obtain the type of an object variable.  */
1187 
1188 struct type *
1189 varobj_get_gdb_type (struct varobj *var)
1190 {
1191   return var->type;
1192 }
1193 
1194 /* Return a pointer to the full rooted expression of varobj VAR.
1195    If it has not been computed yet, compute it.  */
1196 char *
1197 varobj_get_path_expr (struct varobj *var)
1198 {
1199   if (var->path_expr != NULL)
1200     return var->path_expr;
1201   else
1202     {
1203       /* For root varobjs, we initialize path_expr
1204 	 when creating varobj, so here it should be
1205 	 child varobj.  */
1206       gdb_assert (!is_root_p (var));
1207       return (*var->root->lang->path_expr_of_child) (var);
1208     }
1209 }
1210 
1211 enum varobj_languages
1212 varobj_get_language (struct varobj *var)
1213 {
1214   return variable_language (var);
1215 }
1216 
1217 int
1218 varobj_get_attributes (struct varobj *var)
1219 {
1220   int attributes = 0;
1221 
1222   if (varobj_editable_p (var))
1223     /* FIXME: define masks for attributes */
1224     attributes |= 0x00000001;	/* Editable */
1225 
1226   return attributes;
1227 }
1228 
1229 int
1230 varobj_pretty_printed_p (struct varobj *var)
1231 {
1232   return var->pretty_printer != NULL;
1233 }
1234 
1235 char *
1236 varobj_get_formatted_value (struct varobj *var,
1237 			    enum varobj_display_formats format)
1238 {
1239   return my_value_of_variable (var, format);
1240 }
1241 
1242 char *
1243 varobj_get_value (struct varobj *var)
1244 {
1245   return my_value_of_variable (var, var->format);
1246 }
1247 
1248 /* Set the value of an object variable (if it is editable) to the
1249    value of the given expression */
1250 /* Note: Invokes functions that can call error() */
1251 
1252 int
1253 varobj_set_value (struct varobj *var, char *expression)
1254 {
1255   struct value *val;
1256   int offset = 0;
1257   int error = 0;
1258 
1259   /* The argument "expression" contains the variable's new value.
1260      We need to first construct a legal expression for this -- ugh! */
1261   /* Does this cover all the bases? */
1262   struct expression *exp;
1263   struct value *value;
1264   int saved_input_radix = input_radix;
1265   char *s = expression;
1266   int i;
1267 
1268   gdb_assert (varobj_editable_p (var));
1269 
1270   input_radix = 10;		/* ALWAYS reset to decimal temporarily */
1271   exp = parse_exp_1 (&s, 0, 0);
1272   if (!gdb_evaluate_expression (exp, &value))
1273     {
1274       /* We cannot proceed without a valid expression. */
1275       xfree (exp);
1276       return 0;
1277     }
1278 
1279   /* All types that are editable must also be changeable.  */
1280   gdb_assert (varobj_value_is_changeable_p (var));
1281 
1282   /* The value of a changeable variable object must not be lazy.  */
1283   gdb_assert (!value_lazy (var->value));
1284 
1285   /* Need to coerce the input.  We want to check if the
1286      value of the variable object will be different
1287      after assignment, and the first thing value_assign
1288      does is coerce the input.
1289      For example, if we are assigning an array to a pointer variable we
1290      should compare the pointer with the the array's address, not with the
1291      array's content.  */
1292   value = coerce_array (value);
1293 
1294   /* The new value may be lazy.  gdb_value_assign, or
1295      rather value_contents, will take care of this.
1296      If fetching of the new value will fail, gdb_value_assign
1297      with catch the exception.  */
1298   if (!gdb_value_assign (var->value, value, &val))
1299     return 0;
1300 
1301   /* If the value has changed, record it, so that next -var-update can
1302      report this change.  If a variable had a value of '1', we've set it
1303      to '333' and then set again to '1', when -var-update will report this
1304      variable as changed -- because the first assignment has set the
1305      'updated' flag.  There's no need to optimize that, because return value
1306      of -var-update should be considered an approximation.  */
1307   var->updated = install_new_value (var, val, 0 /* Compare values. */);
1308   input_radix = saved_input_radix;
1309   return 1;
1310 }
1311 
1312 #if HAVE_PYTHON
1313 
1314 /* A helper function to install a constructor function and visualizer
1315    in a varobj.  */
1316 
1317 static void
1318 install_visualizer (struct varobj *var, PyObject *constructor,
1319 		    PyObject *visualizer)
1320 {
1321   Py_XDECREF (var->constructor);
1322   var->constructor = constructor;
1323 
1324   Py_XDECREF (var->pretty_printer);
1325   var->pretty_printer = visualizer;
1326 
1327   Py_XDECREF (var->child_iter);
1328   var->child_iter = NULL;
1329 }
1330 
1331 /* Install the default visualizer for VAR.  */
1332 
1333 static void
1334 install_default_visualizer (struct varobj *var)
1335 {
1336   if (pretty_printing)
1337     {
1338       PyObject *pretty_printer = NULL;
1339 
1340       if (var->value)
1341 	{
1342 	  pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1343 	  if (! pretty_printer)
1344 	    {
1345 	      gdbpy_print_stack ();
1346 	      error (_("Cannot instantiate printer for default visualizer"));
1347 	    }
1348 	}
1349 
1350       if (pretty_printer == Py_None)
1351 	{
1352 	  Py_DECREF (pretty_printer);
1353 	  pretty_printer = NULL;
1354 	}
1355 
1356       install_visualizer (var, NULL, pretty_printer);
1357     }
1358 }
1359 
1360 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1361    make a new object.  */
1362 
1363 static void
1364 construct_visualizer (struct varobj *var, PyObject *constructor)
1365 {
1366   PyObject *pretty_printer;
1367 
1368   Py_INCREF (constructor);
1369   if (constructor == Py_None)
1370     pretty_printer = NULL;
1371   else
1372     {
1373       pretty_printer = instantiate_pretty_printer (constructor, var->value);
1374       if (! pretty_printer)
1375 	{
1376 	  gdbpy_print_stack ();
1377 	  Py_DECREF (constructor);
1378 	  constructor = Py_None;
1379 	  Py_INCREF (constructor);
1380 	}
1381 
1382       if (pretty_printer == Py_None)
1383 	{
1384 	  Py_DECREF (pretty_printer);
1385 	  pretty_printer = NULL;
1386 	}
1387     }
1388 
1389   install_visualizer (var, constructor, pretty_printer);
1390 }
1391 
1392 #endif /* HAVE_PYTHON */
1393 
1394 /* A helper function for install_new_value.  This creates and installs
1395    a visualizer for VAR, if appropriate.  */
1396 
1397 static void
1398 install_new_value_visualizer (struct varobj *var)
1399 {
1400 #if HAVE_PYTHON
1401   /* If the constructor is None, then we want the raw value.  If VAR
1402      does not have a value, just skip this.  */
1403   if (var->constructor != Py_None && var->value)
1404     {
1405       struct cleanup *cleanup;
1406       PyObject *pretty_printer = NULL;
1407 
1408       cleanup = varobj_ensure_python_env (var);
1409 
1410       if (!var->constructor)
1411 	install_default_visualizer (var);
1412       else
1413 	construct_visualizer (var, var->constructor);
1414 
1415       do_cleanups (cleanup);
1416     }
1417 #else
1418   /* Do nothing.  */
1419 #endif
1420 }
1421 
1422 /* Assign a new value to a variable object.  If INITIAL is non-zero,
1423    this is the first assignement after the variable object was just
1424    created, or changed type.  In that case, just assign the value
1425    and return 0.
1426    Otherwise, assign the new value, and return 1 if the value is different
1427    from the current one, 0 otherwise. The comparison is done on textual
1428    representation of value. Therefore, some types need not be compared. E.g.
1429    for structures the reported value is always "{...}", so no comparison is
1430    necessary here. If the old value was NULL and new one is not, or vice versa,
1431    we always return 1.
1432 
1433    The VALUE parameter should not be released -- the function will
1434    take care of releasing it when needed.  */
1435 static int
1436 install_new_value (struct varobj *var, struct value *value, int initial)
1437 {
1438   int changeable;
1439   int need_to_fetch;
1440   int changed = 0;
1441   int intentionally_not_fetched = 0;
1442   char *print_value = NULL;
1443 
1444   /* We need to know the varobj's type to decide if the value should
1445      be fetched or not.  C++ fake children (public/protected/private) don't have
1446      a type. */
1447   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1448   changeable = varobj_value_is_changeable_p (var);
1449 
1450   /* If the type has custom visualizer, we consider it to be always
1451      changeable. FIXME: need to make sure this behaviour will not
1452      mess up read-sensitive values.  */
1453   if (var->pretty_printer)
1454     changeable = 1;
1455 
1456   need_to_fetch = changeable;
1457 
1458   /* We are not interested in the address of references, and given
1459      that in C++ a reference is not rebindable, it cannot
1460      meaningfully change.  So, get hold of the real value.  */
1461   if (value)
1462     value = coerce_ref (value);
1463 
1464   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1465     /* For unions, we need to fetch the value implicitly because
1466        of implementation of union member fetch.  When gdb
1467        creates a value for a field and the value of the enclosing
1468        structure is not lazy,  it immediately copies the necessary
1469        bytes from the enclosing values.  If the enclosing value is
1470        lazy, the call to value_fetch_lazy on the field will read
1471        the data from memory.  For unions, that means we'll read the
1472        same memory more than once, which is not desirable.  So
1473        fetch now.  */
1474     need_to_fetch = 1;
1475 
1476   /* The new value might be lazy.  If the type is changeable,
1477      that is we'll be comparing values of this type, fetch the
1478      value now.  Otherwise, on the next update the old value
1479      will be lazy, which means we've lost that old value.  */
1480   if (need_to_fetch && value && value_lazy (value))
1481     {
1482       struct varobj *parent = var->parent;
1483       int frozen = var->frozen;
1484       for (; !frozen && parent; parent = parent->parent)
1485 	frozen |= parent->frozen;
1486 
1487       if (frozen && initial)
1488 	{
1489 	  /* For variables that are frozen, or are children of frozen
1490 	     variables, we don't do fetch on initial assignment.
1491 	     For non-initial assignemnt we do the fetch, since it means we're
1492 	     explicitly asked to compare the new value with the old one.  */
1493 	  intentionally_not_fetched = 1;
1494 	}
1495       else if (!gdb_value_fetch_lazy (value))
1496 	{
1497 	  /* Set the value to NULL, so that for the next -var-update,
1498 	     we don't try to compare the new value with this value,
1499 	     that we couldn't even read.  */
1500 	  value = NULL;
1501 	}
1502     }
1503 
1504 
1505   /* Below, we'll be comparing string rendering of old and new
1506      values.  Don't get string rendering if the value is
1507      lazy -- if it is, the code above has decided that the value
1508      should not be fetched.  */
1509   if (value && !value_lazy (value) && !var->pretty_printer)
1510     print_value = value_get_print_value (value, var->format, var);
1511 
1512   /* If the type is changeable, compare the old and the new values.
1513      If this is the initial assignment, we don't have any old value
1514      to compare with.  */
1515   if (!initial && changeable)
1516     {
1517       /* If the value of the varobj was changed by -var-set-value, then the
1518 	 value in the varobj and in the target is the same.  However, that value
1519 	 is different from the value that the varobj had after the previous
1520 	 -var-update. So need to the varobj as changed.  */
1521       if (var->updated)
1522 	{
1523 	  changed = 1;
1524 	}
1525       else if (! var->pretty_printer)
1526 	{
1527 	  /* Try to compare the values.  That requires that both
1528 	     values are non-lazy.  */
1529 	  if (var->not_fetched && value_lazy (var->value))
1530 	    {
1531 	      /* This is a frozen varobj and the value was never read.
1532 		 Presumably, UI shows some "never read" indicator.
1533 		 Now that we've fetched the real value, we need to report
1534 		 this varobj as changed so that UI can show the real
1535 		 value.  */
1536 	      changed = 1;
1537 	    }
1538           else  if (var->value == NULL && value == NULL)
1539 	    /* Equal. */
1540 	    ;
1541 	  else if (var->value == NULL || value == NULL)
1542 	    {
1543 	      changed = 1;
1544 	    }
1545 	  else
1546 	    {
1547 	      gdb_assert (!value_lazy (var->value));
1548 	      gdb_assert (!value_lazy (value));
1549 
1550 	      gdb_assert (var->print_value != NULL && print_value != NULL);
1551 	      if (strcmp (var->print_value, print_value) != 0)
1552 		changed = 1;
1553 	    }
1554 	}
1555     }
1556 
1557   if (!initial && !changeable)
1558     {
1559       /* For values that are not changeable, we don't compare the values.
1560 	 However, we want to notice if a value was not NULL and now is NULL,
1561 	 or vise versa, so that we report when top-level varobjs come in scope
1562 	 and leave the scope.  */
1563       changed = (var->value != NULL) != (value != NULL);
1564     }
1565 
1566   /* We must always keep the new value, since children depend on it.  */
1567   if (var->value != NULL && var->value != value)
1568     value_free (var->value);
1569   var->value = value;
1570   if (value != NULL)
1571     value_incref (value);
1572   if (value && value_lazy (value) && intentionally_not_fetched)
1573     var->not_fetched = 1;
1574   else
1575     var->not_fetched = 0;
1576   var->updated = 0;
1577 
1578   install_new_value_visualizer (var);
1579 
1580   /* If we installed a pretty-printer, re-compare the printed version
1581      to see if the variable changed.  */
1582   if (var->pretty_printer)
1583     {
1584       xfree (print_value);
1585       print_value = value_get_print_value (var->value, var->format, var);
1586       if (!var->print_value || strcmp (var->print_value, print_value) != 0)
1587 	changed = 1;
1588     }
1589   if (var->print_value)
1590     xfree (var->print_value);
1591   var->print_value = print_value;
1592 
1593   gdb_assert (!var->value || value_type (var->value));
1594 
1595   return changed;
1596 }
1597 
1598 /* Return the requested range for a varobj.  VAR is the varobj.  FROM
1599    and TO are out parameters; *FROM and *TO will be set to the
1600    selected sub-range of VAR.  If no range was selected using
1601    -var-set-update-range, then both will be -1.  */
1602 void
1603 varobj_get_child_range (struct varobj *var, int *from, int *to)
1604 {
1605   *from = var->from;
1606   *to = var->to;
1607 }
1608 
1609 /* Set the selected sub-range of children of VAR to start at index
1610    FROM and end at index TO.  If either FROM or TO is less than zero,
1611    this is interpreted as a request for all children.  */
1612 void
1613 varobj_set_child_range (struct varobj *var, int from, int to)
1614 {
1615   var->from = from;
1616   var->to = to;
1617 }
1618 
1619 void
1620 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1621 {
1622 #if HAVE_PYTHON
1623   PyObject *mainmod, *globals, *pretty_printer, *constructor;
1624   struct cleanup *back_to, *value;
1625 
1626   back_to = varobj_ensure_python_env (var);
1627 
1628   mainmod = PyImport_AddModule ("__main__");
1629   globals = PyModule_GetDict (mainmod);
1630   Py_INCREF (globals);
1631   make_cleanup_py_decref (globals);
1632 
1633   constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1634 
1635   if (! constructor)
1636     {
1637       gdbpy_print_stack ();
1638       error (_("Could not evaluate visualizer expression: %s"), visualizer);
1639     }
1640 
1641   construct_visualizer (var, constructor);
1642   Py_XDECREF (constructor);
1643 
1644   /* If there are any children now, wipe them.  */
1645   varobj_delete (var, NULL, 1 /* children only */);
1646   var->num_children = -1;
1647 
1648   do_cleanups (back_to);
1649 #else
1650   error (_("Python support required"));
1651 #endif
1652 }
1653 
1654 /* Update the values for a variable and its children.  This is a
1655    two-pronged attack.  First, re-parse the value for the root's
1656    expression to see if it's changed.  Then go all the way
1657    through its children, reconstructing them and noting if they've
1658    changed.
1659 
1660    The EXPLICIT parameter specifies if this call is result
1661    of MI request to update this specific variable, or
1662    result of implicit -var-update *. For implicit request, we don't
1663    update frozen variables.
1664 
1665    NOTE: This function may delete the caller's varobj. If it
1666    returns TYPE_CHANGED, then it has done this and VARP will be modified
1667    to point to the new varobj.  */
1668 
1669 VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit)
1670 {
1671   int changed = 0;
1672   int type_changed = 0;
1673   int i;
1674   int vleft;
1675   struct varobj *v;
1676   struct varobj **cv;
1677   struct varobj **templist = NULL;
1678   struct value *new;
1679   VEC (varobj_update_result) *stack = NULL;
1680   VEC (varobj_update_result) *result = NULL;
1681   struct frame_info *fi;
1682 
1683   /* Frozen means frozen -- we don't check for any change in
1684      this varobj, including its going out of scope, or
1685      changing type.  One use case for frozen varobjs is
1686      retaining previously evaluated expressions, and we don't
1687      want them to be reevaluated at all.  */
1688   if (!explicit && (*varp)->frozen)
1689     return result;
1690 
1691   if (!(*varp)->root->is_valid)
1692     {
1693       varobj_update_result r = {*varp};
1694       r.status = VAROBJ_INVALID;
1695       VEC_safe_push (varobj_update_result, result, &r);
1696       return result;
1697     }
1698 
1699   if ((*varp)->root->rootvar == *varp)
1700     {
1701       varobj_update_result r = {*varp};
1702       r.status = VAROBJ_IN_SCOPE;
1703 
1704       /* Update the root variable. value_of_root can return NULL
1705 	 if the variable is no longer around, i.e. we stepped out of
1706 	 the frame in which a local existed. We are letting the
1707 	 value_of_root variable dispose of the varobj if the type
1708 	 has changed.  */
1709       new = value_of_root (varp, &type_changed);
1710       r.varobj = *varp;
1711 
1712       r.type_changed = type_changed;
1713       if (install_new_value ((*varp), new, type_changed))
1714 	r.changed = 1;
1715 
1716       if (new == NULL)
1717 	r.status = VAROBJ_NOT_IN_SCOPE;
1718       r.value_installed = 1;
1719 
1720       if (r.status == VAROBJ_NOT_IN_SCOPE)
1721 	{
1722 	  if (r.type_changed || r.changed)
1723 	    VEC_safe_push (varobj_update_result, result, &r);
1724 	  return result;
1725 	}
1726 
1727       VEC_safe_push (varobj_update_result, stack, &r);
1728     }
1729   else
1730     {
1731       varobj_update_result r = {*varp};
1732       VEC_safe_push (varobj_update_result, stack, &r);
1733     }
1734 
1735   /* Walk through the children, reconstructing them all.  */
1736   while (!VEC_empty (varobj_update_result, stack))
1737     {
1738       varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1739       struct varobj *v = r.varobj;
1740 
1741       VEC_pop (varobj_update_result, stack);
1742 
1743       /* Update this variable, unless it's a root, which is already
1744 	 updated.  */
1745       if (!r.value_installed)
1746 	{
1747 	  new = value_of_child (v->parent, v->index);
1748 	  if (install_new_value (v, new, 0 /* type not changed */))
1749 	    {
1750 	      r.changed = 1;
1751 	      v->updated = 0;
1752 	    }
1753 	}
1754 
1755       /* We probably should not get children of a varobj that has a
1756 	 pretty-printer, but for which -var-list-children was never
1757 	 invoked.    */
1758       if (v->pretty_printer)
1759 	{
1760 	  VEC (varobj_p) *changed = 0, *new = 0, *unchanged = 0;
1761 	  int i, children_changed = 0;
1762 
1763 	  if (v->frozen)
1764 	    continue;
1765 
1766 	  if (!v->children_requested)
1767 	    {
1768 	      int dummy;
1769 
1770 	      /* If we initially did not have potential children, but
1771 		 now we do, consider the varobj as changed.
1772 		 Otherwise, if children were never requested, consider
1773 		 it as unchanged -- presumably, such varobj is not yet
1774 		 expanded in the UI, so we need not bother getting
1775 		 it.  */
1776 	      if (!varobj_has_more (v, 0))
1777 		{
1778 		  update_dynamic_varobj_children (v, NULL, NULL, NULL,
1779 						  &dummy, 0, 0, 0);
1780 		  if (varobj_has_more (v, 0))
1781 		    r.changed = 1;
1782 		}
1783 
1784 	      if (r.changed)
1785 		VEC_safe_push (varobj_update_result, result, &r);
1786 
1787 	      continue;
1788 	    }
1789 
1790 	  /* If update_dynamic_varobj_children returns 0, then we have
1791 	     a non-conforming pretty-printer, so we skip it.  */
1792 	  if (update_dynamic_varobj_children (v, &changed, &new, &unchanged,
1793 					      &children_changed, 1,
1794 					      v->from, v->to))
1795 	    {
1796 	      if (children_changed || new)
1797 		{
1798 		  r.children_changed = 1;
1799 		  r.new = new;
1800 		}
1801 	      /* Push in reverse order so that the first child is
1802 		 popped from the work stack first, and so will be
1803 		 added to result first.  This does not affect
1804 		 correctness, just "nicer".  */
1805 	      for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
1806 		{
1807 		  varobj_p tmp = VEC_index (varobj_p, changed, i);
1808 		  varobj_update_result r = {tmp};
1809 		  r.changed = 1;
1810 		  r.value_installed = 1;
1811 		  VEC_safe_push (varobj_update_result, stack, &r);
1812 		}
1813 	      for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
1814 	      	{
1815 		  varobj_p tmp = VEC_index (varobj_p, unchanged, i);
1816 	      	  if (!tmp->frozen)
1817 	      	    {
1818 	      	      varobj_update_result r = {tmp};
1819 	      	      r.value_installed = 1;
1820 	      	      VEC_safe_push (varobj_update_result, stack, &r);
1821 	      	    }
1822 	      	}
1823 	      if (r.changed || r.children_changed)
1824 		VEC_safe_push (varobj_update_result, result, &r);
1825 
1826 	      /* Free CHANGED and UNCHANGED, but not NEW, because NEW
1827 		 has been put into the result vector.  */
1828 	      VEC_free (varobj_p, changed);
1829 	      VEC_free (varobj_p, unchanged);
1830 
1831 	      continue;
1832 	    }
1833 	}
1834 
1835       /* Push any children.  Use reverse order so that the first
1836 	 child is popped from the work stack first, and so
1837 	 will be added to result first.  This does not
1838 	 affect correctness, just "nicer".  */
1839       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1840 	{
1841 	  varobj_p c = VEC_index (varobj_p, v->children, i);
1842 	  /* Child may be NULL if explicitly deleted by -var-delete.  */
1843 	  if (c != NULL && !c->frozen)
1844 	    {
1845 	      varobj_update_result r = {c};
1846 	      VEC_safe_push (varobj_update_result, stack, &r);
1847 	    }
1848 	}
1849 
1850       if (r.changed || r.type_changed)
1851 	VEC_safe_push (varobj_update_result, result, &r);
1852     }
1853 
1854   VEC_free (varobj_update_result, stack);
1855 
1856   return result;
1857 }
1858 
1859 
1860 /* Helper functions */
1861 
1862 /*
1863  * Variable object construction/destruction
1864  */
1865 
1866 static int
1867 delete_variable (struct cpstack **resultp, struct varobj *var,
1868 		 int only_children_p)
1869 {
1870   int delcount = 0;
1871 
1872   delete_variable_1 (resultp, &delcount, var,
1873 		     only_children_p, 1 /* remove_from_parent_p */ );
1874 
1875   return delcount;
1876 }
1877 
1878 /* Delete the variable object VAR and its children */
1879 /* IMPORTANT NOTE: If we delete a variable which is a child
1880    and the parent is not removed we dump core.  It must be always
1881    initially called with remove_from_parent_p set */
1882 static void
1883 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1884 		   struct varobj *var, int only_children_p,
1885 		   int remove_from_parent_p)
1886 {
1887   int i;
1888 
1889   /* Delete any children of this variable, too. */
1890   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1891     {
1892       varobj_p child = VEC_index (varobj_p, var->children, i);
1893       if (!child)
1894 	continue;
1895       if (!remove_from_parent_p)
1896 	child->parent = NULL;
1897       delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1898     }
1899   VEC_free (varobj_p, var->children);
1900 
1901   /* if we were called to delete only the children we are done here */
1902   if (only_children_p)
1903     return;
1904 
1905   /* Otherwise, add it to the list of deleted ones and proceed to do so */
1906   /* If the name is null, this is a temporary variable, that has not
1907      yet been installed, don't report it, it belongs to the caller... */
1908   if (var->obj_name != NULL)
1909     {
1910       cppush (resultp, xstrdup (var->obj_name));
1911       *delcountp = *delcountp + 1;
1912     }
1913 
1914   /* If this variable has a parent, remove it from its parent's list */
1915   /* OPTIMIZATION: if the parent of this variable is also being deleted,
1916      (as indicated by remove_from_parent_p) we don't bother doing an
1917      expensive list search to find the element to remove when we are
1918      discarding the list afterwards */
1919   if ((remove_from_parent_p) && (var->parent != NULL))
1920     {
1921       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1922     }
1923 
1924   if (var->obj_name != NULL)
1925     uninstall_variable (var);
1926 
1927   /* Free memory associated with this variable */
1928   free_variable (var);
1929 }
1930 
1931 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1932 static int
1933 install_variable (struct varobj *var)
1934 {
1935   struct vlist *cv;
1936   struct vlist *newvl;
1937   const char *chp;
1938   unsigned int index = 0;
1939   unsigned int i = 1;
1940 
1941   for (chp = var->obj_name; *chp; chp++)
1942     {
1943       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1944     }
1945 
1946   cv = *(varobj_table + index);
1947   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1948     cv = cv->next;
1949 
1950   if (cv != NULL)
1951     error (_("Duplicate variable object name"));
1952 
1953   /* Add varobj to hash table */
1954   newvl = xmalloc (sizeof (struct vlist));
1955   newvl->next = *(varobj_table + index);
1956   newvl->var = var;
1957   *(varobj_table + index) = newvl;
1958 
1959   /* If root, add varobj to root list */
1960   if (is_root_p (var))
1961     {
1962       /* Add to list of root variables */
1963       if (rootlist == NULL)
1964 	var->root->next = NULL;
1965       else
1966 	var->root->next = rootlist;
1967       rootlist = var->root;
1968     }
1969 
1970   return 1;			/* OK */
1971 }
1972 
1973 /* Unistall the object VAR. */
1974 static void
1975 uninstall_variable (struct varobj *var)
1976 {
1977   struct vlist *cv;
1978   struct vlist *prev;
1979   struct varobj_root *cr;
1980   struct varobj_root *prer;
1981   const char *chp;
1982   unsigned int index = 0;
1983   unsigned int i = 1;
1984 
1985   /* Remove varobj from hash table */
1986   for (chp = var->obj_name; *chp; chp++)
1987     {
1988       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1989     }
1990 
1991   cv = *(varobj_table + index);
1992   prev = NULL;
1993   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1994     {
1995       prev = cv;
1996       cv = cv->next;
1997     }
1998 
1999   if (varobjdebug)
2000     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
2001 
2002   if (cv == NULL)
2003     {
2004       warning
2005 	("Assertion failed: Could not find variable object \"%s\" to delete",
2006 	 var->obj_name);
2007       return;
2008     }
2009 
2010   if (prev == NULL)
2011     *(varobj_table + index) = cv->next;
2012   else
2013     prev->next = cv->next;
2014 
2015   xfree (cv);
2016 
2017   /* If root, remove varobj from root list */
2018   if (is_root_p (var))
2019     {
2020       /* Remove from list of root variables */
2021       if (rootlist == var->root)
2022 	rootlist = var->root->next;
2023       else
2024 	{
2025 	  prer = NULL;
2026 	  cr = rootlist;
2027 	  while ((cr != NULL) && (cr->rootvar != var))
2028 	    {
2029 	      prer = cr;
2030 	      cr = cr->next;
2031 	    }
2032 	  if (cr == NULL)
2033 	    {
2034 	      warning
2035 		("Assertion failed: Could not find varobj \"%s\" in root list",
2036 		 var->obj_name);
2037 	      return;
2038 	    }
2039 	  if (prer == NULL)
2040 	    rootlist = NULL;
2041 	  else
2042 	    prer->next = cr->next;
2043 	}
2044     }
2045 
2046 }
2047 
2048 /* Create and install a child of the parent of the given name */
2049 static struct varobj *
2050 create_child (struct varobj *parent, int index, char *name)
2051 {
2052   return create_child_with_value (parent, index, name,
2053 				  value_of_child (parent, index));
2054 }
2055 
2056 static struct varobj *
2057 create_child_with_value (struct varobj *parent, int index, const char *name,
2058 			 struct value *value)
2059 {
2060   struct varobj *child;
2061   char *childs_name;
2062 
2063   child = new_variable ();
2064 
2065   /* name is allocated by name_of_child */
2066   /* FIXME: xstrdup should not be here.  */
2067   child->name = xstrdup (name);
2068   child->index = index;
2069   child->parent = parent;
2070   child->root = parent->root;
2071   childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
2072   child->obj_name = childs_name;
2073   install_variable (child);
2074 
2075   /* Compute the type of the child.  Must do this before
2076      calling install_new_value.  */
2077   if (value != NULL)
2078     /* If the child had no evaluation errors, var->value
2079        will be non-NULL and contain a valid type. */
2080     child->type = value_type (value);
2081   else
2082     /* Otherwise, we must compute the type. */
2083     child->type = (*child->root->lang->type_of_child) (child->parent,
2084 						       child->index);
2085   install_new_value (child, value, 1);
2086 
2087   return child;
2088 }
2089 
2090 
2091 /*
2092  * Miscellaneous utility functions.
2093  */
2094 
2095 /* Allocate memory and initialize a new variable */
2096 static struct varobj *
2097 new_variable (void)
2098 {
2099   struct varobj *var;
2100 
2101   var = (struct varobj *) xmalloc (sizeof (struct varobj));
2102   var->name = NULL;
2103   var->path_expr = NULL;
2104   var->obj_name = NULL;
2105   var->index = -1;
2106   var->type = NULL;
2107   var->value = NULL;
2108   var->num_children = -1;
2109   var->parent = NULL;
2110   var->children = NULL;
2111   var->format = 0;
2112   var->root = NULL;
2113   var->updated = 0;
2114   var->print_value = NULL;
2115   var->frozen = 0;
2116   var->not_fetched = 0;
2117   var->children_requested = 0;
2118   var->from = -1;
2119   var->to = -1;
2120   var->constructor = 0;
2121   var->pretty_printer = 0;
2122   var->child_iter = 0;
2123   var->saved_item = 0;
2124 
2125   return var;
2126 }
2127 
2128 /* Allocate memory and initialize a new root variable */
2129 static struct varobj *
2130 new_root_variable (void)
2131 {
2132   struct varobj *var = new_variable ();
2133   var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));;
2134   var->root->lang = NULL;
2135   var->root->exp = NULL;
2136   var->root->valid_block = NULL;
2137   var->root->frame = null_frame_id;
2138   var->root->floating = 0;
2139   var->root->rootvar = NULL;
2140   var->root->is_valid = 1;
2141 
2142   return var;
2143 }
2144 
2145 /* Free any allocated memory associated with VAR. */
2146 static void
2147 free_variable (struct varobj *var)
2148 {
2149 #if HAVE_PYTHON
2150   if (var->pretty_printer)
2151     {
2152       struct cleanup *cleanup = varobj_ensure_python_env (var);
2153       Py_XDECREF (var->constructor);
2154       Py_XDECREF (var->pretty_printer);
2155       Py_XDECREF (var->child_iter);
2156       Py_XDECREF (var->saved_item);
2157       do_cleanups (cleanup);
2158     }
2159 #endif
2160 
2161   value_free (var->value);
2162 
2163   /* Free the expression if this is a root variable. */
2164   if (is_root_p (var))
2165     {
2166       xfree (var->root->exp);
2167       xfree (var->root);
2168     }
2169 
2170   xfree (var->name);
2171   xfree (var->obj_name);
2172   xfree (var->print_value);
2173   xfree (var->path_expr);
2174   xfree (var);
2175 }
2176 
2177 static void
2178 do_free_variable_cleanup (void *var)
2179 {
2180   free_variable (var);
2181 }
2182 
2183 static struct cleanup *
2184 make_cleanup_free_variable (struct varobj *var)
2185 {
2186   return make_cleanup (do_free_variable_cleanup, var);
2187 }
2188 
2189 /* This returns the type of the variable. It also skips past typedefs
2190    to return the real type of the variable.
2191 
2192    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2193    except within get_target_type and get_type. */
2194 static struct type *
2195 get_type (struct varobj *var)
2196 {
2197   struct type *type;
2198   type = var->type;
2199 
2200   if (type != NULL)
2201     type = check_typedef (type);
2202 
2203   return type;
2204 }
2205 
2206 /* Return the type of the value that's stored in VAR,
2207    or that would have being stored there if the
2208    value were accessible.
2209 
2210    This differs from VAR->type in that VAR->type is always
2211    the true type of the expession in the source language.
2212    The return value of this function is the type we're
2213    actually storing in varobj, and using for displaying
2214    the values and for comparing previous and new values.
2215 
2216    For example, top-level references are always stripped.  */
2217 static struct type *
2218 get_value_type (struct varobj *var)
2219 {
2220   struct type *type;
2221 
2222   if (var->value)
2223     type = value_type (var->value);
2224   else
2225     type = var->type;
2226 
2227   type = check_typedef (type);
2228 
2229   if (TYPE_CODE (type) == TYPE_CODE_REF)
2230     type = get_target_type (type);
2231 
2232   type = check_typedef (type);
2233 
2234   return type;
2235 }
2236 
2237 /* This returns the target type (or NULL) of TYPE, also skipping
2238    past typedefs, just like get_type ().
2239 
2240    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2241    except within get_target_type and get_type. */
2242 static struct type *
2243 get_target_type (struct type *type)
2244 {
2245   if (type != NULL)
2246     {
2247       type = TYPE_TARGET_TYPE (type);
2248       if (type != NULL)
2249 	type = check_typedef (type);
2250     }
2251 
2252   return type;
2253 }
2254 
2255 /* What is the default display for this variable? We assume that
2256    everything is "natural". Any exceptions? */
2257 static enum varobj_display_formats
2258 variable_default_display (struct varobj *var)
2259 {
2260   return FORMAT_NATURAL;
2261 }
2262 
2263 /* FIXME: The following should be generic for any pointer */
2264 static void
2265 cppush (struct cpstack **pstack, char *name)
2266 {
2267   struct cpstack *s;
2268 
2269   s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2270   s->name = name;
2271   s->next = *pstack;
2272   *pstack = s;
2273 }
2274 
2275 /* FIXME: The following should be generic for any pointer */
2276 static char *
2277 cppop (struct cpstack **pstack)
2278 {
2279   struct cpstack *s;
2280   char *v;
2281 
2282   if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2283     return NULL;
2284 
2285   s = *pstack;
2286   v = s->name;
2287   *pstack = (*pstack)->next;
2288   xfree (s);
2289 
2290   return v;
2291 }
2292 
2293 /*
2294  * Language-dependencies
2295  */
2296 
2297 /* Common entry points */
2298 
2299 /* Get the language of variable VAR. */
2300 static enum varobj_languages
2301 variable_language (struct varobj *var)
2302 {
2303   enum varobj_languages lang;
2304 
2305   switch (var->root->exp->language_defn->la_language)
2306     {
2307     default:
2308     case language_c:
2309       lang = vlang_c;
2310       break;
2311     case language_cplus:
2312       lang = vlang_cplus;
2313       break;
2314     case language_java:
2315       lang = vlang_java;
2316       break;
2317     }
2318 
2319   return lang;
2320 }
2321 
2322 /* Return the number of children for a given variable.
2323    The result of this function is defined by the language
2324    implementation. The number of children returned by this function
2325    is the number of children that the user will see in the variable
2326    display. */
2327 static int
2328 number_of_children (struct varobj *var)
2329 {
2330   return (*var->root->lang->number_of_children) (var);;
2331 }
2332 
2333 /* What is the expression for the root varobj VAR? Returns a malloc'd string. */
2334 static char *
2335 name_of_variable (struct varobj *var)
2336 {
2337   return (*var->root->lang->name_of_variable) (var);
2338 }
2339 
2340 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd string. */
2341 static char *
2342 name_of_child (struct varobj *var, int index)
2343 {
2344   return (*var->root->lang->name_of_child) (var, index);
2345 }
2346 
2347 /* What is the ``struct value *'' of the root variable VAR?
2348    For floating variable object, evaluation can get us a value
2349    of different type from what is stored in varobj already.  In
2350    that case:
2351    - *type_changed will be set to 1
2352    - old varobj will be freed, and new one will be
2353    created, with the same name.
2354    - *var_handle will be set to the new varobj
2355    Otherwise, *type_changed will be set to 0.  */
2356 static struct value *
2357 value_of_root (struct varobj **var_handle, int *type_changed)
2358 {
2359   struct varobj *var;
2360 
2361   if (var_handle == NULL)
2362     return NULL;
2363 
2364   var = *var_handle;
2365 
2366   /* This should really be an exception, since this should
2367      only get called with a root variable. */
2368 
2369   if (!is_root_p (var))
2370     return NULL;
2371 
2372   if (var->root->floating)
2373     {
2374       struct varobj *tmp_var;
2375       char *old_type, *new_type;
2376 
2377       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2378 			       USE_SELECTED_FRAME);
2379       if (tmp_var == NULL)
2380 	{
2381 	  return NULL;
2382 	}
2383       old_type = varobj_get_type (var);
2384       new_type = varobj_get_type (tmp_var);
2385       if (strcmp (old_type, new_type) == 0)
2386 	{
2387 	  /* The expression presently stored inside var->root->exp
2388 	     remembers the locations of local variables relatively to
2389 	     the frame where the expression was created (in DWARF location
2390 	     button, for example).  Naturally, those locations are not
2391 	     correct in other frames, so update the expression.  */
2392 
2393          struct expression *tmp_exp = var->root->exp;
2394          var->root->exp = tmp_var->root->exp;
2395          tmp_var->root->exp = tmp_exp;
2396 
2397 	  varobj_delete (tmp_var, NULL, 0);
2398 	  *type_changed = 0;
2399 	}
2400       else
2401 	{
2402 	  tmp_var->obj_name = xstrdup (var->obj_name);
2403 	  tmp_var->from = var->from;
2404 	  tmp_var->to = var->to;
2405 	  varobj_delete (var, NULL, 0);
2406 
2407 	  install_variable (tmp_var);
2408 	  *var_handle = tmp_var;
2409 	  var = *var_handle;
2410 	  *type_changed = 1;
2411 	}
2412       xfree (old_type);
2413       xfree (new_type);
2414     }
2415   else
2416     {
2417       *type_changed = 0;
2418     }
2419 
2420   return (*var->root->lang->value_of_root) (var_handle);
2421 }
2422 
2423 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
2424 static struct value *
2425 value_of_child (struct varobj *parent, int index)
2426 {
2427   struct value *value;
2428 
2429   value = (*parent->root->lang->value_of_child) (parent, index);
2430 
2431   return value;
2432 }
2433 
2434 /* GDB already has a command called "value_of_variable". Sigh. */
2435 static char *
2436 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2437 {
2438   if (var->root->is_valid)
2439     {
2440       if (var->pretty_printer)
2441 	return value_get_print_value (var->value, var->format, var);
2442       return (*var->root->lang->value_of_variable) (var, format);
2443     }
2444   else
2445     return NULL;
2446 }
2447 
2448 static char *
2449 value_get_print_value (struct value *value, enum varobj_display_formats format,
2450 		       struct varobj *var)
2451 {
2452   struct ui_file *stb;
2453   struct cleanup *old_chain;
2454   gdb_byte *thevalue = NULL;
2455   struct value_print_options opts;
2456   int len = 0;
2457 
2458   if (value == NULL)
2459     return NULL;
2460 
2461 #if HAVE_PYTHON
2462   {
2463     struct cleanup *back_to = varobj_ensure_python_env (var);
2464     PyObject *value_formatter = var->pretty_printer;
2465 
2466     if (value_formatter)
2467       {
2468 	/* First check to see if we have any children at all.  If so,
2469 	   we simply return {...}.  */
2470 	if (dynamic_varobj_has_child_method (var))
2471 	  return xstrdup ("{...}");
2472 
2473 	if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2474 	  {
2475 	    char *hint;
2476 	    struct value *replacement;
2477 	    int string_print = 0;
2478 	    PyObject *output = NULL;
2479 
2480 	    hint = gdbpy_get_display_hint (value_formatter);
2481 	    if (hint)
2482 	      {
2483 		if (!strcmp (hint, "string"))
2484 		  string_print = 1;
2485 		xfree (hint);
2486 	      }
2487 
2488 	    output = apply_varobj_pretty_printer (value_formatter,
2489 						  &replacement);
2490 	    if (output)
2491 	      {
2492 		PyObject *py_str
2493 		  = python_string_to_target_python_string (output);
2494 		if (py_str)
2495 		  {
2496 		    char *s = PyString_AsString (py_str);
2497 		    len = PyString_Size (py_str);
2498 		    thevalue = xmemdup (s, len + 1, len + 1);
2499 		    Py_DECREF (py_str);
2500 		  }
2501 		Py_DECREF (output);
2502 	      }
2503 	    if (thevalue && !string_print)
2504 	      {
2505 		do_cleanups (back_to);
2506 		return thevalue;
2507 	      }
2508 	    if (replacement)
2509 	      value = replacement;
2510 	  }
2511       }
2512     do_cleanups (back_to);
2513   }
2514 #endif
2515 
2516   stb = mem_fileopen ();
2517   old_chain = make_cleanup_ui_file_delete (stb);
2518 
2519   get_formatted_print_options (&opts, format_code[(int) format]);
2520   opts.deref_ref = 0;
2521   opts.raw = 1;
2522   if (thevalue)
2523     {
2524       struct gdbarch *gdbarch = get_type_arch (value_type (value));
2525       make_cleanup (xfree, thevalue);
2526       LA_PRINT_STRING (stb, builtin_type (gdbarch)->builtin_char,
2527 		       thevalue, len, 0, &opts);
2528     }
2529   else
2530     common_val_print (value, stb, 0, &opts, current_language);
2531   thevalue = ui_file_xstrdup (stb, NULL);
2532 
2533   do_cleanups (old_chain);
2534   return thevalue;
2535 }
2536 
2537 int
2538 varobj_editable_p (struct varobj *var)
2539 {
2540   struct type *type;
2541   struct value *value;
2542 
2543   if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2544     return 0;
2545 
2546   type = get_value_type (var);
2547 
2548   switch (TYPE_CODE (type))
2549     {
2550     case TYPE_CODE_STRUCT:
2551     case TYPE_CODE_UNION:
2552     case TYPE_CODE_ARRAY:
2553     case TYPE_CODE_FUNC:
2554     case TYPE_CODE_METHOD:
2555       return 0;
2556       break;
2557 
2558     default:
2559       return 1;
2560       break;
2561     }
2562 }
2563 
2564 /* Return non-zero if changes in value of VAR
2565    must be detected and reported by -var-update.
2566    Return zero is -var-update should never report
2567    changes of such values.  This makes sense for structures
2568    (since the changes in children values will be reported separately),
2569    or for artifical objects (like 'public' pseudo-field in C++).
2570 
2571    Return value of 0 means that gdb need not call value_fetch_lazy
2572    for the value of this variable object.  */
2573 static int
2574 varobj_value_is_changeable_p (struct varobj *var)
2575 {
2576   int r;
2577   struct type *type;
2578 
2579   if (CPLUS_FAKE_CHILD (var))
2580     return 0;
2581 
2582   type = get_value_type (var);
2583 
2584   switch (TYPE_CODE (type))
2585     {
2586     case TYPE_CODE_STRUCT:
2587     case TYPE_CODE_UNION:
2588     case TYPE_CODE_ARRAY:
2589       r = 0;
2590       break;
2591 
2592     default:
2593       r = 1;
2594     }
2595 
2596   return r;
2597 }
2598 
2599 /* Return 1 if that varobj is floating, that is is always evaluated in the
2600    selected frame, and not bound to thread/frame.  Such variable objects
2601    are created using '@' as frame specifier to -var-create.  */
2602 int
2603 varobj_floating_p (struct varobj *var)
2604 {
2605   return var->root->floating;
2606 }
2607 
2608 /* Given the value and the type of a variable object,
2609    adjust the value and type to those necessary
2610    for getting children of the variable object.
2611    This includes dereferencing top-level references
2612    to all types and dereferencing pointers to
2613    structures.
2614 
2615    Both TYPE and *TYPE should be non-null. VALUE
2616    can be null if we want to only translate type.
2617    *VALUE can be null as well -- if the parent
2618    value is not known.
2619 
2620    If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
2621    depending on whether pointer was dereferenced
2622    in this function.  */
2623 static void
2624 adjust_value_for_child_access (struct value **value,
2625 				  struct type **type,
2626 				  int *was_ptr)
2627 {
2628   gdb_assert (type && *type);
2629 
2630   if (was_ptr)
2631     *was_ptr = 0;
2632 
2633   *type = check_typedef (*type);
2634 
2635   /* The type of value stored in varobj, that is passed
2636      to us, is already supposed to be
2637      reference-stripped.  */
2638 
2639   gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
2640 
2641   /* Pointers to structures are treated just like
2642      structures when accessing children.  Don't
2643      dererences pointers to other types.  */
2644   if (TYPE_CODE (*type) == TYPE_CODE_PTR)
2645     {
2646       struct type *target_type = get_target_type (*type);
2647       if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
2648 	  || TYPE_CODE (target_type) == TYPE_CODE_UNION)
2649 	{
2650 	  if (value && *value)
2651 	    {
2652 	      int success = gdb_value_ind (*value, value);
2653 	      if (!success)
2654 		*value = NULL;
2655 	    }
2656 	  *type = target_type;
2657 	  if (was_ptr)
2658 	    *was_ptr = 1;
2659 	}
2660     }
2661 
2662   /* The 'get_target_type' function calls check_typedef on
2663      result, so we can immediately check type code.  No
2664      need to call check_typedef here.  */
2665 }
2666 
2667 /* C */
2668 static int
2669 c_number_of_children (struct varobj *var)
2670 {
2671   struct type *type = get_value_type (var);
2672   int children = 0;
2673   struct type *target;
2674 
2675   adjust_value_for_child_access (NULL, &type, NULL);
2676   target = get_target_type (type);
2677 
2678   switch (TYPE_CODE (type))
2679     {
2680     case TYPE_CODE_ARRAY:
2681       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
2682 	  && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
2683 	children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
2684       else
2685 	/* If we don't know how many elements there are, don't display
2686 	   any.  */
2687 	children = 0;
2688       break;
2689 
2690     case TYPE_CODE_STRUCT:
2691     case TYPE_CODE_UNION:
2692       children = TYPE_NFIELDS (type);
2693       break;
2694 
2695     case TYPE_CODE_PTR:
2696       /* The type here is a pointer to non-struct. Typically, pointers
2697 	 have one child, except for function ptrs, which have no children,
2698 	 and except for void*, as we don't know what to show.
2699 
2700          We can show char* so we allow it to be dereferenced.  If you decide
2701          to test for it, please mind that a little magic is necessary to
2702          properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
2703          TYPE_NAME == "char" */
2704       if (TYPE_CODE (target) == TYPE_CODE_FUNC
2705 	  || TYPE_CODE (target) == TYPE_CODE_VOID)
2706 	children = 0;
2707       else
2708 	children = 1;
2709       break;
2710 
2711     default:
2712       /* Other types have no children */
2713       break;
2714     }
2715 
2716   return children;
2717 }
2718 
2719 static char *
2720 c_name_of_variable (struct varobj *parent)
2721 {
2722   return xstrdup (parent->name);
2723 }
2724 
2725 /* Return the value of element TYPE_INDEX of a structure
2726    value VALUE.  VALUE's type should be a structure,
2727    or union, or a typedef to struct/union.
2728 
2729    Returns NULL if getting the value fails.  Never throws.  */
2730 static struct value *
2731 value_struct_element_index (struct value *value, int type_index)
2732 {
2733   struct value *result = NULL;
2734   volatile struct gdb_exception e;
2735 
2736   struct type *type = value_type (value);
2737   type = check_typedef (type);
2738 
2739   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
2740 	      || TYPE_CODE (type) == TYPE_CODE_UNION);
2741 
2742   TRY_CATCH (e, RETURN_MASK_ERROR)
2743     {
2744       if (field_is_static (&TYPE_FIELD (type, type_index)))
2745 	result = value_static_field (type, type_index);
2746       else
2747 	result = value_primitive_field (value, 0, type_index, type);
2748     }
2749   if (e.reason < 0)
2750     {
2751       return NULL;
2752     }
2753   else
2754     {
2755       return result;
2756     }
2757 }
2758 
2759 /* Obtain the information about child INDEX of the variable
2760    object PARENT.
2761    If CNAME is not null, sets *CNAME to the name of the child relative
2762    to the parent.
2763    If CVALUE is not null, sets *CVALUE to the value of the child.
2764    If CTYPE is not null, sets *CTYPE to the type of the child.
2765 
2766    If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
2767    information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
2768    to NULL.  */
2769 static void
2770 c_describe_child (struct varobj *parent, int index,
2771 		  char **cname, struct value **cvalue, struct type **ctype,
2772 		  char **cfull_expression)
2773 {
2774   struct value *value = parent->value;
2775   struct type *type = get_value_type (parent);
2776   char *parent_expression = NULL;
2777   int was_ptr;
2778 
2779   if (cname)
2780     *cname = NULL;
2781   if (cvalue)
2782     *cvalue = NULL;
2783   if (ctype)
2784     *ctype = NULL;
2785   if (cfull_expression)
2786     {
2787       *cfull_expression = NULL;
2788       parent_expression = varobj_get_path_expr (parent);
2789     }
2790   adjust_value_for_child_access (&value, &type, &was_ptr);
2791 
2792   switch (TYPE_CODE (type))
2793     {
2794     case TYPE_CODE_ARRAY:
2795       if (cname)
2796 	*cname = xstrprintf ("%d", index
2797 			     + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2798 
2799       if (cvalue && value)
2800 	{
2801 	  int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
2802 	  gdb_value_subscript (value, real_index, cvalue);
2803 	}
2804 
2805       if (ctype)
2806 	*ctype = get_target_type (type);
2807 
2808       if (cfull_expression)
2809 	*cfull_expression = xstrprintf ("(%s)[%d]", parent_expression,
2810 					index
2811 					+ TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2812 
2813 
2814       break;
2815 
2816     case TYPE_CODE_STRUCT:
2817     case TYPE_CODE_UNION:
2818       if (cname)
2819 	*cname = xstrdup (TYPE_FIELD_NAME (type, index));
2820 
2821       if (cvalue && value)
2822 	{
2823 	  /* For C, varobj index is the same as type index.  */
2824 	  *cvalue = value_struct_element_index (value, index);
2825 	}
2826 
2827       if (ctype)
2828 	*ctype = TYPE_FIELD_TYPE (type, index);
2829 
2830       if (cfull_expression)
2831 	{
2832 	  char *join = was_ptr ? "->" : ".";
2833 	  *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join,
2834 					  TYPE_FIELD_NAME (type, index));
2835 	}
2836 
2837       break;
2838 
2839     case TYPE_CODE_PTR:
2840       if (cname)
2841 	*cname = xstrprintf ("*%s", parent->name);
2842 
2843       if (cvalue && value)
2844 	{
2845 	  int success = gdb_value_ind (value, cvalue);
2846 	  if (!success)
2847 	    *cvalue = NULL;
2848 	}
2849 
2850       /* Don't use get_target_type because it calls
2851 	 check_typedef and here, we want to show the true
2852 	 declared type of the variable.  */
2853       if (ctype)
2854 	*ctype = TYPE_TARGET_TYPE (type);
2855 
2856       if (cfull_expression)
2857 	*cfull_expression = xstrprintf ("*(%s)", parent_expression);
2858 
2859       break;
2860 
2861     default:
2862       /* This should not happen */
2863       if (cname)
2864 	*cname = xstrdup ("???");
2865       if (cfull_expression)
2866 	*cfull_expression = xstrdup ("???");
2867       /* Don't set value and type, we don't know then. */
2868     }
2869 }
2870 
2871 static char *
2872 c_name_of_child (struct varobj *parent, int index)
2873 {
2874   char *name;
2875   c_describe_child (parent, index, &name, NULL, NULL, NULL);
2876   return name;
2877 }
2878 
2879 static char *
2880 c_path_expr_of_child (struct varobj *child)
2881 {
2882   c_describe_child (child->parent, child->index, NULL, NULL, NULL,
2883 		    &child->path_expr);
2884   return child->path_expr;
2885 }
2886 
2887 /* If frame associated with VAR can be found, switch
2888    to it and return 1.  Otherwise, return 0.  */
2889 static int
2890 check_scope (struct varobj *var)
2891 {
2892   struct frame_info *fi;
2893   int scope;
2894 
2895   fi = frame_find_by_id (var->root->frame);
2896   scope = fi != NULL;
2897 
2898   if (fi)
2899     {
2900       CORE_ADDR pc = get_frame_pc (fi);
2901       if (pc <  BLOCK_START (var->root->valid_block) ||
2902 	  pc >= BLOCK_END (var->root->valid_block))
2903 	scope = 0;
2904       else
2905 	select_frame (fi);
2906     }
2907   return scope;
2908 }
2909 
2910 static struct value *
2911 c_value_of_root (struct varobj **var_handle)
2912 {
2913   struct value *new_val = NULL;
2914   struct varobj *var = *var_handle;
2915   struct frame_info *fi;
2916   int within_scope = 0;
2917   struct cleanup *back_to;
2918 
2919   /*  Only root variables can be updated... */
2920   if (!is_root_p (var))
2921     /* Not a root var */
2922     return NULL;
2923 
2924   back_to = make_cleanup_restore_current_thread ();
2925 
2926   /* Determine whether the variable is still around. */
2927   if (var->root->valid_block == NULL || var->root->floating)
2928     within_scope = 1;
2929   else if (var->root->thread_id == 0)
2930     {
2931       /* The program was single-threaded when the variable object was
2932 	 created.  Technically, it's possible that the program became
2933 	 multi-threaded since then, but we don't support such
2934 	 scenario yet.  */
2935       within_scope = check_scope (var);
2936     }
2937   else
2938     {
2939       ptid_t ptid = thread_id_to_pid (var->root->thread_id);
2940       if (in_thread_list (ptid))
2941 	{
2942 	  switch_to_thread (ptid);
2943 	  within_scope = check_scope (var);
2944 	}
2945     }
2946 
2947   if (within_scope)
2948     {
2949       /* We need to catch errors here, because if evaluate
2950          expression fails we want to just return NULL.  */
2951       gdb_evaluate_expression (var->root->exp, &new_val);
2952       return new_val;
2953     }
2954 
2955   do_cleanups (back_to);
2956 
2957   return NULL;
2958 }
2959 
2960 static struct value *
2961 c_value_of_child (struct varobj *parent, int index)
2962 {
2963   struct value *value = NULL;
2964   c_describe_child (parent, index, NULL, &value, NULL, NULL);
2965 
2966   return value;
2967 }
2968 
2969 static struct type *
2970 c_type_of_child (struct varobj *parent, int index)
2971 {
2972   struct type *type = NULL;
2973   c_describe_child (parent, index, NULL, NULL, &type, NULL);
2974   return type;
2975 }
2976 
2977 static char *
2978 c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2979 {
2980   /* BOGUS: if val_print sees a struct/class, or a reference to one,
2981      it will print out its children instead of "{...}".  So we need to
2982      catch that case explicitly.  */
2983   struct type *type = get_type (var);
2984 
2985   /* If we have a custom formatter, return whatever string it has
2986      produced.  */
2987   if (var->pretty_printer && var->print_value)
2988     return xstrdup (var->print_value);
2989 
2990   /* Strip top-level references. */
2991   while (TYPE_CODE (type) == TYPE_CODE_REF)
2992     type = check_typedef (TYPE_TARGET_TYPE (type));
2993 
2994   switch (TYPE_CODE (type))
2995     {
2996     case TYPE_CODE_STRUCT:
2997     case TYPE_CODE_UNION:
2998       return xstrdup ("{...}");
2999       /* break; */
3000 
3001     case TYPE_CODE_ARRAY:
3002       {
3003 	char *number;
3004 	number = xstrprintf ("[%d]", var->num_children);
3005 	return (number);
3006       }
3007       /* break; */
3008 
3009     default:
3010       {
3011 	if (var->value == NULL)
3012 	  {
3013 	    /* This can happen if we attempt to get the value of a struct
3014 	       member when the parent is an invalid pointer. This is an
3015 	       error condition, so we should tell the caller. */
3016 	    return NULL;
3017 	  }
3018 	else
3019 	  {
3020 	    if (var->not_fetched && value_lazy (var->value))
3021 	      /* Frozen variable and no value yet.  We don't
3022 		 implicitly fetch the value.  MI response will
3023 		 use empty string for the value, which is OK.  */
3024 	      return NULL;
3025 
3026 	    gdb_assert (varobj_value_is_changeable_p (var));
3027 	    gdb_assert (!value_lazy (var->value));
3028 
3029 	    /* If the specified format is the current one,
3030 	       we can reuse print_value */
3031 	    if (format == var->format)
3032 	      return xstrdup (var->print_value);
3033 	    else
3034 	      return value_get_print_value (var->value, format, var);
3035 	  }
3036       }
3037     }
3038 }
3039 
3040 
3041 /* C++ */
3042 
3043 static int
3044 cplus_number_of_children (struct varobj *var)
3045 {
3046   struct type *type;
3047   int children, dont_know;
3048 
3049   dont_know = 1;
3050   children = 0;
3051 
3052   if (!CPLUS_FAKE_CHILD (var))
3053     {
3054       type = get_value_type (var);
3055       adjust_value_for_child_access (NULL, &type, NULL);
3056 
3057       if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
3058 	  ((TYPE_CODE (type)) == TYPE_CODE_UNION))
3059 	{
3060 	  int kids[3];
3061 
3062 	  cplus_class_num_children (type, kids);
3063 	  if (kids[v_public] != 0)
3064 	    children++;
3065 	  if (kids[v_private] != 0)
3066 	    children++;
3067 	  if (kids[v_protected] != 0)
3068 	    children++;
3069 
3070 	  /* Add any baseclasses */
3071 	  children += TYPE_N_BASECLASSES (type);
3072 	  dont_know = 0;
3073 
3074 	  /* FIXME: save children in var */
3075 	}
3076     }
3077   else
3078     {
3079       int kids[3];
3080 
3081       type = get_value_type (var->parent);
3082       adjust_value_for_child_access (NULL, &type, NULL);
3083 
3084       cplus_class_num_children (type, kids);
3085       if (strcmp (var->name, "public") == 0)
3086 	children = kids[v_public];
3087       else if (strcmp (var->name, "private") == 0)
3088 	children = kids[v_private];
3089       else
3090 	children = kids[v_protected];
3091       dont_know = 0;
3092     }
3093 
3094   if (dont_know)
3095     children = c_number_of_children (var);
3096 
3097   return children;
3098 }
3099 
3100 /* Compute # of public, private, and protected variables in this class.
3101    That means we need to descend into all baseclasses and find out
3102    how many are there, too. */
3103 static void
3104 cplus_class_num_children (struct type *type, int children[3])
3105 {
3106   int i;
3107 
3108   children[v_public] = 0;
3109   children[v_private] = 0;
3110   children[v_protected] = 0;
3111 
3112   for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
3113     {
3114       /* If we have a virtual table pointer, omit it. */
3115       if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i)
3116 	continue;
3117 
3118       if (TYPE_FIELD_PROTECTED (type, i))
3119 	children[v_protected]++;
3120       else if (TYPE_FIELD_PRIVATE (type, i))
3121 	children[v_private]++;
3122       else
3123 	children[v_public]++;
3124     }
3125 }
3126 
3127 static char *
3128 cplus_name_of_variable (struct varobj *parent)
3129 {
3130   return c_name_of_variable (parent);
3131 }
3132 
3133 enum accessibility { private_field, protected_field, public_field };
3134 
3135 /* Check if field INDEX of TYPE has the specified accessibility.
3136    Return 0 if so and 1 otherwise.  */
3137 static int
3138 match_accessibility (struct type *type, int index, enum accessibility acc)
3139 {
3140   if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
3141     return 1;
3142   else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
3143     return 1;
3144   else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
3145 	   && !TYPE_FIELD_PROTECTED (type, index))
3146     return 1;
3147   else
3148     return 0;
3149 }
3150 
3151 static void
3152 cplus_describe_child (struct varobj *parent, int index,
3153 		      char **cname, struct value **cvalue, struct type **ctype,
3154 		      char **cfull_expression)
3155 {
3156   char *name = NULL;
3157   struct value *value;
3158   struct type *type;
3159   int was_ptr;
3160   char *parent_expression = NULL;
3161 
3162   if (cname)
3163     *cname = NULL;
3164   if (cvalue)
3165     *cvalue = NULL;
3166   if (ctype)
3167     *ctype = NULL;
3168   if (cfull_expression)
3169     *cfull_expression = NULL;
3170 
3171   if (CPLUS_FAKE_CHILD (parent))
3172     {
3173       value = parent->parent->value;
3174       type = get_value_type (parent->parent);
3175       if (cfull_expression)
3176 	parent_expression = varobj_get_path_expr (parent->parent);
3177     }
3178   else
3179     {
3180       value = parent->value;
3181       type = get_value_type (parent);
3182       if (cfull_expression)
3183 	parent_expression = varobj_get_path_expr (parent);
3184     }
3185 
3186   adjust_value_for_child_access (&value, &type, &was_ptr);
3187 
3188   if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3189       || TYPE_CODE (type) == TYPE_CODE_UNION)
3190     {
3191       char *join = was_ptr ? "->" : ".";
3192       if (CPLUS_FAKE_CHILD (parent))
3193 	{
3194 	  /* The fields of the class type are ordered as they
3195 	     appear in the class.  We are given an index for a
3196 	     particular access control type ("public","protected",
3197 	     or "private").  We must skip over fields that don't
3198 	     have the access control we are looking for to properly
3199 	     find the indexed field. */
3200 	  int type_index = TYPE_N_BASECLASSES (type);
3201 	  enum accessibility acc = public_field;
3202 	  if (strcmp (parent->name, "private") == 0)
3203 	    acc = private_field;
3204 	  else if (strcmp (parent->name, "protected") == 0)
3205 	    acc = protected_field;
3206 
3207 	  while (index >= 0)
3208 	    {
3209 	      if (TYPE_VPTR_BASETYPE (type) == type
3210 		  && type_index == TYPE_VPTR_FIELDNO (type))
3211 		; /* ignore vptr */
3212 	      else if (match_accessibility (type, type_index, acc))
3213 		    --index;
3214 		  ++type_index;
3215 	    }
3216 	  --type_index;
3217 
3218 	  if (cname)
3219 	    *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
3220 
3221 	  if (cvalue && value)
3222 	    *cvalue = value_struct_element_index (value, type_index);
3223 
3224 	  if (ctype)
3225 	    *ctype = TYPE_FIELD_TYPE (type, type_index);
3226 
3227 	  if (cfull_expression)
3228 	    *cfull_expression = xstrprintf ("((%s)%s%s)", parent_expression,
3229 					    join,
3230 					    TYPE_FIELD_NAME (type, type_index));
3231 	}
3232       else if (index < TYPE_N_BASECLASSES (type))
3233 	{
3234 	  /* This is a baseclass.  */
3235 	  if (cname)
3236 	    *cname = xstrdup (TYPE_FIELD_NAME (type, index));
3237 
3238 	  if (cvalue && value)
3239 	    *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
3240 
3241 	  if (ctype)
3242 	    {
3243 	      *ctype = TYPE_FIELD_TYPE (type, index);
3244 	    }
3245 
3246 	  if (cfull_expression)
3247 	    {
3248 	      char *ptr = was_ptr ? "*" : "";
3249 	      /* Cast the parent to the base' type. Note that in gdb,
3250 		 expression like
3251 		         (Base1)d
3252 		 will create an lvalue, for all appearences, so we don't
3253 		 need to use more fancy:
3254 		         *(Base1*)(&d)
3255 		 construct.  */
3256 	      *cfull_expression = xstrprintf ("(%s(%s%s) %s)",
3257 					      ptr,
3258 					      TYPE_FIELD_NAME (type, index),
3259 					      ptr,
3260 					      parent_expression);
3261 	    }
3262 	}
3263       else
3264 	{
3265 	  char *access = NULL;
3266 	  int children[3];
3267 	  cplus_class_num_children (type, children);
3268 
3269 	  /* Everything beyond the baseclasses can
3270 	     only be "public", "private", or "protected"
3271 
3272 	     The special "fake" children are always output by varobj in
3273 	     this order. So if INDEX == 2, it MUST be "protected". */
3274 	  index -= TYPE_N_BASECLASSES (type);
3275 	  switch (index)
3276 	    {
3277 	    case 0:
3278 	      if (children[v_public] > 0)
3279 	 	access = "public";
3280 	      else if (children[v_private] > 0)
3281 	 	access = "private";
3282 	      else
3283 	 	access = "protected";
3284 	      break;
3285 	    case 1:
3286 	      if (children[v_public] > 0)
3287 		{
3288 		  if (children[v_private] > 0)
3289 		    access = "private";
3290 		  else
3291 		    access = "protected";
3292 		}
3293 	      else if (children[v_private] > 0)
3294 	 	access = "protected";
3295 	      break;
3296 	    case 2:
3297 	      /* Must be protected */
3298 	      access = "protected";
3299 	      break;
3300 	    default:
3301 	      /* error! */
3302 	      break;
3303 	    }
3304 
3305 	  gdb_assert (access);
3306 	  if (cname)
3307 	    *cname = xstrdup (access);
3308 
3309 	  /* Value and type and full expression are null here.  */
3310 	}
3311     }
3312   else
3313     {
3314       c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
3315     }
3316 }
3317 
3318 static char *
3319 cplus_name_of_child (struct varobj *parent, int index)
3320 {
3321   char *name = NULL;
3322   cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
3323   return name;
3324 }
3325 
3326 static char *
3327 cplus_path_expr_of_child (struct varobj *child)
3328 {
3329   cplus_describe_child (child->parent, child->index, NULL, NULL, NULL,
3330 			&child->path_expr);
3331   return child->path_expr;
3332 }
3333 
3334 static struct value *
3335 cplus_value_of_root (struct varobj **var_handle)
3336 {
3337   return c_value_of_root (var_handle);
3338 }
3339 
3340 static struct value *
3341 cplus_value_of_child (struct varobj *parent, int index)
3342 {
3343   struct value *value = NULL;
3344   cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
3345   return value;
3346 }
3347 
3348 static struct type *
3349 cplus_type_of_child (struct varobj *parent, int index)
3350 {
3351   struct type *type = NULL;
3352   cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
3353   return type;
3354 }
3355 
3356 static char *
3357 cplus_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3358 {
3359 
3360   /* If we have one of our special types, don't print out
3361      any value. */
3362   if (CPLUS_FAKE_CHILD (var))
3363     return xstrdup ("");
3364 
3365   return c_value_of_variable (var, format);
3366 }
3367 
3368 /* Java */
3369 
3370 static int
3371 java_number_of_children (struct varobj *var)
3372 {
3373   return cplus_number_of_children (var);
3374 }
3375 
3376 static char *
3377 java_name_of_variable (struct varobj *parent)
3378 {
3379   char *p, *name;
3380 
3381   name = cplus_name_of_variable (parent);
3382   /* If  the name has "-" in it, it is because we
3383      needed to escape periods in the name... */
3384   p = name;
3385 
3386   while (*p != '\000')
3387     {
3388       if (*p == '-')
3389 	*p = '.';
3390       p++;
3391     }
3392 
3393   return name;
3394 }
3395 
3396 static char *
3397 java_name_of_child (struct varobj *parent, int index)
3398 {
3399   char *name, *p;
3400 
3401   name = cplus_name_of_child (parent, index);
3402   /* Escape any periods in the name... */
3403   p = name;
3404 
3405   while (*p != '\000')
3406     {
3407       if (*p == '.')
3408 	*p = '-';
3409       p++;
3410     }
3411 
3412   return name;
3413 }
3414 
3415 static char *
3416 java_path_expr_of_child (struct varobj *child)
3417 {
3418   return NULL;
3419 }
3420 
3421 static struct value *
3422 java_value_of_root (struct varobj **var_handle)
3423 {
3424   return cplus_value_of_root (var_handle);
3425 }
3426 
3427 static struct value *
3428 java_value_of_child (struct varobj *parent, int index)
3429 {
3430   return cplus_value_of_child (parent, index);
3431 }
3432 
3433 static struct type *
3434 java_type_of_child (struct varobj *parent, int index)
3435 {
3436   return cplus_type_of_child (parent, index);
3437 }
3438 
3439 static char *
3440 java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3441 {
3442   return cplus_value_of_variable (var, format);
3443 }
3444 
3445 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
3446    with an arbitrary caller supplied DATA pointer.  */
3447 
3448 void
3449 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
3450 {
3451   struct varobj_root *var_root, *var_root_next;
3452 
3453   /* Iterate "safely" - handle if the callee deletes its passed VAROBJ.  */
3454 
3455   for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
3456     {
3457       var_root_next = var_root->next;
3458 
3459       (*func) (var_root->rootvar, data);
3460     }
3461 }
3462 
3463 extern void _initialize_varobj (void);
3464 void
3465 _initialize_varobj (void)
3466 {
3467   int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
3468 
3469   varobj_table = xmalloc (sizeof_table);
3470   memset (varobj_table, 0, sizeof_table);
3471 
3472   add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
3473 			    &varobjdebug, _("\
3474 Set varobj debugging."), _("\
3475 Show varobj debugging."), _("\
3476 When non-zero, varobj debugging is enabled."),
3477 			    NULL,
3478 			    show_varobjdebug,
3479 			    &setlist, &showlist);
3480 }
3481 
3482 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
3483    defined on globals.  It is a helper for varobj_invalidate.  */
3484 
3485 static void
3486 varobj_invalidate_iter (struct varobj *var, void *unused)
3487 {
3488   /* Floating varobjs are reparsed on each stop, so we don't care if the
3489      presently parsed expression refers to something that's gone.  */
3490   if (var->root->floating)
3491     return;
3492 
3493   /* global var must be re-evaluated.  */
3494   if (var->root->valid_block == NULL)
3495     {
3496       struct varobj *tmp_var;
3497 
3498       /* Try to create a varobj with same expression.  If we succeed
3499 	 replace the old varobj, otherwise invalidate it.  */
3500       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
3501 			       USE_CURRENT_FRAME);
3502       if (tmp_var != NULL)
3503 	{
3504 	  tmp_var->obj_name = xstrdup (var->obj_name);
3505 	  varobj_delete (var, NULL, 0);
3506 	  install_variable (tmp_var);
3507 	}
3508       else
3509 	var->root->is_valid = 0;
3510     }
3511   else /* locals must be invalidated.  */
3512     var->root->is_valid = 0;
3513 }
3514 
3515 /* Invalidate the varobjs that are tied to locals and re-create the ones that
3516    are defined on globals.
3517    Invalidated varobjs will be always printed in_scope="invalid".  */
3518 
3519 void
3520 varobj_invalidate (void)
3521 {
3522   all_root_varobjs (varobj_invalidate_iter, NULL);
3523 }
3524