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