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