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