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