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