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