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