Mention that create_child takes ownership of the allocated name
[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 (const struct varobj *);
197
198 static char *name_of_variable (const 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 (const 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 (const 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 (const 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 (const 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 (const 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 (const struct varobj *var)
604 {
605   return var->format;
606 }
607
608 char *
609 varobj_get_display_hint (const 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 (const 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 (const 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 (const 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 (const 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 (const 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 (const 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 (const 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     {
1039       /* For root varobjs, we initialize path_expr
1040          when creating varobj, so here it should be
1041          child varobj.  */
1042       gdb_assert (!is_root_p (var));
1043
1044       var->path_expr = (*var->root->lang_ops->path_expr_of_child) (var);
1045     }
1046
1047   return var->path_expr;
1048 }
1049
1050 const struct language_defn *
1051 varobj_get_language (const struct varobj *var)
1052 {
1053   return var->root->exp->language_defn;
1054 }
1055
1056 int
1057 varobj_get_attributes (const struct varobj *var)
1058 {
1059   int attributes = 0;
1060
1061   if (varobj_editable_p (var))
1062     /* FIXME: define masks for attributes.  */
1063     attributes |= 0x00000001;   /* Editable */
1064
1065   return attributes;
1066 }
1067
1068 /* Return true if VAR is a dynamic varobj.  */
1069
1070 int
1071 varobj_is_dynamic_p (const struct varobj *var)
1072 {
1073   return var->dynamic->pretty_printer != NULL;
1074 }
1075
1076 char *
1077 varobj_get_formatted_value (struct varobj *var,
1078                             enum varobj_display_formats format)
1079 {
1080   return my_value_of_variable (var, format);
1081 }
1082
1083 char *
1084 varobj_get_value (struct varobj *var)
1085 {
1086   return my_value_of_variable (var, var->format);
1087 }
1088
1089 /* Set the value of an object variable (if it is editable) to the
1090    value of the given expression.  */
1091 /* Note: Invokes functions that can call error().  */
1092
1093 int
1094 varobj_set_value (struct varobj *var, char *expression)
1095 {
1096   struct value *val = NULL; /* Initialize to keep gcc happy.  */
1097   /* The argument "expression" contains the variable's new value.
1098      We need to first construct a legal expression for this -- ugh!  */
1099   /* Does this cover all the bases?  */
1100   struct expression *exp;
1101   struct value *value = NULL; /* Initialize to keep gcc happy.  */
1102   int saved_input_radix = input_radix;
1103   const char *s = expression;
1104   volatile struct gdb_exception except;
1105
1106   gdb_assert (varobj_editable_p (var));
1107
1108   input_radix = 10;             /* ALWAYS reset to decimal temporarily.  */
1109   exp = parse_exp_1 (&s, 0, 0, 0);
1110   TRY_CATCH (except, RETURN_MASK_ERROR)
1111     {
1112       value = evaluate_expression (exp);
1113     }
1114
1115   if (except.reason < 0)
1116     {
1117       /* We cannot proceed without a valid expression.  */
1118       xfree (exp);
1119       return 0;
1120     }
1121
1122   /* All types that are editable must also be changeable.  */
1123   gdb_assert (varobj_value_is_changeable_p (var));
1124
1125   /* The value of a changeable variable object must not be lazy.  */
1126   gdb_assert (!value_lazy (var->value));
1127
1128   /* Need to coerce the input.  We want to check if the
1129      value of the variable object will be different
1130      after assignment, and the first thing value_assign
1131      does is coerce the input.
1132      For example, if we are assigning an array to a pointer variable we
1133      should compare the pointer with the array's address, not with the
1134      array's content.  */
1135   value = coerce_array (value);
1136
1137   /* The new value may be lazy.  value_assign, or
1138      rather value_contents, will take care of this.  */
1139   TRY_CATCH (except, RETURN_MASK_ERROR)
1140     {
1141       val = value_assign (var->value, value);
1142     }
1143
1144   if (except.reason < 0)
1145     return 0;
1146
1147   /* If the value has changed, record it, so that next -var-update can
1148      report this change.  If a variable had a value of '1', we've set it
1149      to '333' and then set again to '1', when -var-update will report this
1150      variable as changed -- because the first assignment has set the
1151      'updated' flag.  There's no need to optimize that, because return value
1152      of -var-update should be considered an approximation.  */
1153   var->updated = install_new_value (var, val, 0 /* Compare values.  */);
1154   input_radix = saved_input_radix;
1155   return 1;
1156 }
1157
1158 #if HAVE_PYTHON
1159
1160 /* A helper function to install a constructor function and visualizer
1161    in a varobj_dynamic.  */
1162
1163 static void
1164 install_visualizer (struct varobj_dynamic *var, PyObject *constructor,
1165                     PyObject *visualizer)
1166 {
1167   Py_XDECREF (var->constructor);
1168   var->constructor = constructor;
1169
1170   Py_XDECREF (var->pretty_printer);
1171   var->pretty_printer = visualizer;
1172
1173   varobj_iter_delete (var->child_iter);
1174   var->child_iter = NULL;
1175 }
1176
1177 /* Install the default visualizer for VAR.  */
1178
1179 static void
1180 install_default_visualizer (struct varobj *var)
1181 {
1182   /* Do not install a visualizer on a CPLUS_FAKE_CHILD.  */
1183   if (CPLUS_FAKE_CHILD (var))
1184     return;
1185
1186   if (pretty_printing)
1187     {
1188       PyObject *pretty_printer = NULL;
1189
1190       if (var->value)
1191         {
1192           pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1193           if (! pretty_printer)
1194             {
1195               gdbpy_print_stack ();
1196               error (_("Cannot instantiate printer for default visualizer"));
1197             }
1198         }
1199       
1200       if (pretty_printer == Py_None)
1201         {
1202           Py_DECREF (pretty_printer);
1203           pretty_printer = NULL;
1204         }
1205   
1206       install_visualizer (var->dynamic, NULL, pretty_printer);
1207     }
1208 }
1209
1210 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1211    make a new object.  */
1212
1213 static void
1214 construct_visualizer (struct varobj *var, PyObject *constructor)
1215 {
1216   PyObject *pretty_printer;
1217
1218   /* Do not install a visualizer on a CPLUS_FAKE_CHILD.  */
1219   if (CPLUS_FAKE_CHILD (var))
1220     return;
1221
1222   Py_INCREF (constructor);
1223   if (constructor == Py_None)
1224     pretty_printer = NULL;
1225   else
1226     {
1227       pretty_printer = instantiate_pretty_printer (constructor, var->value);
1228       if (! pretty_printer)
1229         {
1230           gdbpy_print_stack ();
1231           Py_DECREF (constructor);
1232           constructor = Py_None;
1233           Py_INCREF (constructor);
1234         }
1235
1236       if (pretty_printer == Py_None)
1237         {
1238           Py_DECREF (pretty_printer);
1239           pretty_printer = NULL;
1240         }
1241     }
1242
1243   install_visualizer (var->dynamic, constructor, pretty_printer);
1244 }
1245
1246 #endif /* HAVE_PYTHON */
1247
1248 /* A helper function for install_new_value.  This creates and installs
1249    a visualizer for VAR, if appropriate.  */
1250
1251 static void
1252 install_new_value_visualizer (struct varobj *var)
1253 {
1254 #if HAVE_PYTHON
1255   /* If the constructor is None, then we want the raw value.  If VAR
1256      does not have a value, just skip this.  */
1257   if (!gdb_python_initialized)
1258     return;
1259
1260   if (var->dynamic->constructor != Py_None && var->value != NULL)
1261     {
1262       struct cleanup *cleanup;
1263
1264       cleanup = varobj_ensure_python_env (var);
1265
1266       if (var->dynamic->constructor == NULL)
1267         install_default_visualizer (var);
1268       else
1269         construct_visualizer (var, var->dynamic->constructor);
1270
1271       do_cleanups (cleanup);
1272     }
1273 #else
1274   /* Do nothing.  */
1275 #endif
1276 }
1277
1278 /* When using RTTI to determine variable type it may be changed in runtime when
1279    the variable value is changed.  This function checks whether type of varobj
1280    VAR will change when a new value NEW_VALUE is assigned and if it is so
1281    updates the type of VAR.  */
1282
1283 static int
1284 update_type_if_necessary (struct varobj *var, struct value *new_value)
1285 {
1286   if (new_value)
1287     {
1288       struct value_print_options opts;
1289
1290       get_user_print_options (&opts);
1291       if (opts.objectprint)
1292         {
1293           struct type *new_type;
1294           char *curr_type_str, *new_type_str;
1295           int type_name_changed;
1296
1297           new_type = value_actual_type (new_value, 0, 0);
1298           new_type_str = type_to_string (new_type);
1299           curr_type_str = varobj_get_type (var);
1300           type_name_changed = strcmp (curr_type_str, new_type_str) != 0;
1301           xfree (curr_type_str);
1302           xfree (new_type_str);
1303
1304           if (type_name_changed)
1305             {
1306               var->type = new_type;
1307
1308               /* This information may be not valid for a new type.  */
1309               varobj_delete (var, NULL, 1);
1310               VEC_free (varobj_p, var->children);
1311               var->num_children = -1;
1312               return 1;
1313             }
1314         }
1315     }
1316
1317   return 0;
1318 }
1319
1320 /* Assign a new value to a variable object.  If INITIAL is non-zero,
1321    this is the first assignement after the variable object was just
1322    created, or changed type.  In that case, just assign the value 
1323    and return 0.
1324    Otherwise, assign the new value, and return 1 if the value is
1325    different from the current one, 0 otherwise.  The comparison is
1326    done on textual representation of value.  Therefore, some types
1327    need not be compared.  E.g.  for structures the reported value is
1328    always "{...}", so no comparison is necessary here.  If the old
1329    value was NULL and new one is not, or vice versa, we always return 1.
1330
1331    The VALUE parameter should not be released -- the function will
1332    take care of releasing it when needed.  */
1333 static int
1334 install_new_value (struct varobj *var, struct value *value, int initial)
1335
1336   int changeable;
1337   int need_to_fetch;
1338   int changed = 0;
1339   int intentionally_not_fetched = 0;
1340   char *print_value = NULL;
1341
1342   /* We need to know the varobj's type to decide if the value should
1343      be fetched or not.  C++ fake children (public/protected/private)
1344      don't have a type.  */
1345   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1346   changeable = varobj_value_is_changeable_p (var);
1347
1348   /* If the type has custom visualizer, we consider it to be always
1349      changeable.  FIXME: need to make sure this behaviour will not
1350      mess up read-sensitive values.  */
1351   if (var->dynamic->pretty_printer != NULL)
1352     changeable = 1;
1353
1354   need_to_fetch = changeable;
1355
1356   /* We are not interested in the address of references, and given
1357      that in C++ a reference is not rebindable, it cannot
1358      meaningfully change.  So, get hold of the real value.  */
1359   if (value)
1360     value = coerce_ref (value);
1361
1362   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1363     /* For unions, we need to fetch the value implicitly because
1364        of implementation of union member fetch.  When gdb
1365        creates a value for a field and the value of the enclosing
1366        structure is not lazy,  it immediately copies the necessary
1367        bytes from the enclosing values.  If the enclosing value is
1368        lazy, the call to value_fetch_lazy on the field will read
1369        the data from memory.  For unions, that means we'll read the
1370        same memory more than once, which is not desirable.  So
1371        fetch now.  */
1372     need_to_fetch = 1;
1373
1374   /* The new value might be lazy.  If the type is changeable,
1375      that is we'll be comparing values of this type, fetch the
1376      value now.  Otherwise, on the next update the old value
1377      will be lazy, which means we've lost that old value.  */
1378   if (need_to_fetch && value && value_lazy (value))
1379     {
1380       struct varobj *parent = var->parent;
1381       int frozen = var->frozen;
1382
1383       for (; !frozen && parent; parent = parent->parent)
1384         frozen |= parent->frozen;
1385
1386       if (frozen && initial)
1387         {
1388           /* For variables that are frozen, or are children of frozen
1389              variables, we don't do fetch on initial assignment.
1390              For non-initial assignemnt we do the fetch, since it means we're
1391              explicitly asked to compare the new value with the old one.  */
1392           intentionally_not_fetched = 1;
1393         }
1394       else
1395         {
1396           volatile struct gdb_exception except;
1397
1398           TRY_CATCH (except, RETURN_MASK_ERROR)
1399             {
1400               value_fetch_lazy (value);
1401             }
1402
1403           if (except.reason < 0)
1404             {
1405               /* Set the value to NULL, so that for the next -var-update,
1406                  we don't try to compare the new value with this value,
1407                  that we couldn't even read.  */
1408               value = NULL;
1409             }
1410         }
1411     }
1412
1413   /* Get a reference now, before possibly passing it to any Python
1414      code that might release it.  */
1415   if (value != NULL)
1416     value_incref (value);
1417
1418   /* Below, we'll be comparing string rendering of old and new
1419      values.  Don't get string rendering if the value is
1420      lazy -- if it is, the code above has decided that the value
1421      should not be fetched.  */
1422   if (value != NULL && !value_lazy (value)
1423       && var->dynamic->pretty_printer == NULL)
1424     print_value = varobj_value_get_print_value (value, var->format, var);
1425
1426   /* If the type is changeable, compare the old and the new values.
1427      If this is the initial assignment, we don't have any old value
1428      to compare with.  */
1429   if (!initial && changeable)
1430     {
1431       /* If the value of the varobj was changed by -var-set-value,
1432          then the value in the varobj and in the target is the same.
1433          However, that value is different from the value that the
1434          varobj had after the previous -var-update.  So need to the
1435          varobj as changed.  */
1436       if (var->updated)
1437         {
1438           changed = 1;
1439         }
1440       else if (var->dynamic->pretty_printer == NULL)
1441         {
1442           /* Try to compare the values.  That requires that both
1443              values are non-lazy.  */
1444           if (var->not_fetched && value_lazy (var->value))
1445             {
1446               /* This is a frozen varobj and the value was never read.
1447                  Presumably, UI shows some "never read" indicator.
1448                  Now that we've fetched the real value, we need to report
1449                  this varobj as changed so that UI can show the real
1450                  value.  */
1451               changed = 1;
1452             }
1453           else  if (var->value == NULL && value == NULL)
1454             /* Equal.  */
1455             ;
1456           else if (var->value == NULL || value == NULL)
1457             {
1458               changed = 1;
1459             }
1460           else
1461             {
1462               gdb_assert (!value_lazy (var->value));
1463               gdb_assert (!value_lazy (value));
1464
1465               gdb_assert (var->print_value != NULL && print_value != NULL);
1466               if (strcmp (var->print_value, print_value) != 0)
1467                 changed = 1;
1468             }
1469         }
1470     }
1471
1472   if (!initial && !changeable)
1473     {
1474       /* For values that are not changeable, we don't compare the values.
1475          However, we want to notice if a value was not NULL and now is NULL,
1476          or vise versa, so that we report when top-level varobjs come in scope
1477          and leave the scope.  */
1478       changed = (var->value != NULL) != (value != NULL);
1479     }
1480
1481   /* We must always keep the new value, since children depend on it.  */
1482   if (var->value != NULL && var->value != value)
1483     value_free (var->value);
1484   var->value = value;
1485   if (value && value_lazy (value) && intentionally_not_fetched)
1486     var->not_fetched = 1;
1487   else
1488     var->not_fetched = 0;
1489   var->updated = 0;
1490
1491   install_new_value_visualizer (var);
1492
1493   /* If we installed a pretty-printer, re-compare the printed version
1494      to see if the variable changed.  */
1495   if (var->dynamic->pretty_printer != NULL)
1496     {
1497       xfree (print_value);
1498       print_value = varobj_value_get_print_value (var->value, var->format,
1499                                                   var);
1500       if ((var->print_value == NULL && print_value != NULL)
1501           || (var->print_value != NULL && print_value == NULL)
1502           || (var->print_value != NULL && print_value != NULL
1503               && strcmp (var->print_value, print_value) != 0))
1504         changed = 1;
1505     }
1506   if (var->print_value)
1507     xfree (var->print_value);
1508   var->print_value = print_value;
1509
1510   gdb_assert (!var->value || value_type (var->value));
1511
1512   return changed;
1513 }
1514
1515 /* Return the requested range for a varobj.  VAR is the varobj.  FROM
1516    and TO are out parameters; *FROM and *TO will be set to the
1517    selected sub-range of VAR.  If no range was selected using
1518    -var-set-update-range, then both will be -1.  */
1519 void
1520 varobj_get_child_range (const struct varobj *var, int *from, int *to)
1521 {
1522   *from = var->from;
1523   *to = var->to;
1524 }
1525
1526 /* Set the selected sub-range of children of VAR to start at index
1527    FROM and end at index TO.  If either FROM or TO is less than zero,
1528    this is interpreted as a request for all children.  */
1529 void
1530 varobj_set_child_range (struct varobj *var, int from, int to)
1531 {
1532   var->from = from;
1533   var->to = to;
1534 }
1535
1536 void 
1537 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1538 {
1539 #if HAVE_PYTHON
1540   PyObject *mainmod, *globals, *constructor;
1541   struct cleanup *back_to;
1542
1543   if (!gdb_python_initialized)
1544     return;
1545
1546   back_to = varobj_ensure_python_env (var);
1547
1548   mainmod = PyImport_AddModule ("__main__");
1549   globals = PyModule_GetDict (mainmod);
1550   Py_INCREF (globals);
1551   make_cleanup_py_decref (globals);
1552
1553   constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1554
1555   if (! constructor)
1556     {
1557       gdbpy_print_stack ();
1558       error (_("Could not evaluate visualizer expression: %s"), visualizer);
1559     }
1560
1561   construct_visualizer (var, constructor);
1562   Py_XDECREF (constructor);
1563
1564   /* If there are any children now, wipe them.  */
1565   varobj_delete (var, NULL, 1 /* children only */);
1566   var->num_children = -1;
1567
1568   do_cleanups (back_to);
1569 #else
1570   error (_("Python support required"));
1571 #endif
1572 }
1573
1574 /* If NEW_VALUE is the new value of the given varobj (var), return
1575    non-zero if var has mutated.  In other words, if the type of
1576    the new value is different from the type of the varobj's old
1577    value.
1578
1579    NEW_VALUE may be NULL, if the varobj is now out of scope.  */
1580
1581 static int
1582 varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
1583                           struct type *new_type)
1584 {
1585   /* If we haven't previously computed the number of children in var,
1586      it does not matter from the front-end's perspective whether
1587      the type has mutated or not.  For all intents and purposes,
1588      it has not mutated.  */
1589   if (var->num_children < 0)
1590     return 0;
1591
1592   if (var->root->lang_ops->value_has_mutated)
1593     {
1594       /* The varobj module, when installing new values, explicitly strips
1595          references, saying that we're not interested in those addresses.
1596          But detection of mutation happens before installing the new
1597          value, so our value may be a reference that we need to strip
1598          in order to remain consistent.  */
1599       if (new_value != NULL)
1600         new_value = coerce_ref (new_value);
1601       return var->root->lang_ops->value_has_mutated (var, new_value, new_type);
1602     }
1603   else
1604     return 0;
1605 }
1606
1607 /* Update the values for a variable and its children.  This is a
1608    two-pronged attack.  First, re-parse the value for the root's
1609    expression to see if it's changed.  Then go all the way
1610    through its children, reconstructing them and noting if they've
1611    changed.
1612
1613    The EXPLICIT parameter specifies if this call is result
1614    of MI request to update this specific variable, or 
1615    result of implicit -var-update *.  For implicit request, we don't
1616    update frozen variables.
1617
1618    NOTE: This function may delete the caller's varobj.  If it
1619    returns TYPE_CHANGED, then it has done this and VARP will be modified
1620    to point to the new varobj.  */
1621
1622 VEC(varobj_update_result) *
1623 varobj_update (struct varobj **varp, int explicit)
1624 {
1625   int type_changed = 0;
1626   int i;
1627   struct value *new;
1628   VEC (varobj_update_result) *stack = NULL;
1629   VEC (varobj_update_result) *result = NULL;
1630
1631   /* Frozen means frozen -- we don't check for any change in
1632      this varobj, including its going out of scope, or
1633      changing type.  One use case for frozen varobjs is
1634      retaining previously evaluated expressions, and we don't
1635      want them to be reevaluated at all.  */
1636   if (!explicit && (*varp)->frozen)
1637     return result;
1638
1639   if (!(*varp)->root->is_valid)
1640     {
1641       varobj_update_result r = {0};
1642
1643       r.varobj = *varp;
1644       r.status = VAROBJ_INVALID;
1645       VEC_safe_push (varobj_update_result, result, &r);
1646       return result;
1647     }
1648
1649   if ((*varp)->root->rootvar == *varp)
1650     {
1651       varobj_update_result r = {0};
1652
1653       r.varobj = *varp;
1654       r.status = VAROBJ_IN_SCOPE;
1655
1656       /* Update the root variable.  value_of_root can return NULL
1657          if the variable is no longer around, i.e. we stepped out of
1658          the frame in which a local existed.  We are letting the 
1659          value_of_root variable dispose of the varobj if the type
1660          has changed.  */
1661       new = value_of_root (varp, &type_changed);
1662       if (update_type_if_necessary(*varp, new))
1663           type_changed = 1;
1664       r.varobj = *varp;
1665       r.type_changed = type_changed;
1666       if (install_new_value ((*varp), new, type_changed))
1667         r.changed = 1;
1668       
1669       if (new == NULL)
1670         r.status = VAROBJ_NOT_IN_SCOPE;
1671       r.value_installed = 1;
1672
1673       if (r.status == VAROBJ_NOT_IN_SCOPE)
1674         {
1675           if (r.type_changed || r.changed)
1676             VEC_safe_push (varobj_update_result, result, &r);
1677           return result;
1678         }
1679             
1680       VEC_safe_push (varobj_update_result, stack, &r);
1681     }
1682   else
1683     {
1684       varobj_update_result r = {0};
1685
1686       r.varobj = *varp;
1687       VEC_safe_push (varobj_update_result, stack, &r);
1688     }
1689
1690   /* Walk through the children, reconstructing them all.  */
1691   while (!VEC_empty (varobj_update_result, stack))
1692     {
1693       varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1694       struct varobj *v = r.varobj;
1695
1696       VEC_pop (varobj_update_result, stack);
1697
1698       /* Update this variable, unless it's a root, which is already
1699          updated.  */
1700       if (!r.value_installed)
1701         {
1702           struct type *new_type;
1703
1704           new = value_of_child (v->parent, v->index);
1705           if (update_type_if_necessary(v, new))
1706             r.type_changed = 1;
1707           if (new)
1708             new_type = value_type (new);
1709           else
1710             new_type = v->root->lang_ops->type_of_child (v->parent, v->index);
1711
1712           if (varobj_value_has_mutated (v, new, new_type))
1713             {
1714               /* The children are no longer valid; delete them now.
1715                  Report the fact that its type changed as well.  */
1716               varobj_delete (v, NULL, 1 /* only_children */);
1717               v->num_children = -1;
1718               v->to = -1;
1719               v->from = -1;
1720               v->type = new_type;
1721               r.type_changed = 1;
1722             }
1723
1724           if (install_new_value (v, new, r.type_changed))
1725             {
1726               r.changed = 1;
1727               v->updated = 0;
1728             }
1729         }
1730
1731       /* We probably should not get children of a dynamic varobj, but
1732          for which -var-list-children was never invoked.  */
1733       if (varobj_is_dynamic_p (v))
1734         {
1735           VEC (varobj_p) *changed = 0, *type_changed = 0, *unchanged = 0;
1736           VEC (varobj_p) *new = 0;
1737           int i, children_changed = 0;
1738
1739           if (v->frozen)
1740             continue;
1741
1742           if (!v->dynamic->children_requested)
1743             {
1744               int dummy;
1745
1746               /* If we initially did not have potential children, but
1747                  now we do, consider the varobj as changed.
1748                  Otherwise, if children were never requested, consider
1749                  it as unchanged -- presumably, such varobj is not yet
1750                  expanded in the UI, so we need not bother getting
1751                  it.  */
1752               if (!varobj_has_more (v, 0))
1753                 {
1754                   update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
1755                                                   &dummy, 0, 0, 0);
1756                   if (varobj_has_more (v, 0))
1757                     r.changed = 1;
1758                 }
1759
1760               if (r.changed)
1761                 VEC_safe_push (varobj_update_result, result, &r);
1762
1763               continue;
1764             }
1765
1766           /* If update_dynamic_varobj_children returns 0, then we have
1767              a non-conforming pretty-printer, so we skip it.  */
1768           if (update_dynamic_varobj_children (v, &changed, &type_changed, &new,
1769                                               &unchanged, &children_changed, 1,
1770                                               v->from, v->to))
1771             {
1772               if (children_changed || new)
1773                 {
1774                   r.children_changed = 1;
1775                   r.new = new;
1776                 }
1777               /* Push in reverse order so that the first child is
1778                  popped from the work stack first, and so will be
1779                  added to result first.  This does not affect
1780                  correctness, just "nicer".  */
1781               for (i = VEC_length (varobj_p, type_changed) - 1; i >= 0; --i)
1782                 {
1783                   varobj_p tmp = VEC_index (varobj_p, type_changed, i);
1784                   varobj_update_result r = {0};
1785
1786                   /* Type may change only if value was changed.  */
1787                   r.varobj = tmp;
1788                   r.changed = 1;
1789                   r.type_changed = 1;
1790                   r.value_installed = 1;
1791                   VEC_safe_push (varobj_update_result, stack, &r);
1792                 }
1793               for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
1794                 {
1795                   varobj_p tmp = VEC_index (varobj_p, changed, i);
1796                   varobj_update_result r = {0};
1797
1798                   r.varobj = tmp;
1799                   r.changed = 1;
1800                   r.value_installed = 1;
1801                   VEC_safe_push (varobj_update_result, stack, &r);
1802                 }
1803               for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
1804                 {
1805                   varobj_p tmp = VEC_index (varobj_p, unchanged, i);
1806
1807                   if (!tmp->frozen)
1808                     {
1809                       varobj_update_result r = {0};
1810
1811                       r.varobj = tmp;
1812                       r.value_installed = 1;
1813                       VEC_safe_push (varobj_update_result, stack, &r);
1814                     }
1815                 }
1816               if (r.changed || r.children_changed)
1817                 VEC_safe_push (varobj_update_result, result, &r);
1818
1819               /* Free CHANGED, TYPE_CHANGED and UNCHANGED, but not NEW,
1820                  because NEW has been put into the result vector.  */
1821               VEC_free (varobj_p, changed);
1822               VEC_free (varobj_p, type_changed);
1823               VEC_free (varobj_p, unchanged);
1824
1825               continue;
1826             }
1827         }
1828
1829       /* Push any children.  Use reverse order so that the first
1830          child is popped from the work stack first, and so
1831          will be added to result first.  This does not
1832          affect correctness, just "nicer".  */
1833       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1834         {
1835           varobj_p c = VEC_index (varobj_p, v->children, i);
1836
1837           /* Child may be NULL if explicitly deleted by -var-delete.  */
1838           if (c != NULL && !c->frozen)
1839             {
1840               varobj_update_result r = {0};
1841
1842               r.varobj = c;
1843               VEC_safe_push (varobj_update_result, stack, &r);
1844             }
1845         }
1846
1847       if (r.changed || r.type_changed)
1848         VEC_safe_push (varobj_update_result, result, &r);
1849     }
1850
1851   VEC_free (varobj_update_result, stack);
1852
1853   return result;
1854 }
1855 \f
1856
1857 /* Helper functions */
1858
1859 /*
1860  * Variable object construction/destruction
1861  */
1862
1863 static int
1864 delete_variable (struct cpstack **resultp, struct varobj *var,
1865                  int only_children_p)
1866 {
1867   int delcount = 0;
1868
1869   delete_variable_1 (resultp, &delcount, var,
1870                      only_children_p, 1 /* remove_from_parent_p */ );
1871
1872   return delcount;
1873 }
1874
1875 /* Delete the variable object VAR and its children.  */
1876 /* IMPORTANT NOTE: If we delete a variable which is a child
1877    and the parent is not removed we dump core.  It must be always
1878    initially called with remove_from_parent_p set.  */
1879 static void
1880 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1881                    struct varobj *var, int only_children_p,
1882                    int remove_from_parent_p)
1883 {
1884   int i;
1885
1886   /* Delete any children of this variable, too.  */
1887   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1888     {   
1889       varobj_p child = VEC_index (varobj_p, var->children, i);
1890
1891       if (!child)
1892         continue;
1893       if (!remove_from_parent_p)
1894         child->parent = NULL;
1895       delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1896     }
1897   VEC_free (varobj_p, var->children);
1898
1899   /* if we were called to delete only the children we are done here.  */
1900   if (only_children_p)
1901     return;
1902
1903   /* Otherwise, add it to the list of deleted ones and proceed to do so.  */
1904   /* If the name is null, this is a temporary variable, that has not
1905      yet been installed, don't report it, it belongs to the caller...  */
1906   if (var->obj_name != NULL)
1907     {
1908       cppush (resultp, xstrdup (var->obj_name));
1909       *delcountp = *delcountp + 1;
1910     }
1911
1912   /* If this variable has a parent, remove it from its parent's list.  */
1913   /* OPTIMIZATION: if the parent of this variable is also being deleted, 
1914      (as indicated by remove_from_parent_p) we don't bother doing an
1915      expensive list search to find the element to remove when we are
1916      discarding the list afterwards.  */
1917   if ((remove_from_parent_p) && (var->parent != NULL))
1918     {
1919       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1920     }
1921
1922   if (var->obj_name != NULL)
1923     uninstall_variable (var);
1924
1925   /* Free memory associated with this variable.  */
1926   free_variable (var);
1927 }
1928
1929 /* Install the given variable VAR with the object name VAR->OBJ_NAME.  */
1930 static int
1931 install_variable (struct varobj *var)
1932 {
1933   struct vlist *cv;
1934   struct vlist *newvl;
1935   const char *chp;
1936   unsigned int index = 0;
1937   unsigned int i = 1;
1938
1939   for (chp = var->obj_name; *chp; chp++)
1940     {
1941       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1942     }
1943
1944   cv = *(varobj_table + index);
1945   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1946     cv = cv->next;
1947
1948   if (cv != NULL)
1949     error (_("Duplicate variable object name"));
1950
1951   /* Add varobj to hash table.  */
1952   newvl = xmalloc (sizeof (struct vlist));
1953   newvl->next = *(varobj_table + index);
1954   newvl->var = var;
1955   *(varobj_table + index) = newvl;
1956
1957   /* If root, add varobj to root list.  */
1958   if (is_root_p (var))
1959     {
1960       /* Add to list of root variables.  */
1961       if (rootlist == NULL)
1962         var->root->next = NULL;
1963       else
1964         var->root->next = rootlist;
1965       rootlist = var->root;
1966     }
1967
1968   return 1;                     /* OK */
1969 }
1970
1971 /* Unistall the object VAR.  */
1972 static void
1973 uninstall_variable (struct varobj *var)
1974 {
1975   struct vlist *cv;
1976   struct vlist *prev;
1977   struct varobj_root *cr;
1978   struct varobj_root *prer;
1979   const char *chp;
1980   unsigned int index = 0;
1981   unsigned int i = 1;
1982
1983   /* Remove varobj from hash table.  */
1984   for (chp = var->obj_name; *chp; chp++)
1985     {
1986       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1987     }
1988
1989   cv = *(varobj_table + index);
1990   prev = NULL;
1991   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1992     {
1993       prev = cv;
1994       cv = cv->next;
1995     }
1996
1997   if (varobjdebug)
1998     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
1999
2000   if (cv == NULL)
2001     {
2002       warning
2003         ("Assertion failed: Could not find variable object \"%s\" to delete",
2004          var->obj_name);
2005       return;
2006     }
2007
2008   if (prev == NULL)
2009     *(varobj_table + index) = cv->next;
2010   else
2011     prev->next = cv->next;
2012
2013   xfree (cv);
2014
2015   /* If root, remove varobj from root list.  */
2016   if (is_root_p (var))
2017     {
2018       /* Remove from list of root variables.  */
2019       if (rootlist == var->root)
2020         rootlist = var->root->next;
2021       else
2022         {
2023           prer = NULL;
2024           cr = rootlist;
2025           while ((cr != NULL) && (cr->rootvar != var))
2026             {
2027               prer = cr;
2028               cr = cr->next;
2029             }
2030           if (cr == NULL)
2031             {
2032               warning (_("Assertion failed: Could not find "
2033                          "varobj \"%s\" in root list"),
2034                        var->obj_name);
2035               return;
2036             }
2037           if (prer == NULL)
2038             rootlist = NULL;
2039           else
2040             prer->next = cr->next;
2041         }
2042     }
2043
2044 }
2045
2046 /* Create and install a child of the parent of the given name.
2047
2048    The created VAROBJ takes ownership of the allocated NAME.  */
2049
2050 static struct varobj *
2051 create_child (struct varobj *parent, int index, char *name)
2052 {
2053   struct varobj_item item;
2054
2055   item.name = name;
2056   item.value = value_of_child (parent, index);
2057
2058   return create_child_with_value (parent, index, &item);
2059 }
2060
2061 static struct varobj *
2062 create_child_with_value (struct varobj *parent, int index,
2063                          struct varobj_item *item)
2064 {
2065   struct varobj *child;
2066   char *childs_name;
2067
2068   child = new_variable ();
2069
2070   /* NAME is allocated by caller.  */
2071   child->name = item->name;
2072   child->index = index;
2073   child->parent = parent;
2074   child->root = parent->root;
2075
2076   if (varobj_is_anonymous_child (child))
2077     childs_name = xstrprintf ("%s.%d_anonymous", parent->obj_name, index);
2078   else
2079     childs_name = xstrprintf ("%s.%s", parent->obj_name, item->name);
2080   child->obj_name = childs_name;
2081
2082   install_variable (child);
2083
2084   /* Compute the type of the child.  Must do this before
2085      calling install_new_value.  */
2086   if (item->value != NULL)
2087     /* If the child had no evaluation errors, var->value
2088        will be non-NULL and contain a valid type.  */
2089     child->type = value_actual_type (item->value, 0, NULL);
2090   else
2091     /* Otherwise, we must compute the type.  */
2092     child->type = (*child->root->lang_ops->type_of_child) (child->parent,
2093                                                            child->index);
2094   install_new_value (child, item->value, 1);
2095
2096   return child;
2097 }
2098 \f
2099
2100 /*
2101  * Miscellaneous utility functions.
2102  */
2103
2104 /* Allocate memory and initialize a new variable.  */
2105 static struct varobj *
2106 new_variable (void)
2107 {
2108   struct varobj *var;
2109
2110   var = (struct varobj *) xmalloc (sizeof (struct varobj));
2111   var->name = NULL;
2112   var->path_expr = NULL;
2113   var->obj_name = NULL;
2114   var->index = -1;
2115   var->type = NULL;
2116   var->value = NULL;
2117   var->num_children = -1;
2118   var->parent = NULL;
2119   var->children = NULL;
2120   var->format = 0;
2121   var->root = NULL;
2122   var->updated = 0;
2123   var->print_value = NULL;
2124   var->frozen = 0;
2125   var->not_fetched = 0;
2126   var->dynamic
2127     = (struct varobj_dynamic *) xmalloc (sizeof (struct varobj_dynamic));
2128   var->dynamic->children_requested = 0;
2129   var->from = -1;
2130   var->to = -1;
2131   var->dynamic->constructor = 0;
2132   var->dynamic->pretty_printer = 0;
2133   var->dynamic->child_iter = 0;
2134   var->dynamic->saved_item = 0;
2135
2136   return var;
2137 }
2138
2139 /* Allocate memory and initialize a new root variable.  */
2140 static struct varobj *
2141 new_root_variable (void)
2142 {
2143   struct varobj *var = new_variable ();
2144
2145   var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));
2146   var->root->lang_ops = NULL;
2147   var->root->exp = NULL;
2148   var->root->valid_block = NULL;
2149   var->root->frame = null_frame_id;
2150   var->root->floating = 0;
2151   var->root->rootvar = NULL;
2152   var->root->is_valid = 1;
2153
2154   return var;
2155 }
2156
2157 /* Free any allocated memory associated with VAR.  */
2158 static void
2159 free_variable (struct varobj *var)
2160 {
2161 #if HAVE_PYTHON
2162   if (var->dynamic->pretty_printer != NULL)
2163     {
2164       struct cleanup *cleanup = varobj_ensure_python_env (var);
2165
2166       Py_XDECREF (var->dynamic->constructor);
2167       Py_XDECREF (var->dynamic->pretty_printer);
2168       do_cleanups (cleanup);
2169     }
2170 #endif
2171
2172   varobj_iter_delete (var->dynamic->child_iter);
2173   varobj_clear_saved_item (var->dynamic);
2174   value_free (var->value);
2175
2176   /* Free the expression if this is a root variable.  */
2177   if (is_root_p (var))
2178     {
2179       xfree (var->root->exp);
2180       xfree (var->root);
2181     }
2182
2183   xfree (var->name);
2184   xfree (var->obj_name);
2185   xfree (var->print_value);
2186   xfree (var->path_expr);
2187   xfree (var->dynamic);
2188   xfree (var);
2189 }
2190
2191 static void
2192 do_free_variable_cleanup (void *var)
2193 {
2194   free_variable (var);
2195 }
2196
2197 static struct cleanup *
2198 make_cleanup_free_variable (struct varobj *var)
2199 {
2200   return make_cleanup (do_free_variable_cleanup, var);
2201 }
2202
2203 /* Return the type of the value that's stored in VAR,
2204    or that would have being stored there if the
2205    value were accessible.
2206
2207    This differs from VAR->type in that VAR->type is always
2208    the true type of the expession in the source language.
2209    The return value of this function is the type we're
2210    actually storing in varobj, and using for displaying
2211    the values and for comparing previous and new values.
2212
2213    For example, top-level references are always stripped.  */
2214 struct type *
2215 varobj_get_value_type (const struct varobj *var)
2216 {
2217   struct type *type;
2218
2219   if (var->value)
2220     type = value_type (var->value);
2221   else
2222     type = var->type;
2223
2224   type = check_typedef (type);
2225
2226   if (TYPE_CODE (type) == TYPE_CODE_REF)
2227     type = get_target_type (type);
2228
2229   type = check_typedef (type);
2230
2231   return type;
2232 }
2233
2234 /* What is the default display for this variable? We assume that
2235    everything is "natural".  Any exceptions?  */
2236 static enum varobj_display_formats
2237 variable_default_display (struct varobj *var)
2238 {
2239   return FORMAT_NATURAL;
2240 }
2241
2242 /* FIXME: The following should be generic for any pointer.  */
2243 static void
2244 cppush (struct cpstack **pstack, char *name)
2245 {
2246   struct cpstack *s;
2247
2248   s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2249   s->name = name;
2250   s->next = *pstack;
2251   *pstack = s;
2252 }
2253
2254 /* FIXME: The following should be generic for any pointer.  */
2255 static char *
2256 cppop (struct cpstack **pstack)
2257 {
2258   struct cpstack *s;
2259   char *v;
2260
2261   if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2262     return NULL;
2263
2264   s = *pstack;
2265   v = s->name;
2266   *pstack = (*pstack)->next;
2267   xfree (s);
2268
2269   return v;
2270 }
2271 \f
2272 /*
2273  * Language-dependencies
2274  */
2275
2276 /* Common entry points */
2277
2278 /* Return the number of children for a given variable.
2279    The result of this function is defined by the language
2280    implementation.  The number of children returned by this function
2281    is the number of children that the user will see in the variable
2282    display.  */
2283 static int
2284 number_of_children (const struct varobj *var)
2285 {
2286   return (*var->root->lang_ops->number_of_children) (var);
2287 }
2288
2289 /* What is the expression for the root varobj VAR? Returns a malloc'd
2290    string.  */
2291 static char *
2292 name_of_variable (const struct varobj *var)
2293 {
2294   return (*var->root->lang_ops->name_of_variable) (var);
2295 }
2296
2297 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd
2298    string.  */
2299 static char *
2300 name_of_child (struct varobj *var, int index)
2301 {
2302   return (*var->root->lang_ops->name_of_child) (var, index);
2303 }
2304
2305 /* If frame associated with VAR can be found, switch
2306    to it and return 1.  Otherwise, return 0.  */
2307
2308 static int
2309 check_scope (const struct varobj *var)
2310 {
2311   struct frame_info *fi;
2312   int scope;
2313
2314   fi = frame_find_by_id (var->root->frame);
2315   scope = fi != NULL;
2316
2317   if (fi)
2318     {
2319       CORE_ADDR pc = get_frame_pc (fi);
2320
2321       if (pc <  BLOCK_START (var->root->valid_block) ||
2322           pc >= BLOCK_END (var->root->valid_block))
2323         scope = 0;
2324       else
2325         select_frame (fi);
2326     }
2327   return scope;
2328 }
2329
2330 /* Helper function to value_of_root.  */
2331
2332 static struct value *
2333 value_of_root_1 (struct varobj **var_handle)
2334 {
2335   struct value *new_val = NULL;
2336   struct varobj *var = *var_handle;
2337   int within_scope = 0;
2338   struct cleanup *back_to;
2339                                                                  
2340   /*  Only root variables can be updated...  */
2341   if (!is_root_p (var))
2342     /* Not a root var.  */
2343     return NULL;
2344
2345   back_to = make_cleanup_restore_current_thread ();
2346
2347   /* Determine whether the variable is still around.  */
2348   if (var->root->valid_block == NULL || var->root->floating)
2349     within_scope = 1;
2350   else if (var->root->thread_id == 0)
2351     {
2352       /* The program was single-threaded when the variable object was
2353          created.  Technically, it's possible that the program became
2354          multi-threaded since then, but we don't support such
2355          scenario yet.  */
2356       within_scope = check_scope (var);   
2357     }
2358   else
2359     {
2360       ptid_t ptid = thread_id_to_pid (var->root->thread_id);
2361       if (in_thread_list (ptid))
2362         {
2363           switch_to_thread (ptid);
2364           within_scope = check_scope (var);
2365         }
2366     }
2367
2368   if (within_scope)
2369     {
2370       volatile struct gdb_exception except;
2371
2372       /* We need to catch errors here, because if evaluate
2373          expression fails we want to just return NULL.  */
2374       TRY_CATCH (except, RETURN_MASK_ERROR)
2375         {
2376           new_val = evaluate_expression (var->root->exp);
2377         }
2378     }
2379
2380   do_cleanups (back_to);
2381
2382   return new_val;
2383 }
2384
2385 /* What is the ``struct value *'' of the root variable VAR?
2386    For floating variable object, evaluation can get us a value
2387    of different type from what is stored in varobj already.  In
2388    that case:
2389    - *type_changed will be set to 1
2390    - old varobj will be freed, and new one will be
2391    created, with the same name.
2392    - *var_handle will be set to the new varobj 
2393    Otherwise, *type_changed will be set to 0.  */
2394 static struct value *
2395 value_of_root (struct varobj **var_handle, int *type_changed)
2396 {
2397   struct varobj *var;
2398
2399   if (var_handle == NULL)
2400     return NULL;
2401
2402   var = *var_handle;
2403
2404   /* This should really be an exception, since this should
2405      only get called with a root variable.  */
2406
2407   if (!is_root_p (var))
2408     return NULL;
2409
2410   if (var->root->floating)
2411     {
2412       struct varobj *tmp_var;
2413       char *old_type, *new_type;
2414
2415       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2416                                USE_SELECTED_FRAME);
2417       if (tmp_var == NULL)
2418         {
2419           return NULL;
2420         }
2421       old_type = varobj_get_type (var);
2422       new_type = varobj_get_type (tmp_var);
2423       if (strcmp (old_type, new_type) == 0)
2424         {
2425           /* The expression presently stored inside var->root->exp
2426              remembers the locations of local variables relatively to
2427              the frame where the expression was created (in DWARF location
2428              button, for example).  Naturally, those locations are not
2429              correct in other frames, so update the expression.  */
2430
2431          struct expression *tmp_exp = var->root->exp;
2432
2433          var->root->exp = tmp_var->root->exp;
2434          tmp_var->root->exp = tmp_exp;
2435
2436           varobj_delete (tmp_var, NULL, 0);
2437           *type_changed = 0;
2438         }
2439       else
2440         {
2441           tmp_var->obj_name = xstrdup (var->obj_name);
2442           tmp_var->from = var->from;
2443           tmp_var->to = var->to;
2444           varobj_delete (var, NULL, 0);
2445
2446           install_variable (tmp_var);
2447           *var_handle = tmp_var;
2448           var = *var_handle;
2449           *type_changed = 1;
2450         }
2451       xfree (old_type);
2452       xfree (new_type);
2453     }
2454   else
2455     {
2456       *type_changed = 0;
2457     }
2458
2459   {
2460     struct value *value;
2461
2462     value = value_of_root_1 (var_handle);
2463     if (var->value == NULL || value == NULL)
2464       {
2465         /* For root varobj-s, a NULL value indicates a scoping issue.
2466            So, nothing to do in terms of checking for mutations.  */
2467       }
2468     else if (varobj_value_has_mutated (var, value, value_type (value)))
2469       {
2470         /* The type has mutated, so the children are no longer valid.
2471            Just delete them, and tell our caller that the type has
2472            changed.  */
2473         varobj_delete (var, NULL, 1 /* only_children */);
2474         var->num_children = -1;
2475         var->to = -1;
2476         var->from = -1;
2477         *type_changed = 1;
2478       }
2479     return value;
2480   }
2481 }
2482
2483 /* What is the ``struct value *'' for the INDEX'th child of PARENT?  */
2484 static struct value *
2485 value_of_child (struct varobj *parent, int index)
2486 {
2487   struct value *value;
2488
2489   value = (*parent->root->lang_ops->value_of_child) (parent, index);
2490
2491   return value;
2492 }
2493
2494 /* GDB already has a command called "value_of_variable".  Sigh.  */
2495 static char *
2496 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2497 {
2498   if (var->root->is_valid)
2499     {
2500       if (var->dynamic->pretty_printer != NULL)
2501         return varobj_value_get_print_value (var->value, var->format, var);
2502       return (*var->root->lang_ops->value_of_variable) (var, format);
2503     }
2504   else
2505     return NULL;
2506 }
2507
2508 void
2509 varobj_formatted_print_options (struct value_print_options *opts,
2510                                 enum varobj_display_formats format)
2511 {
2512   get_formatted_print_options (opts, format_code[(int) format]);
2513   opts->deref_ref = 0;
2514   opts->raw = 1;
2515 }
2516
2517 char *
2518 varobj_value_get_print_value (struct value *value,
2519                               enum varobj_display_formats format,
2520                               const struct varobj *var)
2521 {
2522   struct ui_file *stb;
2523   struct cleanup *old_chain;
2524   char *thevalue = NULL;
2525   struct value_print_options opts;
2526   struct type *type = NULL;
2527   long len = 0;
2528   char *encoding = NULL;
2529   struct gdbarch *gdbarch = NULL;
2530   /* Initialize it just to avoid a GCC false warning.  */
2531   CORE_ADDR str_addr = 0;
2532   int string_print = 0;
2533
2534   if (value == NULL)
2535     return NULL;
2536
2537   stb = mem_fileopen ();
2538   old_chain = make_cleanup_ui_file_delete (stb);
2539
2540   gdbarch = get_type_arch (value_type (value));
2541 #if HAVE_PYTHON
2542   if (gdb_python_initialized)
2543     {
2544       PyObject *value_formatter =  var->dynamic->pretty_printer;
2545
2546       varobj_ensure_python_env (var);
2547
2548       if (value_formatter)
2549         {
2550           /* First check to see if we have any children at all.  If so,
2551              we simply return {...}.  */
2552           if (dynamic_varobj_has_child_method (var))
2553             {
2554               do_cleanups (old_chain);
2555               return xstrdup ("{...}");
2556             }
2557
2558           if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2559             {
2560               struct value *replacement;
2561               PyObject *output = NULL;
2562
2563               output = apply_varobj_pretty_printer (value_formatter,
2564                                                     &replacement,
2565                                                     stb);
2566
2567               /* If we have string like output ...  */
2568               if (output)
2569                 {
2570                   make_cleanup_py_decref (output);
2571
2572                   /* If this is a lazy string, extract it.  For lazy
2573                      strings we always print as a string, so set
2574                      string_print.  */
2575                   if (gdbpy_is_lazy_string (output))
2576                     {
2577                       gdbpy_extract_lazy_string (output, &str_addr, &type,
2578                                                  &len, &encoding);
2579                       make_cleanup (free_current_contents, &encoding);
2580                       string_print = 1;
2581                     }
2582                   else
2583                     {
2584                       /* If it is a regular (non-lazy) string, extract
2585                          it and copy the contents into THEVALUE.  If the
2586                          hint says to print it as a string, set
2587                          string_print.  Otherwise just return the extracted
2588                          string as a value.  */
2589
2590                       char *s = python_string_to_target_string (output);
2591
2592                       if (s)
2593                         {
2594                           char *hint;
2595
2596                           hint = gdbpy_get_display_hint (value_formatter);
2597                           if (hint)
2598                             {
2599                               if (!strcmp (hint, "string"))
2600                                 string_print = 1;
2601                               xfree (hint);
2602                             }
2603
2604                           len = strlen (s);
2605                           thevalue = xmemdup (s, len + 1, len + 1);
2606                           type = builtin_type (gdbarch)->builtin_char;
2607                           xfree (s);
2608
2609                           if (!string_print)
2610                             {
2611                               do_cleanups (old_chain);
2612                               return thevalue;
2613                             }
2614
2615                           make_cleanup (xfree, thevalue);
2616                         }
2617                       else
2618                         gdbpy_print_stack ();
2619                     }
2620                 }
2621               /* If the printer returned a replacement value, set VALUE
2622                  to REPLACEMENT.  If there is not a replacement value,
2623                  just use the value passed to this function.  */
2624               if (replacement)
2625                 value = replacement;
2626             }
2627         }
2628     }
2629 #endif
2630
2631   varobj_formatted_print_options (&opts, format);
2632
2633   /* If the THEVALUE has contents, it is a regular string.  */
2634   if (thevalue)
2635     LA_PRINT_STRING (stb, type, (gdb_byte *) thevalue, len, encoding, 0, &opts);
2636   else if (string_print)
2637     /* Otherwise, if string_print is set, and it is not a regular
2638        string, it is a lazy string.  */
2639     val_print_string (type, encoding, str_addr, len, stb, &opts);
2640   else
2641     /* All other cases.  */
2642     common_val_print (value, stb, 0, &opts, current_language);
2643
2644   thevalue = ui_file_xstrdup (stb, NULL);
2645
2646   do_cleanups (old_chain);
2647   return thevalue;
2648 }
2649
2650 int
2651 varobj_editable_p (const struct varobj *var)
2652 {
2653   struct type *type;
2654
2655   if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2656     return 0;
2657
2658   type = varobj_get_value_type (var);
2659
2660   switch (TYPE_CODE (type))
2661     {
2662     case TYPE_CODE_STRUCT:
2663     case TYPE_CODE_UNION:
2664     case TYPE_CODE_ARRAY:
2665     case TYPE_CODE_FUNC:
2666     case TYPE_CODE_METHOD:
2667       return 0;
2668       break;
2669
2670     default:
2671       return 1;
2672       break;
2673     }
2674 }
2675
2676 /* Call VAR's value_is_changeable_p language-specific callback.  */
2677
2678 int
2679 varobj_value_is_changeable_p (const struct varobj *var)
2680 {
2681   return var->root->lang_ops->value_is_changeable_p (var);
2682 }
2683
2684 /* Return 1 if that varobj is floating, that is is always evaluated in the
2685    selected frame, and not bound to thread/frame.  Such variable objects
2686    are created using '@' as frame specifier to -var-create.  */
2687 int
2688 varobj_floating_p (const struct varobj *var)
2689 {
2690   return var->root->floating;
2691 }
2692
2693 /* Implement the "value_is_changeable_p" varobj callback for most
2694    languages.  */
2695
2696 int
2697 varobj_default_value_is_changeable_p (const struct varobj *var)
2698 {
2699   int r;
2700   struct type *type;
2701
2702   if (CPLUS_FAKE_CHILD (var))
2703     return 0;
2704
2705   type = varobj_get_value_type (var);
2706
2707   switch (TYPE_CODE (type))
2708     {
2709     case TYPE_CODE_STRUCT:
2710     case TYPE_CODE_UNION:
2711     case TYPE_CODE_ARRAY:
2712       r = 0;
2713       break;
2714
2715     default:
2716       r = 1;
2717     }
2718
2719   return r;
2720 }
2721
2722 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
2723    with an arbitrary caller supplied DATA pointer.  */
2724
2725 void
2726 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
2727 {
2728   struct varobj_root *var_root, *var_root_next;
2729
2730   /* Iterate "safely" - handle if the callee deletes its passed VAROBJ.  */
2731
2732   for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
2733     {
2734       var_root_next = var_root->next;
2735
2736       (*func) (var_root->rootvar, data);
2737     }
2738 }
2739
2740 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
2741    defined on globals.  It is a helper for varobj_invalidate.
2742
2743    This function is called after changing the symbol file, in this case the
2744    pointers to "struct type" stored by the varobj are no longer valid.  All
2745    varobj must be either re-evaluated, or marked as invalid here.  */
2746
2747 static void
2748 varobj_invalidate_iter (struct varobj *var, void *unused)
2749 {
2750   /* global and floating var must be re-evaluated.  */
2751   if (var->root->floating || var->root->valid_block == NULL)
2752     {
2753       struct varobj *tmp_var;
2754
2755       /* Try to create a varobj with same expression.  If we succeed
2756          replace the old varobj, otherwise invalidate it.  */
2757       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2758                                USE_CURRENT_FRAME);
2759       if (tmp_var != NULL) 
2760         { 
2761           tmp_var->obj_name = xstrdup (var->obj_name);
2762           varobj_delete (var, NULL, 0);
2763           install_variable (tmp_var);
2764         }
2765       else
2766         var->root->is_valid = 0;
2767     }
2768   else /* locals must be invalidated.  */
2769     var->root->is_valid = 0;
2770 }
2771
2772 /* Invalidate the varobjs that are tied to locals and re-create the ones that
2773    are defined on globals.
2774    Invalidated varobjs will be always printed in_scope="invalid".  */
2775
2776 void 
2777 varobj_invalidate (void)
2778 {
2779   all_root_varobjs (varobj_invalidate_iter, NULL);
2780 }
2781 \f
2782 extern void _initialize_varobj (void);
2783 void
2784 _initialize_varobj (void)
2785 {
2786   int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
2787
2788   varobj_table = xmalloc (sizeof_table);
2789   memset (varobj_table, 0, sizeof_table);
2790
2791   add_setshow_zuinteger_cmd ("varobj", class_maintenance,
2792                              &varobjdebug,
2793                              _("Set varobj debugging."),
2794                              _("Show varobj debugging."),
2795                              _("When non-zero, varobj debugging is enabled."),
2796                              NULL, show_varobjdebug,
2797                              &setdebuglist, &showdebuglist);
2798 }