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