* ppc-tdep.h (struct gdbarch_tdep): Remove ppc_ev31_regnum member.
[deliverable/binutils-gdb.git] / gdb / varobj.c
CommitLineData
8b93c638 1/* Implementation of the GDB variable objects API.
bc8332bb 2
9b254dd1 3 Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
1ecb4ee0 4 Free Software Foundation, Inc.
8b93c638
JM
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
a9762ec7 8 the Free Software Foundation; either version 3 of the License, or
8b93c638
JM
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
a9762ec7 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8b93c638
JM
18
19#include "defs.h"
a6c442d8 20#include "exceptions.h"
8b93c638
JM
21#include "value.h"
22#include "expression.h"
23#include "frame.h"
8b93c638
JM
24#include "language.h"
25#include "wrapper.h"
26#include "gdbcmd.h"
d2353924 27#include "block.h"
a6c442d8
MK
28
29#include "gdb_assert.h"
b66d6d2e 30#include "gdb_string.h"
8b93c638
JM
31
32#include "varobj.h"
28335dcc 33#include "vec.h"
8b93c638
JM
34
35/* Non-zero if we want to see trace of varobj level stuff. */
36
37int varobjdebug = 0;
920d2a44
AC
38static void
39show_varobjdebug (struct ui_file *file, int from_tty,
40 struct cmd_list_element *c, const char *value)
41{
42 fprintf_filtered (file, _("Varobj debugging is %s.\n"), value);
43}
8b93c638
JM
44
45/* String representations of gdb's format codes */
46char *varobj_format_string[] =
72330bd6 47 { "natural", "binary", "decimal", "hexadecimal", "octal" };
8b93c638
JM
48
49/* String representations of gdb's known languages */
72330bd6 50char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
8b93c638
JM
51
52/* Data structures */
53
54/* Every root variable has one of these structures saved in its
55 varobj. Members which must be free'd are noted. */
56struct varobj_root
72330bd6 57{
8b93c638 58
72330bd6
AC
59 /* Alloc'd expression for this parent. */
60 struct expression *exp;
8b93c638 61
72330bd6
AC
62 /* Block for which this expression is valid */
63 struct block *valid_block;
8b93c638 64
72330bd6 65 /* The frame for this expression */
e64d9b3d 66 struct frame_id frame;
8b93c638 67
72330bd6
AC
68 /* If 1, "update" always recomputes the frame & valid block
69 using the currently selected frame. */
70 int use_selected_frame;
73a93a32 71
8756216b
DP
72 /* Flag that indicates validity: set to 0 when this varobj_root refers
73 to symbols that do not exist anymore. */
74 int is_valid;
75
72330bd6
AC
76 /* Language info for this variable and its children */
77 struct language_specific *lang;
8b93c638 78
72330bd6
AC
79 /* The varobj for this root node. */
80 struct varobj *rootvar;
8b93c638 81
72330bd6
AC
82 /* Next root variable */
83 struct varobj_root *next;
84};
8b93c638
JM
85
86/* Every variable in the system has a structure of this type defined
87 for it. This structure holds all information necessary to manipulate
88 a particular object variable. Members which must be freed are noted. */
89struct varobj
72330bd6 90{
8b93c638 91
72330bd6
AC
92 /* Alloc'd name of the variable for this object.. If this variable is a
93 child, then this name will be the child's source name.
94 (bar, not foo.bar) */
95 /* NOTE: This is the "expression" */
96 char *name;
8b93c638 97
02142340
VP
98 /* Alloc'd expression for this child. Can be used to create a
99 root variable corresponding to this child. */
100 char *path_expr;
101
72330bd6
AC
102 /* The alloc'd name for this variable's object. This is here for
103 convenience when constructing this object's children. */
104 char *obj_name;
8b93c638 105
72330bd6
AC
106 /* Index of this variable in its parent or -1 */
107 int index;
8b93c638 108
202ddcaa
VP
109 /* The type of this variable. This can be NULL
110 for artifial variable objects -- currently, the "accessibility"
111 variable objects in C++. */
72330bd6 112 struct type *type;
8b93c638 113
b20d8971
VP
114 /* The value of this expression or subexpression. A NULL value
115 indicates there was an error getting this value.
b2c2bd75
VP
116 Invariant: if varobj_value_is_changeable_p (this) is non-zero,
117 the value is either NULL, or not lazy. */
30b28db1 118 struct value *value;
8b93c638 119
72330bd6
AC
120 /* The number of (immediate) children this variable has */
121 int num_children;
8b93c638 122
72330bd6
AC
123 /* If this object is a child, this points to its immediate parent. */
124 struct varobj *parent;
8b93c638 125
28335dcc
VP
126 /* Children of this object. */
127 VEC (varobj_p) *children;
8b93c638 128
72330bd6
AC
129 /* Description of the root variable. Points to root variable for children. */
130 struct varobj_root *root;
8b93c638 131
72330bd6
AC
132 /* The format of the output for this object */
133 enum varobj_display_formats format;
fb9b6b35
JJ
134
135 /* Was this variable updated via a varobj_set_value operation */
136 int updated;
85265413
NR
137
138 /* Last print value. */
139 char *print_value;
25d5ea92
VP
140
141 /* Is this variable frozen. Frozen variables are never implicitly
142 updated by -var-update *
143 or -var-update <direct-or-indirect-parent>. */
144 int frozen;
145
146 /* Is the value of this variable intentionally not fetched? It is
147 not fetched if either the variable is frozen, or any parents is
148 frozen. */
149 int not_fetched;
72330bd6 150};
8b93c638 151
8b93c638 152struct cpstack
72330bd6
AC
153{
154 char *name;
155 struct cpstack *next;
156};
8b93c638
JM
157
158/* A list of varobjs */
159
160struct vlist
72330bd6
AC
161{
162 struct varobj *var;
163 struct vlist *next;
164};
8b93c638
JM
165
166/* Private function prototypes */
167
168/* Helper functions for the above subcommands. */
169
a14ed312 170static int delete_variable (struct cpstack **, struct varobj *, int);
8b93c638 171
a14ed312
KB
172static void delete_variable_1 (struct cpstack **, int *,
173 struct varobj *, int, int);
8b93c638 174
a14ed312 175static int install_variable (struct varobj *);
8b93c638 176
a14ed312 177static void uninstall_variable (struct varobj *);
8b93c638 178
a14ed312 179static struct varobj *create_child (struct varobj *, int, char *);
8b93c638 180
8b93c638
JM
181/* Utility routines */
182
a14ed312 183static struct varobj *new_variable (void);
8b93c638 184
a14ed312 185static struct varobj *new_root_variable (void);
8b93c638 186
a14ed312 187static void free_variable (struct varobj *var);
8b93c638 188
74b7792f
AC
189static struct cleanup *make_cleanup_free_variable (struct varobj *var);
190
a14ed312 191static struct type *get_type (struct varobj *var);
8b93c638 192
6e2a9270
VP
193static struct type *get_value_type (struct varobj *var);
194
a14ed312 195static struct type *get_target_type (struct type *);
8b93c638 196
a14ed312 197static enum varobj_display_formats variable_default_display (struct varobj *);
8b93c638 198
a14ed312 199static void cppush (struct cpstack **pstack, char *name);
8b93c638 200
a14ed312 201static char *cppop (struct cpstack **pstack);
8b93c638 202
acd65feb
VP
203static int install_new_value (struct varobj *var, struct value *value,
204 int initial);
205
8b93c638
JM
206/* Language-specific routines. */
207
a14ed312 208static enum varobj_languages variable_language (struct varobj *var);
8b93c638 209
a14ed312 210static int number_of_children (struct varobj *);
8b93c638 211
a14ed312 212static char *name_of_variable (struct varobj *);
8b93c638 213
a14ed312 214static char *name_of_child (struct varobj *, int);
8b93c638 215
30b28db1 216static struct value *value_of_root (struct varobj **var_handle, int *);
8b93c638 217
30b28db1 218static struct value *value_of_child (struct varobj *parent, int index);
8b93c638 219
a14ed312 220static char *my_value_of_variable (struct varobj *var);
8b93c638 221
85265413
NR
222static char *value_get_print_value (struct value *value,
223 enum varobj_display_formats format);
224
b2c2bd75
VP
225static int varobj_value_is_changeable_p (struct varobj *var);
226
227static int is_root_p (struct varobj *var);
8b93c638
JM
228
229/* C implementation */
230
a14ed312 231static int c_number_of_children (struct varobj *var);
8b93c638 232
a14ed312 233static char *c_name_of_variable (struct varobj *parent);
8b93c638 234
a14ed312 235static char *c_name_of_child (struct varobj *parent, int index);
8b93c638 236
02142340
VP
237static char *c_path_expr_of_child (struct varobj *child);
238
30b28db1 239static struct value *c_value_of_root (struct varobj **var_handle);
8b93c638 240
30b28db1 241static struct value *c_value_of_child (struct varobj *parent, int index);
8b93c638 242
a14ed312 243static struct type *c_type_of_child (struct varobj *parent, int index);
8b93c638 244
a14ed312 245static char *c_value_of_variable (struct varobj *var);
8b93c638
JM
246
247/* C++ implementation */
248
a14ed312 249static int cplus_number_of_children (struct varobj *var);
8b93c638 250
a14ed312 251static void cplus_class_num_children (struct type *type, int children[3]);
8b93c638 252
a14ed312 253static char *cplus_name_of_variable (struct varobj *parent);
8b93c638 254
a14ed312 255static char *cplus_name_of_child (struct varobj *parent, int index);
8b93c638 256
02142340
VP
257static char *cplus_path_expr_of_child (struct varobj *child);
258
30b28db1 259static struct value *cplus_value_of_root (struct varobj **var_handle);
8b93c638 260
30b28db1 261static struct value *cplus_value_of_child (struct varobj *parent, int index);
8b93c638 262
a14ed312 263static struct type *cplus_type_of_child (struct varobj *parent, int index);
8b93c638 264
a14ed312 265static char *cplus_value_of_variable (struct varobj *var);
8b93c638
JM
266
267/* Java implementation */
268
a14ed312 269static int java_number_of_children (struct varobj *var);
8b93c638 270
a14ed312 271static char *java_name_of_variable (struct varobj *parent);
8b93c638 272
a14ed312 273static char *java_name_of_child (struct varobj *parent, int index);
8b93c638 274
02142340
VP
275static char *java_path_expr_of_child (struct varobj *child);
276
30b28db1 277static struct value *java_value_of_root (struct varobj **var_handle);
8b93c638 278
30b28db1 279static struct value *java_value_of_child (struct varobj *parent, int index);
8b93c638 280
a14ed312 281static struct type *java_type_of_child (struct varobj *parent, int index);
8b93c638 282
a14ed312 283static char *java_value_of_variable (struct varobj *var);
8b93c638
JM
284
285/* The language specific vector */
286
287struct language_specific
72330bd6 288{
8b93c638 289
72330bd6
AC
290 /* The language of this variable */
291 enum varobj_languages language;
8b93c638 292
72330bd6
AC
293 /* The number of children of PARENT. */
294 int (*number_of_children) (struct varobj * parent);
8b93c638 295
72330bd6
AC
296 /* The name (expression) of a root varobj. */
297 char *(*name_of_variable) (struct varobj * parent);
8b93c638 298
72330bd6
AC
299 /* The name of the INDEX'th child of PARENT. */
300 char *(*name_of_child) (struct varobj * parent, int index);
8b93c638 301
02142340
VP
302 /* Returns the rooted expression of CHILD, which is a variable
303 obtain that has some parent. */
304 char *(*path_expr_of_child) (struct varobj * child);
305
30b28db1
AC
306 /* The ``struct value *'' of the root variable ROOT. */
307 struct value *(*value_of_root) (struct varobj ** root_handle);
8b93c638 308
30b28db1
AC
309 /* The ``struct value *'' of the INDEX'th child of PARENT. */
310 struct value *(*value_of_child) (struct varobj * parent, int index);
8b93c638 311
72330bd6
AC
312 /* The type of the INDEX'th child of PARENT. */
313 struct type *(*type_of_child) (struct varobj * parent, int index);
8b93c638 314
72330bd6
AC
315 /* The current value of VAR. */
316 char *(*value_of_variable) (struct varobj * var);
317};
8b93c638
JM
318
319/* Array of known source language routines. */
d5d6fca5 320static struct language_specific languages[vlang_end] = {
8b93c638
JM
321 /* Unknown (try treating as C */
322 {
72330bd6
AC
323 vlang_unknown,
324 c_number_of_children,
325 c_name_of_variable,
326 c_name_of_child,
02142340 327 c_path_expr_of_child,
72330bd6
AC
328 c_value_of_root,
329 c_value_of_child,
330 c_type_of_child,
72330bd6 331 c_value_of_variable}
8b93c638
JM
332 ,
333 /* C */
334 {
72330bd6
AC
335 vlang_c,
336 c_number_of_children,
337 c_name_of_variable,
338 c_name_of_child,
02142340 339 c_path_expr_of_child,
72330bd6
AC
340 c_value_of_root,
341 c_value_of_child,
342 c_type_of_child,
72330bd6 343 c_value_of_variable}
8b93c638
JM
344 ,
345 /* C++ */
346 {
72330bd6
AC
347 vlang_cplus,
348 cplus_number_of_children,
349 cplus_name_of_variable,
350 cplus_name_of_child,
02142340 351 cplus_path_expr_of_child,
72330bd6
AC
352 cplus_value_of_root,
353 cplus_value_of_child,
354 cplus_type_of_child,
72330bd6 355 cplus_value_of_variable}
8b93c638
JM
356 ,
357 /* Java */
358 {
72330bd6
AC
359 vlang_java,
360 java_number_of_children,
361 java_name_of_variable,
362 java_name_of_child,
02142340 363 java_path_expr_of_child,
72330bd6
AC
364 java_value_of_root,
365 java_value_of_child,
366 java_type_of_child,
72330bd6 367 java_value_of_variable}
8b93c638
JM
368};
369
370/* A little convenience enum for dealing with C++/Java */
371enum vsections
72330bd6
AC
372{
373 v_public = 0, v_private, v_protected
374};
8b93c638
JM
375
376/* Private data */
377
378/* Mappings of varobj_display_formats enums to gdb's format codes */
72330bd6 379static int format_code[] = { 0, 't', 'd', 'x', 'o' };
8b93c638
JM
380
381/* Header of the list of root variable objects */
382static struct varobj_root *rootlist;
383static int rootcount = 0; /* number of root varobjs in the list */
384
385/* Prime number indicating the number of buckets in the hash table */
386/* A prime large enough to avoid too many colisions */
387#define VAROBJ_TABLE_SIZE 227
388
389/* Pointer to the varobj hash table (built at run time) */
390static struct vlist **varobj_table;
391
8b93c638
JM
392/* Is the variable X one of our "fake" children? */
393#define CPLUS_FAKE_CHILD(x) \
394((x) != NULL && (x)->type == NULL && (x)->value == NULL)
395\f
396
397/* API Implementation */
b2c2bd75
VP
398static int
399is_root_p (struct varobj *var)
400{
401 return (var->root->rootvar == var);
402}
8b93c638
JM
403
404/* Creates a varobj (not its children) */
405
7d8547c9
AC
406/* Return the full FRAME which corresponds to the given CORE_ADDR
407 or NULL if no FRAME on the chain corresponds to CORE_ADDR. */
408
409static struct frame_info *
410find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
411{
412 struct frame_info *frame = NULL;
413
414 if (frame_addr == (CORE_ADDR) 0)
415 return NULL;
416
417 while (1)
418 {
419 frame = get_prev_frame (frame);
420 if (frame == NULL)
421 return NULL;
eb5492fa 422 if (get_frame_base_address (frame) == frame_addr)
7d8547c9
AC
423 return frame;
424 }
425}
426
8b93c638
JM
427struct varobj *
428varobj_create (char *objname,
72330bd6 429 char *expression, CORE_ADDR frame, enum varobj_type type)
8b93c638
JM
430{
431 struct varobj *var;
2c67cb8b
AC
432 struct frame_info *fi;
433 struct frame_info *old_fi = NULL;
8b93c638
JM
434 struct block *block;
435 struct cleanup *old_chain;
436
437 /* Fill out a varobj structure for the (root) variable being constructed. */
438 var = new_root_variable ();
74b7792f 439 old_chain = make_cleanup_free_variable (var);
8b93c638
JM
440
441 if (expression != NULL)
442 {
443 char *p;
444 enum varobj_languages lang;
e55dccf0 445 struct value *value = NULL;
02142340 446 int expr_len;
8b93c638
JM
447
448 /* Parse and evaluate the expression, filling in as much
449 of the variable's data as possible */
450
451 /* Allow creator to specify context of variable */
72330bd6 452 if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
206415a3 453 fi = deprecated_safe_get_selected_frame ();
8b93c638 454 else
7d8547c9
AC
455 /* FIXME: cagney/2002-11-23: This code should be doing a
456 lookup using the frame ID and not just the frame's
457 ``address''. This, of course, means an interface change.
458 However, with out that interface change ISAs, such as the
459 ia64 with its two stacks, won't work. Similar goes for the
460 case where there is a frameless function. */
8b93c638
JM
461 fi = find_frame_addr_in_frame_chain (frame);
462
73a93a32
JI
463 /* frame = -2 means always use selected frame */
464 if (type == USE_SELECTED_FRAME)
465 var->root->use_selected_frame = 1;
466
8b93c638
JM
467 block = NULL;
468 if (fi != NULL)
ae767bfb 469 block = get_frame_block (fi, 0);
8b93c638
JM
470
471 p = expression;
472 innermost_block = NULL;
73a93a32
JI
473 /* Wrap the call to parse expression, so we can
474 return a sensible error. */
475 if (!gdb_parse_exp_1 (&p, block, 0, &var->root->exp))
476 {
477 return NULL;
478 }
8b93c638
JM
479
480 /* Don't allow variables to be created for types. */
481 if (var->root->exp->elts[0].opcode == OP_TYPE)
482 {
483 do_cleanups (old_chain);
bc8332bb
AC
484 fprintf_unfiltered (gdb_stderr, "Attempt to use a type name"
485 " as an expression.\n");
8b93c638
JM
486 return NULL;
487 }
488
489 var->format = variable_default_display (var);
490 var->root->valid_block = innermost_block;
02142340
VP
491 expr_len = strlen (expression);
492 var->name = savestring (expression, expr_len);
493 /* For a root var, the name and the expr are the same. */
494 var->path_expr = savestring (expression, expr_len);
8b93c638
JM
495
496 /* When the frame is different from the current frame,
497 we must select the appropriate frame before parsing
498 the expression, otherwise the value will not be current.
499 Since select_frame is so benign, just call it for all cases. */
500 if (fi != NULL)
501 {
7a424e99 502 var->root->frame = get_frame_id (fi);
206415a3 503 old_fi = get_selected_frame (NULL);
0f7d239c 504 select_frame (fi);
8b93c638
JM
505 }
506
340a7723 507 /* We definitely need to catch errors here.
8b93c638
JM
508 If evaluate_expression succeeds we got the value we wanted.
509 But if it fails, we still go on with a call to evaluate_type() */
acd65feb 510 if (!gdb_evaluate_expression (var->root->exp, &value))
e55dccf0
VP
511 {
512 /* Error getting the value. Try to at least get the
513 right type. */
514 struct value *type_only_value = evaluate_type (var->root->exp);
515 var->type = value_type (type_only_value);
516 }
517 else
518 var->type = value_type (value);
acd65feb 519
acd65feb 520 install_new_value (var, value, 1 /* Initial assignment */);
8b93c638
JM
521
522 /* Set language info */
523 lang = variable_language (var);
d5d6fca5 524 var->root->lang = &languages[lang];
8b93c638
JM
525
526 /* Set ourselves as our root */
527 var->root->rootvar = var;
528
529 /* Reset the selected frame */
530 if (fi != NULL)
0f7d239c 531 select_frame (old_fi);
8b93c638
JM
532 }
533
73a93a32
JI
534 /* If the variable object name is null, that means this
535 is a temporary variable, so don't install it. */
536
537 if ((var != NULL) && (objname != NULL))
8b93c638
JM
538 {
539 var->obj_name = savestring (objname, strlen (objname));
540
541 /* If a varobj name is duplicated, the install will fail so
542 we must clenup */
543 if (!install_variable (var))
544 {
545 do_cleanups (old_chain);
546 return NULL;
547 }
548 }
549
550 discard_cleanups (old_chain);
551 return var;
552}
553
554/* Generates an unique name that can be used for a varobj */
555
556char *
557varobj_gen_name (void)
558{
559 static int id = 0;
e64d9b3d 560 char *obj_name;
8b93c638
JM
561
562 /* generate a name for this object */
563 id++;
b435e160 564 obj_name = xstrprintf ("var%d", id);
8b93c638 565
e64d9b3d 566 return obj_name;
8b93c638
JM
567}
568
569/* Given an "objname", returns the pointer to the corresponding varobj
570 or NULL if not found */
571
572struct varobj *
573varobj_get_handle (char *objname)
574{
575 struct vlist *cv;
576 const char *chp;
577 unsigned int index = 0;
578 unsigned int i = 1;
579
580 for (chp = objname; *chp; chp++)
581 {
582 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
583 }
584
585 cv = *(varobj_table + index);
586 while ((cv != NULL) && (strcmp (cv->var->obj_name, objname) != 0))
587 cv = cv->next;
588
589 if (cv == NULL)
8a3fe4f8 590 error (_("Variable object not found"));
8b93c638
JM
591
592 return cv->var;
593}
594
595/* Given the handle, return the name of the object */
596
597char *
598varobj_get_objname (struct varobj *var)
599{
600 return var->obj_name;
601}
602
603/* Given the handle, return the expression represented by the object */
604
605char *
606varobj_get_expression (struct varobj *var)
607{
608 return name_of_variable (var);
609}
610
611/* Deletes a varobj and all its children if only_children == 0,
612 otherwise deletes only the children; returns a malloc'ed list of all the
613 (malloc'ed) names of the variables that have been deleted (NULL terminated) */
614
615int
616varobj_delete (struct varobj *var, char ***dellist, int only_children)
617{
618 int delcount;
619 int mycount;
620 struct cpstack *result = NULL;
621 char **cp;
622
623 /* Initialize a stack for temporary results */
624 cppush (&result, NULL);
625
626 if (only_children)
627 /* Delete only the variable children */
628 delcount = delete_variable (&result, var, 1 /* only the children */ );
629 else
630 /* Delete the variable and all its children */
631 delcount = delete_variable (&result, var, 0 /* parent+children */ );
632
633 /* We may have been asked to return a list of what has been deleted */
634 if (dellist != NULL)
635 {
636 *dellist = xmalloc ((delcount + 1) * sizeof (char *));
637
638 cp = *dellist;
639 mycount = delcount;
640 *cp = cppop (&result);
641 while ((*cp != NULL) && (mycount > 0))
642 {
643 mycount--;
644 cp++;
645 *cp = cppop (&result);
646 }
647
648 if (mycount || (*cp != NULL))
8a3fe4f8 649 warning (_("varobj_delete: assertion failed - mycount(=%d) <> 0"),
72330bd6 650 mycount);
8b93c638
JM
651 }
652
653 return delcount;
654}
655
656/* Set/Get variable object display format */
657
658enum varobj_display_formats
659varobj_set_display_format (struct varobj *var,
660 enum varobj_display_formats format)
661{
662 switch (format)
663 {
664 case FORMAT_NATURAL:
665 case FORMAT_BINARY:
666 case FORMAT_DECIMAL:
667 case FORMAT_HEXADECIMAL:
668 case FORMAT_OCTAL:
669 var->format = format;
670 break;
671
672 default:
673 var->format = variable_default_display (var);
674 }
675
676 return var->format;
677}
678
679enum varobj_display_formats
680varobj_get_display_format (struct varobj *var)
681{
682 return var->format;
683}
684
25d5ea92
VP
685void
686varobj_set_frozen (struct varobj *var, int frozen)
687{
688 /* When a variable is unfrozen, we don't fetch its value.
689 The 'not_fetched' flag remains set, so next -var-update
690 won't complain.
691
692 We don't fetch the value, because for structures the client
693 should do -var-update anyway. It would be bad to have different
694 client-size logic for structure and other types. */
695 var->frozen = frozen;
696}
697
698int
699varobj_get_frozen (struct varobj *var)
700{
701 return var->frozen;
702}
703
704
8b93c638
JM
705int
706varobj_get_num_children (struct varobj *var)
707{
708 if (var->num_children == -1)
709 var->num_children = number_of_children (var);
710
711 return var->num_children;
712}
713
714/* Creates a list of the immediate children of a variable object;
715 the return code is the number of such children or -1 on error */
716
d56d46f5
VP
717VEC (varobj_p)*
718varobj_list_children (struct varobj *var)
8b93c638
JM
719{
720 struct varobj *child;
721 char *name;
722 int i;
723
8b93c638
JM
724 if (var->num_children == -1)
725 var->num_children = number_of_children (var);
726
74a44383
DJ
727 /* If that failed, give up. */
728 if (var->num_children == -1)
d56d46f5 729 return var->children;
74a44383 730
28335dcc
VP
731 /* If we're called when the list of children is not yet initialized,
732 allocate enough elements in it. */
733 while (VEC_length (varobj_p, var->children) < var->num_children)
734 VEC_safe_push (varobj_p, var->children, NULL);
735
8b93c638
JM
736 for (i = 0; i < var->num_children; i++)
737 {
d56d46f5 738 varobj_p existing = VEC_index (varobj_p, var->children, i);
28335dcc
VP
739
740 if (existing == NULL)
741 {
742 /* Either it's the first call to varobj_list_children for
743 this variable object, and the child was never created,
744 or it was explicitly deleted by the client. */
745 name = name_of_child (var, i);
746 existing = create_child (var, i, name);
747 VEC_replace (varobj_p, var->children, i, existing);
748 }
8b93c638
JM
749 }
750
d56d46f5 751 return var->children;
8b93c638
JM
752}
753
754/* Obtain the type of an object Variable as a string similar to the one gdb
755 prints on the console */
756
757char *
758varobj_get_type (struct varobj *var)
759{
30b28db1 760 struct value *val;
8b93c638
JM
761 struct cleanup *old_chain;
762 struct ui_file *stb;
763 char *thetype;
764 long length;
765
766 /* For the "fake" variables, do not return a type. (It's type is
8756216b
DP
767 NULL, too.)
768 Do not return a type for invalid variables as well. */
769 if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
8b93c638
JM
770 return NULL;
771
772 stb = mem_fileopen ();
773 old_chain = make_cleanup_ui_file_delete (stb);
774
30b28db1 775 /* To print the type, we simply create a zero ``struct value *'' and
8b93c638
JM
776 cast it to our type. We then typeprint this variable. */
777 val = value_zero (var->type, not_lval);
df407dfe 778 type_print (value_type (val), "", stb, -1);
8b93c638
JM
779
780 thetype = ui_file_xstrdup (stb, &length);
781 do_cleanups (old_chain);
782 return thetype;
783}
784
1ecb4ee0
DJ
785/* Obtain the type of an object variable. */
786
787struct type *
788varobj_get_gdb_type (struct varobj *var)
789{
790 return var->type;
791}
792
02142340
VP
793/* Return a pointer to the full rooted expression of varobj VAR.
794 If it has not been computed yet, compute it. */
795char *
796varobj_get_path_expr (struct varobj *var)
797{
798 if (var->path_expr != NULL)
799 return var->path_expr;
800 else
801 {
802 /* For root varobjs, we initialize path_expr
803 when creating varobj, so here it should be
804 child varobj. */
805 gdb_assert (!is_root_p (var));
806 return (*var->root->lang->path_expr_of_child) (var);
807 }
808}
809
8b93c638
JM
810enum varobj_languages
811varobj_get_language (struct varobj *var)
812{
813 return variable_language (var);
814}
815
816int
817varobj_get_attributes (struct varobj *var)
818{
819 int attributes = 0;
820
340a7723 821 if (varobj_editable_p (var))
8b93c638
JM
822 /* FIXME: define masks for attributes */
823 attributes |= 0x00000001; /* Editable */
824
825 return attributes;
826}
827
828char *
829varobj_get_value (struct varobj *var)
830{
831 return my_value_of_variable (var);
832}
833
834/* Set the value of an object variable (if it is editable) to the
835 value of the given expression */
836/* Note: Invokes functions that can call error() */
837
838int
839varobj_set_value (struct varobj *var, char *expression)
840{
30b28db1 841 struct value *val;
8b93c638 842 int offset = 0;
a6c442d8 843 int error = 0;
8b93c638
JM
844
845 /* The argument "expression" contains the variable's new value.
846 We need to first construct a legal expression for this -- ugh! */
847 /* Does this cover all the bases? */
848 struct expression *exp;
30b28db1 849 struct value *value;
8b93c638 850 int saved_input_radix = input_radix;
340a7723
NR
851 char *s = expression;
852 int i;
8b93c638 853
340a7723 854 gdb_assert (varobj_editable_p (var));
8b93c638 855
340a7723
NR
856 input_radix = 10; /* ALWAYS reset to decimal temporarily */
857 exp = parse_exp_1 (&s, 0, 0);
858 if (!gdb_evaluate_expression (exp, &value))
859 {
860 /* We cannot proceed without a valid expression. */
861 xfree (exp);
862 return 0;
8b93c638
JM
863 }
864
340a7723
NR
865 /* All types that are editable must also be changeable. */
866 gdb_assert (varobj_value_is_changeable_p (var));
867
868 /* The value of a changeable variable object must not be lazy. */
869 gdb_assert (!value_lazy (var->value));
870
871 /* Need to coerce the input. We want to check if the
872 value of the variable object will be different
873 after assignment, and the first thing value_assign
874 does is coerce the input.
875 For example, if we are assigning an array to a pointer variable we
876 should compare the pointer with the the array's address, not with the
877 array's content. */
878 value = coerce_array (value);
879
880 /* The new value may be lazy. gdb_value_assign, or
881 rather value_contents, will take care of this.
882 If fetching of the new value will fail, gdb_value_assign
883 with catch the exception. */
884 if (!gdb_value_assign (var->value, value, &val))
885 return 0;
886
887 /* If the value has changed, record it, so that next -var-update can
888 report this change. If a variable had a value of '1', we've set it
889 to '333' and then set again to '1', when -var-update will report this
890 variable as changed -- because the first assignment has set the
891 'updated' flag. There's no need to optimize that, because return value
892 of -var-update should be considered an approximation. */
893 var->updated = install_new_value (var, val, 0 /* Compare values. */);
894 input_radix = saved_input_radix;
895 return 1;
8b93c638
JM
896}
897
898/* Returns a malloc'ed list with all root variable objects */
899int
900varobj_list (struct varobj ***varlist)
901{
902 struct varobj **cv;
903 struct varobj_root *croot;
904 int mycount = rootcount;
905
906 /* Alloc (rootcount + 1) entries for the result */
907 *varlist = xmalloc ((rootcount + 1) * sizeof (struct varobj *));
908
909 cv = *varlist;
910 croot = rootlist;
911 while ((croot != NULL) && (mycount > 0))
912 {
913 *cv = croot->rootvar;
914 mycount--;
915 cv++;
916 croot = croot->next;
917 }
918 /* Mark the end of the list */
919 *cv = NULL;
920
921 if (mycount || (croot != NULL))
72330bd6
AC
922 warning
923 ("varobj_list: assertion failed - wrong tally of root vars (%d:%d)",
924 rootcount, mycount);
8b93c638
JM
925
926 return rootcount;
927}
928
acd65feb
VP
929/* Assign a new value to a variable object. If INITIAL is non-zero,
930 this is the first assignement after the variable object was just
931 created, or changed type. In that case, just assign the value
932 and return 0.
933 Otherwise, assign the value and if type_changeable returns non-zero,
934 find if the new value is different from the current value.
b26ed50d
VP
935 Return 1 if so, and 0 if the values are equal.
936
937 The VALUE parameter should not be released -- the function will
938 take care of releasing it when needed. */
acd65feb
VP
939static int
940install_new_value (struct varobj *var, struct value *value, int initial)
941{
942 int changeable;
943 int need_to_fetch;
944 int changed = 0;
25d5ea92 945 int intentionally_not_fetched = 0;
7a4d50bf 946 char *print_value = NULL;
acd65feb 947
acd65feb
VP
948 /* We need to know the varobj's type to decide if the value should
949 be fetched or not. C++ fake children (public/protected/private) don't have
950 a type. */
951 gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
b2c2bd75 952 changeable = varobj_value_is_changeable_p (var);
acd65feb
VP
953 need_to_fetch = changeable;
954
b26ed50d
VP
955 /* We are not interested in the address of references, and given
956 that in C++ a reference is not rebindable, it cannot
957 meaningfully change. So, get hold of the real value. */
958 if (value)
959 {
960 value = coerce_ref (value);
961 release_value (value);
962 }
963
acd65feb
VP
964 if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
965 /* For unions, we need to fetch the value implicitly because
966 of implementation of union member fetch. When gdb
967 creates a value for a field and the value of the enclosing
968 structure is not lazy, it immediately copies the necessary
969 bytes from the enclosing values. If the enclosing value is
970 lazy, the call to value_fetch_lazy on the field will read
971 the data from memory. For unions, that means we'll read the
972 same memory more than once, which is not desirable. So
973 fetch now. */
974 need_to_fetch = 1;
975
976 /* The new value might be lazy. If the type is changeable,
977 that is we'll be comparing values of this type, fetch the
978 value now. Otherwise, on the next update the old value
979 will be lazy, which means we've lost that old value. */
980 if (need_to_fetch && value && value_lazy (value))
981 {
25d5ea92
VP
982 struct varobj *parent = var->parent;
983 int frozen = var->frozen;
984 for (; !frozen && parent; parent = parent->parent)
985 frozen |= parent->frozen;
986
987 if (frozen && initial)
988 {
989 /* For variables that are frozen, or are children of frozen
990 variables, we don't do fetch on initial assignment.
991 For non-initial assignemnt we do the fetch, since it means we're
992 explicitly asked to compare the new value with the old one. */
993 intentionally_not_fetched = 1;
994 }
995 else if (!gdb_value_fetch_lazy (value))
acd65feb 996 {
acd65feb
VP
997 /* Set the value to NULL, so that for the next -var-update,
998 we don't try to compare the new value with this value,
999 that we couldn't even read. */
1000 value = NULL;
1001 }
acd65feb
VP
1002 }
1003
7a4d50bf
VP
1004 /* Below, we'll be comparing string rendering of old and new
1005 values. Don't get string rendering if the value is
1006 lazy -- if it is, the code above has decided that the value
1007 should not be fetched. */
1008 if (value && !value_lazy (value))
1009 print_value = value_get_print_value (value, var->format);
1010
acd65feb
VP
1011 /* If the type is changeable, compare the old and the new values.
1012 If this is the initial assignment, we don't have any old value
1013 to compare with. */
7a4d50bf 1014 if (!initial && changeable)
acd65feb
VP
1015 {
1016 /* If the value of the varobj was changed by -var-set-value, then the
1017 value in the varobj and in the target is the same. However, that value
1018 is different from the value that the varobj had after the previous
57e66780 1019 -var-update. So need to the varobj as changed. */
acd65feb 1020 if (var->updated)
57e66780 1021 {
57e66780
DJ
1022 changed = 1;
1023 }
acd65feb
VP
1024 else
1025 {
1026 /* Try to compare the values. That requires that both
1027 values are non-lazy. */
25d5ea92
VP
1028 if (var->not_fetched && value_lazy (var->value))
1029 {
1030 /* This is a frozen varobj and the value was never read.
1031 Presumably, UI shows some "never read" indicator.
1032 Now that we've fetched the real value, we need to report
1033 this varobj as changed so that UI can show the real
1034 value. */
1035 changed = 1;
1036 }
1037 else if (var->value == NULL && value == NULL)
acd65feb
VP
1038 /* Equal. */
1039 ;
1040 else if (var->value == NULL || value == NULL)
57e66780 1041 {
57e66780
DJ
1042 changed = 1;
1043 }
acd65feb
VP
1044 else
1045 {
1046 gdb_assert (!value_lazy (var->value));
1047 gdb_assert (!value_lazy (value));
85265413 1048
57e66780 1049 gdb_assert (var->print_value != NULL && print_value != NULL);
85265413 1050 if (strcmp (var->print_value, print_value) != 0)
7a4d50bf 1051 changed = 1;
acd65feb
VP
1052 }
1053 }
1054 }
85265413 1055
acd65feb 1056 /* We must always keep the new value, since children depend on it. */
25d5ea92 1057 if (var->value != NULL && var->value != value)
acd65feb
VP
1058 value_free (var->value);
1059 var->value = value;
7a4d50bf
VP
1060 if (var->print_value)
1061 xfree (var->print_value);
1062 var->print_value = print_value;
25d5ea92
VP
1063 if (value && value_lazy (value) && intentionally_not_fetched)
1064 var->not_fetched = 1;
1065 else
1066 var->not_fetched = 0;
acd65feb 1067 var->updated = 0;
85265413 1068
b26ed50d 1069 gdb_assert (!var->value || value_type (var->value));
acd65feb
VP
1070
1071 return changed;
1072}
acd65feb 1073
8b93c638
JM
1074/* Update the values for a variable and its children. This is a
1075 two-pronged attack. First, re-parse the value for the root's
1076 expression to see if it's changed. Then go all the way
1077 through its children, reconstructing them and noting if they've
1078 changed.
8756216b
DP
1079 Return value:
1080 < 0 for error values, see varobj.h.
1081 Otherwise it is the number of children + parent changed.
8b93c638 1082
25d5ea92
VP
1083 The EXPLICIT parameter specifies if this call is result
1084 of MI request to update this specific variable, or
1085 result of implicit -var-update *. For implicit request, we don't
1086 update frozen variables.
705da579
KS
1087
1088 NOTE: This function may delete the caller's varobj. If it
8756216b
DP
1089 returns TYPE_CHANGED, then it has done this and VARP will be modified
1090 to point to the new varobj. */
8b93c638
JM
1091
1092int
25d5ea92
VP
1093varobj_update (struct varobj **varp, struct varobj ***changelist,
1094 int explicit)
8b93c638
JM
1095{
1096 int changed = 0;
25d5ea92 1097 int type_changed = 0;
8b93c638
JM
1098 int i;
1099 int vleft;
8b93c638
JM
1100 struct varobj *v;
1101 struct varobj **cv;
2c67cb8b 1102 struct varobj **templist = NULL;
30b28db1 1103 struct value *new;
28335dcc
VP
1104 VEC (varobj_p) *stack = NULL;
1105 VEC (varobj_p) *result = NULL;
e64d9b3d
MH
1106 struct frame_id old_fid;
1107 struct frame_info *fi;
8b93c638 1108
8756216b 1109 /* sanity check: have we been passed a pointer? */
a1f42e84 1110 gdb_assert (changelist);
8b93c638 1111
25d5ea92
VP
1112 /* Frozen means frozen -- we don't check for any change in
1113 this varobj, including its going out of scope, or
1114 changing type. One use case for frozen varobjs is
1115 retaining previously evaluated expressions, and we don't
1116 want them to be reevaluated at all. */
1117 if (!explicit && (*varp)->frozen)
1118 return 0;
8756216b
DP
1119
1120 if (!(*varp)->root->is_valid)
1121 return INVALID;
8b93c638 1122
25d5ea92 1123 if ((*varp)->root->rootvar == *varp)
ae093f96 1124 {
25d5ea92
VP
1125 /* Save the selected stack frame, since we will need to change it
1126 in order to evaluate expressions. */
1127 old_fid = get_frame_id (deprecated_safe_get_selected_frame ());
1128
1129 /* Update the root variable. value_of_root can return NULL
1130 if the variable is no longer around, i.e. we stepped out of
1131 the frame in which a local existed. We are letting the
1132 value_of_root variable dispose of the varobj if the type
1133 has changed. */
1134 type_changed = 1;
1135 new = value_of_root (varp, &type_changed);
1136
1137 /* Restore selected frame. */
1138 fi = frame_find_by_id (old_fid);
1139 if (fi)
1140 select_frame (fi);
1141
1142 /* If this is a "use_selected_frame" varobj, and its type has changed,
1143 them note that it's changed. */
1144 if (type_changed)
1145 VEC_safe_push (varobj_p, result, *varp);
1146
1147 if (install_new_value ((*varp), new, type_changed))
1148 {
1149 /* If type_changed is 1, install_new_value will never return
1150 non-zero, so we'll never report the same variable twice. */
1151 gdb_assert (!type_changed);
1152 VEC_safe_push (varobj_p, result, *varp);
1153 }
8b93c638 1154
25d5ea92
VP
1155 if (new == NULL)
1156 {
1157 /* This means the varobj itself is out of scope.
1158 Report it. */
1159 VEC_free (varobj_p, result);
1160 return NOT_IN_SCOPE;
1161 }
b20d8971
VP
1162 }
1163
28335dcc 1164 VEC_safe_push (varobj_p, stack, *varp);
8b93c638 1165
8756216b 1166 /* Walk through the children, reconstructing them all. */
28335dcc 1167 while (!VEC_empty (varobj_p, stack))
8b93c638 1168 {
28335dcc
VP
1169 v = VEC_pop (varobj_p, stack);
1170
1171 /* Push any children. Use reverse order so that the first
1172 child is popped from the work stack first, and so
1173 will be added to result first. This does not
1174 affect correctness, just "nicer". */
1175 for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
8b93c638 1176 {
28335dcc
VP
1177 varobj_p c = VEC_index (varobj_p, v->children, i);
1178 /* Child may be NULL if explicitly deleted by -var-delete. */
25d5ea92 1179 if (c != NULL && !c->frozen)
28335dcc 1180 VEC_safe_push (varobj_p, stack, c);
8b93c638
JM
1181 }
1182
28335dcc
VP
1183 /* Update this variable, unless it's a root, which is already
1184 updated. */
25d5ea92 1185 if (v->root->rootvar != v)
28335dcc
VP
1186 {
1187 new = value_of_child (v->parent, v->index);
1188 if (install_new_value (v, new, 0 /* type not changed */))
1189 {
1190 /* Note that it's changed */
1191 VEC_safe_push (varobj_p, result, v);
1192 v->updated = 0;
1193 }
8b93c638 1194 }
8b93c638
JM
1195 }
1196
8756216b 1197 /* Alloc (changed + 1) list entries. */
28335dcc 1198 changed = VEC_length (varobj_p, result);
8b93c638 1199 *changelist = xmalloc ((changed + 1) * sizeof (struct varobj *));
28335dcc 1200 cv = *changelist;
8b93c638 1201
28335dcc 1202 for (i = 0; i < changed; ++i)
8b93c638 1203 {
28335dcc
VP
1204 *cv = VEC_index (varobj_p, result, i);
1205 gdb_assert (*cv != NULL);
1206 ++cv;
8b93c638 1207 }
28335dcc 1208 *cv = 0;
8b93c638 1209
93b979d6
NR
1210 VEC_free (varobj_p, stack);
1211 VEC_free (varobj_p, result);
1212
73a93a32 1213 if (type_changed)
8756216b 1214 return TYPE_CHANGED;
73a93a32
JI
1215 else
1216 return changed;
8b93c638
JM
1217}
1218\f
1219
1220/* Helper functions */
1221
1222/*
1223 * Variable object construction/destruction
1224 */
1225
1226static int
fba45db2
KB
1227delete_variable (struct cpstack **resultp, struct varobj *var,
1228 int only_children_p)
8b93c638
JM
1229{
1230 int delcount = 0;
1231
1232 delete_variable_1 (resultp, &delcount, var,
1233 only_children_p, 1 /* remove_from_parent_p */ );
1234
1235 return delcount;
1236}
1237
1238/* Delete the variable object VAR and its children */
1239/* IMPORTANT NOTE: If we delete a variable which is a child
1240 and the parent is not removed we dump core. It must be always
1241 initially called with remove_from_parent_p set */
1242static void
72330bd6
AC
1243delete_variable_1 (struct cpstack **resultp, int *delcountp,
1244 struct varobj *var, int only_children_p,
1245 int remove_from_parent_p)
8b93c638 1246{
28335dcc 1247 int i;
8b93c638
JM
1248
1249 /* Delete any children of this variable, too. */
28335dcc
VP
1250 for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
1251 {
1252 varobj_p child = VEC_index (varobj_p, var->children, i);
214270ab
VP
1253 if (!child)
1254 continue;
8b93c638 1255 if (!remove_from_parent_p)
28335dcc
VP
1256 child->parent = NULL;
1257 delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
8b93c638 1258 }
28335dcc 1259 VEC_free (varobj_p, var->children);
8b93c638
JM
1260
1261 /* if we were called to delete only the children we are done here */
1262 if (only_children_p)
1263 return;
1264
1265 /* Otherwise, add it to the list of deleted ones and proceed to do so */
73a93a32
JI
1266 /* If the name is null, this is a temporary variable, that has not
1267 yet been installed, don't report it, it belongs to the caller... */
1268 if (var->obj_name != NULL)
8b93c638 1269 {
5b616ba1 1270 cppush (resultp, xstrdup (var->obj_name));
8b93c638
JM
1271 *delcountp = *delcountp + 1;
1272 }
1273
1274 /* If this variable has a parent, remove it from its parent's list */
1275 /* OPTIMIZATION: if the parent of this variable is also being deleted,
1276 (as indicated by remove_from_parent_p) we don't bother doing an
1277 expensive list search to find the element to remove when we are
1278 discarding the list afterwards */
72330bd6 1279 if ((remove_from_parent_p) && (var->parent != NULL))
8b93c638 1280 {
28335dcc 1281 VEC_replace (varobj_p, var->parent->children, var->index, NULL);
8b93c638 1282 }
72330bd6 1283
73a93a32
JI
1284 if (var->obj_name != NULL)
1285 uninstall_variable (var);
8b93c638
JM
1286
1287 /* Free memory associated with this variable */
1288 free_variable (var);
1289}
1290
1291/* Install the given variable VAR with the object name VAR->OBJ_NAME. */
1292static int
fba45db2 1293install_variable (struct varobj *var)
8b93c638
JM
1294{
1295 struct vlist *cv;
1296 struct vlist *newvl;
1297 const char *chp;
1298 unsigned int index = 0;
1299 unsigned int i = 1;
1300
1301 for (chp = var->obj_name; *chp; chp++)
1302 {
1303 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1304 }
1305
1306 cv = *(varobj_table + index);
1307 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1308 cv = cv->next;
1309
1310 if (cv != NULL)
8a3fe4f8 1311 error (_("Duplicate variable object name"));
8b93c638
JM
1312
1313 /* Add varobj to hash table */
1314 newvl = xmalloc (sizeof (struct vlist));
1315 newvl->next = *(varobj_table + index);
1316 newvl->var = var;
1317 *(varobj_table + index) = newvl;
1318
1319 /* If root, add varobj to root list */
b2c2bd75 1320 if (is_root_p (var))
8b93c638
JM
1321 {
1322 /* Add to list of root variables */
1323 if (rootlist == NULL)
1324 var->root->next = NULL;
1325 else
1326 var->root->next = rootlist;
1327 rootlist = var->root;
1328 rootcount++;
1329 }
1330
1331 return 1; /* OK */
1332}
1333
1334/* Unistall the object VAR. */
1335static void
fba45db2 1336uninstall_variable (struct varobj *var)
8b93c638
JM
1337{
1338 struct vlist *cv;
1339 struct vlist *prev;
1340 struct varobj_root *cr;
1341 struct varobj_root *prer;
1342 const char *chp;
1343 unsigned int index = 0;
1344 unsigned int i = 1;
1345
1346 /* Remove varobj from hash table */
1347 for (chp = var->obj_name; *chp; chp++)
1348 {
1349 index = (index + (i++ * (unsigned int) *chp)) % VAROBJ_TABLE_SIZE;
1350 }
1351
1352 cv = *(varobj_table + index);
1353 prev = NULL;
1354 while ((cv != NULL) && (strcmp (cv->var->obj_name, var->obj_name) != 0))
1355 {
1356 prev = cv;
1357 cv = cv->next;
1358 }
1359
1360 if (varobjdebug)
1361 fprintf_unfiltered (gdb_stdlog, "Deleting %s\n", var->obj_name);
1362
1363 if (cv == NULL)
1364 {
72330bd6
AC
1365 warning
1366 ("Assertion failed: Could not find variable object \"%s\" to delete",
1367 var->obj_name);
8b93c638
JM
1368 return;
1369 }
1370
1371 if (prev == NULL)
1372 *(varobj_table + index) = cv->next;
1373 else
1374 prev->next = cv->next;
1375
b8c9b27d 1376 xfree (cv);
8b93c638
JM
1377
1378 /* If root, remove varobj from root list */
b2c2bd75 1379 if (is_root_p (var))
8b93c638
JM
1380 {
1381 /* Remove from list of root variables */
1382 if (rootlist == var->root)
1383 rootlist = var->root->next;
1384 else
1385 {
1386 prer = NULL;
1387 cr = rootlist;
1388 while ((cr != NULL) && (cr->rootvar != var))
1389 {
1390 prer = cr;
1391 cr = cr->next;
1392 }
1393 if (cr == NULL)
1394 {
72330bd6
AC
1395 warning
1396 ("Assertion failed: Could not find varobj \"%s\" in root list",
1397 var->obj_name);
8b93c638
JM
1398 return;
1399 }
1400 if (prer == NULL)
1401 rootlist = NULL;
1402 else
1403 prer->next = cr->next;
1404 }
1405 rootcount--;
1406 }
1407
1408}
1409
8b93c638
JM
1410/* Create and install a child of the parent of the given name */
1411static struct varobj *
fba45db2 1412create_child (struct varobj *parent, int index, char *name)
8b93c638
JM
1413{
1414 struct varobj *child;
1415 char *childs_name;
acd65feb 1416 struct value *value;
8b93c638
JM
1417
1418 child = new_variable ();
1419
1420 /* name is allocated by name_of_child */
1421 child->name = name;
1422 child->index = index;
acd65feb 1423 value = value_of_child (parent, index);
8b93c638
JM
1424 child->parent = parent;
1425 child->root = parent->root;
b435e160 1426 childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
8b93c638
JM
1427 child->obj_name = childs_name;
1428 install_variable (child);
1429
acd65feb
VP
1430 /* Compute the type of the child. Must do this before
1431 calling install_new_value. */
1432 if (value != NULL)
1433 /* If the child had no evaluation errors, var->value
1434 will be non-NULL and contain a valid type. */
1435 child->type = value_type (value);
1436 else
1437 /* Otherwise, we must compute the type. */
1438 child->type = (*child->root->lang->type_of_child) (child->parent,
1439 child->index);
1440 install_new_value (child, value, 1);
1441
8b93c638
JM
1442 return child;
1443}
8b93c638
JM
1444\f
1445
1446/*
1447 * Miscellaneous utility functions.
1448 */
1449
1450/* Allocate memory and initialize a new variable */
1451static struct varobj *
1452new_variable (void)
1453{
1454 struct varobj *var;
1455
1456 var = (struct varobj *) xmalloc (sizeof (struct varobj));
1457 var->name = NULL;
02142340 1458 var->path_expr = NULL;
8b93c638
JM
1459 var->obj_name = NULL;
1460 var->index = -1;
1461 var->type = NULL;
1462 var->value = NULL;
8b93c638
JM
1463 var->num_children = -1;
1464 var->parent = NULL;
1465 var->children = NULL;
1466 var->format = 0;
1467 var->root = NULL;
fb9b6b35 1468 var->updated = 0;
85265413 1469 var->print_value = NULL;
25d5ea92
VP
1470 var->frozen = 0;
1471 var->not_fetched = 0;
8b93c638
JM
1472
1473 return var;
1474}
1475
1476/* Allocate memory and initialize a new root variable */
1477static struct varobj *
1478new_root_variable (void)
1479{
1480 struct varobj *var = new_variable ();
1481 var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));;
1482 var->root->lang = NULL;
1483 var->root->exp = NULL;
1484 var->root->valid_block = NULL;
7a424e99 1485 var->root->frame = null_frame_id;
73a93a32 1486 var->root->use_selected_frame = 0;
8b93c638 1487 var->root->rootvar = NULL;
8756216b 1488 var->root->is_valid = 1;
8b93c638
JM
1489
1490 return var;
1491}
1492
1493/* Free any allocated memory associated with VAR. */
1494static void
fba45db2 1495free_variable (struct varobj *var)
8b93c638
JM
1496{
1497 /* Free the expression if this is a root variable. */
b2c2bd75 1498 if (is_root_p (var))
8b93c638 1499 {
96c1eda2 1500 free_current_contents (&var->root->exp);
8038e1e2 1501 xfree (var->root);
8b93c638
JM
1502 }
1503
8038e1e2
AC
1504 xfree (var->name);
1505 xfree (var->obj_name);
85265413 1506 xfree (var->print_value);
02142340 1507 xfree (var->path_expr);
8038e1e2 1508 xfree (var);
8b93c638
JM
1509}
1510
74b7792f
AC
1511static void
1512do_free_variable_cleanup (void *var)
1513{
1514 free_variable (var);
1515}
1516
1517static struct cleanup *
1518make_cleanup_free_variable (struct varobj *var)
1519{
1520 return make_cleanup (do_free_variable_cleanup, var);
1521}
1522
6766a268
DJ
1523/* This returns the type of the variable. It also skips past typedefs
1524 to return the real type of the variable.
94b66fa7
KS
1525
1526 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1527 except within get_target_type and get_type. */
8b93c638 1528static struct type *
fba45db2 1529get_type (struct varobj *var)
8b93c638
JM
1530{
1531 struct type *type;
1532 type = var->type;
1533
6766a268
DJ
1534 if (type != NULL)
1535 type = check_typedef (type);
8b93c638
JM
1536
1537 return type;
1538}
1539
6e2a9270
VP
1540/* Return the type of the value that's stored in VAR,
1541 or that would have being stored there if the
1542 value were accessible.
1543
1544 This differs from VAR->type in that VAR->type is always
1545 the true type of the expession in the source language.
1546 The return value of this function is the type we're
1547 actually storing in varobj, and using for displaying
1548 the values and for comparing previous and new values.
1549
1550 For example, top-level references are always stripped. */
1551static struct type *
1552get_value_type (struct varobj *var)
1553{
1554 struct type *type;
1555
1556 if (var->value)
1557 type = value_type (var->value);
1558 else
1559 type = var->type;
1560
1561 type = check_typedef (type);
1562
1563 if (TYPE_CODE (type) == TYPE_CODE_REF)
1564 type = get_target_type (type);
1565
1566 type = check_typedef (type);
1567
1568 return type;
1569}
1570
8b93c638 1571/* This returns the target type (or NULL) of TYPE, also skipping
94b66fa7
KS
1572 past typedefs, just like get_type ().
1573
1574 NOTE: TYPE_TARGET_TYPE should NOT be used anywhere in this file
1575 except within get_target_type and get_type. */
8b93c638 1576static struct type *
fba45db2 1577get_target_type (struct type *type)
8b93c638
JM
1578{
1579 if (type != NULL)
1580 {
1581 type = TYPE_TARGET_TYPE (type);
6766a268
DJ
1582 if (type != NULL)
1583 type = check_typedef (type);
8b93c638
JM
1584 }
1585
1586 return type;
1587}
1588
1589/* What is the default display for this variable? We assume that
1590 everything is "natural". Any exceptions? */
1591static enum varobj_display_formats
fba45db2 1592variable_default_display (struct varobj *var)
8b93c638
JM
1593{
1594 return FORMAT_NATURAL;
1595}
1596
8b93c638
JM
1597/* FIXME: The following should be generic for any pointer */
1598static void
fba45db2 1599cppush (struct cpstack **pstack, char *name)
8b93c638
JM
1600{
1601 struct cpstack *s;
1602
1603 s = (struct cpstack *) xmalloc (sizeof (struct cpstack));
1604 s->name = name;
1605 s->next = *pstack;
1606 *pstack = s;
1607}
1608
1609/* FIXME: The following should be generic for any pointer */
1610static char *
fba45db2 1611cppop (struct cpstack **pstack)
8b93c638
JM
1612{
1613 struct cpstack *s;
1614 char *v;
1615
1616 if ((*pstack)->name == NULL && (*pstack)->next == NULL)
1617 return NULL;
1618
1619 s = *pstack;
1620 v = s->name;
1621 *pstack = (*pstack)->next;
b8c9b27d 1622 xfree (s);
8b93c638
JM
1623
1624 return v;
1625}
1626\f
1627/*
1628 * Language-dependencies
1629 */
1630
1631/* Common entry points */
1632
1633/* Get the language of variable VAR. */
1634static enum varobj_languages
fba45db2 1635variable_language (struct varobj *var)
8b93c638
JM
1636{
1637 enum varobj_languages lang;
1638
1639 switch (var->root->exp->language_defn->la_language)
1640 {
1641 default:
1642 case language_c:
1643 lang = vlang_c;
1644 break;
1645 case language_cplus:
1646 lang = vlang_cplus;
1647 break;
1648 case language_java:
1649 lang = vlang_java;
1650 break;
1651 }
1652
1653 return lang;
1654}
1655
1656/* Return the number of children for a given variable.
1657 The result of this function is defined by the language
1658 implementation. The number of children returned by this function
1659 is the number of children that the user will see in the variable
1660 display. */
1661static int
fba45db2 1662number_of_children (struct varobj *var)
8b93c638
JM
1663{
1664 return (*var->root->lang->number_of_children) (var);;
1665}
1666
1667/* What is the expression for the root varobj VAR? Returns a malloc'd string. */
1668static char *
fba45db2 1669name_of_variable (struct varobj *var)
8b93c638
JM
1670{
1671 return (*var->root->lang->name_of_variable) (var);
1672}
1673
1674/* What is the name of the INDEX'th child of VAR? Returns a malloc'd string. */
1675static char *
fba45db2 1676name_of_child (struct varobj *var, int index)
8b93c638
JM
1677{
1678 return (*var->root->lang->name_of_child) (var, index);
1679}
1680
30b28db1 1681/* What is the ``struct value *'' of the root variable VAR?
73a93a32
JI
1682 TYPE_CHANGED controls what to do if the type of a
1683 use_selected_frame = 1 variable changes. On input,
1684 TYPE_CHANGED = 1 means discard the old varobj, and replace
1685 it with this one. TYPE_CHANGED = 0 means leave it around.
1686 NB: In both cases, var_handle will point to the new varobj,
1687 so if you use TYPE_CHANGED = 0, you will have to stash the
1688 old varobj pointer away somewhere before calling this.
1689 On return, TYPE_CHANGED will be 1 if the type has changed, and
1690 0 otherwise. */
30b28db1 1691static struct value *
fba45db2 1692value_of_root (struct varobj **var_handle, int *type_changed)
8b93c638 1693{
73a93a32
JI
1694 struct varobj *var;
1695
1696 if (var_handle == NULL)
1697 return NULL;
1698
1699 var = *var_handle;
1700
1701 /* This should really be an exception, since this should
1702 only get called with a root variable. */
1703
b2c2bd75 1704 if (!is_root_p (var))
73a93a32
JI
1705 return NULL;
1706
1707 if (var->root->use_selected_frame)
1708 {
1709 struct varobj *tmp_var;
1710 char *old_type, *new_type;
6225abfa 1711
73a93a32
JI
1712 tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
1713 USE_SELECTED_FRAME);
1714 if (tmp_var == NULL)
1715 {
1716 return NULL;
1717 }
6225abfa 1718 old_type = varobj_get_type (var);
73a93a32 1719 new_type = varobj_get_type (tmp_var);
72330bd6 1720 if (strcmp (old_type, new_type) == 0)
73a93a32
JI
1721 {
1722 varobj_delete (tmp_var, NULL, 0);
1723 *type_changed = 0;
1724 }
1725 else
1726 {
1727 if (*type_changed)
1728 {
72330bd6 1729 tmp_var->obj_name =
73a93a32 1730 savestring (var->obj_name, strlen (var->obj_name));
f7635dd9 1731 varobj_delete (var, NULL, 0);
73a93a32
JI
1732 }
1733 else
1734 {
72330bd6 1735 tmp_var->obj_name = varobj_gen_name ();
73a93a32
JI
1736 }
1737 install_variable (tmp_var);
1738 *var_handle = tmp_var;
705da579 1739 var = *var_handle;
73a93a32
JI
1740 *type_changed = 1;
1741 }
74dddad3
MS
1742 xfree (old_type);
1743 xfree (new_type);
73a93a32
JI
1744 }
1745 else
1746 {
1747 *type_changed = 0;
1748 }
1749
1750 return (*var->root->lang->value_of_root) (var_handle);
8b93c638
JM
1751}
1752
30b28db1
AC
1753/* What is the ``struct value *'' for the INDEX'th child of PARENT? */
1754static struct value *
fba45db2 1755value_of_child (struct varobj *parent, int index)
8b93c638 1756{
30b28db1 1757 struct value *value;
8b93c638
JM
1758
1759 value = (*parent->root->lang->value_of_child) (parent, index);
1760
8b93c638
JM
1761 return value;
1762}
1763
8b93c638
JM
1764/* GDB already has a command called "value_of_variable". Sigh. */
1765static char *
fba45db2 1766my_value_of_variable (struct varobj *var)
8b93c638 1767{
8756216b
DP
1768 if (var->root->is_valid)
1769 return (*var->root->lang->value_of_variable) (var);
1770 else
1771 return NULL;
8b93c638
JM
1772}
1773
85265413
NR
1774static char *
1775value_get_print_value (struct value *value, enum varobj_display_formats format)
1776{
1777 long dummy;
57e66780
DJ
1778 struct ui_file *stb;
1779 struct cleanup *old_chain;
85265413 1780 char *thevalue;
57e66780
DJ
1781
1782 if (value == NULL)
1783 return NULL;
1784
1785 stb = mem_fileopen ();
1786 old_chain = make_cleanup_ui_file_delete (stb);
1787
85265413
NR
1788 common_val_print (value, stb, format_code[(int) format], 1, 0, 0);
1789 thevalue = ui_file_xstrdup (stb, &dummy);
57e66780 1790
85265413
NR
1791 do_cleanups (old_chain);
1792 return thevalue;
1793}
1794
340a7723
NR
1795int
1796varobj_editable_p (struct varobj *var)
1797{
1798 struct type *type;
1799 struct value *value;
1800
1801 if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
1802 return 0;
1803
1804 type = get_value_type (var);
1805
1806 switch (TYPE_CODE (type))
1807 {
1808 case TYPE_CODE_STRUCT:
1809 case TYPE_CODE_UNION:
1810 case TYPE_CODE_ARRAY:
1811 case TYPE_CODE_FUNC:
1812 case TYPE_CODE_METHOD:
1813 return 0;
1814 break;
1815
1816 default:
1817 return 1;
1818 break;
1819 }
1820}
1821
acd65feb
VP
1822/* Return non-zero if changes in value of VAR
1823 must be detected and reported by -var-update.
1824 Return zero is -var-update should never report
1825 changes of such values. This makes sense for structures
1826 (since the changes in children values will be reported separately),
1827 or for artifical objects (like 'public' pseudo-field in C++).
1828
1829 Return value of 0 means that gdb need not call value_fetch_lazy
1830 for the value of this variable object. */
8b93c638 1831static int
b2c2bd75 1832varobj_value_is_changeable_p (struct varobj *var)
8b93c638
JM
1833{
1834 int r;
1835 struct type *type;
1836
1837 if (CPLUS_FAKE_CHILD (var))
1838 return 0;
1839
6e2a9270 1840 type = get_value_type (var);
8b93c638
JM
1841
1842 switch (TYPE_CODE (type))
1843 {
72330bd6
AC
1844 case TYPE_CODE_STRUCT:
1845 case TYPE_CODE_UNION:
1846 case TYPE_CODE_ARRAY:
1847 r = 0;
1848 break;
8b93c638 1849
72330bd6
AC
1850 default:
1851 r = 1;
8b93c638
JM
1852 }
1853
1854 return r;
1855}
1856
2024f65a
VP
1857/* Given the value and the type of a variable object,
1858 adjust the value and type to those necessary
1859 for getting children of the variable object.
1860 This includes dereferencing top-level references
1861 to all types and dereferencing pointers to
1862 structures.
1863
1864 Both TYPE and *TYPE should be non-null. VALUE
1865 can be null if we want to only translate type.
1866 *VALUE can be null as well -- if the parent
02142340
VP
1867 value is not known.
1868
1869 If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
1870 depending on whether pointer was deferenced
1871 in this function. */
2024f65a
VP
1872static void
1873adjust_value_for_child_access (struct value **value,
02142340
VP
1874 struct type **type,
1875 int *was_ptr)
2024f65a
VP
1876{
1877 gdb_assert (type && *type);
1878
02142340
VP
1879 if (was_ptr)
1880 *was_ptr = 0;
1881
2024f65a
VP
1882 *type = check_typedef (*type);
1883
1884 /* The type of value stored in varobj, that is passed
1885 to us, is already supposed to be
1886 reference-stripped. */
1887
1888 gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
1889
1890 /* Pointers to structures are treated just like
1891 structures when accessing children. Don't
1892 dererences pointers to other types. */
1893 if (TYPE_CODE (*type) == TYPE_CODE_PTR)
1894 {
1895 struct type *target_type = get_target_type (*type);
1896 if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
1897 || TYPE_CODE (target_type) == TYPE_CODE_UNION)
1898 {
1899 if (value && *value)
3f4178d6
DJ
1900 {
1901 int success = gdb_value_ind (*value, value);
1902 if (!success)
1903 *value = NULL;
1904 }
2024f65a 1905 *type = target_type;
02142340
VP
1906 if (was_ptr)
1907 *was_ptr = 1;
2024f65a
VP
1908 }
1909 }
1910
1911 /* The 'get_target_type' function calls check_typedef on
1912 result, so we can immediately check type code. No
1913 need to call check_typedef here. */
1914}
1915
8b93c638
JM
1916/* C */
1917static int
fba45db2 1918c_number_of_children (struct varobj *var)
8b93c638 1919{
2024f65a
VP
1920 struct type *type = get_value_type (var);
1921 int children = 0;
8b93c638 1922 struct type *target;
8b93c638 1923
02142340 1924 adjust_value_for_child_access (NULL, &type, NULL);
8b93c638 1925 target = get_target_type (type);
8b93c638
JM
1926
1927 switch (TYPE_CODE (type))
1928 {
1929 case TYPE_CODE_ARRAY:
1930 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
72330bd6 1931 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED)
8b93c638
JM
1932 children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
1933 else
74a44383
DJ
1934 /* If we don't know how many elements there are, don't display
1935 any. */
1936 children = 0;
8b93c638
JM
1937 break;
1938
1939 case TYPE_CODE_STRUCT:
1940 case TYPE_CODE_UNION:
1941 children = TYPE_NFIELDS (type);
1942 break;
1943
1944 case TYPE_CODE_PTR:
2024f65a
VP
1945 /* The type here is a pointer to non-struct. Typically, pointers
1946 have one child, except for function ptrs, which have no children,
1947 and except for void*, as we don't know what to show.
1948
0755e6c1
FN
1949 We can show char* so we allow it to be dereferenced. If you decide
1950 to test for it, please mind that a little magic is necessary to
1951 properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and
1952 TYPE_NAME == "char" */
2024f65a
VP
1953 if (TYPE_CODE (target) == TYPE_CODE_FUNC
1954 || TYPE_CODE (target) == TYPE_CODE_VOID)
1955 children = 0;
1956 else
1957 children = 1;
8b93c638
JM
1958 break;
1959
1960 default:
1961 /* Other types have no children */
1962 break;
1963 }
1964
1965 return children;
1966}
1967
1968static char *
fba45db2 1969c_name_of_variable (struct varobj *parent)
8b93c638
JM
1970{
1971 return savestring (parent->name, strlen (parent->name));
1972}
1973
bbec2603
VP
1974/* Return the value of element TYPE_INDEX of a structure
1975 value VALUE. VALUE's type should be a structure,
1976 or union, or a typedef to struct/union.
1977
1978 Returns NULL if getting the value fails. Never throws. */
1979static struct value *
1980value_struct_element_index (struct value *value, int type_index)
8b93c638 1981{
bbec2603
VP
1982 struct value *result = NULL;
1983 volatile struct gdb_exception e;
8b93c638 1984
bbec2603
VP
1985 struct type *type = value_type (value);
1986 type = check_typedef (type);
1987
1988 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1989 || TYPE_CODE (type) == TYPE_CODE_UNION);
8b93c638 1990
bbec2603
VP
1991 TRY_CATCH (e, RETURN_MASK_ERROR)
1992 {
1993 if (TYPE_FIELD_STATIC (type, type_index))
1994 result = value_static_field (type, type_index);
1995 else
1996 result = value_primitive_field (value, 0, type_index, type);
1997 }
1998 if (e.reason < 0)
1999 {
2000 return NULL;
2001 }
2002 else
2003 {
2004 return result;
2005 }
2006}
2007
2008/* Obtain the information about child INDEX of the variable
2009 object PARENT.
2010 If CNAME is not null, sets *CNAME to the name of the child relative
2011 to the parent.
2012 If CVALUE is not null, sets *CVALUE to the value of the child.
2013 If CTYPE is not null, sets *CTYPE to the type of the child.
2014
2015 If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
2016 information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
2017 to NULL. */
2018static void
2019c_describe_child (struct varobj *parent, int index,
02142340
VP
2020 char **cname, struct value **cvalue, struct type **ctype,
2021 char **cfull_expression)
bbec2603
VP
2022{
2023 struct value *value = parent->value;
2024f65a 2024 struct type *type = get_value_type (parent);
02142340
VP
2025 char *parent_expression = NULL;
2026 int was_ptr;
bbec2603
VP
2027
2028 if (cname)
2029 *cname = NULL;
2030 if (cvalue)
2031 *cvalue = NULL;
2032 if (ctype)
2033 *ctype = NULL;
02142340
VP
2034 if (cfull_expression)
2035 {
2036 *cfull_expression = NULL;
2037 parent_expression = varobj_get_path_expr (parent);
2038 }
2039 adjust_value_for_child_access (&value, &type, &was_ptr);
bbec2603 2040
8b93c638
JM
2041 switch (TYPE_CODE (type))
2042 {
2043 case TYPE_CODE_ARRAY:
bbec2603
VP
2044 if (cname)
2045 *cname = xstrprintf ("%d", index
2046 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2047
2048 if (cvalue && value)
2049 {
2050 int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
2051 struct value *indval =
2052 value_from_longest (builtin_type_int, (LONGEST) real_index);
2053 gdb_value_subscript (value, indval, cvalue);
2054 }
2055
2056 if (ctype)
2057 *ctype = get_target_type (type);
2058
02142340
VP
2059 if (cfull_expression)
2060 *cfull_expression = xstrprintf ("(%s)[%d]", parent_expression,
2061 index
2062 + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
2063
2064
8b93c638
JM
2065 break;
2066
2067 case TYPE_CODE_STRUCT:
2068 case TYPE_CODE_UNION:
bbec2603
VP
2069 if (cname)
2070 {
2071 char *string = TYPE_FIELD_NAME (type, index);
2072 *cname = savestring (string, strlen (string));
2073 }
2074
2075 if (cvalue && value)
2076 {
2077 /* For C, varobj index is the same as type index. */
2078 *cvalue = value_struct_element_index (value, index);
2079 }
2080
2081 if (ctype)
2082 *ctype = TYPE_FIELD_TYPE (type, index);
2083
02142340
VP
2084 if (cfull_expression)
2085 {
2086 char *join = was_ptr ? "->" : ".";
2087 *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join,
2088 TYPE_FIELD_NAME (type, index));
2089 }
2090
8b93c638
JM
2091 break;
2092
2093 case TYPE_CODE_PTR:
bbec2603
VP
2094 if (cname)
2095 *cname = xstrprintf ("*%s", parent->name);
8b93c638 2096
bbec2603 2097 if (cvalue && value)
3f4178d6
DJ
2098 {
2099 int success = gdb_value_ind (value, cvalue);
2100 if (!success)
2101 *cvalue = NULL;
2102 }
bbec2603 2103
2024f65a
VP
2104 /* Don't use get_target_type because it calls
2105 check_typedef and here, we want to show the true
2106 declared type of the variable. */
bbec2603 2107 if (ctype)
2024f65a 2108 *ctype = TYPE_TARGET_TYPE (type);
02142340
VP
2109
2110 if (cfull_expression)
2111 *cfull_expression = xstrprintf ("*(%s)", parent_expression);
bbec2603 2112
8b93c638
JM
2113 break;
2114
2115 default:
2116 /* This should not happen */
bbec2603
VP
2117 if (cname)
2118 *cname = xstrdup ("???");
02142340
VP
2119 if (cfull_expression)
2120 *cfull_expression = xstrdup ("???");
bbec2603 2121 /* Don't set value and type, we don't know then. */
8b93c638 2122 }
bbec2603 2123}
8b93c638 2124
bbec2603
VP
2125static char *
2126c_name_of_child (struct varobj *parent, int index)
2127{
2128 char *name;
02142340 2129 c_describe_child (parent, index, &name, NULL, NULL, NULL);
8b93c638
JM
2130 return name;
2131}
2132
02142340
VP
2133static char *
2134c_path_expr_of_child (struct varobj *child)
2135{
2136 c_describe_child (child->parent, child->index, NULL, NULL, NULL,
2137 &child->path_expr);
2138 return child->path_expr;
2139}
2140
30b28db1 2141static struct value *
fba45db2 2142c_value_of_root (struct varobj **var_handle)
8b93c638 2143{
5e572bb4 2144 struct value *new_val = NULL;
73a93a32 2145 struct varobj *var = *var_handle;
8b93c638
JM
2146 struct frame_info *fi;
2147 int within_scope;
2148
73a93a32 2149 /* Only root variables can be updated... */
b2c2bd75 2150 if (!is_root_p (var))
73a93a32
JI
2151 /* Not a root var */
2152 return NULL;
2153
72330bd6 2154
8b93c638 2155 /* Determine whether the variable is still around. */
b20d8971 2156 if (var->root->valid_block == NULL || var->root->use_selected_frame)
8b93c638
JM
2157 within_scope = 1;
2158 else
2159 {
e64d9b3d 2160 fi = frame_find_by_id (var->root->frame);
8b93c638
JM
2161 within_scope = fi != NULL;
2162 /* FIXME: select_frame could fail */
d2353924
NR
2163 if (fi)
2164 {
2165 CORE_ADDR pc = get_frame_pc (fi);
2166 if (pc < BLOCK_START (var->root->valid_block) ||
2167 pc >= BLOCK_END (var->root->valid_block))
2168 within_scope = 0;
2d43bda2
NR
2169 else
2170 select_frame (fi);
d2353924 2171 }
8b93c638 2172 }
72330bd6 2173
8b93c638
JM
2174 if (within_scope)
2175 {
73a93a32 2176 /* We need to catch errors here, because if evaluate
85d93f1d
VP
2177 expression fails we want to just return NULL. */
2178 gdb_evaluate_expression (var->root->exp, &new_val);
8b93c638
JM
2179 return new_val;
2180 }
2181
2182 return NULL;
2183}
2184
30b28db1 2185static struct value *
fba45db2 2186c_value_of_child (struct varobj *parent, int index)
8b93c638 2187{
bbec2603 2188 struct value *value = NULL;
02142340 2189 c_describe_child (parent, index, NULL, &value, NULL, NULL);
8b93c638
JM
2190
2191 return value;
2192}
2193
2194static struct type *
fba45db2 2195c_type_of_child (struct varobj *parent, int index)
8b93c638 2196{
bbec2603 2197 struct type *type = NULL;
02142340 2198 c_describe_child (parent, index, NULL, NULL, &type, NULL);
8b93c638
JM
2199 return type;
2200}
2201
8b93c638 2202static char *
fba45db2 2203c_value_of_variable (struct varobj *var)
8b93c638 2204{
14b3d9c9
JB
2205 /* BOGUS: if val_print sees a struct/class, or a reference to one,
2206 it will print out its children instead of "{...}". So we need to
2207 catch that case explicitly. */
2208 struct type *type = get_type (var);
e64d9b3d 2209
14b3d9c9
JB
2210 /* Strip top-level references. */
2211 while (TYPE_CODE (type) == TYPE_CODE_REF)
2212 type = check_typedef (TYPE_TARGET_TYPE (type));
2213
2214 switch (TYPE_CODE (type))
8b93c638
JM
2215 {
2216 case TYPE_CODE_STRUCT:
2217 case TYPE_CODE_UNION:
2218 return xstrdup ("{...}");
2219 /* break; */
2220
2221 case TYPE_CODE_ARRAY:
2222 {
e64d9b3d 2223 char *number;
b435e160 2224 number = xstrprintf ("[%d]", var->num_children);
e64d9b3d 2225 return (number);
8b93c638
JM
2226 }
2227 /* break; */
2228
2229 default:
2230 {
575bbeb6
KS
2231 if (var->value == NULL)
2232 {
2233 /* This can happen if we attempt to get the value of a struct
2234 member when the parent is an invalid pointer. This is an
2235 error condition, so we should tell the caller. */
2236 return NULL;
2237 }
2238 else
2239 {
25d5ea92
VP
2240 if (var->not_fetched && value_lazy (var->value))
2241 /* Frozen variable and no value yet. We don't
2242 implicitly fetch the value. MI response will
2243 use empty string for the value, which is OK. */
2244 return NULL;
2245
b2c2bd75 2246 gdb_assert (varobj_value_is_changeable_p (var));
acd65feb 2247 gdb_assert (!value_lazy (var->value));
85265413
NR
2248 return value_get_print_value (var->value, var->format);
2249 }
e64d9b3d 2250 }
8b93c638
JM
2251 }
2252}
2253\f
2254
2255/* C++ */
2256
2257static int
fba45db2 2258cplus_number_of_children (struct varobj *var)
8b93c638
JM
2259{
2260 struct type *type;
2261 int children, dont_know;
2262
2263 dont_know = 1;
2264 children = 0;
2265
2266 if (!CPLUS_FAKE_CHILD (var))
2267 {
2024f65a 2268 type = get_value_type (var);
02142340 2269 adjust_value_for_child_access (NULL, &type, NULL);
8b93c638
JM
2270
2271 if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
72330bd6 2272 ((TYPE_CODE (type)) == TYPE_CODE_UNION))
8b93c638
JM
2273 {
2274 int kids[3];
2275
2276 cplus_class_num_children (type, kids);
2277 if (kids[v_public] != 0)
2278 children++;
2279 if (kids[v_private] != 0)
2280 children++;
2281 if (kids[v_protected] != 0)
2282 children++;
2283
2284 /* Add any baseclasses */
2285 children += TYPE_N_BASECLASSES (type);
2286 dont_know = 0;
2287
2288 /* FIXME: save children in var */
2289 }
2290 }
2291 else
2292 {
2293 int kids[3];
2294
2024f65a 2295 type = get_value_type (var->parent);
02142340 2296 adjust_value_for_child_access (NULL, &type, NULL);
8b93c638
JM
2297
2298 cplus_class_num_children (type, kids);
6e382aa3 2299 if (strcmp (var->name, "public") == 0)
8b93c638 2300 children = kids[v_public];
6e382aa3 2301 else if (strcmp (var->name, "private") == 0)
8b93c638
JM
2302 children = kids[v_private];
2303 else
2304 children = kids[v_protected];
2305 dont_know = 0;
2306 }
2307
2308 if (dont_know)
2309 children = c_number_of_children (var);
2310
2311 return children;
2312}
2313
2314/* Compute # of public, private, and protected variables in this class.
2315 That means we need to descend into all baseclasses and find out
2316 how many are there, too. */
2317static void
1669605f 2318cplus_class_num_children (struct type *type, int children[3])
8b93c638
JM
2319{
2320 int i;
2321
2322 children[v_public] = 0;
2323 children[v_private] = 0;
2324 children[v_protected] = 0;
2325
2326 for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
2327 {
2328 /* If we have a virtual table pointer, omit it. */
72330bd6 2329 if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i)
8b93c638
JM
2330 continue;
2331
2332 if (TYPE_FIELD_PROTECTED (type, i))
2333 children[v_protected]++;
2334 else if (TYPE_FIELD_PRIVATE (type, i))
2335 children[v_private]++;
2336 else
2337 children[v_public]++;
2338 }
2339}
2340
2341static char *
fba45db2 2342cplus_name_of_variable (struct varobj *parent)
8b93c638
JM
2343{
2344 return c_name_of_variable (parent);
2345}
2346
2024f65a
VP
2347enum accessibility { private_field, protected_field, public_field };
2348
2349/* Check if field INDEX of TYPE has the specified accessibility.
2350 Return 0 if so and 1 otherwise. */
2351static int
2352match_accessibility (struct type *type, int index, enum accessibility acc)
8b93c638 2353{
2024f65a
VP
2354 if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
2355 return 1;
2356 else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
2357 return 1;
2358 else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
2359 && !TYPE_FIELD_PROTECTED (type, index))
2360 return 1;
2361 else
2362 return 0;
2363}
2364
2365static void
2366cplus_describe_child (struct varobj *parent, int index,
02142340
VP
2367 char **cname, struct value **cvalue, struct type **ctype,
2368 char **cfull_expression)
2024f65a 2369{
348144ba 2370 char *name = NULL;
2024f65a 2371 struct value *value;
8b93c638 2372 struct type *type;
02142340
VP
2373 int was_ptr;
2374 char *parent_expression = NULL;
8b93c638 2375
2024f65a
VP
2376 if (cname)
2377 *cname = NULL;
2378 if (cvalue)
2379 *cvalue = NULL;
2380 if (ctype)
2381 *ctype = NULL;
02142340
VP
2382 if (cfull_expression)
2383 *cfull_expression = NULL;
2024f65a 2384
8b93c638
JM
2385 if (CPLUS_FAKE_CHILD (parent))
2386 {
2024f65a
VP
2387 value = parent->parent->value;
2388 type = get_value_type (parent->parent);
02142340
VP
2389 if (cfull_expression)
2390 parent_expression = varobj_get_path_expr (parent->parent);
8b93c638
JM
2391 }
2392 else
2024f65a
VP
2393 {
2394 value = parent->value;
2395 type = get_value_type (parent);
02142340
VP
2396 if (cfull_expression)
2397 parent_expression = varobj_get_path_expr (parent);
2024f65a 2398 }
8b93c638 2399
02142340 2400 adjust_value_for_child_access (&value, &type, &was_ptr);
2024f65a
VP
2401
2402 if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3f4178d6 2403 || TYPE_CODE (type) == TYPE_CODE_UNION)
8b93c638 2404 {
02142340 2405 char *join = was_ptr ? "->" : ".";
8b93c638
JM
2406 if (CPLUS_FAKE_CHILD (parent))
2407 {
6e382aa3
JJ
2408 /* The fields of the class type are ordered as they
2409 appear in the class. We are given an index for a
2410 particular access control type ("public","protected",
2411 or "private"). We must skip over fields that don't
2412 have the access control we are looking for to properly
2413 find the indexed field. */
2414 int type_index = TYPE_N_BASECLASSES (type);
2024f65a 2415 enum accessibility acc = public_field;
6e382aa3 2416 if (strcmp (parent->name, "private") == 0)
2024f65a 2417 acc = private_field;
6e382aa3 2418 else if (strcmp (parent->name, "protected") == 0)
2024f65a
VP
2419 acc = protected_field;
2420
2421 while (index >= 0)
6e382aa3 2422 {
2024f65a
VP
2423 if (TYPE_VPTR_BASETYPE (type) == type
2424 && type_index == TYPE_VPTR_FIELDNO (type))
2425 ; /* ignore vptr */
2426 else if (match_accessibility (type, type_index, acc))
6e382aa3
JJ
2427 --index;
2428 ++type_index;
6e382aa3 2429 }
2024f65a
VP
2430 --type_index;
2431
2432 if (cname)
2433 *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
2434
2435 if (cvalue && value)
2436 *cvalue = value_struct_element_index (value, type_index);
2437
2438 if (ctype)
2439 *ctype = TYPE_FIELD_TYPE (type, type_index);
02142340
VP
2440
2441 if (cfull_expression)
2442 *cfull_expression = xstrprintf ("((%s)%s%s)", parent_expression,
2443 join,
2444 TYPE_FIELD_NAME (type, type_index));
2024f65a
VP
2445 }
2446 else if (index < TYPE_N_BASECLASSES (type))
2447 {
2448 /* This is a baseclass. */
2449 if (cname)
2450 *cname = xstrdup (TYPE_FIELD_NAME (type, index));
2451
2452 if (cvalue && value)
6e382aa3 2453 {
2024f65a 2454 *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
02142340 2455 release_value (*cvalue);
6e382aa3
JJ
2456 }
2457
2024f65a
VP
2458 if (ctype)
2459 {
2460 *ctype = TYPE_FIELD_TYPE (type, index);
2461 }
02142340
VP
2462
2463 if (cfull_expression)
2464 {
2465 char *ptr = was_ptr ? "*" : "";
2466 /* Cast the parent to the base' type. Note that in gdb,
2467 expression like
2468 (Base1)d
2469 will create an lvalue, for all appearences, so we don't
2470 need to use more fancy:
2471 *(Base1*)(&d)
2472 construct. */
2473 *cfull_expression = xstrprintf ("(%s(%s%s) %s)",
2474 ptr,
2475 TYPE_FIELD_NAME (type, index),
2476 ptr,
2477 parent_expression);
2478 }
8b93c638 2479 }
8b93c638
JM
2480 else
2481 {
348144ba 2482 char *access = NULL;
6e382aa3 2483 int children[3];
2024f65a 2484 cplus_class_num_children (type, children);
6e382aa3 2485
8b93c638 2486 /* Everything beyond the baseclasses can
6e382aa3
JJ
2487 only be "public", "private", or "protected"
2488
2489 The special "fake" children are always output by varobj in
2490 this order. So if INDEX == 2, it MUST be "protected". */
8b93c638
JM
2491 index -= TYPE_N_BASECLASSES (type);
2492 switch (index)
2493 {
2494 case 0:
6e382aa3 2495 if (children[v_public] > 0)
2024f65a 2496 access = "public";
6e382aa3 2497 else if (children[v_private] > 0)
2024f65a 2498 access = "private";
6e382aa3 2499 else
2024f65a 2500 access = "protected";
6e382aa3 2501 break;
8b93c638 2502 case 1:
6e382aa3 2503 if (children[v_public] > 0)
8b93c638 2504 {
6e382aa3 2505 if (children[v_private] > 0)
2024f65a 2506 access = "private";
6e382aa3 2507 else
2024f65a 2508 access = "protected";
8b93c638 2509 }
6e382aa3 2510 else if (children[v_private] > 0)
2024f65a 2511 access = "protected";
6e382aa3 2512 break;
8b93c638 2513 case 2:
6e382aa3 2514 /* Must be protected */
2024f65a 2515 access = "protected";
6e382aa3 2516 break;
8b93c638
JM
2517 default:
2518 /* error! */
2519 break;
2520 }
348144ba
MS
2521
2522 gdb_assert (access);
2024f65a
VP
2523 if (cname)
2524 *cname = xstrdup (access);
8b93c638 2525
02142340 2526 /* Value and type and full expression are null here. */
2024f65a 2527 }
8b93c638 2528 }
8b93c638
JM
2529 else
2530 {
02142340 2531 c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
2024f65a
VP
2532 }
2533}
8b93c638 2534
2024f65a
VP
2535static char *
2536cplus_name_of_child (struct varobj *parent, int index)
2537{
2538 char *name = NULL;
02142340 2539 cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
8b93c638
JM
2540 return name;
2541}
2542
02142340
VP
2543static char *
2544cplus_path_expr_of_child (struct varobj *child)
2545{
2546 cplus_describe_child (child->parent, child->index, NULL, NULL, NULL,
2547 &child->path_expr);
2548 return child->path_expr;
2549}
2550
30b28db1 2551static struct value *
fba45db2 2552cplus_value_of_root (struct varobj **var_handle)
8b93c638 2553{
73a93a32 2554 return c_value_of_root (var_handle);
8b93c638
JM
2555}
2556
30b28db1 2557static struct value *
fba45db2 2558cplus_value_of_child (struct varobj *parent, int index)
8b93c638 2559{
2024f65a 2560 struct value *value = NULL;
02142340 2561 cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
8b93c638
JM
2562 return value;
2563}
2564
2565static struct type *
fba45db2 2566cplus_type_of_child (struct varobj *parent, int index)
8b93c638 2567{
2024f65a 2568 struct type *type = NULL;
02142340 2569 cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
8b93c638
JM
2570 return type;
2571}
2572
8b93c638 2573static char *
fba45db2 2574cplus_value_of_variable (struct varobj *var)
8b93c638
JM
2575{
2576
2577 /* If we have one of our special types, don't print out
2578 any value. */
2579 if (CPLUS_FAKE_CHILD (var))
2580 return xstrdup ("");
2581
2582 return c_value_of_variable (var);
2583}
2584\f
2585/* Java */
2586
2587static int
fba45db2 2588java_number_of_children (struct varobj *var)
8b93c638
JM
2589{
2590 return cplus_number_of_children (var);
2591}
2592
2593static char *
fba45db2 2594java_name_of_variable (struct varobj *parent)
8b93c638
JM
2595{
2596 char *p, *name;
2597
2598 name = cplus_name_of_variable (parent);
2599 /* If the name has "-" in it, it is because we
2600 needed to escape periods in the name... */
2601 p = name;
2602
2603 while (*p != '\000')
2604 {
2605 if (*p == '-')
2606 *p = '.';
2607 p++;
2608 }
2609
2610 return name;
2611}
2612
2613static char *
fba45db2 2614java_name_of_child (struct varobj *parent, int index)
8b93c638
JM
2615{
2616 char *name, *p;
2617
2618 name = cplus_name_of_child (parent, index);
2619 /* Escape any periods in the name... */
2620 p = name;
2621
2622 while (*p != '\000')
2623 {
2624 if (*p == '.')
2625 *p = '-';
2626 p++;
2627 }
2628
2629 return name;
2630}
2631
02142340
VP
2632static char *
2633java_path_expr_of_child (struct varobj *child)
2634{
2635 return NULL;
2636}
2637
30b28db1 2638static struct value *
fba45db2 2639java_value_of_root (struct varobj **var_handle)
8b93c638 2640{
73a93a32 2641 return cplus_value_of_root (var_handle);
8b93c638
JM
2642}
2643
30b28db1 2644static struct value *
fba45db2 2645java_value_of_child (struct varobj *parent, int index)
8b93c638
JM
2646{
2647 return cplus_value_of_child (parent, index);
2648}
2649
2650static struct type *
fba45db2 2651java_type_of_child (struct varobj *parent, int index)
8b93c638
JM
2652{
2653 return cplus_type_of_child (parent, index);
2654}
2655
8b93c638 2656static char *
fba45db2 2657java_value_of_variable (struct varobj *var)
8b93c638
JM
2658{
2659 return cplus_value_of_variable (var);
2660}
2661\f
2662extern void _initialize_varobj (void);
2663void
2664_initialize_varobj (void)
2665{
2666 int sizeof_table = sizeof (struct vlist *) * VAROBJ_TABLE_SIZE;
2667
2668 varobj_table = xmalloc (sizeof_table);
2669 memset (varobj_table, 0, sizeof_table);
2670
85c07804
AC
2671 add_setshow_zinteger_cmd ("debugvarobj", class_maintenance,
2672 &varobjdebug, _("\
2673Set varobj debugging."), _("\
2674Show varobj debugging."), _("\
2675When non-zero, varobj debugging is enabled."),
2676 NULL,
920d2a44 2677 show_varobjdebug,
85c07804 2678 &setlist, &showlist);
8b93c638 2679}
8756216b
DP
2680
2681/* Invalidate the varobjs that are tied to locals and re-create the ones that
2682 are defined on globals.
2683 Invalidated varobjs will be always printed in_scope="invalid". */
2684void
2685varobj_invalidate (void)
2686{
2687 struct varobj **all_rootvarobj;
2688 struct varobj **varp;
2689
2690 if (varobj_list (&all_rootvarobj) > 0)
2691 {
2692 varp = all_rootvarobj;
2693 while (*varp != NULL)
2694 {
2695 /* global var must be re-evaluated. */
2696 if ((*varp)->root->valid_block == NULL)
2697 {
2698 struct varobj *tmp_var;
2699
2700 /* Try to create a varobj with same expression. If we succeed replace
2701 the old varobj, otherwise invalidate it. */
2702 tmp_var = varobj_create (NULL, (*varp)->name, (CORE_ADDR) 0, USE_CURRENT_FRAME);
2703 if (tmp_var != NULL)
2704 {
2705 tmp_var->obj_name = xstrdup ((*varp)->obj_name);
2706 varobj_delete (*varp, NULL, 0);
2707 install_variable (tmp_var);
2708 }
2709 else
2710 (*varp)->root->is_valid = 0;
2711 }
2712 else /* locals must be invalidated. */
2713 (*varp)->root->is_valid = 0;
2714
2715 varp++;
2716 }
2717 xfree (all_rootvarobj);
2718 }
2719 return;
2720}
This page took 0.888949 seconds and 4 git commands to generate.