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