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