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