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