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