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