]> Git Repo - binutils.git/blob - gdb/varobj.c
* gdb.threads/manythreads.c (main): Check if PTHREAD_STACK_MIN is
[binutils.git] / gdb / varobj.c
1 /* Implementation of the GDB variable objects API.
2
3    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4    2009 Free Software Foundation, Inc.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18
19 #include "defs.h"
20 #include "exceptions.h"
21 #include "value.h"
22 #include "expression.h"
23 #include "frame.h"
24 #include "language.h"
25 #include "wrapper.h"
26 #include "gdbcmd.h"
27 #include "block.h"
28 #include "valprint.h"
29
30 #include "gdb_assert.h"
31 #include "gdb_string.h"
32
33 #include "varobj.h"
34 #include "vec.h"
35 #include "gdbthread.h"
36 #include "inferior.h"
37
38 #if HAVE_PYTHON
39 #include "python/python.h"
40 #include "python/python-internal.h"
41 #else
42 typedef int PyObject;
43 #endif
44
45 /* Non-zero if we want to see trace of varobj level stuff.  */
46
47 int varobjdebug = 0;
48 static void
49 show_varobjdebug (struct ui_file *file, int from_tty,
50                   struct cmd_list_element *c, const char *value)
51 {
52   fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
53 }
54
55 /* String representations of gdb's format codes */
56 char *varobj_format_string[] =
57   { "natural", "binary", "decimal", "hexadecimal", "octal" };
58
59 /* String representations of gdb's known languages */
60 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
61
62 /* Data structures */
63
64 /* Every root variable has one of these structures saved in its
65    varobj. Members which must be free'd are noted. */
66 struct varobj_root
67 {
68
69   /* Alloc'd expression for this parent. */
70   struct expression *exp;
71
72   /* Block for which this expression is valid */
73   struct block *valid_block;
74
75   /* The frame for this expression.  This field is set iff valid_block is
76      not NULL.  */
77   struct frame_id frame;
78
79   /* The thread ID that this varobj_root belong to.  This field
80      is only valid if valid_block is not NULL.  
81      When not 0, indicates which thread 'frame' belongs to.
82      When 0, indicates that the thread list was empty when the varobj_root
83      was created.  */
84   int thread_id;
85
86   /* If 1, the -var-update always recomputes the value in the
87      current thread and frame.  Otherwise, variable object is
88      always updated in the specific scope/thread/frame  */
89   int floating;
90
91   /* Flag that indicates validity: set to 0 when this varobj_root refers 
92      to symbols that do not exist anymore.  */
93   int is_valid;
94
95   /* Language info for this variable and its children */
96   struct language_specific *lang;
97
98   /* The varobj for this root node. */
99   struct varobj *rootvar;
100
101   /* Next root variable */
102   struct varobj_root *next;
103 };
104
105 /* Every variable in the system has a structure of this type defined
106    for it. This structure holds all information necessary to manipulate
107    a particular object variable. Members which must be freed are noted. */
108 struct varobj
109 {
110
111   /* Alloc'd name of the variable for this object.. If this variable is a
112      child, then this name will be the child's source name.
113      (bar, not foo.bar) */
114   /* NOTE: This is the "expression" */
115   char *name;
116
117   /* Alloc'd expression for this child.  Can be used to create a
118      root variable corresponding to this child.  */
119   char *path_expr;
120
121   /* The alloc'd name for this variable's object. This is here for
122      convenience when constructing this object's children. */
123   char *obj_name;
124
125   /* Index of this variable in its parent or -1 */
126   int index;
127
128   /* The type of this variable.  This can be NULL
129      for artifial variable objects -- currently, the "accessibility" 
130      variable objects in C++.  */
131   struct type *type;
132
133   /* The value of this expression or subexpression.  A NULL value
134      indicates there was an error getting this value.
135      Invariant: if varobj_value_is_changeable_p (this) is non-zero, 
136      the value is either NULL, or not lazy.  */
137   struct value *value;
138
139   /* The number of (immediate) children this variable has */
140   int num_children;
141
142   /* If this object is a child, this points to its immediate parent. */
143   struct varobj *parent;
144
145   /* Children of this object.  */
146   VEC (varobj_p) *children;
147
148   /* Whether the children of this varobj were requested.  This field is
149      used to decide if dynamic varobj should recompute their children.
150      In the event that the frontend never asked for the children, we
151      can avoid that.  */
152   int children_requested;
153
154   /* Description of the root variable. Points to root variable for children. */
155   struct varobj_root *root;
156
157   /* The format of the output for this object */
158   enum varobj_display_formats format;
159
160   /* Was this variable updated via a varobj_set_value operation */
161   int updated;
162
163   /* Last print value.  */
164   char *print_value;
165
166   /* Is this variable frozen.  Frozen variables are never implicitly
167      updated by -var-update * 
168      or -var-update <direct-or-indirect-parent>.  */
169   int frozen;
170
171   /* Is the value of this variable intentionally not fetched?  It is
172      not fetched if either the variable is frozen, or any parents is
173      frozen.  */
174   int not_fetched;
175
176   /* The pretty-printer that has been constructed.  If NULL, then a
177      new printer object is needed, and one will be constructed.  */
178   PyObject *pretty_printer;
179 };
180
181 struct cpstack
182 {
183   char *name;
184   struct cpstack *next;
185 };
186
187 /* A list of varobjs */
188
189 struct vlist
190 {
191   struct varobj *var;
192   struct vlist *next;
193 };
194
195 /* Private function prototypes */
196
197 /* Helper functions for the above subcommands. */
198
199 static int delete_variable (struct cpstack **, struct varobj *, int);
200
201 static void delete_variable_1 (struct cpstack **, int *,
202                                struct varobj *, int, int);
203
204 static int install_variable (struct varobj *);
205
206 static void uninstall_variable (struct varobj *);
207
208 static struct varobj *create_child (struct varobj *, int, char *);
209
210 static struct varobj *
211 create_child_with_value (struct varobj *parent, int index, const char *name,
212                          struct value *value);
213
214 /* Utility routines */
215
216 static struct varobj *new_variable (void);
217
218 static struct varobj *new_root_variable (void);
219
220 static void free_variable (struct varobj *var);
221
222 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
223
224 static struct type *get_type (struct varobj *var);
225
226 static struct type *get_value_type (struct varobj *var);
227
228 static struct type *get_target_type (struct type *);
229
230 static enum varobj_display_formats variable_default_display (struct varobj *);
231
232 static void cppush (struct cpstack **pstack, char *name);
233
234 static char *cppop (struct cpstack **pstack);
235
236 static int install_new_value (struct varobj *var, struct value *value, 
237                               int initial);
238
239 static void install_default_visualizer (struct varobj *var);
240
241 /* Language-specific routines. */
242
243 static enum varobj_languages variable_language (struct varobj *var);
244
245 static int number_of_children (struct varobj *);
246
247 static char *name_of_variable (struct varobj *);
248
249 static char *name_of_child (struct varobj *, int);
250
251 static struct value *value_of_root (struct varobj **var_handle, int *);
252
253 static struct value *value_of_child (struct varobj *parent, int index);
254
255 static char *my_value_of_variable (struct varobj *var,
256                                    enum varobj_display_formats format);
257
258 static char *value_get_print_value (struct value *value,
259                                     enum varobj_display_formats format,
260                                     PyObject *value_formatter);
261
262 static int varobj_value_is_changeable_p (struct varobj *var);
263
264 static int is_root_p (struct varobj *var);
265
266 static struct varobj *
267 varobj_add_child (struct varobj *var, const char *name, struct value *value);
268
269 /* C implementation */
270
271 static int c_number_of_children (struct varobj *var);
272
273 static char *c_name_of_variable (struct varobj *parent);
274
275 static char *c_name_of_child (struct varobj *parent, int index);
276
277 static char *c_path_expr_of_child (struct varobj *child);
278
279 static struct value *c_value_of_root (struct varobj **var_handle);
280
281 static struct value *c_value_of_child (struct varobj *parent, int index);
282
283 static struct type *c_type_of_child (struct varobj *parent, int index);
284
285 static char *c_value_of_variable (struct varobj *var,
286                                   enum varobj_display_formats format);
287
288 /* C++ implementation */
289
290 static int cplus_number_of_children (struct varobj *var);
291
292 static void cplus_class_num_children (struct type *type, int children[3]);
293
294 static char *cplus_name_of_variable (struct varobj *parent);
295
296 static char *cplus_name_of_child (struct varobj *parent, int index);
297
298 static char *cplus_path_expr_of_child (struct varobj *child);
299
300 static struct value *cplus_value_of_root (struct varobj **var_handle);
301
302 static struct value *cplus_value_of_child (struct varobj *parent, int index);
303
304 static struct type *cplus_type_of_child (struct varobj *parent, int index);
305
306 static char *cplus_value_of_variable (struct varobj *var,
307                                       enum varobj_display_formats format);
308
309 /* Java implementation */
310
311 static int java_number_of_children (struct varobj *var);
312
313 static char *java_name_of_variable (struct varobj *parent);
314
315 static char *java_name_of_child (struct varobj *parent, int index);
316
317 static char *java_path_expr_of_child (struct varobj *child);
318
319 static struct value *java_value_of_root (struct varobj **var_handle);
320
321 static struct value *java_value_of_child (struct varobj *parent, int index);
322
323 static struct type *java_type_of_child (struct varobj *parent, int index);
324
325 static char *java_value_of_variable (struct varobj *var,
326                                      enum varobj_display_formats format);
327
328 /* The language specific vector */
329
330 struct language_specific
331 {
332
333   /* The language of this variable */
334   enum varobj_languages language;
335
336   /* The number of children of PARENT. */
337   int (*number_of_children) (struct varobj * parent);
338
339   /* The name (expression) of a root varobj. */
340   char *(*name_of_variable) (struct varobj * parent);
341
342   /* The name of the INDEX'th child of PARENT. */
343   char *(*name_of_child) (struct varobj * parent, int index);
344
345   /* Returns the rooted expression of CHILD, which is a variable
346      obtain that has some parent.  */
347   char *(*path_expr_of_child) (struct varobj * child);
348
349   /* The ``struct value *'' of the root variable ROOT. */
350   struct value *(*value_of_root) (struct varobj ** root_handle);
351
352   /* The ``struct value *'' of the INDEX'th child of PARENT. */
353   struct value *(*value_of_child) (struct varobj * parent, int index);
354
355   /* The type of the INDEX'th child of PARENT. */
356   struct type *(*type_of_child) (struct varobj * parent, int index);
357
358   /* The current value of VAR. */
359   char *(*value_of_variable) (struct varobj * var,
360                               enum varobj_display_formats format);
361 };
362
363 /* Array of known source language routines. */
364 static struct language_specific languages[vlang_end] = {
365   /* Unknown (try treating as C */
366   {
367    vlang_unknown,
368    c_number_of_children,
369    c_name_of_variable,
370    c_name_of_child,
371    c_path_expr_of_child,
372    c_value_of_root,
373    c_value_of_child,
374    c_type_of_child,
375    c_value_of_variable}
376   ,
377   /* C */
378   {
379    vlang_c,
380    c_number_of_children,
381    c_name_of_variable,
382    c_name_of_child,
383    c_path_expr_of_child,
384    c_value_of_root,
385    c_value_of_child,
386    c_type_of_child,
387    c_value_of_variable}
388   ,
389   /* C++ */
390   {
391    vlang_cplus,
392    cplus_number_of_children,
393    cplus_name_of_variable,
394    cplus_name_of_child,
395    cplus_path_expr_of_child,
396    cplus_value_of_root,
397    cplus_value_of_child,
398    cplus_type_of_child,
399    cplus_value_of_variable}
400   ,
401   /* Java */
402   {
403    vlang_java,
404    java_number_of_children,
405    java_name_of_variable,
406    java_name_of_child,
407    java_path_expr_of_child,
408    java_value_of_root,
409    java_value_of_child,
410    java_type_of_child,
411    java_value_of_variable}
412 };
413
414 /* A little convenience enum for dealing with C++/Java */
415 enum vsections
416 {
417   v_public = 0, v_private, v_protected
418 };
419
420 /* Private data */
421
422 /* Mappings of varobj_display_formats enums to gdb's format codes */
423 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
424
425 /* Header of the list of root variable objects */
426 static struct varobj_root *rootlist;
427 static int rootcount = 0;       /* number of root varobjs in the list */
428
429 /* Prime number indicating the number of buckets in the hash table */
430 /* A prime large enough to avoid too many colisions */
431 #define VAROBJ_TABLE_SIZE 227
432
433 /* Pointer to the varobj hash table (built at run time) */
434 static struct vlist **varobj_table;
435
436 /* Is the variable X one of our "fake" children? */
437 #define CPLUS_FAKE_CHILD(x) \
438 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
439 \f
440
441 /* API Implementation */
442 static int
443 is_root_p (struct varobj *var)
444 {
445   return (var->root->rootvar == var);
446 }
447
448 /* Creates a varobj (not its children) */
449
450 /* Return the full FRAME which corresponds to the given CORE_ADDR
451    or NULL if no FRAME on the chain corresponds to CORE_ADDR.  */
452
453 static struct frame_info *
454 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
455 {
456   struct frame_info *frame = NULL;
457
458   if (frame_addr == (CORE_ADDR) 0)
459     return NULL;
460
461   for (frame = get_current_frame ();
462        frame != NULL;
463        frame = get_prev_frame (frame))
464     {
465       if (get_frame_base_address (frame) == frame_addr)
466         return frame;
467     }
468
469   return NULL;
470 }
471
472 struct varobj *
473 varobj_create (char *objname,
474                char *expression, CORE_ADDR frame, enum varobj_type type)
475 {
476   struct varobj *var;
477   struct frame_info *fi;
478   struct frame_info *old_fi = NULL;
479   struct block *block;
480   struct cleanup *old_chain;
481
482   /* Fill out a varobj structure for the (root) variable being constructed. */
483   var = new_root_variable ();
484   old_chain = make_cleanup_free_variable (var);
485
486   if (expression != NULL)
487     {
488       char *p;
489       enum varobj_languages lang;
490       struct value *value = NULL;
491
492       /* Parse and evaluate the expression, filling in as much of the
493          variable's data as possible.  */
494
495       if (has_stack_frames ())
496         {
497           /* Allow creator to specify context of variable */
498           if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
499             fi = get_selected_frame (NULL);
500           else
501             /* FIXME: cagney/2002-11-23: This code should be doing a
502                lookup using the frame ID and not just the frame's
503                ``address''.  This, of course, means an interface
504                change.  However, with out that interface change ISAs,
505                such as the ia64 with its two stacks, won't work.
506                Similar goes for the case where there is a frameless
507                function.  */
508             fi = find_frame_addr_in_frame_chain (frame);
509         }
510       else
511         fi = NULL;
512
513       /* frame = -2 means always use selected frame */
514       if (type == USE_SELECTED_FRAME)
515         var->root->floating = 1;
516
517       block = NULL;
518       if (fi != NULL)
519         block = get_frame_block (fi, 0);
520
521       p = expression;
522       innermost_block = NULL;
523       /* Wrap the call to parse expression, so we can 
524          return a sensible error. */
525       if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
526         {
527           return NULL;
528         }
529
530       /* Don't allow variables to be created for types. */
531       if (var->root->exp->elts[0].opcode == OP_TYPE)
532         {
533           do_cleanups (old_chain);
534           fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
535                               " as an expression.\n");
536           return NULL;
537         }
538
539       var->format = variable_default_display (var);
540       var->root->valid_block = innermost_block;
541       var->name = xstrdup (expression);
542       /* For a root var, the name and the expr are the same.  */
543       var->path_expr = xstrdup (expression);
544
545       /* When the frame is different from the current frame, 
546          we must select the appropriate frame before parsing
547          the expression, otherwise the value will not be current.
548          Since select_frame is so benign, just call it for all cases. */
549       if (innermost_block && fi != NULL)
550         {
551           var->root->frame = get_frame_id (fi);
552           var->root->thread_id = pid_to_thread_id (inferior_ptid);
553           old_fi = get_selected_frame (NULL);
554           select_frame (fi);     
555         }
556
557       /* We definitely need to catch errors here.
558          If evaluate_expression succeeds we got the value we wanted.
559          But if it fails, we still go on with a call to evaluate_type()  */
560       if (!gdb_evaluate_expression (var->root->exp, &value))
561         {
562           /* Error getting the value.  Try to at least get the
563              right type.  */
564           struct value *type_only_value = evaluate_type (var->root->exp);
565           var->type = value_type (type_only_value);
566         }
567       else 
568         var->type = value_type (value);
569
570       install_new_value (var, value, 1 /* Initial assignment */);
571
572       /* Set language info */
573       lang = variable_language (var);
574       var->root->lang = &languages[lang];
575
576       /* Set ourselves as our root */
577       var->root->rootvar = var;
578
579       /* Reset the selected frame */
580       if (fi != NULL)
581         select_frame (old_fi);
582     }
583
584   /* If the variable object name is null, that means this
585      is a temporary variable, so don't install it. */
586
587   if ((var != NULL) && (objname != NULL))
588     {
589       var->obj_name = xstrdup (objname);
590
591       /* If a varobj name is duplicated, the install will fail so
592          we must clenup */
593       if (!install_variable (var))
594         {
595           do_cleanups (old_chain);
596           return NULL;
597         }
598     }
599
600   install_default_visualizer (var);
601   discard_cleanups (old_chain);
602   return var;
603 }
604
605 /* Generates an unique name that can be used for a varobj */
606
607 char *
608 varobj_gen_name (void)
609 {
610   static int id = 0;
611   char *obj_name;
612
613   /* generate a name for this object */
614   id++;
615   obj_name = xstrprintf ("var%d", id);
616
617   return obj_name;
618 }
619
620 /* Given an OBJNAME, returns the pointer to the corresponding varobj.  Call
621    error if OBJNAME cannot be found.  */
622
623 struct varobj *
624 varobj_get_handle (char *objname)
625 {
626   struct vlist *cv;
627   const char *chp;
628   unsigned int index = 0;
629   unsigned int i = 1;
630
631   for (chp = objname; *chp; chp++)
632     {
633       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
634     }
635
636   cv = *(varobj_table + index);
637   while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
638     cv = cv->next;
639
640   if (cv == NULL)
641     error (_("Variable object not found"));
642
643   return cv->var;
644 }
645
646 /* Given the handle, return the name of the object */
647
648 char *
649 varobj_get_objname (struct varobj *var)
650 {
651   return var->obj_name;
652 }
653
654 /* Given the handle, return the expression represented by the object */
655
656 char *
657 varobj_get_expression (struct varobj *var)
658 {
659   return name_of_variable (var);
660 }
661
662 /* Deletes a varobj and all its children if only_children == 0,
663    otherwise deletes only the children; returns a malloc'ed list of all the 
664    (malloc'ed) names of the variables that have been deleted (NULL terminated) */
665
666 int
667 varobj_delete (struct varobj *var, char ***dellist, int only_children)
668 {
669   int delcount;
670   int mycount;
671   struct cpstack *result = NULL;
672   char **cp;
673
674   /* Initialize a stack for temporary results */
675   cppush (&result, NULL);
676
677   if (only_children)
678     /* Delete only the variable children */
679     delcount = delete_variable (&result, var, 1 /* only the children */ );
680   else
681     /* Delete the variable and all its children */
682     delcount = delete_variable (&result, var, 0 /* parent+children */ );
683
684   /* We may have been asked to return a list of what has been deleted */
685   if (dellist != NULL)
686     {
687       *dellist = xmalloc ((delcount + 1) * sizeof (char *));
688
689       cp = *dellist;
690       mycount = delcount;
691       *cp = cppop (&result);
692       while ((*cp != NULL) && (mycount > 0))
693         {
694           mycount--;
695           cp++;
696           *cp = cppop (&result);
697         }
698
699       if (mycount || (*cp != NULL))
700         warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
701                  mycount);
702     }
703
704   return delcount;
705 }
706
707 /* Convenience function for varobj_set_visualizer.  Instantiate a
708    pretty-printer for a given value.  */
709 static PyObject *
710 instantiate_pretty_printer (PyObject *constructor, struct value *value)
711 {
712 #if HAVE_PYTHON
713   PyObject *val_obj = NULL; 
714   PyObject *printer;
715   volatile struct gdb_exception except;
716
717   TRY_CATCH (except, RETURN_MASK_ALL)
718     {
719       value = value_copy (value);
720     }
721   GDB_PY_HANDLE_EXCEPTION (except);
722   val_obj = value_to_value_object (value);
723
724   if (! val_obj)
725     return NULL;
726
727   printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
728   Py_DECREF (val_obj);
729   return printer;
730 #endif
731   return NULL;
732 }
733
734 /* Set/Get variable object display format */
735
736 enum varobj_display_formats
737 varobj_set_display_format (struct varobj *var,
738                            enum varobj_display_formats format)
739 {
740   switch (format)
741     {
742     case FORMAT_NATURAL:
743     case FORMAT_BINARY:
744     case FORMAT_DECIMAL:
745     case FORMAT_HEXADECIMAL:
746     case FORMAT_OCTAL:
747       var->format = format;
748       break;
749
750     default:
751       var->format = variable_default_display (var);
752     }
753
754   if (varobj_value_is_changeable_p (var) 
755       && var->value && !value_lazy (var->value))
756     {
757       xfree (var->print_value);
758       var->print_value = value_get_print_value (var->value, var->format,
759                                                 var->pretty_printer);
760     }
761
762   return var->format;
763 }
764
765 enum varobj_display_formats
766 varobj_get_display_format (struct varobj *var)
767 {
768   return var->format;
769 }
770
771 char *
772 varobj_get_display_hint (struct varobj *var)
773 {
774   char *result = NULL;
775
776 #if HAVE_PYTHON
777   PyGILState_STATE state = PyGILState_Ensure ();
778   if (var->pretty_printer)
779     result = gdbpy_get_display_hint (var->pretty_printer);
780   PyGILState_Release (state);
781 #endif
782
783   return result;
784 }
785
786 /* If the variable object is bound to a specific thread, that
787    is its evaluation can always be done in context of a frame
788    inside that thread, returns GDB id of the thread -- which
789    is always positive.  Otherwise, returns -1. */
790 int
791 varobj_get_thread_id (struct varobj *var)
792 {
793   if (var->root->valid_block && var->root->thread_id > 0)
794     return var->root->thread_id;
795   else
796     return -1;
797 }
798
799 void
800 varobj_set_frozen (struct varobj *var, int frozen)
801 {
802   /* When a variable is unfrozen, we don't fetch its value.
803      The 'not_fetched' flag remains set, so next -var-update
804      won't complain.
805
806      We don't fetch the value, because for structures the client
807      should do -var-update anyway.  It would be bad to have different
808      client-size logic for structure and other types.  */
809   var->frozen = frozen;
810 }
811
812 int
813 varobj_get_frozen (struct varobj *var)
814 {
815   return var->frozen;
816 }
817
818 static int
819 update_dynamic_varobj_children (struct varobj *var,
820                                 VEC (varobj_p) **changed,
821                                 VEC (varobj_p) **new_and_unchanged,
822                                 int *cchanged)
823
824 {
825 #if HAVE_PYTHON
826   /* FIXME: we *might* want to provide this functionality as
827      a standalone function, so that other interested parties
828      than varobj code can benefit for this.  */
829   struct cleanup *back_to;
830   PyObject *children;
831   PyObject *iterator;
832   int i;
833   int children_changed = 0;
834   PyObject *printer = var->pretty_printer;
835   PyGILState_STATE state;
836
837   state = PyGILState_Ensure ();
838   back_to = make_cleanup_py_restore_gil (&state);
839
840   *cchanged = 0;
841   if (!PyObject_HasAttr (printer, gdbpy_children_cst))
842     {
843       do_cleanups (back_to);
844       return 0;
845     }
846
847   children = PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
848                                          NULL);
849
850   if (!children)
851     {
852       gdbpy_print_stack ();
853       error (_("Null value returned for children"));
854     }
855
856   make_cleanup_py_decref (children);
857
858   if (!PyIter_Check (children))
859     error (_("Returned value is not iterable"));
860
861   iterator = PyObject_GetIter (children);
862   if (!iterator)
863     {
864       gdbpy_print_stack ();
865       error (_("Could not get children iterator"));
866     }
867   make_cleanup_py_decref (iterator);
868
869   for (i = 0; ; ++i)
870     {
871       PyObject *item = PyIter_Next (iterator);
872       PyObject *py_v;
873       struct value *v;
874       char *name;
875       struct cleanup *inner;
876       
877       if (!item)
878         break;
879       inner = make_cleanup_py_decref (item);
880
881       if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
882         error (_("Invalid item from the child list"));
883       
884       if (PyObject_TypeCheck (py_v, &value_object_type))
885         {
886           /* If we just call convert_value_from_python for this type,
887              we won't know who owns the result.  For this one case we
888              need to copy the resulting value.  */
889           v = value_object_to_value (py_v);
890           v = value_copy (v);
891         }
892       else
893         v = convert_value_from_python (py_v);
894
895       /* TODO: This assume the name of the i-th child never changes.  */
896
897       /* Now see what to do here.  */
898       if (VEC_length (varobj_p, var->children) < i + 1)
899         {
900           /* There's no child yet.  */
901           struct varobj *child = varobj_add_child (var, name, v);
902           if (new_and_unchanged)
903             VEC_safe_push (varobj_p, *new_and_unchanged, child);
904           children_changed = 1;
905         }
906       else 
907         {
908           varobj_p existing = VEC_index (varobj_p, var->children, i);
909           if (install_new_value (existing, v, 0) && changed)
910             {
911               if (changed)
912                 VEC_safe_push (varobj_p, *changed, existing);
913             }
914           else
915             {
916               if (new_and_unchanged)
917                 VEC_safe_push (varobj_p, *new_and_unchanged, existing);
918             }
919         }
920
921       do_cleanups (inner);
922     }
923
924   if (i < VEC_length (varobj_p, var->children))
925     {
926       int i;
927       children_changed = 1;
928       for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
929         varobj_delete (VEC_index (varobj_p, var->children, i), NULL, 0);
930     }
931   VEC_truncate (varobj_p, var->children, i);
932   var->num_children = VEC_length (varobj_p, var->children);
933  
934   do_cleanups (back_to);
935
936   *cchanged = children_changed;
937   return 1;
938 #else
939   gdb_assert (0 && "should never be called if Python is not enabled");
940 #endif
941 }
942
943 int
944 varobj_get_num_children (struct varobj *var)
945 {
946   if (var->num_children == -1)
947     {
948       int changed;
949       if (!var->pretty_printer
950           || !update_dynamic_varobj_children (var, NULL, NULL, &changed))
951         var->num_children = number_of_children (var);
952     }
953
954   return var->num_children;
955 }
956
957 /* Creates a list of the immediate children of a variable object;
958    the return code is the number of such children or -1 on error */
959
960 VEC (varobj_p)*
961 varobj_list_children (struct varobj *var)
962 {
963   struct varobj *child;
964   char *name;
965   int i, children_changed;
966
967   var->children_requested = 1;
968
969   if (var->pretty_printer
970       /* This, in theory, can result in the number of children changing without
971          frontend noticing.  But well, calling -var-list-children on the same
972          varobj twice is not something a sane frontend would do.  */
973       && update_dynamic_varobj_children (var, NULL, NULL, &children_changed))
974     return var->children;
975
976   if (var->num_children == -1)
977     var->num_children = number_of_children (var);
978
979   /* If that failed, give up.  */
980   if (var->num_children == -1)
981     return var->children;
982
983   /* If we're called when the list of children is not yet initialized,
984      allocate enough elements in it.  */
985   while (VEC_length (varobj_p, var->children) < var->num_children)
986     VEC_safe_push (varobj_p, var->children, NULL);
987
988   for (i = 0; i < var->num_children; i++)
989     {
990       varobj_p existing = VEC_index (varobj_p, var->children, i);
991
992       if (existing == NULL)
993         {
994           /* Either it's the first call to varobj_list_children for
995              this variable object, and the child was never created,
996              or it was explicitly deleted by the client.  */
997           name = name_of_child (var, i);
998           existing = create_child (var, i, name);
999           VEC_replace (varobj_p, var->children, i, existing);
1000           install_default_visualizer (existing);
1001         }
1002     }
1003
1004   return var->children;
1005 }
1006
1007 static struct varobj *
1008 varobj_add_child (struct varobj *var, const char *name, struct value *value)
1009 {
1010   varobj_p v = create_child_with_value (var, 
1011                                         VEC_length (varobj_p, var->children), 
1012                                         name, value);
1013   VEC_safe_push (varobj_p, var->children, v);
1014   install_default_visualizer (v);
1015   return v;
1016 }
1017
1018 /* Obtain the type of an object Variable as a string similar to the one gdb
1019    prints on the console */
1020
1021 char *
1022 varobj_get_type (struct varobj *var)
1023 {
1024   struct value *val;
1025   struct cleanup *old_chain;
1026   struct ui_file *stb;
1027   char *thetype;
1028   long length;
1029
1030   /* For the "fake" variables, do not return a type. (It's type is
1031      NULL, too.)
1032      Do not return a type for invalid variables as well.  */
1033   if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
1034     return NULL;
1035
1036   stb = mem_fileopen ();
1037   old_chain = make_cleanup_ui_file_delete (stb);
1038
1039   /* To print the type, we simply create a zero ``struct value *'' and
1040      cast it to our type. We then typeprint this variable. */
1041   val = value_zero (var->type, not_lval);
1042   type_print (value_type (val), "", stb, -1);
1043
1044   thetype = ui_file_xstrdup (stb, &length);
1045   do_cleanups (old_chain);
1046   return thetype;
1047 }
1048
1049 /* Obtain the type of an object variable.  */
1050
1051 struct type *
1052 varobj_get_gdb_type (struct varobj *var)
1053 {
1054   return var->type;
1055 }
1056
1057 /* Return a pointer to the full rooted expression of varobj VAR.
1058    If it has not been computed yet, compute it.  */
1059 char *
1060 varobj_get_path_expr (struct varobj *var)
1061 {
1062   if (var->path_expr != NULL)
1063     return var->path_expr;
1064   else 
1065     {
1066       /* For root varobjs, we initialize path_expr
1067          when creating varobj, so here it should be
1068          child varobj.  */
1069       gdb_assert (!is_root_p (var));
1070       return (*var->root->lang->path_expr_of_child) (var);
1071     }
1072 }
1073
1074 enum varobj_languages
1075 varobj_get_language (struct varobj *var)
1076 {
1077   return variable_language (var);
1078 }
1079
1080 int
1081 varobj_get_attributes (struct varobj *var)
1082 {
1083   int attributes = 0;
1084
1085   if (varobj_editable_p (var))
1086     /* FIXME: define masks for attributes */
1087     attributes |= 0x00000001;   /* Editable */
1088
1089   return attributes;
1090 }
1091
1092 char *
1093 varobj_get_formatted_value (struct varobj *var,
1094                             enum varobj_display_formats format)
1095 {
1096   return my_value_of_variable (var, format);
1097 }
1098
1099 char *
1100 varobj_get_value (struct varobj *var)
1101 {
1102   return my_value_of_variable (var, var->format);
1103 }
1104
1105 /* Set the value of an object variable (if it is editable) to the
1106    value of the given expression */
1107 /* Note: Invokes functions that can call error() */
1108
1109 int
1110 varobj_set_value (struct varobj *var, char *expression)
1111 {
1112   struct value *val;
1113   int offset = 0;
1114   int error = 0;
1115
1116   /* The argument "expression" contains the variable's new value.
1117      We need to first construct a legal expression for this -- ugh! */
1118   /* Does this cover all the bases? */
1119   struct expression *exp;
1120   struct value *value;
1121   int saved_input_radix = input_radix;
1122   char *s = expression;
1123   int i;
1124
1125   gdb_assert (varobj_editable_p (var));
1126
1127   input_radix = 10;             /* ALWAYS reset to decimal temporarily */
1128   exp = parse_exp_1 (&s, 0, 0);
1129   if (!gdb_evaluate_expression (exp, &value))
1130     {
1131       /* We cannot proceed without a valid expression. */
1132       xfree (exp);
1133       return 0;
1134     }
1135
1136   /* All types that are editable must also be changeable.  */
1137   gdb_assert (varobj_value_is_changeable_p (var));
1138
1139   /* The value of a changeable variable object must not be lazy.  */
1140   gdb_assert (!value_lazy (var->value));
1141
1142   /* Need to coerce the input.  We want to check if the
1143      value of the variable object will be different
1144      after assignment, and the first thing value_assign
1145      does is coerce the input.
1146      For example, if we are assigning an array to a pointer variable we
1147      should compare the pointer with the the array's address, not with the
1148      array's content.  */
1149   value = coerce_array (value);
1150
1151   /* The new value may be lazy.  gdb_value_assign, or 
1152      rather value_contents, will take care of this.
1153      If fetching of the new value will fail, gdb_value_assign
1154      with catch the exception.  */
1155   if (!gdb_value_assign (var->value, value, &val))
1156     return 0;
1157      
1158   /* If the value has changed, record it, so that next -var-update can
1159      report this change.  If a variable had a value of '1', we've set it
1160      to '333' and then set again to '1', when -var-update will report this
1161      variable as changed -- because the first assignment has set the
1162      'updated' flag.  There's no need to optimize that, because return value
1163      of -var-update should be considered an approximation.  */
1164   var->updated = install_new_value (var, val, 0 /* Compare values. */);
1165   input_radix = saved_input_radix;
1166   return 1;
1167 }
1168
1169 /* Returns a malloc'ed list with all root variable objects */
1170 int
1171 varobj_list (struct varobj ***varlist)
1172 {
1173   struct varobj **cv;
1174   struct varobj_root *croot;
1175   int mycount = rootcount;
1176
1177   /* Alloc (rootcount + 1) entries for the result */
1178   *varlist = xmalloc ((rootcount + 1) * sizeof (struct varobj *));
1179
1180   cv = *varlist;
1181   croot = rootlist;
1182   while ((croot != NULL) && (mycount > 0))
1183     {
1184       *cv = croot->rootvar;
1185       mycount--;
1186       cv++;
1187       croot = croot->next;
1188     }
1189   /* Mark the end of the list */
1190   *cv = NULL;
1191
1192   if (mycount || (croot != NULL))
1193     warning
1194       ("varobj_list: assertion failed - wrong tally of root vars (%d:%d)",
1195        rootcount, mycount);
1196
1197   return rootcount;
1198 }
1199
1200 /* Assign a new value to a variable object.  If INITIAL is non-zero,
1201    this is the first assignement after the variable object was just
1202    created, or changed type.  In that case, just assign the value 
1203    and return 0.
1204    Otherwise, assign the new value, and return 1 if the value is different
1205    from the current one, 0 otherwise. The comparison is done on textual
1206    representation of value. Therefore, some types need not be compared. E.g.
1207    for structures the reported value is always "{...}", so no comparison is
1208    necessary here. If the old value was NULL and new one is not, or vice versa,
1209    we always return 1.
1210
1211    The VALUE parameter should not be released -- the function will
1212    take care of releasing it when needed.  */
1213 static int
1214 install_new_value (struct varobj *var, struct value *value, int initial)
1215
1216   int changeable;
1217   int need_to_fetch;
1218   int changed = 0;
1219   int intentionally_not_fetched = 0;
1220   char *print_value = NULL;
1221
1222   /* We need to know the varobj's type to decide if the value should
1223      be fetched or not.  C++ fake children (public/protected/private) don't have
1224      a type. */
1225   gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1226   changeable = varobj_value_is_changeable_p (var);
1227
1228   /* If the type has custom visualizer, we consider it to be always
1229      changeable. FIXME: need to make sure this behaviour will not
1230      mess up read-sensitive values.  */
1231   if (var->pretty_printer)
1232     changeable = 1;
1233
1234   need_to_fetch = changeable;
1235
1236   /* We are not interested in the address of references, and given
1237      that in C++ a reference is not rebindable, it cannot
1238      meaningfully change.  So, get hold of the real value.  */
1239   if (value)
1240     {
1241       value = coerce_ref (value);
1242       release_value (value);
1243     }
1244
1245   if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1246     /* For unions, we need to fetch the value implicitly because
1247        of implementation of union member fetch.  When gdb
1248        creates a value for a field and the value of the enclosing
1249        structure is not lazy,  it immediately copies the necessary
1250        bytes from the enclosing values.  If the enclosing value is
1251        lazy, the call to value_fetch_lazy on the field will read
1252        the data from memory.  For unions, that means we'll read the
1253        same memory more than once, which is not desirable.  So
1254        fetch now.  */
1255     need_to_fetch = 1;
1256
1257   /* The new value might be lazy.  If the type is changeable,
1258      that is we'll be comparing values of this type, fetch the
1259      value now.  Otherwise, on the next update the old value
1260      will be lazy, which means we've lost that old value.  */
1261   if (need_to_fetch && value && value_lazy (value))
1262     {
1263       struct varobj *parent = var->parent;
1264       int frozen = var->frozen;
1265       for (; !frozen && parent; parent = parent->parent)
1266         frozen |= parent->frozen;
1267
1268       if (frozen && initial)
1269         {
1270           /* For variables that are frozen, or are children of frozen
1271              variables, we don't do fetch on initial assignment.
1272              For non-initial assignemnt we do the fetch, since it means we're
1273              explicitly asked to compare the new value with the old one.  */
1274           intentionally_not_fetched = 1;
1275         }
1276       else if (!gdb_value_fetch_lazy (value))
1277         {
1278           /* Set the value to NULL, so that for the next -var-update,
1279              we don't try to compare the new value with this value,
1280              that we couldn't even read.  */
1281           value = NULL;
1282         }
1283     }
1284
1285
1286   /* Below, we'll be comparing string rendering of old and new
1287      values.  Don't get string rendering if the value is
1288      lazy -- if it is, the code above has decided that the value
1289      should not be fetched.  */
1290   if (value && !value_lazy (value))
1291     print_value = value_get_print_value (value, var->format, 
1292                                          var->pretty_printer);
1293
1294   /* If the type is changeable, compare the old and the new values.
1295      If this is the initial assignment, we don't have any old value
1296      to compare with.  */
1297   if (!initial && changeable)
1298     {
1299       /* If the value of the varobj was changed by -var-set-value, then the 
1300          value in the varobj and in the target is the same.  However, that value
1301          is different from the value that the varobj had after the previous
1302          -var-update. So need to the varobj as changed.  */
1303       if (var->updated)
1304         {
1305           changed = 1;
1306         }
1307       else 
1308         {
1309           /* Try to compare the values.  That requires that both
1310              values are non-lazy.  */
1311           if (var->not_fetched && value_lazy (var->value))
1312             {
1313               /* This is a frozen varobj and the value was never read.
1314                  Presumably, UI shows some "never read" indicator.
1315                  Now that we've fetched the real value, we need to report
1316                  this varobj as changed so that UI can show the real
1317                  value.  */
1318               changed = 1;
1319             }
1320           else  if (var->value == NULL && value == NULL)
1321             /* Equal. */
1322             ;
1323           else if (var->value == NULL || value == NULL)
1324             {
1325               changed = 1;
1326             }
1327           else
1328             {
1329               gdb_assert (!value_lazy (var->value));
1330               gdb_assert (!value_lazy (value));
1331
1332               gdb_assert (var->print_value != NULL && print_value != NULL);
1333               if (strcmp (var->print_value, print_value) != 0)
1334                 changed = 1;
1335             }
1336         }
1337     }
1338
1339   if (!initial && !changeable)
1340     {
1341       /* For values that are not changeable, we don't compare the values.
1342          However, we want to notice if a value was not NULL and now is NULL,
1343          or vise versa, so that we report when top-level varobjs come in scope
1344          and leave the scope.  */
1345       changed = (var->value != NULL) != (value != NULL);
1346     }
1347
1348   /* We must always keep the new value, since children depend on it.  */
1349   if (var->value != NULL && var->value != value)
1350     value_free (var->value);
1351   var->value = value;
1352   if (var->print_value)
1353     xfree (var->print_value);
1354   var->print_value = print_value;
1355   if (value && value_lazy (value) && intentionally_not_fetched)
1356     var->not_fetched = 1;
1357   else
1358     var->not_fetched = 0;
1359   var->updated = 0;
1360
1361   gdb_assert (!var->value || value_type (var->value));
1362
1363   return changed;
1364 }
1365
1366 static void
1367 install_visualizer (struct varobj *var, PyObject *visualizer)
1368 {
1369 #if HAVE_PYTHON
1370   /* If there are any children now, wipe them.  */
1371   varobj_delete (var, NULL, 1 /* children only */);
1372   var->num_children = -1;
1373
1374   Py_XDECREF (var->pretty_printer);
1375   var->pretty_printer = visualizer;
1376
1377   install_new_value (var, var->value, 1);
1378
1379   /* If we removed the visualizer, and the user ever requested the
1380      object's children, then we must compute the list of children.
1381      Note that we needn't do this when installing a visualizer,
1382      because updating will recompute dynamic children.  */
1383   if (!visualizer && var->children_requested)
1384     varobj_list_children (var);
1385 #else
1386   error (_("Python support required"));
1387 #endif
1388 }
1389
1390 static void
1391 install_default_visualizer (struct varobj *var)
1392 {
1393 #if HAVE_PYTHON
1394   struct cleanup *cleanup;
1395   PyGILState_STATE state;
1396   PyObject *pretty_printer = NULL;
1397
1398   state = PyGILState_Ensure ();
1399   cleanup = make_cleanup_py_restore_gil (&state);
1400
1401   if (var->value)
1402     {
1403       pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1404       if (! pretty_printer)
1405         {
1406           gdbpy_print_stack ();
1407           error (_("Cannot instantiate printer for default visualizer"));
1408         }
1409     }
1410       
1411   if (pretty_printer == Py_None)
1412     {
1413       Py_DECREF (pretty_printer);
1414       pretty_printer = NULL;
1415     }
1416   
1417   install_visualizer (var, pretty_printer);
1418   do_cleanups (cleanup);
1419 #else
1420   /* No error is right as this function is inserted just as a hook.  */
1421 #endif
1422 }
1423
1424 void 
1425 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1426 {
1427 #if HAVE_PYTHON
1428   PyObject *mainmod, *globals, *pretty_printer, *constructor;
1429   struct cleanup *back_to, *value;
1430   PyGILState_STATE state;
1431
1432
1433   state = PyGILState_Ensure ();
1434   back_to = make_cleanup_py_restore_gil (&state);
1435
1436   mainmod = PyImport_AddModule ("__main__");
1437   globals = PyModule_GetDict (mainmod);
1438   Py_INCREF (globals);
1439   make_cleanup_py_decref (globals);
1440
1441   constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1442   
1443   /* Do not instantiate NoneType. */
1444   if (constructor == Py_None)
1445     {
1446       pretty_printer = Py_None;
1447       Py_INCREF (pretty_printer);
1448     }
1449   else
1450     pretty_printer = instantiate_pretty_printer (constructor, var->value);
1451
1452   Py_XDECREF (constructor);
1453
1454   if (! pretty_printer)
1455     {
1456       gdbpy_print_stack ();
1457       error (_("Could not evaluate visualizer expression: %s"), visualizer);
1458     }
1459
1460   if (pretty_printer == Py_None)
1461     {
1462       Py_DECREF (pretty_printer);
1463       pretty_printer = NULL;
1464     }
1465
1466   install_visualizer (var, pretty_printer);
1467
1468   do_cleanups (back_to);
1469 #else
1470   error (_("Python support required"));
1471 #endif
1472 }
1473
1474 /* Update the values for a variable and its children.  This is a
1475    two-pronged attack.  First, re-parse the value for the root's
1476    expression to see if it's changed.  Then go all the way
1477    through its children, reconstructing them and noting if they've
1478    changed.
1479
1480    The EXPLICIT parameter specifies if this call is result
1481    of MI request to update this specific variable, or 
1482    result of implicit -var-update *. For implicit request, we don't
1483    update frozen variables.
1484
1485    NOTE: This function may delete the caller's varobj. If it
1486    returns TYPE_CHANGED, then it has done this and VARP will be modified
1487    to point to the new varobj.  */
1488
1489 VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit)
1490 {
1491   int changed = 0;
1492   int type_changed = 0;
1493   int i;
1494   int vleft;
1495   struct varobj *v;
1496   struct varobj **cv;
1497   struct varobj **templist = NULL;
1498   struct value *new;
1499   VEC (varobj_update_result) *stack = NULL;
1500   VEC (varobj_update_result) *result = NULL;
1501   struct frame_info *fi;
1502
1503   /* Frozen means frozen -- we don't check for any change in
1504      this varobj, including its going out of scope, or
1505      changing type.  One use case for frozen varobjs is
1506      retaining previously evaluated expressions, and we don't
1507      want them to be reevaluated at all.  */
1508   if (!explicit && (*varp)->frozen)
1509     return result;
1510
1511   if (!(*varp)->root->is_valid)
1512     {
1513       varobj_update_result r = {*varp};
1514       r.status = VAROBJ_INVALID;
1515       VEC_safe_push (varobj_update_result, result, &r);
1516       return result;
1517     }
1518
1519   if ((*varp)->root->rootvar == *varp)
1520     {
1521       varobj_update_result r = {*varp};
1522       r.status = VAROBJ_IN_SCOPE;
1523
1524       /* Update the root variable. value_of_root can return NULL
1525          if the variable is no longer around, i.e. we stepped out of
1526          the frame in which a local existed. We are letting the 
1527          value_of_root variable dispose of the varobj if the type
1528          has changed.  */
1529       new = value_of_root (varp, &type_changed);
1530       r.varobj = *varp;
1531
1532       r.type_changed = type_changed;
1533       if (install_new_value ((*varp), new, type_changed))
1534         r.changed = 1;
1535       
1536       if (new == NULL)
1537         r.status = VAROBJ_NOT_IN_SCOPE;
1538       r.value_installed = 1;
1539
1540       if (r.status == VAROBJ_NOT_IN_SCOPE)
1541         {
1542           if (r.type_changed || r.changed)
1543             VEC_safe_push (varobj_update_result, result, &r);
1544           return result;
1545         }
1546             
1547       VEC_safe_push (varobj_update_result, stack, &r);
1548     }
1549   else
1550     {
1551       varobj_update_result r = {*varp};
1552       VEC_safe_push (varobj_update_result, stack, &r);
1553     }
1554
1555   /* Walk through the children, reconstructing them all.  */
1556   while (!VEC_empty (varobj_update_result, stack))
1557     {
1558       varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1559       struct varobj *v = r.varobj;
1560
1561       VEC_pop (varobj_update_result, stack);
1562
1563       /* Update this variable, unless it's a root, which is already
1564          updated.  */
1565       if (!r.value_installed)
1566         {         
1567           new = value_of_child (v->parent, v->index);
1568           if (install_new_value (v, new, 0 /* type not changed */))
1569             {
1570               r.changed = 1;
1571               v->updated = 0;
1572             }
1573         }
1574
1575       /* We probably should not get children of a varobj that has a
1576          pretty-printer, but for which -var-list-children was never
1577          invoked.  Presumably, such varobj is not yet expanded in the
1578          UI, so we need not bother getting it.  */
1579       if (v->pretty_printer)
1580         {
1581           VEC (varobj_p) *changed = 0, *new_and_unchanged = 0;
1582           int i, children_changed;
1583           varobj_p tmp;
1584
1585           if (!v->children_requested)
1586             continue;
1587
1588           if (v->frozen)
1589             continue;
1590
1591           /* If update_dynamic_varobj_children returns 0, then we have
1592              a non-conforming pretty-printer, so we skip it.  */
1593           if (update_dynamic_varobj_children (v, &changed, &new_and_unchanged,
1594                                               &children_changed))
1595             {
1596               if (children_changed)
1597                 r.children_changed = 1;
1598               for (i = 0; VEC_iterate (varobj_p, changed, i, tmp); ++i)
1599                 {
1600                   varobj_update_result r = {tmp};
1601                   r.changed = 1;
1602                   r.value_installed = 1;
1603                   VEC_safe_push (varobj_update_result, stack, &r);
1604                 }
1605               for (i = 0;
1606                    VEC_iterate (varobj_p, new_and_unchanged, i, tmp);
1607                    ++i)
1608                 {
1609                   varobj_update_result r = {tmp};
1610                   r.value_installed = 1;
1611                   VEC_safe_push (varobj_update_result, stack, &r);
1612                 }
1613               if (r.changed || r.children_changed)
1614                 VEC_safe_push (varobj_update_result, result, &r);
1615               continue;
1616             }
1617         }
1618
1619       /* Push any children.  Use reverse order so that the first
1620          child is popped from the work stack first, and so
1621          will be added to result first.  This does not
1622          affect correctness, just "nicer".  */
1623       for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1624         {
1625           varobj_p c = VEC_index (varobj_p, v->children, i);
1626           /* Child may be NULL if explicitly deleted by -var-delete.  */
1627           if (c != NULL && !c->frozen)
1628             {
1629               varobj_update_result r = {c};
1630               VEC_safe_push (varobj_update_result, stack, &r);
1631             }
1632         }
1633
1634       if (r.changed || r.type_changed)
1635         VEC_safe_push (varobj_update_result, result, &r);
1636     }
1637
1638   VEC_free (varobj_update_result, stack);
1639
1640   return result;
1641 }
1642 \f
1643
1644 /* Helper functions */
1645
1646 /*
1647  * Variable object construction/destruction
1648  */
1649
1650 static int
1651 delete_variable (struct cpstack **resultp, struct varobj *var,
1652                  int only_children_p)
1653 {
1654   int delcount = 0;
1655
1656   delete_variable_1 (resultp, &delcount, var,
1657                      only_children_p, 1 /* remove_from_parent_p */ );
1658
1659   return delcount;
1660 }
1661
1662 /* Delete the variable object VAR and its children */
1663 /* IMPORTANT NOTE: If we delete a variable which is a child
1664    and the parent is not removed we dump core.  It must be always
1665    initially called with remove_from_parent_p set */
1666 static void
1667 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1668                    struct varobj *var, int only_children_p,
1669                    int remove_from_parent_p)
1670 {
1671   int i;
1672
1673   /* Delete any children of this variable, too. */
1674   for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1675     {   
1676       varobj_p child = VEC_index (varobj_p, var->children, i);
1677       if (!child)
1678         continue;
1679       if (!remove_from_parent_p)
1680         child->parent = NULL;
1681       delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1682     }
1683   VEC_free (varobj_p, var->children);
1684
1685   /* if we were called to delete only the children we are done here */
1686   if (only_children_p)
1687     return;
1688
1689   /* Otherwise, add it to the list of deleted ones and proceed to do so */
1690   /* If the name is null, this is a temporary variable, that has not
1691      yet been installed, don't report it, it belongs to the caller... */
1692   if (var->obj_name != NULL)
1693     {
1694       cppush (resultp, xstrdup (var->obj_name));
1695       *delcountp = *delcountp + 1;
1696     }
1697
1698   /* If this variable has a parent, remove it from its parent's list */
1699   /* OPTIMIZATION: if the parent of this variable is also being deleted, 
1700      (as indicated by remove_from_parent_p) we don't bother doing an
1701      expensive list search to find the element to remove when we are
1702      discarding the list afterwards */
1703   if ((remove_from_parent_p) && (var->parent != NULL))
1704     {
1705       VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1706     }
1707
1708   if (var->obj_name != NULL)
1709     uninstall_variable (var);
1710
1711   /* Free memory associated with this variable */
1712   free_variable (var);
1713 }
1714
1715 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1716 static int
1717 install_variable (struct varobj *var)
1718 {
1719   struct vlist *cv;
1720   struct vlist *newvl;
1721   const char *chp;
1722   unsigned int index = 0;
1723   unsigned int i = 1;
1724
1725   for (chp = var->obj_name; *chp; chp++)
1726     {
1727       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1728     }
1729
1730   cv = *(varobj_table + index);
1731   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1732     cv = cv->next;
1733
1734   if (cv != NULL)
1735     error (_("Duplicate variable object name"));
1736
1737   /* Add varobj to hash table */
1738   newvl = xmalloc (sizeof (struct vlist));
1739   newvl->next = *(varobj_table + index);
1740   newvl->var = var;
1741   *(varobj_table + index) = newvl;
1742
1743   /* If root, add varobj to root list */
1744   if (is_root_p (var))
1745     {
1746       /* Add to list of root variables */
1747       if (rootlist == NULL)
1748         var->root->next = NULL;
1749       else
1750         var->root->next = rootlist;
1751       rootlist = var->root;
1752       rootcount++;
1753     }
1754
1755   return 1;                     /* OK */
1756 }
1757
1758 /* Unistall the object VAR. */
1759 static void
1760 uninstall_variable (struct varobj *var)
1761 {
1762   struct vlist *cv;
1763   struct vlist *prev;
1764   struct varobj_root *cr;
1765   struct varobj_root *prer;
1766   const char *chp;
1767   unsigned int index = 0;
1768   unsigned int i = 1;
1769
1770   /* Remove varobj from hash table */
1771   for (chp = var->obj_name; *chp; chp++)
1772     {
1773       index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1774     }
1775
1776   cv = *(varobj_table + index);
1777   prev = NULL;
1778   while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1779     {
1780       prev = cv;
1781       cv = cv->next;
1782     }
1783
1784   if (varobjdebug)
1785     fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
1786
1787   if (cv == NULL)
1788     {
1789       warning
1790         ("Assertion failed: Could not find variable object \"%s\" to delete",
1791          var->obj_name);
1792       return;
1793     }
1794
1795   if (prev == NULL)
1796     *(varobj_table + index) = cv->next;
1797   else
1798     prev->next = cv->next;
1799
1800   xfree (cv);
1801
1802   /* If root, remove varobj from root list */
1803   if (is_root_p (var))
1804     {
1805       /* Remove from list of root variables */
1806       if (rootlist == var->root)
1807         rootlist = var->root->next;
1808       else
1809         {
1810           prer = NULL;
1811           cr = rootlist;
1812           while ((cr != NULL) && (cr->rootvar != var))
1813             {
1814               prer = cr;
1815               cr = cr->next;
1816             }
1817           if (cr == NULL)
1818             {
1819               warning
1820                 ("Assertion failed: Could not find varobj \"%s\" in root list",
1821                  var->obj_name);
1822               return;
1823             }
1824           if (prer == NULL)
1825             rootlist = NULL;
1826           else
1827             prer->next = cr->next;
1828         }
1829       rootcount--;
1830     }
1831
1832 }
1833
1834 /* Create and install a child of the parent of the given name */
1835 static struct varobj *
1836 create_child (struct varobj *parent, int index, char *name)
1837 {
1838   return create_child_with_value (parent, index, name, 
1839                                   value_of_child (parent, index));
1840 }
1841
1842 static struct varobj *
1843 create_child_with_value (struct varobj *parent, int index, const char *name,
1844                          struct value *value)
1845 {
1846   struct varobj *child;
1847   char *childs_name;
1848
1849   child = new_variable ();
1850
1851   /* name is allocated by name_of_child */
1852   /* FIXME: xstrdup should not be here.  */
1853   child->name = xstrdup (name);
1854   child->index = index;
1855   child->parent = parent;
1856   child->root = parent->root;
1857   childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
1858   child->obj_name = childs_name;
1859   install_variable (child);
1860
1861   /* Compute the type of the child.  Must do this before
1862      calling install_new_value.  */
1863   if (value != NULL)
1864     /* If the child had no evaluation errors, var->value
1865        will be non-NULL and contain a valid type. */
1866     child->type = value_type (value);
1867   else
1868     /* Otherwise, we must compute the type. */
1869     child->type = (*child->root->lang->type_of_child) (child->parent, 
1870                                                        child->index);
1871   install_new_value (child, value, 1);
1872
1873   return child;
1874 }
1875 \f
1876
1877 /*
1878  * Miscellaneous utility functions.
1879  */
1880
1881 /* Allocate memory and initialize a new variable */
1882 static struct varobj *
1883 new_variable (void)
1884 {
1885   struct varobj *var;
1886
1887   var = (struct varobj *) xmalloc (sizeof (struct varobj));
1888   var->name = NULL;
1889   var->path_expr = NULL;
1890   var->obj_name = NULL;
1891   var->index = -1;
1892   var->type = NULL;
1893   var->value = NULL;
1894   var->num_children = -1;
1895   var->parent = NULL;
1896   var->children = NULL;
1897   var->format = 0;
1898   var->root = NULL;
1899   var->updated = 0;
1900   var->print_value = NULL;
1901   var->frozen = 0;
1902   var->not_fetched = 0;
1903   var->children_requested = 0;
1904   var->pretty_printer = 0;
1905
1906   return var;
1907 }
1908
1909 /* Allocate memory and initialize a new root variable */
1910 static struct varobj *
1911 new_root_variable (void)
1912 {
1913   struct varobj *var = new_variable ();
1914   var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));;
1915   var->root->lang = NULL;
1916   var->root->exp = NULL;
1917   var->root->valid_block = NULL;
1918   var->root->frame = null_frame_id;
1919   var->root->floating = 0;
1920   var->root->rootvar = NULL;
1921   var->root->is_valid = 1;
1922
1923   return var;
1924 }
1925
1926 /* Free any allocated memory associated with VAR. */
1927 static void
1928 free_variable (struct varobj *var)
1929 {
1930   value_free (var->value);
1931
1932   /* Free the expression if this is a root variable. */
1933   if (is_root_p (var))
1934     {
1935       xfree (var->root->exp);
1936       xfree (var->root);
1937     }
1938
1939 #if HAVE_PYTHON
1940   {
1941     PyGILState_STATE state = PyGILState_Ensure ();
1942     Py_XDECREF (var->pretty_printer);
1943     PyGILState_Release (state);
1944   }
1945 #endif
1946
1947   xfree (var->name);
1948   xfree (var->obj_name);
1949   xfree (var->print_value);
1950   xfree (var->path_expr);
1951   xfree (var);
1952 }
1953
1954 static void
1955 do_free_variable_cleanup (void *var)
1956 {
1957   free_variable (var);
1958 }
1959
1960 static struct cleanup *
1961 make_cleanup_free_variable (struct varobj *var)
1962 {
1963   return make_cleanup (do_free_variable_cleanup, var);
1964 }
1965
1966 /* This returns the type of the variable. It also skips past typedefs
1967    to return the real type of the variable.
1968
1969    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1970    except within get_target_type and get_type. */
1971 static struct type *
1972 get_type (struct varobj *var)
1973 {
1974   struct type *type;
1975   type = var->type;
1976
1977   if (type != NULL)
1978     type = check_typedef (type);
1979
1980   return type;
1981 }
1982
1983 /* Return the type of the value that's stored in VAR,
1984    or that would have being stored there if the
1985    value were accessible.  
1986
1987    This differs from VAR->type in that VAR->type is always
1988    the true type of the expession in the source language.
1989    The return value of this function is the type we're
1990    actually storing in varobj, and using for displaying
1991    the values and for comparing previous and new values.
1992
1993    For example, top-level references are always stripped.  */
1994 static struct type *
1995 get_value_type (struct varobj *var)
1996 {
1997   struct type *type;
1998
1999   if (var->value)
2000     type = value_type (var->value);
2001   else
2002     type = var->type;
2003
2004   type = check_typedef (type);
2005
2006   if (TYPE_CODE (type) == TYPE_CODE_REF)
2007     type = get_target_type (type);
2008
2009   type = check_typedef (type);
2010
2011   return type;
2012 }
2013
2014 /* This returns the target type (or NULL) of TYPE, also skipping
2015    past typedefs, just like get_type ().
2016
2017    NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
2018    except within get_target_type and get_type. */
2019 static struct type *
2020 get_target_type (struct type *type)
2021 {
2022   if (type != NULL)
2023     {
2024       type = TYPE_TARGET_TYPE (type);
2025       if (type != NULL)
2026         type = check_typedef (type);
2027     }
2028
2029   return type;
2030 }
2031
2032 /* What is the default display for this variable? We assume that
2033    everything is "natural". Any exceptions? */
2034 static enum varobj_display_formats
2035 variable_default_display (struct varobj *var)
2036 {
2037   return FORMAT_NATURAL;
2038 }
2039
2040 /* FIXME: The following should be generic for any pointer */
2041 static void
2042 cppush (struct cpstack **pstack, char *name)
2043 {
2044   struct cpstack *s;
2045
2046   s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2047   s->name = name;
2048   s->next = *pstack;
2049   *pstack = s;
2050 }
2051
2052 /* FIXME: The following should be generic for any pointer */
2053 static char *
2054 cppop (struct cpstack **pstack)
2055 {
2056   struct cpstack *s;
2057   char *v;
2058
2059   if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2060     return NULL;
2061
2062   s = *pstack;
2063   v = s->name;
2064   *pstack = (*pstack)->next;
2065   xfree (s);
2066
2067   return v;
2068 }
2069 \f
2070 /*
2071  * Language-dependencies
2072  */
2073
2074 /* Common entry points */
2075
2076 /* Get the language of variable VAR. */
2077 static enum varobj_languages
2078 variable_language (struct varobj *var)
2079 {
2080   enum varobj_languages lang;
2081
2082   switch (var->root->exp->language_defn->la_language)
2083     {
2084     default:
2085     case language_c:
2086       lang = vlang_c;
2087       break;
2088     case language_cplus:
2089       lang = vlang_cplus;
2090       break;
2091     case language_java:
2092       lang = vlang_java;
2093       break;
2094     }
2095
2096   return lang;
2097 }
2098
2099 /* Return the number of children for a given variable.
2100    The result of this function is defined by the language
2101    implementation. The number of children returned by this function
2102    is the number of children that the user will see in the variable
2103    display. */
2104 static int
2105 number_of_children (struct varobj *var)
2106 {
2107   return (*var->root->lang->number_of_children) (var);;
2108 }
2109
2110 /* What is the expression for the root varobj VAR? Returns a malloc'd string. */
2111 static char *
2112 name_of_variable (struct varobj *var)
2113 {
2114   return (*var->root->lang->name_of_variable) (var);
2115 }
2116
2117 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd string. */
2118 static char *
2119 name_of_child (struct varobj *var, int index)
2120 {
2121   return (*var->root->lang->name_of_child) (var, index);
2122 }
2123
2124 /* What is the ``struct value *'' of the root variable VAR?
2125    For floating variable object, evaluation can get us a value
2126    of different type from what is stored in varobj already.  In
2127    that case:
2128    - *type_changed will be set to 1
2129    - old varobj will be freed, and new one will be
2130    created, with the same name.
2131    - *var_handle will be set to the new varobj 
2132    Otherwise, *type_changed will be set to 0.  */
2133 static struct value *
2134 value_of_root (struct varobj **var_handle, int *type_changed)
2135 {
2136   struct varobj *var;
2137
2138   if (var_handle == NULL)
2139     return NULL;
2140
2141   var = *var_handle;
2142
2143   /* This should really be an exception, since this should
2144      only get called with a root variable. */
2145
2146   if (!is_root_p (var))
2147     return NULL;
2148
2149   if (var->root->floating)
2150     {
2151       struct varobj *tmp_var;
2152       char *old_type, *new_type;
2153
2154       tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2155                                USE_SELECTED_FRAME);
2156       if (tmp_var == NULL)
2157         {
2158           return NULL;
2159         }
2160       old_type = varobj_get_type (var);
2161       new_type = varobj_get_type (tmp_var);
2162       if (strcmp (old_type, new_type) == 0)
2163         {
2164           /* The expression presently stored inside var->root->exp
2165              remembers the locations of local variables relatively to
2166              the frame where the expression was created (in DWARF location
2167              button, for example).  Naturally, those locations are not
2168              correct in other frames, so update the expression.  */
2169
2170          struct expression *tmp_exp = var->root->exp;
2171          var->root->exp = tmp_var->root->exp;
2172          tmp_var->root->exp = tmp_exp;
2173
2174           varobj_delete (tmp_var, NULL, 0);
2175           *type_changed = 0;
2176         }
2177       else
2178         {
2179           tmp_var->obj_name = xstrdup (var->obj_name);
2180           varobj_delete (var, NULL, 0);
2181
2182           install_variable (tmp_var);
2183           *var_handle = tmp_var;
2184           var = *var_handle;
2185           *type_changed = 1;
2186         }
2187       xfree (old_type);
2188       xfree (new_type);
2189     }
2190   else
2191     {
2192       *type_changed = 0;
2193     }
2194
2195   return (*var->root->lang->value_of_root) (var_handle);
2196 }
2197
2198 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
2199 static struct value *
2200 value_of_child (struct varobj *parent, int index)
2201 {
2202   struct value *value;
2203
2204   value = (*parent->root->lang->value_of_child) (parent, index);
2205
2206   return value;
2207 }
2208
2209 /* GDB already has a command called "value_of_variable". Sigh. */
2210 static char *
2211 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2212 {
2213   if (var->root->is_valid)
2214     return (*var->root->lang->value_of_variable) (var, format);
2215   else
2216     return NULL;
2217 }
2218
2219 static char *
2220 value_get_print_value (struct value *value, enum varobj_display_formats format,
2221                        PyObject *value_formatter)
2222 {
2223   long dummy;
2224   struct ui_file *stb;
2225   struct cleanup *old_chain;
2226   char *thevalue = NULL;
2227   struct value_print_options opts;
2228
2229   if (value == NULL)
2230     return NULL;
2231
2232 #if HAVE_PYTHON
2233   {
2234     PyGILState_STATE state = PyGILState_Ensure ();
2235     if (value_formatter && PyObject_HasAttr (value_formatter,
2236                                              gdbpy_to_string_cst))
2237       {
2238         char *hint;
2239         struct value *replacement;
2240         int string_print = 0;
2241
2242         hint = gdbpy_get_display_hint (value_formatter);
2243         if (hint)
2244           {
2245             if (!strcmp (hint, "string"))
2246               string_print = 1;
2247             xfree (hint);
2248           }
2249
2250         thevalue = apply_varobj_pretty_printer (value_formatter,
2251                                                 &replacement);
2252         if (thevalue && !string_print)
2253           {
2254             PyGILState_Release (state);
2255             return thevalue;
2256           }
2257         if (replacement)
2258           value = replacement;
2259       }
2260     PyGILState_Release (state);
2261   }
2262 #endif
2263
2264   stb = mem_fileopen ();
2265   old_chain = make_cleanup_ui_file_delete (stb);
2266
2267   get_formatted_print_options (&opts, format_code[(int) format]);
2268   opts.deref_ref = 0;
2269   opts.raw = 1;
2270   if (thevalue)
2271     {
2272       make_cleanup (xfree, thevalue);
2273       LA_PRINT_STRING (stb, builtin_type (current_gdbarch)->builtin_char,
2274                        (gdb_byte *) thevalue, strlen (thevalue),
2275                        0, &opts);
2276     }
2277   else
2278     common_val_print (value, stb, 0, &opts, current_language);
2279   thevalue = ui_file_xstrdup (stb, &dummy);
2280
2281   do_cleanups (old_chain);
2282   return thevalue;
2283 }
2284
2285 int
2286 varobj_editable_p (struct varobj *var)
2287 {
2288   struct type *type;
2289   struct value *value;
2290
2291   if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2292     return 0;
2293
2294   type = get_value_type (var);
2295
2296   switch (TYPE_CODE (type))
2297     {
2298     case TYPE_CODE_STRUCT:
2299     case TYPE_CODE_UNION:
2300     case TYPE_CODE_ARRAY:
2301     case TYPE_CODE_FUNC:
2302     case TYPE_CODE_METHOD:
2303       return 0;
2304       break;
2305
2306     default:
2307       return 1;
2308       break;
2309     }
2310 }
2311
2312 /* Return non-zero if changes in value of VAR
2313    must be detected and reported by -var-update.
2314    Return zero is -var-update should never report
2315    changes of such values.  This makes sense for structures
2316    (since the changes in children values will be reported separately),
2317    or for artifical objects (like 'public' pseudo-field in C++).
2318
2319    Return value of 0 means that gdb need not call value_fetch_lazy
2320    for the value of this variable object.  */
2321 static int
2322 varobj_value_is_changeable_p (struct varobj *var)
2323 {
2324   int r;
2325   struct type *type;
2326
2327   if (CPLUS_FAKE_CHILD (var))
2328     return 0;
2329
2330   type = get_value_type (var);
2331
2332   switch (TYPE_CODE (type))
2333     {
2334     case TYPE_CODE_STRUCT:
2335     case TYPE_CODE_UNION:
2336     case TYPE_CODE_ARRAY:
2337       r = 0;
2338       break;
2339
2340     default:
2341       r = 1;
2342     }
2343
2344   return r;
2345 }
2346
2347 /* Return 1 if that varobj is floating, that is is always evaluated in the
2348    selected frame, and not bound to thread/frame.  Such variable objects
2349    are created using '@' as frame specifier to -var-create.  */
2350 int
2351 varobj_floating_p (struct varobj *var)
2352 {
2353   return var->root->floating;
2354 }
2355
2356 /* Given the value and the type of a variable object,
2357    adjust the value and type to those necessary
2358    for getting children of the variable object.
2359    This includes dereferencing top-level references
2360    to all types and dereferencing pointers to
2361    structures.  
2362
2363    Both TYPE and *TYPE should be non-null. VALUE
2364    can be null if we want to only translate type.
2365    *VALUE can be null as well -- if the parent
2366    value is not known.  
2367
2368    If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
2369    depending on whether pointer was dereferenced
2370    in this function.  */
2371 static void
2372 adjust_value_for_child_access (struct value **value,
2373                                   struct type **type,
2374                                   int *was_ptr)
2375 {
2376   gdb_assert (type && *type);
2377
2378   if (was_ptr)
2379     *was_ptr = 0;
2380
2381   *type = check_typedef (*type);
2382   
2383   /* The type of value stored in varobj, that is passed
2384      to us, is already supposed to be
2385      reference-stripped.  */
2386
2387   gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
2388
2389   /* Pointers to structures are treated just like
2390      structures when accessing children.  Don't
2391      dererences pointers to other types.  */
2392   if (TYPE_CODE (*type) == TYPE_CODE_PTR)
2393     {
2394       struct type *target_type = get_target_type (*type);
2395       if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
2396           || TYPE_CODE (target_type) == TYPE_CODE_UNION)
2397         {
2398           if (value && *value)
2399             {
2400               int success = gdb_value_ind (*value, value);        
2401               if (!success)
2402                 *value = NULL;
2403             }
2404           *type = target_type;
2405           if (was_ptr)
2406             *was_ptr = 1;
2407         }
2408     }
2409
2410   /* The 'get_target_type' function calls check_typedef on
2411      result, so we can immediately check type code.  No
2412      need to call check_typedef here.  */
2413 }
2414
2415 /* C */
2416 static int
2417 c_number_of_children (struct varobj *var)
2418 {
2419   struct type *type = get_value_type (var);
2420   int children = 0;
2421   struct type *target;
2422
2423   adjust_value_for_child_access (NULL, &type, NULL);
2424   target = get_target_type (type);
2425
2426   switch (TYPE_CODE (type))
2427     {
2428     case TYPE_CODE_ARRAY:
2429       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
2430           && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
2431         children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
2432       else
2433         /* If we don't know how many elements there are, don't display
2434            any.  */
2435         children = 0;
2436       break;
2437
2438     case TYPE_CODE_STRUCT:
2439     case TYPE_CODE_UNION:
2440       children = TYPE_NFIELDS (type);
2441       break;
2442
2443     case TYPE_CODE_PTR:
2444       /* The type here is a pointer to non-struct. Typically, pointers
2445          have one child, except for function ptrs, which have no children,
2446          and except for void*, as we don't know what to show.
2447
2448          We can show char* so we allow it to be dereferenced.  If you decide
2449          to test for it, please mind that a little magic is necessary to
2450          properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
2451          TYPE_NAME == "char" */
2452       if (TYPE_CODE (target) == TYPE_CODE_FUNC
2453           || TYPE_CODE (target) == TYPE_CODE_VOID)
2454         children = 0;
2455       else
2456         children = 1;
2457       break;
2458
2459     default:
2460       /* Other types have no children */
2461       break;
2462     }
2463
2464   return children;
2465 }
2466
2467 static char *
2468 c_name_of_variable (struct varobj *parent)
2469 {
2470   return xstrdup (parent->name);
2471 }
2472
2473 /* Return the value of element TYPE_INDEX of a structure
2474    value VALUE.  VALUE's type should be a structure,
2475    or union, or a typedef to struct/union.  
2476
2477    Returns NULL if getting the value fails.  Never throws.  */
2478 static struct value *
2479 value_struct_element_index (struct value *value, int type_index)
2480 {
2481   struct value *result = NULL;
2482   volatile struct gdb_exception e;
2483
2484   struct type *type = value_type (value);
2485   type = check_typedef (type);
2486
2487   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
2488               || TYPE_CODE (type) == TYPE_CODE_UNION);
2489
2490   TRY_CATCH (e, RETURN_MASK_ERROR)
2491     {
2492       if (field_is_static (&TYPE_FIELD (type, type_index)))
2493         result = value_static_field (type, type_index);
2494       else
2495         result = value_primitive_field (value, 0, type_index, type);
2496     }
2497   if (e.reason < 0)
2498     {
2499       return NULL;
2500     }
2501   else
2502     {
2503       return result;
2504     }
2505 }
2506
2507 /* Obtain the information about child INDEX of the variable
2508    object PARENT.  
2509    If CNAME is not null, sets *CNAME to the name of the child relative
2510    to the parent.
2511    If CVALUE is not null, sets *CVALUE to the value of the child.
2512    If CTYPE is not null, sets *CTYPE to the type of the child.
2513
2514    If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
2515    information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
2516    to NULL.  */
2517 static void 
2518 c_describe_child (struct varobj *parent, int index,
2519                   char **cname, struct value **cvalue, struct type **ctype,
2520                   char **cfull_expression)
2521 {
2522   struct value *value = parent->value;
2523   struct type *type = get_value_type (parent);
2524   char *parent_expression = NULL;
2525   int was_ptr;
2526
2527   if (cname)
2528     *cname = NULL;
2529   if (cvalue)
2530     *cvalue = NULL;
2531   if (ctype)
2532     *ctype = NULL;
2533   if (cfull_expression)
2534     {
2535       *cfull_expression = NULL;
2536       parent_expression = varobj_get_path_expr (parent);
2537     }
2538   adjust_value_for_child_access (&value, &type, &was_ptr);
2539       
2540   switch (TYPE_CODE (type))
2541     {
2542     case TYPE_CODE_ARRAY:
2543       if (cname)
2544         *cname = xstrprintf ("%d", index
2545                              + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2546
2547       if (cvalue && value)
2548         {
2549           int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
2550           struct value *indval = 
2551             value_from_longest (builtin_type_int32, (LONGEST) real_index);
2552           gdb_value_subscript (value, indval, cvalue);
2553         }
2554
2555       if (ctype)
2556         *ctype = get_target_type (type);
2557
2558       if (cfull_expression)
2559         *cfull_expression = xstrprintf ("(%s)[%d]", parent_expression, 
2560                                         index
2561                                         + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2562
2563
2564       break;
2565
2566     case TYPE_CODE_STRUCT:
2567     case TYPE_CODE_UNION:
2568       if (cname)
2569         *cname = xstrdup (TYPE_FIELD_NAME (type, index));
2570
2571       if (cvalue && value)
2572         {
2573           /* For C, varobj index is the same as type index.  */
2574           *cvalue = value_struct_element_index (value, index);
2575         }
2576
2577       if (ctype)
2578         *ctype = TYPE_FIELD_TYPE (type, index);
2579
2580       if (cfull_expression)
2581         {
2582           char *join = was_ptr ? "->" : ".";
2583           *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join,
2584                                           TYPE_FIELD_NAME (type, index));
2585         }
2586
2587       break;
2588
2589     case TYPE_CODE_PTR:
2590       if (cname)
2591         *cname = xstrprintf ("*%s", parent->name);
2592
2593       if (cvalue && value)
2594         {
2595           int success = gdb_value_ind (value, cvalue);
2596           if (!success)
2597             *cvalue = NULL;
2598         }
2599
2600       /* Don't use get_target_type because it calls
2601          check_typedef and here, we want to show the true
2602          declared type of the variable.  */
2603       if (ctype)
2604         *ctype = TYPE_TARGET_TYPE (type);
2605
2606       if (cfull_expression)
2607         *cfull_expression = xstrprintf ("*(%s)", parent_expression);
2608       
2609       break;
2610
2611     default:
2612       /* This should not happen */
2613       if (cname)
2614         *cname = xstrdup ("???");
2615       if (cfull_expression)
2616         *cfull_expression = xstrdup ("???");
2617       /* Don't set value and type, we don't know then. */
2618     }
2619 }
2620
2621 static char *
2622 c_name_of_child (struct varobj *parent, int index)
2623 {
2624   char *name;
2625   c_describe_child (parent, index, &name, NULL, NULL, NULL);
2626   return name;
2627 }
2628
2629 static char *
2630 c_path_expr_of_child (struct varobj *child)
2631 {
2632   c_describe_child (child->parent, child->index, NULL, NULL, NULL, 
2633                     &child->path_expr);
2634   return child->path_expr;
2635 }
2636
2637 /* If frame associated with VAR can be found, switch
2638    to it and return 1.  Otherwise, return 0.  */
2639 static int
2640 check_scope (struct varobj *var)
2641 {
2642   struct frame_info *fi;
2643   int scope;
2644
2645   fi = frame_find_by_id (var->root->frame);
2646   scope = fi != NULL;
2647
2648   if (fi)
2649     {
2650       CORE_ADDR pc = get_frame_pc (fi);
2651       if (pc <  BLOCK_START (var->root->valid_block) ||
2652           pc >= BLOCK_END (var->root->valid_block))
2653         scope = 0;
2654       else
2655         select_frame (fi);
2656     }
2657   return scope;
2658 }
2659
2660 static struct value *
2661 c_value_of_root (struct varobj **var_handle)
2662 {
2663   struct value *new_val = NULL;
2664   struct varobj *var = *var_handle;
2665   struct frame_info *fi;
2666   int within_scope = 0;
2667   struct cleanup *back_to;
2668                                                                  
2669   /*  Only root variables can be updated... */
2670   if (!is_root_p (var))
2671     /* Not a root var */
2672     return NULL;
2673
2674   back_to = make_cleanup_restore_current_thread ();
2675
2676   /* Determine whether the variable is still around. */
2677   if (var->root->valid_block == NULL || var->root->floating)
2678     within_scope = 1;
2679   else if (var->root->thread_id == 0)
2680     {
2681       /* The program was single-threaded when the variable object was
2682          created.  Technically, it's possible that the program became
2683          multi-threaded since then, but we don't support such
2684          scenario yet.  */
2685       within_scope = check_scope (var);   
2686     }
2687   else
2688     {
2689       ptid_t ptid = thread_id_to_pid (var->root->thread_id);
2690       if (in_thread_list (ptid))
2691         {
2692           switch_to_thread (ptid);
2693           within_scope = check_scope (var);
2694         }
2695     }
2696
2697   if (within_scope)
2698     {
2699       /* We need to catch errors here, because if evaluate
2700          expression fails we want to just return NULL.  */
2701       gdb_evaluate_expression (var->root->exp, &new_val);
2702       return new_val;
2703     }
2704
2705   do_cleanups (back_to);
2706
2707   return NULL;
2708 }
2709
2710 static struct value *
2711 c_value_of_child (struct varobj *parent, int index)
2712 {
2713   struct value *value = NULL;
2714   c_describe_child (parent, index, NULL, &value, NULL, NULL);
2715
2716   return value;
2717 }
2718
2719 static struct type *
2720 c_type_of_child (struct varobj *parent, int index)
2721 {
2722   struct type *type = NULL;
2723   c_describe_child (parent, index, NULL, NULL, &type, NULL);
2724   return type;
2725 }
2726
2727 static char *
2728 c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2729 {
2730   /* BOGUS: if val_print sees a struct/class, or a reference to one,
2731      it will print out its children instead of "{...}".  So we need to
2732      catch that case explicitly.  */
2733   struct type *type = get_type (var);
2734
2735   /* If we have a custom formatter, return whatever string it has
2736      produced.  */
2737   if (var->pretty_printer && var->print_value)
2738     return xstrdup (var->print_value);
2739   
2740   /* Strip top-level references. */
2741   while (TYPE_CODE (type) == TYPE_CODE_REF)
2742     type = check_typedef (TYPE_TARGET_TYPE (type));
2743
2744   switch (TYPE_CODE (type))
2745     {
2746     case TYPE_CODE_STRUCT:
2747     case TYPE_CODE_UNION:
2748       return xstrdup ("{...}");
2749       /* break; */
2750
2751     case TYPE_CODE_ARRAY:
2752       {
2753         char *number;
2754         number = xstrprintf ("[%d]", var->num_children);
2755         return (number);
2756       }
2757       /* break; */
2758
2759     default:
2760       {
2761         if (var->value == NULL)
2762           {
2763             /* This can happen if we attempt to get the value of a struct
2764                member when the parent is an invalid pointer. This is an
2765                error condition, so we should tell the caller. */
2766             return NULL;
2767           }
2768         else
2769           {
2770             if (var->not_fetched && value_lazy (var->value))
2771               /* Frozen variable and no value yet.  We don't
2772                  implicitly fetch the value.  MI response will
2773                  use empty string for the value, which is OK.  */
2774               return NULL;
2775
2776             gdb_assert (varobj_value_is_changeable_p (var));
2777             gdb_assert (!value_lazy (var->value));
2778             
2779             /* If the specified format is the current one,
2780                we can reuse print_value */
2781             if (format == var->format)
2782               return xstrdup (var->print_value);
2783             else
2784               return value_get_print_value (var->value, format, 
2785                                             var->pretty_printer);
2786           }
2787       }
2788     }
2789 }
2790 \f
2791
2792 /* C++ */
2793
2794 static int
2795 cplus_number_of_children (struct varobj *var)
2796 {
2797   struct type *type;
2798   int children, dont_know;
2799
2800   dont_know = 1;
2801   children = 0;
2802
2803   if (!CPLUS_FAKE_CHILD (var))
2804     {
2805       type = get_value_type (var);
2806       adjust_value_for_child_access (NULL, &type, NULL);
2807
2808       if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
2809           ((TYPE_CODE (type)) == TYPE_CODE_UNION))
2810         {
2811           int kids[3];
2812
2813           cplus_class_num_children (type, kids);
2814           if (kids[v_public] != 0)
2815             children++;
2816           if (kids[v_private] != 0)
2817             children++;
2818           if (kids[v_protected] != 0)
2819             children++;
2820
2821           /* Add any baseclasses */
2822           children += TYPE_N_BASECLASSES (type);
2823           dont_know = 0;
2824
2825           /* FIXME: save children in var */
2826         }
2827     }
2828   else
2829     {
2830       int kids[3];
2831
2832       type = get_value_type (var->parent);
2833       adjust_value_for_child_access (NULL, &type, NULL);
2834
2835       cplus_class_num_children (type, kids);
2836       if (strcmp (var->name, "public") == 0)
2837         children = kids[v_public];
2838       else if (strcmp (var->name, "private") == 0)
2839         children = kids[v_private];
2840       else
2841         children = kids[v_protected];
2842       dont_know = 0;
2843     }
2844
2845   if (dont_know)
2846     children = c_number_of_children (var);
2847
2848   return children;
2849 }
2850
2851 /* Compute # of public, private, and protected variables in this class.
2852    That means we need to descend into all baseclasses and find out
2853    how many are there, too. */
2854 static void
2855 cplus_class_num_children (struct type *type, int children[3])
2856 {
2857   int i;
2858
2859   children[v_public] = 0;
2860   children[v_private] = 0;
2861   children[v_protected] = 0;
2862
2863   for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
2864     {
2865       /* If we have a virtual table pointer, omit it. */
2866       if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i)
2867         continue;
2868
2869       if (TYPE_FIELD_PROTECTED (type, i))
2870         children[v_protected]++;
2871       else if (TYPE_FIELD_PRIVATE (type, i))
2872         children[v_private]++;
2873       else
2874         children[v_public]++;
2875     }
2876 }
2877
2878 static char *
2879 cplus_name_of_variable (struct varobj *parent)
2880 {
2881   return c_name_of_variable (parent);
2882 }
2883
2884 enum accessibility { private_field, protected_field, public_field };
2885
2886 /* Check if field INDEX of TYPE has the specified accessibility.
2887    Return 0 if so and 1 otherwise.  */
2888 static int 
2889 match_accessibility (struct type *type, int index, enum accessibility acc)
2890 {
2891   if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
2892     return 1;
2893   else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
2894     return 1;
2895   else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
2896            && !TYPE_FIELD_PROTECTED (type, index))
2897     return 1;
2898   else
2899     return 0;
2900 }
2901
2902 static void
2903 cplus_describe_child (struct varobj *parent, int index,
2904                       char **cname, struct value **cvalue, struct type **ctype,
2905                       char **cfull_expression)
2906 {
2907   char *name = NULL;
2908   struct value *value;
2909   struct type *type;
2910   int was_ptr;
2911   char *parent_expression = NULL;
2912
2913   if (cname)
2914     *cname = NULL;
2915   if (cvalue)
2916     *cvalue = NULL;
2917   if (ctype)
2918     *ctype = NULL;
2919   if (cfull_expression)
2920     *cfull_expression = NULL;
2921
2922   if (CPLUS_FAKE_CHILD (parent))
2923     {
2924       value = parent->parent->value;
2925       type = get_value_type (parent->parent);
2926       if (cfull_expression)
2927         parent_expression = varobj_get_path_expr (parent->parent);
2928     }
2929   else
2930     {
2931       value = parent->value;
2932       type = get_value_type (parent);
2933       if (cfull_expression)
2934         parent_expression = varobj_get_path_expr (parent);
2935     }
2936
2937   adjust_value_for_child_access (&value, &type, &was_ptr);
2938
2939   if (TYPE_CODE (type) == TYPE_CODE_STRUCT
2940       || TYPE_CODE (type) == TYPE_CODE_UNION)
2941     {
2942       char *join = was_ptr ? "->" : ".";
2943       if (CPLUS_FAKE_CHILD (parent))
2944         {
2945           /* The fields of the class type are ordered as they
2946              appear in the class.  We are given an index for a
2947              particular access control type ("public","protected",
2948              or "private").  We must skip over fields that don't
2949              have the access control we are looking for to properly
2950              find the indexed field. */
2951           int type_index = TYPE_N_BASECLASSES (type);
2952           enum accessibility acc = public_field;
2953           if (strcmp (parent->name, "private") == 0)
2954             acc = private_field;
2955           else if (strcmp (parent->name, "protected") == 0)
2956             acc = protected_field;
2957
2958           while (index >= 0)
2959             {
2960               if (TYPE_VPTR_BASETYPE (type) == type
2961                   && type_index == TYPE_VPTR_FIELDNO (type))
2962                 ; /* ignore vptr */
2963               else if (match_accessibility (type, type_index, acc))
2964                     --index;
2965                   ++type_index;
2966             }
2967           --type_index;
2968
2969           if (cname)
2970             *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
2971
2972           if (cvalue && value)
2973             *cvalue = value_struct_element_index (value, type_index);
2974
2975           if (ctype)
2976             *ctype = TYPE_FIELD_TYPE (type, type_index);
2977
2978           if (cfull_expression)
2979             *cfull_expression = xstrprintf ("((%s)%s%s)", parent_expression,
2980                                             join, 
2981                                             TYPE_FIELD_NAME (type, type_index));
2982         }
2983       else if (index < TYPE_N_BASECLASSES (type))
2984         {
2985           /* This is a baseclass.  */
2986           if (cname)
2987             *cname = xstrdup (TYPE_FIELD_NAME (type, index));
2988
2989           if (cvalue && value)
2990             {
2991               *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
2992               release_value (*cvalue);
2993             }
2994
2995           if (ctype)
2996             {
2997               *ctype = TYPE_FIELD_TYPE (type, index);
2998             }
2999
3000           if (cfull_expression)
3001             {
3002               char *ptr = was_ptr ? "*" : "";
3003               /* Cast the parent to the base' type. Note that in gdb,
3004                  expression like 
3005                          (Base1)d
3006                  will create an lvalue, for all appearences, so we don't
3007                  need to use more fancy:
3008                          *(Base1*)(&d)
3009                  construct.  */
3010               *cfull_expression = xstrprintf ("(%s(%s%s) %s)", 
3011                                               ptr, 
3012                                               TYPE_FIELD_NAME (type, index),
3013                                               ptr,
3014                                               parent_expression);
3015             }
3016         }
3017       else
3018         {
3019           char *access = NULL;
3020           int children[3];
3021           cplus_class_num_children (type, children);
3022
3023           /* Everything beyond the baseclasses can
3024              only be "public", "private", or "protected"
3025
3026              The special "fake" children are always output by varobj in
3027              this order. So if INDEX == 2, it MUST be "protected". */
3028           index -= TYPE_N_BASECLASSES (type);
3029           switch (index)
3030             {
3031             case 0:
3032               if (children[v_public] > 0)
3033                 access = "public";
3034               else if (children[v_private] > 0)
3035                 access = "private";
3036               else 
3037                 access = "protected";
3038               break;
3039             case 1:
3040               if (children[v_public] > 0)
3041                 {
3042                   if (children[v_private] > 0)
3043                     access = "private";
3044                   else
3045                     access = "protected";
3046                 }
3047               else if (children[v_private] > 0)
3048                 access = "protected";
3049               break;
3050             case 2:
3051               /* Must be protected */
3052               access = "protected";
3053               break;
3054             default:
3055               /* error! */
3056               break;
3057             }
3058
3059           gdb_assert (access);
3060           if (cname)
3061             *cname = xstrdup (access);
3062
3063           /* Value and type and full expression are null here.  */
3064         }
3065     }
3066   else
3067     {
3068       c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
3069     }  
3070 }
3071
3072 static char *
3073 cplus_name_of_child (struct varobj *parent, int index)
3074 {
3075   char *name = NULL;
3076   cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
3077   return name;
3078 }
3079
3080 static char *
3081 cplus_path_expr_of_child (struct varobj *child)
3082 {
3083   cplus_describe_child (child->parent, child->index, NULL, NULL, NULL, 
3084                         &child->path_expr);
3085   return child->path_expr;
3086 }
3087
3088 static struct value *
3089 cplus_value_of_root (struct varobj **var_handle)
3090 {
3091   return c_value_of_root (var_handle);
3092 }
3093
3094 static struct value *
3095 cplus_value_of_child (struct varobj *parent, int index)
3096 {
3097   struct value *value = NULL;
3098   cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
3099   return value;
3100 }
3101
3102 static struct type *
3103 cplus_type_of_child (struct varobj *parent, int index)
3104 {
3105   struct type *type = NULL;
3106   cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
3107   return type;
3108 }
3109
3110 static char *
3111 cplus_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3112 {
3113
3114   /* If we have one of our special types, don't print out
3115      any value. */
3116   if (CPLUS_FAKE_CHILD (var))
3117     return xstrdup ("");
3118
3119   return c_value_of_variable (var, format);
3120 }
3121 \f
3122 /* Java */
3123
3124 static int
3125 java_number_of_children (struct varobj *var)
3126 {
3127   return cplus_number_of_children (var);
3128 }
3129
3130 static char *
3131 java_name_of_variable (struct varobj *parent)
3132 {
3133   char *p, *name;
3134
3135   name = cplus_name_of_variable (parent);
3136   /* If  the name has "-" in it, it is because we
3137      needed to escape periods in the name... */
3138   p = name;
3139
3140   while (*p != '\000')
3141     {
3142       if (*p == '-')
3143         *p = '.';
3144       p++;
3145     }
3146
3147   return name;
3148 }
3149
3150 static char *
3151 java_name_of_child (struct varobj *parent, int index)
3152 {
3153   char *name, *p;
3154
3155   name = cplus_name_of_child (parent, index);
3156   /* Escape any periods in the name... */
3157   p = name;
3158
3159   while (*p != '\000')
3160     {
3161       if (*p == '.')
3162         *p = '-';
3163       p++;
3164     }
3165
3166   return name;
3167 }
3168
3169 static char *
3170 java_path_expr_of_child (struct varobj *child)
3171 {
3172   return NULL;
3173 }
3174
3175 static struct value *
3176 java_value_of_root (struct varobj **var_handle)
3177 {
3178   return cplus_value_of_root (var_handle);
3179 }
3180
3181 static struct value *
3182 java_value_of_child (struct varobj *parent, int index)
3183 {
3184   return cplus_value_of_child (parent, index);
3185 }
3186
3187 static struct type *
3188 java_type_of_child (struct varobj *parent, int index)
3189 {
3190   return cplus_type_of_child (parent, index);
3191 }
3192
3193 static char *
3194 java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
3195 {
3196   return cplus_value_of_variable (var, format);
3197 }
3198 \f
3199 extern void _initialize_varobj (void);
3200 void
3201 _initialize_varobj (void)
3202 {
3203   int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
3204
3205   varobj_table = xmalloc (sizeof_table);
3206   memset (varobj_table, 0, sizeof_table);
3207
3208   add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
3209                             &varobjdebug, _("\
3210 Set varobj debugging."), _("\
3211 Show varobj debugging."), _("\
3212 When non-zero, varobj debugging is enabled."),
3213                             NULL,
3214                             show_varobjdebug,
3215                             &setlist, &showlist);
3216 }
3217
3218 /* Invalidate the varobjs that are tied to locals and re-create the ones that
3219    are defined on globals.
3220    Invalidated varobjs will be always printed in_scope="invalid".  */
3221
3222 void 
3223 varobj_invalidate (void)
3224 {
3225   struct varobj **all_rootvarobj;
3226   struct varobj **varp;
3227
3228   if (varobj_list (&all_rootvarobj) > 0)
3229     {
3230       varp = all_rootvarobj;
3231       while (*varp != NULL)
3232         {
3233           /* Floating varobjs are reparsed on each stop, so we don't care if
3234              the presently parsed expression refers to something that's gone.
3235              */
3236           if ((*varp)->root->floating)
3237             continue;
3238
3239           /* global var must be re-evaluated.  */     
3240           if ((*varp)->root->valid_block == NULL)
3241             {
3242               struct varobj *tmp_var;
3243
3244               /* Try to create a varobj with same expression.  If we succeed
3245                  replace the old varobj, otherwise invalidate it.  */
3246               tmp_var = varobj_create (NULL, (*varp)->name, (CORE_ADDR) 0,
3247                                        USE_CURRENT_FRAME);
3248               if (tmp_var != NULL) 
3249                 { 
3250                   tmp_var->obj_name = xstrdup ((*varp)->obj_name);
3251                   varobj_delete (*varp, NULL, 0);
3252                   install_variable (tmp_var);
3253                 }
3254               else
3255                 (*varp)->root->is_valid = 0;
3256             }
3257           else /* locals must be invalidated.  */
3258             (*varp)->root->is_valid = 0;
3259
3260           varp++;
3261         }
3262     }
3263   xfree (all_rootvarobj);
3264   return;
3265 }
This page took 0.208714 seconds and 4 git commands to generate.