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