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