7b2bfb838d2f6bf9a4e4a04cb0607e58caff40a9
[deliverable/binutils-gdb.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
4 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 2 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, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA. */
20
21 #include "defs.h"
22 #include "exceptions.h"
23 #include "value.h"
24 #include "expression.h"
25 #include "frame.h"
26 #include "language.h"
27 #include "wrapper.h"
28 #include "gdbcmd.h"
29 #include "block.h"
30
31 #include "gdb_assert.h"
32 #include "gdb_string.h"
33
34 #include "varobj.h"
35 #include "vec.h"
36
37 /* Non-zero if we want to see trace of varobj level stuff. */
38
39 int varobjdebug = 0;
40 static void
41 show_varobjdebug (struct ui_file *file, int from_tty,
42 struct cmd_list_element *c, const char *value)
43 {
44 fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
45 }
46
47 /* String representations of gdb's format codes */
48 char *varobj_format_string[] =
49 { "natural", "binary", "decimal", "hexadecimal", "octal" };
50
51 /* String representations of gdb's known languages */
52 char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
53
54 /* Data structures */
55
56 /* Every root variable has one of these structures saved in its
57 varobj. Members which must be free'd are noted. */
58 struct varobj_root
59 {
60
61 /* Alloc'd expression for this parent. */
62 struct expression *exp;
63
64 /* Block for which this expression is valid */
65 struct block *valid_block;
66
67 /* The frame for this expression */
68 struct frame_id frame;
69
70 /* If 1, "update" always recomputes the frame & valid block
71 using the currently selected frame. */
72 int use_selected_frame;
73
74 /* Flag that indicates validity: set to 0 when this varobj_root refers
75 to symbols that do not exist anymore. */
76 int is_valid;
77
78 /* Language info for this variable and its children */
79 struct language_specific *lang;
80
81 /* The varobj for this root node. */
82 struct varobj *rootvar;
83
84 /* Next root variable */
85 struct varobj_root *next;
86 };
87
88 typedef struct varobj *varobj_p;
89
90 DEF_VEC_P (varobj_p);
91
92 /* Every variable in the system has a structure of this type defined
93 for it. This structure holds all information necessary to manipulate
94 a particular object variable. Members which must be freed are noted. */
95 struct varobj
96 {
97
98 /* Alloc'd name of the variable for this object.. If this variable is a
99 child, then this name will be the child's source name.
100 (bar, not foo.bar) */
101 /* NOTE: This is the "expression" */
102 char *name;
103
104 /* The alloc'd name for this variable's object. This is here for
105 convenience when constructing this object's children. */
106 char *obj_name;
107
108 /* Index of this variable in its parent or -1 */
109 int index;
110
111 /* The type of this variable. This may NEVER be NULL. */
112 struct type *type;
113
114 /* The value of this expression or subexpression. A NULL value
115 indicates there was an error getting this value.
116 Invariant: if varobj_value_is_changeable_p (this) is non-zero,
117 the value is either NULL, or not lazy. */
118 struct value *value;
119
120 /* The number of (immediate) children this variable has */
121 int num_children;
122
123 /* If this object is a child, this points to its immediate parent. */
124 struct varobj *parent;
125
126 /* Children of this object. */
127 VEC (varobj_p) *children;
128
129 /* Description of the root variable. Points to root variable for children. */
130 struct varobj_root *root;
131
132 /* The format of the output for this object */
133 enum varobj_display_formats format;
134
135 /* Was this variable updated via a varobj_set_value operation */
136 int updated;
137
138 /* Last print value. */
139 char *print_value;
140 };
141
142 struct cpstack
143 {
144 char *name;
145 struct cpstack *next;
146 };
147
148 /* A list of varobjs */
149
150 struct vlist
151 {
152 struct varobj *var;
153 struct vlist *next;
154 };
155
156 /* Private function prototypes */
157
158 /* Helper functions for the above subcommands. */
159
160 static int delete_variable (struct cpstack **, struct varobj *, int);
161
162 static void delete_variable_1 (struct cpstack **, int *,
163 struct varobj *, int, int);
164
165 static int install_variable (struct varobj *);
166
167 static void uninstall_variable (struct varobj *);
168
169 static struct varobj *create_child (struct varobj *, int, char *);
170
171 /* Utility routines */
172
173 static struct varobj *new_variable (void);
174
175 static struct varobj *new_root_variable (void);
176
177 static void free_variable (struct varobj *var);
178
179 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
180
181 static struct type *get_type (struct varobj *var);
182
183 static struct type *get_value_type (struct varobj *var);
184
185 static struct type *get_target_type (struct type *);
186
187 static enum varobj_display_formats variable_default_display (struct varobj *);
188
189 static void cppush (struct cpstack **pstack, char *name);
190
191 static char *cppop (struct cpstack **pstack);
192
193 static int install_new_value (struct varobj *var, struct value *value,
194 int initial);
195
196 /* Language-specific routines. */
197
198 static enum varobj_languages variable_language (struct varobj *var);
199
200 static int number_of_children (struct varobj *);
201
202 static char *name_of_variable (struct varobj *);
203
204 static char *name_of_child (struct varobj *, int);
205
206 static struct value *value_of_root (struct varobj **var_handle, int *);
207
208 static struct value *value_of_child (struct varobj *parent, int index);
209
210 static int variable_editable (struct varobj *var);
211
212 static char *my_value_of_variable (struct varobj *var);
213
214 static char *value_get_print_value (struct value *value,
215 enum varobj_display_formats format);
216
217 static int varobj_value_is_changeable_p (struct varobj *var);
218
219 static int is_root_p (struct varobj *var);
220
221 /* C implementation */
222
223 static int c_number_of_children (struct varobj *var);
224
225 static char *c_name_of_variable (struct varobj *parent);
226
227 static char *c_name_of_child (struct varobj *parent, int index);
228
229 static struct value *c_value_of_root (struct varobj **var_handle);
230
231 static struct value *c_value_of_child (struct varobj *parent, int index);
232
233 static struct type *c_type_of_child (struct varobj *parent, int index);
234
235 static int c_variable_editable (struct varobj *var);
236
237 static char *c_value_of_variable (struct varobj *var);
238
239 /* C++ implementation */
240
241 static int cplus_number_of_children (struct varobj *var);
242
243 static void cplus_class_num_children (struct type *type, int children[3]);
244
245 static char *cplus_name_of_variable (struct varobj *parent);
246
247 static char *cplus_name_of_child (struct varobj *parent, int index);
248
249 static struct value *cplus_value_of_root (struct varobj **var_handle);
250
251 static struct value *cplus_value_of_child (struct varobj *parent, int index);
252
253 static struct type *cplus_type_of_child (struct varobj *parent, int index);
254
255 static int cplus_variable_editable (struct varobj *var);
256
257 static char *cplus_value_of_variable (struct varobj *var);
258
259 /* Java implementation */
260
261 static int java_number_of_children (struct varobj *var);
262
263 static char *java_name_of_variable (struct varobj *parent);
264
265 static char *java_name_of_child (struct varobj *parent, int index);
266
267 static struct value *java_value_of_root (struct varobj **var_handle);
268
269 static struct value *java_value_of_child (struct varobj *parent, int index);
270
271 static struct type *java_type_of_child (struct varobj *parent, int index);
272
273 static int java_variable_editable (struct varobj *var);
274
275 static char *java_value_of_variable (struct varobj *var);
276
277 /* The language specific vector */
278
279 struct language_specific
280 {
281
282 /* The language of this variable */
283 enum varobj_languages language;
284
285 /* The number of children of PARENT. */
286 int (*number_of_children) (struct varobj * parent);
287
288 /* The name (expression) of a root varobj. */
289 char *(*name_of_variable) (struct varobj * parent);
290
291 /* The name of the INDEX'th child of PARENT. */
292 char *(*name_of_child) (struct varobj * parent, int index);
293
294 /* The ``struct value *'' of the root variable ROOT. */
295 struct value *(*value_of_root) (struct varobj ** root_handle);
296
297 /* The ``struct value *'' of the INDEX'th child of PARENT. */
298 struct value *(*value_of_child) (struct varobj * parent, int index);
299
300 /* The type of the INDEX'th child of PARENT. */
301 struct type *(*type_of_child) (struct varobj * parent, int index);
302
303 /* Is VAR editable? */
304 int (*variable_editable) (struct varobj * var);
305
306 /* The current value of VAR. */
307 char *(*value_of_variable) (struct varobj * var);
308 };
309
310 /* Array of known source language routines. */
311 static struct language_specific languages[vlang_end] = {
312 /* Unknown (try treating as C */
313 {
314 vlang_unknown,
315 c_number_of_children,
316 c_name_of_variable,
317 c_name_of_child,
318 c_value_of_root,
319 c_value_of_child,
320 c_type_of_child,
321 c_variable_editable,
322 c_value_of_variable}
323 ,
324 /* C */
325 {
326 vlang_c,
327 c_number_of_children,
328 c_name_of_variable,
329 c_name_of_child,
330 c_value_of_root,
331 c_value_of_child,
332 c_type_of_child,
333 c_variable_editable,
334 c_value_of_variable}
335 ,
336 /* C++ */
337 {
338 vlang_cplus,
339 cplus_number_of_children,
340 cplus_name_of_variable,
341 cplus_name_of_child,
342 cplus_value_of_root,
343 cplus_value_of_child,
344 cplus_type_of_child,
345 cplus_variable_editable,
346 cplus_value_of_variable}
347 ,
348 /* Java */
349 {
350 vlang_java,
351 java_number_of_children,
352 java_name_of_variable,
353 java_name_of_child,
354 java_value_of_root,
355 java_value_of_child,
356 java_type_of_child,
357 java_variable_editable,
358 java_value_of_variable}
359 };
360
361 /* A little convenience enum for dealing with C++/Java */
362 enum vsections
363 {
364 v_public = 0, v_private, v_protected
365 };
366
367 /* Private data */
368
369 /* Mappings of varobj_display_formats enums to gdb's format codes */
370 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
371
372 /* Header of the list of root variable objects */
373 static struct varobj_root *rootlist;
374 static int rootcount = 0; /* number of root varobjs in the list */
375
376 /* Prime number indicating the number of buckets in the hash table */
377 /* A prime large enough to avoid too many colisions */
378 #define VAROBJ_TABLE_SIZE 227
379
380 /* Pointer to the varobj hash table (built at run time) */
381 static struct vlist **varobj_table;
382
383 /* Is the variable X one of our "fake" children? */
384 #define CPLUS_FAKE_CHILD(x) \
385 ((x) != NULL && (x)->type == NULL && (x)->value == NULL)
386 \f
387
388 /* API Implementation */
389 static int
390 is_root_p (struct varobj *var)
391 {
392 return (var->root->rootvar == var);
393 }
394
395 /* Creates a varobj (not its children) */
396
397 /* Return the full FRAME which corresponds to the given CORE_ADDR
398 or NULL if no FRAME on the chain corresponds to CORE_ADDR. */
399
400 static struct frame_info *
401 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
402 {
403 struct frame_info *frame = NULL;
404
405 if (frame_addr == (CORE_ADDR) 0)
406 return NULL;
407
408 while (1)
409 {
410 frame = get_prev_frame (frame);
411 if (frame == NULL)
412 return NULL;
413 if (get_frame_base_address (frame) == frame_addr)
414 return frame;
415 }
416 }
417
418 struct varobj *
419 varobj_create (char *objname,
420 char *expression, CORE_ADDR frame, enum varobj_type type)
421 {
422 struct varobj *var;
423 struct frame_info *fi;
424 struct frame_info *old_fi = NULL;
425 struct block *block;
426 struct cleanup *old_chain;
427
428 /* Fill out a varobj structure for the (root) variable being constructed. */
429 var = new_root_variable ();
430 old_chain = make_cleanup_free_variable (var);
431
432 if (expression != NULL)
433 {
434 char *p;
435 enum varobj_languages lang;
436 struct value *value;
437
438 /* Parse and evaluate the expression, filling in as much
439 of the variable's data as possible */
440
441 /* Allow creator to specify context of variable */
442 if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
443 fi = deprecated_safe_get_selected_frame ();
444 else
445 /* FIXME: cagney/2002-11-23: This code should be doing a
446 lookup using the frame ID and not just the frame's
447 ``address''. This, of course, means an interface change.
448 However, with out that interface change ISAs, such as the
449 ia64 with its two stacks, won't work. Similar goes for the
450 case where there is a frameless function. */
451 fi = find_frame_addr_in_frame_chain (frame);
452
453 /* frame = -2 means always use selected frame */
454 if (type == USE_SELECTED_FRAME)
455 var->root->use_selected_frame = 1;
456
457 block = NULL;
458 if (fi != NULL)
459 block = get_frame_block (fi, 0);
460
461 p = expression;
462 innermost_block = NULL;
463 /* Wrap the call to parse expression, so we can
464 return a sensible error. */
465 if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
466 {
467 return NULL;
468 }
469
470 /* Don't allow variables to be created for types. */
471 if (var->root->exp->elts[0].opcode == OP_TYPE)
472 {
473 do_cleanups (old_chain);
474 fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
475 " as an expression.\n");
476 return NULL;
477 }
478
479 var->format = variable_default_display (var);
480 var->root->valid_block = innermost_block;
481 var->name = savestring (expression, strlen (expression));
482
483 /* When the frame is different from the current frame,
484 we must select the appropriate frame before parsing
485 the expression, otherwise the value will not be current.
486 Since select_frame is so benign, just call it for all cases. */
487 if (fi != NULL)
488 {
489 var->root->frame = get_frame_id (fi);
490 old_fi = get_selected_frame (NULL);
491 select_frame (fi);
492 }
493
494 /* We definitively need to catch errors here.
495 If evaluate_expression succeeds we got the value we wanted.
496 But if it fails, we still go on with a call to evaluate_type() */
497 if (!gdb_evaluate_expression (var->root->exp, &value))
498 /* Error getting the value. Try to at least get the
499 right type. */
500 value = evaluate_type (var->root->exp);
501
502 var->type = value_type (value);
503 install_new_value (var, value, 1 /* Initial assignment */);
504
505 /* Set language info */
506 lang = variable_language (var);
507 var->root->lang = &languages[lang];
508
509 /* Set ourselves as our root */
510 var->root->rootvar = var;
511
512 /* Reset the selected frame */
513 if (fi != NULL)
514 select_frame (old_fi);
515 }
516
517 /* If the variable object name is null, that means this
518 is a temporary variable, so don't install it. */
519
520 if ((var != NULL) && (objname != NULL))
521 {
522 var->obj_name = savestring (objname, strlen (objname));
523
524 /* If a varobj name is duplicated, the install will fail so
525 we must clenup */
526 if (!install_variable (var))
527 {
528 do_cleanups (old_chain);
529 return NULL;
530 }
531 }
532
533 discard_cleanups (old_chain);
534 return var;
535 }
536
537 /* Generates an unique name that can be used for a varobj */
538
539 char *
540 varobj_gen_name (void)
541 {
542 static int id = 0;
543 char *obj_name;
544
545 /* generate a name for this object */
546 id++;
547 obj_name = xstrprintf ("var%d", id);
548
549 return obj_name;
550 }
551
552 /* Given an "objname", returns the pointer to the corresponding varobj
553 or NULL if not found */
554
555 struct varobj *
556 varobj_get_handle (char *objname)
557 {
558 struct vlist *cv;
559 const char *chp;
560 unsigned int index = 0;
561 unsigned int i = 1;
562
563 for (chp = objname; *chp; chp++)
564 {
565 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
566 }
567
568 cv = *(varobj_table + index);
569 while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
570 cv = cv->next;
571
572 if (cv == NULL)
573 error (_("Variable object not found"));
574
575 return cv->var;
576 }
577
578 /* Given the handle, return the name of the object */
579
580 char *
581 varobj_get_objname (struct varobj *var)
582 {
583 return var->obj_name;
584 }
585
586 /* Given the handle, return the expression represented by the object */
587
588 char *
589 varobj_get_expression (struct varobj *var)
590 {
591 return name_of_variable (var);
592 }
593
594 /* Deletes a varobj and all its children if only_children == 0,
595 otherwise deletes only the children; returns a malloc'ed list of all the
596 (malloc'ed) names of the variables that have been deleted (NULL terminated) */
597
598 int
599 varobj_delete (struct varobj *var, char ***dellist, int only_children)
600 {
601 int delcount;
602 int mycount;
603 struct cpstack *result = NULL;
604 char **cp;
605
606 /* Initialize a stack for temporary results */
607 cppush (&result, NULL);
608
609 if (only_children)
610 /* Delete only the variable children */
611 delcount = delete_variable (&result, var, 1 /* only the children */ );
612 else
613 /* Delete the variable and all its children */
614 delcount = delete_variable (&result, var, 0 /* parent+children */ );
615
616 /* We may have been asked to return a list of what has been deleted */
617 if (dellist != NULL)
618 {
619 *dellist = xmalloc ((delcount + 1) * sizeof (char *));
620
621 cp = *dellist;
622 mycount = delcount;
623 *cp = cppop (&result);
624 while ((*cp != NULL) && (mycount > 0))
625 {
626 mycount--;
627 cp++;
628 *cp = cppop (&result);
629 }
630
631 if (mycount || (*cp != NULL))
632 warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
633 mycount);
634 }
635
636 return delcount;
637 }
638
639 /* Set/Get variable object display format */
640
641 enum varobj_display_formats
642 varobj_set_display_format (struct varobj *var,
643 enum varobj_display_formats format)
644 {
645 switch (format)
646 {
647 case FORMAT_NATURAL:
648 case FORMAT_BINARY:
649 case FORMAT_DECIMAL:
650 case FORMAT_HEXADECIMAL:
651 case FORMAT_OCTAL:
652 var->format = format;
653 break;
654
655 default:
656 var->format = variable_default_display (var);
657 }
658
659 return var->format;
660 }
661
662 enum varobj_display_formats
663 varobj_get_display_format (struct varobj *var)
664 {
665 return var->format;
666 }
667
668 int
669 varobj_get_num_children (struct varobj *var)
670 {
671 if (var->num_children == -1)
672 var->num_children = number_of_children (var);
673
674 return var->num_children;
675 }
676
677 /* Creates a list of the immediate children of a variable object;
678 the return code is the number of such children or -1 on error */
679
680 int
681 varobj_list_children (struct varobj *var, struct varobj ***childlist)
682 {
683 struct varobj *child;
684 char *name;
685 int i;
686
687 /* sanity check: have we been passed a pointer? */
688 if (childlist == NULL)
689 return -1;
690
691 *childlist = NULL;
692
693 if (var->num_children == -1)
694 var->num_children = number_of_children (var);
695
696 /* If that failed, give up. */
697 if (var->num_children == -1)
698 return -1;
699
700 /* If we're called when the list of children is not yet initialized,
701 allocate enough elements in it. */
702 while (VEC_length (varobj_p, var->children) < var->num_children)
703 VEC_safe_push (varobj_p, var->children, NULL);
704
705 /* List of children */
706 *childlist = xmalloc ((var->num_children + 1) * sizeof (struct varobj *));
707
708 for (i = 0; i < var->num_children; i++)
709 {
710 varobj_p existing;
711
712 /* Mark as the end in case we bail out */
713 *((*childlist) + i) = NULL;
714
715 existing = VEC_index (varobj_p, var->children, i);
716
717 if (existing == NULL)
718 {
719 /* Either it's the first call to varobj_list_children for
720 this variable object, and the child was never created,
721 or it was explicitly deleted by the client. */
722 name = name_of_child (var, i);
723 existing = create_child (var, i, name);
724 VEC_replace (varobj_p, var->children, i, existing);
725 }
726
727 *((*childlist) + i) = existing;
728 }
729
730 /* End of list is marked by a NULL pointer */
731 *((*childlist) + i) = NULL;
732
733 return var->num_children;
734 }
735
736 /* Obtain the type of an object Variable as a string similar to the one gdb
737 prints on the console */
738
739 char *
740 varobj_get_type (struct varobj *var)
741 {
742 struct value *val;
743 struct cleanup *old_chain;
744 struct ui_file *stb;
745 char *thetype;
746 long length;
747
748 /* For the "fake" variables, do not return a type. (It's type is
749 NULL, too.)
750 Do not return a type for invalid variables as well. */
751 if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
752 return NULL;
753
754 stb = mem_fileopen ();
755 old_chain = make_cleanup_ui_file_delete (stb);
756
757 /* To print the type, we simply create a zero ``struct value *'' and
758 cast it to our type. We then typeprint this variable. */
759 val = value_zero (var->type, not_lval);
760 type_print (value_type (val), "", stb, -1);
761
762 thetype = ui_file_xstrdup (stb, &length);
763 do_cleanups (old_chain);
764 return thetype;
765 }
766
767 /* Obtain the type of an object variable. */
768
769 struct type *
770 varobj_get_gdb_type (struct varobj *var)
771 {
772 return var->type;
773 }
774
775 enum varobj_languages
776 varobj_get_language (struct varobj *var)
777 {
778 return variable_language (var);
779 }
780
781 int
782 varobj_get_attributes (struct varobj *var)
783 {
784 int attributes = 0;
785
786 if (var->root->is_valid && variable_editable (var))
787 /* FIXME: define masks for attributes */
788 attributes |= 0x00000001; /* Editable */
789
790 return attributes;
791 }
792
793 char *
794 varobj_get_value (struct varobj *var)
795 {
796 return my_value_of_variable (var);
797 }
798
799 /* Set the value of an object variable (if it is editable) to the
800 value of the given expression */
801 /* Note: Invokes functions that can call error() */
802
803 int
804 varobj_set_value (struct varobj *var, char *expression)
805 {
806 struct value *val;
807 int offset = 0;
808 int error = 0;
809
810 /* The argument "expression" contains the variable's new value.
811 We need to first construct a legal expression for this -- ugh! */
812 /* Does this cover all the bases? */
813 struct expression *exp;
814 struct value *value;
815 int saved_input_radix = input_radix;
816
817 if (var->value != NULL && variable_editable (var))
818 {
819 char *s = expression;
820 int i;
821
822 input_radix = 10; /* ALWAYS reset to decimal temporarily */
823 exp = parse_exp_1 (&s, 0, 0);
824 if (!gdb_evaluate_expression (exp, &value))
825 {
826 /* We cannot proceed without a valid expression. */
827 xfree (exp);
828 return 0;
829 }
830
831 /* All types that are editable must also be changeable. */
832 gdb_assert (varobj_value_is_changeable_p (var));
833
834 /* The value of a changeable variable object must not be lazy. */
835 gdb_assert (!value_lazy (var->value));
836
837 /* Need to coerce the input. We want to check if the
838 value of the variable object will be different
839 after assignment, and the first thing value_assign
840 does is coerce the input.
841 For example, if we are assigning an array to a pointer variable we
842 should compare the pointer with the the array's address, not with the
843 array's content. */
844 value = coerce_array (value);
845
846 /* The new value may be lazy. gdb_value_assign, or
847 rather value_contents, will take care of this.
848 If fetching of the new value will fail, gdb_value_assign
849 with catch the exception. */
850 if (!gdb_value_assign (var->value, value, &val))
851 return 0;
852
853 /* If the value has changed, record it, so that next -var-update can
854 report this change. If a variable had a value of '1', we've set it
855 to '333' and then set again to '1', when -var-update will report this
856 variable as changed -- because the first assignment has set the
857 'updated' flag. There's no need to optimize that, because return value
858 of -var-update should be considered an approximation. */
859 var->updated = install_new_value (var, val, 0 /* Compare values. */);
860 input_radix = saved_input_radix;
861 return 1;
862 }
863
864 return 0;
865 }
866
867 /* Returns a malloc'ed list with all root variable objects */
868 int
869 varobj_list (struct varobj ***varlist)
870 {
871 struct varobj **cv;
872 struct varobj_root *croot;
873 int mycount = rootcount;
874
875 /* Alloc (rootcount + 1) entries for the result */
876 *varlist = xmalloc ((rootcount + 1) * sizeof (struct varobj *));
877
878 cv = *varlist;
879 croot = rootlist;
880 while ((croot != NULL) && (mycount > 0))
881 {
882 *cv = croot->rootvar;
883 mycount--;
884 cv++;
885 croot = croot->next;
886 }
887 /* Mark the end of the list */
888 *cv = NULL;
889
890 if (mycount || (croot != NULL))
891 warning
892 ("varobj_list: assertion failed - wrong tally of root vars (%d:%d)",
893 rootcount, mycount);
894
895 return rootcount;
896 }
897
898 /* Assign a new value to a variable object. If INITIAL is non-zero,
899 this is the first assignement after the variable object was just
900 created, or changed type. In that case, just assign the value
901 and return 0.
902 Otherwise, assign the value and if type_changeable returns non-zero,
903 find if the new value is different from the current value.
904 Return 1 if so, and 0 if the values are equal.
905
906 The VALUE parameter should not be released -- the function will
907 take care of releasing it when needed. */
908 static int
909 install_new_value (struct varobj *var, struct value *value, int initial)
910 {
911 int changeable;
912 int need_to_fetch;
913 int changed = 0;
914
915 /* We need to know the varobj's type to decide if the value should
916 be fetched or not. C++ fake children (public/protected/private) don't have
917 a type. */
918 gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
919 changeable = varobj_value_is_changeable_p (var);
920 need_to_fetch = changeable;
921
922 /* We are not interested in the address of references, and given
923 that in C++ a reference is not rebindable, it cannot
924 meaningfully change. So, get hold of the real value. */
925 if (value)
926 {
927 value = coerce_ref (value);
928 release_value (value);
929 }
930
931 if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
932 /* For unions, we need to fetch the value implicitly because
933 of implementation of union member fetch. When gdb
934 creates a value for a field and the value of the enclosing
935 structure is not lazy, it immediately copies the necessary
936 bytes from the enclosing values. If the enclosing value is
937 lazy, the call to value_fetch_lazy on the field will read
938 the data from memory. For unions, that means we'll read the
939 same memory more than once, which is not desirable. So
940 fetch now. */
941 need_to_fetch = 1;
942
943 /* The new value might be lazy. If the type is changeable,
944 that is we'll be comparing values of this type, fetch the
945 value now. Otherwise, on the next update the old value
946 will be lazy, which means we've lost that old value. */
947 if (need_to_fetch && value && value_lazy (value))
948 {
949 if (!gdb_value_fetch_lazy (value))
950 {
951 /* Set the value to NULL, so that for the next -var-update,
952 we don't try to compare the new value with this value,
953 that we couldn't even read. */
954 value = NULL;
955 }
956 }
957
958 /* If the type is changeable, compare the old and the new values.
959 If this is the initial assignment, we don't have any old value
960 to compare with. */
961 if (initial && changeable)
962 var->print_value = value_get_print_value (value, var->format);
963 else if (changeable)
964 {
965 /* If the value of the varobj was changed by -var-set-value, then the
966 value in the varobj and in the target is the same. However, that value
967 is different from the value that the varobj had after the previous
968 -var-update. So need to the varobj as changed. */
969 if (var->updated)
970 {
971 xfree (var->print_value);
972 var->print_value = value_get_print_value (value, var->format);
973 changed = 1;
974 }
975 else
976 {
977 /* Try to compare the values. That requires that both
978 values are non-lazy. */
979
980 /* Quick comparison of NULL values. */
981 if (var->value == NULL && value == NULL)
982 /* Equal. */
983 ;
984 else if (var->value == NULL || value == NULL)
985 {
986 xfree (var->print_value);
987 var->print_value = value_get_print_value (value, var->format);
988 changed = 1;
989 }
990 else
991 {
992 char *print_value;
993 gdb_assert (!value_lazy (var->value));
994 gdb_assert (!value_lazy (value));
995 print_value = value_get_print_value (value, var->format);
996
997 gdb_assert (var->print_value != NULL && print_value != NULL);
998 if (strcmp (var->print_value, print_value) != 0)
999 {
1000 xfree (var->print_value);
1001 var->print_value = print_value;
1002 changed = 1;
1003 }
1004 else
1005 xfree (print_value);
1006 }
1007 }
1008 }
1009
1010 /* We must always keep the new value, since children depend on it. */
1011 if (var->value != NULL)
1012 value_free (var->value);
1013 var->value = value;
1014 var->updated = 0;
1015
1016 gdb_assert (!var->value || value_type (var->value));
1017
1018 return changed;
1019 }
1020
1021 /* Update the values for a variable and its children. This is a
1022 two-pronged attack. First, re-parse the value for the root's
1023 expression to see if it's changed. Then go all the way
1024 through its children, reconstructing them and noting if they've
1025 changed.
1026 Return value:
1027 < 0 for error values, see varobj.h.
1028 Otherwise it is the number of children + parent changed.
1029
1030 Only root variables can be updated...
1031
1032 NOTE: This function may delete the caller's varobj. If it
1033 returns TYPE_CHANGED, then it has done this and VARP will be modified
1034 to point to the new varobj. */
1035
1036 int
1037 varobj_update (struct varobj **varp, struct varobj ***changelist)
1038 {
1039 int changed = 0;
1040 int type_changed;
1041 int i;
1042 int vleft;
1043 struct varobj *v;
1044 struct varobj **cv;
1045 struct varobj **templist = NULL;
1046 struct value *new;
1047 VEC (varobj_p) *stack = NULL;
1048 VEC (varobj_p) *result = NULL;
1049 struct frame_id old_fid;
1050 struct frame_info *fi;
1051
1052 /* sanity check: have we been passed a pointer? */
1053 gdb_assert (changelist);
1054
1055 if (!is_root_p (*varp))
1056 error (_("Only root variables can be updated"));
1057
1058 if (!(*varp)->root->is_valid)
1059 return INVALID;
1060
1061 /* Save the selected stack frame, since we will need to change it
1062 in order to evaluate expressions. */
1063 old_fid = get_frame_id (deprecated_safe_get_selected_frame ());
1064
1065 /* Update the root variable. value_of_root can return NULL
1066 if the variable is no longer around, i.e. we stepped out of
1067 the frame in which a local existed. We are letting the
1068 value_of_root variable dispose of the varobj if the type
1069 has changed. */
1070 type_changed = 1;
1071 new = value_of_root (varp, &type_changed);
1072
1073 /* Restore selected frame. */
1074 fi = frame_find_by_id (old_fid);
1075 if (fi)
1076 select_frame (fi);
1077
1078 /* If this is a "use_selected_frame" varobj, and its type has changed,
1079 them note that it's changed. */
1080 if (type_changed)
1081 VEC_safe_push (varobj_p, result, *varp);
1082
1083 if (install_new_value ((*varp), new, type_changed))
1084 {
1085 /* If type_changed is 1, install_new_value will never return
1086 non-zero, so we'll never report the same variable twice. */
1087 gdb_assert (!type_changed);
1088 VEC_safe_push (varobj_p, result, *varp);
1089 }
1090
1091 if (new == NULL)
1092 {
1093 /* This means the varobj itself is out of scope.
1094 Report it. */
1095 VEC_free (varobj_p, result);
1096 return NOT_IN_SCOPE;
1097 }
1098
1099 VEC_safe_push (varobj_p, stack, *varp);
1100
1101 /* Walk through the children, reconstructing them all. */
1102 while (!VEC_empty (varobj_p, stack))
1103 {
1104 v = VEC_pop (varobj_p, stack);
1105
1106 /* Push any children. Use reverse order so that the first
1107 child is popped from the work stack first, and so
1108 will be added to result first. This does not
1109 affect correctness, just "nicer". */
1110 for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1111 {
1112 varobj_p c = VEC_index (varobj_p, v->children, i);
1113 /* Child may be NULL if explicitly deleted by -var-delete. */
1114 if (c != NULL)
1115 VEC_safe_push (varobj_p, stack, c);
1116 }
1117
1118 /* Update this variable, unless it's a root, which is already
1119 updated. */
1120 if (v != *varp)
1121 {
1122 new = value_of_child (v->parent, v->index);
1123 if (install_new_value (v, new, 0 /* type not changed */))
1124 {
1125 /* Note that it's changed */
1126 VEC_safe_push (varobj_p, result, v);
1127 v->updated = 0;
1128 }
1129 }
1130 }
1131
1132 /* Alloc (changed + 1) list entries. */
1133 changed = VEC_length (varobj_p, result);
1134 *changelist = xmalloc ((changed + 1) * sizeof (struct varobj *));
1135 cv = *changelist;
1136
1137 for (i = 0; i < changed; ++i)
1138 {
1139 *cv = VEC_index (varobj_p, result, i);
1140 gdb_assert (*cv != NULL);
1141 ++cv;
1142 }
1143 *cv = 0;
1144
1145 VEC_free (varobj_p, stack);
1146 VEC_free (varobj_p, result);
1147
1148 if (type_changed)
1149 return TYPE_CHANGED;
1150 else
1151 return changed;
1152 }
1153 \f
1154
1155 /* Helper functions */
1156
1157 /*
1158 * Variable object construction/destruction
1159 */
1160
1161 static int
1162 delete_variable (struct cpstack **resultp, struct varobj *var,
1163 int only_children_p)
1164 {
1165 int delcount = 0;
1166
1167 delete_variable_1 (resultp, &delcount, var,
1168 only_children_p, 1 /* remove_from_parent_p */ );
1169
1170 return delcount;
1171 }
1172
1173 /* Delete the variable object VAR and its children */
1174 /* IMPORTANT NOTE: If we delete a variable which is a child
1175 and the parent is not removed we dump core. It must be always
1176 initially called with remove_from_parent_p set */
1177 static void
1178 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1179 struct varobj *var, int only_children_p,
1180 int remove_from_parent_p)
1181 {
1182 int i;
1183
1184 /* Delete any children of this variable, too. */
1185 for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1186 {
1187 varobj_p child = VEC_index (varobj_p, var->children, i);
1188 if (!remove_from_parent_p)
1189 child->parent = NULL;
1190 delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1191 }
1192 VEC_free (varobj_p, var->children);
1193
1194 /* if we were called to delete only the children we are done here */
1195 if (only_children_p)
1196 return;
1197
1198 /* Otherwise, add it to the list of deleted ones and proceed to do so */
1199 /* If the name is null, this is a temporary variable, that has not
1200 yet been installed, don't report it, it belongs to the caller... */
1201 if (var->obj_name != NULL)
1202 {
1203 cppush (resultp, xstrdup (var->obj_name));
1204 *delcountp = *delcountp + 1;
1205 }
1206
1207 /* If this variable has a parent, remove it from its parent's list */
1208 /* OPTIMIZATION: if the parent of this variable is also being deleted,
1209 (as indicated by remove_from_parent_p) we don't bother doing an
1210 expensive list search to find the element to remove when we are
1211 discarding the list afterwards */
1212 if ((remove_from_parent_p) && (var->parent != NULL))
1213 {
1214 VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1215 }
1216
1217 if (var->obj_name != NULL)
1218 uninstall_variable (var);
1219
1220 /* Free memory associated with this variable */
1221 free_variable (var);
1222 }
1223
1224 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1225 static int
1226 install_variable (struct varobj *var)
1227 {
1228 struct vlist *cv;
1229 struct vlist *newvl;
1230 const char *chp;
1231 unsigned int index = 0;
1232 unsigned int i = 1;
1233
1234 for (chp = var->obj_name; *chp; chp++)
1235 {
1236 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1237 }
1238
1239 cv = *(varobj_table + index);
1240 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1241 cv = cv->next;
1242
1243 if (cv != NULL)
1244 error (_("Duplicate variable object name"));
1245
1246 /* Add varobj to hash table */
1247 newvl = xmalloc (sizeof (struct vlist));
1248 newvl->next = *(varobj_table + index);
1249 newvl->var = var;
1250 *(varobj_table + index) = newvl;
1251
1252 /* If root, add varobj to root list */
1253 if (is_root_p (var))
1254 {
1255 /* Add to list of root variables */
1256 if (rootlist == NULL)
1257 var->root->next = NULL;
1258 else
1259 var->root->next = rootlist;
1260 rootlist = var->root;
1261 rootcount++;
1262 }
1263
1264 return 1; /* OK */
1265 }
1266
1267 /* Unistall the object VAR. */
1268 static void
1269 uninstall_variable (struct varobj *var)
1270 {
1271 struct vlist *cv;
1272 struct vlist *prev;
1273 struct varobj_root *cr;
1274 struct varobj_root *prer;
1275 const char *chp;
1276 unsigned int index = 0;
1277 unsigned int i = 1;
1278
1279 /* Remove varobj from hash table */
1280 for (chp = var->obj_name; *chp; chp++)
1281 {
1282 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1283 }
1284
1285 cv = *(varobj_table + index);
1286 prev = NULL;
1287 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1288 {
1289 prev = cv;
1290 cv = cv->next;
1291 }
1292
1293 if (varobjdebug)
1294 fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
1295
1296 if (cv == NULL)
1297 {
1298 warning
1299 ("Assertion failed: Could not find variable object \"%s\" to delete",
1300 var->obj_name);
1301 return;
1302 }
1303
1304 if (prev == NULL)
1305 *(varobj_table + index) = cv->next;
1306 else
1307 prev->next = cv->next;
1308
1309 xfree (cv);
1310
1311 /* If root, remove varobj from root list */
1312 if (is_root_p (var))
1313 {
1314 /* Remove from list of root variables */
1315 if (rootlist == var->root)
1316 rootlist = var->root->next;
1317 else
1318 {
1319 prer = NULL;
1320 cr = rootlist;
1321 while ((cr != NULL) && (cr->rootvar != var))
1322 {
1323 prer = cr;
1324 cr = cr->next;
1325 }
1326 if (cr == NULL)
1327 {
1328 warning
1329 ("Assertion failed: Could not find varobj \"%s\" in root list",
1330 var->obj_name);
1331 return;
1332 }
1333 if (prer == NULL)
1334 rootlist = NULL;
1335 else
1336 prer->next = cr->next;
1337 }
1338 rootcount--;
1339 }
1340
1341 }
1342
1343 /* Create and install a child of the parent of the given name */
1344 static struct varobj *
1345 create_child (struct varobj *parent, int index, char *name)
1346 {
1347 struct varobj *child;
1348 char *childs_name;
1349 struct value *value;
1350
1351 child = new_variable ();
1352
1353 /* name is allocated by name_of_child */
1354 child->name = name;
1355 child->index = index;
1356 value = value_of_child (parent, index);
1357 child->parent = parent;
1358 child->root = parent->root;
1359 childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
1360 child->obj_name = childs_name;
1361 install_variable (child);
1362
1363 /* Compute the type of the child. Must do this before
1364 calling install_new_value. */
1365 if (value != NULL)
1366 /* If the child had no evaluation errors, var->value
1367 will be non-NULL and contain a valid type. */
1368 child->type = value_type (value);
1369 else
1370 /* Otherwise, we must compute the type. */
1371 child->type = (*child->root->lang->type_of_child) (child->parent,
1372 child->index);
1373 install_new_value (child, value, 1);
1374
1375 return child;
1376 }
1377 \f
1378
1379 /*
1380 * Miscellaneous utility functions.
1381 */
1382
1383 /* Allocate memory and initialize a new variable */
1384 static struct varobj *
1385 new_variable (void)
1386 {
1387 struct varobj *var;
1388
1389 var = (struct varobj *) xmalloc (sizeof (struct varobj));
1390 var->name = NULL;
1391 var->obj_name = NULL;
1392 var->index = -1;
1393 var->type = NULL;
1394 var->value = NULL;
1395 var->num_children = -1;
1396 var->parent = NULL;
1397 var->children = NULL;
1398 var->format = 0;
1399 var->root = NULL;
1400 var->updated = 0;
1401 var->print_value = NULL;
1402
1403 return var;
1404 }
1405
1406 /* Allocate memory and initialize a new root variable */
1407 static struct varobj *
1408 new_root_variable (void)
1409 {
1410 struct varobj *var = new_variable ();
1411 var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));;
1412 var->root->lang = NULL;
1413 var->root->exp = NULL;
1414 var->root->valid_block = NULL;
1415 var->root->frame = null_frame_id;
1416 var->root->use_selected_frame = 0;
1417 var->root->rootvar = NULL;
1418 var->root->is_valid = 1;
1419
1420 return var;
1421 }
1422
1423 /* Free any allocated memory associated with VAR. */
1424 static void
1425 free_variable (struct varobj *var)
1426 {
1427 /* Free the expression if this is a root variable. */
1428 if (is_root_p (var))
1429 {
1430 free_current_contents (&var->root->exp);
1431 xfree (var->root);
1432 }
1433
1434 xfree (var->name);
1435 xfree (var->obj_name);
1436 xfree (var->print_value);
1437 xfree (var);
1438 }
1439
1440 static void
1441 do_free_variable_cleanup (void *var)
1442 {
1443 free_variable (var);
1444 }
1445
1446 static struct cleanup *
1447 make_cleanup_free_variable (struct varobj *var)
1448 {
1449 return make_cleanup (do_free_variable_cleanup, var);
1450 }
1451
1452 /* This returns the type of the variable. It also skips past typedefs
1453 to return the real type of the variable.
1454
1455 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1456 except within get_target_type and get_type. */
1457 static struct type *
1458 get_type (struct varobj *var)
1459 {
1460 struct type *type;
1461 type = var->type;
1462
1463 if (type != NULL)
1464 type = check_typedef (type);
1465
1466 return type;
1467 }
1468
1469 /* Return the type of the value that's stored in VAR,
1470 or that would have being stored there if the
1471 value were accessible.
1472
1473 This differs from VAR->type in that VAR->type is always
1474 the true type of the expession in the source language.
1475 The return value of this function is the type we're
1476 actually storing in varobj, and using for displaying
1477 the values and for comparing previous and new values.
1478
1479 For example, top-level references are always stripped. */
1480 static struct type *
1481 get_value_type (struct varobj *var)
1482 {
1483 struct type *type;
1484
1485 if (var->value)
1486 type = value_type (var->value);
1487 else
1488 type = var->type;
1489
1490 type = check_typedef (type);
1491
1492 if (TYPE_CODE (type) == TYPE_CODE_REF)
1493 type = get_target_type (type);
1494
1495 type = check_typedef (type);
1496
1497 return type;
1498 }
1499
1500 /* This returns the target type (or NULL) of TYPE, also skipping
1501 past typedefs, just like get_type ().
1502
1503 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1504 except within get_target_type and get_type. */
1505 static struct type *
1506 get_target_type (struct type *type)
1507 {
1508 if (type != NULL)
1509 {
1510 type = TYPE_TARGET_TYPE (type);
1511 if (type != NULL)
1512 type = check_typedef (type);
1513 }
1514
1515 return type;
1516 }
1517
1518 /* What is the default display for this variable? We assume that
1519 everything is "natural". Any exceptions? */
1520 static enum varobj_display_formats
1521 variable_default_display (struct varobj *var)
1522 {
1523 return FORMAT_NATURAL;
1524 }
1525
1526 /* FIXME: The following should be generic for any pointer */
1527 static void
1528 cppush (struct cpstack **pstack, char *name)
1529 {
1530 struct cpstack *s;
1531
1532 s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
1533 s->name = name;
1534 s->next = *pstack;
1535 *pstack = s;
1536 }
1537
1538 /* FIXME: The following should be generic for any pointer */
1539 static char *
1540 cppop (struct cpstack **pstack)
1541 {
1542 struct cpstack *s;
1543 char *v;
1544
1545 if ((*pstack)->name == NULL && (*pstack)->next == NULL)
1546 return NULL;
1547
1548 s = *pstack;
1549 v = s->name;
1550 *pstack = (*pstack)->next;
1551 xfree (s);
1552
1553 return v;
1554 }
1555 \f
1556 /*
1557 * Language-dependencies
1558 */
1559
1560 /* Common entry points */
1561
1562 /* Get the language of variable VAR. */
1563 static enum varobj_languages
1564 variable_language (struct varobj *var)
1565 {
1566 enum varobj_languages lang;
1567
1568 switch (var->root->exp->language_defn->la_language)
1569 {
1570 default:
1571 case language_c:
1572 lang = vlang_c;
1573 break;
1574 case language_cplus:
1575 lang = vlang_cplus;
1576 break;
1577 case language_java:
1578 lang = vlang_java;
1579 break;
1580 }
1581
1582 return lang;
1583 }
1584
1585 /* Return the number of children for a given variable.
1586 The result of this function is defined by the language
1587 implementation. The number of children returned by this function
1588 is the number of children that the user will see in the variable
1589 display. */
1590 static int
1591 number_of_children (struct varobj *var)
1592 {
1593 return (*var->root->lang->number_of_children) (var);;
1594 }
1595
1596 /* What is the expression for the root varobj VAR? Returns a malloc'd string. */
1597 static char *
1598 name_of_variable (struct varobj *var)
1599 {
1600 return (*var->root->lang->name_of_variable) (var);
1601 }
1602
1603 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd string. */
1604 static char *
1605 name_of_child (struct varobj *var, int index)
1606 {
1607 return (*var->root->lang->name_of_child) (var, index);
1608 }
1609
1610 /* What is the ``struct value *'' of the root variable VAR?
1611 TYPE_CHANGED controls what to do if the type of a
1612 use_selected_frame = 1 variable changes. On input,
1613 TYPE_CHANGED = 1 means discard the old varobj, and replace
1614 it with this one. TYPE_CHANGED = 0 means leave it around.
1615 NB: In both cases, var_handle will point to the new varobj,
1616 so if you use TYPE_CHANGED = 0, you will have to stash the
1617 old varobj pointer away somewhere before calling this.
1618 On return, TYPE_CHANGED will be 1 if the type has changed, and
1619 0 otherwise. */
1620 static struct value *
1621 value_of_root (struct varobj **var_handle, int *type_changed)
1622 {
1623 struct varobj *var;
1624
1625 if (var_handle == NULL)
1626 return NULL;
1627
1628 var = *var_handle;
1629
1630 /* This should really be an exception, since this should
1631 only get called with a root variable. */
1632
1633 if (!is_root_p (var))
1634 return NULL;
1635
1636 if (var->root->use_selected_frame)
1637 {
1638 struct varobj *tmp_var;
1639 char *old_type, *new_type;
1640 old_type = varobj_get_type (var);
1641 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
1642 USE_SELECTED_FRAME);
1643 if (tmp_var == NULL)
1644 {
1645 return NULL;
1646 }
1647 new_type = varobj_get_type (tmp_var);
1648 if (strcmp (old_type, new_type) == 0)
1649 {
1650 varobj_delete (tmp_var, NULL, 0);
1651 *type_changed = 0;
1652 }
1653 else
1654 {
1655 if (*type_changed)
1656 {
1657 tmp_var->obj_name =
1658 savestring (var->obj_name, strlen (var->obj_name));
1659 varobj_delete (var, NULL, 0);
1660 }
1661 else
1662 {
1663 tmp_var->obj_name = varobj_gen_name ();
1664 }
1665 install_variable (tmp_var);
1666 *var_handle = tmp_var;
1667 var = *var_handle;
1668 *type_changed = 1;
1669 }
1670 }
1671 else
1672 {
1673 *type_changed = 0;
1674 }
1675
1676 return (*var->root->lang->value_of_root) (var_handle);
1677 }
1678
1679 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
1680 static struct value *
1681 value_of_child (struct varobj *parent, int index)
1682 {
1683 struct value *value;
1684
1685 value = (*parent->root->lang->value_of_child) (parent, index);
1686
1687 return value;
1688 }
1689
1690 /* Is this variable editable? Use the variable's type to make
1691 this determination. */
1692 static int
1693 variable_editable (struct varobj *var)
1694 {
1695 return (*var->root->lang->variable_editable) (var);
1696 }
1697
1698 /* GDB already has a command called "value_of_variable". Sigh. */
1699 static char *
1700 my_value_of_variable (struct varobj *var)
1701 {
1702 if (var->root->is_valid)
1703 return (*var->root->lang->value_of_variable) (var);
1704 else
1705 return NULL;
1706 }
1707
1708 static char *
1709 value_get_print_value (struct value *value, enum varobj_display_formats format)
1710 {
1711 long dummy;
1712 struct ui_file *stb;
1713 struct cleanup *old_chain;
1714 char *thevalue;
1715
1716 if (value == NULL)
1717 return NULL;
1718
1719 stb = mem_fileopen ();
1720 old_chain = make_cleanup_ui_file_delete (stb);
1721
1722 common_val_print (value, stb, format_code[(int) format], 1, 0, 0);
1723 thevalue = ui_file_xstrdup (stb, &dummy);
1724
1725 do_cleanups (old_chain);
1726 return thevalue;
1727 }
1728
1729 /* Return non-zero if changes in value of VAR
1730 must be detected and reported by -var-update.
1731 Return zero is -var-update should never report
1732 changes of such values. This makes sense for structures
1733 (since the changes in children values will be reported separately),
1734 or for artifical objects (like 'public' pseudo-field in C++).
1735
1736 Return value of 0 means that gdb need not call value_fetch_lazy
1737 for the value of this variable object. */
1738 static int
1739 varobj_value_is_changeable_p (struct varobj *var)
1740 {
1741 int r;
1742 struct type *type;
1743
1744 if (CPLUS_FAKE_CHILD (var))
1745 return 0;
1746
1747 type = get_value_type (var);
1748
1749 switch (TYPE_CODE (type))
1750 {
1751 case TYPE_CODE_STRUCT:
1752 case TYPE_CODE_UNION:
1753 case TYPE_CODE_ARRAY:
1754 r = 0;
1755 break;
1756
1757 default:
1758 r = 1;
1759 }
1760
1761 return r;
1762 }
1763
1764 /* Given the value and the type of a variable object,
1765 adjust the value and type to those necessary
1766 for getting children of the variable object.
1767 This includes dereferencing top-level references
1768 to all types and dereferencing pointers to
1769 structures.
1770
1771 Both TYPE and *TYPE should be non-null. VALUE
1772 can be null if we want to only translate type.
1773 *VALUE can be null as well -- if the parent
1774 value is not known. */
1775 static void
1776 adjust_value_for_child_access (struct value **value,
1777 struct type **type)
1778 {
1779 gdb_assert (type && *type);
1780
1781 *type = check_typedef (*type);
1782
1783 /* The type of value stored in varobj, that is passed
1784 to us, is already supposed to be
1785 reference-stripped. */
1786
1787 gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
1788
1789 /* Pointers to structures are treated just like
1790 structures when accessing children. Don't
1791 dererences pointers to other types. */
1792 if (TYPE_CODE (*type) == TYPE_CODE_PTR)
1793 {
1794 struct type *target_type = get_target_type (*type);
1795 if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
1796 || TYPE_CODE (target_type) == TYPE_CODE_UNION)
1797 {
1798 if (value && *value)
1799 gdb_value_ind (*value, value);
1800 *type = target_type;
1801 }
1802 }
1803
1804 /* The 'get_target_type' function calls check_typedef on
1805 result, so we can immediately check type code. No
1806 need to call check_typedef here. */
1807 }
1808
1809 /* C */
1810 static int
1811 c_number_of_children (struct varobj *var)
1812 {
1813 struct type *type = get_value_type (var);
1814 int children = 0;
1815 struct type *target;
1816
1817 adjust_value_for_child_access (NULL, &type);
1818 target = get_target_type (type);
1819
1820 switch (TYPE_CODE (type))
1821 {
1822 case TYPE_CODE_ARRAY:
1823 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
1824 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED)
1825 children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
1826 else
1827 /* If we don't know how many elements there are, don't display
1828 any. */
1829 children = 0;
1830 break;
1831
1832 case TYPE_CODE_STRUCT:
1833 case TYPE_CODE_UNION:
1834 children = TYPE_NFIELDS (type);
1835 break;
1836
1837 case TYPE_CODE_PTR:
1838 /* The type here is a pointer to non-struct. Typically, pointers
1839 have one child, except for function ptrs, which have no children,
1840 and except for void*, as we don't know what to show.
1841
1842 We can show char* so we allow it to be dereferenced. If you decide
1843 to test for it, please mind that a little magic is necessary to
1844 properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
1845 TYPE_NAME == "char" */
1846 if (TYPE_CODE (target) == TYPE_CODE_FUNC
1847 || TYPE_CODE (target) == TYPE_CODE_VOID)
1848 children = 0;
1849 else
1850 children = 1;
1851 break;
1852
1853 default:
1854 /* Other types have no children */
1855 break;
1856 }
1857
1858 return children;
1859 }
1860
1861 static char *
1862 c_name_of_variable (struct varobj *parent)
1863 {
1864 return savestring (parent->name, strlen (parent->name));
1865 }
1866
1867 /* Return the value of element TYPE_INDEX of a structure
1868 value VALUE. VALUE's type should be a structure,
1869 or union, or a typedef to struct/union.
1870
1871 Returns NULL if getting the value fails. Never throws. */
1872 static struct value *
1873 value_struct_element_index (struct value *value, int type_index)
1874 {
1875 struct value *result = NULL;
1876 volatile struct gdb_exception e;
1877
1878 struct type *type = value_type (value);
1879 type = check_typedef (type);
1880
1881 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1882 || TYPE_CODE (type) == TYPE_CODE_UNION);
1883
1884 TRY_CATCH (e, RETURN_MASK_ERROR)
1885 {
1886 if (TYPE_FIELD_STATIC (type, type_index))
1887 result = value_static_field (type, type_index);
1888 else
1889 result = value_primitive_field (value, 0, type_index, type);
1890 }
1891 if (e.reason < 0)
1892 {
1893 return NULL;
1894 }
1895 else
1896 {
1897 return result;
1898 }
1899 }
1900
1901 /* Obtain the information about child INDEX of the variable
1902 object PARENT.
1903 If CNAME is not null, sets *CNAME to the name of the child relative
1904 to the parent.
1905 If CVALUE is not null, sets *CVALUE to the value of the child.
1906 If CTYPE is not null, sets *CTYPE to the type of the child.
1907
1908 If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
1909 information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
1910 to NULL. */
1911 static void
1912 c_describe_child (struct varobj *parent, int index,
1913 char **cname, struct value **cvalue, struct type **ctype)
1914 {
1915 struct value *value = parent->value;
1916 struct type *type = get_value_type (parent);
1917
1918 if (cname)
1919 *cname = NULL;
1920 if (cvalue)
1921 *cvalue = NULL;
1922 if (ctype)
1923 *ctype = NULL;
1924
1925 adjust_value_for_child_access (&value, &type);
1926
1927 switch (TYPE_CODE (type))
1928 {
1929 case TYPE_CODE_ARRAY:
1930 if (cname)
1931 *cname = xstrprintf ("%d", index
1932 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
1933
1934 if (cvalue && value)
1935 {
1936 int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
1937 struct value *indval =
1938 value_from_longest (builtin_type_int, (LONGEST) real_index);
1939 gdb_value_subscript (value, indval, cvalue);
1940 }
1941
1942 if (ctype)
1943 *ctype = get_target_type (type);
1944
1945 break;
1946
1947 case TYPE_CODE_STRUCT:
1948 case TYPE_CODE_UNION:
1949 if (cname)
1950 {
1951 char *string = TYPE_FIELD_NAME (type, index);
1952 *cname = savestring (string, strlen (string));
1953 }
1954
1955 if (cvalue && value)
1956 {
1957 /* For C, varobj index is the same as type index. */
1958 *cvalue = value_struct_element_index (value, index);
1959 }
1960
1961 if (ctype)
1962 *ctype = TYPE_FIELD_TYPE (type, index);
1963
1964 break;
1965
1966 case TYPE_CODE_PTR:
1967 if (cname)
1968 *cname = xstrprintf ("*%s", parent->name);
1969
1970 if (cvalue && value)
1971 gdb_value_ind (value, cvalue);
1972
1973 /* Don't use get_target_type because it calls
1974 check_typedef and here, we want to show the true
1975 declared type of the variable. */
1976 if (ctype)
1977 *ctype = TYPE_TARGET_TYPE (type);
1978
1979 break;
1980
1981 default:
1982 /* This should not happen */
1983 if (cname)
1984 *cname = xstrdup ("???");
1985 /* Don't set value and type, we don't know then. */
1986 }
1987 }
1988
1989 static char *
1990 c_name_of_child (struct varobj *parent, int index)
1991 {
1992 char *name;
1993 c_describe_child (parent, index, &name, NULL, NULL);
1994 return name;
1995 }
1996
1997 static struct value *
1998 c_value_of_root (struct varobj **var_handle)
1999 {
2000 struct value *new_val = NULL;
2001 struct varobj *var = *var_handle;
2002 struct frame_info *fi;
2003 int within_scope;
2004
2005 /* Only root variables can be updated... */
2006 if (!is_root_p (var))
2007 /* Not a root var */
2008 return NULL;
2009
2010
2011 /* Determine whether the variable is still around. */
2012 if (var->root->valid_block == NULL || var->root->use_selected_frame)
2013 within_scope = 1;
2014 else
2015 {
2016 fi = frame_find_by_id (var->root->frame);
2017 within_scope = fi != NULL;
2018 /* FIXME: select_frame could fail */
2019 if (fi)
2020 {
2021 CORE_ADDR pc = get_frame_pc (fi);
2022 if (pc < BLOCK_START (var->root->valid_block) ||
2023 pc >= BLOCK_END (var->root->valid_block))
2024 within_scope = 0;
2025 else
2026 select_frame (fi);
2027 }
2028 }
2029
2030 if (within_scope)
2031 {
2032 /* We need to catch errors here, because if evaluate
2033 expression fails we want to just return NULL. */
2034 gdb_evaluate_expression (var->root->exp, &new_val);
2035 return new_val;
2036 }
2037
2038 return NULL;
2039 }
2040
2041 static struct value *
2042 c_value_of_child (struct varobj *parent, int index)
2043 {
2044 struct value *value = NULL;
2045 c_describe_child (parent, index, NULL, &value, NULL);
2046
2047 return value;
2048 }
2049
2050 static struct type *
2051 c_type_of_child (struct varobj *parent, int index)
2052 {
2053 struct type *type = NULL;
2054 c_describe_child (parent, index, NULL, NULL, &type);
2055 return type;
2056 }
2057
2058 static int
2059 c_variable_editable (struct varobj *var)
2060 {
2061 switch (TYPE_CODE (get_value_type (var)))
2062 {
2063 case TYPE_CODE_STRUCT:
2064 case TYPE_CODE_UNION:
2065 case TYPE_CODE_ARRAY:
2066 case TYPE_CODE_FUNC:
2067 case TYPE_CODE_METHOD:
2068 return 0;
2069 break;
2070
2071 default:
2072 return 1;
2073 break;
2074 }
2075 }
2076
2077 static char *
2078 c_value_of_variable (struct varobj *var)
2079 {
2080 /* BOGUS: if val_print sees a struct/class, or a reference to one,
2081 it will print out its children instead of "{...}". So we need to
2082 catch that case explicitly. */
2083 struct type *type = get_type (var);
2084
2085 /* Strip top-level references. */
2086 while (TYPE_CODE (type) == TYPE_CODE_REF)
2087 type = check_typedef (TYPE_TARGET_TYPE (type));
2088
2089 switch (TYPE_CODE (type))
2090 {
2091 case TYPE_CODE_STRUCT:
2092 case TYPE_CODE_UNION:
2093 return xstrdup ("{...}");
2094 /* break; */
2095
2096 case TYPE_CODE_ARRAY:
2097 {
2098 char *number;
2099 number = xstrprintf ("[%d]", var->num_children);
2100 return (number);
2101 }
2102 /* break; */
2103
2104 default:
2105 {
2106 if (var->value == NULL)
2107 {
2108 /* This can happen if we attempt to get the value of a struct
2109 member when the parent is an invalid pointer. This is an
2110 error condition, so we should tell the caller. */
2111 return NULL;
2112 }
2113 else
2114 {
2115 gdb_assert (varobj_value_is_changeable_p (var));
2116 gdb_assert (!value_lazy (var->value));
2117 return value_get_print_value (var->value, var->format);
2118 }
2119 }
2120 }
2121 }
2122 \f
2123
2124 /* C++ */
2125
2126 static int
2127 cplus_number_of_children (struct varobj *var)
2128 {
2129 struct type *type;
2130 int children, dont_know;
2131
2132 dont_know = 1;
2133 children = 0;
2134
2135 if (!CPLUS_FAKE_CHILD (var))
2136 {
2137 type = get_value_type (var);
2138 adjust_value_for_child_access (NULL, &type);
2139
2140 if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
2141 ((TYPE_CODE (type)) == TYPE_CODE_UNION))
2142 {
2143 int kids[3];
2144
2145 cplus_class_num_children (type, kids);
2146 if (kids[v_public] != 0)
2147 children++;
2148 if (kids[v_private] != 0)
2149 children++;
2150 if (kids[v_protected] != 0)
2151 children++;
2152
2153 /* Add any baseclasses */
2154 children += TYPE_N_BASECLASSES (type);
2155 dont_know = 0;
2156
2157 /* FIXME: save children in var */
2158 }
2159 }
2160 else
2161 {
2162 int kids[3];
2163
2164 type = get_value_type (var->parent);
2165 adjust_value_for_child_access (NULL, &type);
2166
2167 cplus_class_num_children (type, kids);
2168 if (strcmp (var->name, "public") == 0)
2169 children = kids[v_public];
2170 else if (strcmp (var->name, "private") == 0)
2171 children = kids[v_private];
2172 else
2173 children = kids[v_protected];
2174 dont_know = 0;
2175 }
2176
2177 if (dont_know)
2178 children = c_number_of_children (var);
2179
2180 return children;
2181 }
2182
2183 /* Compute # of public, private, and protected variables in this class.
2184 That means we need to descend into all baseclasses and find out
2185 how many are there, too. */
2186 static void
2187 cplus_class_num_children (struct type *type, int children[3])
2188 {
2189 int i;
2190
2191 children[v_public] = 0;
2192 children[v_private] = 0;
2193 children[v_protected] = 0;
2194
2195 for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
2196 {
2197 /* If we have a virtual table pointer, omit it. */
2198 if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i)
2199 continue;
2200
2201 if (TYPE_FIELD_PROTECTED (type, i))
2202 children[v_protected]++;
2203 else if (TYPE_FIELD_PRIVATE (type, i))
2204 children[v_private]++;
2205 else
2206 children[v_public]++;
2207 }
2208 }
2209
2210 static char *
2211 cplus_name_of_variable (struct varobj *parent)
2212 {
2213 return c_name_of_variable (parent);
2214 }
2215
2216 enum accessibility { private_field, protected_field, public_field };
2217
2218 /* Check if field INDEX of TYPE has the specified accessibility.
2219 Return 0 if so and 1 otherwise. */
2220 static int
2221 match_accessibility (struct type *type, int index, enum accessibility acc)
2222 {
2223 if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
2224 return 1;
2225 else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
2226 return 1;
2227 else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
2228 && !TYPE_FIELD_PROTECTED (type, index))
2229 return 1;
2230 else
2231 return 0;
2232 }
2233
2234 static void
2235 cplus_describe_child (struct varobj *parent, int index,
2236 char **cname, struct value **cvalue, struct type **ctype)
2237 {
2238 char *name = 0;
2239 struct value *value;
2240 struct type *type;
2241
2242 if (cname)
2243 *cname = NULL;
2244 if (cvalue)
2245 *cvalue = NULL;
2246 if (ctype)
2247 *ctype = NULL;
2248
2249
2250 if (CPLUS_FAKE_CHILD (parent))
2251 {
2252 value = parent->parent->value;
2253 type = get_value_type (parent->parent);
2254 }
2255 else
2256 {
2257 value = parent->value;
2258 type = get_value_type (parent);
2259 }
2260
2261 adjust_value_for_child_access (&value, &type);
2262
2263 if (TYPE_CODE (type) == TYPE_CODE_STRUCT
2264 || TYPE_CODE (type) == TYPE_CODE_STRUCT)
2265 {
2266 if (CPLUS_FAKE_CHILD (parent))
2267 {
2268 /* The fields of the class type are ordered as they
2269 appear in the class. We are given an index for a
2270 particular access control type ("public","protected",
2271 or "private"). We must skip over fields that don't
2272 have the access control we are looking for to properly
2273 find the indexed field. */
2274 int type_index = TYPE_N_BASECLASSES (type);
2275 enum accessibility acc = public_field;
2276 if (strcmp (parent->name, "private") == 0)
2277 acc = private_field;
2278 else if (strcmp (parent->name, "protected") == 0)
2279 acc = protected_field;
2280
2281 while (index >= 0)
2282 {
2283 if (TYPE_VPTR_BASETYPE (type) == type
2284 && type_index == TYPE_VPTR_FIELDNO (type))
2285 ; /* ignore vptr */
2286 else if (match_accessibility (type, type_index, acc))
2287 --index;
2288 ++type_index;
2289 }
2290 --type_index;
2291
2292 if (cname)
2293 *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
2294
2295 if (cvalue && value)
2296 *cvalue = value_struct_element_index (value, type_index);
2297
2298 if (ctype)
2299 *ctype = TYPE_FIELD_TYPE (type, type_index);
2300 }
2301 else if (index < TYPE_N_BASECLASSES (type))
2302 {
2303 /* This is a baseclass. */
2304 if (cname)
2305 *cname = xstrdup (TYPE_FIELD_NAME (type, index));
2306
2307 if (cvalue && value)
2308 {
2309 *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
2310 }
2311
2312 if (ctype)
2313 {
2314 *ctype = TYPE_FIELD_TYPE (type, index);
2315 }
2316 }
2317 else
2318 {
2319 char *access = 0;
2320 int children[3];
2321 cplus_class_num_children (type, children);
2322
2323 /* Everything beyond the baseclasses can
2324 only be "public", "private", or "protected"
2325
2326 The special "fake" children are always output by varobj in
2327 this order. So if INDEX == 2, it MUST be "protected". */
2328 index -= TYPE_N_BASECLASSES (type);
2329 switch (index)
2330 {
2331 case 0:
2332 if (children[v_public] > 0)
2333 access = "public";
2334 else if (children[v_private] > 0)
2335 access = "private";
2336 else
2337 access = "protected";
2338 break;
2339 case 1:
2340 if (children[v_public] > 0)
2341 {
2342 if (children[v_private] > 0)
2343 access = "private";
2344 else
2345 access = "protected";
2346 }
2347 else if (children[v_private] > 0)
2348 access = "protected";
2349 break;
2350 case 2:
2351 /* Must be protected */
2352 access = "protected";
2353 break;
2354 default:
2355 /* error! */
2356 break;
2357 }
2358
2359 if (cname)
2360 *cname = xstrdup (access);
2361
2362 /* Value and type are null here. */
2363 }
2364 }
2365 else
2366 {
2367 c_describe_child (parent, index, cname, cvalue, ctype);
2368 }
2369 }
2370
2371 static char *
2372 cplus_name_of_child (struct varobj *parent, int index)
2373 {
2374 char *name = NULL;
2375 cplus_describe_child (parent, index, &name, NULL, NULL);
2376 return name;
2377 }
2378
2379 static struct value *
2380 cplus_value_of_root (struct varobj **var_handle)
2381 {
2382 return c_value_of_root (var_handle);
2383 }
2384
2385 static struct value *
2386 cplus_value_of_child (struct varobj *parent, int index)
2387 {
2388 struct value *value = NULL;
2389 cplus_describe_child (parent, index, NULL, &value, NULL);
2390 return value;
2391 }
2392
2393 static struct type *
2394 cplus_type_of_child (struct varobj *parent, int index)
2395 {
2396 struct type *type = NULL;
2397 cplus_describe_child (parent, index, NULL, NULL, &type);
2398 return type;
2399 }
2400
2401 static int
2402 cplus_variable_editable (struct varobj *var)
2403 {
2404 if (CPLUS_FAKE_CHILD (var))
2405 return 0;
2406
2407 return c_variable_editable (var);
2408 }
2409
2410 static char *
2411 cplus_value_of_variable (struct varobj *var)
2412 {
2413
2414 /* If we have one of our special types, don't print out
2415 any value. */
2416 if (CPLUS_FAKE_CHILD (var))
2417 return xstrdup ("");
2418
2419 return c_value_of_variable (var);
2420 }
2421 \f
2422 /* Java */
2423
2424 static int
2425 java_number_of_children (struct varobj *var)
2426 {
2427 return cplus_number_of_children (var);
2428 }
2429
2430 static char *
2431 java_name_of_variable (struct varobj *parent)
2432 {
2433 char *p, *name;
2434
2435 name = cplus_name_of_variable (parent);
2436 /* If the name has "-" in it, it is because we
2437 needed to escape periods in the name... */
2438 p = name;
2439
2440 while (*p != '\000')
2441 {
2442 if (*p == '-')
2443 *p = '.';
2444 p++;
2445 }
2446
2447 return name;
2448 }
2449
2450 static char *
2451 java_name_of_child (struct varobj *parent, int index)
2452 {
2453 char *name, *p;
2454
2455 name = cplus_name_of_child (parent, index);
2456 /* Escape any periods in the name... */
2457 p = name;
2458
2459 while (*p != '\000')
2460 {
2461 if (*p == '.')
2462 *p = '-';
2463 p++;
2464 }
2465
2466 return name;
2467 }
2468
2469 static struct value *
2470 java_value_of_root (struct varobj **var_handle)
2471 {
2472 return cplus_value_of_root (var_handle);
2473 }
2474
2475 static struct value *
2476 java_value_of_child (struct varobj *parent, int index)
2477 {
2478 return cplus_value_of_child (parent, index);
2479 }
2480
2481 static struct type *
2482 java_type_of_child (struct varobj *parent, int index)
2483 {
2484 return cplus_type_of_child (parent, index);
2485 }
2486
2487 static int
2488 java_variable_editable (struct varobj *var)
2489 {
2490 return cplus_variable_editable (var);
2491 }
2492
2493 static char *
2494 java_value_of_variable (struct varobj *var)
2495 {
2496 return cplus_value_of_variable (var);
2497 }
2498 \f
2499 extern void _initialize_varobj (void);
2500 void
2501 _initialize_varobj (void)
2502 {
2503 int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
2504
2505 varobj_table = xmalloc (sizeof_table);
2506 memset (varobj_table, 0, sizeof_table);
2507
2508 add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
2509 &varobjdebug, _("\
2510 Set varobj debugging."), _("\
2511 Show varobj debugging."), _("\
2512 When non-zero, varobj debugging is enabled."),
2513 NULL,
2514 show_varobjdebug,
2515 &setlist, &showlist);
2516 }
2517
2518 /* Invalidate the varobjs that are tied to locals and re-create the ones that
2519 are defined on globals.
2520 Invalidated varobjs will be always printed in_scope="invalid". */
2521 void
2522 varobj_invalidate (void)
2523 {
2524 struct varobj **all_rootvarobj;
2525 struct varobj **varp;
2526
2527 if (varobj_list (&all_rootvarobj) > 0)
2528 {
2529 varp = all_rootvarobj;
2530 while (*varp != NULL)
2531 {
2532 /* global var must be re-evaluated. */
2533 if ((*varp)->root->valid_block == NULL)
2534 {
2535 struct varobj *tmp_var;
2536
2537 /* Try to create a varobj with same expression. If we succeed replace
2538 the old varobj, otherwise invalidate it. */
2539 tmp_var = varobj_create (NULL, (*varp)->name, (CORE_ADDR) 0, USE_CURRENT_FRAME);
2540 if (tmp_var != NULL)
2541 {
2542 tmp_var->obj_name = xstrdup ((*varp)->obj_name);
2543 varobj_delete (*varp, NULL, 0);
2544 install_variable (tmp_var);
2545 }
2546 else
2547 (*varp)->root->is_valid = 0;
2548 }
2549 else /* locals must be invalidated. */
2550 (*varp)->root->is_valid = 0;
2551
2552 varp++;
2553 }
2554 xfree (all_rootvarobj);
2555 }
2556 return;
2557 }
This page took 0.08834 seconds and 4 git commands to generate.