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