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