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