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