* varobj.c (update_dynamic_varobj_children): Make 'name' const.
[deliverable/binutils-gdb.git] / gdb / varobj.c
CommitLineData
8b93c638 1/* Implementation of the GDB variable objects API.
bc8332bb 2
0fb0cc75 3 Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
7b6bb8da 4 2009, 2010, 2011 Free Software Foundation, Inc.
8b93c638
JM
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
a9762ec7 8 the Free Software Foundation; either version 3 of the License, or
8b93c638
JM
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
a9762ec7 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8b93c638
JM
18
19#include "defs.h"
a6c442d8 20#include "exceptions.h"
8b93c638
JM
21#include "value.h"
22#include "expression.h"
23#include "frame.h"
8b93c638
JM
24#include "language.h"
25#include "wrapper.h"
26#include "gdbcmd.h"
d2353924 27#include "block.h"
79a45b7d 28#include "valprint.h"
a6c442d8
MK
29
30#include "gdb_assert.h"
b66d6d2e 31#include "gdb_string.h"
0cc7d26f 32#include "gdb_regex.h"
8b93c638
JM
33
34#include "varobj.h"
28335dcc 35#include "vec.h"
6208b47d
VP
36#include "gdbthread.h"
37#include "inferior.h"
8b93c638 38
b6313243
TT
39#if HAVE_PYTHON
40#include "python/python.h"
41#include "python/python-internal.h"
50389644
PA
42#else
43typedef int PyObject;
b6313243
TT
44#endif
45
8b93c638
JM
46/* Non-zero if we want to see trace of varobj level stuff. */
47
48int varobjdebug = 0;
920d2a44
AC
49static void
50show_varobjdebug (struct ui_file *file, int from_tty,
51 struct cmd_list_element *c, const char *value)
52{
53 fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
54}
8b93c638 55
581e13c1 56/* String representations of gdb's format codes. */
8b93c638 57char *varobj_format_string[] =
72330bd6 58 { "natural", "binary", "decimal", "hexadecimal", "octal" };
8b93c638 59
581e13c1 60/* String representations of gdb's known languages. */
72330bd6 61char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
8b93c638 62
0cc7d26f
TT
63/* True if we want to allow Python-based pretty-printing. */
64static int pretty_printing = 0;
65
66void
67varobj_enable_pretty_printing (void)
68{
69 pretty_printing = 1;
70}
71
8b93c638
JM
72/* Data structures */
73
74/* Every root variable has one of these structures saved in its
581e13c1 75 varobj. Members which must be free'd are noted. */
8b93c638 76struct varobj_root
72330bd6 77{
8b93c638 78
581e13c1 79 /* Alloc'd expression for this parent. */
72330bd6 80 struct expression *exp;
8b93c638 81
581e13c1 82 /* Block for which this expression is valid. */
72330bd6 83 struct block *valid_block;
8b93c638 84
44a67aa7
VP
85 /* The frame for this expression. This field is set iff valid_block is
86 not NULL. */
e64d9b3d 87 struct frame_id frame;
8b93c638 88
c5b48eac 89 /* The thread ID that this varobj_root belong to. This field
581e13c1 90 is only valid if valid_block is not NULL.
c5b48eac
VP
91 When not 0, indicates which thread 'frame' belongs to.
92 When 0, indicates that the thread list was empty when the varobj_root
93 was created. */
94 int thread_id;
95
a5defcdc
VP
96 /* If 1, the -var-update always recomputes the value in the
97 current thread and frame. Otherwise, variable object is
581e13c1 98 always updated in the specific scope/thread/frame. */
a5defcdc 99 int floating;
73a93a32 100
8756216b
DP
101 /* Flag that indicates validity: set to 0 when this varobj_root refers
102 to symbols that do not exist anymore. */
103 int is_valid;
104
581e13c1 105 /* Language info for this variable and its children. */
72330bd6 106 struct language_specific *lang;
8b93c638 107
581e13c1 108 /* The varobj for this root node. */
72330bd6 109 struct varobj *rootvar;
8b93c638 110
72330bd6
AC
111 /* Next root variable */
112 struct varobj_root *next;
113};
8b93c638
JM
114
115/* Every variable in the system has a structure of this type defined
581e13c1
MS
116 for it. This structure holds all information necessary to manipulate
117 a particular object variable. Members which must be freed are noted. */
8b93c638 118struct varobj
72330bd6 119{
8b93c638 120
581e13c1 121 /* Alloc'd name of the variable for this object. If this variable is a
72330bd6 122 child, then this name will be the child's source name.
581e13c1
MS
123 (bar, not foo.bar). */
124 /* NOTE: This is the "expression". */
72330bd6 125 char *name;
8b93c638 126
02142340
VP
127 /* Alloc'd expression for this child. Can be used to create a
128 root variable corresponding to this child. */
129 char *path_expr;
130
581e13c1
MS
131 /* The alloc'd name for this variable's object. This is here for
132 convenience when constructing this object's children. */
72330bd6 133 char *obj_name;
8b93c638 134
581e13c1 135 /* Index of this variable in its parent or -1. */
72330bd6 136 int index;
8b93c638 137
202ddcaa
VP
138 /* The type of this variable. This can be NULL
139 for artifial variable objects -- currently, the "accessibility"
140 variable objects in C++. */
72330bd6 141 struct type *type;
8b93c638 142
b20d8971
VP
143 /* The value of this expression or subexpression. A NULL value
144 indicates there was an error getting this value.
b2c2bd75
VP
145 Invariant: if varobj_value_is_changeable_p (this) is non-zero,
146 the value is either NULL, or not lazy. */
30b28db1 147 struct value *value;
8b93c638 148
581e13c1 149 /* The number of (immediate) children this variable has. */
72330bd6 150 int num_children;
8b93c638 151
581e13c1 152 /* If this object is a child, this points to its immediate parent. */
72330bd6 153 struct varobj *parent;
8b93c638 154
28335dcc
VP
155 /* Children of this object. */
156 VEC (varobj_p) *children;
8b93c638 157
b6313243
TT
158 /* Whether the children of this varobj were requested. This field is
159 used to decide if dynamic varobj should recompute their children.
160 In the event that the frontend never asked for the children, we
161 can avoid that. */
162 int children_requested;
163
581e13c1
MS
164 /* Description of the root variable. Points to root variable for
165 children. */
72330bd6 166 struct varobj_root *root;
8b93c638 167
581e13c1 168 /* The format of the output for this object. */
72330bd6 169 enum varobj_display_formats format;
fb9b6b35 170
581e13c1 171 /* Was this variable updated via a varobj_set_value operation. */
fb9b6b35 172 int updated;
85265413
NR
173
174 /* Last print value. */
175 char *print_value;
25d5ea92
VP
176
177 /* Is this variable frozen. Frozen variables are never implicitly
178 updated by -var-update *
179 or -var-update <direct-or-indirect-parent>. */
180 int frozen;
181
182 /* Is the value of this variable intentionally not fetched? It is
183 not fetched if either the variable is frozen, or any parents is
184 frozen. */
185 int not_fetched;
b6313243 186
0cc7d26f
TT
187 /* Sub-range of children which the MI consumer has requested. If
188 FROM < 0 or TO < 0, means that all children have been
189 requested. */
190 int from;
191 int to;
192
193 /* The pretty-printer constructor. If NULL, then the default
194 pretty-printer will be looked up. If None, then no
195 pretty-printer will be installed. */
196 PyObject *constructor;
197
b6313243
TT
198 /* The pretty-printer that has been constructed. If NULL, then a
199 new printer object is needed, and one will be constructed. */
200 PyObject *pretty_printer;
0cc7d26f
TT
201
202 /* The iterator returned by the printer's 'children' method, or NULL
203 if not available. */
204 PyObject *child_iter;
205
206 /* We request one extra item from the iterator, so that we can
207 report to the caller whether there are more items than we have
208 already reported. However, we don't want to install this value
209 when we read it, because that will mess up future updates. So,
210 we stash it here instead. */
211 PyObject *saved_item;
72330bd6 212};
8b93c638 213
8b93c638 214struct cpstack
72330bd6
AC
215{
216 char *name;
217 struct cpstack *next;
218};
8b93c638
JM
219
220/* A list of varobjs */
221
222struct vlist
72330bd6
AC
223{
224 struct varobj *var;
225 struct vlist *next;
226};
8b93c638
JM
227
228/* Private function prototypes */
229
581e13c1 230/* Helper functions for the above subcommands. */
8b93c638 231
a14ed312 232static int delete_variable (struct cpstack **, struct varobj *, int);
8b93c638 233
a14ed312
KB
234static void delete_variable_1 (struct cpstack **, int *,
235 struct varobj *, int, int);
8b93c638 236
a14ed312 237static int install_variable (struct varobj *);
8b93c638 238
a14ed312 239static void uninstall_variable (struct varobj *);
8b93c638 240
a14ed312 241static struct varobj *create_child (struct varobj *, int, char *);
8b93c638 242
b6313243
TT
243static struct varobj *
244create_child_with_value (struct varobj *parent, int index, const char *name,
245 struct value *value);
246
8b93c638
JM
247/* Utility routines */
248
a14ed312 249static struct varobj *new_variable (void);
8b93c638 250
a14ed312 251static struct varobj *new_root_variable (void);
8b93c638 252
a14ed312 253static void free_variable (struct varobj *var);
8b93c638 254
74b7792f
AC
255static struct cleanup *make_cleanup_free_variable (struct varobj *var);
256
a14ed312 257static struct type *get_type (struct varobj *var);
8b93c638 258
6e2a9270
VP
259static struct type *get_value_type (struct varobj *var);
260
a14ed312 261static struct type *get_target_type (struct type *);
8b93c638 262
a14ed312 263static enum varobj_display_formats variable_default_display (struct varobj *);
8b93c638 264
a14ed312 265static void cppush (struct cpstack **pstack, char *name);
8b93c638 266
a14ed312 267static char *cppop (struct cpstack **pstack);
8b93c638 268
acd65feb
VP
269static int install_new_value (struct varobj *var, struct value *value,
270 int initial);
271
581e13c1 272/* Language-specific routines. */
8b93c638 273
a14ed312 274static enum varobj_languages variable_language (struct varobj *var);
8b93c638 275
a14ed312 276static int number_of_children (struct varobj *);
8b93c638 277
a14ed312 278static char *name_of_variable (struct varobj *);
8b93c638 279
a14ed312 280static char *name_of_child (struct varobj *, int);
8b93c638 281
30b28db1 282static struct value *value_of_root (struct varobj **var_handle, int *);
8b93c638 283
30b28db1 284static struct value *value_of_child (struct varobj *parent, int index);
8b93c638 285
de051565
MK
286static char *my_value_of_variable (struct varobj *var,
287 enum varobj_display_formats format);
8b93c638 288
85265413 289static char *value_get_print_value (struct value *value,
b6313243 290 enum varobj_display_formats format,
d452c4bc 291 struct varobj *var);
85265413 292
b2c2bd75
VP
293static int varobj_value_is_changeable_p (struct varobj *var);
294
295static int is_root_p (struct varobj *var);
8b93c638 296
d8b65138
JK
297#if HAVE_PYTHON
298
9a1edae6
PM
299static struct varobj *varobj_add_child (struct varobj *var,
300 const char *name,
301 struct value *value);
b6313243 302
d8b65138
JK
303#endif /* HAVE_PYTHON */
304
8b93c638
JM
305/* C implementation */
306
a14ed312 307static int c_number_of_children (struct varobj *var);
8b93c638 308
a14ed312 309static char *c_name_of_variable (struct varobj *parent);
8b93c638 310
a14ed312 311static char *c_name_of_child (struct varobj *parent, int index);
8b93c638 312
02142340
VP
313static char *c_path_expr_of_child (struct varobj *child);
314
30b28db1 315static struct value *c_value_of_root (struct varobj **var_handle);
8b93c638 316
30b28db1 317static struct value *c_value_of_child (struct varobj *parent, int index);
8b93c638 318
a14ed312 319static struct type *c_type_of_child (struct varobj *parent, int index);
8b93c638 320
de051565
MK
321static char *c_value_of_variable (struct varobj *var,
322 enum varobj_display_formats format);
8b93c638
JM
323
324/* C++ implementation */
325
a14ed312 326static int cplus_number_of_children (struct varobj *var);
8b93c638 327
a14ed312 328static void cplus_class_num_children (struct type *type, int children[3]);
8b93c638 329
a14ed312 330static char *cplus_name_of_variable (struct varobj *parent);
8b93c638 331
a14ed312 332static char *cplus_name_of_child (struct varobj *parent, int index);
8b93c638 333
02142340
VP
334static char *cplus_path_expr_of_child (struct varobj *child);
335
30b28db1 336static struct value *cplus_value_of_root (struct varobj **var_handle);
8b93c638 337
30b28db1 338static struct value *cplus_value_of_child (struct varobj *parent, int index);
8b93c638 339
a14ed312 340static struct type *cplus_type_of_child (struct varobj *parent, int index);
8b93c638 341
de051565
MK
342static char *cplus_value_of_variable (struct varobj *var,
343 enum varobj_display_formats format);
8b93c638
JM
344
345/* Java implementation */
346
a14ed312 347static int java_number_of_children (struct varobj *var);
8b93c638 348
a14ed312 349static char *java_name_of_variable (struct varobj *parent);
8b93c638 350
a14ed312 351static char *java_name_of_child (struct varobj *parent, int index);
8b93c638 352
02142340
VP
353static char *java_path_expr_of_child (struct varobj *child);
354
30b28db1 355static struct value *java_value_of_root (struct varobj **var_handle);
8b93c638 356
30b28db1 357static struct value *java_value_of_child (struct varobj *parent, int index);
8b93c638 358
a14ed312 359static struct type *java_type_of_child (struct varobj *parent, int index);
8b93c638 360
de051565
MK
361static char *java_value_of_variable (struct varobj *var,
362 enum varobj_display_formats format);
8b93c638
JM
363
364/* The language specific vector */
365
366struct language_specific
72330bd6 367{
8b93c638 368
581e13c1 369 /* The language of this variable. */
72330bd6 370 enum varobj_languages language;
8b93c638 371
581e13c1 372 /* The number of children of PARENT. */
72330bd6 373 int (*number_of_children) (struct varobj * parent);
8b93c638 374
581e13c1 375 /* The name (expression) of a root varobj. */
72330bd6 376 char *(*name_of_variable) (struct varobj * parent);
8b93c638 377
581e13c1 378 /* The name of the INDEX'th child of PARENT. */
72330bd6 379 char *(*name_of_child) (struct varobj * parent, int index);
8b93c638 380
02142340
VP
381 /* Returns the rooted expression of CHILD, which is a variable
382 obtain that has some parent. */
383 char *(*path_expr_of_child) (struct varobj * child);
384
581e13c1 385 /* The ``struct value *'' of the root variable ROOT. */
30b28db1 386 struct value *(*value_of_root) (struct varobj ** root_handle);
8b93c638 387
581e13c1 388 /* The ``struct value *'' of the INDEX'th child of PARENT. */
30b28db1 389 struct value *(*value_of_child) (struct varobj * parent, int index);
8b93c638 390
581e13c1 391 /* The type of the INDEX'th child of PARENT. */
72330bd6 392 struct type *(*type_of_child) (struct varobj * parent, int index);
8b93c638 393
581e13c1 394 /* The current value of VAR. */
de051565
MK
395 char *(*value_of_variable) (struct varobj * var,
396 enum varobj_display_formats format);
72330bd6 397};
8b93c638 398
581e13c1 399/* Array of known source language routines. */
d5d6fca5 400static struct language_specific languages[vlang_end] = {
581e13c1 401 /* Unknown (try treating as C). */
8b93c638 402 {
72330bd6
AC
403 vlang_unknown,
404 c_number_of_children,
405 c_name_of_variable,
406 c_name_of_child,
02142340 407 c_path_expr_of_child,
72330bd6
AC
408 c_value_of_root,
409 c_value_of_child,
410 c_type_of_child,
72330bd6 411 c_value_of_variable}
8b93c638
JM
412 ,
413 /* C */
414 {
72330bd6
AC
415 vlang_c,
416 c_number_of_children,
417 c_name_of_variable,
418 c_name_of_child,
02142340 419 c_path_expr_of_child,
72330bd6
AC
420 c_value_of_root,
421 c_value_of_child,
422 c_type_of_child,
72330bd6 423 c_value_of_variable}
8b93c638
JM
424 ,
425 /* C++ */
426 {
72330bd6
AC
427 vlang_cplus,
428 cplus_number_of_children,
429 cplus_name_of_variable,
430 cplus_name_of_child,
02142340 431 cplus_path_expr_of_child,
72330bd6
AC
432 cplus_value_of_root,
433 cplus_value_of_child,
434 cplus_type_of_child,
72330bd6 435 cplus_value_of_variable}
8b93c638
JM
436 ,
437 /* Java */
438 {
72330bd6
AC
439 vlang_java,
440 java_number_of_children,
441 java_name_of_variable,
442 java_name_of_child,
02142340 443 java_path_expr_of_child,
72330bd6
AC
444 java_value_of_root,
445 java_value_of_child,
446 java_type_of_child,
72330bd6 447 java_value_of_variable}
8b93c638
JM
448};
449
581e13c1 450/* A little convenience enum for dealing with C++/Java. */
8b93c638 451enum vsections
72330bd6
AC
452{
453 v_public = 0, v_private, v_protected
454};
8b93c638
JM
455
456/* Private data */
457
581e13c1 458/* Mappings of varobj_display_formats enums to gdb's format codes. */
72330bd6 459static int format_code[] = { 0, 't', 'd', 'x', 'o' };
8b93c638 460
581e13c1 461/* Header of the list of root variable objects. */
8b93c638 462static struct varobj_root *rootlist;
8b93c638 463
581e13c1
MS
464/* Prime number indicating the number of buckets in the hash table. */
465/* A prime large enough to avoid too many colisions. */
8b93c638
JM
466#define VAROBJ_TABLE_SIZE 227
467
581e13c1 468/* Pointer to the varobj hash table (built at run time). */
8b93c638
JM
469static struct vlist **varobj_table;
470
581e13c1 471/* Is the variable X one of our "fake" children? */
8b93c638
JM
472#define CPLUS_FAKE_CHILD(x) \
473((x) != NULL && (x)->type == NULL && (x)->value == NULL)
474\f
475
476/* API Implementation */
b2c2bd75
VP
477static int
478is_root_p (struct varobj *var)
479{
480 return (var->root->rootvar == var);
481}
8b93c638 482
d452c4bc
UW
483#ifdef HAVE_PYTHON
484/* Helper function to install a Python environment suitable for
485 use during operations on VAR. */
486struct cleanup *
487varobj_ensure_python_env (struct varobj *var)
488{
489 return ensure_python_env (var->root->exp->gdbarch,
490 var->root->exp->language_defn);
491}
492#endif
493
581e13c1 494/* Creates a varobj (not its children). */
8b93c638 495
7d8547c9
AC
496/* Return the full FRAME which corresponds to the given CORE_ADDR
497 or NULL if no FRAME on the chain corresponds to CORE_ADDR. */
498
499static struct frame_info *
500find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
501{
502 struct frame_info *frame = NULL;
503
504 if (frame_addr == (CORE_ADDR) 0)
505 return NULL;
506
9d49bdc2
PA
507 for (frame = get_current_frame ();
508 frame != NULL;
509 frame = get_prev_frame (frame))
7d8547c9 510 {
1fac167a
UW
511 /* The CORE_ADDR we get as argument was parsed from a string GDB
512 output as $fp. This output got truncated to gdbarch_addr_bit.
513 Truncate the frame base address in the same manner before
514 comparing it against our argument. */
515 CORE_ADDR frame_base = get_frame_base_address (frame);
516 int addr_bit = gdbarch_addr_bit (get_frame_arch (frame));
a109c7c1 517
1fac167a
UW
518 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
519 frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1;
520
521 if (frame_base == frame_addr)
7d8547c9
AC
522 return frame;
523 }
9d49bdc2
PA
524
525 return NULL;
7d8547c9
AC
526}
527
8b93c638
JM
528struct varobj *
529varobj_create (char *objname,
72330bd6 530 char *expression, CORE_ADDR frame, enum varobj_type type)
8b93c638
JM
531{
532 struct varobj *var;
8b93c638
JM
533 struct cleanup *old_chain;
534
581e13c1 535 /* Fill out a varobj structure for the (root) variable being constructed. */
8b93c638 536 var = new_root_variable ();
74b7792f 537 old_chain = make_cleanup_free_variable (var);
8b93c638
JM
538
539 if (expression != NULL)
540 {
e4195b40 541 struct frame_info *fi;
35633fef 542 struct frame_id old_id = null_frame_id;
e4195b40 543 struct block *block;
8b93c638
JM
544 char *p;
545 enum varobj_languages lang;
e55dccf0 546 struct value *value = NULL;
8b93c638 547
9d49bdc2
PA
548 /* Parse and evaluate the expression, filling in as much of the
549 variable's data as possible. */
550
551 if (has_stack_frames ())
552 {
581e13c1 553 /* Allow creator to specify context of variable. */
9d49bdc2
PA
554 if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
555 fi = get_selected_frame (NULL);
556 else
557 /* FIXME: cagney/2002-11-23: This code should be doing a
558 lookup using the frame ID and not just the frame's
559 ``address''. This, of course, means an interface
560 change. However, with out that interface change ISAs,
561 such as the ia64 with its two stacks, won't work.
562 Similar goes for the case where there is a frameless
563 function. */
564 fi = find_frame_addr_in_frame_chain (frame);
565 }
8b93c638 566 else
9d49bdc2 567 fi = NULL;
8b93c638 568
581e13c1 569 /* frame = -2 means always use selected frame. */
73a93a32 570 if (type == USE_SELECTED_FRAME)
a5defcdc 571 var->root->floating = 1;
73a93a32 572
8b93c638
JM
573 block = NULL;
574 if (fi != NULL)
ae767bfb 575 block = get_frame_block (fi, 0);
8b93c638
JM
576
577 p = expression;
578 innermost_block = NULL;
73a93a32 579 /* Wrap the call to parse expression, so we can
581e13c1 580 return a sensible error. */
73a93a32
JI
581 if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
582 {
583 return NULL;
584 }
8b93c638 585
581e13c1 586 /* Don't allow variables to be created for types. */
8b93c638
JM
587 if (var->root->exp->elts[0].opcode == OP_TYPE)
588 {
589 do_cleanups (old_chain);
bc8332bb
AC
590 fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
591 " as an expression.\n");
8b93c638
JM
592 return NULL;
593 }
594
595 var->format = variable_default_display (var);
596 var->root->valid_block = innermost_block;
1b36a34b 597 var->name = xstrdup (expression);
02142340 598 /* For a root var, the name and the expr are the same. */
1b36a34b 599 var->path_expr = xstrdup (expression);
8b93c638
JM
600
601 /* When the frame is different from the current frame,
602 we must select the appropriate frame before parsing
603 the expression, otherwise the value will not be current.
581e13c1 604 Since select_frame is so benign, just call it for all cases. */
4e22772d 605 if (innermost_block)
8b93c638 606 {
4e22772d
JK
607 /* User could specify explicit FRAME-ADDR which was not found but
608 EXPRESSION is frame specific and we would not be able to evaluate
609 it correctly next time. With VALID_BLOCK set we must also set
610 FRAME and THREAD_ID. */
611 if (fi == NULL)
612 error (_("Failed to find the specified frame"));
613
7a424e99 614 var->root->frame = get_frame_id (fi);
c5b48eac 615 var->root->thread_id = pid_to_thread_id (inferior_ptid);
35633fef 616 old_id = get_frame_id (get_selected_frame (NULL));
c5b48eac 617 select_frame (fi);
8b93c638
JM
618 }
619
340a7723 620 /* We definitely need to catch errors here.
8b93c638 621 If evaluate_expression succeeds we got the value we wanted.
581e13c1 622 But if it fails, we still go on with a call to evaluate_type(). */
acd65feb 623 if (!gdb_evaluate_expression (var->root->exp, &value))
e55dccf0
VP
624 {
625 /* Error getting the value. Try to at least get the
626 right type. */
627 struct value *type_only_value = evaluate_type (var->root->exp);
a109c7c1 628
e55dccf0
VP
629 var->type = value_type (type_only_value);
630 }
631 else
632 var->type = value_type (value);
acd65feb 633
acd65feb 634 install_new_value (var, value, 1 /* Initial assignment */);
8b93c638
JM
635
636 /* Set language info */
637 lang = variable_language (var);
d5d6fca5 638 var->root->lang = &languages[lang];
8b93c638 639
581e13c1 640 /* Set ourselves as our root. */
8b93c638
JM
641 var->root->rootvar = var;
642
581e13c1 643 /* Reset the selected frame. */
35633fef
JK
644 if (frame_id_p (old_id))
645 select_frame (frame_find_by_id (old_id));
8b93c638
JM
646 }
647
73a93a32 648 /* If the variable object name is null, that means this
581e13c1 649 is a temporary variable, so don't install it. */
73a93a32
JI
650
651 if ((var != NULL) && (objname != NULL))
8b93c638 652 {
1b36a34b 653 var->obj_name = xstrdup (objname);
8b93c638
JM
654
655 /* If a varobj name is duplicated, the install will fail so
581e13c1 656 we must cleanup. */
8b93c638
JM
657 if (!install_variable (var))
658 {
659 do_cleanups (old_chain);
660 return NULL;
661 }
662 }
663
664 discard_cleanups (old_chain);
665 return var;
666}
667
581e13c1 668/* Generates an unique name that can be used for a varobj. */
8b93c638
JM
669
670char *
671varobj_gen_name (void)
672{
673 static int id = 0;
e64d9b3d 674 char *obj_name;
8b93c638 675
581e13c1 676 /* Generate a name for this object. */
8b93c638 677 id++;
b435e160 678 obj_name = xstrprintf ("var%d", id);
8b93c638 679
e64d9b3d 680 return obj_name;
8b93c638
JM
681}
682
61d8f275
JK
683/* Given an OBJNAME, returns the pointer to the corresponding varobj. Call
684 error if OBJNAME cannot be found. */
8b93c638
JM
685
686struct varobj *
687varobj_get_handle (char *objname)
688{
689 struct vlist *cv;
690 const char *chp;
691 unsigned int index = 0;
692 unsigned int i = 1;
693
694 for (chp = objname; *chp; chp++)
695 {
696 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
697 }
698
699 cv = *(varobj_table + index);
700 while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
701 cv = cv->next;
702
703 if (cv == NULL)
8a3fe4f8 704 error (_("Variable object not found"));
8b93c638
JM
705
706 return cv->var;
707}
708
581e13c1 709/* Given the handle, return the name of the object. */
8b93c638
JM
710
711char *
712varobj_get_objname (struct varobj *var)
713{
714 return var->obj_name;
715}
716
581e13c1 717/* Given the handle, return the expression represented by the object. */
8b93c638
JM
718
719char *
720varobj_get_expression (struct varobj *var)
721{
722 return name_of_variable (var);
723}
724
725/* Deletes a varobj and all its children if only_children == 0,
3e43a32a
MS
726 otherwise deletes only the children; returns a malloc'ed list of
727 all the (malloc'ed) names of the variables that have been deleted
581e13c1 728 (NULL terminated). */
8b93c638
JM
729
730int
731varobj_delete (struct varobj *var, char ***dellist, int only_children)
732{
733 int delcount;
734 int mycount;
735 struct cpstack *result = NULL;
736 char **cp;
737
581e13c1 738 /* Initialize a stack for temporary results. */
8b93c638
JM
739 cppush (&result, NULL);
740
741 if (only_children)
581e13c1 742 /* Delete only the variable children. */
8b93c638
JM
743 delcount = delete_variable (&result, var, 1 /* only the children */ );
744 else
581e13c1 745 /* Delete the variable and all its children. */
8b93c638
JM
746 delcount = delete_variable (&result, var, 0 /* parent+children */ );
747
581e13c1 748 /* We may have been asked to return a list of what has been deleted. */
8b93c638
JM
749 if (dellist != NULL)
750 {
751 *dellist = xmalloc ((delcount + 1) * sizeof (char *));
752
753 cp = *dellist;
754 mycount = delcount;
755 *cp = cppop (&result);
756 while ((*cp != NULL) && (mycount > 0))
757 {
758 mycount--;
759 cp++;
760 *cp = cppop (&result);
761 }
762
763 if (mycount || (*cp != NULL))
8a3fe4f8 764 warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
72330bd6 765 mycount);
8b93c638
JM
766 }
767
768 return delcount;
769}
770
d8b65138
JK
771#if HAVE_PYTHON
772
b6313243
TT
773/* Convenience function for varobj_set_visualizer. Instantiate a
774 pretty-printer for a given value. */
775static PyObject *
776instantiate_pretty_printer (PyObject *constructor, struct value *value)
777{
b6313243
TT
778 PyObject *val_obj = NULL;
779 PyObject *printer;
b6313243 780
b6313243 781 val_obj = value_to_value_object (value);
b6313243
TT
782 if (! val_obj)
783 return NULL;
784
785 printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL);
786 Py_DECREF (val_obj);
787 return printer;
b6313243
TT
788}
789
d8b65138
JK
790#endif
791
581e13c1 792/* Set/Get variable object display format. */
8b93c638
JM
793
794enum varobj_display_formats
795varobj_set_display_format (struct varobj *var,
796 enum varobj_display_formats format)
797{
798 switch (format)
799 {
800 case FORMAT_NATURAL:
801 case FORMAT_BINARY:
802 case FORMAT_DECIMAL:
803 case FORMAT_HEXADECIMAL:
804 case FORMAT_OCTAL:
805 var->format = format;
806 break;
807
808 default:
809 var->format = variable_default_display (var);
810 }
811
ae7d22a6
VP
812 if (varobj_value_is_changeable_p (var)
813 && var->value && !value_lazy (var->value))
814 {
6c761d9c 815 xfree (var->print_value);
d452c4bc 816 var->print_value = value_get_print_value (var->value, var->format, var);
ae7d22a6
VP
817 }
818
8b93c638
JM
819 return var->format;
820}
821
822enum varobj_display_formats
823varobj_get_display_format (struct varobj *var)
824{
825 return var->format;
826}
827
b6313243
TT
828char *
829varobj_get_display_hint (struct varobj *var)
830{
831 char *result = NULL;
832
833#if HAVE_PYTHON
d452c4bc
UW
834 struct cleanup *back_to = varobj_ensure_python_env (var);
835
b6313243
TT
836 if (var->pretty_printer)
837 result = gdbpy_get_display_hint (var->pretty_printer);
d452c4bc
UW
838
839 do_cleanups (back_to);
b6313243
TT
840#endif
841
842 return result;
843}
844
0cc7d26f
TT
845/* Return true if the varobj has items after TO, false otherwise. */
846
847int
848varobj_has_more (struct varobj *var, int to)
849{
850 if (VEC_length (varobj_p, var->children) > to)
851 return 1;
852 return ((to == -1 || VEC_length (varobj_p, var->children) == to)
853 && var->saved_item != NULL);
854}
855
c5b48eac
VP
856/* If the variable object is bound to a specific thread, that
857 is its evaluation can always be done in context of a frame
858 inside that thread, returns GDB id of the thread -- which
581e13c1 859 is always positive. Otherwise, returns -1. */
c5b48eac
VP
860int
861varobj_get_thread_id (struct varobj *var)
862{
863 if (var->root->valid_block && var->root->thread_id > 0)
864 return var->root->thread_id;
865 else
866 return -1;
867}
868
25d5ea92
VP
869void
870varobj_set_frozen (struct varobj *var, int frozen)
871{
872 /* When a variable is unfrozen, we don't fetch its value.
873 The 'not_fetched' flag remains set, so next -var-update
874 won't complain.
875
876 We don't fetch the value, because for structures the client
877 should do -var-update anyway. It would be bad to have different
878 client-size logic for structure and other types. */
879 var->frozen = frozen;
880}
881
882int
883varobj_get_frozen (struct varobj *var)
884{
885 return var->frozen;
886}
887
0cc7d26f
TT
888/* A helper function that restricts a range to what is actually
889 available in a VEC. This follows the usual rules for the meaning
890 of FROM and TO -- if either is negative, the entire range is
891 used. */
892
893static void
894restrict_range (VEC (varobj_p) *children, int *from, int *to)
895{
896 if (*from < 0 || *to < 0)
897 {
898 *from = 0;
899 *to = VEC_length (varobj_p, children);
900 }
901 else
902 {
903 if (*from > VEC_length (varobj_p, children))
904 *from = VEC_length (varobj_p, children);
905 if (*to > VEC_length (varobj_p, children))
906 *to = VEC_length (varobj_p, children);
907 if (*from > *to)
908 *from = *to;
909 }
910}
911
d8b65138
JK
912#if HAVE_PYTHON
913
0cc7d26f
TT
914/* A helper for update_dynamic_varobj_children that installs a new
915 child when needed. */
916
917static void
918install_dynamic_child (struct varobj *var,
919 VEC (varobj_p) **changed,
920 VEC (varobj_p) **new,
921 VEC (varobj_p) **unchanged,
922 int *cchanged,
923 int index,
924 const char *name,
925 struct value *value)
926{
927 if (VEC_length (varobj_p, var->children) < index + 1)
928 {
929 /* There's no child yet. */
930 struct varobj *child = varobj_add_child (var, name, value);
a109c7c1 931
0cc7d26f
TT
932 if (new)
933 {
934 VEC_safe_push (varobj_p, *new, child);
935 *cchanged = 1;
936 }
937 }
938 else
939 {
940 varobj_p existing = VEC_index (varobj_p, var->children, index);
a109c7c1 941
0cc7d26f
TT
942 if (install_new_value (existing, value, 0))
943 {
944 if (changed)
945 VEC_safe_push (varobj_p, *changed, existing);
946 }
947 else if (unchanged)
948 VEC_safe_push (varobj_p, *unchanged, existing);
949 }
950}
951
0cc7d26f
TT
952static int
953dynamic_varobj_has_child_method (struct varobj *var)
954{
955 struct cleanup *back_to;
956 PyObject *printer = var->pretty_printer;
957 int result;
958
959 back_to = varobj_ensure_python_env (var);
960 result = PyObject_HasAttr (printer, gdbpy_children_cst);
961 do_cleanups (back_to);
962 return result;
963}
964
965#endif
966
b6313243
TT
967static int
968update_dynamic_varobj_children (struct varobj *var,
969 VEC (varobj_p) **changed,
0cc7d26f
TT
970 VEC (varobj_p) **new,
971 VEC (varobj_p) **unchanged,
972 int *cchanged,
973 int update_children,
974 int from,
975 int to)
b6313243
TT
976{
977#if HAVE_PYTHON
b6313243
TT
978 struct cleanup *back_to;
979 PyObject *children;
b6313243 980 int i;
b6313243 981 PyObject *printer = var->pretty_printer;
b6313243 982
d452c4bc 983 back_to = varobj_ensure_python_env (var);
b6313243
TT
984
985 *cchanged = 0;
986 if (!PyObject_HasAttr (printer, gdbpy_children_cst))
987 {
988 do_cleanups (back_to);
989 return 0;
990 }
991
0cc7d26f 992 if (update_children || !var->child_iter)
b6313243 993 {
0cc7d26f
TT
994 children = PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
995 NULL);
b6313243 996
0cc7d26f
TT
997 if (!children)
998 {
999 gdbpy_print_stack ();
1000 error (_("Null value returned for children"));
1001 }
b6313243 1002
0cc7d26f 1003 make_cleanup_py_decref (children);
b6313243 1004
0cc7d26f
TT
1005 if (!PyIter_Check (children))
1006 error (_("Returned value is not iterable"));
1007
1008 Py_XDECREF (var->child_iter);
1009 var->child_iter = PyObject_GetIter (children);
1010 if (!var->child_iter)
1011 {
1012 gdbpy_print_stack ();
1013 error (_("Could not get children iterator"));
1014 }
1015
1016 Py_XDECREF (var->saved_item);
1017 var->saved_item = NULL;
1018
1019 i = 0;
b6313243 1020 }
0cc7d26f
TT
1021 else
1022 i = VEC_length (varobj_p, var->children);
b6313243 1023
0cc7d26f
TT
1024 /* We ask for one extra child, so that MI can report whether there
1025 are more children. */
1026 for (; to < 0 || i < to + 1; ++i)
b6313243 1027 {
0cc7d26f 1028 PyObject *item;
a4c8e806 1029 int force_done = 0;
b6313243 1030
0cc7d26f
TT
1031 /* See if there was a leftover from last time. */
1032 if (var->saved_item)
1033 {
1034 item = var->saved_item;
1035 var->saved_item = NULL;
1036 }
1037 else
1038 item = PyIter_Next (var->child_iter);
b6313243 1039
0cc7d26f 1040 if (!item)
a4c8e806
TT
1041 {
1042 /* Normal end of iteration. */
1043 if (!PyErr_Occurred ())
1044 break;
1045
1046 /* If we got a memory error, just use the text as the
1047 item. */
1048 if (PyErr_ExceptionMatches (gdbpy_gdb_memory_error))
1049 {
1050 PyObject *type, *value, *trace;
1051 char *name_str, *value_str;
1052
1053 PyErr_Fetch (&type, &value, &trace);
1054 value_str = gdbpy_exception_to_string (type, value);
1055 Py_XDECREF (type);
1056 Py_XDECREF (value);
1057 Py_XDECREF (trace);
1058 if (!value_str)
1059 {
1060 gdbpy_print_stack ();
1061 break;
1062 }
1063
1064 name_str = xstrprintf ("<error at %d>", i);
1065 item = Py_BuildValue ("(ss)", name_str, value_str);
1066 xfree (name_str);
1067 xfree (value_str);
1068 if (!item)
1069 {
1070 gdbpy_print_stack ();
1071 break;
1072 }
1073
1074 force_done = 1;
1075 }
1076 else
1077 {
1078 /* Any other kind of error. */
1079 gdbpy_print_stack ();
1080 break;
1081 }
1082 }
b6313243 1083
0cc7d26f
TT
1084 /* We don't want to push the extra child on any report list. */
1085 if (to < 0 || i < to)
b6313243 1086 {
0cc7d26f 1087 PyObject *py_v;
ddd49eee 1088 const char *name;
0cc7d26f
TT
1089 struct value *v;
1090 struct cleanup *inner;
1091 int can_mention = from < 0 || i >= from;
1092
1093 inner = make_cleanup_py_decref (item);
1094
1095 if (!PyArg_ParseTuple (item, "sO", &name, &py_v))
a4c8e806
TT
1096 {
1097 gdbpy_print_stack ();
1098 error (_("Invalid item from the child list"));
1099 }
0cc7d26f
TT
1100
1101 v = convert_value_from_python (py_v);
8dc78533
JK
1102 if (v == NULL)
1103 gdbpy_print_stack ();
0cc7d26f
TT
1104 install_dynamic_child (var, can_mention ? changed : NULL,
1105 can_mention ? new : NULL,
1106 can_mention ? unchanged : NULL,
1107 can_mention ? cchanged : NULL, i, name, v);
1108 do_cleanups (inner);
b6313243 1109 }
0cc7d26f 1110 else
b6313243 1111 {
0cc7d26f
TT
1112 Py_XDECREF (var->saved_item);
1113 var->saved_item = item;
b6313243 1114
0cc7d26f
TT
1115 /* We want to truncate the child list just before this
1116 element. */
1117 break;
1118 }
a4c8e806
TT
1119
1120 if (force_done)
1121 break;
b6313243
TT
1122 }
1123
1124 if (i < VEC_length (varobj_p, var->children))
1125 {
0cc7d26f 1126 int j;
a109c7c1 1127
0cc7d26f
TT
1128 *cchanged = 1;
1129 for (j = i; j < VEC_length (varobj_p, var->children); ++j)
1130 varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0);
1131 VEC_truncate (varobj_p, var->children, i);
b6313243 1132 }
0cc7d26f
TT
1133
1134 /* If there are fewer children than requested, note that the list of
1135 children changed. */
1136 if (to >= 0 && VEC_length (varobj_p, var->children) < to)
1137 *cchanged = 1;
1138
b6313243
TT
1139 var->num_children = VEC_length (varobj_p, var->children);
1140
1141 do_cleanups (back_to);
1142
b6313243
TT
1143 return 1;
1144#else
1145 gdb_assert (0 && "should never be called if Python is not enabled");
1146#endif
1147}
25d5ea92 1148
8b93c638
JM
1149int
1150varobj_get_num_children (struct varobj *var)
1151{
1152 if (var->num_children == -1)
b6313243 1153 {
0cc7d26f
TT
1154 if (var->pretty_printer)
1155 {
1156 int dummy;
1157
1158 /* If we have a dynamic varobj, don't report -1 children.
1159 So, try to fetch some children first. */
1160 update_dynamic_varobj_children (var, NULL, NULL, NULL, &dummy,
1161 0, 0, 0);
1162 }
1163 else
b6313243
TT
1164 var->num_children = number_of_children (var);
1165 }
8b93c638 1166
0cc7d26f 1167 return var->num_children >= 0 ? var->num_children : 0;
8b93c638
JM
1168}
1169
1170/* Creates a list of the immediate children of a variable object;
581e13c1 1171 the return code is the number of such children or -1 on error. */
8b93c638 1172
d56d46f5 1173VEC (varobj_p)*
0cc7d26f 1174varobj_list_children (struct varobj *var, int *from, int *to)
8b93c638 1175{
8b93c638 1176 char *name;
b6313243
TT
1177 int i, children_changed;
1178
1179 var->children_requested = 1;
1180
0cc7d26f
TT
1181 if (var->pretty_printer)
1182 {
b6313243
TT
1183 /* This, in theory, can result in the number of children changing without
1184 frontend noticing. But well, calling -var-list-children on the same
1185 varobj twice is not something a sane frontend would do. */
0cc7d26f
TT
1186 update_dynamic_varobj_children (var, NULL, NULL, NULL, &children_changed,
1187 0, 0, *to);
1188 restrict_range (var->children, from, to);
1189 return var->children;
1190 }
8b93c638 1191
8b93c638
JM
1192 if (var->num_children == -1)
1193 var->num_children = number_of_children (var);
1194
74a44383
DJ
1195 /* If that failed, give up. */
1196 if (var->num_children == -1)
d56d46f5 1197 return var->children;
74a44383 1198
28335dcc
VP
1199 /* If we're called when the list of children is not yet initialized,
1200 allocate enough elements in it. */
1201 while (VEC_length (varobj_p, var->children) < var->num_children)
1202 VEC_safe_push (varobj_p, var->children, NULL);
1203
8b93c638
JM
1204 for (i = 0; i < var->num_children; i++)
1205 {
d56d46f5 1206 varobj_p existing = VEC_index (varobj_p, var->children, i);
28335dcc
VP
1207
1208 if (existing == NULL)
1209 {
1210 /* Either it's the first call to varobj_list_children for
1211 this variable object, and the child was never created,
1212 or it was explicitly deleted by the client. */
1213 name = name_of_child (var, i);
1214 existing = create_child (var, i, name);
1215 VEC_replace (varobj_p, var->children, i, existing);
1216 }
8b93c638
JM
1217 }
1218
0cc7d26f 1219 restrict_range (var->children, from, to);
d56d46f5 1220 return var->children;
8b93c638
JM
1221}
1222
d8b65138
JK
1223#if HAVE_PYTHON
1224
b6313243
TT
1225static struct varobj *
1226varobj_add_child (struct varobj *var, const char *name, struct value *value)
1227{
1228 varobj_p v = create_child_with_value (var,
1229 VEC_length (varobj_p, var->children),
1230 name, value);
a109c7c1 1231
b6313243 1232 VEC_safe_push (varobj_p, var->children, v);
b6313243
TT
1233 return v;
1234}
1235
d8b65138
JK
1236#endif /* HAVE_PYTHON */
1237
8b93c638 1238/* Obtain the type of an object Variable as a string similar to the one gdb
581e13c1 1239 prints on the console. */
8b93c638
JM
1240
1241char *
1242varobj_get_type (struct varobj *var)
1243{
581e13c1 1244 /* For the "fake" variables, do not return a type. (It's type is
8756216b
DP
1245 NULL, too.)
1246 Do not return a type for invalid variables as well. */
1247 if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
8b93c638
JM
1248 return NULL;
1249
1a4300e9 1250 return type_to_string (var->type);
8b93c638
JM
1251}
1252
1ecb4ee0
DJ
1253/* Obtain the type of an object variable. */
1254
1255struct type *
1256varobj_get_gdb_type (struct varobj *var)
1257{
1258 return var->type;
1259}
1260
02142340
VP
1261/* Return a pointer to the full rooted expression of varobj VAR.
1262 If it has not been computed yet, compute it. */
1263char *
1264varobj_get_path_expr (struct varobj *var)
1265{
1266 if (var->path_expr != NULL)
1267 return var->path_expr;
1268 else
1269 {
1270 /* For root varobjs, we initialize path_expr
1271 when creating varobj, so here it should be
1272 child varobj. */
1273 gdb_assert (!is_root_p (var));
1274 return (*var->root->lang->path_expr_of_child) (var);
1275 }
1276}
1277
8b93c638
JM
1278enum varobj_languages
1279varobj_get_language (struct varobj *var)
1280{
1281 return variable_language (var);
1282}
1283
1284int
1285varobj_get_attributes (struct varobj *var)
1286{
1287 int attributes = 0;
1288
340a7723 1289 if (varobj_editable_p (var))
581e13c1 1290 /* FIXME: define masks for attributes. */
8b93c638
JM
1291 attributes |= 0x00000001; /* Editable */
1292
1293 return attributes;
1294}
1295
0cc7d26f
TT
1296int
1297varobj_pretty_printed_p (struct varobj *var)
1298{
1299 return var->pretty_printer != NULL;
1300}
1301
de051565
MK
1302char *
1303varobj_get_formatted_value (struct varobj *var,
1304 enum varobj_display_formats format)
1305{
1306 return my_value_of_variable (var, format);
1307}
1308
8b93c638
JM
1309char *
1310varobj_get_value (struct varobj *var)
1311{
de051565 1312 return my_value_of_variable (var, var->format);
8b93c638
JM
1313}
1314
1315/* Set the value of an object variable (if it is editable) to the
581e13c1
MS
1316 value of the given expression. */
1317/* Note: Invokes functions that can call error(). */
8b93c638
JM
1318
1319int
1320varobj_set_value (struct varobj *var, char *expression)
1321{
30b28db1 1322 struct value *val;
8b93c638
JM
1323
1324 /* The argument "expression" contains the variable's new value.
581e13c1
MS
1325 We need to first construct a legal expression for this -- ugh! */
1326 /* Does this cover all the bases? */
8b93c638 1327 struct expression *exp;
30b28db1 1328 struct value *value;
8b93c638 1329 int saved_input_radix = input_radix;
340a7723 1330 char *s = expression;
8b93c638 1331
340a7723 1332 gdb_assert (varobj_editable_p (var));
8b93c638 1333
581e13c1 1334 input_radix = 10; /* ALWAYS reset to decimal temporarily. */
340a7723
NR
1335 exp = parse_exp_1 (&s, 0, 0);
1336 if (!gdb_evaluate_expression (exp, &value))
1337 {
581e13c1 1338 /* We cannot proceed without a valid expression. */
340a7723
NR
1339 xfree (exp);
1340 return 0;
8b93c638
JM
1341 }
1342
340a7723
NR
1343 /* All types that are editable must also be changeable. */
1344 gdb_assert (varobj_value_is_changeable_p (var));
1345
1346 /* The value of a changeable variable object must not be lazy. */
1347 gdb_assert (!value_lazy (var->value));
1348
1349 /* Need to coerce the input. We want to check if the
1350 value of the variable object will be different
1351 after assignment, and the first thing value_assign
1352 does is coerce the input.
1353 For example, if we are assigning an array to a pointer variable we
b021a221 1354 should compare the pointer with the array's address, not with the
340a7723
NR
1355 array's content. */
1356 value = coerce_array (value);
1357
1358 /* The new value may be lazy. gdb_value_assign, or
1359 rather value_contents, will take care of this.
1360 If fetching of the new value will fail, gdb_value_assign
1361 with catch the exception. */
1362 if (!gdb_value_assign (var->value, value, &val))
1363 return 0;
1364
1365 /* If the value has changed, record it, so that next -var-update can
1366 report this change. If a variable had a value of '1', we've set it
1367 to '333' and then set again to '1', when -var-update will report this
1368 variable as changed -- because the first assignment has set the
1369 'updated' flag. There's no need to optimize that, because return value
1370 of -var-update should be considered an approximation. */
581e13c1 1371 var->updated = install_new_value (var, val, 0 /* Compare values. */);
340a7723
NR
1372 input_radix = saved_input_radix;
1373 return 1;
8b93c638
JM
1374}
1375
0cc7d26f
TT
1376#if HAVE_PYTHON
1377
1378/* A helper function to install a constructor function and visualizer
1379 in a varobj. */
1380
1381static void
1382install_visualizer (struct varobj *var, PyObject *constructor,
1383 PyObject *visualizer)
1384{
1385 Py_XDECREF (var->constructor);
1386 var->constructor = constructor;
1387
1388 Py_XDECREF (var->pretty_printer);
1389 var->pretty_printer = visualizer;
1390
1391 Py_XDECREF (var->child_iter);
1392 var->child_iter = NULL;
1393}
1394
1395/* Install the default visualizer for VAR. */
1396
1397static void
1398install_default_visualizer (struct varobj *var)
1399{
d65aec65
PM
1400 /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */
1401 if (CPLUS_FAKE_CHILD (var))
1402 return;
1403
0cc7d26f
TT
1404 if (pretty_printing)
1405 {
1406 PyObject *pretty_printer = NULL;
1407
1408 if (var->value)
1409 {
1410 pretty_printer = gdbpy_get_varobj_pretty_printer (var->value);
1411 if (! pretty_printer)
1412 {
1413 gdbpy_print_stack ();
1414 error (_("Cannot instantiate printer for default visualizer"));
1415 }
1416 }
1417
1418 if (pretty_printer == Py_None)
1419 {
1420 Py_DECREF (pretty_printer);
1421 pretty_printer = NULL;
1422 }
1423
1424 install_visualizer (var, NULL, pretty_printer);
1425 }
1426}
1427
1428/* Instantiate and install a visualizer for VAR using CONSTRUCTOR to
1429 make a new object. */
1430
1431static void
1432construct_visualizer (struct varobj *var, PyObject *constructor)
1433{
1434 PyObject *pretty_printer;
1435
d65aec65
PM
1436 /* Do not install a visualizer on a CPLUS_FAKE_CHILD. */
1437 if (CPLUS_FAKE_CHILD (var))
1438 return;
1439
0cc7d26f
TT
1440 Py_INCREF (constructor);
1441 if (constructor == Py_None)
1442 pretty_printer = NULL;
1443 else
1444 {
1445 pretty_printer = instantiate_pretty_printer (constructor, var->value);
1446 if (! pretty_printer)
1447 {
1448 gdbpy_print_stack ();
1449 Py_DECREF (constructor);
1450 constructor = Py_None;
1451 Py_INCREF (constructor);
1452 }
1453
1454 if (pretty_printer == Py_None)
1455 {
1456 Py_DECREF (pretty_printer);
1457 pretty_printer = NULL;
1458 }
1459 }
1460
1461 install_visualizer (var, constructor, pretty_printer);
1462}
1463
1464#endif /* HAVE_PYTHON */
1465
1466/* A helper function for install_new_value. This creates and installs
1467 a visualizer for VAR, if appropriate. */
1468
1469static void
1470install_new_value_visualizer (struct varobj *var)
1471{
1472#if HAVE_PYTHON
1473 /* If the constructor is None, then we want the raw value. If VAR
1474 does not have a value, just skip this. */
1475 if (var->constructor != Py_None && var->value)
1476 {
1477 struct cleanup *cleanup;
0cc7d26f
TT
1478
1479 cleanup = varobj_ensure_python_env (var);
1480
1481 if (!var->constructor)
1482 install_default_visualizer (var);
1483 else
1484 construct_visualizer (var, var->constructor);
1485
1486 do_cleanups (cleanup);
1487 }
1488#else
1489 /* Do nothing. */
1490#endif
1491}
1492
acd65feb
VP
1493/* Assign a new value to a variable object. If INITIAL is non-zero,
1494 this is the first assignement after the variable object was just
1495 created, or changed type. In that case, just assign the value
1496 and return 0.
581e13c1
MS
1497 Otherwise, assign the new value, and return 1 if the value is
1498 different from the current one, 0 otherwise. The comparison is
1499 done on textual representation of value. Therefore, some types
1500 need not be compared. E.g. for structures the reported value is
1501 always "{...}", so no comparison is necessary here. If the old
1502 value was NULL and new one is not, or vice versa, we always return 1.
b26ed50d
VP
1503
1504 The VALUE parameter should not be released -- the function will
1505 take care of releasing it when needed. */
acd65feb
VP
1506static int
1507install_new_value (struct varobj *var, struct value *value, int initial)
1508{
1509 int changeable;
1510 int need_to_fetch;
1511 int changed = 0;
25d5ea92 1512 int intentionally_not_fetched = 0;
7a4d50bf 1513 char *print_value = NULL;
acd65feb 1514
acd65feb 1515 /* We need to know the varobj's type to decide if the value should
3e43a32a 1516 be fetched or not. C++ fake children (public/protected/private)
581e13c1 1517 don't have a type. */
acd65feb 1518 gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
b2c2bd75 1519 changeable = varobj_value_is_changeable_p (var);
b6313243
TT
1520
1521 /* If the type has custom visualizer, we consider it to be always
581e13c1 1522 changeable. FIXME: need to make sure this behaviour will not
b6313243
TT
1523 mess up read-sensitive values. */
1524 if (var->pretty_printer)
1525 changeable = 1;
1526
acd65feb
VP
1527 need_to_fetch = changeable;
1528
b26ed50d
VP
1529 /* We are not interested in the address of references, and given
1530 that in C++ a reference is not rebindable, it cannot
1531 meaningfully change. So, get hold of the real value. */
1532 if (value)
0cc7d26f 1533 value = coerce_ref (value);
b26ed50d 1534
acd65feb
VP
1535 if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
1536 /* For unions, we need to fetch the value implicitly because
1537 of implementation of union member fetch. When gdb
1538 creates a value for a field and the value of the enclosing
1539 structure is not lazy, it immediately copies the necessary
1540 bytes from the enclosing values. If the enclosing value is
1541 lazy, the call to value_fetch_lazy on the field will read
1542 the data from memory. For unions, that means we'll read the
1543 same memory more than once, which is not desirable. So
1544 fetch now. */
1545 need_to_fetch = 1;
1546
1547 /* The new value might be lazy. If the type is changeable,
1548 that is we'll be comparing values of this type, fetch the
1549 value now. Otherwise, on the next update the old value
1550 will be lazy, which means we've lost that old value. */
1551 if (need_to_fetch && value && value_lazy (value))
1552 {
25d5ea92
VP
1553 struct varobj *parent = var->parent;
1554 int frozen = var->frozen;
a109c7c1 1555
25d5ea92
VP
1556 for (; !frozen && parent; parent = parent->parent)
1557 frozen |= parent->frozen;
1558
1559 if (frozen && initial)
1560 {
1561 /* For variables that are frozen, or are children of frozen
1562 variables, we don't do fetch on initial assignment.
1563 For non-initial assignemnt we do the fetch, since it means we're
1564 explicitly asked to compare the new value with the old one. */
1565 intentionally_not_fetched = 1;
1566 }
1567 else if (!gdb_value_fetch_lazy (value))
acd65feb 1568 {
acd65feb
VP
1569 /* Set the value to NULL, so that for the next -var-update,
1570 we don't try to compare the new value with this value,
1571 that we couldn't even read. */
1572 value = NULL;
1573 }
acd65feb
VP
1574 }
1575
b6313243 1576
7a4d50bf
VP
1577 /* Below, we'll be comparing string rendering of old and new
1578 values. Don't get string rendering if the value is
1579 lazy -- if it is, the code above has decided that the value
1580 should not be fetched. */
0cc7d26f 1581 if (value && !value_lazy (value) && !var->pretty_printer)
d452c4bc 1582 print_value = value_get_print_value (value, var->format, var);
7a4d50bf 1583
acd65feb
VP
1584 /* If the type is changeable, compare the old and the new values.
1585 If this is the initial assignment, we don't have any old value
1586 to compare with. */
7a4d50bf 1587 if (!initial && changeable)
acd65feb 1588 {
3e43a32a
MS
1589 /* If the value of the varobj was changed by -var-set-value,
1590 then the value in the varobj and in the target is the same.
1591 However, that value is different from the value that the
581e13c1 1592 varobj had after the previous -var-update. So need to the
3e43a32a 1593 varobj as changed. */
acd65feb 1594 if (var->updated)
57e66780 1595 {
57e66780
DJ
1596 changed = 1;
1597 }
0cc7d26f 1598 else if (! var->pretty_printer)
acd65feb
VP
1599 {
1600 /* Try to compare the values. That requires that both
1601 values are non-lazy. */
25d5ea92
VP
1602 if (var->not_fetched && value_lazy (var->value))
1603 {
1604 /* This is a frozen varobj and the value was never read.
1605 Presumably, UI shows some "never read" indicator.
1606 Now that we've fetched the real value, we need to report
1607 this varobj as changed so that UI can show the real
1608 value. */
1609 changed = 1;
1610 }
1611 else if (var->value == NULL && value == NULL)
581e13c1 1612 /* Equal. */
acd65feb
VP
1613 ;
1614 else if (var->value == NULL || value == NULL)
57e66780 1615 {
57e66780
DJ
1616 changed = 1;
1617 }
acd65feb
VP
1618 else
1619 {
1620 gdb_assert (!value_lazy (var->value));
1621 gdb_assert (!value_lazy (value));
85265413 1622
57e66780 1623 gdb_assert (var->print_value != NULL && print_value != NULL);
85265413 1624 if (strcmp (var->print_value, print_value) != 0)
7a4d50bf 1625 changed = 1;
acd65feb
VP
1626 }
1627 }
1628 }
85265413 1629
ee342b23
VP
1630 if (!initial && !changeable)
1631 {
1632 /* For values that are not changeable, we don't compare the values.
1633 However, we want to notice if a value was not NULL and now is NULL,
1634 or vise versa, so that we report when top-level varobjs come in scope
1635 and leave the scope. */
1636 changed = (var->value != NULL) != (value != NULL);
1637 }
1638
acd65feb 1639 /* We must always keep the new value, since children depend on it. */
25d5ea92 1640 if (var->value != NULL && var->value != value)
acd65feb
VP
1641 value_free (var->value);
1642 var->value = value;
0cc7d26f
TT
1643 if (value != NULL)
1644 value_incref (value);
25d5ea92
VP
1645 if (value && value_lazy (value) && intentionally_not_fetched)
1646 var->not_fetched = 1;
1647 else
1648 var->not_fetched = 0;
acd65feb 1649 var->updated = 0;
85265413 1650
0cc7d26f
TT
1651 install_new_value_visualizer (var);
1652
1653 /* If we installed a pretty-printer, re-compare the printed version
1654 to see if the variable changed. */
1655 if (var->pretty_printer)
1656 {
1657 xfree (print_value);
1658 print_value = value_get_print_value (var->value, var->format, var);
e8f781e2
TT
1659 if ((var->print_value == NULL && print_value != NULL)
1660 || (var->print_value != NULL && print_value == NULL)
1661 || (var->print_value != NULL && print_value != NULL
1662 && strcmp (var->print_value, print_value) != 0))
0cc7d26f
TT
1663 changed = 1;
1664 }
1665 if (var->print_value)
1666 xfree (var->print_value);
1667 var->print_value = print_value;
1668
b26ed50d 1669 gdb_assert (!var->value || value_type (var->value));
acd65feb
VP
1670
1671 return changed;
1672}
acd65feb 1673
0cc7d26f
TT
1674/* Return the requested range for a varobj. VAR is the varobj. FROM
1675 and TO are out parameters; *FROM and *TO will be set to the
1676 selected sub-range of VAR. If no range was selected using
1677 -var-set-update-range, then both will be -1. */
1678void
1679varobj_get_child_range (struct varobj *var, int *from, int *to)
b6313243 1680{
0cc7d26f
TT
1681 *from = var->from;
1682 *to = var->to;
b6313243
TT
1683}
1684
0cc7d26f
TT
1685/* Set the selected sub-range of children of VAR to start at index
1686 FROM and end at index TO. If either FROM or TO is less than zero,
1687 this is interpreted as a request for all children. */
1688void
1689varobj_set_child_range (struct varobj *var, int from, int to)
b6313243 1690{
0cc7d26f
TT
1691 var->from = from;
1692 var->to = to;
b6313243
TT
1693}
1694
1695void
1696varobj_set_visualizer (struct varobj *var, const char *visualizer)
1697{
1698#if HAVE_PYTHON
34fa1d9d
MS
1699 PyObject *mainmod, *globals, *constructor;
1700 struct cleanup *back_to;
b6313243 1701
d452c4bc 1702 back_to = varobj_ensure_python_env (var);
b6313243
TT
1703
1704 mainmod = PyImport_AddModule ("__main__");
1705 globals = PyModule_GetDict (mainmod);
1706 Py_INCREF (globals);
1707 make_cleanup_py_decref (globals);
1708
1709 constructor = PyRun_String (visualizer, Py_eval_input, globals, globals);
b6313243 1710
0cc7d26f 1711 if (! constructor)
b6313243
TT
1712 {
1713 gdbpy_print_stack ();
da1f2771 1714 error (_("Could not evaluate visualizer expression: %s"), visualizer);
b6313243
TT
1715 }
1716
0cc7d26f
TT
1717 construct_visualizer (var, constructor);
1718 Py_XDECREF (constructor);
b6313243 1719
0cc7d26f
TT
1720 /* If there are any children now, wipe them. */
1721 varobj_delete (var, NULL, 1 /* children only */);
1722 var->num_children = -1;
b6313243
TT
1723
1724 do_cleanups (back_to);
1725#else
da1f2771 1726 error (_("Python support required"));
b6313243
TT
1727#endif
1728}
1729
8b93c638
JM
1730/* Update the values for a variable and its children. This is a
1731 two-pronged attack. First, re-parse the value for the root's
1732 expression to see if it's changed. Then go all the way
1733 through its children, reconstructing them and noting if they've
1734 changed.
1735
25d5ea92
VP
1736 The EXPLICIT parameter specifies if this call is result
1737 of MI request to update this specific variable, or
581e13c1 1738 result of implicit -var-update *. For implicit request, we don't
25d5ea92 1739 update frozen variables.
705da579 1740
581e13c1 1741 NOTE: This function may delete the caller's varobj. If it
8756216b
DP
1742 returns TYPE_CHANGED, then it has done this and VARP will be modified
1743 to point to the new varobj. */
8b93c638 1744
f7f9ae2c 1745VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit)
8b93c638
JM
1746{
1747 int changed = 0;
25d5ea92 1748 int type_changed = 0;
8b93c638 1749 int i;
30b28db1 1750 struct value *new;
b6313243 1751 VEC (varobj_update_result) *stack = NULL;
f7f9ae2c 1752 VEC (varobj_update_result) *result = NULL;
8b93c638 1753
25d5ea92
VP
1754 /* Frozen means frozen -- we don't check for any change in
1755 this varobj, including its going out of scope, or
1756 changing type. One use case for frozen varobjs is
1757 retaining previously evaluated expressions, and we don't
1758 want them to be reevaluated at all. */
1759 if (!explicit && (*varp)->frozen)
f7f9ae2c 1760 return result;
8756216b
DP
1761
1762 if (!(*varp)->root->is_valid)
f7f9ae2c 1763 {
cfce2ea2 1764 varobj_update_result r = {0};
a109c7c1 1765
cfce2ea2 1766 r.varobj = *varp;
f7f9ae2c
VP
1767 r.status = VAROBJ_INVALID;
1768 VEC_safe_push (varobj_update_result, result, &r);
1769 return result;
1770 }
8b93c638 1771
25d5ea92 1772 if ((*varp)->root->rootvar == *varp)
ae093f96 1773 {
cfce2ea2 1774 varobj_update_result r = {0};
a109c7c1 1775
cfce2ea2 1776 r.varobj = *varp;
f7f9ae2c
VP
1777 r.status = VAROBJ_IN_SCOPE;
1778
581e13c1 1779 /* Update the root variable. value_of_root can return NULL
25d5ea92 1780 if the variable is no longer around, i.e. we stepped out of
581e13c1 1781 the frame in which a local existed. We are letting the
25d5ea92
VP
1782 value_of_root variable dispose of the varobj if the type
1783 has changed. */
25d5ea92 1784 new = value_of_root (varp, &type_changed);
f7f9ae2c
VP
1785 r.varobj = *varp;
1786
1787 r.type_changed = type_changed;
ea56f9c2 1788 if (install_new_value ((*varp), new, type_changed))
f7f9ae2c 1789 r.changed = 1;
ea56f9c2 1790
25d5ea92 1791 if (new == NULL)
f7f9ae2c 1792 r.status = VAROBJ_NOT_IN_SCOPE;
b6313243 1793 r.value_installed = 1;
f7f9ae2c
VP
1794
1795 if (r.status == VAROBJ_NOT_IN_SCOPE)
b6313243 1796 {
0b4bc29a
JK
1797 if (r.type_changed || r.changed)
1798 VEC_safe_push (varobj_update_result, result, &r);
b6313243
TT
1799 return result;
1800 }
1801
1802 VEC_safe_push (varobj_update_result, stack, &r);
1803 }
1804 else
1805 {
cfce2ea2 1806 varobj_update_result r = {0};
a109c7c1 1807
cfce2ea2 1808 r.varobj = *varp;
b6313243 1809 VEC_safe_push (varobj_update_result, stack, &r);
b20d8971 1810 }
8b93c638 1811
8756216b 1812 /* Walk through the children, reconstructing them all. */
b6313243 1813 while (!VEC_empty (varobj_update_result, stack))
8b93c638 1814 {
b6313243
TT
1815 varobj_update_result r = *(VEC_last (varobj_update_result, stack));
1816 struct varobj *v = r.varobj;
1817
1818 VEC_pop (varobj_update_result, stack);
1819
1820 /* Update this variable, unless it's a root, which is already
1821 updated. */
1822 if (!r.value_installed)
1823 {
1824 new = value_of_child (v->parent, v->index);
1825 if (install_new_value (v, new, 0 /* type not changed */))
1826 {
1827 r.changed = 1;
1828 v->updated = 0;
1829 }
1830 }
1831
1832 /* We probably should not get children of a varobj that has a
1833 pretty-printer, but for which -var-list-children was never
581e13c1 1834 invoked. */
b6313243
TT
1835 if (v->pretty_printer)
1836 {
0cc7d26f 1837 VEC (varobj_p) *changed = 0, *new = 0, *unchanged = 0;
26f9bcee 1838 int i, children_changed = 0;
b6313243
TT
1839
1840 if (v->frozen)
1841 continue;
1842
0cc7d26f
TT
1843 if (!v->children_requested)
1844 {
1845 int dummy;
1846
1847 /* If we initially did not have potential children, but
1848 now we do, consider the varobj as changed.
1849 Otherwise, if children were never requested, consider
1850 it as unchanged -- presumably, such varobj is not yet
1851 expanded in the UI, so we need not bother getting
1852 it. */
1853 if (!varobj_has_more (v, 0))
1854 {
1855 update_dynamic_varobj_children (v, NULL, NULL, NULL,
1856 &dummy, 0, 0, 0);
1857 if (varobj_has_more (v, 0))
1858 r.changed = 1;
1859 }
1860
1861 if (r.changed)
1862 VEC_safe_push (varobj_update_result, result, &r);
1863
1864 continue;
1865 }
1866
b6313243
TT
1867 /* If update_dynamic_varobj_children returns 0, then we have
1868 a non-conforming pretty-printer, so we skip it. */
0cc7d26f
TT
1869 if (update_dynamic_varobj_children (v, &changed, &new, &unchanged,
1870 &children_changed, 1,
1871 v->from, v->to))
b6313243 1872 {
0cc7d26f 1873 if (children_changed || new)
b6313243 1874 {
0cc7d26f
TT
1875 r.children_changed = 1;
1876 r.new = new;
b6313243 1877 }
0cc7d26f
TT
1878 /* Push in reverse order so that the first child is
1879 popped from the work stack first, and so will be
1880 added to result first. This does not affect
1881 correctness, just "nicer". */
1882 for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i)
b6313243 1883 {
0cc7d26f 1884 varobj_p tmp = VEC_index (varobj_p, changed, i);
cfce2ea2 1885 varobj_update_result r = {0};
a109c7c1 1886
cfce2ea2 1887 r.varobj = tmp;
0cc7d26f 1888 r.changed = 1;
b6313243
TT
1889 r.value_installed = 1;
1890 VEC_safe_push (varobj_update_result, stack, &r);
1891 }
0cc7d26f
TT
1892 for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i)
1893 {
1894 varobj_p tmp = VEC_index (varobj_p, unchanged, i);
a109c7c1 1895
0cc7d26f
TT
1896 if (!tmp->frozen)
1897 {
cfce2ea2 1898 varobj_update_result r = {0};
a109c7c1 1899
cfce2ea2 1900 r.varobj = tmp;
0cc7d26f
TT
1901 r.value_installed = 1;
1902 VEC_safe_push (varobj_update_result, stack, &r);
1903 }
1904 }
b6313243
TT
1905 if (r.changed || r.children_changed)
1906 VEC_safe_push (varobj_update_result, result, &r);
0cc7d26f
TT
1907
1908 /* Free CHANGED and UNCHANGED, but not NEW, because NEW
1909 has been put into the result vector. */
1910 VEC_free (varobj_p, changed);
1911 VEC_free (varobj_p, unchanged);
1912
b6313243
TT
1913 continue;
1914 }
1915 }
28335dcc
VP
1916
1917 /* Push any children. Use reverse order so that the first
1918 child is popped from the work stack first, and so
1919 will be added to result first. This does not
1920 affect correctness, just "nicer". */
1921 for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
8b93c638 1922 {
28335dcc 1923 varobj_p c = VEC_index (varobj_p, v->children, i);
a109c7c1 1924
28335dcc 1925 /* Child may be NULL if explicitly deleted by -var-delete. */
25d5ea92 1926 if (c != NULL && !c->frozen)
28335dcc 1927 {
cfce2ea2 1928 varobj_update_result r = {0};
a109c7c1 1929
cfce2ea2 1930 r.varobj = c;
b6313243 1931 VEC_safe_push (varobj_update_result, stack, &r);
28335dcc 1932 }
8b93c638 1933 }
b6313243
TT
1934
1935 if (r.changed || r.type_changed)
1936 VEC_safe_push (varobj_update_result, result, &r);
8b93c638
JM
1937 }
1938
b6313243
TT
1939 VEC_free (varobj_update_result, stack);
1940
f7f9ae2c 1941 return result;
8b93c638
JM
1942}
1943\f
1944
1945/* Helper functions */
1946
1947/*
1948 * Variable object construction/destruction
1949 */
1950
1951static int
fba45db2
KB
1952delete_variable (struct cpstack **resultp, struct varobj *var,
1953 int only_children_p)
8b93c638
JM
1954{
1955 int delcount = 0;
1956
1957 delete_variable_1 (resultp, &delcount, var,
1958 only_children_p, 1 /* remove_from_parent_p */ );
1959
1960 return delcount;
1961}
1962
581e13c1 1963/* Delete the variable object VAR and its children. */
8b93c638
JM
1964/* IMPORTANT NOTE: If we delete a variable which is a child
1965 and the parent is not removed we dump core. It must be always
581e13c1 1966 initially called with remove_from_parent_p set. */
8b93c638 1967static void
72330bd6
AC
1968delete_variable_1 (struct cpstack **resultp, int *delcountp,
1969 struct varobj *var, int only_children_p,
1970 int remove_from_parent_p)
8b93c638 1971{
28335dcc 1972 int i;
8b93c638 1973
581e13c1 1974 /* Delete any children of this variable, too. */
28335dcc
VP
1975 for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1976 {
1977 varobj_p child = VEC_index (varobj_p, var->children, i);
a109c7c1 1978
214270ab
VP
1979 if (!child)
1980 continue;
8b93c638 1981 if (!remove_from_parent_p)
28335dcc
VP
1982 child->parent = NULL;
1983 delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
8b93c638 1984 }
28335dcc 1985 VEC_free (varobj_p, var->children);
8b93c638 1986
581e13c1 1987 /* if we were called to delete only the children we are done here. */
8b93c638
JM
1988 if (only_children_p)
1989 return;
1990
581e13c1 1991 /* Otherwise, add it to the list of deleted ones and proceed to do so. */
73a93a32 1992 /* If the name is null, this is a temporary variable, that has not
581e13c1 1993 yet been installed, don't report it, it belongs to the caller... */
73a93a32 1994 if (var->obj_name != NULL)
8b93c638 1995 {
5b616ba1 1996 cppush (resultp, xstrdup (var->obj_name));
8b93c638
JM
1997 *delcountp = *delcountp + 1;
1998 }
1999
581e13c1 2000 /* If this variable has a parent, remove it from its parent's list. */
8b93c638
JM
2001 /* OPTIMIZATION: if the parent of this variable is also being deleted,
2002 (as indicated by remove_from_parent_p) we don't bother doing an
2003 expensive list search to find the element to remove when we are
581e13c1 2004 discarding the list afterwards. */
72330bd6 2005 if ((remove_from_parent_p) && (var->parent != NULL))
8b93c638 2006 {
28335dcc 2007 VEC_replace (varobj_p, var->parent->children, var->index, NULL);
8b93c638 2008 }
72330bd6 2009
73a93a32
JI
2010 if (var->obj_name != NULL)
2011 uninstall_variable (var);
8b93c638 2012
581e13c1 2013 /* Free memory associated with this variable. */
8b93c638
JM
2014 free_variable (var);
2015}
2016
581e13c1 2017/* Install the given variable VAR with the object name VAR->OBJ_NAME. */
8b93c638 2018static int
fba45db2 2019install_variable (struct varobj *var)
8b93c638
JM
2020{
2021 struct vlist *cv;
2022 struct vlist *newvl;
2023 const char *chp;
2024 unsigned int index = 0;
2025 unsigned int i = 1;
2026
2027 for (chp = var->obj_name; *chp; chp++)
2028 {
2029 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
2030 }
2031
2032 cv = *(varobj_table + index);
2033 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2034 cv = cv->next;
2035
2036 if (cv != NULL)
8a3fe4f8 2037 error (_("Duplicate variable object name"));
8b93c638 2038
581e13c1 2039 /* Add varobj to hash table. */
8b93c638
JM
2040 newvl = xmalloc (sizeof (struct vlist));
2041 newvl->next = *(varobj_table + index);
2042 newvl->var = var;
2043 *(varobj_table + index) = newvl;
2044
581e13c1 2045 /* If root, add varobj to root list. */
b2c2bd75 2046 if (is_root_p (var))
8b93c638 2047 {
581e13c1 2048 /* Add to list of root variables. */
8b93c638
JM
2049 if (rootlist == NULL)
2050 var->root->next = NULL;
2051 else
2052 var->root->next = rootlist;
2053 rootlist = var->root;
8b93c638
JM
2054 }
2055
2056 return 1; /* OK */
2057}
2058
581e13c1 2059/* Unistall the object VAR. */
8b93c638 2060static void
fba45db2 2061uninstall_variable (struct varobj *var)
8b93c638
JM
2062{
2063 struct vlist *cv;
2064 struct vlist *prev;
2065 struct varobj_root *cr;
2066 struct varobj_root *prer;
2067 const char *chp;
2068 unsigned int index = 0;
2069 unsigned int i = 1;
2070
581e13c1 2071 /* Remove varobj from hash table. */
8b93c638
JM
2072 for (chp = var->obj_name; *chp; chp++)
2073 {
2074 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
2075 }
2076
2077 cv = *(varobj_table + index);
2078 prev = NULL;
2079 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
2080 {
2081 prev = cv;
2082 cv = cv->next;
2083 }
2084
2085 if (varobjdebug)
2086 fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
2087
2088 if (cv == NULL)
2089 {
72330bd6
AC
2090 warning
2091 ("Assertion failed: Could not find variable object \"%s\" to delete",
2092 var->obj_name);
8b93c638
JM
2093 return;
2094 }
2095
2096 if (prev == NULL)
2097 *(varobj_table + index) = cv->next;
2098 else
2099 prev->next = cv->next;
2100
b8c9b27d 2101 xfree (cv);
8b93c638 2102
581e13c1 2103 /* If root, remove varobj from root list. */
b2c2bd75 2104 if (is_root_p (var))
8b93c638 2105 {
581e13c1 2106 /* Remove from list of root variables. */
8b93c638
JM
2107 if (rootlist == var->root)
2108 rootlist = var->root->next;
2109 else
2110 {
2111 prer = NULL;
2112 cr = rootlist;
2113 while ((cr != NULL) && (cr->rootvar != var))
2114 {
2115 prer = cr;
2116 cr = cr->next;
2117 }
2118 if (cr == NULL)
2119 {
8f7e195f
JB
2120 warning (_("Assertion failed: Could not find "
2121 "varobj \"%s\" in root list"),
3e43a32a 2122 var->obj_name);
8b93c638
JM
2123 return;
2124 }
2125 if (prer == NULL)
2126 rootlist = NULL;
2127 else
2128 prer->next = cr->next;
2129 }
8b93c638
JM
2130 }
2131
2132}
2133
581e13c1 2134/* Create and install a child of the parent of the given name. */
8b93c638 2135static struct varobj *
fba45db2 2136create_child (struct varobj *parent, int index, char *name)
b6313243
TT
2137{
2138 return create_child_with_value (parent, index, name,
2139 value_of_child (parent, index));
2140}
2141
2142static struct varobj *
2143create_child_with_value (struct varobj *parent, int index, const char *name,
2144 struct value *value)
8b93c638
JM
2145{
2146 struct varobj *child;
2147 char *childs_name;
2148
2149 child = new_variable ();
2150
581e13c1 2151 /* Name is allocated by name_of_child. */
b6313243
TT
2152 /* FIXME: xstrdup should not be here. */
2153 child->name = xstrdup (name);
8b93c638 2154 child->index = index;
8b93c638
JM
2155 child->parent = parent;
2156 child->root = parent->root;
b435e160 2157 childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
8b93c638
JM
2158 child->obj_name = childs_name;
2159 install_variable (child);
2160
acd65feb
VP
2161 /* Compute the type of the child. Must do this before
2162 calling install_new_value. */
2163 if (value != NULL)
2164 /* If the child had no evaluation errors, var->value
581e13c1 2165 will be non-NULL and contain a valid type. */
acd65feb
VP
2166 child->type = value_type (value);
2167 else
581e13c1 2168 /* Otherwise, we must compute the type. */
acd65feb
VP
2169 child->type = (*child->root->lang->type_of_child) (child->parent,
2170 child->index);
2171 install_new_value (child, value, 1);
2172
8b93c638
JM
2173 return child;
2174}
8b93c638
JM
2175\f
2176
2177/*
2178 * Miscellaneous utility functions.
2179 */
2180
581e13c1 2181/* Allocate memory and initialize a new variable. */
8b93c638
JM
2182static struct varobj *
2183new_variable (void)
2184{
2185 struct varobj *var;
2186
2187 var = (struct varobj *) xmalloc (sizeof (struct varobj));
2188 var->name = NULL;
02142340 2189 var->path_expr = NULL;
8b93c638
JM
2190 var->obj_name = NULL;
2191 var->index = -1;
2192 var->type = NULL;
2193 var->value = NULL;
8b93c638
JM
2194 var->num_children = -1;
2195 var->parent = NULL;
2196 var->children = NULL;
2197 var->format = 0;
2198 var->root = NULL;
fb9b6b35 2199 var->updated = 0;
85265413 2200 var->print_value = NULL;
25d5ea92
VP
2201 var->frozen = 0;
2202 var->not_fetched = 0;
b6313243 2203 var->children_requested = 0;
0cc7d26f
TT
2204 var->from = -1;
2205 var->to = -1;
2206 var->constructor = 0;
b6313243 2207 var->pretty_printer = 0;
0cc7d26f
TT
2208 var->child_iter = 0;
2209 var->saved_item = 0;
8b93c638
JM
2210
2211 return var;
2212}
2213
581e13c1 2214/* Allocate memory and initialize a new root variable. */
8b93c638
JM
2215static struct varobj *
2216new_root_variable (void)
2217{
2218 struct varobj *var = new_variable ();
a109c7c1 2219
3e43a32a 2220 var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));
8b93c638
JM
2221 var->root->lang = NULL;
2222 var->root->exp = NULL;
2223 var->root->valid_block = NULL;
7a424e99 2224 var->root->frame = null_frame_id;
a5defcdc 2225 var->root->floating = 0;
8b93c638 2226 var->root->rootvar = NULL;
8756216b 2227 var->root->is_valid = 1;
8b93c638
JM
2228
2229 return var;
2230}
2231
581e13c1 2232/* Free any allocated memory associated with VAR. */
8b93c638 2233static void
fba45db2 2234free_variable (struct varobj *var)
8b93c638 2235{
d452c4bc
UW
2236#if HAVE_PYTHON
2237 if (var->pretty_printer)
2238 {
2239 struct cleanup *cleanup = varobj_ensure_python_env (var);
0cc7d26f
TT
2240 Py_XDECREF (var->constructor);
2241 Py_XDECREF (var->pretty_printer);
2242 Py_XDECREF (var->child_iter);
2243 Py_XDECREF (var->saved_item);
d452c4bc
UW
2244 do_cleanups (cleanup);
2245 }
2246#endif
2247
36746093
JK
2248 value_free (var->value);
2249
581e13c1 2250 /* Free the expression if this is a root variable. */
b2c2bd75 2251 if (is_root_p (var))
8b93c638 2252 {
3038237c 2253 xfree (var->root->exp);
8038e1e2 2254 xfree (var->root);
8b93c638
JM
2255 }
2256
8038e1e2
AC
2257 xfree (var->name);
2258 xfree (var->obj_name);
85265413 2259 xfree (var->print_value);
02142340 2260 xfree (var->path_expr);
8038e1e2 2261 xfree (var);
8b93c638
JM
2262}
2263
74b7792f
AC
2264static void
2265do_free_variable_cleanup (void *var)
2266{
2267 free_variable (var);
2268}
2269
2270static struct cleanup *
2271make_cleanup_free_variable (struct varobj *var)
2272{
2273 return make_cleanup (do_free_variable_cleanup, var);
2274}
2275
581e13c1 2276/* This returns the type of the variable. It also skips past typedefs
6766a268 2277 to return the real type of the variable.
94b66fa7
KS
2278
2279 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
581e13c1 2280 except within get_target_type and get_type. */
8b93c638 2281static struct type *
fba45db2 2282get_type (struct varobj *var)
8b93c638
JM
2283{
2284 struct type *type;
8b93c638 2285
a109c7c1 2286 type = var->type;
6766a268
DJ
2287 if (type != NULL)
2288 type = check_typedef (type);
8b93c638
JM
2289
2290 return type;
2291}
2292
6e2a9270
VP
2293/* Return the type of the value that's stored in VAR,
2294 or that would have being stored there if the
581e13c1 2295 value were accessible.
6e2a9270
VP
2296
2297 This differs from VAR->type in that VAR->type is always
2298 the true type of the expession in the source language.
2299 The return value of this function is the type we're
2300 actually storing in varobj, and using for displaying
2301 the values and for comparing previous and new values.
2302
2303 For example, top-level references are always stripped. */
2304static struct type *
2305get_value_type (struct varobj *var)
2306{
2307 struct type *type;
2308
2309 if (var->value)
2310 type = value_type (var->value);
2311 else
2312 type = var->type;
2313
2314 type = check_typedef (type);
2315
2316 if (TYPE_CODE (type) == TYPE_CODE_REF)
2317 type = get_target_type (type);
2318
2319 type = check_typedef (type);
2320
2321 return type;
2322}
2323
8b93c638 2324/* This returns the target type (or NULL) of TYPE, also skipping
94b66fa7
KS
2325 past typedefs, just like get_type ().
2326
2327 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
581e13c1 2328 except within get_target_type and get_type. */
8b93c638 2329static struct type *
fba45db2 2330get_target_type (struct type *type)
8b93c638
JM
2331{
2332 if (type != NULL)
2333 {
2334 type = TYPE_TARGET_TYPE (type);
6766a268
DJ
2335 if (type != NULL)
2336 type = check_typedef (type);
8b93c638
JM
2337 }
2338
2339 return type;
2340}
2341
2342/* What is the default display for this variable? We assume that
581e13c1 2343 everything is "natural". Any exceptions? */
8b93c638 2344static enum varobj_display_formats
fba45db2 2345variable_default_display (struct varobj *var)
8b93c638
JM
2346{
2347 return FORMAT_NATURAL;
2348}
2349
581e13c1 2350/* FIXME: The following should be generic for any pointer. */
8b93c638 2351static void
fba45db2 2352cppush (struct cpstack **pstack, char *name)
8b93c638
JM
2353{
2354 struct cpstack *s;
2355
2356 s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
2357 s->name = name;
2358 s->next = *pstack;
2359 *pstack = s;
2360}
2361
581e13c1 2362/* FIXME: The following should be generic for any pointer. */
8b93c638 2363static char *
fba45db2 2364cppop (struct cpstack **pstack)
8b93c638
JM
2365{
2366 struct cpstack *s;
2367 char *v;
2368
2369 if ((*pstack)->name == NULL && (*pstack)->next == NULL)
2370 return NULL;
2371
2372 s = *pstack;
2373 v = s->name;
2374 *pstack = (*pstack)->next;
b8c9b27d 2375 xfree (s);
8b93c638
JM
2376
2377 return v;
2378}
2379\f
2380/*
2381 * Language-dependencies
2382 */
2383
2384/* Common entry points */
2385
581e13c1 2386/* Get the language of variable VAR. */
8b93c638 2387static enum varobj_languages
fba45db2 2388variable_language (struct varobj *var)
8b93c638
JM
2389{
2390 enum varobj_languages lang;
2391
2392 switch (var->root->exp->language_defn->la_language)
2393 {
2394 default:
2395 case language_c:
2396 lang = vlang_c;
2397 break;
2398 case language_cplus:
2399 lang = vlang_cplus;
2400 break;
2401 case language_java:
2402 lang = vlang_java;
2403 break;
2404 }
2405
2406 return lang;
2407}
2408
2409/* Return the number of children for a given variable.
2410 The result of this function is defined by the language
581e13c1 2411 implementation. The number of children returned by this function
8b93c638 2412 is the number of children that the user will see in the variable
581e13c1 2413 display. */
8b93c638 2414static int
fba45db2 2415number_of_children (struct varobj *var)
8b93c638 2416{
82ae4854 2417 return (*var->root->lang->number_of_children) (var);
8b93c638
JM
2418}
2419
3e43a32a 2420/* What is the expression for the root varobj VAR? Returns a malloc'd
581e13c1 2421 string. */
8b93c638 2422static char *
fba45db2 2423name_of_variable (struct varobj *var)
8b93c638
JM
2424{
2425 return (*var->root->lang->name_of_variable) (var);
2426}
2427
3e43a32a 2428/* What is the name of the INDEX'th child of VAR? Returns a malloc'd
581e13c1 2429 string. */
8b93c638 2430static char *
fba45db2 2431name_of_child (struct varobj *var, int index)
8b93c638
JM
2432{
2433 return (*var->root->lang->name_of_child) (var, index);
2434}
2435
a5defcdc
VP
2436/* What is the ``struct value *'' of the root variable VAR?
2437 For floating variable object, evaluation can get us a value
2438 of different type from what is stored in varobj already. In
2439 that case:
2440 - *type_changed will be set to 1
2441 - old varobj will be freed, and new one will be
2442 created, with the same name.
2443 - *var_handle will be set to the new varobj
2444 Otherwise, *type_changed will be set to 0. */
30b28db1 2445static struct value *
fba45db2 2446value_of_root (struct varobj **var_handle, int *type_changed)
8b93c638 2447{
73a93a32
JI
2448 struct varobj *var;
2449
2450 if (var_handle == NULL)
2451 return NULL;
2452
2453 var = *var_handle;
2454
2455 /* This should really be an exception, since this should
581e13c1 2456 only get called with a root variable. */
73a93a32 2457
b2c2bd75 2458 if (!is_root_p (var))
73a93a32
JI
2459 return NULL;
2460
a5defcdc 2461 if (var->root->floating)
73a93a32
JI
2462 {
2463 struct varobj *tmp_var;
2464 char *old_type, *new_type;
6225abfa 2465
73a93a32
JI
2466 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
2467 USE_SELECTED_FRAME);
2468 if (tmp_var == NULL)
2469 {
2470 return NULL;
2471 }
6225abfa 2472 old_type = varobj_get_type (var);
73a93a32 2473 new_type = varobj_get_type (tmp_var);
72330bd6 2474 if (strcmp (old_type, new_type) == 0)
73a93a32 2475 {
fcacd99f
VP
2476 /* The expression presently stored inside var->root->exp
2477 remembers the locations of local variables relatively to
2478 the frame where the expression was created (in DWARF location
2479 button, for example). Naturally, those locations are not
2480 correct in other frames, so update the expression. */
2481
2482 struct expression *tmp_exp = var->root->exp;
a109c7c1 2483
fcacd99f
VP
2484 var->root->exp = tmp_var->root->exp;
2485 tmp_var->root->exp = tmp_exp;
2486
73a93a32
JI
2487 varobj_delete (tmp_var, NULL, 0);
2488 *type_changed = 0;
2489 }
2490 else
2491 {
1b36a34b 2492 tmp_var->obj_name = xstrdup (var->obj_name);
0cc7d26f
TT
2493 tmp_var->from = var->from;
2494 tmp_var->to = var->to;
a5defcdc
VP
2495 varobj_delete (var, NULL, 0);
2496
73a93a32
JI
2497 install_variable (tmp_var);
2498 *var_handle = tmp_var;
705da579 2499 var = *var_handle;
73a93a32
JI
2500 *type_changed = 1;
2501 }
74dddad3
MS
2502 xfree (old_type);
2503 xfree (new_type);
73a93a32
JI
2504 }
2505 else
2506 {
2507 *type_changed = 0;
2508 }
2509
2510 return (*var->root->lang->value_of_root) (var_handle);
8b93c638
JM
2511}
2512
581e13c1 2513/* What is the ``struct value *'' for the INDEX'th child of PARENT? */
30b28db1 2514static struct value *
fba45db2 2515value_of_child (struct varobj *parent, int index)
8b93c638 2516{
30b28db1 2517 struct value *value;
8b93c638
JM
2518
2519 value = (*parent->root->lang->value_of_child) (parent, index);
2520
8b93c638
JM
2521 return value;
2522}
2523
581e13c1 2524/* GDB already has a command called "value_of_variable". Sigh. */
8b93c638 2525static char *
de051565 2526my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
8b93c638 2527{
8756216b 2528 if (var->root->is_valid)
0cc7d26f
TT
2529 {
2530 if (var->pretty_printer)
2531 return value_get_print_value (var->value, var->format, var);
2532 return (*var->root->lang->value_of_variable) (var, format);
2533 }
8756216b
DP
2534 else
2535 return NULL;
8b93c638
JM
2536}
2537
85265413 2538static char *
b6313243 2539value_get_print_value (struct value *value, enum varobj_display_formats format,
d452c4bc 2540 struct varobj *var)
85265413 2541{
57e66780 2542 struct ui_file *stb;
621c8364 2543 struct cleanup *old_chain;
fbb8f299 2544 gdb_byte *thevalue = NULL;
79a45b7d 2545 struct value_print_options opts;
be759fcf
PM
2546 struct type *type = NULL;
2547 long len = 0;
2548 char *encoding = NULL;
2549 struct gdbarch *gdbarch = NULL;
3a182a69
JK
2550 /* Initialize it just to avoid a GCC false warning. */
2551 CORE_ADDR str_addr = 0;
09ca9e2e 2552 int string_print = 0;
57e66780
DJ
2553
2554 if (value == NULL)
2555 return NULL;
2556
621c8364
TT
2557 stb = mem_fileopen ();
2558 old_chain = make_cleanup_ui_file_delete (stb);
2559
be759fcf 2560 gdbarch = get_type_arch (value_type (value));
b6313243
TT
2561#if HAVE_PYTHON
2562 {
d452c4bc
UW
2563 PyObject *value_formatter = var->pretty_printer;
2564
09ca9e2e
TT
2565 varobj_ensure_python_env (var);
2566
0cc7d26f 2567 if (value_formatter)
b6313243 2568 {
0cc7d26f
TT
2569 /* First check to see if we have any children at all. If so,
2570 we simply return {...}. */
2571 if (dynamic_varobj_has_child_method (var))
621c8364
TT
2572 {
2573 do_cleanups (old_chain);
2574 return xstrdup ("{...}");
2575 }
b6313243 2576
0cc7d26f 2577 if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
b6313243 2578 {
0cc7d26f
TT
2579 char *hint;
2580 struct value *replacement;
0cc7d26f
TT
2581 PyObject *output = NULL;
2582
2583 hint = gdbpy_get_display_hint (value_formatter);
2584 if (hint)
2585 {
2586 if (!strcmp (hint, "string"))
2587 string_print = 1;
2588 xfree (hint);
2589 }
b6313243 2590
0cc7d26f 2591 output = apply_varobj_pretty_printer (value_formatter,
621c8364
TT
2592 &replacement,
2593 stb);
0cc7d26f
TT
2594 if (output)
2595 {
09ca9e2e
TT
2596 make_cleanup_py_decref (output);
2597
be759fcf 2598 if (gdbpy_is_lazy_string (output))
0cc7d26f 2599 {
09ca9e2e
TT
2600 gdbpy_extract_lazy_string (output, &str_addr, &type,
2601 &len, &encoding);
2602 make_cleanup (free_current_contents, &encoding);
be759fcf
PM
2603 string_print = 1;
2604 }
2605 else
2606 {
2607 PyObject *py_str
2608 = python_string_to_target_python_string (output);
a109c7c1 2609
be759fcf
PM
2610 if (py_str)
2611 {
2612 char *s = PyString_AsString (py_str);
a109c7c1 2613
be759fcf
PM
2614 len = PyString_Size (py_str);
2615 thevalue = xmemdup (s, len + 1, len + 1);
2616 type = builtin_type (gdbarch)->builtin_char;
2617 Py_DECREF (py_str);
09ca9e2e
TT
2618
2619 if (!string_print)
2620 {
2621 do_cleanups (old_chain);
2622 return thevalue;
2623 }
2624
2625 make_cleanup (xfree, thevalue);
be759fcf 2626 }
8dc78533
JK
2627 else
2628 gdbpy_print_stack ();
0cc7d26f 2629 }
0cc7d26f
TT
2630 }
2631 if (replacement)
2632 value = replacement;
b6313243 2633 }
b6313243 2634 }
b6313243
TT
2635 }
2636#endif
2637
79a45b7d
TT
2638 get_formatted_print_options (&opts, format_code[(int) format]);
2639 opts.deref_ref = 0;
b6313243
TT
2640 opts.raw = 1;
2641 if (thevalue)
09ca9e2e
TT
2642 LA_PRINT_STRING (stb, type, thevalue, len, encoding, 0, &opts);
2643 else if (string_print)
2644 val_print_string (type, encoding, str_addr, len, stb, &opts);
b6313243
TT
2645 else
2646 common_val_print (value, stb, 0, &opts, current_language);
759ef836 2647 thevalue = ui_file_xstrdup (stb, NULL);
57e66780 2648
85265413
NR
2649 do_cleanups (old_chain);
2650 return thevalue;
2651}
2652
340a7723
NR
2653int
2654varobj_editable_p (struct varobj *var)
2655{
2656 struct type *type;
340a7723
NR
2657
2658 if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
2659 return 0;
2660
2661 type = get_value_type (var);
2662
2663 switch (TYPE_CODE (type))
2664 {
2665 case TYPE_CODE_STRUCT:
2666 case TYPE_CODE_UNION:
2667 case TYPE_CODE_ARRAY:
2668 case TYPE_CODE_FUNC:
2669 case TYPE_CODE_METHOD:
2670 return 0;
2671 break;
2672
2673 default:
2674 return 1;
2675 break;
2676 }
2677}
2678
acd65feb
VP
2679/* Return non-zero if changes in value of VAR
2680 must be detected and reported by -var-update.
2681 Return zero is -var-update should never report
2682 changes of such values. This makes sense for structures
2683 (since the changes in children values will be reported separately),
2684 or for artifical objects (like 'public' pseudo-field in C++).
2685
2686 Return value of 0 means that gdb need not call value_fetch_lazy
2687 for the value of this variable object. */
8b93c638 2688static int
b2c2bd75 2689varobj_value_is_changeable_p (struct varobj *var)
8b93c638
JM
2690{
2691 int r;
2692 struct type *type;
2693
2694 if (CPLUS_FAKE_CHILD (var))
2695 return 0;
2696
6e2a9270 2697 type = get_value_type (var);
8b93c638
JM
2698
2699 switch (TYPE_CODE (type))
2700 {
72330bd6
AC
2701 case TYPE_CODE_STRUCT:
2702 case TYPE_CODE_UNION:
2703 case TYPE_CODE_ARRAY:
2704 r = 0;
2705 break;
8b93c638 2706
72330bd6
AC
2707 default:
2708 r = 1;
8b93c638
JM
2709 }
2710
2711 return r;
2712}
2713
5a413362
VP
2714/* Return 1 if that varobj is floating, that is is always evaluated in the
2715 selected frame, and not bound to thread/frame. Such variable objects
2716 are created using '@' as frame specifier to -var-create. */
2717int
2718varobj_floating_p (struct varobj *var)
2719{
2720 return var->root->floating;
2721}
2722
2024f65a
VP
2723/* Given the value and the type of a variable object,
2724 adjust the value and type to those necessary
2725 for getting children of the variable object.
2726 This includes dereferencing top-level references
2727 to all types and dereferencing pointers to
581e13c1 2728 structures.
2024f65a 2729
581e13c1 2730 Both TYPE and *TYPE should be non-null. VALUE
2024f65a
VP
2731 can be null if we want to only translate type.
2732 *VALUE can be null as well -- if the parent
581e13c1 2733 value is not known.
02142340
VP
2734
2735 If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
b6313243 2736 depending on whether pointer was dereferenced
02142340 2737 in this function. */
2024f65a
VP
2738static void
2739adjust_value_for_child_access (struct value **value,
02142340
VP
2740 struct type **type,
2741 int *was_ptr)
2024f65a
VP
2742{
2743 gdb_assert (type && *type);
2744
02142340
VP
2745 if (was_ptr)
2746 *was_ptr = 0;
2747
2024f65a
VP
2748 *type = check_typedef (*type);
2749
2750 /* The type of value stored in varobj, that is passed
2751 to us, is already supposed to be
2752 reference-stripped. */
2753
2754 gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
2755
2756 /* Pointers to structures are treated just like
2757 structures when accessing children. Don't
2758 dererences pointers to other types. */
2759 if (TYPE_CODE (*type) == TYPE_CODE_PTR)
2760 {
2761 struct type *target_type = get_target_type (*type);
2762 if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
2763 || TYPE_CODE (target_type) == TYPE_CODE_UNION)
2764 {
2765 if (value && *value)
3f4178d6 2766 {
a109c7c1
MS
2767 int success = gdb_value_ind (*value, value);
2768
3f4178d6
DJ
2769 if (!success)
2770 *value = NULL;
2771 }
2024f65a 2772 *type = target_type;
02142340
VP
2773 if (was_ptr)
2774 *was_ptr = 1;
2024f65a
VP
2775 }
2776 }
2777
2778 /* The 'get_target_type' function calls check_typedef on
2779 result, so we can immediately check type code. No
2780 need to call check_typedef here. */
2781}
2782
8b93c638
JM
2783/* C */
2784static int
fba45db2 2785c_number_of_children (struct varobj *var)
8b93c638 2786{
2024f65a
VP
2787 struct type *type = get_value_type (var);
2788 int children = 0;
8b93c638 2789 struct type *target;
8b93c638 2790
02142340 2791 adjust_value_for_child_access (NULL, &type, NULL);
8b93c638 2792 target = get_target_type (type);
8b93c638
JM
2793
2794 switch (TYPE_CODE (type))
2795 {
2796 case TYPE_CODE_ARRAY:
2797 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
d78df370 2798 && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
8b93c638
JM
2799 children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
2800 else
74a44383
DJ
2801 /* If we don't know how many elements there are, don't display
2802 any. */
2803 children = 0;
8b93c638
JM
2804 break;
2805
2806 case TYPE_CODE_STRUCT:
2807 case TYPE_CODE_UNION:
2808 children = TYPE_NFIELDS (type);
2809 break;
2810
2811 case TYPE_CODE_PTR:
581e13c1 2812 /* The type here is a pointer to non-struct. Typically, pointers
2024f65a
VP
2813 have one child, except for function ptrs, which have no children,
2814 and except for void*, as we don't know what to show.
2815
0755e6c1
FN
2816 We can show char* so we allow it to be dereferenced. If you decide
2817 to test for it, please mind that a little magic is necessary to
2818 properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
581e13c1 2819 TYPE_NAME == "char". */
2024f65a
VP
2820 if (TYPE_CODE (target) == TYPE_CODE_FUNC
2821 || TYPE_CODE (target) == TYPE_CODE_VOID)
2822 children = 0;
2823 else
2824 children = 1;
8b93c638
JM
2825 break;
2826
2827 default:
581e13c1 2828 /* Other types have no children. */
8b93c638
JM
2829 break;
2830 }
2831
2832 return children;
2833}
2834
2835static char *
fba45db2 2836c_name_of_variable (struct varobj *parent)
8b93c638 2837{
1b36a34b 2838 return xstrdup (parent->name);
8b93c638
JM
2839}
2840
bbec2603
VP
2841/* Return the value of element TYPE_INDEX of a structure
2842 value VALUE. VALUE's type should be a structure,
581e13c1 2843 or union, or a typedef to struct/union.
bbec2603
VP
2844
2845 Returns NULL if getting the value fails. Never throws. */
2846static struct value *
2847value_struct_element_index (struct value *value, int type_index)
8b93c638 2848{
bbec2603
VP
2849 struct value *result = NULL;
2850 volatile struct gdb_exception e;
bbec2603 2851 struct type *type = value_type (value);
a109c7c1 2852
bbec2603
VP
2853 type = check_typedef (type);
2854
2855 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
2856 || TYPE_CODE (type) == TYPE_CODE_UNION);
8b93c638 2857
bbec2603
VP
2858 TRY_CATCH (e, RETURN_MASK_ERROR)
2859 {
d6a843b5 2860 if (field_is_static (&TYPE_FIELD (type, type_index)))
bbec2603
VP
2861 result = value_static_field (type, type_index);
2862 else
2863 result = value_primitive_field (value, 0, type_index, type);
2864 }
2865 if (e.reason < 0)
2866 {
2867 return NULL;
2868 }
2869 else
2870 {
2871 return result;
2872 }
2873}
2874
2875/* Obtain the information about child INDEX of the variable
581e13c1 2876 object PARENT.
bbec2603
VP
2877 If CNAME is not null, sets *CNAME to the name of the child relative
2878 to the parent.
2879 If CVALUE is not null, sets *CVALUE to the value of the child.
2880 If CTYPE is not null, sets *CTYPE to the type of the child.
2881
2882 If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
2883 information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
2884 to NULL. */
2885static void
2886c_describe_child (struct varobj *parent, int index,
02142340
VP
2887 char **cname, struct value **cvalue, struct type **ctype,
2888 char **cfull_expression)
bbec2603
VP
2889{
2890 struct value *value = parent->value;
2024f65a 2891 struct type *type = get_value_type (parent);
02142340
VP
2892 char *parent_expression = NULL;
2893 int was_ptr;
bbec2603
VP
2894
2895 if (cname)
2896 *cname = NULL;
2897 if (cvalue)
2898 *cvalue = NULL;
2899 if (ctype)
2900 *ctype = NULL;
02142340
VP
2901 if (cfull_expression)
2902 {
2903 *cfull_expression = NULL;
2904 parent_expression = varobj_get_path_expr (parent);
2905 }
2906 adjust_value_for_child_access (&value, &type, &was_ptr);
bbec2603 2907
8b93c638
JM
2908 switch (TYPE_CODE (type))
2909 {
2910 case TYPE_CODE_ARRAY:
bbec2603 2911 if (cname)
3e43a32a
MS
2912 *cname
2913 = xstrdup (int_string (index
2914 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
2915 10, 1, 0, 0));
bbec2603
VP
2916
2917 if (cvalue && value)
2918 {
2919 int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
a109c7c1 2920
2497b498 2921 gdb_value_subscript (value, real_index, cvalue);
bbec2603
VP
2922 }
2923
2924 if (ctype)
2925 *ctype = get_target_type (type);
2926
02142340 2927 if (cfull_expression)
43bbcdc2
PH
2928 *cfull_expression =
2929 xstrprintf ("(%s)[%s]", parent_expression,
2930 int_string (index
2931 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
2932 10, 1, 0, 0));
02142340
VP
2933
2934
8b93c638
JM
2935 break;
2936
2937 case TYPE_CODE_STRUCT:
2938 case TYPE_CODE_UNION:
bbec2603 2939 if (cname)
1b36a34b 2940 *cname = xstrdup (TYPE_FIELD_NAME (type, index));
bbec2603
VP
2941
2942 if (cvalue && value)
2943 {
2944 /* For C, varobj index is the same as type index. */
2945 *cvalue = value_struct_element_index (value, index);
2946 }
2947
2948 if (ctype)
2949 *ctype = TYPE_FIELD_TYPE (type, index);
2950
02142340
VP
2951 if (cfull_expression)
2952 {
2953 char *join = was_ptr ? "->" : ".";
a109c7c1 2954
02142340
VP
2955 *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join,
2956 TYPE_FIELD_NAME (type, index));
2957 }
2958
8b93c638
JM
2959 break;
2960
2961 case TYPE_CODE_PTR:
bbec2603
VP
2962 if (cname)
2963 *cname = xstrprintf ("*%s", parent->name);
8b93c638 2964
bbec2603 2965 if (cvalue && value)
3f4178d6
DJ
2966 {
2967 int success = gdb_value_ind (value, cvalue);
a109c7c1 2968
3f4178d6
DJ
2969 if (!success)
2970 *cvalue = NULL;
2971 }
bbec2603 2972
2024f65a
VP
2973 /* Don't use get_target_type because it calls
2974 check_typedef and here, we want to show the true
2975 declared type of the variable. */
bbec2603 2976 if (ctype)
2024f65a 2977 *ctype = TYPE_TARGET_TYPE (type);
02142340
VP
2978
2979 if (cfull_expression)
2980 *cfull_expression = xstrprintf ("*(%s)", parent_expression);
bbec2603 2981
8b93c638
JM
2982 break;
2983
2984 default:
581e13c1 2985 /* This should not happen. */
bbec2603
VP
2986 if (cname)
2987 *cname = xstrdup ("???");
02142340
VP
2988 if (cfull_expression)
2989 *cfull_expression = xstrdup ("???");
581e13c1 2990 /* Don't set value and type, we don't know then. */
8b93c638 2991 }
bbec2603 2992}
8b93c638 2993
bbec2603
VP
2994static char *
2995c_name_of_child (struct varobj *parent, int index)
2996{
2997 char *name;
a109c7c1 2998
02142340 2999 c_describe_child (parent, index, &name, NULL, NULL, NULL);
8b93c638
JM
3000 return name;
3001}
3002
02142340
VP
3003static char *
3004c_path_expr_of_child (struct varobj *child)
3005{
3006 c_describe_child (child->parent, child->index, NULL, NULL, NULL,
3007 &child->path_expr);
3008 return child->path_expr;
3009}
3010
c5b48eac
VP
3011/* If frame associated with VAR can be found, switch
3012 to it and return 1. Otherwise, return 0. */
3013static int
3014check_scope (struct varobj *var)
3015{
3016 struct frame_info *fi;
3017 int scope;
3018
3019 fi = frame_find_by_id (var->root->frame);
3020 scope = fi != NULL;
3021
3022 if (fi)
3023 {
3024 CORE_ADDR pc = get_frame_pc (fi);
a109c7c1 3025
c5b48eac
VP
3026 if (pc < BLOCK_START (var->root->valid_block) ||
3027 pc >= BLOCK_END (var->root->valid_block))
3028 scope = 0;
3029 else
3030 select_frame (fi);
3031 }
3032 return scope;
3033}
3034
30b28db1 3035static struct value *
fba45db2 3036c_value_of_root (struct varobj **var_handle)
8b93c638 3037{
5e572bb4 3038 struct value *new_val = NULL;
73a93a32 3039 struct varobj *var = *var_handle;
c5b48eac 3040 int within_scope = 0;
6208b47d
VP
3041 struct cleanup *back_to;
3042
581e13c1 3043 /* Only root variables can be updated... */
b2c2bd75 3044 if (!is_root_p (var))
581e13c1 3045 /* Not a root var. */
73a93a32
JI
3046 return NULL;
3047
4f8d22e3 3048 back_to = make_cleanup_restore_current_thread ();
72330bd6 3049
581e13c1 3050 /* Determine whether the variable is still around. */
a5defcdc 3051 if (var->root->valid_block == NULL || var->root->floating)
8b93c638 3052 within_scope = 1;
c5b48eac
VP
3053 else if (var->root->thread_id == 0)
3054 {
3055 /* The program was single-threaded when the variable object was
3056 created. Technically, it's possible that the program became
3057 multi-threaded since then, but we don't support such
3058 scenario yet. */
3059 within_scope = check_scope (var);
3060 }
8b93c638
JM
3061 else
3062 {
c5b48eac
VP
3063 ptid_t ptid = thread_id_to_pid (var->root->thread_id);
3064 if (in_thread_list (ptid))
d2353924 3065 {
c5b48eac
VP
3066 switch_to_thread (ptid);
3067 within_scope = check_scope (var);
3068 }
8b93c638 3069 }
72330bd6 3070
8b93c638
JM
3071 if (within_scope)
3072 {
73a93a32 3073 /* We need to catch errors here, because if evaluate
85d93f1d
VP
3074 expression fails we want to just return NULL. */
3075 gdb_evaluate_expression (var->root->exp, &new_val);
8b93c638
JM
3076 return new_val;
3077 }
3078
6208b47d
VP
3079 do_cleanups (back_to);
3080
8b93c638
JM
3081 return NULL;
3082}
3083
30b28db1 3084static struct value *
fba45db2 3085c_value_of_child (struct varobj *parent, int index)
8b93c638 3086{
bbec2603 3087 struct value *value = NULL;
8b93c638 3088
a109c7c1 3089 c_describe_child (parent, index, NULL, &value, NULL, NULL);
8b93c638
JM
3090 return value;
3091}
3092
3093static struct type *
fba45db2 3094c_type_of_child (struct varobj *parent, int index)
8b93c638 3095{
bbec2603 3096 struct type *type = NULL;
a109c7c1 3097
02142340 3098 c_describe_child (parent, index, NULL, NULL, &type, NULL);
8b93c638
JM
3099 return type;
3100}
3101
8b93c638 3102static char *
de051565 3103c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
8b93c638 3104{
14b3d9c9
JB
3105 /* BOGUS: if val_print sees a struct/class, or a reference to one,
3106 it will print out its children instead of "{...}". So we need to
3107 catch that case explicitly. */
3108 struct type *type = get_type (var);
e64d9b3d 3109
b6313243
TT
3110 /* If we have a custom formatter, return whatever string it has
3111 produced. */
3112 if (var->pretty_printer && var->print_value)
3113 return xstrdup (var->print_value);
3114
581e13c1 3115 /* Strip top-level references. */
14b3d9c9
JB
3116 while (TYPE_CODE (type) == TYPE_CODE_REF)
3117 type = check_typedef (TYPE_TARGET_TYPE (type));
3118
3119 switch (TYPE_CODE (type))
8b93c638
JM
3120 {
3121 case TYPE_CODE_STRUCT:
3122 case TYPE_CODE_UNION:
3123 return xstrdup ("{...}");
3124 /* break; */
3125
3126 case TYPE_CODE_ARRAY:
3127 {
e64d9b3d 3128 char *number;
a109c7c1 3129
b435e160 3130 number = xstrprintf ("[%d]", var->num_children);
e64d9b3d 3131 return (number);
8b93c638
JM
3132 }
3133 /* break; */
3134
3135 default:
3136 {
575bbeb6
KS
3137 if (var->value == NULL)
3138 {
3139 /* This can happen if we attempt to get the value of a struct
581e13c1
MS
3140 member when the parent is an invalid pointer. This is an
3141 error condition, so we should tell the caller. */
575bbeb6
KS
3142 return NULL;
3143 }
3144 else
3145 {
25d5ea92
VP
3146 if (var->not_fetched && value_lazy (var->value))
3147 /* Frozen variable and no value yet. We don't
3148 implicitly fetch the value. MI response will
3149 use empty string for the value, which is OK. */
3150 return NULL;
3151
b2c2bd75 3152 gdb_assert (varobj_value_is_changeable_p (var));
acd65feb 3153 gdb_assert (!value_lazy (var->value));
de051565
MK
3154
3155 /* If the specified format is the current one,
581e13c1 3156 we can reuse print_value. */
de051565
MK
3157 if (format == var->format)
3158 return xstrdup (var->print_value);
3159 else
d452c4bc 3160 return value_get_print_value (var->value, format, var);
85265413 3161 }
e64d9b3d 3162 }
8b93c638
JM
3163 }
3164}
3165\f
3166
3167/* C++ */
3168
3169static int
fba45db2 3170cplus_number_of_children (struct varobj *var)
8b93c638
JM
3171{
3172 struct type *type;
3173 int children, dont_know;
3174
3175 dont_know = 1;
3176 children = 0;
3177
3178 if (!CPLUS_FAKE_CHILD (var))
3179 {
2024f65a 3180 type = get_value_type (var);
02142340 3181 adjust_value_for_child_access (NULL, &type, NULL);
8b93c638
JM
3182
3183 if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
72330bd6 3184 ((TYPE_CODE (type)) == TYPE_CODE_UNION))
8b93c638
JM
3185 {
3186 int kids[3];
3187
3188 cplus_class_num_children (type, kids);
3189 if (kids[v_public] != 0)
3190 children++;
3191 if (kids[v_private] != 0)
3192 children++;
3193 if (kids[v_protected] != 0)
3194 children++;
3195
581e13c1 3196 /* Add any baseclasses. */
8b93c638
JM
3197 children += TYPE_N_BASECLASSES (type);
3198 dont_know = 0;
3199
581e13c1 3200 /* FIXME: save children in var. */
8b93c638
JM
3201 }
3202 }
3203 else
3204 {
3205 int kids[3];
3206
2024f65a 3207 type = get_value_type (var->parent);
02142340 3208 adjust_value_for_child_access (NULL, &type, NULL);
8b93c638
JM
3209
3210 cplus_class_num_children (type, kids);
6e382aa3 3211 if (strcmp (var->name, "public") == 0)
8b93c638 3212 children = kids[v_public];
6e382aa3 3213 else if (strcmp (var->name, "private") == 0)
8b93c638
JM
3214 children = kids[v_private];
3215 else
3216 children = kids[v_protected];
3217 dont_know = 0;
3218 }
3219
3220 if (dont_know)
3221 children = c_number_of_children (var);
3222
3223 return children;
3224}
3225
3226/* Compute # of public, private, and protected variables in this class.
3227 That means we need to descend into all baseclasses and find out
581e13c1 3228 how many are there, too. */
8b93c638 3229static void
1669605f 3230cplus_class_num_children (struct type *type, int children[3])
8b93c638 3231{
d48cc9dd
DJ
3232 int i, vptr_fieldno;
3233 struct type *basetype = NULL;
8b93c638
JM
3234
3235 children[v_public] = 0;
3236 children[v_private] = 0;
3237 children[v_protected] = 0;
3238
d48cc9dd 3239 vptr_fieldno = get_vptr_fieldno (type, &basetype);
8b93c638
JM
3240 for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
3241 {
d48cc9dd
DJ
3242 /* If we have a virtual table pointer, omit it. Even if virtual
3243 table pointers are not specifically marked in the debug info,
3244 they should be artificial. */
3245 if ((type == basetype && i == vptr_fieldno)
3246 || TYPE_FIELD_ARTIFICIAL (type, i))
8b93c638
JM
3247 continue;
3248
3249 if (TYPE_FIELD_PROTECTED (type, i))
3250 children[v_protected]++;
3251 else if (TYPE_FIELD_PRIVATE (type, i))
3252 children[v_private]++;
3253 else
3254 children[v_public]++;
3255 }
3256}
3257
3258static char *
fba45db2 3259cplus_name_of_variable (struct varobj *parent)
8b93c638
JM
3260{
3261 return c_name_of_variable (parent);
3262}
3263
2024f65a
VP
3264enum accessibility { private_field, protected_field, public_field };
3265
3266/* Check if field INDEX of TYPE has the specified accessibility.
3267 Return 0 if so and 1 otherwise. */
3268static int
3269match_accessibility (struct type *type, int index, enum accessibility acc)
8b93c638 3270{
2024f65a
VP
3271 if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
3272 return 1;
3273 else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
3274 return 1;
3275 else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
3276 && !TYPE_FIELD_PROTECTED (type, index))
3277 return 1;
3278 else
3279 return 0;
3280}
3281
3282static void
3283cplus_describe_child (struct varobj *parent, int index,
02142340
VP
3284 char **cname, struct value **cvalue, struct type **ctype,
3285 char **cfull_expression)
2024f65a 3286{
2024f65a 3287 struct value *value;
8b93c638 3288 struct type *type;
02142340
VP
3289 int was_ptr;
3290 char *parent_expression = NULL;
8b93c638 3291
2024f65a
VP
3292 if (cname)
3293 *cname = NULL;
3294 if (cvalue)
3295 *cvalue = NULL;
3296 if (ctype)
3297 *ctype = NULL;
02142340
VP
3298 if (cfull_expression)
3299 *cfull_expression = NULL;
2024f65a 3300
8b93c638
JM
3301 if (CPLUS_FAKE_CHILD (parent))
3302 {
2024f65a
VP
3303 value = parent->parent->value;
3304 type = get_value_type (parent->parent);
02142340
VP
3305 if (cfull_expression)
3306 parent_expression = varobj_get_path_expr (parent->parent);
8b93c638
JM
3307 }
3308 else
2024f65a
VP
3309 {
3310 value = parent->value;
3311 type = get_value_type (parent);
02142340
VP
3312 if (cfull_expression)
3313 parent_expression = varobj_get_path_expr (parent);
2024f65a 3314 }
8b93c638 3315
02142340 3316 adjust_value_for_child_access (&value, &type, &was_ptr);
2024f65a
VP
3317
3318 if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3f4178d6 3319 || TYPE_CODE (type) == TYPE_CODE_UNION)
8b93c638 3320 {
02142340 3321 char *join = was_ptr ? "->" : ".";
a109c7c1 3322
8b93c638
JM
3323 if (CPLUS_FAKE_CHILD (parent))
3324 {
6e382aa3
JJ
3325 /* The fields of the class type are ordered as they
3326 appear in the class. We are given an index for a
3327 particular access control type ("public","protected",
3328 or "private"). We must skip over fields that don't
3329 have the access control we are looking for to properly
581e13c1 3330 find the indexed field. */
6e382aa3 3331 int type_index = TYPE_N_BASECLASSES (type);
2024f65a 3332 enum accessibility acc = public_field;
d48cc9dd
DJ
3333 int vptr_fieldno;
3334 struct type *basetype = NULL;
3335
3336 vptr_fieldno = get_vptr_fieldno (type, &basetype);
6e382aa3 3337 if (strcmp (parent->name, "private") == 0)
2024f65a 3338 acc = private_field;
6e382aa3 3339 else if (strcmp (parent->name, "protected") == 0)
2024f65a
VP
3340 acc = protected_field;
3341
3342 while (index >= 0)
6e382aa3 3343 {
d48cc9dd
DJ
3344 if ((type == basetype && type_index == vptr_fieldno)
3345 || TYPE_FIELD_ARTIFICIAL (type, type_index))
2024f65a
VP
3346 ; /* ignore vptr */
3347 else if (match_accessibility (type, type_index, acc))
6e382aa3
JJ
3348 --index;
3349 ++type_index;
6e382aa3 3350 }
2024f65a
VP
3351 --type_index;
3352
3353 if (cname)
3354 *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
3355
3356 if (cvalue && value)
3357 *cvalue = value_struct_element_index (value, type_index);
3358
3359 if (ctype)
3360 *ctype = TYPE_FIELD_TYPE (type, type_index);
02142340
VP
3361
3362 if (cfull_expression)
3e43a32a
MS
3363 *cfull_expression
3364 = xstrprintf ("((%s)%s%s)", parent_expression,
3365 join,
3366 TYPE_FIELD_NAME (type, type_index));
2024f65a
VP
3367 }
3368 else if (index < TYPE_N_BASECLASSES (type))
3369 {
3370 /* This is a baseclass. */
3371 if (cname)
3372 *cname = xstrdup (TYPE_FIELD_NAME (type, index));
3373
3374 if (cvalue && value)
0cc7d26f 3375 *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
6e382aa3 3376
2024f65a
VP
3377 if (ctype)
3378 {
3379 *ctype = TYPE_FIELD_TYPE (type, index);
3380 }
02142340
VP
3381
3382 if (cfull_expression)
3383 {
3384 char *ptr = was_ptr ? "*" : "";
a109c7c1 3385
581e13c1 3386 /* Cast the parent to the base' type. Note that in gdb,
02142340
VP
3387 expression like
3388 (Base1)d
3389 will create an lvalue, for all appearences, so we don't
3390 need to use more fancy:
3391 *(Base1*)(&d)
3392 construct. */
3393 *cfull_expression = xstrprintf ("(%s(%s%s) %s)",
3394 ptr,
3395 TYPE_FIELD_NAME (type, index),
3396 ptr,
3397 parent_expression);
3398 }
8b93c638 3399 }
8b93c638
JM
3400 else
3401 {
348144ba 3402 char *access = NULL;
6e382aa3 3403 int children[3];
a109c7c1 3404
2024f65a 3405 cplus_class_num_children (type, children);
6e382aa3 3406
8b93c638 3407 /* Everything beyond the baseclasses can
6e382aa3
JJ
3408 only be "public", "private", or "protected"
3409
3410 The special "fake" children are always output by varobj in
581e13c1 3411 this order. So if INDEX == 2, it MUST be "protected". */
8b93c638
JM
3412 index -= TYPE_N_BASECLASSES (type);
3413 switch (index)
3414 {
3415 case 0:
6e382aa3 3416 if (children[v_public] > 0)
2024f65a 3417 access = "public";
6e382aa3 3418 else if (children[v_private] > 0)
2024f65a 3419 access = "private";
6e382aa3 3420 else
2024f65a 3421 access = "protected";
6e382aa3 3422 break;
8b93c638 3423 case 1:
6e382aa3 3424 if (children[v_public] > 0)
8b93c638 3425 {
6e382aa3 3426 if (children[v_private] > 0)
2024f65a 3427 access = "private";
6e382aa3 3428 else
2024f65a 3429 access = "protected";
8b93c638 3430 }
6e382aa3 3431 else if (children[v_private] > 0)
2024f65a 3432 access = "protected";
6e382aa3 3433 break;
8b93c638 3434 case 2:
581e13c1 3435 /* Must be protected. */
2024f65a 3436 access = "protected";
6e382aa3 3437 break;
8b93c638 3438 default:
581e13c1 3439 /* error! */
8b93c638
JM
3440 break;
3441 }
348144ba
MS
3442
3443 gdb_assert (access);
2024f65a
VP
3444 if (cname)
3445 *cname = xstrdup (access);
8b93c638 3446
02142340 3447 /* Value and type and full expression are null here. */
2024f65a 3448 }
8b93c638 3449 }
8b93c638
JM
3450 else
3451 {
02142340 3452 c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
2024f65a
VP
3453 }
3454}
8b93c638 3455
2024f65a
VP
3456static char *
3457cplus_name_of_child (struct varobj *parent, int index)
3458{
3459 char *name = NULL;
a109c7c1 3460
02142340 3461 cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
8b93c638
JM
3462 return name;
3463}
3464
02142340
VP
3465static char *
3466cplus_path_expr_of_child (struct varobj *child)
3467{
3468 cplus_describe_child (child->parent, child->index, NULL, NULL, NULL,
3469 &child->path_expr);
3470 return child->path_expr;
3471}
3472
30b28db1 3473static struct value *
fba45db2 3474cplus_value_of_root (struct varobj **var_handle)
8b93c638 3475{
73a93a32 3476 return c_value_of_root (var_handle);
8b93c638
JM
3477}
3478
30b28db1 3479static struct value *
fba45db2 3480cplus_value_of_child (struct varobj *parent, int index)
8b93c638 3481{
2024f65a 3482 struct value *value = NULL;
a109c7c1 3483
02142340 3484 cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
8b93c638
JM
3485 return value;
3486}
3487
3488static struct type *
fba45db2 3489cplus_type_of_child (struct varobj *parent, int index)
8b93c638 3490{
2024f65a 3491 struct type *type = NULL;
a109c7c1 3492
02142340 3493 cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
8b93c638
JM
3494 return type;
3495}
3496
8b93c638 3497static char *
a109c7c1
MS
3498cplus_value_of_variable (struct varobj *var,
3499 enum varobj_display_formats format)
8b93c638
JM
3500{
3501
3502 /* If we have one of our special types, don't print out
581e13c1 3503 any value. */
8b93c638
JM
3504 if (CPLUS_FAKE_CHILD (var))
3505 return xstrdup ("");
3506
de051565 3507 return c_value_of_variable (var, format);
8b93c638
JM
3508}
3509\f
3510/* Java */
3511
3512static int
fba45db2 3513java_number_of_children (struct varobj *var)
8b93c638
JM
3514{
3515 return cplus_number_of_children (var);
3516}
3517
3518static char *
fba45db2 3519java_name_of_variable (struct varobj *parent)
8b93c638
JM
3520{
3521 char *p, *name;
3522
3523 name = cplus_name_of_variable (parent);
3524 /* If the name has "-" in it, it is because we
581e13c1 3525 needed to escape periods in the name... */
8b93c638
JM
3526 p = name;
3527
3528 while (*p != '\000')
3529 {
3530 if (*p == '-')
3531 *p = '.';
3532 p++;
3533 }
3534
3535 return name;
3536}
3537
3538static char *
fba45db2 3539java_name_of_child (struct varobj *parent, int index)
8b93c638
JM
3540{
3541 char *name, *p;
3542
3543 name = cplus_name_of_child (parent, index);
581e13c1 3544 /* Escape any periods in the name... */
8b93c638
JM
3545 p = name;
3546
3547 while (*p != '\000')
3548 {
3549 if (*p == '.')
3550 *p = '-';
3551 p++;
3552 }
3553
3554 return name;
3555}
3556
02142340
VP
3557static char *
3558java_path_expr_of_child (struct varobj *child)
3559{
3560 return NULL;
3561}
3562
30b28db1 3563static struct value *
fba45db2 3564java_value_of_root (struct varobj **var_handle)
8b93c638 3565{
73a93a32 3566 return cplus_value_of_root (var_handle);
8b93c638
JM
3567}
3568
30b28db1 3569static struct value *
fba45db2 3570java_value_of_child (struct varobj *parent, int index)
8b93c638
JM
3571{
3572 return cplus_value_of_child (parent, index);
3573}
3574
3575static struct type *
fba45db2 3576java_type_of_child (struct varobj *parent, int index)
8b93c638
JM
3577{
3578 return cplus_type_of_child (parent, index);
3579}
3580
8b93c638 3581static char *
de051565 3582java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
8b93c638 3583{
de051565 3584 return cplus_value_of_variable (var, format);
8b93c638 3585}
54333c3b
JK
3586
3587/* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
3588 with an arbitrary caller supplied DATA pointer. */
3589
3590void
3591all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
3592{
3593 struct varobj_root *var_root, *var_root_next;
3594
3595 /* Iterate "safely" - handle if the callee deletes its passed VAROBJ. */
3596
3597 for (var_root = rootlist; var_root != NULL; var_root = var_root_next)
3598 {
3599 var_root_next = var_root->next;
3600
3601 (*func) (var_root->rootvar, data);
3602 }
3603}
8b93c638
JM
3604\f
3605extern void _initialize_varobj (void);
3606void
3607_initialize_varobj (void)
3608{
3609 int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
3610
3611 varobj_table = xmalloc (sizeof_table);
3612 memset (varobj_table, 0, sizeof_table);
3613
85c07804 3614 add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
3e43a32a
MS
3615 &varobjdebug,
3616 _("Set varobj debugging."),
3617 _("Show varobj debugging."),
3618 _("When non-zero, varobj debugging is enabled."),
3619 NULL, show_varobjdebug,
85c07804 3620 &setlist, &showlist);
8b93c638 3621}
8756216b 3622
54333c3b
JK
3623/* Invalidate varobj VAR if it is tied to locals and re-create it if it is
3624 defined on globals. It is a helper for varobj_invalidate. */
2dbd25e5 3625
54333c3b
JK
3626static void
3627varobj_invalidate_iter (struct varobj *var, void *unused)
8756216b 3628{
54333c3b
JK
3629 /* Floating varobjs are reparsed on each stop, so we don't care if the
3630 presently parsed expression refers to something that's gone. */
3631 if (var->root->floating)
3632 return;
8756216b 3633
54333c3b
JK
3634 /* global var must be re-evaluated. */
3635 if (var->root->valid_block == NULL)
2dbd25e5 3636 {
54333c3b 3637 struct varobj *tmp_var;
2dbd25e5 3638
54333c3b
JK
3639 /* Try to create a varobj with same expression. If we succeed
3640 replace the old varobj, otherwise invalidate it. */
3641 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
3642 USE_CURRENT_FRAME);
3643 if (tmp_var != NULL)
3644 {
3645 tmp_var->obj_name = xstrdup (var->obj_name);
3646 varobj_delete (var, NULL, 0);
3647 install_variable (tmp_var);
2dbd25e5 3648 }
54333c3b
JK
3649 else
3650 var->root->is_valid = 0;
2dbd25e5 3651 }
54333c3b
JK
3652 else /* locals must be invalidated. */
3653 var->root->is_valid = 0;
3654}
3655
3656/* Invalidate the varobjs that are tied to locals and re-create the ones that
3657 are defined on globals.
3658 Invalidated varobjs will be always printed in_scope="invalid". */
3659
3660void
3661varobj_invalidate (void)
3662{
3663 all_root_varobjs (varobj_invalidate_iter, NULL);
8756216b 3664}
This page took 1.683695 seconds and 4 git commands to generate.