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