varobj.c revision 1.1.1.3 1 /* Implementation of the GDB variable objects API.
2
3 Copyright (C) 1999-2015 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 "value.h"
20 #include "expression.h"
21 #include "frame.h"
22 #include "language.h"
23 #include "gdbcmd.h"
24 #include "block.h"
25 #include "valprint.h"
26 #include "gdb_regex.h"
27
28 #include "varobj.h"
29 #include "vec.h"
30 #include "gdbthread.h"
31 #include "inferior.h"
32 #include "varobj-iter.h"
33
34 #if HAVE_PYTHON
35 #include "python/python.h"
36 #include "python/python-internal.h"
37 #else
38 typedef int PyObject;
39 #endif
40
41 /* Non-zero if we want to see trace of varobj level stuff. */
42
43 unsigned int varobjdebug = 0;
44 static void
45 show_varobjdebug (struct ui_file *file, int from_tty,
46 struct cmd_list_element *c, const char *value)
47 {
48 fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
49 }
50
51 /* String representations of gdb's format codes. */
52 char *varobj_format_string[] =
53 { "natural", "binary", "decimal", "hexadecimal", "octal" };
54
55 /* True if we want to allow Python-based pretty-printing. */
56 static int pretty_printing = 0;
57
58 void
59 varobj_enable_pretty_printing (void)
60 {
61 pretty_printing = 1;
62 }
63
64 /* Data structures */
65
66 /* Every root variable has one of these structures saved in its
67 varobj. Members which must be free'd are noted. */
68 struct varobj_root
69 {
70
71 /* Alloc'd expression for this parent. */
72 struct expression *exp;
73
74 /* Block for which this expression is valid. */
75 const struct block *valid_block;
76
77 /* The frame for this expression. This field is set iff valid_block is
78 not NULL. */
79 struct frame_id frame;
80
81 /* The thread ID that this varobj_root belong to. This field
82 is only valid if valid_block is not NULL.
83 When not 0, indicates which thread 'frame' belongs to.
84 When 0, indicates that the thread list was empty when the varobj_root
85 was created. */
86 int thread_id;
87
88 /* If 1, the -var-update always recomputes the value in the
89 current thread and frame. Otherwise, variable object is
90 always updated in the specific scope/thread/frame. */
91 int floating;
92
93 /* Flag that indicates validity: set to 0 when this varobj_root refers
94 to symbols that do not exist anymore. */
95 int is_valid;
96
97 /* Language-related operations for this variable and its
98 children. */
99 const struct lang_varobj_ops *lang_ops;
100
101 /* The varobj for this root node. */
102 struct varobj *rootvar;
103
104 /* Next root variable */
105 struct varobj_root *next;
106 };
107
108 /* Dynamic part of varobj. */
109
110 struct varobj_dynamic
111 {
112 /* Whether the children of this varobj were requested. This field is
113 used to decide if dynamic varobj should recompute their children.
114 In the event that the frontend never asked for the children, we
115 can avoid that. */
116 int children_requested;
117
118 /* The pretty-printer constructor. If NULL, then the default
119 pretty-printer will be looked up. If None, then no
120 pretty-printer will be installed. */
121 PyObject *constructor;
122
123 /* The pretty-printer that has been constructed. If NULL, then a
124 new printer object is needed, and one will be constructed. */
125 PyObject *pretty_printer;
126
127 /* The iterator returned by the printer's 'children' method, or NULL
128 if not available. */
129 struct varobj_iter *child_iter;
130
131 /* We request one extra item from the iterator, so that we can
132 report to the caller whether there are more items than we have
133 already reported. However, we don't want to install this value
134 when we read it, because that will mess up future updates. So,
135 we stash it here instead. */
136 varobj_item *saved_item;
137 };
138
139 struct cpstack
140 {
141 char *name;
142 struct cpstack *next;
143 };
144
145 /* A list of varobjs */
146
147 struct vlist
148 {
149 struct varobj *var;
150 struct vlist *next;
151 };
152
153 /* Private function prototypes */
154
155 /* Helper functions for the above subcommands. */
156
157 static int delete_variable (struct cpstack **, struct varobj *, int);
158
159 static void delete_variable_1 (struct cpstack **, int *,
160 struct varobj *, int, int);
161
162 static int install_variable (struct varobj *);
163
164 static void uninstall_variable (struct varobj *);
165
166 static struct varobj *create_child (struct varobj *, int, char *);
167
168 static struct varobj *
169 create_child_with_value (struct varobj *parent, int index,
170 struct varobj_item *item);
171
172 /* Utility routines */
173
174 static struct varobj *new_variable (void);
175
176 static struct varobj *new_root_variable (void);
177
178 static void free_variable (struct varobj *var);
179
180 static struct cleanup *make_cleanup_free_variable (struct varobj *var);
181
182 static enum varobj_display_formats variable_default_display (struct varobj *);
183
184 static void cppush (struct cpstack **pstack, char *name);
185
186 static char *cppop (struct cpstack **pstack);
187
188 static int update_type_if_necessary (struct varobj *var,
189 struct value *new_value);
190
191 static int install_new_value (struct varobj *var, struct value *value,
192 int initial);
193
194 /* Language-specific routines. */
195
196 static int number_of_children (const struct varobj *);
197
198 static char *name_of_variable (const struct varobj *);
199
200 static char *name_of_child (struct varobj *, int);
201
202 static struct value *value_of_root (struct varobj **var_handle, int *);
203
204 static struct value *value_of_child (const struct varobj *parent, int index);
205
206 static char *my_value_of_variable (struct varobj *var,
207 enum varobj_display_formats format);
208
209 static int is_root_p (const struct varobj *var);
210
211 static struct varobj *varobj_add_child (struct varobj *var,
212 struct varobj_item *item);
213
214 /* Private data */
215
216 /* Mappings of varobj_display_formats enums to gdb's format codes. */
217 static int format_code[] = { 0, 't', 'd', 'x', 'o' };
218
219 /* Header of the list of root variable objects. */
220 static struct varobj_root *rootlist;
221
222 /* Prime number indicating the number of buckets in the hash table. */
223 /* A prime large enough to avoid too many colisions. */
224 #define VAROBJ_TABLE_SIZE 227
225
226 /* Pointer to the varobj hash table (built at run time). */
227 static struct vlist **varobj_table;
228
229
230
232 /* API Implementation */
233 static int
234 is_root_p (const struct varobj *var)
235 {
236 return (var->root->rootvar == var);
237 }
238
239 #ifdef HAVE_PYTHON
240 /* Helper function to install a Python environment suitable for
241 use during operations on VAR. */
242 struct cleanup *
243 varobj_ensure_python_env (const struct varobj *var)
244 {
245 return ensure_python_env (var->root->exp->gdbarch,
246 var->root->exp->language_defn);
247 }
248 #endif
249
250 /* Creates a varobj (not its children). */
251
252 /* Return the full FRAME which corresponds to the given CORE_ADDR
253 or NULL if no FRAME on the chain corresponds to CORE_ADDR. */
254
255 static struct frame_info *
256 find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
257 {
258 struct frame_info *frame = NULL;
259
260 if (frame_addr == (CORE_ADDR) 0)
261 return NULL;
262
263 for (frame = get_current_frame ();
264 frame != NULL;
265 frame = get_prev_frame (frame))
266 {
267 /* The CORE_ADDR we get as argument was parsed from a string GDB
268 output as $fp. This output got truncated to gdbarch_addr_bit.
269 Truncate the frame base address in the same manner before
270 comparing it against our argument. */
271 CORE_ADDR frame_base = get_frame_base_address (frame);
272 int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
273
274 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
275 frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
276
277 if (frame_base == frame_addr)
278 return frame;
279 }
280
281 return NULL;
282 }
283
284 struct varobj *
285 varobj_create (char *objname,
286 char *expression, CORE_ADDR frame, enum varobj_type type)
287 {
288 struct varobj *var;
289 struct cleanup *old_chain;
290
291 /* Fill out a varobj structure for the (root) variable being constructed. */
292 var = new_root_variable ();
293 old_chain = make_cleanup_free_variable (var);
294
295 if (expression != NULL)
296 {
297 struct frame_info *fi;
298 struct frame_id old_id = null_frame_id;
299 const struct block *block;
300 const char *p;
301 struct value *value = NULL;
302 CORE_ADDR pc;
303
304 /* Parse and evaluate the expression, filling in as much of the
305 variable's data as possible. */
306
307 if (has_stack_frames ())
308 {
309 /* Allow creator to specify context of variable. */
310 if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
311 fi = get_selected_frame (NULL);
312 else
313 /* FIXME: cagney/2002-11-23: This code should be doing a
314 lookup using the frame ID and not just the frame's
315 ``address''. This, of course, means an interface
316 change. However, with out that interface change ISAs,
317 such as the ia64 with its two stacks, won't work.
318 Similar goes for the case where there is a frameless
319 function. */
320 fi = find_frame_addr_in_frame_chain (frame);
321 }
322 else
323 fi = NULL;
324
325 /* frame = -2 means always use selected frame. */
326 if (type == USE_SELECTED_FRAME)
327 var->root->floating = 1;
328
329 pc = 0;
330 block = NULL;
331 if (fi != NULL)
332 {
333 block = get_frame_block (fi, 0);
334 pc = get_frame_pc (fi);
335 }
336
337 p = expression;
338 innermost_block = NULL;
339 /* Wrap the call to parse expression, so we can
340 return a sensible error. */
341 TRY
342 {
343 var->root->exp = parse_exp_1 (&p, pc, block, 0);
344 }
345
346 CATCH (except, RETURN_MASK_ERROR)
347 {
348 do_cleanups (old_chain);
349 return NULL;
350 }
351 END_CATCH
352
353 /* Don't allow variables to be created for types. */
354 if (var->root->exp->elts[0].opcode == OP_TYPE
355 || var->root->exp->elts[0].opcode == OP_TYPEOF
356 || var->root->exp->elts[0].opcode == OP_DECLTYPE)
357 {
358 do_cleanups (old_chain);
359 fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
360 " as an expression.\n");
361 return NULL;
362 }
363
364 var->format = variable_default_display (var);
365 var->root->valid_block = innermost_block;
366 var->name = xstrdup (expression);
367 /* For a root var, the name and the expr are the same. */
368 var->path_expr = xstrdup (expression);
369
370 /* When the frame is different from the current frame,
371 we must select the appropriate frame before parsing
372 the expression, otherwise the value will not be current.
373 Since select_frame is so benign, just call it for all cases. */
374 if (innermost_block)
375 {
376 /* User could specify explicit FRAME-ADDR which was not found but
377 EXPRESSION is frame specific and we would not be able to evaluate
378 it correctly next time. With VALID_BLOCK set we must also set
379 FRAME and THREAD_ID. */
380 if (fi == NULL)
381 error (_("Failed to find the specified frame"));
382
383 var->root->frame = get_frame_id (fi);
384 var->root->thread_id = pid_to_thread_id (inferior_ptid);
385 old_id = get_frame_id (get_selected_frame (NULL));
386 select_frame (fi);
387 }
388
389 /* We definitely need to catch errors here.
390 If evaluate_expression succeeds we got the value we wanted.
391 But if it fails, we still go on with a call to evaluate_type(). */
392 TRY
393 {
394 value = evaluate_expression (var->root->exp);
395 }
396 CATCH (except, RETURN_MASK_ERROR)
397 {
398 /* Error getting the value. Try to at least get the
399 right type. */
400 struct value *type_only_value = evaluate_type (var->root->exp);
401
402 var->type = value_type (type_only_value);
403 }
404 END_CATCH
405
406 if (value != NULL)
407 {
408 int real_type_found = 0;
409
410 var->type = value_actual_type (value, 0, &real_type_found);
411 if (real_type_found)
412 value = value_cast (var->type, value);
413 }
414
415 /* Set language info */
416 var->root->lang_ops = var->root->exp->language_defn->la_varobj_ops;
417
418 install_new_value (var, value, 1 /* Initial assignment */);
419
420 /* Set ourselves as our root. */
421 var->root->rootvar = var;
422
423 /* Reset the selected frame. */
424 if (frame_id_p (old_id))
425 select_frame (frame_find_by_id (old_id));
426 }
427
428 /* If the variable object name is null, that means this
429 is a temporary variable, so don't install it. */
430
431 if ((var != NULL) && (objname != NULL))
432 {
433 var->obj_name = xstrdup (objname);
434
435 /* If a varobj name is duplicated, the install will fail so
436 we must cleanup. */
437 if (!install_variable (var))
438 {
439 do_cleanups (old_chain);
440 return NULL;
441 }
442 }
443
444 discard_cleanups (old_chain);
445 return var;
446 }
447
448 /* Generates an unique name that can be used for a varobj. */
449
450 char *
451 varobj_gen_name (void)
452 {
453 static int id = 0;
454 char *obj_name;
455
456 /* Generate a name for this object. */
457 id++;
458 obj_name = xstrprintf ("var%d", id);
459
460 return obj_name;
461 }
462
463 /* Given an OBJNAME, returns the pointer to the corresponding varobj. Call
464 error if OBJNAME cannot be found. */
465
466 struct varobj *
467 varobj_get_handle (char *objname)
468 {
469 struct vlist *cv;
470 const char *chp;
471 unsigned int index = 0;
472 unsigned int i = 1;
473
474 for (chp = objname; *chp; chp++)
475 {
476 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
477 }
478
479 cv = *(varobj_table + index);
480 while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
481 cv = cv->next;
482
483 if (cv == NULL)
484 error (_("Variable object not found"));
485
486 return cv->var;
487 }
488
489 /* Given the handle, return the name of the object. */
490
491 char *
492 varobj_get_objname (const struct varobj *var)
493 {
494 return var->obj_name;
495 }
496
497 /* Given the handle, return the expression represented by the object. The
498 result must be freed by the caller. */
499
500 char *
501 varobj_get_expression (const struct varobj *var)
502 {
503 return name_of_variable (var);
504 }
505
506 /* Deletes a varobj and all its children if only_children == 0,
507 otherwise deletes only the children. If DELLIST is non-NULL, it is
508 assigned a malloc'ed list of all the (malloc'ed) names of the variables
509 that have been deleted (NULL terminated). Returns the number of deleted
510 variables. */
511
512 int
513 varobj_delete (struct varobj *var, char ***dellist, int only_children)
514 {
515 int delcount;
516 int mycount;
517 struct cpstack *result = NULL;
518 char **cp;
519
520 /* Initialize a stack for temporary results. */
521 cppush (&result, NULL);
522
523 if (only_children)
524 /* Delete only the variable children. */
525 delcount = delete_variable (&result, var, 1 /* only the children */ );
526 else
527 /* Delete the variable and all its children. */
528 delcount = delete_variable (&result, var, 0 /* parent+children */ );
529
530 /* We may have been asked to return a list of what has been deleted. */
531 if (dellist != NULL)
532 {
533 *dellist = xmalloc ((delcount + 1) * sizeof (char *));
534
535 cp = *dellist;
536 mycount = delcount;
537 *cp = cppop (&result);
538 while ((*cp != NULL) && (mycount > 0))
539 {
540 mycount--;
541 cp++;
542 *cp = cppop (&result);
543 }
544
545 if (mycount || (*cp != NULL))
546 warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
547 mycount);
548 }
549
550 return delcount;
551 }
552
553 #if HAVE_PYTHON
554
555 /* Convenience function for varobj_set_visualizer. Instantiate a
556 pretty-printer for a given value. */
557 static PyObject *
558 instantiate_pretty_printer (PyObject *constructor, struct value *value)
559 {
560 PyObject *val_obj = NULL;
561 PyObject *printer;
562
563 val_obj = value_to_value_object (value);
564 if (! val_obj)
565 return NULL;
566
567 printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
568 Py_DECREF (val_obj);
569 return printer;
570 }
571
572 #endif
573
574 /* Set/Get variable object display format. */
575
576 enum varobj_display_formats
577 varobj_set_display_format (struct varobj *var,
578 enum varobj_display_formats format)
579 {
580 switch (format)
581 {
582 case FORMAT_NATURAL:
583 case FORMAT_BINARY:
584 case FORMAT_DECIMAL:
585 case FORMAT_HEXADECIMAL:
586 case FORMAT_OCTAL:
587 var->format = format;
588 break;
589
590 default:
591 var->format = variable_default_display (var);
592 }
593
594 if (varobj_value_is_changeable_p (var)
595 && var->value && !value_lazy (var->value))
596 {
597 xfree (var->print_value);
598 var->print_value = varobj_value_get_print_value (var->value,
599 var->format, var);
600 }
601
602 return var->format;
603 }
604
605 enum varobj_display_formats
606 varobj_get_display_format (const struct varobj *var)
607 {
608 return var->format;
609 }
610
611 char *
612 varobj_get_display_hint (const struct varobj *var)
613 {
614 char *result = NULL;
615
616 #if HAVE_PYTHON
617 struct cleanup *back_to;
618
619 if (!gdb_python_initialized)
620 return NULL;
621
622 back_to = varobj_ensure_python_env (var);
623
624 if (var->dynamic->pretty_printer != NULL)
625 result = gdbpy_get_display_hint (var->dynamic->pretty_printer);
626
627 do_cleanups (back_to);
628 #endif
629
630 return result;
631 }
632
633 /* Return true if the varobj has items after TO, false otherwise. */
634
635 int
636 varobj_has_more (const struct varobj *var, int to)
637 {
638 if (VEC_length (varobj_p, var->children) > to)
639 return 1;
640 return ((to == -1 || VEC_length (varobj_p, var->children) == to)
641 && (var->dynamic->saved_item != NULL));
642 }
643
644 /* If the variable object is bound to a specific thread, that
645 is its evaluation can always be done in context of a frame
646 inside that thread, returns GDB id of the thread -- which
647 is always positive. Otherwise, returns -1. */
648 int
649 varobj_get_thread_id (const struct varobj *var)
650 {
651 if (var->root->valid_block && var->root->thread_id > 0)
652 return var->root->thread_id;
653 else
654 return -1;
655 }
656
657 void
658 varobj_set_frozen (struct varobj *var, int frozen)
659 {
660 /* When a variable is unfrozen, we don't fetch its value.
661 The 'not_fetched' flag remains set, so next -var-update
662 won't complain.
663
664 We don't fetch the value, because for structures the client
665 should do -var-update anyway. It would be bad to have different
666 client-size logic for structure and other types. */
667 var->frozen = frozen;
668 }
669
670 int
671 varobj_get_frozen (const struct varobj *var)
672 {
673 return var->frozen;
674 }
675
676 /* A helper function that restricts a range to what is actually
677 available in a VEC. This follows the usual rules for the meaning
678 of FROM and TO -- if either is negative, the entire range is
679 used. */
680
681 void
682 varobj_restrict_range (VEC (varobj_p) *children, int *from, int *to)
683 {
684 if (*from < 0 || *to < 0)
685 {
686 *from = 0;
687 *to = VEC_length (varobj_p, children);
688 }
689 else
690 {
691 if (*from > VEC_length (varobj_p, children))
692 *from = VEC_length (varobj_p, children);
693 if (*to > VEC_length (varobj_p, children))
694 *to = VEC_length (varobj_p, children);
695 if (*from > *to)
696 *from = *to;
697 }
698 }
699
700 /* A helper for update_dynamic_varobj_children that installs a new
701 child when needed. */
702
703 static void
704 install_dynamic_child (struct varobj *var,
705 VEC (varobj_p) **changed,
706 VEC (varobj_p) **type_changed,
707 VEC (varobj_p) **newobj,
708 VEC (varobj_p) **unchanged,
709 int *cchanged,
710 int index,
711 struct varobj_item *item)
712 {
713 if (VEC_length (varobj_p, var->children) < index + 1)
714 {
715 /* There's no child yet. */
716 struct varobj *child = varobj_add_child (var, item);
717
718 if (newobj)
719 {
720 VEC_safe_push (varobj_p, *newobj, child);
721 *cchanged = 1;
722 }
723 }
724 else
725 {
726 varobj_p existing = VEC_index (varobj_p, var->children, index);
727 int type_updated = update_type_if_necessary (existing, item->value);
728
729 if (type_updated)
730 {
731 if (type_changed)
732 VEC_safe_push (varobj_p, *type_changed, existing);
733 }
734 if (install_new_value (existing, item->value, 0))
735 {
736 if (!type_updated && changed)
737 VEC_safe_push (varobj_p, *changed, existing);
738 }
739 else if (!type_updated && unchanged)
740 VEC_safe_push (varobj_p, *unchanged, existing);
741 }
742 }
743
744 #if HAVE_PYTHON
745
746 static int
747 dynamic_varobj_has_child_method (const struct varobj *var)
748 {
749 struct cleanup *back_to;
750 PyObject *printer = var->dynamic->pretty_printer;
751 int result;
752
753 if (!gdb_python_initialized)
754 return 0;
755
756 back_to = varobj_ensure_python_env (var);
757 result = PyObject_HasAttr (printer, gdbpy_children_cst);
758 do_cleanups (back_to);
759 return result;
760 }
761 #endif
762
763 /* A factory for creating dynamic varobj's iterators. Returns an
764 iterator object suitable for iterating over VAR's children. */
765
766 static struct varobj_iter *
767 varobj_get_iterator (struct varobj *var)
768 {
769 #if HAVE_PYTHON
770 if (var->dynamic->pretty_printer)
771 return py_varobj_get_iterator (var, var->dynamic->pretty_printer);
772 #endif
773
774 gdb_assert_not_reached (_("\
775 requested an iterator from a non-dynamic varobj"));
776 }
777
778 /* Release and clear VAR's saved item, if any. */
779
780 static void
781 varobj_clear_saved_item (struct varobj_dynamic *var)
782 {
783 if (var->saved_item != NULL)
784 {
785 value_free (var->saved_item->value);
786 xfree (var->saved_item);
787 var->saved_item = NULL;
788 }
789 }
790
791 static int
792 update_dynamic_varobj_children (struct varobj *var,
793 VEC (varobj_p) **changed,
794 VEC (varobj_p) **type_changed,
795 VEC (varobj_p) **newobj,
796 VEC (varobj_p) **unchanged,
797 int *cchanged,
798 int update_children,
799 int from,
800 int to)
801 {
802 int i;
803
804 *cchanged = 0;
805
806 if (update_children || var->dynamic->child_iter == NULL)
807 {
808 varobj_iter_delete (var->dynamic->child_iter);
809 var->dynamic->child_iter = varobj_get_iterator (var);
810
811 varobj_clear_saved_item (var->dynamic);
812
813 i = 0;
814
815 if (var->dynamic->child_iter == NULL)
816 return 0;
817 }
818 else
819 i = VEC_length (varobj_p, var->children);
820
821 /* We ask for one extra child, so that MI can report whether there
822 are more children. */
823 for (; to < 0 || i < to + 1; ++i)
824 {
825 varobj_item *item;
826
827 /* See if there was a leftover from last time. */
828 if (var->dynamic->saved_item != NULL)
829 {
830 item = var->dynamic->saved_item;
831 var->dynamic->saved_item = NULL;
832 }
833 else
834 {
835 item = varobj_iter_next (var->dynamic->child_iter);
836 /* Release vitem->value so its lifetime is not bound to the
837 execution of a command. */
838 if (item != NULL && item->value != NULL)
839 release_value_or_incref (item->value);
840 }
841
842 if (item == NULL)
843 {
844 /* Iteration is done. Remove iterator from VAR. */
845 varobj_iter_delete (var->dynamic->child_iter);
846 var->dynamic->child_iter = NULL;
847 break;
848 }
849 /* We don't want to push the extra child on any report list. */
850 if (to < 0 || i < to)
851 {
852 int can_mention = from < 0 || i >= from;
853
854 install_dynamic_child (var, can_mention ? changed : NULL,
855 can_mention ? type_changed : NULL,
856 can_mention ? newobj : NULL,
857 can_mention ? unchanged : NULL,
858 can_mention ? cchanged : NULL, i,
859 item);
860
861 xfree (item);
862 }
863 else
864 {
865 var->dynamic->saved_item = item;
866
867 /* We want to truncate the child list just before this
868 element. */
869 break;
870 }
871 }
872
873 if (i < VEC_length (varobj_p, var->children))
874 {
875 int j;
876
877 *cchanged = 1;
878 for (j = i; j < VEC_length (varobj_p, var->children); ++j)
879 varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0);
880 VEC_truncate (varobj_p, var->children, i);
881 }
882
883 /* If there are fewer children than requested, note that the list of
884 children changed. */
885 if (to >= 0 && VEC_length (varobj_p, var->children) < to)
886 *cchanged = 1;
887
888 var->num_children = VEC_length (varobj_p, var->children);
889
890 return 1;
891 }
892
893 int
894 varobj_get_num_children (struct varobj *var)
895 {
896 if (var->num_children == -1)
897 {
898 if (varobj_is_dynamic_p (var))
899 {
900 int dummy;
901
902 /* If we have a dynamic varobj, don't report -1 children.
903 So, try to fetch some children first. */
904 update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL, &dummy,
905 0, 0, 0);
906 }
907 else
908 var->num_children = number_of_children (var);
909 }
910
911 return var->num_children >= 0 ? var->num_children : 0;
912 }
913
914 /* Creates a list of the immediate children of a variable object;
915 the return code is the number of such children or -1 on error. */
916
917 VEC (varobj_p)*
918 varobj_list_children (struct varobj *var, int *from, int *to)
919 {
920 char *name;
921 int i, children_changed;
922
923 var->dynamic->children_requested = 1;
924
925 if (varobj_is_dynamic_p (var))
926 {
927 /* This, in theory, can result in the number of children changing without
928 frontend noticing. But well, calling -var-list-children on the same
929 varobj twice is not something a sane frontend would do. */
930 update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL,
931 &children_changed, 0, 0, *to);
932 varobj_restrict_range (var->children, from, to);
933 return var->children;
934 }
935
936 if (var->num_children == -1)
937 var->num_children = number_of_children (var);
938
939 /* If that failed, give up. */
940 if (var->num_children == -1)
941 return var->children;
942
943 /* If we're called when the list of children is not yet initialized,
944 allocate enough elements in it. */
945 while (VEC_length (varobj_p, var->children) < var->num_children)
946 VEC_safe_push (varobj_p, var->children, NULL);
947
948 for (i = 0; i < var->num_children; i++)
949 {
950 varobj_p existing = VEC_index (varobj_p, var->children, i);
951
952 if (existing == NULL)
953 {
954 /* Either it's the first call to varobj_list_children for
955 this variable object, and the child was never created,
956 or it was explicitly deleted by the client. */
957 name = name_of_child (var, i);
958 existing = create_child (var, i, name);
959 VEC_replace (varobj_p, var->children, i, existing);
960 }
961 }
962
963 varobj_restrict_range (var->children, from, to);
964 return var->children;
965 }
966
967 static struct varobj *
968 varobj_add_child (struct varobj *var, struct varobj_item *item)
969 {
970 varobj_p v = create_child_with_value (var,
971 VEC_length (varobj_p, var->children),
972 item);
973
974 VEC_safe_push (varobj_p, var->children, v);
975 return v;
976 }
977
978 /* Obtain the type of an object Variable as a string similar to the one gdb
979 prints on the console. The caller is responsible for freeing the string.
980 */
981
982 char *
983 varobj_get_type (struct varobj *var)
984 {
985 /* For the "fake" variables, do not return a type. (Its type is
986 NULL, too.)
987 Do not return a type for invalid variables as well. */
988 if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
989 return NULL;
990
991 return type_to_string (var->type);
992 }
993
994 /* Obtain the type of an object variable. */
995
996 struct type *
997 varobj_get_gdb_type (const struct varobj *var)
998 {
999 return var->type;
1000 }
1001
1002 /* Is VAR a path expression parent, i.e., can it be used to construct
1003 a valid path expression? */
1004
1005 static int
1006 is_path_expr_parent (const struct varobj *var)
1007 {
1008 gdb_assert (var->root->lang_ops->is_path_expr_parent != NULL);
1009 return var->root->lang_ops->is_path_expr_parent (var);
1010 }
1011
1012 /* Is VAR a path expression parent, i.e., can it be used to construct
1013 a valid path expression? By default we assume any VAR can be a path
1014 parent. */
1015
1016 int
1017 varobj_default_is_path_expr_parent (const struct varobj *var)
1018 {
1019 return 1;
1020 }
1021
1022 /* Return the path expression parent for VAR. */
1023
1024 const struct varobj *
1025 varobj_get_path_expr_parent (const struct varobj *var)
1026 {
1027 const struct varobj *parent = var;
1028
1029 while (!is_root_p (parent) && !is_path_expr_parent (parent))
1030 parent = parent->parent;
1031
1032 return parent;
1033 }
1034
1035 /* Return a pointer to the full rooted expression of varobj VAR.
1036 If it has not been computed yet, compute it. */
1037 char *
1038 varobj_get_path_expr (const struct varobj *var)
1039 {
1040 if (var->path_expr == NULL)
1041 {
1042 /* For root varobjs, we initialize path_expr
1043 when creating varobj, so here it should be
1044 child varobj. */
1045 struct varobj *mutable_var = (struct varobj *) var;
1046 gdb_assert (!is_root_p (var));
1047
1048 mutable_var->path_expr = (*var->root->lang_ops->path_expr_of_child) (var);
1049 }
1050
1051 return var->path_expr;
1052 }
1053
1054 const struct language_defn *
1055 varobj_get_language (const struct varobj *var)
1056 {
1057 return var->root->exp->language_defn;
1058 }
1059
1060 int
1061 varobj_get_attributes (const struct varobj *var)
1062 {
1063 int attributes = 0;
1064
1065 if (varobj_editable_p (var))
1066 /* FIXME: define masks for attributes. */
1067 attributes |= 0x00000001; /* Editable */
1068
1069 return attributes;
1070 }
1071
1072 /* Return true if VAR is a dynamic varobj. */
1073
1074 int
1075 varobj_is_dynamic_p (const struct varobj *var)
1076 {
1077 return var->dynamic->pretty_printer != NULL;
1078 }
1079
1080 char *
1081 varobj_get_formatted_value (struct varobj *var,
1082 enum varobj_display_formats format)
1083 {
1084 return my_value_of_variable (var, format);
1085 }
1086
1087 char *
1088 varobj_get_value (struct varobj *var)
1089 {
1090 return my_value_of_variable (var, var->format);
1091 }
1092
1093 /* Set the value of an object variable (if it is editable) to the
1094 value of the given expression. */
1095 /* Note: Invokes functions that can call error(). */
1096
1097 int
1098 varobj_set_value (struct varobj *var, char *expression)
1099 {
1100 struct value *val = NULL; /* Initialize to keep gcc happy. */
1101 /* The argument "expression" contains the variable's new value.
1102 We need to first construct a legal expression for this -- ugh! */
1103 /* Does this cover all the bases? */
1104 struct expression *exp;
1105 struct value *value = NULL; /* Initialize to keep gcc happy. */
1106 int saved_input_radix = input_radix;
1107 const char *s = expression;
1108
1109 gdb_assert (varobj_editable_p (var));
1110
1111 input_radix = 10; /* ALWAYS reset to decimal temporarily. */
1112 exp = parse_exp_1 (&s, 0, 0, 0);
1113 TRY
1114 {
1115 value = evaluate_expression (exp);
1116 }
1117
1118 CATCH (except, RETURN_MASK_ERROR)
1119 {
1120 /* We cannot proceed without a valid expression. */
1121 xfree (exp);
1122 return 0;
1123 }
1124 END_CATCH
1125
1126 /* All types that are editable must also be changeable. */
1127 gdb_assert (varobj_value_is_changeable_p (var));
1128
1129 /* The value of a changeable variable object must not be lazy. */
1130 gdb_assert (!value_lazy (var->value));
1131
1132 /* Need to coerce the input. We want to check if the
1133 value of the variable object will be different
1134 after assignment, and the first thing value_assign
1135 does is coerce the input.
1136 For example, if we are assigning an array to a pointer variable we
1137 should compare the pointer with the array's address, not with the
1138 array's content. */
1139 value = coerce_array (value);
1140
1141 /* The new value may be lazy. value_assign, or
1142 rather value_contents, will take care of this. */
1143 TRY
1144 {
1145 val = value_assign (var->value, value);
1146 }
1147
1148 CATCH (except, RETURN_MASK_ERROR)
1149 {
1150 return 0;
1151 }
1152 END_CATCH
1153
1154 /* If the value has changed, record it, so that next -var-update can
1155 report this change. If a variable had a value of '1', we've set it
1156 to '333' and then set again to '1', when -var-update will report this
1157 variable as changed -- because the first assignment has set the
1158 'updated' flag. There's no need to optimize that, because return value
1159 of -var-update should be considered an approximation. */
1160 var->updated = install_new_value (var, val, 0 /* Compare values. */);
1161 input_radix = saved_input_radix;
1162 return 1;
1163 }
1164
1165 #if HAVE_PYTHON
1166
1167 /* A helper function to install a constructor function and visualizer
1168 in a varobj_dynamic. */
1169
1170 static void
1171 install_visualizer (struct varobj_dynamic *var, PyObject *constructor,
1172 PyObject *visualizer)
1173 {
1174 Py_XDECREF (var->constructor);
1175 var->constructor = constructor;
1176
1177 Py_XDECREF (var->pretty_printer);
1178 var->pretty_printer = visualizer;
1179
1180 varobj_iter_delete (var->child_iter);
1181 var->child_iter = NULL;
1182 }
1183
1184 /* Install the default visualizer for VAR. */
1185
1186 static void
1187 install_default_visualizer (struct varobj *var)
1188 {
1189 /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */
1190 if (CPLUS_FAKE_CHILD (var))
1191 return;
1192
1193 if (pretty_printing)
1194 {
1195 PyObject *pretty_printer = NULL;
1196
1197 if (var->value)
1198 {
1199 pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1200 if (! pretty_printer)
1201 {
1202 gdbpy_print_stack ();
1203 error (_("Cannot instantiate printer for default visualizer"));
1204 }
1205 }
1206
1207 if (pretty_printer == Py_None)
1208 {
1209 Py_DECREF (pretty_printer);
1210 pretty_printer = NULL;
1211 }
1212
1213 install_visualizer (var->dynamic, NULL, pretty_printer);
1214 }
1215 }
1216
1217 /* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1218 make a new object. */
1219
1220 static void
1221 construct_visualizer (struct varobj *var, PyObject *constructor)
1222 {
1223 PyObject *pretty_printer;
1224
1225 /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */
1226 if (CPLUS_FAKE_CHILD (var))
1227 return;
1228
1229 Py_INCREF (constructor);
1230 if (constructor == Py_None)
1231 pretty_printer = NULL;
1232 else
1233 {
1234 pretty_printer = instantiate_pretty_printer (constructor, var->value);
1235 if (! pretty_printer)
1236 {
1237 gdbpy_print_stack ();
1238 Py_DECREF (constructor);
1239 constructor = Py_None;
1240 Py_INCREF (constructor);
1241 }
1242
1243 if (pretty_printer == Py_None)
1244 {
1245 Py_DECREF (pretty_printer);
1246 pretty_printer = NULL;
1247 }
1248 }
1249
1250 install_visualizer (var->dynamic, constructor, pretty_printer);
1251 }
1252
1253 #endif /* HAVE_PYTHON */
1254
1255 /* A helper function for install_new_value. This creates and installs
1256 a visualizer for VAR, if appropriate. */
1257
1258 static void
1259 install_new_value_visualizer (struct varobj *var)
1260 {
1261 #if HAVE_PYTHON
1262 /* If the constructor is None, then we want the raw value. If VAR
1263 does not have a value, just skip this. */
1264 if (!gdb_python_initialized)
1265 return;
1266
1267 if (var->dynamic->constructor != Py_None && var->value != NULL)
1268 {
1269 struct cleanup *cleanup;
1270
1271 cleanup = varobj_ensure_python_env (var);
1272
1273 if (var->dynamic->constructor == NULL)
1274 install_default_visualizer (var);
1275 else
1276 construct_visualizer (var, var->dynamic->constructor);
1277
1278 do_cleanups (cleanup);
1279 }
1280 #else
1281 /* Do nothing. */
1282 #endif
1283 }
1284
1285 /* When using RTTI to determine variable type it may be changed in runtime when
1286 the variable value is changed. This function checks whether type of varobj
1287 VAR will change when a new value NEW_VALUE is assigned and if it is so
1288 updates the type of VAR. */
1289
1290 static int
1291 update_type_if_necessary (struct varobj *var, struct value *new_value)
1292 {
1293 if (new_value)
1294 {
1295 struct value_print_options opts;
1296
1297 get_user_print_options (&opts);
1298 if (opts.objectprint)
1299 {
1300 struct type *new_type;
1301 char *curr_type_str, *new_type_str;
1302 int type_name_changed;
1303
1304 new_type = value_actual_type (new_value, 0, 0);
1305 new_type_str = type_to_string (new_type);
1306 curr_type_str = varobj_get_type (var);
1307 type_name_changed = strcmp (curr_type_str, new_type_str) != 0;
1308 xfree (curr_type_str);
1309 xfree (new_type_str);
1310
1311 if (type_name_changed)
1312 {
1313 var->type = new_type;
1314
1315 /* This information may be not valid for a new type. */
1316 varobj_delete (var, NULL, 1);
1317 VEC_free (varobj_p, var->children);
1318 var->num_children = -1;
1319 }
1320 xfree (new_type_str);
1321 xfree (curr_type_str);
1322 return type_name_changed;
1323 }
1324 }
1325
1326 return 0;
1327 }
1328
1329 /* Assign a new value to a variable object. If INITIAL is non-zero,
1330 this is the first assignement after the variable object was just
1331 created, or changed type. In that case, just assign the value
1332 and return 0.
1333 Otherwise, assign the new value, and return 1 if the value is
1334 different from the current one, 0 otherwise. The comparison is
1335 done on textual representation of value. Therefore, some types
1336 need not be compared. E.g. for structures the reported value is
1337 always "{...}", so no comparison is necessary here. If the old
1338 value was NULL and new one is not, or vice versa, we always return 1.
1339
1340 The VALUE parameter should not be released -- the function will
1341 take care of releasing it when needed. */
1342 static int
1343 install_new_value (struct varobj *var, struct value *value, int initial)
1344 {
1345 int changeable;
1346 int need_to_fetch;
1347 int changed = 0;
1348 int intentionally_not_fetched = 0;
1349 char *print_value = NULL;
1350
1351 /* We need to know the varobj's type to decide if the value should
1352 be fetched or not. C++ fake children (public/protected/private)
1353 don't have a type. */
1354 gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
1355 changeable = varobj_value_is_changeable_p (var);
1356
1357 /* If the type has custom visualizer, we consider it to be always
1358 changeable. FIXME: need to make sure this behaviour will not
1359 mess up read-sensitive values. */
1360 if (var->dynamic->pretty_printer != NULL)
1361 changeable = 1;
1362
1363 need_to_fetch = changeable;
1364
1365 /* We are not interested in the address of references, and given
1366 that in C++ a reference is not rebindable, it cannot
1367 meaningfully change. So, get hold of the real value. */
1368 if (value)
1369 value = coerce_ref (value);
1370
1371 if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1372 /* For unions, we need to fetch the value implicitly because
1373 of implementation of union member fetch. When gdb
1374 creates a value for a field and the value of the enclosing
1375 structure is not lazy, it immediately copies the necessary
1376 bytes from the enclosing values. If the enclosing value is
1377 lazy, the call to value_fetch_lazy on the field will read
1378 the data from memory. For unions, that means we'll read the
1379 same memory more than once, which is not desirable. So
1380 fetch now. */
1381 need_to_fetch = 1;
1382
1383 /* The new value might be lazy. If the type is changeable,
1384 that is we'll be comparing values of this type, fetch the
1385 value now. Otherwise, on the next update the old value
1386 will be lazy, which means we've lost that old value. */
1387 if (need_to_fetch && value && value_lazy (value))
1388 {
1389 const struct varobj *parent = var->parent;
1390 int frozen = var->frozen;
1391
1392 for (; !frozen && parent; parent = parent->parent)
1393 frozen |= parent->frozen;
1394
1395 if (frozen && initial)
1396 {
1397 /* For variables that are frozen, or are children of frozen
1398 variables, we don't do fetch on initial assignment.
1399 For non-initial assignemnt we do the fetch, since it means we're
1400 explicitly asked to compare the new value with the old one. */
1401 intentionally_not_fetched = 1;
1402 }
1403 else
1404 {
1405
1406 TRY
1407 {
1408 value_fetch_lazy (value);
1409 }
1410
1411 CATCH (except, RETURN_MASK_ERROR)
1412 {
1413 /* Set the value to NULL, so that for the next -var-update,
1414 we don't try to compare the new value with this value,
1415 that we couldn't even read. */
1416 value = NULL;
1417 }
1418 END_CATCH
1419 }
1420 }
1421
1422 /* Get a reference now, before possibly passing it to any Python
1423 code that might release it. */
1424 if (value != NULL)
1425 value_incref (value);
1426
1427 /* Below, we'll be comparing string rendering of old and new
1428 values. Don't get string rendering if the value is
1429 lazy -- if it is, the code above has decided that the value
1430 should not be fetched. */
1431 if (value != NULL && !value_lazy (value)
1432 && var->dynamic->pretty_printer == NULL)
1433 print_value = varobj_value_get_print_value (value, var->format, var);
1434
1435 /* If the type is changeable, compare the old and the new values.
1436 If this is the initial assignment, we don't have any old value
1437 to compare with. */
1438 if (!initial && changeable)
1439 {
1440 /* If the value of the varobj was changed by -var-set-value,
1441 then the value in the varobj and in the target is the same.
1442 However, that value is different from the value that the
1443 varobj had after the previous -var-update. So need to the
1444 varobj as changed. */
1445 if (var->updated)
1446 {
1447 changed = 1;
1448 }
1449 else if (var->dynamic->pretty_printer == NULL)
1450 {
1451 /* Try to compare the values. That requires that both
1452 values are non-lazy. */
1453 if (var->not_fetched && value_lazy (var->value))
1454 {
1455 /* This is a frozen varobj and the value was never read.
1456 Presumably, UI shows some "never read" indicator.
1457 Now that we've fetched the real value, we need to report
1458 this varobj as changed so that UI can show the real
1459 value. */
1460 changed = 1;
1461 }
1462 else if (var->value == NULL && value == NULL)
1463 /* Equal. */
1464 ;
1465 else if (var->value == NULL || value == NULL)
1466 {
1467 changed = 1;
1468 }
1469 else
1470 {
1471 gdb_assert (!value_lazy (var->value));
1472 gdb_assert (!value_lazy (value));
1473
1474 gdb_assert (var->print_value != NULL && print_value != NULL);
1475 if (strcmp (var->print_value, print_value) != 0)
1476 changed = 1;
1477 }
1478 }
1479 }
1480
1481 if (!initial && !changeable)
1482 {
1483 /* For values that are not changeable, we don't compare the values.
1484 However, we want to notice if a value was not NULL and now is NULL,
1485 or vise versa, so that we report when top-level varobjs come in scope
1486 and leave the scope. */
1487 changed = (var->value != NULL) != (value != NULL);
1488 }
1489
1490 /* We must always keep the new value, since children depend on it. */
1491 if (var->value != NULL && var->value != value)
1492 value_free (var->value);
1493 var->value = value;
1494 if (value && value_lazy (value) && intentionally_not_fetched)
1495 var->not_fetched = 1;
1496 else
1497 var->not_fetched = 0;
1498 var->updated = 0;
1499
1500 install_new_value_visualizer (var);
1501
1502 /* If we installed a pretty-printer, re-compare the printed version
1503 to see if the variable changed. */
1504 if (var->dynamic->pretty_printer != NULL)
1505 {
1506 xfree (print_value);
1507 print_value = varobj_value_get_print_value (var->value, var->format,
1508 var);
1509 if ((var->print_value == NULL && print_value != NULL)
1510 || (var->print_value != NULL && print_value == NULL)
1511 || (var->print_value != NULL && print_value != NULL
1512 && strcmp (var->print_value, print_value) != 0))
1513 changed = 1;
1514 }
1515 if (var->print_value)
1516 xfree (var->print_value);
1517 var->print_value = print_value;
1518
1519 gdb_assert (!var->value || value_type (var->value));
1520
1521 return changed;
1522 }
1523
1524 /* Return the requested range for a varobj. VAR is the varobj. FROM
1525 and TO are out parameters; *FROM and *TO will be set to the
1526 selected sub-range of VAR. If no range was selected using
1527 -var-set-update-range, then both will be -1. */
1528 void
1529 varobj_get_child_range (const struct varobj *var, int *from, int *to)
1530 {
1531 *from = var->from;
1532 *to = var->to;
1533 }
1534
1535 /* Set the selected sub-range of children of VAR to start at index
1536 FROM and end at index TO. If either FROM or TO is less than zero,
1537 this is interpreted as a request for all children. */
1538 void
1539 varobj_set_child_range (struct varobj *var, int from, int to)
1540 {
1541 var->from = from;
1542 var->to = to;
1543 }
1544
1545 void
1546 varobj_set_visualizer (struct varobj *var, const char *visualizer)
1547 {
1548 #if HAVE_PYTHON
1549 PyObject *mainmod, *globals, *constructor;
1550 struct cleanup *back_to;
1551
1552 if (!gdb_python_initialized)
1553 return;
1554
1555 back_to = varobj_ensure_python_env (var);
1556
1557 mainmod = PyImport_AddModule ("__main__");
1558 globals = PyModule_GetDict (mainmod);
1559 Py_INCREF (globals);
1560 make_cleanup_py_decref (globals);
1561
1562 constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
1563
1564 if (! constructor)
1565 {
1566 gdbpy_print_stack ();
1567 error (_("Could not evaluate visualizer expression: %s"), visualizer);
1568 }
1569
1570 construct_visualizer (var, constructor);
1571 Py_XDECREF (constructor);
1572
1573 /* If there are any children now, wipe them. */
1574 varobj_delete (var, NULL, 1 /* children only */);
1575 var->num_children = -1;
1576
1577 do_cleanups (back_to);
1578 #else
1579 error (_("Python support required"));
1580 #endif
1581 }
1582
1583 /* If NEW_VALUE is the new value of the given varobj (var), return
1584 non-zero if var has mutated. In other words, if the type of
1585 the new value is different from the type of the varobj's old
1586 value.
1587
1588 NEW_VALUE may be NULL, if the varobj is now out of scope. */
1589
1590 static int
1591 varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
1592 struct type *new_type)
1593 {
1594 /* If we haven't previously computed the number of children in var,
1595 it does not matter from the front-end's perspective whether
1596 the type has mutated or not. For all intents and purposes,
1597 it has not mutated. */
1598 if (var->num_children < 0)
1599 return 0;
1600
1601 if (var->root->lang_ops->value_has_mutated)
1602 {
1603 /* The varobj module, when installing new values, explicitly strips
1604 references, saying that we're not interested in those addresses.
1605 But detection of mutation happens before installing the new
1606 value, so our value may be a reference that we need to strip
1607 in order to remain consistent. */
1608 if (new_value != NULL)
1609 new_value = coerce_ref (new_value);
1610 return var->root->lang_ops->value_has_mutated (var, new_value, new_type);
1611 }
1612 else
1613 return 0;
1614 }
1615
1616 /* Update the values for a variable and its children. This is a
1617 two-pronged attack. First, re-parse the value for the root's
1618 expression to see if it's changed. Then go all the way
1619 through its children, reconstructing them and noting if they've
1620 changed.
1621
1622 The EXPLICIT parameter specifies if this call is result
1623 of MI request to update this specific variable, or
1624 result of implicit -var-update *. For implicit request, we don't
1625 update frozen variables.
1626
1627 NOTE: This function may delete the caller's varobj. If it
1628 returns TYPE_CHANGED, then it has done this and VARP will be modified
1629 to point to the new varobj. */
1630
1631 VEC(varobj_update_result) *
1632 varobj_update (struct varobj **varp, int is_explicit)
1633 {
1634 int type_changed = 0;
1635 int i;
1636 struct value *newobj;
1637 VEC (varobj_update_result) *stack = NULL;
1638 VEC (varobj_update_result) *result = NULL;
1639
1640 /* Frozen means frozen -- we don't check for any change in
1641 this varobj, including its going out of scope, or
1642 changing type. One use case for frozen varobjs is
1643 retaining previously evaluated expressions, and we don't
1644 want them to be reevaluated at all. */
1645 if (!is_explicit && (*varp)->frozen)
1646 return result;
1647
1648 if (!(*varp)->root->is_valid)
1649 {
1650 varobj_update_result r = {0};
1651
1652 r.varobj = *varp;
1653 r.status = VAROBJ_INVALID;
1654 VEC_safe_push (varobj_update_result, result, &r);
1655 return result;
1656 }
1657
1658 if ((*varp)->root->rootvar == *varp)
1659 {
1660 varobj_update_result r = {0};
1661
1662 r.varobj = *varp;
1663 r.status = VAROBJ_IN_SCOPE;
1664
1665 /* Update the root variable. value_of_root can return NULL
1666 if the variable is no longer around, i.e. we stepped out of
1667 the frame in which a local existed. We are letting the
1668 value_of_root variable dispose of the varobj if the type
1669 has changed. */
1670 newobj = value_of_root (varp, &type_changed);
1671 if (update_type_if_necessary(*varp, newobj))
1672 type_changed = 1;
1673 r.varobj = *varp;
1674 r.type_changed = type_changed;
1675 if (install_new_value ((*varp), newobj, type_changed))
1676 r.changed = 1;
1677
1678 if (newobj == NULL)
1679 r.status = VAROBJ_NOT_IN_SCOPE;
1680 r.value_installed = 1;
1681
1682 if (r.status == VAROBJ_NOT_IN_SCOPE)
1683 {
1684 if (r.type_changed || r.changed)
1685 VEC_safe_push (varobj_update_result, result, &r);
1686 return result;
1687 }
1688
1689 VEC_safe_push (varobj_update_result, stack, &r);
1690 }
1691 else
1692 {
1693 varobj_update_result r = {0};
1694
1695 r.varobj = *varp;
1696 VEC_safe_push (varobj_update_result, stack, &r);
1697 }
1698
1699 /* Walk through the children, reconstructing them all. */
1700 while (!VEC_empty (varobj_update_result, stack))
1701 {
1702 varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1703 struct varobj *v = r.varobj;
1704
1705 VEC_pop (varobj_update_result, stack);
1706
1707 /* Update this variable, unless it's a root, which is already
1708 updated. */
1709 if (!r.value_installed)
1710 {
1711 struct type *new_type;
1712
1713 newobj = value_of_child (v->parent, v->index);
1714 if (update_type_if_necessary(v, newobj))
1715 r.type_changed = 1;
1716 if (newobj)
1717 new_type = value_type (newobj);
1718 else
1719 new_type = v->root->lang_ops->type_of_child (v->parent, v->index);
1720
1721 if (varobj_value_has_mutated (v, newobj, new_type))
1722 {
1723 /* The children are no longer valid; delete them now.
1724 Report the fact that its type changed as well. */
1725 varobj_delete (v, NULL, 1 /* only_children */);
1726 v->num_children = -1;
1727 v->to = -1;
1728 v->from = -1;
1729 v->type = new_type;
1730 r.type_changed = 1;
1731 }
1732
1733 if (install_new_value (v, newobj, r.type_changed))
1734 {
1735 r.changed = 1;
1736 v->updated = 0;
1737 }
1738 }
1739
1740 /* We probably should not get children of a dynamic varobj, but
1741 for which -var-list-children was never invoked. */
1742 if (varobj_is_dynamic_p (v))
1743 {
1744 VEC (varobj_p) *changed = 0, *type_changed = 0, *unchanged = 0;
1745 VEC (varobj_p) *newobj = 0;
1746 int i, children_changed = 0;
1747
1748 if (v->frozen)
1749 continue;
1750
1751 if (!v->dynamic->children_requested)
1752 {
1753 int dummy;
1754
1755 /* If we initially did not have potential children, but
1756 now we do, consider the varobj as changed.
1757 Otherwise, if children were never requested, consider
1758 it as unchanged -- presumably, such varobj is not yet
1759 expanded in the UI, so we need not bother getting
1760 it. */
1761 if (!varobj_has_more (v, 0))
1762 {
1763 update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
1764 &dummy, 0, 0, 0);
1765 if (varobj_has_more (v, 0))
1766 r.changed = 1;
1767 }
1768
1769 if (r.changed)
1770 VEC_safe_push (varobj_update_result, result, &r);
1771
1772 continue;
1773 }
1774
1775 /* If update_dynamic_varobj_children returns 0, then we have
1776 a non-conforming pretty-printer, so we skip it. */
1777 if (update_dynamic_varobj_children (v, &changed, &type_changed, &newobj,
1778 &unchanged, &children_changed, 1,
1779 v->from, v->to))
1780 {
1781 if (children_changed || newobj)
1782 {
1783 r.children_changed = 1;
1784 r.newobj = newobj;
1785 }
1786 /* Push in reverse order so that the first child is
1787 popped from the work stack first, and so will be
1788 added to result first. This does not affect
1789 correctness, just "nicer". */
1790 for (i = VEC_length (varobj_p, type_changed) - 1; i >= 0; --i)
1791 {
1792 varobj_p tmp = VEC_index (varobj_p, type_changed, i);
1793 varobj_update_result r = {0};
1794
1795 /* Type may change only if value was changed. */
1796 r.varobj = tmp;
1797 r.changed = 1;
1798 r.type_changed = 1;
1799 r.value_installed = 1;
1800 VEC_safe_push (varobj_update_result, stack, &r);
1801 }
1802 for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
1803 {
1804 varobj_p tmp = VEC_index (varobj_p, changed, i);
1805 varobj_update_result r = {0};
1806
1807 r.varobj = tmp;
1808 r.changed = 1;
1809 r.value_installed = 1;
1810 VEC_safe_push (varobj_update_result, stack, &r);
1811 }
1812 for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
1813 {
1814 varobj_p tmp = VEC_index (varobj_p, unchanged, i);
1815
1816 if (!tmp->frozen)
1817 {
1818 varobj_update_result r = {0};
1819
1820 r.varobj = tmp;
1821 r.value_installed = 1;
1822 VEC_safe_push (varobj_update_result, stack, &r);
1823 }
1824 }
1825 if (r.changed || r.children_changed)
1826 VEC_safe_push (varobj_update_result, result, &r);
1827
1828 /* Free CHANGED, TYPE_CHANGED and UNCHANGED, but not NEW,
1829 because NEW has been put into the result vector. */
1830 VEC_free (varobj_p, changed);
1831 VEC_free (varobj_p, type_changed);
1832 VEC_free (varobj_p, unchanged);
1833
1834 continue;
1835 }
1836 }
1837
1838 /* Push any children. Use reverse order so that the first
1839 child is popped from the work stack first, and so
1840 will be added to result first. This does not
1841 affect correctness, just "nicer". */
1842 for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
1843 {
1844 varobj_p c = VEC_index (varobj_p, v->children, i);
1845
1846 /* Child may be NULL if explicitly deleted by -var-delete. */
1847 if (c != NULL && !c->frozen)
1848 {
1849 varobj_update_result r = {0};
1850
1851 r.varobj = c;
1852 VEC_safe_push (varobj_update_result, stack, &r);
1853 }
1854 }
1855
1856 if (r.changed || r.type_changed)
1857 VEC_safe_push (varobj_update_result, result, &r);
1858 }
1859
1860 VEC_free (varobj_update_result, stack);
1861
1862 return result;
1863 }
1864
1865
1867 /* Helper functions */
1868
1869 /*
1870 * Variable object construction/destruction
1871 */
1872
1873 static int
1874 delete_variable (struct cpstack **resultp, struct varobj *var,
1875 int only_children_p)
1876 {
1877 int delcount = 0;
1878
1879 delete_variable_1 (resultp, &delcount, var,
1880 only_children_p, 1 /* remove_from_parent_p */ );
1881
1882 return delcount;
1883 }
1884
1885 /* Delete the variable object VAR and its children. */
1886 /* IMPORTANT NOTE: If we delete a variable which is a child
1887 and the parent is not removed we dump core. It must be always
1888 initially called with remove_from_parent_p set. */
1889 static void
1890 delete_variable_1 (struct cpstack **resultp, int *delcountp,
1891 struct varobj *var, int only_children_p,
1892 int remove_from_parent_p)
1893 {
1894 int i;
1895
1896 /* Delete any children of this variable, too. */
1897 for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1898 {
1899 varobj_p child = VEC_index (varobj_p, var->children, i);
1900
1901 if (!child)
1902 continue;
1903 if (!remove_from_parent_p)
1904 child->parent = NULL;
1905 delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1906 }
1907 VEC_free (varobj_p, var->children);
1908
1909 /* if we were called to delete only the children we are done here. */
1910 if (only_children_p)
1911 return;
1912
1913 /* Otherwise, add it to the list of deleted ones and proceed to do so. */
1914 /* If the name is null, this is a temporary variable, that has not
1915 yet been installed, don't report it, it belongs to the caller... */
1916 if (var->obj_name != NULL)
1917 {
1918 cppush (resultp, xstrdup (var->obj_name));
1919 *delcountp = *delcountp + 1;
1920 }
1921
1922 /* If this variable has a parent, remove it from its parent's list. */
1923 /* OPTIMIZATION: if the parent of this variable is also being deleted,
1924 (as indicated by remove_from_parent_p) we don't bother doing an
1925 expensive list search to find the element to remove when we are
1926 discarding the list afterwards. */
1927 if ((remove_from_parent_p) && (var->parent != NULL))
1928 {
1929 VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1930 }
1931
1932 if (var->obj_name != NULL)
1933 uninstall_variable (var);
1934
1935 /* Free memory associated with this variable. */
1936 free_variable (var);
1937 }
1938
1939 /* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1940 static int
1941 install_variable (struct varobj *var)
1942 {
1943 struct vlist *cv;
1944 struct vlist *newvl;
1945 const char *chp;
1946 unsigned int index = 0;
1947 unsigned int i = 1;
1948
1949 for (chp = var->obj_name; *chp; chp++)
1950 {
1951 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1952 }
1953
1954 cv = *(varobj_table + index);
1955 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1956 cv = cv->next;
1957
1958 if (cv != NULL)
1959 error (_("Duplicate variable object name"));
1960
1961 /* Add varobj to hash table. */
1962 newvl = xmalloc (sizeof (struct vlist));
1963 newvl->next = *(varobj_table + index);
1964 newvl->var = var;
1965 *(varobj_table + index) = newvl;
1966
1967 /* If root, add varobj to root list. */
1968 if (is_root_p (var))
1969 {
1970 /* Add to list of root variables. */
1971 if (rootlist == NULL)
1972 var->root->next = NULL;
1973 else
1974 var->root->next = rootlist;
1975 rootlist = var->root;
1976 }
1977
1978 return 1; /* OK */
1979 }
1980
1981 /* Unistall the object VAR. */
1982 static void
1983 uninstall_variable (struct varobj *var)
1984 {
1985 struct vlist *cv;
1986 struct vlist *prev;
1987 struct varobj_root *cr;
1988 struct varobj_root *prer;
1989 const char *chp;
1990 unsigned int index = 0;
1991 unsigned int i = 1;
1992
1993 /* Remove varobj from hash table. */
1994 for (chp = var->obj_name; *chp; chp++)
1995 {
1996 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1997 }
1998
1999 cv = *(varobj_table + index);
2000 prev = NULL;
2001 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2002 {
2003 prev = cv;
2004 cv = cv->next;
2005 }
2006
2007 if (varobjdebug)
2008 fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
2009
2010 if (cv == NULL)
2011 {
2012 warning
2013 ("Assertion failed: Could not find variable object \"%s\" to delete",
2014 var->obj_name);
2015 return;
2016 }
2017
2018 if (prev == NULL)
2019 *(varobj_table + index) = cv->next;
2020 else
2021 prev->next = cv->next;
2022
2023 xfree (cv);
2024
2025 /* If root, remove varobj from root list. */
2026 if (is_root_p (var))
2027 {
2028 /* Remove from list of root variables. */
2029 if (rootlist == var->root)
2030 rootlist = var->root->next;
2031 else
2032 {
2033 prer = NULL;
2034 cr = rootlist;
2035 while ((cr != NULL) && (cr->rootvar != var))
2036 {
2037 prer = cr;
2038 cr = cr->next;
2039 }
2040 if (cr == NULL)
2041 {
2042 warning (_("Assertion failed: Could not find "
2043 "varobj \"%s\" in root list"),
2044 var->obj_name);
2045 return;
2046 }
2047 if (prer == NULL)
2048 rootlist = NULL;
2049 else
2050 prer->next = cr->next;
2051 }
2052 }
2053
2054 }
2055
2056 /* Create and install a child of the parent of the given name.
2057
2058 The created VAROBJ takes ownership of the allocated NAME. */
2059
2060 static struct varobj *
2061 create_child (struct varobj *parent, int index, char *name)
2062 {
2063 struct varobj_item item;
2064
2065 item.name = name;
2066 item.value = value_of_child (parent, index);
2067
2068 return create_child_with_value (parent, index, &item);
2069 }
2070
2071 static struct varobj *
2072 create_child_with_value (struct varobj *parent, int index,
2073 struct varobj_item *item)
2074 {
2075 struct varobj *child;
2076 char *childs_name;
2077
2078 child = new_variable ();
2079
2080 /* NAME is allocated by caller. */
2081 child->name = item->name;
2082 child->index = index;
2083 child->parent = parent;
2084 child->root = parent->root;
2085
2086 if (varobj_is_anonymous_child (child))
2087 childs_name = xstrprintf ("%s.%d_anonymous", parent->obj_name, index);
2088 else
2089 childs_name = xstrprintf ("%s.%s", parent->obj_name, item->name);
2090 child->obj_name = childs_name;
2091
2092 install_variable (child);
2093
2094 /* Compute the type of the child. Must do this before
2095 calling install_new_value. */
2096 if (item->value != NULL)
2097 /* If the child had no evaluation errors, var->value
2098 will be non-NULL and contain a valid type. */
2099 child->type = value_actual_type (item->value, 0, NULL);
2100 else
2101 /* Otherwise, we must compute the type. */
2102 child->type = (*child->root->lang_ops->type_of_child) (child->parent,
2103 child->index);
2104 install_new_value (child, item->value, 1);
2105
2106 return child;
2107 }
2108
2109
2111 /*
2112 * Miscellaneous utility functions.
2113 */
2114
2115 /* Allocate memory and initialize a new variable. */
2116 static struct varobj *
2117 new_variable (void)
2118 {
2119 struct varobj *var;
2120
2121 var = (struct varobj *) xmalloc (sizeof (struct varobj));
2122 var->name = NULL;
2123 var->path_expr = NULL;
2124 var->obj_name = NULL;
2125 var->index = -1;
2126 var->type = NULL;
2127 var->value = NULL;
2128 var->num_children = -1;
2129 var->parent = NULL;
2130 var->children = NULL;
2131 var->format = 0;
2132 var->root = NULL;
2133 var->updated = 0;
2134 var->print_value = NULL;
2135 var->frozen = 0;
2136 var->not_fetched = 0;
2137 var->dynamic
2138 = (struct varobj_dynamic *) xmalloc (sizeof (struct varobj_dynamic));
2139 var->dynamic->children_requested = 0;
2140 var->from = -1;
2141 var->to = -1;
2142 var->dynamic->constructor = 0;
2143 var->dynamic->pretty_printer = 0;
2144 var->dynamic->child_iter = 0;
2145 var->dynamic->saved_item = 0;
2146
2147 return var;
2148 }
2149
2150 /* Allocate memory and initialize a new root variable. */
2151 static struct varobj *
2152 new_root_variable (void)
2153 {
2154 struct varobj *var = new_variable ();
2155
2156 var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));
2157 var->root->lang_ops = NULL;
2158 var->root->exp = NULL;
2159 var->root->valid_block = NULL;
2160 var->root->frame = null_frame_id;
2161 var->root->floating = 0;
2162 var->root->rootvar = NULL;
2163 var->root->is_valid = 1;
2164
2165 return var;
2166 }
2167
2168 /* Free any allocated memory associated with VAR. */
2169 static void
2170 free_variable (struct varobj *var)
2171 {
2172 #if HAVE_PYTHON
2173 if (var->dynamic->pretty_printer != NULL)
2174 {
2175 struct cleanup *cleanup = varobj_ensure_python_env (var);
2176
2177 Py_XDECREF (var->dynamic->constructor);
2178 Py_XDECREF (var->dynamic->pretty_printer);
2179 do_cleanups (cleanup);
2180 }
2181 #endif
2182
2183 varobj_iter_delete (var->dynamic->child_iter);
2184 varobj_clear_saved_item (var->dynamic);
2185 value_free (var->value);
2186
2187 /* Free the expression if this is a root variable. */
2188 if (is_root_p (var))
2189 {
2190 xfree (var->root->exp);
2191 xfree (var->root);
2192 }
2193
2194 xfree (var->name);
2195 xfree (var->obj_name);
2196 xfree (var->print_value);
2197 xfree (var->path_expr);
2198 xfree (var->dynamic);
2199 xfree (var);
2200 }
2201
2202 static void
2203 do_free_variable_cleanup (void *var)
2204 {
2205 free_variable (var);
2206 }
2207
2208 static struct cleanup *
2209 make_cleanup_free_variable (struct varobj *var)
2210 {
2211 return make_cleanup (do_free_variable_cleanup, var);
2212 }
2213
2214 /* Return the type of the value that's stored in VAR,
2215 or that would have being stored there if the
2216 value were accessible.
2217
2218 This differs from VAR->type in that VAR->type is always
2219 the true type of the expession in the source language.
2220 The return value of this function is the type we're
2221 actually storing in varobj, and using for displaying
2222 the values and for comparing previous and new values.
2223
2224 For example, top-level references are always stripped. */
2225 struct type *
2226 varobj_get_value_type (const struct varobj *var)
2227 {
2228 struct type *type;
2229
2230 if (var->value)
2231 type = value_type (var->value);
2232 else
2233 type = var->type;
2234
2235 type = check_typedef (type);
2236
2237 if (TYPE_CODE (type) == TYPE_CODE_REF)
2238 type = get_target_type (type);
2239
2240 type = check_typedef (type);
2241
2242 return type;
2243 }
2244
2245 /* What is the default display for this variable? We assume that
2246 everything is "natural". Any exceptions? */
2247 static enum varobj_display_formats
2248 variable_default_display (struct varobj *var)
2249 {
2250 return FORMAT_NATURAL;
2251 }
2252
2253 /* FIXME: The following should be generic for any pointer. */
2254 static void
2255 cppush (struct cpstack **pstack, char *name)
2256 {
2257 struct cpstack *s;
2258
2259 s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2260 s->name = name;
2261 s->next = *pstack;
2262 *pstack = s;
2263 }
2264
2265 /* FIXME: The following should be generic for any pointer. */
2266 static char *
2267 cppop (struct cpstack **pstack)
2268 {
2269 struct cpstack *s;
2270 char *v;
2271
2272 if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2273 return NULL;
2274
2275 s = *pstack;
2276 v = s->name;
2277 *pstack = (*pstack)->next;
2278 xfree (s);
2279
2280 return v;
2281 }
2282
2283 /*
2285 * Language-dependencies
2286 */
2287
2288 /* Common entry points */
2289
2290 /* Return the number of children for a given variable.
2291 The result of this function is defined by the language
2292 implementation. The number of children returned by this function
2293 is the number of children that the user will see in the variable
2294 display. */
2295 static int
2296 number_of_children (const struct varobj *var)
2297 {
2298 return (*var->root->lang_ops->number_of_children) (var);
2299 }
2300
2301 /* What is the expression for the root varobj VAR? Returns a malloc'd
2302 string. */
2303 static char *
2304 name_of_variable (const struct varobj *var)
2305 {
2306 return (*var->root->lang_ops->name_of_variable) (var);
2307 }
2308
2309 /* What is the name of the INDEX'th child of VAR? Returns a malloc'd
2310 string. */
2311 static char *
2312 name_of_child (struct varobj *var, int index)
2313 {
2314 return (*var->root->lang_ops->name_of_child) (var, index);
2315 }
2316
2317 /* If frame associated with VAR can be found, switch
2318 to it and return 1. Otherwise, return 0. */
2319
2320 static int
2321 check_scope (const struct varobj *var)
2322 {
2323 struct frame_info *fi;
2324 int scope;
2325
2326 fi = frame_find_by_id (var->root->frame);
2327 scope = fi != NULL;
2328
2329 if (fi)
2330 {
2331 CORE_ADDR pc = get_frame_pc (fi);
2332
2333 if (pc < BLOCK_START (var->root->valid_block) ||
2334 pc >= BLOCK_END (var->root->valid_block))
2335 scope = 0;
2336 else
2337 select_frame (fi);
2338 }
2339 return scope;
2340 }
2341
2342 /* Helper function to value_of_root. */
2343
2344 static struct value *
2345 value_of_root_1 (struct varobj **var_handle)
2346 {
2347 struct value *new_val = NULL;
2348 struct varobj *var = *var_handle;
2349 int within_scope = 0;
2350 struct cleanup *back_to;
2351
2352 /* Only root variables can be updated... */
2353 if (!is_root_p (var))
2354 /* Not a root var. */
2355 return NULL;
2356
2357 back_to = make_cleanup_restore_current_thread ();
2358
2359 /* Determine whether the variable is still around. */
2360 if (var->root->valid_block == NULL || var->root->floating)
2361 within_scope = 1;
2362 else if (var->root->thread_id == 0)
2363 {
2364 /* The program was single-threaded when the variable object was
2365 created. Technically, it's possible that the program became
2366 multi-threaded since then, but we don't support such
2367 scenario yet. */
2368 within_scope = check_scope (var);
2369 }
2370 else
2371 {
2372 ptid_t ptid = thread_id_to_pid (var->root->thread_id);
2373 if (in_thread_list (ptid))
2374 {
2375 switch_to_thread (ptid);
2376 within_scope = check_scope (var);
2377 }
2378 }
2379
2380 if (within_scope)
2381 {
2382
2383 /* We need to catch errors here, because if evaluate
2384 expression fails we want to just return NULL. */
2385 TRY
2386 {
2387 new_val = evaluate_expression (var->root->exp);
2388 }
2389 CATCH (except, RETURN_MASK_ERROR)
2390 {
2391 }
2392 END_CATCH
2393 }
2394
2395 do_cleanups (back_to);
2396
2397 return new_val;
2398 }
2399
2400 /* What is the ``struct value *'' of the root variable VAR?
2401 For floating variable object, evaluation can get us a value
2402 of different type from what is stored in varobj already. In
2403 that case:
2404 - *type_changed will be set to 1
2405 - old varobj will be freed, and new one will be
2406 created, with the same name.
2407 - *var_handle will be set to the new varobj
2408 Otherwise, *type_changed will be set to 0. */
2409 static struct value *
2410 value_of_root (struct varobj **var_handle, int *type_changed)
2411 {
2412 struct varobj *var;
2413
2414 if (var_handle == NULL)
2415 return NULL;
2416
2417 var = *var_handle;
2418
2419 /* This should really be an exception, since this should
2420 only get called with a root variable. */
2421
2422 if (!is_root_p (var))
2423 return NULL;
2424
2425 if (var->root->floating)
2426 {
2427 struct varobj *tmp_var;
2428 char *old_type, *new_type;
2429
2430 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2431 USE_SELECTED_FRAME);
2432 if (tmp_var == NULL)
2433 {
2434 return NULL;
2435 }
2436 old_type = varobj_get_type (var);
2437 new_type = varobj_get_type (tmp_var);
2438 if (strcmp (old_type, new_type) == 0)
2439 {
2440 /* The expression presently stored inside var->root->exp
2441 remembers the locations of local variables relatively to
2442 the frame where the expression was created (in DWARF location
2443 button, for example). Naturally, those locations are not
2444 correct in other frames, so update the expression. */
2445
2446 struct expression *tmp_exp = var->root->exp;
2447
2448 var->root->exp = tmp_var->root->exp;
2449 tmp_var->root->exp = tmp_exp;
2450
2451 varobj_delete (tmp_var, NULL, 0);
2452 *type_changed = 0;
2453 }
2454 else
2455 {
2456 tmp_var->obj_name = xstrdup (var->obj_name);
2457 tmp_var->from = var->from;
2458 tmp_var->to = var->to;
2459 varobj_delete (var, NULL, 0);
2460
2461 install_variable (tmp_var);
2462 *var_handle = tmp_var;
2463 var = *var_handle;
2464 *type_changed = 1;
2465 }
2466 xfree (old_type);
2467 xfree (new_type);
2468 }
2469 else
2470 {
2471 *type_changed = 0;
2472 }
2473
2474 {
2475 struct value *value;
2476
2477 value = value_of_root_1 (var_handle);
2478 if (var->value == NULL || value == NULL)
2479 {
2480 /* For root varobj-s, a NULL value indicates a scoping issue.
2481 So, nothing to do in terms of checking for mutations. */
2482 }
2483 else if (varobj_value_has_mutated (var, value, value_type (value)))
2484 {
2485 /* The type has mutated, so the children are no longer valid.
2486 Just delete them, and tell our caller that the type has
2487 changed. */
2488 varobj_delete (var, NULL, 1 /* only_children */);
2489 var->num_children = -1;
2490 var->to = -1;
2491 var->from = -1;
2492 *type_changed = 1;
2493 }
2494 return value;
2495 }
2496 }
2497
2498 /* What is the ``struct value *'' for the INDEX'th child of PARENT? */
2499 static struct value *
2500 value_of_child (const struct varobj *parent, int index)
2501 {
2502 struct value *value;
2503
2504 value = (*parent->root->lang_ops->value_of_child) (parent, index);
2505
2506 return value;
2507 }
2508
2509 /* GDB already has a command called "value_of_variable". Sigh. */
2510 static char *
2511 my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
2512 {
2513 if (var->root->is_valid)
2514 {
2515 if (var->dynamic->pretty_printer != NULL)
2516 return varobj_value_get_print_value (var->value, var->format, var);
2517 return (*var->root->lang_ops->value_of_variable) (var, format);
2518 }
2519 else
2520 return NULL;
2521 }
2522
2523 void
2524 varobj_formatted_print_options (struct value_print_options *opts,
2525 enum varobj_display_formats format)
2526 {
2527 get_formatted_print_options (opts, format_code[(int) format]);
2528 opts->deref_ref = 0;
2529 opts->raw = 1;
2530 }
2531
2532 char *
2533 varobj_value_get_print_value (struct value *value,
2534 enum varobj_display_formats format,
2535 const struct varobj *var)
2536 {
2537 struct ui_file *stb;
2538 struct cleanup *old_chain;
2539 char *thevalue = NULL;
2540 struct value_print_options opts;
2541 struct type *type = NULL;
2542 long len = 0;
2543 char *encoding = NULL;
2544 struct gdbarch *gdbarch = NULL;
2545 /* Initialize it just to avoid a GCC false warning. */
2546 CORE_ADDR str_addr = 0;
2547 int string_print = 0;
2548
2549 if (value == NULL)
2550 return NULL;
2551
2552 stb = mem_fileopen ();
2553 old_chain = make_cleanup_ui_file_delete (stb);
2554
2555 gdbarch = get_type_arch (value_type (value));
2556 #if HAVE_PYTHON
2557 if (gdb_python_initialized)
2558 {
2559 PyObject *value_formatter = var->dynamic->pretty_printer;
2560
2561 varobj_ensure_python_env (var);
2562
2563 if (value_formatter)
2564 {
2565 /* First check to see if we have any children at all. If so,
2566 we simply return {...}. */
2567 if (dynamic_varobj_has_child_method (var))
2568 {
2569 do_cleanups (old_chain);
2570 return xstrdup ("{...}");
2571 }
2572
2573 if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
2574 {
2575 struct value *replacement;
2576 PyObject *output = NULL;
2577
2578 output = apply_varobj_pretty_printer (value_formatter,
2579 &replacement,
2580 stb);
2581
2582 /* If we have string like output ... */
2583 if (output)
2584 {
2585 make_cleanup_py_decref (output);
2586
2587 /* If this is a lazy string, extract it. For lazy
2588 strings we always print as a string, so set
2589 string_print. */
2590 if (gdbpy_is_lazy_string (output))
2591 {
2592 gdbpy_extract_lazy_string (output, &str_addr, &type,
2593 &len, &encoding);
2594 make_cleanup (free_current_contents, &encoding);
2595 string_print = 1;
2596 }
2597 else
2598 {
2599 /* If it is a regular (non-lazy) string, extract
2600 it and copy the contents into THEVALUE. If the
2601 hint says to print it as a string, set
2602 string_print. Otherwise just return the extracted
2603 string as a value. */
2604
2605 char *s = python_string_to_target_string (output);
2606
2607 if (s)
2608 {
2609 char *hint;
2610
2611 hint = gdbpy_get_display_hint (value_formatter);
2612 if (hint)
2613 {
2614 if (!strcmp (hint, "string"))
2615 string_print = 1;
2616 xfree (hint);
2617 }
2618
2619 len = strlen (s);
2620 thevalue = xmemdup (s, len + 1, len + 1);
2621 type = builtin_type (gdbarch)->builtin_char;
2622 xfree (s);
2623
2624 if (!string_print)
2625 {
2626 do_cleanups (old_chain);
2627 return thevalue;
2628 }
2629
2630 make_cleanup (xfree, thevalue);
2631 }
2632 else
2633 gdbpy_print_stack ();
2634 }
2635 }
2636 /* If the printer returned a replacement value, set VALUE
2637 to REPLACEMENT. If there is not a replacement value,
2638 just use the value passed to this function. */
2639 if (replacement)
2640 value = replacement;
2641 }
2642 }
2643 }
2644 #endif
2645
2646 varobj_formatted_print_options (&opts, format);
2647
2648 /* If the THEVALUE has contents, it is a regular string. */
2649 if (thevalue)
2650 LA_PRINT_STRING (stb, type, (gdb_byte *) thevalue, len, encoding, 0, &opts);
2651 else if (string_print)
2652 /* Otherwise, if string_print is set, and it is not a regular
2653 string, it is a lazy string. */
2654 val_print_string (type, encoding, str_addr, len, stb, &opts);
2655 else
2656 /* All other cases. */
2657 common_val_print (value, stb, 0, &opts, current_language);
2658
2659 thevalue = ui_file_xstrdup (stb, NULL);
2660
2661 do_cleanups (old_chain);
2662 return thevalue;
2663 }
2664
2665 int
2666 varobj_editable_p (const struct varobj *var)
2667 {
2668 struct type *type;
2669
2670 if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2671 return 0;
2672
2673 type = varobj_get_value_type (var);
2674
2675 switch (TYPE_CODE (type))
2676 {
2677 case TYPE_CODE_STRUCT:
2678 case TYPE_CODE_UNION:
2679 case TYPE_CODE_ARRAY:
2680 case TYPE_CODE_FUNC:
2681 case TYPE_CODE_METHOD:
2682 return 0;
2683 break;
2684
2685 default:
2686 return 1;
2687 break;
2688 }
2689 }
2690
2691 /* Call VAR's value_is_changeable_p language-specific callback. */
2692
2693 int
2694 varobj_value_is_changeable_p (const struct varobj *var)
2695 {
2696 return var->root->lang_ops->value_is_changeable_p (var);
2697 }
2698
2699 /* Return 1 if that varobj is floating, that is is always evaluated in the
2700 selected frame, and not bound to thread/frame. Such variable objects
2701 are created using '@' as frame specifier to -var-create. */
2702 int
2703 varobj_floating_p (const struct varobj *var)
2704 {
2705 return var->root->floating;
2706 }
2707
2708 /* Implement the "value_is_changeable_p" varobj callback for most
2709 languages. */
2710
2711 int
2712 varobj_default_value_is_changeable_p (const struct varobj *var)
2713 {
2714 int r;
2715 struct type *type;
2716
2717 if (CPLUS_FAKE_CHILD (var))
2718 return 0;
2719
2720 type = varobj_get_value_type (var);
2721
2722 switch (TYPE_CODE (type))
2723 {
2724 case TYPE_CODE_STRUCT:
2725 case TYPE_CODE_UNION:
2726 case TYPE_CODE_ARRAY:
2727 r = 0;
2728 break;
2729
2730 default:
2731 r = 1;
2732 }
2733
2734 return r;
2735 }
2736
2737 /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
2738 with an arbitrary caller supplied DATA pointer. */
2739
2740 void
2741 all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
2742 {
2743 struct varobj_root *var_root, *var_root_next;
2744
2745 /* Iterate "safely" - handle if the callee deletes its passed VAROBJ. */
2746
2747 for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
2748 {
2749 var_root_next = var_root->next;
2750
2751 (*func) (var_root->rootvar, data);
2752 }
2753 }
2754
2755 /* Invalidate varobj VAR if it is tied to locals and re-create it if it is
2756 defined on globals. It is a helper for varobj_invalidate.
2757
2758 This function is called after changing the symbol file, in this case the
2759 pointers to "struct type" stored by the varobj are no longer valid. All
2760 varobj must be either re-evaluated, or marked as invalid here. */
2761
2762 static void
2763 varobj_invalidate_iter (struct varobj *var, void *unused)
2764 {
2765 /* global and floating var must be re-evaluated. */
2766 if (var->root->floating || var->root->valid_block == NULL)
2767 {
2768 struct varobj *tmp_var;
2769
2770 /* Try to create a varobj with same expression. If we succeed
2771 replace the old varobj, otherwise invalidate it. */
2772 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2773 USE_CURRENT_FRAME);
2774 if (tmp_var != NULL)
2775 {
2776 tmp_var->obj_name = xstrdup (var->obj_name);
2777 varobj_delete (var, NULL, 0);
2778 install_variable (tmp_var);
2779 }
2780 else
2781 var->root->is_valid = 0;
2782 }
2783 else /* locals must be invalidated. */
2784 var->root->is_valid = 0;
2785 }
2786
2787 /* Invalidate the varobjs that are tied to locals and re-create the ones that
2788 are defined on globals.
2789 Invalidated varobjs will be always printed in_scope="invalid". */
2790
2791 void
2792 varobj_invalidate (void)
2793 {
2794 all_root_varobjs (varobj_invalidate_iter, NULL);
2795 }
2796
2797 extern void _initialize_varobj (void);
2799 void
2800 _initialize_varobj (void)
2801 {
2802 int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
2803
2804 varobj_table = xmalloc (sizeof_table);
2805 memset (varobj_table, 0, sizeof_table);
2806
2807 add_setshow_zuinteger_cmd ("varobj", class_maintenance,
2808 &varobjdebug,
2809 _("Set varobj debugging."),
2810 _("Show varobj debugging."),
2811 _("When non-zero, varobj debugging is enabled."),
2812 NULL, show_varobjdebug,
2813 &setdebuglist, &showdebuglist);
2814 }
2815