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