gdb/
[platform/upstream/binutils.git] / gdb / varobj.c
1 /* Implementation of the GDB variable objects API.
2
3    Copyright (C) 1999-2012 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 "exceptions.h"
20 #include "value.h"
21 #include "expression.h"
22 #include "frame.h"
23 #include "language.h"
24 #include "gdbcmd.h"
25 #include "block.h"
26 #include "valprint.h"
27
28 #include "gdb_assert.h"
29 #include "gdb_string.h"
30 #include "gdb_regex.h"
31
32 #include "varobj.h"
33 #include "vec.h"
34 #include "gdbthread.h"
35 #include "inferior.h"
36 #include "ada-varobj.h"
37 #include "ada-lang.h"
38
39 #if HAVE_PYTHON
40 #include "python/python.h"
41 #include "python/python-internal.h"
42 #else
43 typedef int PyObject;
44 #endif
45
46 /* The names of varobjs representing anonymous structs or unions.  */
47 #define ANONYMOUS_STRUCT_NAME _("<anonymous struct>")
48 #define ANONYMOUS_UNION_NAME _("<anonymous union>")
49
50 /* Non-zero if we want to see trace of varobj level stuff.  */
51
52 int varobjdebug = 0;
53 static void
54 show_varobjdebug (struct ui_file *file, int from_tty,
55                   struct cmd_list_element *c, const char *value)
56 {
57   fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
58 }
59
60 /* String representations of gdb's format codes.  */
61 char *varobj_format_string[] =
62   { "natural", "binary", "decimal", "hexadecimal", "octal" };
63
64 /* String representations of gdb's known languages.  */
65 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
66
67 /* True if we want to allow Python-based pretty-printing.  */
68 static int pretty_printing = 0;
69
70 void
71 varobj_enable_pretty_printing (void)
72 {
73   pretty_printing = 1;
74 }
75
76 /* Data structures */
77
78 /* Every root variable has one of these structures saved in its
79    varobj.  Members which must be free'd are noted.  */
80 struct varobj_root
81 {
82
83   /* Alloc'd expression for this parent.  */
84   struct expression *exp;
85
86   /* Block for which this expression is valid.  */
87   struct block *valid_block;
88
89   /* The frame for this expression.  This field is set iff valid_block is
90      not NULL.  */
91   struct frame_id frame;
92
93   /* The thread ID that this varobj_root belong to.  This field
94      is only valid if valid_block is not NULL.
95      When not 0, indicates which thread 'frame' belongs to.
96      When 0, indicates that the thread list was empty when the varobj_root
97      was created.  */
98   int thread_id;
99
100   /* If 1, the -var-update always recomputes the value in the
101      current thread and frame.  Otherwise, variable object is
102      always updated in the specific scope/thread/frame.  */
103   int floating;
104
105   /* Flag that indicates validity: set to 0 when this varobj_root refers 
106      to symbols that do not exist anymore.  */
107   int is_valid;
108
109   /* Language info for this variable and its children.  */
110   struct language_specific *lang;
111
112   /* The varobj for this root node.  */
113   struct varobj *rootvar;
114
115   /* Next root variable */
116   struct varobj_root *next;
117 };
118
119 /* Every variable in the system has a structure of this type defined
120    for it.  This structure holds all information necessary to manipulate
121    a particular object variable.  Members which must be freed are noted.  */
122 struct varobj
123 {
124
125   /* Alloc'd name of the variable for this object.  If this variable is a
126      child, then this name will be the child's source name.
127      (bar, not foo.bar).  */
128   /* NOTE: This is the "expression".  */
129   char *name;
130
131   /* Alloc'd expression for this child.  Can be used to create a
132      root variable corresponding to this child.  */
133   char *path_expr;
134
135   /* The alloc'd name for this variable's object.  This is here for
136      convenience when constructing this object's children.  */
137   char *obj_name;
138
139   /* Index of this variable in its parent or -1.  */
140   int index;
141
142   /* The type of this variable.  This can be NULL
143      for artifial variable objects -- currently, the "accessibility" 
144      variable objects in C++.  */
145   struct type *type;
146
147   /* The value of this expression or subexpression.  A NULL value
148      indicates there was an error getting this value.
149      Invariant: if varobj_value_is_changeable_p (this) is non-zero, 
150      the value is either NULL, or not lazy.  */
151   struct value *value;
152
153   /* The number of (immediate) children this variable has.  */
154   int num_children;
155
156   /* If this object is a child, this points to its immediate parent.  */
157   struct varobj *parent;
158
159   /* Children of this object.  */
160   VEC (varobj_p) *children;
161
162   /* Whether the children of this varobj were requested.  This field is
163      used to decide if dynamic varobj should recompute their children.
164      In the event that the frontend never asked for the children, we
165      can avoid that.  */
166   int children_requested;
167
168   /* Description of the root variable.  Points to root variable for
169      children.  */
170   struct varobj_root *root;
171
172   /* The format of the output for this object.  */
173   enum varobj_display_formats format;
174
175   /* Was this variable updated via a varobj_set_value operation.  */
176   int updated;
177
178   /* Last print value.  */
179   char *print_value;
180
181   /* Is this variable frozen.  Frozen variables are never implicitly
182      updated by -var-update * 
183      or -var-update <direct-or-indirect-parent>.  */
184   int frozen;
185
186   /* Is the value of this variable intentionally not fetched?  It is
187      not fetched if either the variable is frozen, or any parents is
188      frozen.  */
189   int not_fetched;
190
191   /* Sub-range of children which the MI consumer has requested.  If
192      FROM < 0 or TO < 0, means that all children have been
193      requested.  */
194   int from;
195   int to;
196
197   /* The pretty-printer constructor.  If NULL, then the default
198      pretty-printer will be looked up.  If None, then no
199      pretty-printer will be installed.  */
200   PyObject *constructor;
201
202   /* The pretty-printer that has been constructed.  If NULL, then a
203      new printer object is needed, and one will be constructed.  */
204   PyObject *pretty_printer;
205
206   /* The iterator returned by the printer's 'children' method, or NULL
207      if not available.  */
208   PyObject *child_iter;
209
210   /* We request one extra item from the iterator, so that we can
211      report to the caller whether there are more items than we have
212      already reported.  However, we don't want to install this value
213      when we read it, because that will mess up future updates.  So,
214      we stash it here instead.  */
215   PyObject *saved_item;
216 };
217
218 struct cpstack
219 {
220   char *name;
221   struct cpstack *next;
222 };
223
224 /* A list of varobjs */
225
226 struct vlist
227 {
228   struct varobj *var;
229   struct vlist *next;
230 };
231
232 /* Private function prototypes */
233
234 /* Helper functions for the above subcommands.  */
235
236 static int delete_variable (struct cpstack **, struct varobj *, int);
237
238 static void delete_variable_1 (struct cpstack **, int *,
239                                struct varobj *, int, int);
240
241 static int install_variable (struct varobj *);
242
243 static void uninstall_variable (struct varobj *);
244
245 static struct varobj *create_child (struct varobj *, int, char *);
246
247 static struct varobj *
248 create_child_with_value (struct varobj *parent, int index, const char *name,
249                          struct value *value);
250
251 /* Utility routines */
252
253 static struct varobj *new_variable (void);
254
255 static struct varobj *new_root_variable (void);
256
257 static void free_variable (struct varobj *var);
258
259 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
260
261 static struct type *get_type (struct varobj *var);
262
263 static struct type *get_value_type (struct varobj *var);
264
265 static struct type *get_target_type (struct type *);
266
267 static enum varobj_display_formats variable_default_display (struct varobj *);
268
269 static void cppush (struct cpstack **pstack, char *name);
270
271 static char *cppop (struct cpstack **pstack);
272
273 static int update_type_if_necessary (struct varobj *var,
274                                      struct value *new_value);
275
276 static int install_new_value (struct varobj *var, struct value *value, 
277                               int initial);
278
279 /* Language-specific routines.  */
280
281 static enum varobj_languages variable_language (struct varobj *var);
282
283 static int number_of_children (struct varobj *);
284
285 static char *name_of_variable (struct varobj *);
286
287 static char *name_of_child (struct varobj *, int);
288
289 static struct value *value_of_root (struct varobj **var_handle, int *);
290
291 static struct value *value_of_child (struct varobj *parent, int index);
292
293 static char *my_value_of_variable (struct varobj *var,
294                                    enum varobj_display_formats format);
295
296 static char *value_get_print_value (struct value *value,
297                                     enum varobj_display_formats format,
298                                     struct varobj *var);
299
300 static int varobj_value_is_changeable_p (struct varobj *var);
301
302 static int is_root_p (struct varobj *var);
303
304 #if HAVE_PYTHON
305
306 static struct varobj *varobj_add_child (struct varobj *var,
307                                         const char *name,
308                                         struct value *value);
309
310 #endif /* HAVE_PYTHON */
311
312 static int default_value_is_changeable_p (struct varobj *var);
313
314 /* C implementation */
315
316 static int c_number_of_children (struct varobj *var);
317
318 static char *c_name_of_variable (struct varobj *parent);
319
320 static char *c_name_of_child (struct varobj *parent, int index);
321
322 static char *c_path_expr_of_child (struct varobj *child);
323
324 static struct value *c_value_of_root (struct varobj **var_handle);
325
326 static struct value *c_value_of_child (struct varobj *parent, int index);
327
328 static struct type *c_type_of_child (struct varobj *parent, int index);
329
330 static char *c_value_of_variable (struct varobj *var,
331                                   enum varobj_display_formats format);
332
333 /* C++ implementation */
334
335 static int cplus_number_of_children (struct varobj *var);
336
337 static void cplus_class_num_children (struct type *type, int children[3]);
338
339 static char *cplus_name_of_variable (struct varobj *parent);
340
341 static char *cplus_name_of_child (struct varobj *parent, int index);
342
343 static char *cplus_path_expr_of_child (struct varobj *child);
344
345 static struct value *cplus_value_of_root (struct varobj **var_handle);
346
347 static struct value *cplus_value_of_child (struct varobj *parent, int index);
348
349 static struct type *cplus_type_of_child (struct varobj *parent, int index);
350
351 static char *cplus_value_of_variable (struct varobj *var,
352                                       enum varobj_display_formats format);
353
354 /* Java implementation */
355
356 static int java_number_of_children (struct varobj *var);
357
358 static char *java_name_of_variable (struct varobj *parent);
359
360 static char *java_name_of_child (struct varobj *parent, int index);
361
362 static char *java_path_expr_of_child (struct varobj *child);
363
364 static struct value *java_value_of_root (struct varobj **var_handle);
365
366 static struct value *java_value_of_child (struct varobj *parent, int index);
367
368 static struct type *java_type_of_child (struct varobj *parent, int index);
369
370 static char *java_value_of_variable (struct varobj *var,
371                                      enum varobj_display_formats format);
372
373 /* Ada implementation */
374
375 static int ada_number_of_children (struct varobj *var);
376
377 static char *ada_name_of_variable (struct varobj *parent);
378
379 static char *ada_name_of_child (struct varobj *parent, int index);
380
381 static char *ada_path_expr_of_child (struct varobj *child);
382
383 static struct value *ada_value_of_root (struct varobj **var_handle);
384
385 static struct value *ada_value_of_child (struct varobj *parent, int index);
386
387 static struct type *ada_type_of_child (struct varobj *parent, int index);
388
389 static char *ada_value_of_variable (struct varobj *var,
390                                     enum varobj_display_formats format);
391
392 static int ada_value_is_changeable_p (struct varobj *var);
393
394 static int ada_value_has_mutated (struct varobj *var, struct value *new_val,
395                                   struct type *new_type);
396
397 /* The language specific vector */
398
399 struct language_specific
400 {
401
402   /* The language of this variable.  */
403   enum varobj_languages language;
404
405   /* The number of children of PARENT.  */
406   int (*number_of_children) (struct varobj * parent);
407
408   /* The name (expression) of a root varobj.  */
409   char *(*name_of_variable) (struct varobj * parent);
410
411   /* The name of the INDEX'th child of PARENT.  */
412   char *(*name_of_child) (struct varobj * parent, int index);
413
414   /* Returns the rooted expression of CHILD, which is a variable
415      obtain that has some parent.  */
416   char *(*path_expr_of_child) (struct varobj * child);
417
418   /* The ``struct value *'' of the root variable ROOT.  */
419   struct value *(*value_of_root) (struct varobj ** root_handle);
420
421   /* The ``struct value *'' of the INDEX'th child of PARENT.  */
422   struct value *(*value_of_child) (struct varobj * parent, int index);
423
424   /* The type of the INDEX'th child of PARENT.  */
425   struct type *(*type_of_child) (struct varobj * parent, int index);
426
427   /* The current value of VAR.  */
428   char *(*value_of_variable) (struct varobj * var,
429                               enum varobj_display_formats format);
430
431   /* Return non-zero if changes in value of VAR must be detected and
432      reported by -var-update.  Return zero if -var-update should never
433      report changes of such values.  This makes sense for structures
434      (since the changes in children values will be reported separately),
435      or for artifical objects (like 'public' pseudo-field in C++).
436
437      Return value of 0 means that gdb need not call value_fetch_lazy
438      for the value of this variable object.  */
439   int (*value_is_changeable_p) (struct varobj *var);
440
441   /* Return nonzero if the type of VAR has mutated.
442
443      VAR's value is still the varobj's previous value, while NEW_VALUE
444      is VAR's new value and NEW_TYPE is the var's new type.  NEW_VALUE
445      may be NULL indicating that there is no value available (the varobj
446      may be out of scope, of may be the child of a null pointer, for
447      instance).  NEW_TYPE, on the other hand, must never be NULL.
448
449      This function should also be able to assume that var's number of
450      children is set (not < 0).
451
452      Languages where types do not mutate can set this to NULL.  */
453   int (*value_has_mutated) (struct varobj *var, struct value *new_value,
454                             struct type *new_type);
455 };
456
457 /* Array of known source language routines.  */
458 static struct language_specific languages[vlang_end] = {
459   /* Unknown (try treating as C).  */
460   {
461    vlang_unknown,
462    c_number_of_children,
463    c_name_of_variable,
464    c_name_of_child,
465    c_path_expr_of_child,
466    c_value_of_root,
467    c_value_of_child,
468    c_type_of_child,
469    c_value_of_variable,
470    default_value_is_changeable_p,
471    NULL /* value_has_mutated */}
472   ,
473   /* C */
474   {
475    vlang_c,
476    c_number_of_children,
477    c_name_of_variable,
478    c_name_of_child,
479    c_path_expr_of_child,
480    c_value_of_root,
481    c_value_of_child,
482    c_type_of_child,
483    c_value_of_variable,
484    default_value_is_changeable_p,
485    NULL /* value_has_mutated */}
486   ,
487   /* C++ */
488   {
489    vlang_cplus,
490    cplus_number_of_children,
491    cplus_name_of_variable,
492    cplus_name_of_child,
493    cplus_path_expr_of_child,
494    cplus_value_of_root,
495    cplus_value_of_child,
496    cplus_type_of_child,
497    cplus_value_of_variable,
498    default_value_is_changeable_p,
499    NULL /* value_has_mutated */}
500   ,
501   /* Java */
502   {
503    vlang_java,
504    java_number_of_children,
505    java_name_of_variable,
506    java_name_of_child,
507    java_path_expr_of_child,
508    java_value_of_root,
509    java_value_of_child,
510    java_type_of_child,
511    java_value_of_variable,
512    default_value_is_changeable_p,
513    NULL /* value_has_mutated */},
514   /* Ada */
515   {
516    vlang_ada,
517    ada_number_of_children,
518    ada_name_of_variable,
519    ada_name_of_child,
520    ada_path_expr_of_child,
521    ada_value_of_root,
522    ada_value_of_child,
523    ada_type_of_child,
524    ada_value_of_variable,
525    ada_value_is_changeable_p,
526    ada_value_has_mutated}
527 };
528
529 /* A little convenience enum for dealing with C++/Java.  */
530 enum vsections
531 {
532   v_public = 0, v_private, v_protected
533 };
534
535 /* Private data */
536
537 /* Mappings of varobj_display_formats enums to gdb's format codes.  */
538 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
539
540 /* Header of the list of root variable objects.  */
541 static struct varobj_root *rootlist;
542
543 /* Prime number indicating the number of buckets in the hash table.  */
544 /* A prime large enough to avoid too many colisions.  */
545 #define VAROBJ_TABLE_SIZE 227
546
547 /* Pointer to the varobj hash table (built at run time).  */
548 static struct vlist **varobj_table;
549
550 /* Is the variable X one of our "fake" children?  */
551 #define CPLUS_FAKE_CHILD(x) \
552 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
553 \f
554
555 /* API Implementation */
556 static int
557 is_root_p (struct varobj *var)
558 {
559   return (var->root->rootvar == var);
560 }
561
562 #ifdef HAVE_PYTHON
563 /* Helper function to install a Python environment suitable for
564    use during operations on VAR.  */
565 static struct cleanup *
566 varobj_ensure_python_env (struct varobj *var)
567 {
568   return ensure_python_env (var->root->exp->gdbarch,
569                             var->root->exp->language_defn);
570 }
571 #endif
572
573 /* Creates a varobj (not its children).  */
574
575 /* Return the full FRAME which corresponds to the given CORE_ADDR
576    or NULL if no FRAME on the chain corresponds to CORE_ADDR.  */
577
578 static struct frame_info *
579 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
580 {
581   struct frame_info *frame = NULL;
582
583   if (frame_addr == (CORE_ADDR) 0)
584     return NULL;
585
586   for (frame = get_current_frame ();
587        frame != NULL;
588        frame = get_prev_frame (frame))
589     {
590       /* The CORE_ADDR we get as argument was parsed from a string GDB
591          output as $fp.  This output got truncated to gdbarch_addr_bit.
592          Truncate the frame base address in the same manner before
593          comparing it against our argument.  */
594       CORE_ADDR frame_base = get_frame_base_address (frame);
595       int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
596
597       if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
598         frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
599
600       if (frame_base == frame_addr)
601         return frame;
602     }
603
604   return NULL;
605 }
606
607 struct varobj *
608 varobj_create (char *objname,
609                char *expression, CORE_ADDR frame, enum varobj_type type)
610 {
611   struct varobj *var;
612   struct cleanup *old_chain;
613
614   /* Fill out a varobj structure for the (root) variable being constructed.  */
615   var = new_root_variable ();
616   old_chain = make_cleanup_free_variable (var);
617
618   if (expression != NULL)
619     {
620       struct frame_info *fi;
621       struct frame_id old_id = null_frame_id;
622       struct block *block;
623       char *p;
624       enum varobj_languages lang;
625       struct value *value = NULL;
626       volatile struct gdb_exception except;
627
628       /* Parse and evaluate the expression, filling in as much of the
629          variable's data as possible.  */
630
631       if (has_stack_frames ())
632         {
633           /* Allow creator to specify context of variable.  */
634           if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
635             fi = get_selected_frame (NULL);
636           else
637             /* FIXME: cagney/2002-11-23: This code should be doing a
638                lookup using the frame ID and not just the frame's
639                ``address''.  This, of course, means an interface
640                change.  However, with out that interface change ISAs,
641                such as the ia64 with its two stacks, won't work.
642                Similar goes for the case where there is a frameless
643                function.  */
644             fi = find_frame_addr_in_frame_chain (frame);
645         }
646       else
647         fi = NULL;
648
649       /* frame = -2 means always use selected frame.  */
650       if (type == USE_SELECTED_FRAME)
651         var->root->floating = 1;
652
653       block = NULL;
654       if (fi != NULL)
655         block = get_frame_block (fi, 0);
656
657       p = expression;
658       innermost_block = NULL;
659       /* Wrap the call to parse expression, so we can 
660          return a sensible error.  */
661       TRY_CATCH (except, RETURN_MASK_ERROR)
662         {
663           var->root->exp = parse_exp_1 (&p, block, 0);
664         }
665
666       if (except.reason < 0)
667         {
668           do_cleanups (old_chain);
669           return NULL;
670         }
671
672       /* Don't allow variables to be created for types.  */
673       if (var->root->exp->elts[0].opcode == OP_TYPE)
674         {
675           do_cleanups (old_chain);
676           fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
677                               " as an expression.\n");
678           return NULL;
679         }
680
681       var->format = variable_default_display (var);
682       var->root->valid_block = innermost_block;
683       var->name = xstrdup (expression);
684       /* For a root var, the name and the expr are the same.  */
685       var->path_expr = xstrdup (expression);
686
687       /* When the frame is different from the current frame, 
688          we must select the appropriate frame before parsing
689          the expression, otherwise the value will not be current.
690          Since select_frame is so benign, just call it for all cases.  */
691       if (innermost_block)
692         {
693           /* User could specify explicit FRAME-ADDR which was not found but
694              EXPRESSION is frame specific and we would not be able to evaluate
695              it correctly next time.  With VALID_BLOCK set we must also set
696              FRAME and THREAD_ID.  */
697           if (fi == NULL)
698             error (_("Failed to find the specified frame"));
699
700           var->root->frame = get_frame_id (fi);
701           var->root->thread_id = pid_to_thread_id (inferior_ptid);
702           old_id = get_frame_id (get_selected_frame (NULL));
703           select_frame (fi);     
704         }
705
706       /* We definitely need to catch errors here.
707          If evaluate_expression succeeds we got the value we wanted.
708          But if it fails, we still go on with a call to evaluate_type().  */
709       TRY_CATCH (except, RETURN_MASK_ERROR)
710         {
711           value = evaluate_expression (var->root->exp);
712         }
713
714       if (except.reason < 0)
715         {
716           /* Error getting the value.  Try to at least get the
717              right type.  */
718           struct value *type_only_value = evaluate_type (var->root->exp);
719
720           var->type = value_type (type_only_value);
721         }
722         else
723           {
724             int real_type_found = 0;
725
726             var->type = value_actual_type (value, 0, &real_type_found);
727             if (real_type_found)
728               value = value_cast (var->type, value);
729           }
730
731       /* Set language info */
732       lang = variable_language (var);
733       var->root->lang = &languages[lang];
734
735       install_new_value (var, value, 1 /* Initial assignment */);
736
737       /* Set ourselves as our root.  */
738       var->root->rootvar = var;
739
740       /* Reset the selected frame.  */
741       if (frame_id_p (old_id))
742         select_frame (frame_find_by_id (old_id));
743     }
744
745   /* If the variable object name is null, that means this
746      is a temporary variable, so don't install it.  */
747
748   if ((var != NULL) && (objname != NULL))
749     {
750       var->obj_name = xstrdup (objname);
751
752       /* If a varobj name is duplicated, the install will fail so
753          we must cleanup.  */
754       if (!install_variable (var))
755         {
756           do_cleanups (old_chain);
757           return NULL;
758         }
759     }
760
761   discard_cleanups (old_chain);
762   return var;
763 }
764
765 /* Generates an unique name that can be used for a varobj.  */
766
767 char *
768 varobj_gen_name (void)
769 {
770   static int id = 0;
771   char *obj_name;
772
773   /* Generate a name for this object.  */
774   id++;
775   obj_name = xstrprintf ("var%d", id);
776
777   return obj_name;
778 }
779
780 /* Given an OBJNAME, returns the pointer to the corresponding varobj.  Call
781    error if OBJNAME cannot be found.  */
782
783 struct varobj *
784 varobj_get_handle (char *objname)
785 {
786   struct vlist *cv;
787   const char *chp;
788   unsigned int index = 0;
789   unsigned int i = 1;
790
791   for (chp = objname; *chp; chp++)
792     {
793       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
794     }
795
796   cv = *(varobj_table + index);
797   while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
798     cv = cv->next;
799
800   if (cv == NULL)
801     error (_("Variable object not found"));
802
803   return cv->var;
804 }
805
806 /* Given the handle, return the name of the object.  */
807
808 char *
809 varobj_get_objname (struct varobj *var)
810 {
811   return var->obj_name;
812 }
813
814 /* Given the handle, return the expression represented by the object.  */
815
816 char *
817 varobj_get_expression (struct varobj *var)
818 {
819   return name_of_variable (var);
820 }
821
822 /* Deletes a varobj and all its children if only_children == 0,
823    otherwise deletes only the children; returns a malloc'ed list of
824    all the (malloc'ed) names of the variables that have been deleted
825    (NULL terminated).  */
826
827 int
828 varobj_delete (struct varobj *var, char ***dellist, int only_children)
829 {
830   int delcount;
831   int mycount;
832   struct cpstack *result = NULL;
833   char **cp;
834
835   /* Initialize a stack for temporary results.  */
836   cppush (&result, NULL);
837
838   if (only_children)
839     /* Delete only the variable children.  */
840     delcount = delete_variable (&result, var, 1 /* only the children */ );
841   else
842     /* Delete the variable and all its children.  */
843     delcount = delete_variable (&result, var, 0 /* parent+children */ );
844
845   /* We may have been asked to return a list of what has been deleted.  */
846   if (dellist != NULL)
847     {
848       *dellist = xmalloc ((delcount + 1) * sizeof (char *));
849
850       cp = *dellist;
851       mycount = delcount;
852       *cp = cppop (&result);
853       while ((*cp != NULL) && (mycount > 0))
854         {
855           mycount--;
856           cp++;
857           *cp = cppop (&result);
858         }
859
860       if (mycount || (*cp != NULL))
861         warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
862                  mycount);
863     }
864
865   return delcount;
866 }
867
868 #if HAVE_PYTHON
869
870 /* Convenience function for varobj_set_visualizer.  Instantiate a
871    pretty-printer for a given value.  */
872 static PyObject *
873 instantiate_pretty_printer (PyObject *constructor, struct value *value)
874 {
875   PyObject *val_obj = NULL; 
876   PyObject *printer;
877
878   val_obj = value_to_value_object (value);
879   if (! val_obj)
880     return NULL;
881
882   printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
883   Py_DECREF (val_obj);
884   return printer;
885 }
886
887 #endif
888
889 /* Set/Get variable object display format.  */
890
891 enum varobj_display_formats
892 varobj_set_display_format (struct varobj *var,
893                            enum varobj_display_formats format)
894 {
895   switch (format)
896     {
897     case FORMAT_NATURAL:
898     case FORMAT_BINARY:
899     case FORMAT_DECIMAL:
900     case FORMAT_HEXADECIMAL:
901     case FORMAT_OCTAL:
902       var->format = format;
903       break;
904
905     default:
906       var->format = variable_default_display (var);
907     }
908
909   if (varobj_value_is_changeable_p (var) 
910       && var->value && !value_lazy (var->value))
911     {
912       xfree (var->print_value);
913       var->print_value = value_get_print_value (var->value, var->format, var);
914     }
915
916   return var->format;
917 }
918
919 enum varobj_display_formats
920 varobj_get_display_format (struct varobj *var)
921 {
922   return var->format;
923 }
924
925 char *
926 varobj_get_display_hint (struct varobj *var)
927 {
928   char *result = NULL;
929
930 #if HAVE_PYTHON
931   struct cleanup *back_to = varobj_ensure_python_env (var);
932
933   if (var->pretty_printer)
934     result = gdbpy_get_display_hint (var->pretty_printer);
935
936   do_cleanups (back_to);
937 #endif
938
939   return result;
940 }
941
942 /* Return true if the varobj has items after TO, false otherwise.  */
943
944 int
945 varobj_has_more (struct varobj *var, int to)
946 {
947   if (VEC_length (varobj_p, var->children) > to)
948     return 1;
949   return ((to == -1 || VEC_length (varobj_p, var->children) == to)
950           && var->saved_item != NULL);
951 }
952
953 /* If the variable object is bound to a specific thread, that
954    is its evaluation can always be done in context of a frame
955    inside that thread, returns GDB id of the thread -- which
956    is always positive.  Otherwise, returns -1.  */
957 int
958 varobj_get_thread_id (struct varobj *var)
959 {
960   if (var->root->valid_block && var->root->thread_id > 0)
961     return var->root->thread_id;
962   else
963     return -1;
964 }
965
966 void
967 varobj_set_frozen (struct varobj *var, int frozen)
968 {
969   /* When a variable is unfrozen, we don't fetch its value.
970      The 'not_fetched' flag remains set, so next -var-update
971      won't complain.
972
973      We don't fetch the value, because for structures the client
974      should do -var-update anyway.  It would be bad to have different
975      client-size logic for structure and other types.  */
976   var->frozen = frozen;
977 }
978
979 int
980 varobj_get_frozen (struct varobj *var)
981 {
982   return var->frozen;
983 }
984
985 /* A helper function that restricts a range to what is actually
986    available in a VEC.  This follows the usual rules for the meaning
987    of FROM and TO -- if either is negative, the entire range is
988    used.  */
989
990 static void
991 restrict_range (VEC (varobj_p) *children, int *from, int *to)
992 {
993   if (*from < 0 || *to < 0)
994     {
995       *from = 0;
996       *to = VEC_length (varobj_p, children);
997     }
998   else
999     {
1000       if (*from > VEC_length (varobj_p, children))
1001         *from = VEC_length (varobj_p, children);
1002       if (*to > VEC_length (varobj_p, children))
1003         *to = VEC_length (varobj_p, children);
1004       if (*from > *to)
1005         *from = *to;
1006     }
1007 }
1008
1009 #if HAVE_PYTHON
1010
1011 /* A helper for update_dynamic_varobj_children that installs a new
1012    child when needed.  */
1013
1014 static void
1015 install_dynamic_child (struct varobj *var,
1016                        VEC (varobj_p) **changed,
1017                        VEC (varobj_p) **type_changed,
1018                        VEC (varobj_p) **new,
1019                        VEC (varobj_p) **unchanged,
1020                        int *cchanged,
1021                        int index,
1022                        const char *name,
1023                        struct value *value)
1024 {
1025   if (VEC_length (varobj_p, var->children) < index + 1)
1026     {
1027       /* There's no child yet.  */
1028       struct varobj *child = varobj_add_child (var, name, value);
1029
1030       if (new)
1031         {
1032           VEC_safe_push (varobj_p, *new, child);
1033           *cchanged = 1;
1034         }
1035     }
1036   else 
1037     {
1038       varobj_p existing = VEC_index (varobj_p, var->children, index);
1039
1040       int type_updated = update_type_if_necessary (existing, value);
1041       if (type_updated)
1042         {
1043           if (type_changed)
1044             VEC_safe_push (varobj_p, *type_changed, existing);
1045         }
1046       if (install_new_value (existing, value, 0))
1047         {
1048           if (!type_updated && changed)
1049             VEC_safe_push (varobj_p, *changed, existing);
1050         }
1051       else if (!type_updated && unchanged)
1052         VEC_safe_push (varobj_p, *unchanged, existing);
1053     }
1054 }
1055
1056 static int
1057 dynamic_varobj_has_child_method (struct varobj *var)
1058 {
1059   struct cleanup *back_to;
1060   PyObject *printer = var->pretty_printer;
1061   int result;
1062
1063   back_to = varobj_ensure_python_env (var);
1064   result = PyObject_HasAttr (printer, gdbpy_children_cst);
1065   do_cleanups (back_to);
1066   return result;
1067 }
1068
1069 #endif
1070
1071 static int
1072 update_dynamic_varobj_children (struct varobj *var,
1073                                 VEC (varobj_p) **changed,
1074                                 VEC (varobj_p) **type_changed,
1075                                 VEC (varobj_p) **new,
1076                                 VEC (varobj_p) **unchanged,
1077                                 int *cchanged,
1078                                 int update_children,
1079                                 int from,
1080                                 int to)
1081 {
1082 #if HAVE_PYTHON
1083   struct cleanup *back_to;
1084   PyObject *children;
1085   int i;
1086   PyObject *printer = var->pretty_printer;
1087
1088   back_to = varobj_ensure_python_env (var);
1089
1090   *cchanged = 0;
1091   if (!PyObject_HasAttr (printer, gdbpy_children_cst))
1092     {
1093       do_cleanups (back_to);
1094       return 0;
1095     }
1096
1097   if (update_children || !var->child_iter)
1098     {
1099       children = PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
1100                                              NULL);
1101
1102       if (!children)
1103         {
1104           gdbpy_print_stack ();
1105           error (_("Null value returned for children"));
1106         }
1107
1108       make_cleanup_py_decref (children);
1109
1110       if (!PyIter_Check (children))
1111         error (_("Returned value is not iterable"));
1112
1113       Py_XDECREF (var->child_iter);
1114       var->child_iter = PyObject_GetIter (children);
1115       if (!var->child_iter)
1116         {
1117           gdbpy_print_stack ();
1118           error (_("Could not get children iterator"));
1119         }
1120
1121       Py_XDECREF (var->saved_item);
1122       var->saved_item = NULL;
1123
1124       i = 0;
1125     }
1126   else
1127     i = VEC_length (varobj_p, var->children);
1128
1129   /* We ask for one extra child, so that MI can report whether there
1130      are more children.  */
1131   for (; to < 0 || i < to + 1; ++i)
1132     {
1133       PyObject *item;
1134       int force_done = 0;
1135
1136       /* See if there was a leftover from last time.  */
1137       if (var->saved_item)
1138         {
1139           item = var->saved_item;
1140           var->saved_item = NULL;
1141         }
1142       else
1143         item = PyIter_Next (var->child_iter);
1144
1145       if (!item)
1146         {
1147           /* Normal end of iteration.  */
1148           if (!PyErr_Occurred ())
1149             break;
1150
1151           /* If we got a memory error, just use the text as the
1152              item.  */
1153           if (PyErr_ExceptionMatches (gdbpy_gdb_memory_error))
1154             {
1155               PyObject *type, *value, *trace;
1156               char *name_str, *value_str;
1157
1158               PyErr_Fetch (&type, &value, &trace);
1159               value_str = gdbpy_exception_to_string (type, value);
1160               Py_XDECREF (type);
1161               Py_XDECREF (value);
1162               Py_XDECREF (trace);
1163               if (!value_str)
1164                 {
1165                   gdbpy_print_stack ();
1166                   break;
1167                 }
1168
1169               name_str = xstrprintf ("<error at %d>", i);
1170               item = Py_BuildValue ("(ss)", name_str, value_str);
1171               xfree (name_str);
1172               xfree (value_str);
1173               if (!item)
1174                 {
1175                   gdbpy_print_stack ();
1176                   break;
1177                 }
1178
1179               force_done = 1;
1180             }
1181           else
1182             {
1183               /* Any other kind of error.  */
1184               gdbpy_print_stack ();
1185               break;
1186             }
1187         }
1188
1189       /* We don't want to push the extra child on any report list.  */
1190       if (to < 0 || i < to)
1191         {
1192           PyObject *py_v;
1193           const char *name;
1194           struct value *v;
1195           struct cleanup *inner;
1196           int can_mention = from < 0 || i >= from;
1197
1198           inner = make_cleanup_py_decref (item);
1199
1200           if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
1201             {
1202               gdbpy_print_stack ();
1203               error (_("Invalid item from the child list"));
1204             }
1205
1206           v = convert_value_from_python (py_v);
1207           if (v == NULL)
1208             gdbpy_print_stack ();
1209           install_dynamic_child (var, can_mention ? changed : NULL,
1210                                  can_mention ? type_changed : NULL,
1211                                  can_mention ? new : NULL,
1212                                  can_mention ? unchanged : NULL,
1213                                  can_mention ? cchanged : NULL, i, name, v);
1214           do_cleanups (inner);
1215         }
1216       else
1217         {
1218           Py_XDECREF (var->saved_item);
1219           var->saved_item = item;
1220
1221           /* We want to truncate the child list just before this
1222              element.  */
1223           break;
1224         }
1225
1226       if (force_done)
1227         break;
1228     }
1229
1230   if (i < VEC_length (varobj_p, var->children))
1231     {
1232       int j;
1233
1234       *cchanged = 1;
1235       for (j = i; j < VEC_length (varobj_p, var->children); ++j)
1236         varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0);
1237       VEC_truncate (varobj_p, var->children, i);
1238     }
1239
1240   /* If there are fewer children than requested, note that the list of
1241      children changed.  */
1242   if (to >= 0 && VEC_length (varobj_p, var->children) < to)
1243     *cchanged = 1;
1244
1245   var->num_children = VEC_length (varobj_p, var->children);
1246  
1247   do_cleanups (back_to);
1248
1249   return 1;
1250 #else
1251   gdb_assert (0 && "should never be called if Python is not enabled");
1252 #endif
1253 }
1254
1255 int
1256 varobj_get_num_children (struct varobj *var)
1257 {
1258   if (var->num_children == -1)
1259     {
1260       if (var->pretty_printer)
1261         {
1262           int dummy;
1263
1264           /* If we have a dynamic varobj, don't report -1 children.
1265              So, try to fetch some children first.  */
1266           update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL, &dummy,
1267                                           0, 0, 0);
1268         }
1269       else
1270         var->num_children = number_of_children (var);
1271     }
1272
1273   return var->num_children >= 0 ? var->num_children : 0;
1274 }
1275
1276 /* Creates a list of the immediate children of a variable object;
1277    the return code is the number of such children or -1 on error.  */
1278
1279 VEC (varobj_p)*
1280 varobj_list_children (struct varobj *var, int *from, int *to)
1281 {
1282   char *name;
1283   int i, children_changed;
1284
1285   var->children_requested = 1;
1286
1287   if (var->pretty_printer)
1288     {
1289       /* This, in theory, can result in the number of children changing without
1290          frontend noticing.  But well, calling -var-list-children on the same
1291          varobj twice is not something a sane frontend would do.  */
1292       update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL,
1293                                       &children_changed, 0, 0, *to);
1294       restrict_range (var->children, from, to);
1295       return var->children;
1296     }
1297
1298   if (var->num_children == -1)
1299     var->num_children = number_of_children (var);
1300
1301   /* If that failed, give up.  */
1302   if (var->num_children == -1)
1303     return var->children;
1304
1305   /* If we're called when the list of children is not yet initialized,
1306      allocate enough elements in it.  */
1307   while (VEC_length (varobj_p, var->children) < var->num_children)
1308     VEC_safe_push (varobj_p, var->children, NULL);
1309
1310   for (i = 0; i < var->num_children; i++)
1311     {
1312       varobj_p existing = VEC_index (varobj_p, var->children, i);
1313
1314       if (existing == NULL)
1315         {
1316           /* Either it's the first call to varobj_list_children for
1317              this variable object, and the child was never created,
1318              or it was explicitly deleted by the client.  */
1319           name = name_of_child (var, i);
1320           existing = create_child (var, i, name);
1321           VEC_replace (varobj_p, var->children, i, existing);
1322         }
1323     }
1324
1325   restrict_range (var->children, from, to);
1326   return var->children;
1327 }
1328
1329 #if HAVE_PYTHON
1330
1331 static struct varobj *
1332 varobj_add_child (struct varobj *var, const char *name, struct value *value)
1333 {
1334   varobj_p v = create_child_with_value (var, 
1335                                         VEC_length (varobj_p, var->children), 
1336                                         name, value);
1337
1338   VEC_safe_push (varobj_p, var->children, v);
1339   return v;
1340 }
1341
1342 #endif /* HAVE_PYTHON */
1343
1344 /* Obtain the type of an object Variable as a string similar to the one gdb
1345    prints on the console.  */
1346
1347 char *
1348 varobj_get_type (struct varobj *var)
1349 {
1350   /* For the "fake" variables, do not return a type.  (It's type is
1351      NULL, too.)
1352      Do not return a type for invalid variables as well.  */
1353   if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
1354     return NULL;
1355
1356   return type_to_string (var->type);
1357 }
1358
1359 /* Obtain the type of an object variable.  */
1360
1361 struct type *
1362 varobj_get_gdb_type (struct varobj *var)
1363 {
1364   return var->type;
1365 }
1366
1367 /* Is VAR a path expression parent, i.e., can it be used to construct
1368    a valid path expression?  */
1369
1370 static int
1371 is_path_expr_parent (struct varobj *var)
1372 {
1373   struct type *type;
1374
1375   /* "Fake" children are not path_expr parents.  */
1376   if (CPLUS_FAKE_CHILD (var))
1377     return 0;
1378
1379   type = get_value_type (var);
1380
1381   /* Anonymous unions and structs are also not path_expr parents.  */
1382   return !((TYPE_CODE (type) == TYPE_CODE_STRUCT
1383             || TYPE_CODE (type) == TYPE_CODE_UNION)
1384            && TYPE_NAME (type) == NULL);
1385 }
1386
1387 /* Return the path expression parent for VAR.  */
1388
1389 static struct varobj *
1390 get_path_expr_parent (struct varobj *var)
1391 {
1392   struct varobj *parent = var;
1393
1394   while (!is_root_p (parent) && !is_path_expr_parent (parent))
1395     parent = parent->parent;
1396
1397   return parent;
1398 }
1399
1400 /* Return a pointer to the full rooted expression of varobj VAR.
1401    If it has not been computed yet, compute it.  */
1402 char *
1403 varobj_get_path_expr (struct varobj *var)
1404 {
1405   if (var->path_expr != NULL)
1406     return var->path_expr;
1407   else 
1408     {
1409       /* For root varobjs, we initialize path_expr
1410          when creating varobj, so here it should be
1411          child varobj.  */
1412       gdb_assert (!is_root_p (var));
1413       return (*var->root->lang->path_expr_of_child) (var);
1414     }
1415 }
1416
1417 enum varobj_languages
1418 varobj_get_language (struct varobj *var)
1419 {
1420   return variable_language (var);
1421 }
1422
1423 int
1424 varobj_get_attributes (struct varobj *var)
1425 {
1426   int attributes = 0;
1427
1428   if (varobj_editable_p (var))
1429     /* FIXME: define masks for attributes.  */
1430     attributes |= 0x00000001;   /* Editable */
1431
1432   return attributes;
1433 }
1434
1435 int
1436 varobj_pretty_printed_p (struct varobj *var)
1437 {
1438   return var->pretty_printer != NULL;
1439 }
1440
1441 char *
1442 varobj_get_formatted_value (struct varobj *var,
1443                             enum varobj_display_formats format)
1444 {
1445   return my_value_of_variable (var, format);
1446 }
1447
1448 char *
1449 varobj_get_value (struct varobj *var)
1450 {
1451   return my_value_of_variable (var, var->format);
1452 }
1453
1454 /* Set the value of an object variable (if it is editable) to the
1455    value of the given expression.  */
1456 /* Note: Invokes functions that can call error().  */
1457
1458 int
1459 varobj_set_value (struct varobj *var, char *expression)
1460 {
1461   struct value *val = NULL; /* Initialize to keep gcc happy.  */
1462   /* The argument "expression" contains the variable's new value.
1463      We need to first construct a legal expression for this -- ugh!  */
1464   /* Does this cover all the bases?  */
1465   struct expression *exp;
1466   struct value *value = NULL; /* Initialize to keep gcc happy.  */
1467   int saved_input_radix = input_radix;
1468   char *s = expression;
1469   volatile struct gdb_exception except;
1470
1471   gdb_assert (varobj_editable_p (var));
1472
1473   input_radix = 10;             /* ALWAYS reset to decimal temporarily.  */
1474   exp = parse_exp_1 (&s, 0, 0);
1475   TRY_CATCH (except, RETURN_MASK_ERROR)
1476     {
1477       value = evaluate_expression (exp);
1478     }
1479
1480   if (except.reason < 0)
1481     {
1482       /* We cannot proceed without a valid expression.  */
1483       xfree (exp);
1484       return 0;
1485     }
1486
1487   /* All types that are editable must also be changeable.  */
1488   gdb_assert (varobj_value_is_changeable_p (var));
1489
1490   /* The value of a changeable variable object must not be lazy.  */
1491   gdb_assert (!value_lazy (var->value));
1492
1493   /* Need to coerce the input.  We want to check if the
1494      value of the variable object will be different
1495      after assignment, and the first thing value_assign
1496      does is coerce the input.
1497      For example, if we are assigning an array to a pointer variable we
1498      should compare the pointer with the array's address, not with the
1499      array's content.  */
1500   value = coerce_array (value);
1501
1502   /* The new value may be lazy.  value_assign, or
1503      rather value_contents, will take care of this.  */
1504   TRY_CATCH (except, RETURN_MASK_ERROR)
1505     {
1506       val = value_assign (var->value, value);
1507     }
1508
1509   if (except.reason < 0)
1510     return 0;
1511
1512   /* If the value has changed, record it, so that next -var-update can
1513      report this change.  If a variable had a value of '1', we've set it
1514      to '333' and then set again to '1', when -var-update will report this
1515      variable as changed -- because the first assignment has set the
1516      'updated' flag.  There's no need to optimize that, because return value
1517      of -var-update should be considered an approximation.  */
1518   var->updated = install_new_value (var, val, 0 /* Compare values.  */);
1519   input_radix = saved_input_radix;
1520   return 1;
1521 }
1522
1523 #if HAVE_PYTHON
1524
1525 /* A helper function to install a constructor function and visualizer
1526    in a varobj.  */
1527
1528 static void
1529 install_visualizer (struct varobj *var, PyObject *constructor,
1530                     PyObject *visualizer)
1531 {
1532   Py_XDECREF (var->constructor);
1533   var->constructor = constructor;
1534
1535   Py_XDECREF (var->pretty_printer);
1536   var->pretty_printer = visualizer;
1537
1538   Py_XDECREF (var->child_iter);
1539   var->child_iter = NULL;
1540 }
1541
1542 /* Install the default visualizer for VAR.  */
1543
1544 static void
1545 install_default_visualizer (struct varobj *var)
1546 {
1547   /* Do not install a visualizer on a CPLUS_FAKE_CHILD.  */
1548   if (CPLUS_FAKE_CHILD (var))
1549     return;
1550
1551   if (pretty_printing)
1552     {
1553       PyObject *pretty_printer = NULL;
1554
1555       if (var->value)
1556         {
1557           pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1558           if (! pretty_printer)
1559             {
1560               gdbpy_print_stack ();
1561               error (_("Cannot instantiate printer for default visualizer"));
1562             }
1563         }
1564       
1565       if (pretty_printer == Py_None)
1566         {
1567           Py_DECREF (pretty_printer);
1568           pretty_printer = NULL;
1569         }
1570   
1571       install_visualizer (var, NULL, pretty_printer);
1572     }
1573 }
1574
1575 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1576    make a new object.  */
1577
1578 static void
1579 construct_visualizer (struct varobj *var, PyObject *constructor)
1580 {
1581   PyObject *pretty_printer;
1582
1583   /* Do not install a visualizer on a CPLUS_FAKE_CHILD.  */
1584   if (CPLUS_FAKE_CHILD (var))
1585     return;
1586
1587   Py_INCREF (constructor);
1588   if (constructor == Py_None)
1589     pretty_printer = NULL;
1590   else
1591     {
1592       pretty_printer = instantiate_pretty_printer (constructor, var->value);
1593       if (! pretty_printer)
1594         {
1595           gdbpy_print_stack ();
1596           Py_DECREF (constructor);
1597           constructor = Py_None;
1598           Py_INCREF (constructor);
1599         }
1600
1601       if (pretty_printer == Py_None)
1602         {
1603           Py_DECREF (pretty_printer);
1604           pretty_printer = NULL;
1605         }
1606     }
1607
1608   install_visualizer (var, constructor, pretty_printer);
1609 }
1610
1611 #endif /* HAVE_PYTHON */
1612
1613 /* A helper function for install_new_value.  This creates and installs
1614    a visualizer for VAR, if appropriate.  */
1615
1616 static void
1617 install_new_value_visualizer (struct varobj *var)
1618 {
1619 #if HAVE_PYTHON
1620   /* If the constructor is None, then we want the raw value.  If VAR
1621      does not have a value, just skip this.  */
1622   if (var->constructor != Py_None && var->value)
1623     {
1624       struct cleanup *cleanup;
1625
1626       cleanup = varobj_ensure_python_env (var);
1627
1628       if (!var->constructor)
1629         install_default_visualizer (var);
1630       else
1631         construct_visualizer (var, var->constructor);
1632
1633       do_cleanups (cleanup);
1634     }
1635 #else
1636   /* Do nothing.  */
1637 #endif
1638 }
1639
1640 /* When using RTTI to determine variable type it may be changed in runtime when
1641    the variable value is changed.  This function checks whether type of varobj
1642    VAR will change when a new value NEW_VALUE is assigned and if it is so
1643    updates the type of VAR.  */
1644
1645 static int
1646 update_type_if_necessary (struct varobj *var, struct value *new_value)
1647 {
1648   if (new_value)
1649     {
1650       struct value_print_options opts;
1651
1652       get_user_print_options (&opts);
1653       if (opts.objectprint)
1654         {
1655           struct type *new_type;
1656           char *curr_type_str, *new_type_str;
1657
1658           new_type = value_actual_type (new_value, 0, 0);
1659           new_type_str = type_to_string (new_type);
1660           curr_type_str = varobj_get_type (var);
1661           if (strcmp (curr_type_str, new_type_str) != 0)
1662             {
1663               var->type = new_type;
1664
1665               /* This information may be not valid for a new type.  */
1666               varobj_delete (var, NULL, 1);
1667               VEC_free (varobj_p, var->children);
1668               var->num_children = -1;
1669               return 1;
1670             }
1671         }
1672     }
1673
1674   return 0;
1675 }
1676
1677 /* Assign a new value to a variable object.  If INITIAL is non-zero,
1678    this is the first assignement after the variable object was just
1679    created, or changed type.  In that case, just assign the value 
1680    and return 0.
1681    Otherwise, assign the new value, and return 1 if the value is
1682    different from the current one, 0 otherwise.  The comparison is
1683    done on textual representation of value.  Therefore, some types
1684    need not be compared.  E.g.  for structures the reported value is
1685    always "{...}", so no comparison is necessary here.  If the old
1686    value was NULL and new one is not, or vice versa, we always return 1.
1687
1688    The VALUE parameter should not be released -- the function will
1689    take care of releasing it when needed.  */
1690 static int
1691 install_new_value (struct varobj *var, struct value *value, int initial)
1692
1693   int changeable;
1694   int need_to_fetch;
1695   int changed = 0;
1696   int intentionally_not_fetched = 0;
1697   char *print_value = NULL;
1698
1699   /* We need to know the varobj's type to decide if the value should
1700      be fetched or not.  C++ fake children (public/protected/private)
1701      don't have a type.  */
1702   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1703   changeable = varobj_value_is_changeable_p (var);
1704
1705   /* If the type has custom visualizer, we consider it to be always
1706      changeable.  FIXME: need to make sure this behaviour will not
1707      mess up read-sensitive values.  */
1708   if (var->pretty_printer)
1709     changeable = 1;
1710
1711   need_to_fetch = changeable;
1712
1713   /* We are not interested in the address of references, and given
1714      that in C++ a reference is not rebindable, it cannot
1715      meaningfully change.  So, get hold of the real value.  */
1716   if (value)
1717     value = coerce_ref (value);
1718
1719   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1720     /* For unions, we need to fetch the value implicitly because
1721        of implementation of union member fetch.  When gdb
1722        creates a value for a field and the value of the enclosing
1723        structure is not lazy,  it immediately copies the necessary
1724        bytes from the enclosing values.  If the enclosing value is
1725        lazy, the call to value_fetch_lazy on the field will read
1726        the data from memory.  For unions, that means we'll read the
1727        same memory more than once, which is not desirable.  So
1728        fetch now.  */
1729     need_to_fetch = 1;
1730
1731   /* The new value might be lazy.  If the type is changeable,
1732      that is we'll be comparing values of this type, fetch the
1733      value now.  Otherwise, on the next update the old value
1734      will be lazy, which means we've lost that old value.  */
1735   if (need_to_fetch && value && value_lazy (value))
1736     {
1737       struct varobj *parent = var->parent;
1738       int frozen = var->frozen;
1739
1740       for (; !frozen && parent; parent = parent->parent)
1741         frozen |= parent->frozen;
1742
1743       if (frozen && initial)
1744         {
1745           /* For variables that are frozen, or are children of frozen
1746              variables, we don't do fetch on initial assignment.
1747              For non-initial assignemnt we do the fetch, since it means we're
1748              explicitly asked to compare the new value with the old one.  */
1749           intentionally_not_fetched = 1;
1750         }
1751       else
1752         {
1753           volatile struct gdb_exception except;
1754
1755           TRY_CATCH (except, RETURN_MASK_ERROR)
1756             {
1757               value_fetch_lazy (value);
1758             }
1759
1760           if (except.reason < 0)
1761             {
1762               /* Set the value to NULL, so that for the next -var-update,
1763                  we don't try to compare the new value with this value,
1764                  that we couldn't even read.  */
1765               value = NULL;
1766             }
1767         }
1768     }
1769
1770   /* Get a reference now, before possibly passing it to any Python
1771      code that might release it.  */
1772   if (value != NULL)
1773     value_incref (value);
1774
1775   /* Below, we'll be comparing string rendering of old and new
1776      values.  Don't get string rendering if the value is
1777      lazy -- if it is, the code above has decided that the value
1778      should not be fetched.  */
1779   if (value && !value_lazy (value) && !var->pretty_printer)
1780     print_value = value_get_print_value (value, var->format, var);
1781
1782   /* If the type is changeable, compare the old and the new values.
1783      If this is the initial assignment, we don't have any old value
1784      to compare with.  */
1785   if (!initial && changeable)
1786     {
1787       /* If the value of the varobj was changed by -var-set-value,
1788          then the value in the varobj and in the target is the same.
1789          However, that value is different from the value that the
1790          varobj had after the previous -var-update.  So need to the
1791          varobj as changed.  */
1792       if (var->updated)
1793         {
1794           changed = 1;
1795         }
1796       else if (! var->pretty_printer)
1797         {
1798           /* Try to compare the values.  That requires that both
1799              values are non-lazy.  */
1800           if (var->not_fetched && value_lazy (var->value))
1801             {
1802               /* This is a frozen varobj and the value was never read.
1803                  Presumably, UI shows some "never read" indicator.
1804                  Now that we've fetched the real value, we need to report
1805                  this varobj as changed so that UI can show the real
1806                  value.  */
1807               changed = 1;
1808             }
1809           else  if (var->value == NULL && value == NULL)
1810             /* Equal.  */
1811             ;
1812           else if (var->value == NULL || value == NULL)
1813             {
1814               changed = 1;
1815             }
1816           else
1817             {
1818               gdb_assert (!value_lazy (var->value));
1819               gdb_assert (!value_lazy (value));
1820
1821               gdb_assert (var->print_value != NULL && print_value != NULL);
1822               if (strcmp (var->print_value, print_value) != 0)
1823                 changed = 1;
1824             }
1825         }
1826     }
1827
1828   if (!initial && !changeable)
1829     {
1830       /* For values that are not changeable, we don't compare the values.
1831          However, we want to notice if a value was not NULL and now is NULL,
1832          or vise versa, so that we report when top-level varobjs come in scope
1833          and leave the scope.  */
1834       changed = (var->value != NULL) != (value != NULL);
1835     }
1836
1837   /* We must always keep the new value, since children depend on it.  */
1838   if (var->value != NULL && var->value != value)
1839     value_free (var->value);
1840   var->value = value;
1841   if (value && value_lazy (value) && intentionally_not_fetched)
1842     var->not_fetched = 1;
1843   else
1844     var->not_fetched = 0;
1845   var->updated = 0;
1846
1847   install_new_value_visualizer (var);
1848
1849   /* If we installed a pretty-printer, re-compare the printed version
1850      to see if the variable changed.  */
1851   if (var->pretty_printer)
1852     {
1853       xfree (print_value);
1854       print_value = value_get_print_value (var->value, var->format, var);
1855       if ((var->print_value == NULL && print_value != NULL)
1856           || (var->print_value != NULL && print_value == NULL)
1857           || (var->print_value != NULL && print_value != NULL
1858               && strcmp (var->print_value, print_value) != 0))
1859         changed = 1;
1860     }
1861   if (var->print_value)
1862     xfree (var->print_value);
1863   var->print_value = print_value;
1864
1865   gdb_assert (!var->value || value_type (var->value));
1866
1867   return changed;
1868 }
1869
1870 /* Return the requested range for a varobj.  VAR is the varobj.  FROM
1871    and TO are out parameters; *FROM and *TO will be set to the
1872    selected sub-range of VAR.  If no range was selected using
1873    -var-set-update-range, then both will be -1.  */
1874 void
1875 varobj_get_child_range (struct varobj *var, int *from, int *to)
1876 {
1877   *from = var->from;
1878   *to = var->to;
1879 }
1880
1881 /* Set the selected sub-range of children of VAR to start at index
1882    FROM and end at index TO.  If either FROM or TO is less than zero,
1883    this is interpreted as a request for all children.  */
1884 void
1885 varobj_set_child_range (struct varobj *var, int from, int to)
1886 {
1887   var->from = from;
1888   var->to = to;
1889 }
1890
1891 void 
1892 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1893 {
1894 #if HAVE_PYTHON
1895   PyObject *mainmod, *globals, *constructor;
1896   struct cleanup *back_to;
1897
1898   back_to = varobj_ensure_python_env (var);
1899
1900   mainmod = PyImport_AddModule ("__main__");
1901   globals = PyModule_GetDict (mainmod);
1902   Py_INCREF (globals);
1903   make_cleanup_py_decref (globals);
1904
1905   constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1906
1907   if (! constructor)
1908     {
1909       gdbpy_print_stack ();
1910       error (_("Could not evaluate visualizer expression: %s"), visualizer);
1911     }
1912
1913   construct_visualizer (var, constructor);
1914   Py_XDECREF (constructor);
1915
1916   /* If there are any children now, wipe them.  */
1917   varobj_delete (var, NULL, 1 /* children only */);
1918   var->num_children = -1;
1919
1920   do_cleanups (back_to);
1921 #else
1922   error (_("Python support required"));
1923 #endif
1924 }
1925
1926 /* If NEW_VALUE is the new value of the given varobj (var), return
1927    non-zero if var has mutated.  In other words, if the type of
1928    the new value is different from the type of the varobj's old
1929    value.
1930
1931    NEW_VALUE may be NULL, if the varobj is now out of scope.  */
1932
1933 static int
1934 varobj_value_has_mutated (struct varobj *var, struct value *new_value,
1935                           struct type *new_type)
1936 {
1937   /* If we haven't previously computed the number of children in var,
1938      it does not matter from the front-end's perspective whether
1939      the type has mutated or not.  For all intents and purposes,
1940      it has not mutated.  */
1941   if (var->num_children < 0)
1942     return 0;
1943
1944   if (var->root->lang->value_has_mutated)
1945     return var->root->lang->value_has_mutated (var, new_value, new_type);
1946   else
1947     return 0;
1948 }
1949
1950 /* Update the values for a variable and its children.  This is a
1951    two-pronged attack.  First, re-parse the value for the root's
1952    expression to see if it's changed.  Then go all the way
1953    through its children, reconstructing them and noting if they've
1954    changed.
1955
1956    The EXPLICIT parameter specifies if this call is result
1957    of MI request to update this specific variable, or 
1958    result of implicit -var-update *.  For implicit request, we don't
1959    update frozen variables.
1960
1961    NOTE: This function may delete the caller's varobj.  If it
1962    returns TYPE_CHANGED, then it has done this and VARP will be modified
1963    to point to the new varobj.  */
1964
1965 VEC(varobj_update_result) *
1966 varobj_update (struct varobj **varp, int explicit)
1967 {
1968   int changed = 0;
1969   int type_changed = 0;
1970   int i;
1971   struct value *new;
1972   VEC (varobj_update_result) *stack = NULL;
1973   VEC (varobj_update_result) *result = NULL;
1974
1975   /* Frozen means frozen -- we don't check for any change in
1976      this varobj, including its going out of scope, or
1977      changing type.  One use case for frozen varobjs is
1978      retaining previously evaluated expressions, and we don't
1979      want them to be reevaluated at all.  */
1980   if (!explicit && (*varp)->frozen)
1981     return result;
1982
1983   if (!(*varp)->root->is_valid)
1984     {
1985       varobj_update_result r = {0};
1986
1987       r.varobj = *varp;
1988       r.status = VAROBJ_INVALID;
1989       VEC_safe_push (varobj_update_result, result, &r);
1990       return result;
1991     }
1992
1993   if ((*varp)->root->rootvar == *varp)
1994     {
1995       varobj_update_result r = {0};
1996
1997       r.varobj = *varp;
1998       r.status = VAROBJ_IN_SCOPE;
1999
2000       /* Update the root variable.  value_of_root can return NULL
2001          if the variable is no longer around, i.e. we stepped out of
2002          the frame in which a local existed.  We are letting the 
2003          value_of_root variable dispose of the varobj if the type
2004          has changed.  */
2005       new = value_of_root (varp, &type_changed);
2006       if (update_type_if_necessary(*varp, new))
2007           type_changed = 1;
2008       r.varobj = *varp;
2009       r.type_changed = type_changed;
2010       if (install_new_value ((*varp), new, type_changed))
2011         r.changed = 1;
2012       
2013       if (new == NULL)
2014         r.status = VAROBJ_NOT_IN_SCOPE;
2015       r.value_installed = 1;
2016
2017       if (r.status == VAROBJ_NOT_IN_SCOPE)
2018         {
2019           if (r.type_changed || r.changed)
2020             VEC_safe_push (varobj_update_result, result, &r);
2021           return result;
2022         }
2023             
2024       VEC_safe_push (varobj_update_result, stack, &r);
2025     }
2026   else
2027     {
2028       varobj_update_result r = {0};
2029
2030       r.varobj = *varp;
2031       VEC_safe_push (varobj_update_result, stack, &r);
2032     }
2033
2034   /* Walk through the children, reconstructing them all.  */
2035   while (!VEC_empty (varobj_update_result, stack))
2036     {
2037       varobj_update_result r = *(VEC_last (varobj_update_result, stack));
2038       struct varobj *v = r.varobj;
2039
2040       VEC_pop (varobj_update_result, stack);
2041
2042       /* Update this variable, unless it's a root, which is already
2043          updated.  */
2044       if (!r.value_installed)
2045         {
2046           struct type *new_type;
2047
2048           new = value_of_child (v->parent, v->index);
2049           if (update_type_if_necessary(v, new))
2050             r.type_changed = 1;
2051           if (new)
2052             new_type = value_type (new);
2053           else
2054             new_type = v->root->lang->type_of_child (v->parent, v->index);
2055
2056           if (varobj_value_has_mutated (v, new, new_type))
2057             {
2058               /* The children are no longer valid; delete them now.
2059                  Report the fact that its type changed as well.  */
2060               varobj_delete (v, NULL, 1 /* only_children */);
2061               v->num_children = -1;
2062               v->to = -1;
2063               v->from = -1;
2064               v->type = new_type;
2065               r.type_changed = 1;
2066             }
2067
2068           if (install_new_value (v, new, r.type_changed))
2069             {
2070               r.changed = 1;
2071               v->updated = 0;
2072             }
2073         }
2074
2075       /* We probably should not get children of a varobj that has a
2076          pretty-printer, but for which -var-list-children was never
2077          invoked.  */
2078       if (v->pretty_printer)
2079         {
2080           VEC (varobj_p) *changed = 0, *type_changed = 0, *unchanged = 0;
2081           VEC (varobj_p) *new = 0;
2082           int i, children_changed = 0;
2083
2084           if (v->frozen)
2085             continue;
2086
2087           if (!v->children_requested)
2088             {
2089               int dummy;
2090
2091               /* If we initially did not have potential children, but
2092                  now we do, consider the varobj as changed.
2093                  Otherwise, if children were never requested, consider
2094                  it as unchanged -- presumably, such varobj is not yet
2095                  expanded in the UI, so we need not bother getting
2096                  it.  */
2097               if (!varobj_has_more (v, 0))
2098                 {
2099                   update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
2100                                                   &dummy, 0, 0, 0);
2101                   if (varobj_has_more (v, 0))
2102                     r.changed = 1;
2103                 }
2104
2105               if (r.changed)
2106                 VEC_safe_push (varobj_update_result, result, &r);
2107
2108               continue;
2109             }
2110
2111           /* If update_dynamic_varobj_children returns 0, then we have
2112              a non-conforming pretty-printer, so we skip it.  */
2113           if (update_dynamic_varobj_children (v, &changed, &type_changed, &new,
2114                                               &unchanged, &children_changed, 1,
2115                                               v->from, v->to))
2116             {
2117               if (children_changed || new)
2118                 {
2119                   r.children_changed = 1;
2120                   r.new = new;
2121                 }
2122               /* Push in reverse order so that the first child is
2123                  popped from the work stack first, and so will be
2124                  added to result first.  This does not affect
2125                  correctness, just "nicer".  */
2126               for (i = VEC_length (varobj_p, type_changed) - 1; i >= 0; --i)
2127                 {
2128                   varobj_p tmp = VEC_index (varobj_p, type_changed, i);
2129                   varobj_update_result r = {0};
2130
2131                   /* Type may change only if value was changed.  */
2132                   r.varobj = tmp;
2133                   r.changed = 1;
2134                   r.type_changed = 1;
2135                   r.value_installed = 1;
2136                   VEC_safe_push (varobj_update_result, stack, &r);
2137                 }
2138               for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
2139                 {
2140                   varobj_p tmp = VEC_index (varobj_p, changed, i);
2141                   varobj_update_result r = {0};
2142
2143                   r.varobj = tmp;
2144                   r.changed = 1;
2145                   r.value_installed = 1;
2146                   VEC_safe_push (varobj_update_result, stack, &r);
2147                 }
2148               for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
2149                 {
2150                   varobj_p tmp = VEC_index (varobj_p, unchanged, i);
2151
2152                   if (!tmp->frozen)
2153                     {
2154                       varobj_update_result r = {0};
2155
2156                       r.varobj = tmp;
2157                       r.value_installed = 1;
2158                       VEC_safe_push (varobj_update_result, stack, &r);
2159                     }
2160                 }
2161               if (r.changed || r.children_changed)
2162                 VEC_safe_push (varobj_update_result, result, &r);
2163
2164               /* Free CHANGED, TYPE_CHANGED and UNCHANGED, but not NEW,
2165                  because NEW has been put into the result vector.  */
2166               VEC_free (varobj_p, changed);
2167               VEC_free (varobj_p, type_changed);
2168               VEC_free (varobj_p, unchanged);
2169
2170               continue;
2171             }
2172         }
2173
2174       /* Push any children.  Use reverse order so that the first
2175          child is popped from the work stack first, and so
2176          will be added to result first.  This does not
2177          affect correctness, just "nicer".  */
2178       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
2179         {
2180           varobj_p c = VEC_index (varobj_p, v->children, i);
2181
2182           /* Child may be NULL if explicitly deleted by -var-delete.  */
2183           if (c != NULL && !c->frozen)
2184             {
2185               varobj_update_result r = {0};
2186
2187               r.varobj = c;
2188               VEC_safe_push (varobj_update_result, stack, &r);
2189             }
2190         }
2191
2192       if (r.changed || r.type_changed)
2193         VEC_safe_push (varobj_update_result, result, &r);
2194     }
2195
2196   VEC_free (varobj_update_result, stack);
2197
2198   return result;
2199 }
2200 \f
2201
2202 /* Helper functions */
2203
2204 /*
2205  * Variable object construction/destruction
2206  */
2207
2208 static int
2209 delete_variable (struct cpstack **resultp, struct varobj *var,
2210                  int only_children_p)
2211 {
2212   int delcount = 0;
2213
2214   delete_variable_1 (resultp, &delcount, var,
2215                      only_children_p, 1 /* remove_from_parent_p */ );
2216
2217   return delcount;
2218 }
2219
2220 /* Delete the variable object VAR and its children.  */
2221 /* IMPORTANT NOTE: If we delete a variable which is a child
2222    and the parent is not removed we dump core.  It must be always
2223    initially called with remove_from_parent_p set.  */
2224 static void
2225 delete_variable_1 (struct cpstack **resultp, int *delcountp,
2226                    struct varobj *var, int only_children_p,
2227                    int remove_from_parent_p)
2228 {
2229   int i;
2230
2231   /* Delete any children of this variable, too.  */
2232   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
2233     {   
2234       varobj_p child = VEC_index (varobj_p, var->children, i);
2235
2236       if (!child)
2237         continue;
2238       if (!remove_from_parent_p)
2239         child->parent = NULL;
2240       delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
2241     }
2242   VEC_free (varobj_p, var->children);
2243
2244   /* if we were called to delete only the children we are done here.  */
2245   if (only_children_p)
2246     return;
2247
2248   /* Otherwise, add it to the list of deleted ones and proceed to do so.  */
2249   /* If the name is null, this is a temporary variable, that has not
2250      yet been installed, don't report it, it belongs to the caller...  */
2251   if (var->obj_name != NULL)
2252     {
2253       cppush (resultp, xstrdup (var->obj_name));
2254       *delcountp = *delcountp + 1;
2255     }
2256
2257   /* If this variable has a parent, remove it from its parent's list.  */
2258   /* OPTIMIZATION: if the parent of this variable is also being deleted, 
2259      (as indicated by remove_from_parent_p) we don't bother doing an
2260      expensive list search to find the element to remove when we are
2261      discarding the list afterwards.  */
2262   if ((remove_from_parent_p) && (var->parent != NULL))
2263     {
2264       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
2265     }
2266
2267   if (var->obj_name != NULL)
2268     uninstall_variable (var);
2269
2270   /* Free memory associated with this variable.  */
2271   free_variable (var);
2272 }
2273
2274 /* Install the given variable VAR with the object name VAR->OBJ_NAME.  */
2275 static int
2276 install_variable (struct varobj *var)
2277 {
2278   struct vlist *cv;
2279   struct vlist *newvl;
2280   const char *chp;
2281   unsigned int index = 0;
2282   unsigned int i = 1;
2283
2284   for (chp = var->obj_name; *chp; chp++)
2285     {
2286       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
2287     }
2288
2289   cv = *(varobj_table + index);
2290   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2291     cv = cv->next;
2292
2293   if (cv != NULL)
2294     error (_("Duplicate variable object name"));
2295
2296   /* Add varobj to hash table.  */
2297   newvl = xmalloc (sizeof (struct vlist));
2298   newvl->next = *(varobj_table + index);
2299   newvl->var = var;
2300   *(varobj_table + index) = newvl;
2301
2302   /* If root, add varobj to root list.  */
2303   if (is_root_p (var))
2304     {
2305       /* Add to list of root variables.  */
2306       if (rootlist == NULL)
2307         var->root->next = NULL;
2308       else
2309         var->root->next = rootlist;
2310       rootlist = var->root;
2311     }
2312
2313   return 1;                     /* OK */
2314 }
2315
2316 /* Unistall the object VAR.  */
2317 static void
2318 uninstall_variable (struct varobj *var)
2319 {
2320   struct vlist *cv;
2321   struct vlist *prev;
2322   struct varobj_root *cr;
2323   struct varobj_root *prer;
2324   const char *chp;
2325   unsigned int index = 0;
2326   unsigned int i = 1;
2327
2328   /* Remove varobj from hash table.  */
2329   for (chp = var->obj_name; *chp; chp++)
2330     {
2331       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
2332     }
2333
2334   cv = *(varobj_table + index);
2335   prev = NULL;
2336   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2337     {
2338       prev = cv;
2339       cv = cv->next;
2340     }
2341
2342   if (varobjdebug)
2343     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
2344
2345   if (cv == NULL)
2346     {
2347       warning
2348         ("Assertion failed: Could not find variable object \"%s\" to delete",
2349          var->obj_name);
2350       return;
2351     }
2352
2353   if (prev == NULL)
2354     *(varobj_table + index) = cv->next;
2355   else
2356     prev->next = cv->next;
2357
2358   xfree (cv);
2359
2360   /* If root, remove varobj from root list.  */
2361   if (is_root_p (var))
2362     {
2363       /* Remove from list of root variables.  */
2364       if (rootlist == var->root)
2365         rootlist = var->root->next;
2366       else
2367         {
2368           prer = NULL;
2369           cr = rootlist;
2370           while ((cr != NULL) && (cr->rootvar != var))
2371             {
2372               prer = cr;
2373               cr = cr->next;
2374             }
2375           if (cr == NULL)
2376             {
2377               warning (_("Assertion failed: Could not find "
2378                          "varobj \"%s\" in root list"),
2379                        var->obj_name);
2380               return;
2381             }
2382           if (prer == NULL)
2383             rootlist = NULL;
2384           else
2385             prer->next = cr->next;
2386         }
2387     }
2388
2389 }
2390
2391 /* Create and install a child of the parent of the given name.  */
2392 static struct varobj *
2393 create_child (struct varobj *parent, int index, char *name)
2394 {
2395   return create_child_with_value (parent, index, name, 
2396                                   value_of_child (parent, index));
2397 }
2398
2399 /* Does CHILD represent a child with no name?  This happens when
2400    the child is an anonmous struct or union and it has no field name
2401    in its parent variable.
2402
2403    This has already been determined by *_describe_child. The easiest
2404    thing to do is to compare the child's name with ANONYMOUS_*_NAME.  */
2405
2406 static int
2407 is_anonymous_child (struct varobj *child)
2408 {
2409   return (strcmp (child->name, ANONYMOUS_STRUCT_NAME) == 0
2410           || strcmp (child->name, ANONYMOUS_UNION_NAME) == 0);
2411 }
2412
2413 static struct varobj *
2414 create_child_with_value (struct varobj *parent, int index, const char *name,
2415                          struct value *value)
2416 {
2417   struct varobj *child;
2418   char *childs_name;
2419
2420   child = new_variable ();
2421
2422   /* Name is allocated by name_of_child.  */
2423   /* FIXME: xstrdup should not be here.  */
2424   child->name = xstrdup (name);
2425   child->index = index;
2426   child->parent = parent;
2427   child->root = parent->root;
2428
2429   if (is_anonymous_child (child))
2430     childs_name = xstrprintf ("%s.%d_anonymous", parent->obj_name, index);
2431   else
2432     childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
2433   child->obj_name = childs_name;
2434
2435   install_variable (child);
2436
2437   /* Compute the type of the child.  Must do this before
2438      calling install_new_value.  */
2439   if (value != NULL)
2440     /* If the child had no evaluation errors, var->value
2441        will be non-NULL and contain a valid type.  */
2442     child->type = value_actual_type (value, 0, NULL);
2443   else
2444     /* Otherwise, we must compute the type.  */
2445     child->type = (*child->root->lang->type_of_child) (child->parent, 
2446                                                        child->index);
2447   install_new_value (child, value, 1);
2448
2449   return child;
2450 }
2451 \f
2452
2453 /*
2454  * Miscellaneous utility functions.
2455  */
2456
2457 /* Allocate memory and initialize a new variable.  */
2458 static struct varobj *
2459 new_variable (void)
2460 {
2461   struct varobj *var;
2462
2463   var = (struct varobj *) xmalloc (sizeof (struct varobj));
2464   var->name = NULL;
2465   var->path_expr = NULL;
2466   var->obj_name = NULL;
2467   var->index = -1;
2468   var->type = NULL;
2469   var->value = NULL;
2470   var->num_children = -1;
2471   var->parent = NULL;
2472   var->children = NULL;
2473   var->format = 0;
2474   var->root = NULL;
2475   var->updated = 0;
2476   var->print_value = NULL;
2477   var->frozen = 0;
2478   var->not_fetched = 0;
2479   var->children_requested = 0;
2480   var->from = -1;
2481   var->to = -1;
2482   var->constructor = 0;
2483   var->pretty_printer = 0;
2484   var->child_iter = 0;
2485   var->saved_item = 0;
2486
2487   return var;
2488 }
2489
2490 /* Allocate memory and initialize a new root variable.  */
2491 static struct varobj *
2492 new_root_variable (void)
2493 {
2494   struct varobj *var = new_variable ();
2495
2496   var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));
2497   var->root->lang = NULL;
2498   var->root->exp = NULL;
2499   var->root->valid_block = NULL;
2500   var->root->frame = null_frame_id;
2501   var->root->floating = 0;
2502   var->root->rootvar = NULL;
2503   var->root->is_valid = 1;
2504
2505   return var;
2506 }
2507
2508 /* Free any allocated memory associated with VAR.  */
2509 static void
2510 free_variable (struct varobj *var)
2511 {
2512 #if HAVE_PYTHON
2513   if (var->pretty_printer)
2514     {
2515       struct cleanup *cleanup = varobj_ensure_python_env (var);
2516       Py_XDECREF (var->constructor);
2517       Py_XDECREF (var->pretty_printer);
2518       Py_XDECREF (var->child_iter);
2519       Py_XDECREF (var->saved_item);
2520       do_cleanups (cleanup);
2521     }
2522 #endif
2523
2524   value_free (var->value);
2525
2526   /* Free the expression if this is a root variable.  */
2527   if (is_root_p (var))
2528     {
2529       xfree (var->root->exp);
2530       xfree (var->root);
2531     }
2532
2533   xfree (var->name);
2534   xfree (var->obj_name);
2535   xfree (var->print_value);
2536   xfree (var->path_expr);
2537   xfree (var);
2538 }
2539
2540 static void
2541 do_free_variable_cleanup (void *var)
2542 {
2543   free_variable (var);
2544 }
2545
2546 static struct cleanup *
2547 make_cleanup_free_variable (struct varobj *var)
2548 {
2549   return make_cleanup (do_free_variable_cleanup, var);
2550 }
2551
2552 /* This returns the type of the variable.  It also skips past typedefs
2553    to return the real type of the variable.
2554
2555    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2556    except within get_target_type and get_type.  */
2557 static struct type *
2558 get_type (struct varobj *var)
2559 {
2560   struct type *type;
2561
2562   type = var->type;
2563   if (type != NULL)
2564     type = check_typedef (type);
2565
2566   return type;
2567 }
2568
2569 /* Return the type of the value that's stored in VAR,
2570    or that would have being stored there if the
2571    value were accessible.
2572
2573    This differs from VAR->type in that VAR->type is always
2574    the true type of the expession in the source language.
2575    The return value of this function is the type we're
2576    actually storing in varobj, and using for displaying
2577    the values and for comparing previous and new values.
2578
2579    For example, top-level references are always stripped.  */
2580 static struct type *
2581 get_value_type (struct varobj *var)
2582 {
2583   struct type *type;
2584
2585   if (var->value)
2586     type = value_type (var->value);
2587   else
2588     type = var->type;
2589
2590   type = check_typedef (type);
2591
2592   if (TYPE_CODE (type) == TYPE_CODE_REF)
2593     type = get_target_type (type);
2594
2595   type = check_typedef (type);
2596
2597   return type;
2598 }
2599
2600 /* This returns the target type (or NULL) of TYPE, also skipping
2601    past typedefs, just like get_type ().
2602
2603    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2604    except within get_target_type and get_type.  */
2605 static struct type *
2606 get_target_type (struct type *type)
2607 {
2608   if (type != NULL)
2609     {
2610       type = TYPE_TARGET_TYPE (type);
2611       if (type != NULL)
2612         type = check_typedef (type);
2613     }
2614
2615   return type;
2616 }
2617
2618 /* What is the default display for this variable? We assume that
2619    everything is "natural".  Any exceptions?  */
2620 static enum varobj_display_formats
2621 variable_default_display (struct varobj *var)
2622 {
2623   return FORMAT_NATURAL;
2624 }
2625
2626 /* FIXME: The following should be generic for any pointer.  */
2627 static void
2628 cppush (struct cpstack **pstack, char *name)
2629 {
2630   struct cpstack *s;
2631
2632   s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2633   s->name = name;
2634   s->next = *pstack;
2635   *pstack = s;
2636 }
2637
2638 /* FIXME: The following should be generic for any pointer.  */
2639 static char *
2640 cppop (struct cpstack **pstack)
2641 {
2642   struct cpstack *s;
2643   char *v;
2644
2645   if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2646     return NULL;
2647
2648   s = *pstack;
2649   v = s->name;
2650   *pstack = (*pstack)->next;
2651   xfree (s);
2652
2653   return v;
2654 }
2655 \f
2656 /*
2657  * Language-dependencies
2658  */
2659
2660 /* Common entry points */
2661
2662 /* Get the language of variable VAR.  */
2663 static enum varobj_languages
2664 variable_language (struct varobj *var)
2665 {
2666   enum varobj_languages lang;
2667
2668   switch (var->root->exp->language_defn->la_language)
2669     {
2670     default:
2671     case language_c:
2672       lang = vlang_c;
2673       break;
2674     case language_cplus:
2675       lang = vlang_cplus;
2676       break;
2677     case language_java:
2678       lang = vlang_java;
2679       break;
2680     case language_ada:
2681       lang = vlang_ada;
2682       break;
2683     }
2684
2685   return lang;
2686 }
2687
2688 /* Return the number of children for a given variable.
2689    The result of this function is defined by the language
2690    implementation.  The number of children returned by this function
2691    is the number of children that the user will see in the variable
2692    display.  */
2693 static int
2694 number_of_children (struct varobj *var)
2695 {
2696   return (*var->root->lang->number_of_children) (var);
2697 }
2698
2699 /* What is the expression for the root varobj VAR? Returns a malloc'd
2700    string.  */
2701 static char *
2702 name_of_variable (struct varobj *var)
2703 {
2704   return (*var->root->lang->name_of_variable) (var);
2705 }
2706
2707 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd
2708    string.  */
2709 static char *
2710 name_of_child (struct varobj *var, int index)
2711 {
2712   return (*var->root->lang->name_of_child) (var, index);
2713 }
2714
2715 /* What is the ``struct value *'' of the root variable VAR?
2716    For floating variable object, evaluation can get us a value
2717    of different type from what is stored in varobj already.  In
2718    that case:
2719    - *type_changed will be set to 1
2720    - old varobj will be freed, and new one will be
2721    created, with the same name.
2722    - *var_handle will be set to the new varobj 
2723    Otherwise, *type_changed will be set to 0.  */
2724 static struct value *
2725 value_of_root (struct varobj **var_handle, int *type_changed)
2726 {
2727   struct varobj *var;
2728
2729   if (var_handle == NULL)
2730     return NULL;
2731
2732   var = *var_handle;
2733
2734   /* This should really be an exception, since this should
2735      only get called with a root variable.  */
2736
2737   if (!is_root_p (var))
2738     return NULL;
2739
2740   if (var->root->floating)
2741     {
2742       struct varobj *tmp_var;
2743       char *old_type, *new_type;
2744
2745       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2746                                USE_SELECTED_FRAME);
2747       if (tmp_var == NULL)
2748         {
2749           return NULL;
2750         }
2751       old_type = varobj_get_type (var);
2752       new_type = varobj_get_type (tmp_var);
2753       if (strcmp (old_type, new_type) == 0)
2754         {
2755           /* The expression presently stored inside var->root->exp
2756              remembers the locations of local variables relatively to
2757              the frame where the expression was created (in DWARF location
2758              button, for example).  Naturally, those locations are not
2759              correct in other frames, so update the expression.  */
2760
2761          struct expression *tmp_exp = var->root->exp;
2762
2763          var->root->exp = tmp_var->root->exp;
2764          tmp_var->root->exp = tmp_exp;
2765
2766           varobj_delete (tmp_var, NULL, 0);
2767           *type_changed = 0;
2768         }
2769       else
2770         {
2771           tmp_var->obj_name = xstrdup (var->obj_name);
2772           tmp_var->from = var->from;
2773           tmp_var->to = var->to;
2774           varobj_delete (var, NULL, 0);
2775
2776           install_variable (tmp_var);
2777           *var_handle = tmp_var;
2778           var = *var_handle;
2779           *type_changed = 1;
2780         }
2781       xfree (old_type);
2782       xfree (new_type);
2783     }
2784   else
2785     {
2786       *type_changed = 0;
2787     }
2788
2789   {
2790     struct value *value;
2791
2792     value = (*var->root->lang->value_of_root) (var_handle);
2793     if (var->value == NULL || value == NULL)
2794       {
2795         /* For root varobj-s, a NULL value indicates a scoping issue.
2796            So, nothing to do in terms of checking for mutations.  */
2797       }
2798     else if (varobj_value_has_mutated (var, value, value_type (value)))
2799       {
2800         /* The type has mutated, so the children are no longer valid.
2801            Just delete them, and tell our caller that the type has
2802            changed.  */
2803         varobj_delete (var, NULL, 1 /* only_children */);
2804         var->num_children = -1;
2805         var->to = -1;
2806         var->from = -1;
2807         *type_changed = 1;
2808       }
2809     return value;
2810   }
2811 }
2812
2813 /* What is the ``struct value *'' for the INDEX'th child of PARENT?  */
2814 static struct value *
2815 value_of_child (struct varobj *parent, int index)
2816 {
2817   struct value *value;
2818
2819   value = (*parent->root->lang->value_of_child) (parent, index);
2820
2821   return value;
2822 }
2823
2824 /* GDB already has a command called "value_of_variable".  Sigh.  */
2825 static char *
2826 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2827 {
2828   if (var->root->is_valid)
2829     {
2830       if (var->pretty_printer)
2831         return value_get_print_value (var->value, var->format, var);
2832       return (*var->root->lang->value_of_variable) (var, format);
2833     }
2834   else
2835     return NULL;
2836 }
2837
2838 static char *
2839 value_get_print_value (struct value *value, enum varobj_display_formats format,
2840                        struct varobj *var)
2841 {
2842   struct ui_file *stb;
2843   struct cleanup *old_chain;
2844   gdb_byte *thevalue = NULL;
2845   struct value_print_options opts;
2846   struct type *type = NULL;
2847   long len = 0;
2848   char *encoding = NULL;
2849   struct gdbarch *gdbarch = NULL;
2850   /* Initialize it just to avoid a GCC false warning.  */
2851   CORE_ADDR str_addr = 0;
2852   int string_print = 0;
2853
2854   if (value == NULL)
2855     return NULL;
2856
2857   stb = mem_fileopen ();
2858   old_chain = make_cleanup_ui_file_delete (stb);
2859
2860   gdbarch = get_type_arch (value_type (value));
2861 #if HAVE_PYTHON
2862   {
2863     PyObject *value_formatter = var->pretty_printer;
2864
2865     varobj_ensure_python_env (var);
2866
2867     if (value_formatter)
2868       {
2869         /* First check to see if we have any children at all.  If so,
2870            we simply return {...}.  */
2871         if (dynamic_varobj_has_child_method (var))
2872           {
2873             do_cleanups (old_chain);
2874             return xstrdup ("{...}");
2875           }
2876
2877         if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2878           {
2879             struct value *replacement;
2880             PyObject *output = NULL;
2881
2882             output = apply_varobj_pretty_printer (value_formatter,
2883                                                   &replacement,
2884                                                   stb);
2885
2886             /* If we have string like output ...  */
2887             if (output)
2888               {
2889                 make_cleanup_py_decref (output);
2890
2891                 /* If this is a lazy string, extract it.  For lazy
2892                    strings we always print as a string, so set
2893                    string_print.  */
2894                 if (gdbpy_is_lazy_string (output))
2895                   {
2896                     gdbpy_extract_lazy_string (output, &str_addr, &type,
2897                                                &len, &encoding);
2898                     make_cleanup (free_current_contents, &encoding);
2899                     string_print = 1;
2900                   }
2901                 else
2902                   {
2903                     /* If it is a regular (non-lazy) string, extract
2904                        it and copy the contents into THEVALUE.  If the
2905                        hint says to print it as a string, set
2906                        string_print.  Otherwise just return the extracted
2907                        string as a value.  */
2908
2909                     PyObject *py_str
2910                       = python_string_to_target_python_string (output);
2911
2912                     if (py_str)
2913                       {
2914                         char *s = PyString_AsString (py_str);
2915                         char *hint;
2916
2917                         hint = gdbpy_get_display_hint (value_formatter);
2918                         if (hint)
2919                           {
2920                             if (!strcmp (hint, "string"))
2921                               string_print = 1;
2922                             xfree (hint);
2923                           }
2924
2925                         len = PyString_Size (py_str);
2926                         thevalue = xmemdup (s, len + 1, len + 1);
2927                         type = builtin_type (gdbarch)->builtin_char;
2928                         Py_DECREF (py_str);
2929
2930                         if (!string_print)
2931                           {
2932                             do_cleanups (old_chain);
2933                             return thevalue;
2934                           }
2935
2936                         make_cleanup (xfree, thevalue);
2937                       }
2938                     else
2939                       gdbpy_print_stack ();
2940                   }
2941               }
2942             /* If the printer returned a replacement value, set VALUE
2943                to REPLACEMENT.  If there is not a replacement value,
2944                just use the value passed to this function.  */
2945             if (replacement)
2946               value = replacement;
2947           }
2948       }
2949   }
2950 #endif
2951
2952   get_formatted_print_options (&opts, format_code[(int) format]);
2953   opts.deref_ref = 0;
2954   opts.raw = 1;
2955
2956   /* If the THEVALUE has contents, it is a regular string.  */
2957   if (thevalue)
2958     LA_PRINT_STRING (stb, type, thevalue, len, encoding, 0, &opts);
2959   else if (string_print)
2960     /* Otherwise, if string_print is set, and it is not a regular
2961        string, it is a lazy string.  */
2962     val_print_string (type, encoding, str_addr, len, stb, &opts);
2963   else
2964     /* All other cases.  */
2965     common_val_print (value, stb, 0, &opts, current_language);
2966
2967   thevalue = ui_file_xstrdup (stb, NULL);
2968
2969   do_cleanups (old_chain);
2970   return thevalue;
2971 }
2972
2973 int
2974 varobj_editable_p (struct varobj *var)
2975 {
2976   struct type *type;
2977
2978   if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2979     return 0;
2980
2981   type = get_value_type (var);
2982
2983   switch (TYPE_CODE (type))
2984     {
2985     case TYPE_CODE_STRUCT:
2986     case TYPE_CODE_UNION:
2987     case TYPE_CODE_ARRAY:
2988     case TYPE_CODE_FUNC:
2989     case TYPE_CODE_METHOD:
2990       return 0;
2991       break;
2992
2993     default:
2994       return 1;
2995       break;
2996     }
2997 }
2998
2999 /* Call VAR's value_is_changeable_p language-specific callback.  */
3000
3001 static int
3002 varobj_value_is_changeable_p (struct varobj *var)
3003 {
3004   return var->root->lang->value_is_changeable_p (var);
3005 }
3006
3007 /* Return 1 if that varobj is floating, that is is always evaluated in the
3008    selected frame, and not bound to thread/frame.  Such variable objects
3009    are created using '@' as frame specifier to -var-create.  */
3010 int
3011 varobj_floating_p (struct varobj *var)
3012 {
3013   return var->root->floating;
3014 }
3015
3016 /* Given the value and the type of a variable object,
3017    adjust the value and type to those necessary
3018    for getting children of the variable object.
3019    This includes dereferencing top-level references
3020    to all types and dereferencing pointers to
3021    structures.
3022
3023    If LOOKUP_ACTUAL_TYPE is set the enclosing type of the
3024    value will be fetched and if it differs from static type
3025    the value will be casted to it.
3026
3027    Both TYPE and *TYPE should be non-null.  VALUE
3028    can be null if we want to only translate type.
3029    *VALUE can be null as well -- if the parent
3030    value is not known.
3031
3032    If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
3033    depending on whether pointer was dereferenced
3034    in this function.  */
3035 static void
3036 adjust_value_for_child_access (struct value **value,
3037                                   struct type **type,
3038                                   int *was_ptr,
3039                                   int lookup_actual_type)
3040 {
3041   gdb_assert (type && *type);
3042
3043   if (was_ptr)
3044     *was_ptr = 0;
3045
3046   *type = check_typedef (*type);
3047   
3048   /* The type of value stored in varobj, that is passed
3049      to us, is already supposed to be
3050      reference-stripped.  */
3051
3052   gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
3053
3054   /* Pointers to structures are treated just like
3055      structures when accessing children.  Don't
3056      dererences pointers to other types.  */
3057   if (TYPE_CODE (*type) == TYPE_CODE_PTR)
3058     {
3059       struct type *target_type = get_target_type (*type);
3060       if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
3061           || TYPE_CODE (target_type) == TYPE_CODE_UNION)
3062         {
3063           if (value && *value)
3064             {
3065               volatile struct gdb_exception except;
3066
3067               TRY_CATCH (except, RETURN_MASK_ERROR)
3068                 {
3069                   *value = value_ind (*value);
3070                 }
3071
3072               if (except.reason < 0)
3073                 *value = NULL;
3074             }
3075           *type = target_type;
3076           if (was_ptr)
3077             *was_ptr = 1;
3078         }
3079     }
3080
3081   /* The 'get_target_type' function calls check_typedef on
3082      result, so we can immediately check type code.  No
3083      need to call check_typedef here.  */
3084
3085   /* Access a real type of the value (if necessary and possible).  */
3086   if (value && *value && lookup_actual_type)
3087     {
3088       struct type *enclosing_type;
3089       int real_type_found = 0;
3090
3091       enclosing_type = value_actual_type (*value, 1, &real_type_found);
3092       if (real_type_found)
3093         {
3094           *type = enclosing_type;
3095           *value = value_cast (enclosing_type, *value);
3096         }
3097     }
3098 }
3099
3100 /* Implement the "value_is_changeable_p" varobj callback for most
3101    languages.  */
3102
3103 static int
3104 default_value_is_changeable_p (struct varobj *var)
3105 {
3106   int r;
3107   struct type *type;
3108
3109   if (CPLUS_FAKE_CHILD (var))
3110     return 0;
3111
3112   type = get_value_type (var);
3113
3114   switch (TYPE_CODE (type))
3115     {
3116     case TYPE_CODE_STRUCT:
3117     case TYPE_CODE_UNION:
3118     case TYPE_CODE_ARRAY:
3119       r = 0;
3120       break;
3121
3122     default:
3123       r = 1;
3124     }
3125
3126   return r;
3127 }
3128
3129 /* C */
3130
3131 static int
3132 c_number_of_children (struct varobj *var)
3133 {
3134   struct type *type = get_value_type (var);
3135   int children = 0;
3136   struct type *target;
3137
3138   adjust_value_for_child_access (NULL, &type, NULL, 0);
3139   target = get_target_type (type);
3140
3141   switch (TYPE_CODE (type))
3142     {
3143     case TYPE_CODE_ARRAY:
3144       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
3145           && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
3146         children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
3147       else
3148         /* If we don't know how many elements there are, don't display
3149            any.  */
3150         children = 0;
3151       break;
3152
3153     case TYPE_CODE_STRUCT:
3154     case TYPE_CODE_UNION:
3155       children = TYPE_NFIELDS (type);
3156       break;
3157
3158     case TYPE_CODE_PTR:
3159       /* The type here is a pointer to non-struct.  Typically, pointers
3160          have one child, except for function ptrs, which have no children,
3161          and except for void*, as we don't know what to show.
3162
3163          We can show char* so we allow it to be dereferenced.  If you decide
3164          to test for it, please mind that a little magic is necessary to
3165          properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
3166          TYPE_NAME == "char".  */
3167       if (TYPE_CODE (target) == TYPE_CODE_FUNC
3168           || TYPE_CODE (target) == TYPE_CODE_VOID)
3169         children = 0;
3170       else
3171         children = 1;
3172       break;
3173
3174     default:
3175       /* Other types have no children.  */
3176       break;
3177     }
3178
3179   return children;
3180 }
3181
3182 static char *
3183 c_name_of_variable (struct varobj *parent)
3184 {
3185   return xstrdup (parent->name);
3186 }
3187
3188 /* Return the value of element TYPE_INDEX of a structure
3189    value VALUE.  VALUE's type should be a structure,
3190    or union, or a typedef to struct/union.
3191
3192    Returns NULL if getting the value fails.  Never throws.  */
3193 static struct value *
3194 value_struct_element_index (struct value *value, int type_index)
3195 {
3196   struct value *result = NULL;
3197   volatile struct gdb_exception e;
3198   struct type *type = value_type (value);
3199
3200   type = check_typedef (type);
3201
3202   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
3203               || TYPE_CODE (type) == TYPE_CODE_UNION);
3204
3205   TRY_CATCH (e, RETURN_MASK_ERROR)
3206     {
3207       if (field_is_static (&TYPE_FIELD (type, type_index)))
3208         result = value_static_field (type, type_index);
3209       else
3210         result = value_primitive_field (value, 0, type_index, type);
3211     }
3212   if (e.reason < 0)
3213     {
3214       return NULL;
3215     }
3216   else
3217     {
3218       return result;
3219     }
3220 }
3221
3222 /* Obtain the information about child INDEX of the variable
3223    object PARENT.
3224    If CNAME is not null, sets *CNAME to the name of the child relative
3225    to the parent.
3226    If CVALUE is not null, sets *CVALUE to the value of the child.
3227    If CTYPE is not null, sets *CTYPE to the type of the child.
3228
3229    If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
3230    information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
3231    to NULL.  */
3232 static void 
3233 c_describe_child (struct varobj *parent, int index,
3234                   char **cname, struct value **cvalue, struct type **ctype,
3235                   char **cfull_expression)
3236 {
3237   struct value *value = parent->value;
3238   struct type *type = get_value_type (parent);
3239   char *parent_expression = NULL;
3240   int was_ptr;
3241   volatile struct gdb_exception except;
3242
3243   if (cname)
3244     *cname = NULL;
3245   if (cvalue)
3246     *cvalue = NULL;
3247   if (ctype)
3248     *ctype = NULL;
3249   if (cfull_expression)
3250     {
3251       *cfull_expression = NULL;
3252       parent_expression = varobj_get_path_expr (get_path_expr_parent (parent));
3253     }
3254   adjust_value_for_child_access (&value, &type, &was_ptr, 0);
3255       
3256   switch (TYPE_CODE (type))
3257     {
3258     case TYPE_CODE_ARRAY:
3259       if (cname)
3260         *cname
3261           = xstrdup (int_string (index 
3262                                  + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
3263                                  10, 1, 0, 0));
3264
3265       if (cvalue && value)
3266         {
3267           int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
3268
3269           TRY_CATCH (except, RETURN_MASK_ERROR)
3270             {
3271               *cvalue = value_subscript (value, real_index);
3272             }
3273         }
3274
3275       if (ctype)
3276         *ctype = get_target_type (type);
3277
3278       if (cfull_expression)
3279         *cfull_expression = 
3280           xstrprintf ("(%s)[%s]", parent_expression, 
3281                       int_string (index
3282                                   + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
3283                                   10, 1, 0, 0));
3284
3285
3286       break;
3287
3288     case TYPE_CODE_STRUCT:
3289     case TYPE_CODE_UNION:
3290       {
3291         const char *field_name;
3292
3293         /* If the type is anonymous and the field has no name,
3294            set an appropriate name.  */
3295         field_name = TYPE_FIELD_NAME (type, index);
3296         if (field_name == NULL || *field_name == '\0')
3297           {
3298             if (cname)
3299               {
3300                 if (TYPE_CODE (TYPE_FIELD_TYPE (type, index))
3301                     == TYPE_CODE_STRUCT)
3302                   *cname = xstrdup (ANONYMOUS_STRUCT_NAME);
3303                 else
3304                   *cname = xstrdup (ANONYMOUS_UNION_NAME);
3305               }
3306
3307             if (cfull_expression)
3308               *cfull_expression = xstrdup ("");
3309           }
3310         else
3311           {
3312             if (cname)
3313               *cname = xstrdup (field_name);
3314
3315             if (cfull_expression)
3316               {
3317                 char *join = was_ptr ? "->" : ".";
3318
3319                 *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression,
3320                                                 join, field_name);
3321               }
3322           }
3323
3324         if (cvalue && value)
3325           {
3326             /* For C, varobj index is the same as type index.  */
3327             *cvalue = value_struct_element_index (value, index);
3328           }
3329
3330         if (ctype)
3331           *ctype = TYPE_FIELD_TYPE (type, index);
3332       }
3333       break;
3334
3335     case TYPE_CODE_PTR:
3336       if (cname)
3337         *cname = xstrprintf ("*%s", parent->name);
3338
3339       if (cvalue && value)
3340         {
3341           TRY_CATCH (except, RETURN_MASK_ERROR)
3342             {
3343               *cvalue = value_ind (value);
3344             }
3345
3346           if (except.reason < 0)
3347             *cvalue = NULL;
3348         }
3349
3350       /* Don't use get_target_type because it calls
3351          check_typedef and here, we want to show the true
3352          declared type of the variable.  */
3353       if (ctype)
3354         *ctype = TYPE_TARGET_TYPE (type);
3355
3356       if (cfull_expression)
3357         *cfull_expression = xstrprintf ("*(%s)", parent_expression);
3358       
3359       break;
3360
3361     default:
3362       /* This should not happen.  */
3363       if (cname)
3364         *cname = xstrdup ("???");
3365       if (cfull_expression)
3366         *cfull_expression = xstrdup ("???");
3367       /* Don't set value and type, we don't know then.  */
3368     }
3369 }
3370
3371 static char *
3372 c_name_of_child (struct varobj *parent, int index)
3373 {
3374   char *name;
3375
3376   c_describe_child (parent, index, &name, NULL, NULL, NULL);
3377   return name;
3378 }
3379
3380 static char *
3381 c_path_expr_of_child (struct varobj *child)
3382 {
3383   c_describe_child (child->parent, child->index, NULL, NULL, NULL, 
3384                     &child->path_expr);
3385   return child->path_expr;
3386 }
3387
3388 /* If frame associated with VAR can be found, switch
3389    to it and return 1.  Otherwise, return 0.  */
3390 static int
3391 check_scope (struct varobj *var)
3392 {
3393   struct frame_info *fi;
3394   int scope;
3395
3396   fi = frame_find_by_id (var->root->frame);
3397   scope = fi != NULL;
3398
3399   if (fi)
3400     {
3401       CORE_ADDR pc = get_frame_pc (fi);
3402
3403       if (pc <  BLOCK_START (var->root->valid_block) ||
3404           pc >= BLOCK_END (var->root->valid_block))
3405         scope = 0;
3406       else
3407         select_frame (fi);
3408     }
3409   return scope;
3410 }
3411
3412 static struct value *
3413 c_value_of_root (struct varobj **var_handle)
3414 {
3415   struct value *new_val = NULL;
3416   struct varobj *var = *var_handle;
3417   int within_scope = 0;
3418   struct cleanup *back_to;
3419                                                                  
3420   /*  Only root variables can be updated...  */
3421   if (!is_root_p (var))
3422     /* Not a root var.  */
3423     return NULL;
3424
3425   back_to = make_cleanup_restore_current_thread ();
3426
3427   /* Determine whether the variable is still around.  */
3428   if (var->root->valid_block == NULL || var->root->floating)
3429     within_scope = 1;
3430   else if (var->root->thread_id == 0)
3431     {
3432       /* The program was single-threaded when the variable object was
3433          created.  Technically, it's possible that the program became
3434          multi-threaded since then, but we don't support such
3435          scenario yet.  */
3436       within_scope = check_scope (var);   
3437     }
3438   else
3439     {
3440       ptid_t ptid = thread_id_to_pid (var->root->thread_id);
3441       if (in_thread_list (ptid))
3442         {
3443           switch_to_thread (ptid);
3444           within_scope = check_scope (var);
3445         }
3446     }
3447
3448   if (within_scope)
3449     {
3450       volatile struct gdb_exception except;
3451
3452       /* We need to catch errors here, because if evaluate
3453          expression fails we want to just return NULL.  */
3454       TRY_CATCH (except, RETURN_MASK_ERROR)
3455         {
3456           new_val = evaluate_expression (var->root->exp);
3457         }
3458
3459       return new_val;
3460     }
3461
3462   do_cleanups (back_to);
3463
3464   return NULL;
3465 }
3466
3467 static struct value *
3468 c_value_of_child (struct varobj *parent, int index)
3469 {
3470   struct value *value = NULL;
3471
3472   c_describe_child (parent, index, NULL, &value, NULL, NULL);
3473   return value;
3474 }
3475
3476 static struct type *
3477 c_type_of_child (struct varobj *parent, int index)
3478 {
3479   struct type *type = NULL;
3480
3481   c_describe_child (parent, index, NULL, NULL, &type, NULL);
3482   return type;
3483 }
3484
3485 static char *
3486 c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3487 {
3488   /* BOGUS: if val_print sees a struct/class, or a reference to one,
3489      it will print out its children instead of "{...}".  So we need to
3490      catch that case explicitly.  */
3491   struct type *type = get_type (var);
3492
3493   /* Strip top-level references.  */
3494   while (TYPE_CODE (type) == TYPE_CODE_REF)
3495     type = check_typedef (TYPE_TARGET_TYPE (type));
3496
3497   switch (TYPE_CODE (type))
3498     {
3499     case TYPE_CODE_STRUCT:
3500     case TYPE_CODE_UNION:
3501       return xstrdup ("{...}");
3502       /* break; */
3503
3504     case TYPE_CODE_ARRAY:
3505       {
3506         char *number;
3507
3508         number = xstrprintf ("[%d]", var->num_children);
3509         return (number);
3510       }
3511       /* break; */
3512
3513     default:
3514       {
3515         if (var->value == NULL)
3516           {
3517             /* This can happen if we attempt to get the value of a struct
3518                member when the parent is an invalid pointer.  This is an
3519                error condition, so we should tell the caller.  */
3520             return NULL;
3521           }
3522         else
3523           {
3524             if (var->not_fetched && value_lazy (var->value))
3525               /* Frozen variable and no value yet.  We don't
3526                  implicitly fetch the value.  MI response will
3527                  use empty string for the value, which is OK.  */
3528               return NULL;
3529
3530             gdb_assert (varobj_value_is_changeable_p (var));
3531             gdb_assert (!value_lazy (var->value));
3532             
3533             /* If the specified format is the current one,
3534                we can reuse print_value.  */
3535             if (format == var->format)
3536               return xstrdup (var->print_value);
3537             else
3538               return value_get_print_value (var->value, format, var);
3539           }
3540       }
3541     }
3542 }
3543 \f
3544
3545 /* C++ */
3546
3547 static int
3548 cplus_number_of_children (struct varobj *var)
3549 {
3550   struct value *value = NULL;
3551   struct type *type;
3552   int children, dont_know;
3553   int lookup_actual_type = 0;
3554   struct value_print_options opts;
3555
3556   dont_know = 1;
3557   children = 0;
3558
3559   get_user_print_options (&opts);
3560
3561   if (!CPLUS_FAKE_CHILD (var))
3562     {
3563       type = get_value_type (var);
3564
3565       /* It is necessary to access a real type (via RTTI).  */
3566       if (opts.objectprint)
3567         {
3568           value = var->value;
3569           lookup_actual_type = (TYPE_CODE (var->type) == TYPE_CODE_REF
3570                                 || TYPE_CODE (var->type) == TYPE_CODE_PTR);
3571         }
3572       adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
3573
3574       if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
3575           ((TYPE_CODE (type)) == TYPE_CODE_UNION))
3576         {
3577           int kids[3];
3578
3579           cplus_class_num_children (type, kids);
3580           if (kids[v_public] != 0)
3581             children++;
3582           if (kids[v_private] != 0)
3583             children++;
3584           if (kids[v_protected] != 0)
3585             children++;
3586
3587           /* Add any baseclasses.  */
3588           children += TYPE_N_BASECLASSES (type);
3589           dont_know = 0;
3590
3591           /* FIXME: save children in var.  */
3592         }
3593     }
3594   else
3595     {
3596       int kids[3];
3597
3598       type = get_value_type (var->parent);
3599
3600       /* It is necessary to access a real type (via RTTI).  */
3601       if (opts.objectprint)
3602         {
3603           struct varobj *parent = var->parent;
3604
3605           value = parent->value;
3606           lookup_actual_type = (TYPE_CODE (parent->type) == TYPE_CODE_REF
3607                                 || TYPE_CODE (parent->type) == TYPE_CODE_PTR);
3608         }
3609       adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
3610
3611       cplus_class_num_children (type, kids);
3612       if (strcmp (var->name, "public") == 0)
3613         children = kids[v_public];
3614       else if (strcmp (var->name, "private") == 0)
3615         children = kids[v_private];
3616       else
3617         children = kids[v_protected];
3618       dont_know = 0;
3619     }
3620
3621   if (dont_know)
3622     children = c_number_of_children (var);
3623
3624   return children;
3625 }
3626
3627 /* Compute # of public, private, and protected variables in this class.
3628    That means we need to descend into all baseclasses and find out
3629    how many are there, too.  */
3630 static void
3631 cplus_class_num_children (struct type *type, int children[3])
3632 {
3633   int i, vptr_fieldno;
3634   struct type *basetype = NULL;
3635
3636   children[v_public] = 0;
3637   children[v_private] = 0;
3638   children[v_protected] = 0;
3639
3640   vptr_fieldno = get_vptr_fieldno (type, &basetype);
3641   for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
3642     {
3643       /* If we have a virtual table pointer, omit it.  Even if virtual
3644          table pointers are not specifically marked in the debug info,
3645          they should be artificial.  */
3646       if ((type == basetype && i == vptr_fieldno)
3647           || TYPE_FIELD_ARTIFICIAL (type, i))
3648         continue;
3649
3650       if (TYPE_FIELD_PROTECTED (type, i))
3651         children[v_protected]++;
3652       else if (TYPE_FIELD_PRIVATE (type, i))
3653         children[v_private]++;
3654       else
3655         children[v_public]++;
3656     }
3657 }
3658
3659 static char *
3660 cplus_name_of_variable (struct varobj *parent)
3661 {
3662   return c_name_of_variable (parent);
3663 }
3664
3665 enum accessibility { private_field, protected_field, public_field };
3666
3667 /* Check if field INDEX of TYPE has the specified accessibility.
3668    Return 0 if so and 1 otherwise.  */
3669 static int 
3670 match_accessibility (struct type *type, int index, enum accessibility acc)
3671 {
3672   if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
3673     return 1;
3674   else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
3675     return 1;
3676   else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
3677            && !TYPE_FIELD_PROTECTED (type, index))
3678     return 1;
3679   else
3680     return 0;
3681 }
3682
3683 static void
3684 cplus_describe_child (struct varobj *parent, int index,
3685                       char **cname, struct value **cvalue, struct type **ctype,
3686                       char **cfull_expression)
3687 {
3688   struct value *value;
3689   struct type *type;
3690   int was_ptr;
3691   int lookup_actual_type = 0;
3692   char *parent_expression = NULL;
3693   struct varobj *var;
3694   struct value_print_options opts;
3695
3696   if (cname)
3697     *cname = NULL;
3698   if (cvalue)
3699     *cvalue = NULL;
3700   if (ctype)
3701     *ctype = NULL;
3702   if (cfull_expression)
3703     *cfull_expression = NULL;
3704
3705   get_user_print_options (&opts);
3706
3707   var = (CPLUS_FAKE_CHILD (parent)) ? parent->parent : parent;
3708   if (opts.objectprint)
3709     lookup_actual_type = (TYPE_CODE (var->type) == TYPE_CODE_REF
3710                           || TYPE_CODE (var->type) == TYPE_CODE_PTR);
3711   value = var->value;
3712   type = get_value_type (var);
3713   if (cfull_expression)
3714     parent_expression = varobj_get_path_expr (get_path_expr_parent (var));
3715
3716   adjust_value_for_child_access (&value, &type, &was_ptr, lookup_actual_type);
3717
3718   if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3719       || TYPE_CODE (type) == TYPE_CODE_UNION)
3720     {
3721       char *join = was_ptr ? "->" : ".";
3722
3723       if (CPLUS_FAKE_CHILD (parent))
3724         {
3725           /* The fields of the class type are ordered as they
3726              appear in the class.  We are given an index for a
3727              particular access control type ("public","protected",
3728              or "private").  We must skip over fields that don't
3729              have the access control we are looking for to properly
3730              find the indexed field.  */
3731           int type_index = TYPE_N_BASECLASSES (type);
3732           enum accessibility acc = public_field;
3733           int vptr_fieldno;
3734           struct type *basetype = NULL;
3735           const char *field_name;
3736
3737           vptr_fieldno = get_vptr_fieldno (type, &basetype);
3738           if (strcmp (parent->name, "private") == 0)
3739             acc = private_field;
3740           else if (strcmp (parent->name, "protected") == 0)
3741             acc = protected_field;
3742
3743           while (index >= 0)
3744             {
3745               if ((type == basetype && type_index == vptr_fieldno)
3746                   || TYPE_FIELD_ARTIFICIAL (type, type_index))
3747                 ; /* ignore vptr */
3748               else if (match_accessibility (type, type_index, acc))
3749                     --index;
3750                   ++type_index;
3751             }
3752           --type_index;
3753
3754           /* If the type is anonymous and the field has no name,
3755              set an appopriate name.  */
3756           field_name = TYPE_FIELD_NAME (type, type_index);
3757           if (field_name == NULL || *field_name == '\0')
3758             {
3759               if (cname)
3760                 {
3761                   if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
3762                       == TYPE_CODE_STRUCT)
3763                     *cname = xstrdup (ANONYMOUS_STRUCT_NAME);
3764                   else if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
3765                            == TYPE_CODE_UNION)
3766                     *cname = xstrdup (ANONYMOUS_UNION_NAME);
3767                 }
3768
3769               if (cfull_expression)
3770                 *cfull_expression = xstrdup ("");
3771             }
3772           else
3773             {
3774               if (cname)
3775                 *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
3776
3777               if (cfull_expression)
3778                 *cfull_expression
3779                   = xstrprintf ("((%s)%s%s)", parent_expression, join,
3780                                 field_name);
3781             }
3782
3783           if (cvalue && value)
3784             *cvalue = value_struct_element_index (value, type_index);
3785
3786           if (ctype)
3787             *ctype = TYPE_FIELD_TYPE (type, type_index);
3788         }
3789       else if (index < TYPE_N_BASECLASSES (type))
3790         {
3791           /* This is a baseclass.  */
3792           if (cname)
3793             *cname = xstrdup (TYPE_FIELD_NAME (type, index));
3794
3795           if (cvalue && value)
3796             *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
3797
3798           if (ctype)
3799             {
3800               *ctype = TYPE_FIELD_TYPE (type, index);
3801             }
3802
3803           if (cfull_expression)
3804             {
3805               char *ptr = was_ptr ? "*" : "";
3806
3807               /* Cast the parent to the base' type.  Note that in gdb,
3808                  expression like 
3809                          (Base1)d
3810                  will create an lvalue, for all appearences, so we don't
3811                  need to use more fancy:
3812                          *(Base1*)(&d)
3813                  construct.
3814
3815                  When we are in the scope of the base class or of one
3816                  of its children, the type field name will be interpreted
3817                  as a constructor, if it exists.  Therefore, we must
3818                  indicate that the name is a class name by using the
3819                  'class' keyword.  See PR mi/11912  */
3820               *cfull_expression = xstrprintf ("(%s(class %s%s) %s)", 
3821                                               ptr, 
3822                                               TYPE_FIELD_NAME (type, index),
3823                                               ptr,
3824                                               parent_expression);
3825             }
3826         }
3827       else
3828         {
3829           char *access = NULL;
3830           int children[3];
3831
3832           cplus_class_num_children (type, children);
3833
3834           /* Everything beyond the baseclasses can
3835              only be "public", "private", or "protected"
3836
3837              The special "fake" children are always output by varobj in
3838              this order.  So if INDEX == 2, it MUST be "protected".  */
3839           index -= TYPE_N_BASECLASSES (type);
3840           switch (index)
3841             {
3842             case 0:
3843               if (children[v_public] > 0)
3844                 access = "public";
3845               else if (children[v_private] > 0)
3846                 access = "private";
3847               else 
3848                 access = "protected";
3849               break;
3850             case 1:
3851               if (children[v_public] > 0)
3852                 {
3853                   if (children[v_private] > 0)
3854                     access = "private";
3855                   else
3856                     access = "protected";
3857                 }
3858               else if (children[v_private] > 0)
3859                 access = "protected";
3860               break;
3861             case 2:
3862               /* Must be protected.  */
3863               access = "protected";
3864               break;
3865             default:
3866               /* error!  */
3867               break;
3868             }
3869
3870           gdb_assert (access);
3871           if (cname)
3872             *cname = xstrdup (access);
3873
3874           /* Value and type and full expression are null here.  */
3875         }
3876     }
3877   else
3878     {
3879       c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
3880     }  
3881 }
3882
3883 static char *
3884 cplus_name_of_child (struct varobj *parent, int index)
3885 {
3886   char *name = NULL;
3887
3888   cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
3889   return name;
3890 }
3891
3892 static char *
3893 cplus_path_expr_of_child (struct varobj *child)
3894 {
3895   cplus_describe_child (child->parent, child->index, NULL, NULL, NULL, 
3896                         &child->path_expr);
3897   return child->path_expr;
3898 }
3899
3900 static struct value *
3901 cplus_value_of_root (struct varobj **var_handle)
3902 {
3903   return c_value_of_root (var_handle);
3904 }
3905
3906 static struct value *
3907 cplus_value_of_child (struct varobj *parent, int index)
3908 {
3909   struct value *value = NULL;
3910
3911   cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
3912   return value;
3913 }
3914
3915 static struct type *
3916 cplus_type_of_child (struct varobj *parent, int index)
3917 {
3918   struct type *type = NULL;
3919
3920   cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
3921   return type;
3922 }
3923
3924 static char *
3925 cplus_value_of_variable (struct varobj *var, 
3926                          enum varobj_display_formats format)
3927 {
3928
3929   /* If we have one of our special types, don't print out
3930      any value.  */
3931   if (CPLUS_FAKE_CHILD (var))
3932     return xstrdup ("");
3933
3934   return c_value_of_variable (var, format);
3935 }
3936 \f
3937 /* Java */
3938
3939 static int
3940 java_number_of_children (struct varobj *var)
3941 {
3942   return cplus_number_of_children (var);
3943 }
3944
3945 static char *
3946 java_name_of_variable (struct varobj *parent)
3947 {
3948   char *p, *name;
3949
3950   name = cplus_name_of_variable (parent);
3951   /* If  the name has "-" in it, it is because we
3952      needed to escape periods in the name...  */
3953   p = name;
3954
3955   while (*p != '\000')
3956     {
3957       if (*p == '-')
3958         *p = '.';
3959       p++;
3960     }
3961
3962   return name;
3963 }
3964
3965 static char *
3966 java_name_of_child (struct varobj *parent, int index)
3967 {
3968   char *name, *p;
3969
3970   name = cplus_name_of_child (parent, index);
3971   /* Escape any periods in the name...  */
3972   p = name;
3973
3974   while (*p != '\000')
3975     {
3976       if (*p == '.')
3977         *p = '-';
3978       p++;
3979     }
3980
3981   return name;
3982 }
3983
3984 static char *
3985 java_path_expr_of_child (struct varobj *child)
3986 {
3987   return NULL;
3988 }
3989
3990 static struct value *
3991 java_value_of_root (struct varobj **var_handle)
3992 {
3993   return cplus_value_of_root (var_handle);
3994 }
3995
3996 static struct value *
3997 java_value_of_child (struct varobj *parent, int index)
3998 {
3999   return cplus_value_of_child (parent, index);
4000 }
4001
4002 static struct type *
4003 java_type_of_child (struct varobj *parent, int index)
4004 {
4005   return cplus_type_of_child (parent, index);
4006 }
4007
4008 static char *
4009 java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
4010 {
4011   return cplus_value_of_variable (var, format);
4012 }
4013
4014 /* Ada specific callbacks for VAROBJs.  */
4015
4016 static int
4017 ada_number_of_children (struct varobj *var)
4018 {
4019   return ada_varobj_get_number_of_children (var->value, var->type);
4020 }
4021
4022 static char *
4023 ada_name_of_variable (struct varobj *parent)
4024 {
4025   return c_name_of_variable (parent);
4026 }
4027
4028 static char *
4029 ada_name_of_child (struct varobj *parent, int index)
4030 {
4031   return ada_varobj_get_name_of_child (parent->value, parent->type,
4032                                        parent->name, index);
4033 }
4034
4035 static char*
4036 ada_path_expr_of_child (struct varobj *child)
4037 {
4038   struct varobj *parent = child->parent;
4039   const char *parent_path_expr = varobj_get_path_expr (parent);
4040
4041   return ada_varobj_get_path_expr_of_child (parent->value,
4042                                             parent->type,
4043                                             parent->name,
4044                                             parent_path_expr,
4045                                             child->index);
4046 }
4047
4048 static struct value *
4049 ada_value_of_root (struct varobj **var_handle)
4050 {
4051   return c_value_of_root (var_handle);
4052 }
4053
4054 static struct value *
4055 ada_value_of_child (struct varobj *parent, int index)
4056 {
4057   return ada_varobj_get_value_of_child (parent->value, parent->type,
4058                                         parent->name, index);
4059 }
4060
4061 static struct type *
4062 ada_type_of_child (struct varobj *parent, int index)
4063 {
4064   return ada_varobj_get_type_of_child (parent->value, parent->type,
4065                                        index);
4066 }
4067
4068 static char *
4069 ada_value_of_variable (struct varobj *var, enum varobj_display_formats format)
4070 {
4071   struct value_print_options opts;
4072
4073   get_formatted_print_options (&opts, format_code[(int) format]);
4074   opts.deref_ref = 0;
4075   opts.raw = 1;
4076
4077   return ada_varobj_get_value_of_variable (var->value, var->type, &opts);
4078 }
4079
4080 /* Implement the "value_is_changeable_p" routine for Ada.  */
4081
4082 static int
4083 ada_value_is_changeable_p (struct varobj *var)
4084 {
4085   struct type *type = var->value ? value_type (var->value) : var->type;
4086
4087   if (ada_is_array_descriptor_type (type)
4088       && TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
4089     {
4090       /* This is in reality a pointer to an unconstrained array.
4091          its value is changeable.  */
4092       return 1;
4093     }
4094
4095   if (ada_is_string_type (type))
4096     {
4097       /* We display the contents of the string in the array's
4098          "value" field.  The contents can change, so consider
4099          that the array is changeable.  */
4100       return 1;
4101     }
4102
4103   return default_value_is_changeable_p (var);
4104 }
4105
4106 /* Implement the "value_has_mutated" routine for Ada.  */
4107
4108 static int
4109 ada_value_has_mutated (struct varobj *var, struct value *new_val,
4110                        struct type *new_type)
4111 {
4112   int i;
4113   int from = -1;
4114   int to = -1;
4115
4116   /* If the number of fields have changed, then for sure the type
4117      has mutated.  */
4118   if (ada_varobj_get_number_of_children (new_val, new_type)
4119       != var->num_children)
4120     return 1;
4121
4122   /* If the number of fields have remained the same, then we need
4123      to check the name of each field.  If they remain the same,
4124      then chances are the type hasn't mutated.  This is technically
4125      an incomplete test, as the child's type might have changed
4126      despite the fact that the name remains the same.  But we'll
4127      handle this situation by saying that the child has mutated,
4128      not this value.
4129
4130      If only part (or none!) of the children have been fetched,
4131      then only check the ones we fetched.  It does not matter
4132      to the frontend whether a child that it has not fetched yet
4133      has mutated or not. So just assume it hasn't.  */
4134
4135   restrict_range (var->children, &from, &to);
4136   for (i = from; i < to; i++)
4137     if (strcmp (ada_varobj_get_name_of_child (new_val, new_type,
4138                                               var->name, i),
4139                 VEC_index (varobj_p, var->children, i)->name) != 0)
4140       return 1;
4141
4142   return 0;
4143 }
4144
4145 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
4146    with an arbitrary caller supplied DATA pointer.  */
4147
4148 void
4149 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
4150 {
4151   struct varobj_root *var_root, *var_root_next;
4152
4153   /* Iterate "safely" - handle if the callee deletes its passed VAROBJ.  */
4154
4155   for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
4156     {
4157       var_root_next = var_root->next;
4158
4159       (*func) (var_root->rootvar, data);
4160     }
4161 }
4162 \f
4163 extern void _initialize_varobj (void);
4164 void
4165 _initialize_varobj (void)
4166 {
4167   int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
4168
4169   varobj_table = xmalloc (sizeof_table);
4170   memset (varobj_table, 0, sizeof_table);
4171
4172   add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
4173                             &varobjdebug,
4174                             _("Set varobj debugging."),
4175                             _("Show varobj debugging."),
4176                             _("When non-zero, varobj debugging is enabled."),
4177                             NULL, show_varobjdebug,
4178                             &setlist, &showlist);
4179 }
4180
4181 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
4182    defined on globals.  It is a helper for varobj_invalidate.  */
4183
4184 static void
4185 varobj_invalidate_iter (struct varobj *var, void *unused)
4186 {
4187   /* Floating varobjs are reparsed on each stop, so we don't care if the
4188      presently parsed expression refers to something that's gone.  */
4189   if (var->root->floating)
4190     return;
4191
4192   /* global var must be re-evaluated.  */     
4193   if (var->root->valid_block == NULL)
4194     {
4195       struct varobj *tmp_var;
4196
4197       /* Try to create a varobj with same expression.  If we succeed
4198          replace the old varobj, otherwise invalidate it.  */
4199       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
4200                                USE_CURRENT_FRAME);
4201       if (tmp_var != NULL) 
4202         { 
4203           tmp_var->obj_name = xstrdup (var->obj_name);
4204           varobj_delete (var, NULL, 0);
4205           install_variable (tmp_var);
4206         }
4207       else
4208         var->root->is_valid = 0;
4209     }
4210   else /* locals must be invalidated.  */
4211     var->root->is_valid = 0;
4212 }
4213
4214 /* Invalidate the varobjs that are tied to locals and re-create the ones that
4215    are defined on globals.
4216    Invalidated varobjs will be always printed in_scope="invalid".  */
4217
4218 void 
4219 varobj_invalidate (void)
4220 {
4221   all_root_varobjs (varobj_invalidate_iter, NULL);
4222 }