~ubuntu-branches/ubuntu/karmic/insight/karmic

« back to all changes in this revision

Viewing changes to gdb/varobj.c

  • Committer: Bazaar Package Importer
  • Author(s): Masayuki Hatta (mhatta)
  • Date: 2007-12-04 22:37:09 UTC
  • mfrom: (1.2.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20071204223709-jxj396d1ox92s8ox
Tags: 6.7.1.dfsg.1-1
* New upstream release.
* This typo has been fixed in the upstream - closes: #314037.
* Removed non-free documents (GFDL'd with Invariant Sections, etc.).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Implementation of the GDB variable objects API.
2
2
 
3
 
   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
 
3
   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
4
4
   Free Software Foundation, Inc.
5
5
 
6
6
   This program is free software; you can redistribute it and/or modify
7
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
 
8
   the Free Software Foundation; either version 3 of the License, or
9
9
   (at your option) any later version.
10
10
 
11
11
   This program is distributed in the hope that it will be useful,
14
14
   GNU General Public License for more details.
15
15
 
16
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
18
 
   Foundation, Inc., 51 Franklin Street, Fifth Floor,
19
 
   Boston, MA 02110-1301, USA.  */
 
17
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
18
 
21
19
#include "defs.h"
22
20
#include "exceptions.h"
26
24
#include "language.h"
27
25
#include "wrapper.h"
28
26
#include "gdbcmd.h"
 
27
#include "block.h"
29
28
 
30
29
#include "gdb_assert.h"
31
30
#include "gdb_string.h"
32
31
 
33
32
#include "varobj.h"
 
33
#include "vec.h"
34
34
 
35
35
/* Non-zero if we want to see trace of varobj level stuff.  */
36
36
 
69
69
     using the currently selected frame. */
70
70
  int use_selected_frame;
71
71
 
 
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
 
72
76
  /* Language info for this variable and its children */
73
77
  struct language_specific *lang;
74
78
 
79
83
  struct varobj_root *next;
80
84
};
81
85
 
 
86
typedef struct varobj *varobj_p;
 
87
 
 
88
DEF_VEC_P (varobj_p);
 
89
 
82
90
/* Every variable in the system has a structure of this type defined
83
91
   for it. This structure holds all information necessary to manipulate
84
92
   a particular object variable. Members which must be freed are noted. */
91
99
  /* NOTE: This is the "expression" */
92
100
  char *name;
93
101
 
 
102
  /* Alloc'd expression for this child.  Can be used to create a
 
103
     root variable corresponding to this child.  */
 
104
  char *path_expr;
 
105
 
94
106
  /* The alloc'd name for this variable's object. This is here for
95
107
     convenience when constructing this object's children. */
96
108
  char *obj_name;
98
110
  /* Index of this variable in its parent or -1 */
99
111
  int index;
100
112
 
101
 
  /* The type of this variable. This may NEVER be NULL. */
 
113
  /* The type of this variable.  This can be NULL
 
114
     for artifial variable objects -- currently, the "accessibility" 
 
115
     variable objects in C++.  */
102
116
  struct type *type;
103
117
 
104
 
  /* The value of this expression or subexpression.  This may be NULL. */
 
118
  /* The value of this expression or subexpression.  A NULL value
 
119
     indicates there was an error getting this value.
 
120
     Invariant: if varobj_value_is_changeable_p (this) is non-zero, 
 
121
     the value is either NULL, or not lazy.  */
105
122
  struct value *value;
106
123
 
107
 
  /* Did an error occur evaluating the expression or getting its value? */
108
 
  int error;
109
 
 
110
124
  /* The number of (immediate) children this variable has */
111
125
  int num_children;
112
126
 
113
127
  /* If this object is a child, this points to its immediate parent. */
114
128
  struct varobj *parent;
115
129
 
116
 
  /* A list of this object's children */
117
 
  struct varobj_child *children;
 
130
  /* Children of this object.  */
 
131
  VEC (varobj_p) *children;
118
132
 
119
133
  /* Description of the root variable. Points to root variable for children. */
120
134
  struct varobj_root *root;
124
138
 
125
139
  /* Was this variable updated via a varobj_set_value operation */
126
140
  int updated;
127
 
};
128
 
 
129
 
/* Every variable keeps a linked list of its children, described
130
 
   by the following structure. */
131
 
/* FIXME: Deprecated.  All should use vlist instead */
132
 
 
133
 
struct varobj_child
134
 
{
135
 
 
136
 
  /* Pointer to the child's data */
137
 
  struct varobj *child;
138
 
 
139
 
  /* Pointer to the next child */
140
 
  struct varobj_child *next;
141
 
};
142
 
 
143
 
/* A stack of varobjs */
144
 
/* FIXME: Deprecated.  All should use vlist instead */
145
 
 
146
 
struct vstack
147
 
{
148
 
  struct varobj *var;
149
 
  struct vstack *next;
 
141
 
 
142
  /* Last print value.  */
 
143
  char *print_value;
 
144
 
 
145
  /* Is this variable frozen.  Frozen variables are never implicitly
 
146
     updated by -var-update * 
 
147
     or -var-update <direct-or-indirect-parent>.  */
 
148
  int frozen;
 
149
 
 
150
  /* Is the value of this variable intentionally not fetched?  It is
 
151
     not fetched if either the variable is frozen, or any parents is
 
152
     frozen.  */
 
153
  int not_fetched;
150
154
};
151
155
 
152
156
struct cpstack
176
180
 
177
181
static void uninstall_variable (struct varobj *);
178
182
 
179
 
static struct varobj *child_exists (struct varobj *, char *);
180
 
 
181
183
static struct varobj *create_child (struct varobj *, int, char *);
182
184
 
183
 
static void save_child_in_parent (struct varobj *, struct varobj *);
184
 
 
185
 
static void remove_child_from_parent (struct varobj *, struct varobj *);
186
 
 
187
185
/* Utility routines */
188
186
 
189
187
static struct varobj *new_variable (void);
196
194
 
197
195
static struct type *get_type (struct varobj *var);
198
196
 
199
 
static struct type *get_type_deref (struct varobj *var);
 
197
static struct type *get_value_type (struct varobj *var);
200
198
 
201
199
static struct type *get_target_type (struct type *);
202
200
 
203
201
static enum varobj_display_formats variable_default_display (struct varobj *);
204
202
 
205
 
static int my_value_equal (struct value *, struct value *, int *);
206
 
 
207
 
static void vpush (struct vstack **pstack, struct varobj *var);
208
 
 
209
 
static struct varobj *vpop (struct vstack **pstack);
210
 
 
211
203
static void cppush (struct cpstack **pstack, char *name);
212
204
 
213
205
static char *cppop (struct cpstack **pstack);
214
206
 
 
207
static int install_new_value (struct varobj *var, struct value *value, 
 
208
                              int initial);
 
209
 
215
210
/* Language-specific routines. */
216
211
 
217
212
static enum varobj_languages variable_language (struct varobj *var);
226
221
 
227
222
static struct value *value_of_child (struct varobj *parent, int index);
228
223
 
229
 
static struct type *type_of_child (struct varobj *var);
230
 
 
231
224
static int variable_editable (struct varobj *var);
232
225
 
233
226
static char *my_value_of_variable (struct varobj *var);
234
227
 
235
 
static int type_changeable (struct varobj *var);
 
228
static char *value_get_print_value (struct value *value,
 
229
                                    enum varobj_display_formats format);
 
230
 
 
231
static int varobj_value_is_changeable_p (struct varobj *var);
 
232
 
 
233
static int is_root_p (struct varobj *var);
236
234
 
237
235
/* C implementation */
238
236
 
242
240
 
243
241
static char *c_name_of_child (struct varobj *parent, int index);
244
242
 
 
243
static char *c_path_expr_of_child (struct varobj *child);
 
244
 
245
245
static struct value *c_value_of_root (struct varobj **var_handle);
246
246
 
247
247
static struct value *c_value_of_child (struct varobj *parent, int index);
262
262
 
263
263
static char *cplus_name_of_child (struct varobj *parent, int index);
264
264
 
 
265
static char *cplus_path_expr_of_child (struct varobj *child);
 
266
 
265
267
static struct value *cplus_value_of_root (struct varobj **var_handle);
266
268
 
267
269
static struct value *cplus_value_of_child (struct varobj *parent, int index);
280
282
 
281
283
static char *java_name_of_child (struct varobj *parent, int index);
282
284
 
 
285
static char *java_path_expr_of_child (struct varobj *child);
 
286
 
283
287
static struct value *java_value_of_root (struct varobj **var_handle);
284
288
 
285
289
static struct value *java_value_of_child (struct varobj *parent, int index);
307
311
  /* The name of the INDEX'th child of PARENT. */
308
312
  char *(*name_of_child) (struct varobj * parent, int index);
309
313
 
 
314
  /* Returns the rooted expression of CHILD, which is a variable
 
315
     obtain that has some parent.  */
 
316
  char *(*path_expr_of_child) (struct varobj * child);
 
317
 
310
318
  /* The ``struct value *'' of the root variable ROOT. */
311
319
  struct value *(*value_of_root) (struct varobj ** root_handle);
312
320
 
324
332
};
325
333
 
326
334
/* Array of known source language routines. */
327
 
static struct language_specific
328
 
  languages[vlang_end][sizeof (struct language_specific)] = {
 
335
static struct language_specific languages[vlang_end] = {
329
336
  /* Unknown (try treating as C */
330
337
  {
331
338
   vlang_unknown,
332
339
   c_number_of_children,
333
340
   c_name_of_variable,
334
341
   c_name_of_child,
 
342
   c_path_expr_of_child,
335
343
   c_value_of_root,
336
344
   c_value_of_child,
337
345
   c_type_of_child,
344
352
   c_number_of_children,
345
353
   c_name_of_variable,
346
354
   c_name_of_child,
 
355
   c_path_expr_of_child,
347
356
   c_value_of_root,
348
357
   c_value_of_child,
349
358
   c_type_of_child,
356
365
   cplus_number_of_children,
357
366
   cplus_name_of_variable,
358
367
   cplus_name_of_child,
 
368
   cplus_path_expr_of_child,
359
369
   cplus_value_of_root,
360
370
   cplus_value_of_child,
361
371
   cplus_type_of_child,
368
378
   java_number_of_children,
369
379
   java_name_of_variable,
370
380
   java_name_of_child,
 
381
   java_path_expr_of_child,
371
382
   java_value_of_root,
372
383
   java_value_of_child,
373
384
   java_type_of_child,
403
414
 
404
415
 
405
416
/* API Implementation */
 
417
static int
 
418
is_root_p (struct varobj *var)
 
419
{
 
420
  return (var->root->rootvar == var);
 
421
}
406
422
 
407
423
/* Creates a varobj (not its children) */
408
424
 
445
461
    {
446
462
      char *p;
447
463
      enum varobj_languages lang;
 
464
      struct value *value = NULL;
 
465
      int expr_len;
448
466
 
449
467
      /* Parse and evaluate the expression, filling in as much
450
468
         of the variable's data as possible */
451
469
 
452
470
      /* Allow creator to specify context of variable */
453
471
      if ((type == USE_CURRENT_FRAME) || (type == USE_SELECTED_FRAME))
454
 
        fi = deprecated_selected_frame;
 
472
        fi = deprecated_safe_get_selected_frame ();
455
473
      else
456
474
        /* FIXME: cagney/2002-11-23: This code should be doing a
457
475
           lookup using the frame ID and not just the frame's
489
507
 
490
508
      var->format = variable_default_display (var);
491
509
      var->root->valid_block = innermost_block;
492
 
      var->name = savestring (expression, strlen (expression));
 
510
      expr_len = strlen (expression);
 
511
      var->name = savestring (expression, expr_len);
 
512
      /* For a root var, the name and the expr are the same.  */
 
513
      var->path_expr = savestring (expression, expr_len);
493
514
 
494
515
      /* When the frame is different from the current frame, 
495
516
         we must select the appropriate frame before parsing
498
519
      if (fi != NULL)
499
520
        {
500
521
          var->root->frame = get_frame_id (fi);
501
 
          old_fi = deprecated_selected_frame;
 
522
          old_fi = get_selected_frame (NULL);
502
523
          select_frame (fi);
503
524
        }
504
525
 
505
526
      /* We definitively need to catch errors here.
506
527
         If evaluate_expression succeeds we got the value we wanted.
507
528
         But if it fails, we still go on with a call to evaluate_type()  */
508
 
      if (gdb_evaluate_expression (var->root->exp, &var->value))
 
529
      if (!gdb_evaluate_expression (var->root->exp, &value))
509
530
        {
510
 
          /* no error */
511
 
          release_value (var->value);
512
 
          if (value_lazy (var->value))
513
 
            gdb_value_fetch_lazy (var->value);
 
531
          /* Error getting the value.  Try to at least get the
 
532
             right type.  */
 
533
          struct value *type_only_value = evaluate_type (var->root->exp);
 
534
          var->type = value_type (type_only_value);
514
535
        }
515
 
      else
516
 
        var->value = evaluate_type (var->root->exp);
 
536
      else 
 
537
        var->type = value_type (value);
517
538
 
518
 
      var->type = value_type (var->value);
 
539
      install_new_value (var, value, 1 /* Initial assignment */);
519
540
 
520
541
      /* Set language info */
521
542
      lang = variable_language (var);
522
 
      var->root->lang = languages[lang];
 
543
      var->root->lang = &languages[lang];
523
544
 
524
545
      /* Set ourselves as our root */
525
546
      var->root->rootvar = var;
680
701
  return var->format;
681
702
}
682
703
 
 
704
void
 
705
varobj_set_frozen (struct varobj *var, int frozen)
 
706
{
 
707
  /* When a variable is unfrozen, we don't fetch its value.
 
708
     The 'not_fetched' flag remains set, so next -var-update
 
709
     won't complain.
 
710
 
 
711
     We don't fetch the value, because for structures the client
 
712
     should do -var-update anyway.  It would be bad to have different
 
713
     client-size logic for structure and other types.  */
 
714
  var->frozen = frozen;
 
715
}
 
716
 
 
717
int
 
718
varobj_get_frozen (struct varobj *var)
 
719
{
 
720
  return var->frozen;
 
721
}
 
722
 
 
723
 
683
724
int
684
725
varobj_get_num_children (struct varobj *var)
685
726
{
708
749
  if (var->num_children == -1)
709
750
    var->num_children = number_of_children (var);
710
751
 
 
752
  /* If that failed, give up.  */
 
753
  if (var->num_children == -1)
 
754
    return -1;
 
755
 
 
756
  /* If we're called when the list of children is not yet initialized,
 
757
     allocate enough elements in it.  */
 
758
  while (VEC_length (varobj_p, var->children) < var->num_children)
 
759
    VEC_safe_push (varobj_p, var->children, NULL);
 
760
 
711
761
  /* List of children */
712
762
  *childlist = xmalloc ((var->num_children + 1) * sizeof (struct varobj *));
713
763
 
714
764
  for (i = 0; i < var->num_children; i++)
715
765
    {
 
766
      varobj_p existing;
 
767
 
716
768
      /* Mark as the end in case we bail out */
717
769
      *((*childlist) + i) = NULL;
718
770
 
719
 
      /* check if child exists, if not create */
720
 
      name = name_of_child (var, i);
721
 
      child = child_exists (var, name);
722
 
      if (child == NULL)
723
 
        child = create_child (var, i, name);
724
 
 
725
 
      *((*childlist) + i) = child;
 
771
      existing = VEC_index (varobj_p, var->children, i);
 
772
 
 
773
      if (existing == NULL)
 
774
        {
 
775
          /* Either it's the first call to varobj_list_children for
 
776
             this variable object, and the child was never created,
 
777
             or it was explicitly deleted by the client.  */
 
778
          name = name_of_child (var, i);
 
779
          existing = create_child (var, i, name);
 
780
          VEC_replace (varobj_p, var->children, i, existing);
 
781
        }
 
782
 
 
783
      *((*childlist) + i) = existing;
726
784
    }
727
785
 
728
786
  /* End of list is marked by a NULL pointer */
744
802
  long length;
745
803
 
746
804
  /* For the "fake" variables, do not return a type. (It's type is
747
 
     NULL, too.) */
748
 
  if (CPLUS_FAKE_CHILD (var))
 
805
     NULL, too.)
 
806
     Do not return a type for invalid variables as well.  */
 
807
  if (CPLUS_FAKE_CHILD (var) || !var->root->is_valid)
749
808
    return NULL;
750
809
 
751
810
  stb = mem_fileopen ();
769
828
  return var->type;
770
829
}
771
830
 
 
831
/* Return a pointer to the full rooted expression of varobj VAR.
 
832
   If it has not been computed yet, compute it.  */
 
833
char *
 
834
varobj_get_path_expr (struct varobj *var)
 
835
{
 
836
  if (var->path_expr != NULL)
 
837
    return var->path_expr;
 
838
  else 
 
839
    {
 
840
      /* For root varobjs, we initialize path_expr
 
841
         when creating varobj, so here it should be
 
842
         child varobj.  */
 
843
      gdb_assert (!is_root_p (var));
 
844
      return (*var->root->lang->path_expr_of_child) (var);
 
845
    }
 
846
}
 
847
 
772
848
enum varobj_languages
773
849
varobj_get_language (struct varobj *var)
774
850
{
780
856
{
781
857
  int attributes = 0;
782
858
 
783
 
  if (variable_editable (var))
 
859
  if (var->root->is_valid && variable_editable (var))
784
860
    /* FIXME: define masks for attributes */
785
861
    attributes |= 0x00000001;   /* Editable */
786
862
 
811
887
  struct value *value;
812
888
  int saved_input_radix = input_radix;
813
889
 
814
 
  if (var->value != NULL && variable_editable (var) && !var->error)
 
890
  if (var->value != NULL && variable_editable (var))
815
891
    {
816
892
      char *s = expression;
817
893
      int i;
825
901
          return 0;
826
902
        }
827
903
 
828
 
      if (!my_value_equal (var->value, value, &error))
829
 
        var->updated = 1;
 
904
      /* All types that are editable must also be changeable.  */
 
905
      gdb_assert (varobj_value_is_changeable_p (var));
 
906
 
 
907
      /* The value of a changeable variable object must not be lazy.  */
 
908
      gdb_assert (!value_lazy (var->value));
 
909
 
 
910
      /* Need to coerce the input.  We want to check if the
 
911
         value of the variable object will be different
 
912
         after assignment, and the first thing value_assign
 
913
         does is coerce the input.
 
914
         For example, if we are assigning an array to a pointer variable we
 
915
         should compare the pointer with the the array's address, not with the
 
916
         array's content.  */
 
917
      value = coerce_array (value);
 
918
 
 
919
      /* The new value may be lazy.  gdb_value_assign, or 
 
920
         rather value_contents, will take care of this.
 
921
         If fetching of the new value will fail, gdb_value_assign
 
922
         with catch the exception.  */
830
923
      if (!gdb_value_assign (var->value, value, &val))
831
924
        return 0;
832
 
      value_free (var->value);
833
 
      release_value (val);
834
 
      var->value = val;
 
925
     
 
926
      /* If the value has changed, record it, so that next -var-update can
 
927
         report this change.  If a variable had a value of '1', we've set it
 
928
         to '333' and then set again to '1', when -var-update will report this
 
929
         variable as changed -- because the first assignment has set the
 
930
         'updated' flag.  There's no need to optimize that, because return value
 
931
         of -var-update should be considered an approximation.  */
 
932
      var->updated = install_new_value (var, val, 0 /* Compare values. */);
835
933
      input_radix = saved_input_radix;
836
934
      return 1;
837
935
    }
870
968
  return rootcount;
871
969
}
872
970
 
 
971
/* Assign a new value to a variable object.  If INITIAL is non-zero,
 
972
   this is the first assignement after the variable object was just
 
973
   created, or changed type.  In that case, just assign the value 
 
974
   and return 0.
 
975
   Otherwise, assign the value and if type_changeable returns non-zero,
 
976
   find if the new value is different from the current value.
 
977
   Return 1 if so, and 0 if the values are equal.  
 
978
 
 
979
   The VALUE parameter should not be released -- the function will
 
980
   take care of releasing it when needed.  */
 
981
static int
 
982
install_new_value (struct varobj *var, struct value *value, int initial)
 
983
 
984
  int changeable;
 
985
  int need_to_fetch;
 
986
  int changed = 0;
 
987
  int intentionally_not_fetched = 0;
 
988
 
 
989
  /* We need to know the varobj's type to decide if the value should
 
990
     be fetched or not.  C++ fake children (public/protected/private) don't have
 
991
     a type. */
 
992
  gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
 
993
  changeable = varobj_value_is_changeable_p (var);
 
994
  need_to_fetch = changeable;
 
995
 
 
996
  /* We are not interested in the address of references, and given
 
997
     that in C++ a reference is not rebindable, it cannot
 
998
     meaningfully change.  So, get hold of the real value.  */
 
999
  if (value)
 
1000
    {
 
1001
      value = coerce_ref (value);
 
1002
      release_value (value);
 
1003
    }
 
1004
 
 
1005
  if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
 
1006
    /* For unions, we need to fetch the value implicitly because
 
1007
       of implementation of union member fetch.  When gdb
 
1008
       creates a value for a field and the value of the enclosing
 
1009
       structure is not lazy,  it immediately copies the necessary
 
1010
       bytes from the enclosing values.  If the enclosing value is
 
1011
       lazy, the call to value_fetch_lazy on the field will read
 
1012
       the data from memory.  For unions, that means we'll read the
 
1013
       same memory more than once, which is not desirable.  So
 
1014
       fetch now.  */
 
1015
    need_to_fetch = 1;
 
1016
 
 
1017
  /* The new value might be lazy.  If the type is changeable,
 
1018
     that is we'll be comparing values of this type, fetch the
 
1019
     value now.  Otherwise, on the next update the old value
 
1020
     will be lazy, which means we've lost that old value.  */
 
1021
  if (need_to_fetch && value && value_lazy (value))
 
1022
    {
 
1023
      struct varobj *parent = var->parent;
 
1024
      int frozen = var->frozen;
 
1025
      for (; !frozen && parent; parent = parent->parent)
 
1026
        frozen |= parent->frozen;
 
1027
 
 
1028
      if (frozen && initial)
 
1029
        {
 
1030
          /* For variables that are frozen, or are children of frozen
 
1031
             variables, we don't do fetch on initial assignment.
 
1032
             For non-initial assignemnt we do the fetch, since it means we're
 
1033
             explicitly asked to compare the new value with the old one.  */
 
1034
          intentionally_not_fetched = 1;
 
1035
        }
 
1036
      else if (!gdb_value_fetch_lazy (value))
 
1037
        {
 
1038
          /* Set the value to NULL, so that for the next -var-update,
 
1039
             we don't try to compare the new value with this value,
 
1040
             that we couldn't even read.  */
 
1041
          value = NULL;
 
1042
        }
 
1043
    }
 
1044
 
 
1045
  /* If the type is changeable, compare the old and the new values.
 
1046
     If this is the initial assignment, we don't have any old value
 
1047
     to compare with.  */
 
1048
  if (initial && changeable)
 
1049
    var->print_value = value_get_print_value (value, var->format);
 
1050
  else if (changeable)
 
1051
    {
 
1052
      /* If the value of the varobj was changed by -var-set-value, then the 
 
1053
         value in the varobj and in the target is the same.  However, that value
 
1054
         is different from the value that the varobj had after the previous
 
1055
         -var-update. So need to the varobj as changed.  */
 
1056
      if (var->updated)
 
1057
        {
 
1058
          xfree (var->print_value);
 
1059
          var->print_value = value_get_print_value (value, var->format);
 
1060
          changed = 1;
 
1061
        }
 
1062
      else 
 
1063
        {
 
1064
          /* Try to compare the values.  That requires that both
 
1065
             values are non-lazy.  */
 
1066
          if (var->not_fetched && value_lazy (var->value))
 
1067
            {
 
1068
              /* This is a frozen varobj and the value was never read.
 
1069
                 Presumably, UI shows some "never read" indicator.
 
1070
                 Now that we've fetched the real value, we need to report
 
1071
                 this varobj as changed so that UI can show the real
 
1072
                 value.  */
 
1073
              changed = 1;
 
1074
            }
 
1075
          else  if (var->value == NULL && value == NULL)
 
1076
            /* Equal. */
 
1077
            ;
 
1078
          else if (var->value == NULL || value == NULL)
 
1079
            {
 
1080
              xfree (var->print_value);
 
1081
              var->print_value = value_get_print_value (value, var->format);
 
1082
              changed = 1;
 
1083
            }
 
1084
          else
 
1085
            {
 
1086
              char *print_value;
 
1087
              gdb_assert (!value_lazy (var->value));
 
1088
              gdb_assert (!value_lazy (value));
 
1089
              print_value = value_get_print_value (value, var->format);
 
1090
 
 
1091
              gdb_assert (var->print_value != NULL && print_value != NULL);
 
1092
              if (strcmp (var->print_value, print_value) != 0)
 
1093
                {
 
1094
                  xfree (var->print_value);
 
1095
                  var->print_value = print_value;
 
1096
                  changed = 1;
 
1097
                }
 
1098
              else
 
1099
                xfree (print_value);
 
1100
            }
 
1101
        }
 
1102
    }
 
1103
 
 
1104
  /* We must always keep the new value, since children depend on it.  */
 
1105
  if (var->value != NULL && var->value != value)
 
1106
    value_free (var->value);
 
1107
  var->value = value;
 
1108
  if (value && value_lazy (value) && intentionally_not_fetched)
 
1109
    var->not_fetched = 1;
 
1110
  else
 
1111
    var->not_fetched = 0;
 
1112
  var->updated = 0;
 
1113
 
 
1114
  gdb_assert (!var->value || value_type (var->value));
 
1115
 
 
1116
  return changed;
 
1117
}
 
1118
 
873
1119
/* Update the values for a variable and its children.  This is a
874
1120
   two-pronged attack.  First, re-parse the value for the root's
875
1121
   expression to see if it's changed.  Then go all the way
876
1122
   through its children, reconstructing them and noting if they've
877
1123
   changed.
878
 
   Return value:
879
 
    -1 if there was an error updating the varobj
880
 
    -2 if the type changed
881
 
    Otherwise it is the number of children + parent changed
 
1124
   Return value: 
 
1125
    < 0 for error values, see varobj.h.
 
1126
    Otherwise it is the number of children + parent changed.
882
1127
 
883
 
   Only root variables can be updated... 
 
1128
   The EXPLICIT parameter specifies if this call is result
 
1129
   of MI request to update this specific variable, or 
 
1130
   result of implicit -var-update *. For implicit request, we don't
 
1131
   update frozen variables.
884
1132
 
885
1133
   NOTE: This function may delete the caller's varobj. If it
886
 
   returns -2, then it has done this and VARP will be modified
887
 
   to point to the new varobj. */
 
1134
   returns TYPE_CHANGED, then it has done this and VARP will be modified
 
1135
   to point to the new varobj.  */
888
1136
 
889
1137
int
890
 
varobj_update (struct varobj **varp, struct varobj ***changelist)
 
1138
varobj_update (struct varobj **varp, struct varobj ***changelist,
 
1139
               int explicit)
891
1140
{
892
1141
  int changed = 0;
893
 
  int error = 0;
894
 
  int type_changed;
 
1142
  int type_changed = 0;
895
1143
  int i;
896
1144
  int vleft;
897
1145
  struct varobj *v;
898
1146
  struct varobj **cv;
899
1147
  struct varobj **templist = NULL;
900
1148
  struct value *new;
901
 
  struct vstack *stack = NULL;
902
 
  struct vstack *result = NULL;
 
1149
  VEC (varobj_p) *stack = NULL;
 
1150
  VEC (varobj_p) *result = NULL;
903
1151
  struct frame_id old_fid;
904
1152
  struct frame_info *fi;
905
1153
 
906
 
  /* sanity check: have we been passed a pointer? */
907
 
  if (changelist == NULL)
908
 
    return -1;
909
 
 
910
 
  /*  Only root variables can be updated... */
911
 
  if ((*varp)->root->rootvar != *varp)
912
 
    /* Not a root var */
913
 
    return -1;
914
 
 
915
 
  /* Save the selected stack frame, since we will need to change it
916
 
     in order to evaluate expressions. */
917
 
  old_fid = get_frame_id (deprecated_selected_frame);
918
 
 
919
 
  /* Update the root variable. value_of_root can return NULL
920
 
     if the variable is no longer around, i.e. we stepped out of
921
 
     the frame in which a local existed. We are letting the 
922
 
     value_of_root variable dispose of the varobj if the type
923
 
     has changed. */
924
 
  type_changed = 1;
925
 
  new = value_of_root (varp, &type_changed);
926
 
  if (new == NULL)
927
 
    {
928
 
      (*varp)->error = 1;
929
 
      return -1;
930
 
    }
931
 
 
932
 
  /* Initialize a stack for temporary results */
933
 
  vpush (&result, NULL);
934
 
 
935
 
  /* If this is a "use_selected_frame" varobj, and its type has changed,
936
 
     them note that it's changed. */
937
 
  if (type_changed)
938
 
    {
939
 
      vpush (&result, *varp);
940
 
      changed++;
941
 
    }
942
 
  /* If values are not equal, note that it's changed.
943
 
     There a couple of exceptions here, though.
944
 
     We don't want some types to be reported as "changed". */
945
 
  else if (type_changeable (*varp) &&
946
 
           ((*varp)->updated || !my_value_equal ((*varp)->value, new, &error)))
947
 
    {
948
 
      vpush (&result, *varp);
949
 
      (*varp)->updated = 0;
950
 
      changed++;
951
 
      /* Its value is going to be updated to NEW.  */
952
 
      (*varp)->error = error;
953
 
    }
954
 
 
955
 
  /* We must always keep around the new value for this root
956
 
     variable expression, or we lose the updated children! */
957
 
  value_free ((*varp)->value);
958
 
  (*varp)->value = new;
959
 
 
960
 
  /* Initialize a stack */
961
 
  vpush (&stack, NULL);
962
 
 
963
 
  /* Push the root's children */
964
 
  if ((*varp)->children != NULL)
965
 
    {
966
 
      struct varobj_child *c;
967
 
      for (c = (*varp)->children; c != NULL; c = c->next)
968
 
        vpush (&stack, c->child);
969
 
    }
970
 
 
971
 
  /* Walk through the children, reconstructing them all. */
972
 
  v = vpop (&stack);
973
 
  while (v != NULL)
974
 
    {
975
 
      /* Push any children */
976
 
      if (v->children != NULL)
977
 
        {
978
 
          struct varobj_child *c;
979
 
          for (c = v->children; c != NULL; c = c->next)
980
 
            vpush (&stack, c->child);
981
 
        }
982
 
 
983
 
      /* Update this variable */
984
 
      new = value_of_child (v->parent, v->index);
985
 
      if (type_changeable (v) && 
986
 
          (v->updated || !my_value_equal (v->value, new, &error)))
987
 
        {
988
 
          /* Note that it's changed */
989
 
          vpush (&result, v);
990
 
          v->updated = 0;
991
 
          changed++;
992
 
        }
993
 
      /* Its value is going to be updated to NEW.  */
994
 
      v->error = error;
995
 
 
996
 
      /* We must always keep new values, since children depend on it. */
997
 
      if (v->value != NULL)
998
 
        value_free (v->value);
999
 
      v->value = new;
1000
 
 
1001
 
      /* Get next child */
1002
 
      v = vpop (&stack);
1003
 
    }
1004
 
 
1005
 
  /* Alloc (changed + 1) list entries */
1006
 
  /* FIXME: add a cleanup for the allocated list(s)
1007
 
     because one day the select_frame called below can longjump */
 
1154
  /* sanity check: have we been passed a pointer?  */
 
1155
  gdb_assert (changelist);
 
1156
 
 
1157
  /* Frozen means frozen -- we don't check for any change in
 
1158
     this varobj, including its going out of scope, or
 
1159
     changing type.  One use case for frozen varobjs is
 
1160
     retaining previously evaluated expressions, and we don't
 
1161
     want them to be reevaluated at all.  */
 
1162
  if (!explicit && (*varp)->frozen)
 
1163
    return 0;
 
1164
 
 
1165
  if (!(*varp)->root->is_valid)
 
1166
    return INVALID;
 
1167
 
 
1168
  if ((*varp)->root->rootvar == *varp)
 
1169
    {
 
1170
      /* Save the selected stack frame, since we will need to change it
 
1171
         in order to evaluate expressions.  */
 
1172
      old_fid = get_frame_id (deprecated_safe_get_selected_frame ());
 
1173
      
 
1174
      /* Update the root variable. value_of_root can return NULL
 
1175
         if the variable is no longer around, i.e. we stepped out of
 
1176
         the frame in which a local existed. We are letting the 
 
1177
         value_of_root variable dispose of the varobj if the type
 
1178
         has changed.  */
 
1179
      type_changed = 1;
 
1180
      new = value_of_root (varp, &type_changed);
 
1181
 
 
1182
      /* Restore selected frame.  */
 
1183
      fi = frame_find_by_id (old_fid);
 
1184
      if (fi)
 
1185
        select_frame (fi);
 
1186
      
 
1187
      /* If this is a "use_selected_frame" varobj, and its type has changed,
 
1188
         them note that it's changed.  */
 
1189
      if (type_changed)
 
1190
        VEC_safe_push (varobj_p, result, *varp);
 
1191
      
 
1192
        if (install_new_value ((*varp), new, type_changed))
 
1193
          {
 
1194
            /* If type_changed is 1, install_new_value will never return
 
1195
               non-zero, so we'll never report the same variable twice.  */
 
1196
            gdb_assert (!type_changed);
 
1197
            VEC_safe_push (varobj_p, result, *varp);
 
1198
          }
 
1199
 
 
1200
      if (new == NULL)
 
1201
        {
 
1202
          /* This means the varobj itself is out of scope.
 
1203
             Report it.  */
 
1204
          VEC_free (varobj_p, result);
 
1205
          return NOT_IN_SCOPE;
 
1206
        }
 
1207
    }
 
1208
 
 
1209
  VEC_safe_push (varobj_p, stack, *varp);
 
1210
 
 
1211
  /* Walk through the children, reconstructing them all.  */
 
1212
  while (!VEC_empty (varobj_p, stack))
 
1213
    {
 
1214
      v = VEC_pop (varobj_p, stack);
 
1215
 
 
1216
      /* Push any children.  Use reverse order so that the first
 
1217
         child is popped from the work stack first, and so
 
1218
         will be added to result first.  This does not
 
1219
         affect correctness, just "nicer".  */
 
1220
      for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i)
 
1221
        {
 
1222
          varobj_p c = VEC_index (varobj_p, v->children, i);
 
1223
          /* Child may be NULL if explicitly deleted by -var-delete.  */
 
1224
          if (c != NULL && !c->frozen)
 
1225
            VEC_safe_push (varobj_p, stack, c);
 
1226
        }
 
1227
 
 
1228
      /* Update this variable, unless it's a root, which is already
 
1229
         updated.  */
 
1230
      if (v->root->rootvar != v)
 
1231
        {         
 
1232
          new = value_of_child (v->parent, v->index);
 
1233
          if (install_new_value (v, new, 0 /* type not changed */))
 
1234
            {
 
1235
              /* Note that it's changed */
 
1236
              VEC_safe_push (varobj_p, result, v);
 
1237
              v->updated = 0;
 
1238
            }
 
1239
        }
 
1240
    }
 
1241
 
 
1242
  /* Alloc (changed + 1) list entries.  */
 
1243
  changed = VEC_length (varobj_p, result);
1008
1244
  *changelist = xmalloc ((changed + 1) * sizeof (struct varobj *));
1009
 
  if (changed > 1)
1010
 
    {
1011
 
      templist = xmalloc ((changed + 1) * sizeof (struct varobj *));
1012
 
      cv = templist;
1013
 
    }
1014
 
  else
1015
 
    cv = *changelist;
1016
 
 
1017
 
  /* Copy from result stack to list */
1018
 
  vleft = changed;
1019
 
  *cv = vpop (&result);
1020
 
  while ((*cv != NULL) && (vleft > 0))
1021
 
    {
1022
 
      vleft--;
1023
 
      cv++;
1024
 
      *cv = vpop (&result);
1025
 
    }
1026
 
  if (vleft)
1027
 
    warning (_("varobj_update: assertion failed - vleft <> 0"));
1028
 
 
1029
 
  if (changed > 1)
1030
 
    {
1031
 
      /* Now we revert the order. */
1032
 
      for (i = 0; i < changed; i++)
1033
 
        *(*changelist + i) = *(templist + changed - 1 - i);
1034
 
      *(*changelist + changed) = NULL;
1035
 
    }
1036
 
 
1037
 
  /* Restore selected frame */
1038
 
  fi = frame_find_by_id (old_fid);
1039
 
  if (fi)
1040
 
    select_frame (fi);
 
1245
  cv = *changelist;
 
1246
 
 
1247
  for (i = 0; i < changed; ++i)
 
1248
    {
 
1249
      *cv = VEC_index (varobj_p, result, i);
 
1250
      gdb_assert (*cv != NULL);
 
1251
      ++cv;
 
1252
    }
 
1253
  *cv = 0;
 
1254
 
 
1255
  VEC_free (varobj_p, stack);
 
1256
  VEC_free (varobj_p, result);
1041
1257
 
1042
1258
  if (type_changed)
1043
 
    return -2;
 
1259
    return TYPE_CHANGED;
1044
1260
  else
1045
1261
    return changed;
1046
1262
}
1073
1289
                   struct varobj *var, int only_children_p,
1074
1290
                   int remove_from_parent_p)
1075
1291
{
1076
 
  struct varobj_child *vc;
1077
 
  struct varobj_child *next;
 
1292
  int i;
1078
1293
 
1079
1294
  /* Delete any children of this variable, too. */
1080
 
  for (vc = var->children; vc != NULL; vc = next)
1081
 
    {
 
1295
  for (i = 0; i < VEC_length (varobj_p, var->children); ++i)
 
1296
    {   
 
1297
      varobj_p child = VEC_index (varobj_p, var->children, i);
1082
1298
      if (!remove_from_parent_p)
1083
 
        vc->child->parent = NULL;
1084
 
      delete_variable_1 (resultp, delcountp, vc->child, 0, only_children_p);
1085
 
      next = vc->next;
1086
 
      xfree (vc);
 
1299
        child->parent = NULL;
 
1300
      delete_variable_1 (resultp, delcountp, child, 0, only_children_p);
1087
1301
    }
 
1302
  VEC_free (varobj_p, var->children);
1088
1303
 
1089
1304
  /* if we were called to delete only the children we are done here */
1090
1305
  if (only_children_p)
1106
1321
     discarding the list afterwards */
1107
1322
  if ((remove_from_parent_p) && (var->parent != NULL))
1108
1323
    {
1109
 
      remove_child_from_parent (var->parent, var);
 
1324
      VEC_replace (varobj_p, var->parent->children, var->index, NULL);
1110
1325
    }
1111
1326
 
1112
1327
  if (var->obj_name != NULL)
1145
1360
  *(varobj_table + index) = newvl;
1146
1361
 
1147
1362
  /* If root, add varobj to root list */
1148
 
  if (var->root->rootvar == var)
 
1363
  if (is_root_p (var))
1149
1364
    {
1150
1365
      /* Add to list of root variables */
1151
1366
      if (rootlist == NULL)
1204
1419
  xfree (cv);
1205
1420
 
1206
1421
  /* If root, remove varobj from root list */
1207
 
  if (var->root->rootvar == var)
 
1422
  if (is_root_p (var))
1208
1423
    {
1209
1424
      /* Remove from list of root variables */
1210
1425
      if (rootlist == var->root)
1235
1450
 
1236
1451
}
1237
1452
 
1238
 
/* Does a child with the name NAME exist in VAR? If so, return its data.
1239
 
   If not, return NULL. */
1240
 
static struct varobj *
1241
 
child_exists (struct varobj *var, char *name)
1242
 
{
1243
 
  struct varobj_child *vc;
1244
 
 
1245
 
  for (vc = var->children; vc != NULL; vc = vc->next)
1246
 
    {
1247
 
      if (strcmp (vc->child->name, name) == 0)
1248
 
        return vc->child;
1249
 
    }
1250
 
 
1251
 
  return NULL;
1252
 
}
1253
 
 
1254
1453
/* Create and install a child of the parent of the given name */
1255
1454
static struct varobj *
1256
1455
create_child (struct varobj *parent, int index, char *name)
1257
1456
{
1258
1457
  struct varobj *child;
1259
1458
  char *childs_name;
 
1459
  struct value *value;
1260
1460
 
1261
1461
  child = new_variable ();
1262
1462
 
1263
1463
  /* name is allocated by name_of_child */
1264
1464
  child->name = name;
1265
1465
  child->index = index;
1266
 
  child->value = value_of_child (parent, index);
1267
 
  if ((!CPLUS_FAKE_CHILD (child) && child->value == NULL) || parent->error)
1268
 
    child->error = 1;
 
1466
  value = value_of_child (parent, index);
1269
1467
  child->parent = parent;
1270
1468
  child->root = parent->root;
1271
1469
  childs_name = xstrprintf ("%s.%s", parent->obj_name, name);
1272
1470
  child->obj_name = childs_name;
1273
1471
  install_variable (child);
1274
1472
 
1275
 
  /* Save a pointer to this child in the parent */
1276
 
  save_child_in_parent (parent, child);
1277
 
 
1278
 
  /* Note the type of this child */
1279
 
  child->type = type_of_child (child);
 
1473
  /* Compute the type of the child.  Must do this before
 
1474
     calling install_new_value.  */
 
1475
  if (value != NULL)
 
1476
    /* If the child had no evaluation errors, var->value
 
1477
       will be non-NULL and contain a valid type. */
 
1478
    child->type = value_type (value);
 
1479
  else
 
1480
    /* Otherwise, we must compute the type. */
 
1481
    child->type = (*child->root->lang->type_of_child) (child->parent, 
 
1482
                                                       child->index);
 
1483
  install_new_value (child, value, 1);
1280
1484
 
1281
1485
  return child;
1282
1486
}
1283
 
 
1284
 
/* FIXME: This should be a generic add to list */
1285
 
/* Save CHILD in the PARENT's data. */
1286
 
static void
1287
 
save_child_in_parent (struct varobj *parent, struct varobj *child)
1288
 
{
1289
 
  struct varobj_child *vc;
1290
 
 
1291
 
  /* Insert the child at the top */
1292
 
  vc = parent->children;
1293
 
  parent->children =
1294
 
    (struct varobj_child *) xmalloc (sizeof (struct varobj_child));
1295
 
 
1296
 
  parent->children->next = vc;
1297
 
  parent->children->child = child;
1298
 
}
1299
 
 
1300
 
/* FIXME: This should be a generic remove from list */
1301
 
/* Remove the CHILD from the PARENT's list of children. */
1302
 
static void
1303
 
remove_child_from_parent (struct varobj *parent, struct varobj *child)
1304
 
{
1305
 
  struct varobj_child *vc, *prev;
1306
 
 
1307
 
  /* Find the child in the parent's list */
1308
 
  prev = NULL;
1309
 
  for (vc = parent->children; vc != NULL;)
1310
 
    {
1311
 
      if (vc->child == child)
1312
 
        break;
1313
 
      prev = vc;
1314
 
      vc = vc->next;
1315
 
    }
1316
 
 
1317
 
  if (prev == NULL)
1318
 
    parent->children = vc->next;
1319
 
  else
1320
 
    prev->next = vc->next;
1321
 
 
1322
 
}
1323
1487
 
1324
1488
 
1325
1489
/*
1334
1498
 
1335
1499
  var = (struct varobj *) xmalloc (sizeof (struct varobj));
1336
1500
  var->name = NULL;
 
1501
  var->path_expr = NULL;
1337
1502
  var->obj_name = NULL;
1338
1503
  var->index = -1;
1339
1504
  var->type = NULL;
1340
1505
  var->value = NULL;
1341
 
  var->error = 0;
1342
1506
  var->num_children = -1;
1343
1507
  var->parent = NULL;
1344
1508
  var->children = NULL;
1345
1509
  var->format = 0;
1346
1510
  var->root = NULL;
1347
1511
  var->updated = 0;
 
1512
  var->print_value = NULL;
 
1513
  var->frozen = 0;
 
1514
  var->not_fetched = 0;
1348
1515
 
1349
1516
  return var;
1350
1517
}
1361
1528
  var->root->frame = null_frame_id;
1362
1529
  var->root->use_selected_frame = 0;
1363
1530
  var->root->rootvar = NULL;
 
1531
  var->root->is_valid = 1;
1364
1532
 
1365
1533
  return var;
1366
1534
}
1370
1538
free_variable (struct varobj *var)
1371
1539
{
1372
1540
  /* Free the expression if this is a root variable. */
1373
 
  if (var->root->rootvar == var)
 
1541
  if (is_root_p (var))
1374
1542
    {
1375
1543
      free_current_contents (&var->root->exp);
1376
1544
      xfree (var->root);
1378
1546
 
1379
1547
  xfree (var->name);
1380
1548
  xfree (var->obj_name);
 
1549
  xfree (var->print_value);
 
1550
  xfree (var->path_expr);
1381
1551
  xfree (var);
1382
1552
}
1383
1553
 
1410
1580
  return type;
1411
1581
}
1412
1582
 
1413
 
/* This returns the type of the variable, dereferencing pointers, too. */
 
1583
/* Return the type of the value that's stored in VAR,
 
1584
   or that would have being stored there if the
 
1585
   value were accessible.  
 
1586
 
 
1587
   This differs from VAR->type in that VAR->type is always
 
1588
   the true type of the expession in the source language.
 
1589
   The return value of this function is the type we're
 
1590
   actually storing in varobj, and using for displaying
 
1591
   the values and for comparing previous and new values.
 
1592
 
 
1593
   For example, top-level references are always stripped.  */
1414
1594
static struct type *
1415
 
get_type_deref (struct varobj *var)
 
1595
get_value_type (struct varobj *var)
1416
1596
{
1417
1597
  struct type *type;
1418
1598
 
1419
 
  type = get_type (var);
1420
 
 
1421
 
  if (type != NULL && (TYPE_CODE (type) == TYPE_CODE_PTR
1422
 
                       || TYPE_CODE (type) == TYPE_CODE_REF))
 
1599
  if (var->value)
 
1600
    type = value_type (var->value);
 
1601
  else
 
1602
    type = var->type;
 
1603
 
 
1604
  type = check_typedef (type);
 
1605
 
 
1606
  if (TYPE_CODE (type) == TYPE_CODE_REF)
1423
1607
    type = get_target_type (type);
1424
1608
 
 
1609
  type = check_typedef (type);
 
1610
 
1425
1611
  return type;
1426
1612
}
1427
1613
 
1451
1637
  return FORMAT_NATURAL;
1452
1638
}
1453
1639
 
1454
 
/* This function is similar to GDB's value_contents_equal, except that
1455
 
   this one is "safe"; it never longjmps.  It determines if the VAL1's
1456
 
   value is the same as VAL2.  If for some reason the value of VAR2
1457
 
   can't be established, *ERROR2 is set to non-zero.  */
1458
 
 
1459
 
static int
1460
 
my_value_equal (struct value *val1, struct value *volatile val2, int *error2)
1461
 
{
1462
 
  volatile struct gdb_exception except;
1463
 
 
1464
 
  /* As a special case, if both are null, we say they're equal.  */
1465
 
  if (val1 == NULL && val2 == NULL)
1466
 
    return 1;
1467
 
  else if (val1 == NULL || val2 == NULL)
1468
 
    return 0;
1469
 
 
1470
 
  /* The contents of VAL1 are supposed to be known.  */
1471
 
  gdb_assert (!value_lazy (val1));
1472
 
 
1473
 
  /* Make sure we also know the contents of VAL2.  */
1474
 
  val2 = coerce_array (val2);
1475
 
  TRY_CATCH (except, RETURN_MASK_ERROR)
1476
 
    {
1477
 
      if (value_lazy (val2))
1478
 
        value_fetch_lazy (val2);
1479
 
    }
1480
 
  if (except.reason < 0)
1481
 
    {
1482
 
      *error2 = 1;
1483
 
      return 0;
1484
 
    }
1485
 
  gdb_assert (!value_lazy (val2));
1486
 
 
1487
 
  return value_contents_equal (val1, val2);
1488
 
}
1489
 
 
1490
 
/* FIXME: The following should be generic for any pointer */
1491
 
static void
1492
 
vpush (struct vstack **pstack, struct varobj *var)
1493
 
{
1494
 
  struct vstack *s;
1495
 
 
1496
 
  s = (struct vstack *) xmalloc (sizeof (struct vstack));
1497
 
  s->var = var;
1498
 
  s->next = *pstack;
1499
 
  *pstack = s;
1500
 
}
1501
 
 
1502
 
/* FIXME: The following should be generic for any pointer */
1503
 
static struct varobj *
1504
 
vpop (struct vstack **pstack)
1505
 
{
1506
 
  struct vstack *s;
1507
 
  struct varobj *v;
1508
 
 
1509
 
  if ((*pstack)->var == NULL && (*pstack)->next == NULL)
1510
 
    return NULL;
1511
 
 
1512
 
  s = *pstack;
1513
 
  v = s->var;
1514
 
  *pstack = (*pstack)->next;
1515
 
  xfree (s);
1516
 
 
1517
 
  return v;
1518
 
}
1519
 
 
1520
1640
/* FIXME: The following should be generic for any pointer */
1521
1641
static void
1522
1642
cppush (struct cpstack **pstack, char *name)
1624
1744
  /* This should really be an exception, since this should
1625
1745
     only get called with a root variable. */
1626
1746
 
1627
 
  if (var->root->rootvar != var)
 
1747
  if (!is_root_p (var))
1628
1748
    return NULL;
1629
1749
 
1630
1750
  if (var->root->use_selected_frame)
1631
1751
    {
1632
1752
      struct varobj *tmp_var;
1633
1753
      char *old_type, *new_type;
1634
 
      old_type = varobj_get_type (var);
 
1754
 
1635
1755
      tmp_var = varobj_create (NULL, var->name, (CORE_ADDR) 0,
1636
1756
                               USE_SELECTED_FRAME);
1637
1757
      if (tmp_var == NULL)
1638
1758
        {
1639
1759
          return NULL;
1640
1760
        }
 
1761
      old_type = varobj_get_type (var);
1641
1762
      new_type = varobj_get_type (tmp_var);
1642
1763
      if (strcmp (old_type, new_type) == 0)
1643
1764
        {
1661
1782
          var = *var_handle;
1662
1783
          *type_changed = 1;
1663
1784
        }
 
1785
      xfree (old_type);
 
1786
      xfree (new_type);
1664
1787
    }
1665
1788
  else
1666
1789
    {
1678
1801
 
1679
1802
  value = (*parent->root->lang->value_of_child) (parent, index);
1680
1803
 
1681
 
  /* If we're being lazy, fetch the real value of the variable. */
1682
 
  if (value != NULL && value_lazy (value))
1683
 
    {
1684
 
      /* If we fail to fetch the value of the child, return
1685
 
         NULL so that callers notice that we're leaving an
1686
 
         error message. */
1687
 
      if (!gdb_value_fetch_lazy (value))
1688
 
        value = NULL;
1689
 
    }
1690
 
 
1691
1804
  return value;
1692
1805
}
1693
1806
 
1694
 
/* What is the type of VAR? */
1695
 
static struct type *
1696
 
type_of_child (struct varobj *var)
1697
 
{
1698
 
 
1699
 
  /* If the child had no evaluation errors, var->value
1700
 
     will be non-NULL and contain a valid type. */
1701
 
  if (var->value != NULL)
1702
 
    return value_type (var->value);
1703
 
 
1704
 
  /* Otherwise, we must compute the type. */
1705
 
  return (*var->root->lang->type_of_child) (var->parent, var->index);
1706
 
}
1707
 
 
1708
1807
/* Is this variable editable? Use the variable's type to make
1709
1808
   this determination. */
1710
1809
static int
1717
1816
static char *
1718
1817
my_value_of_variable (struct varobj *var)
1719
1818
{
1720
 
  return (*var->root->lang->value_of_variable) (var);
1721
 
}
1722
 
 
1723
 
/* Is VAR something that can change? Depending on language,
1724
 
   some variable's values never change. For example,
1725
 
   struct and unions never change values. */
 
1819
  if (var->root->is_valid)
 
1820
    return (*var->root->lang->value_of_variable) (var);
 
1821
  else
 
1822
    return NULL;
 
1823
}
 
1824
 
 
1825
static char *
 
1826
value_get_print_value (struct value *value, enum varobj_display_formats format)
 
1827
{
 
1828
  long dummy;
 
1829
  struct ui_file *stb;
 
1830
  struct cleanup *old_chain;
 
1831
  char *thevalue;
 
1832
 
 
1833
  if (value == NULL)
 
1834
    return NULL;
 
1835
 
 
1836
  stb = mem_fileopen ();
 
1837
  old_chain = make_cleanup_ui_file_delete (stb);
 
1838
 
 
1839
  common_val_print (value, stb, format_code[(int) format], 1, 0, 0);
 
1840
  thevalue = ui_file_xstrdup (stb, &dummy);
 
1841
 
 
1842
  do_cleanups (old_chain);
 
1843
  return thevalue;
 
1844
}
 
1845
 
 
1846
/* Return non-zero if changes in value of VAR
 
1847
   must be detected and reported by -var-update.
 
1848
   Return zero is -var-update should never report
 
1849
   changes of such values.  This makes sense for structures
 
1850
   (since the changes in children values will be reported separately),
 
1851
   or for artifical objects (like 'public' pseudo-field in C++).
 
1852
 
 
1853
   Return value of 0 means that gdb need not call value_fetch_lazy
 
1854
   for the value of this variable object.  */
1726
1855
static int
1727
 
type_changeable (struct varobj *var)
 
1856
varobj_value_is_changeable_p (struct varobj *var)
1728
1857
{
1729
1858
  int r;
1730
1859
  struct type *type;
1732
1861
  if (CPLUS_FAKE_CHILD (var))
1733
1862
    return 0;
1734
1863
 
1735
 
  type = get_type (var);
 
1864
  type = get_value_type (var);
1736
1865
 
1737
1866
  switch (TYPE_CODE (type))
1738
1867
    {
1749
1878
  return r;
1750
1879
}
1751
1880
 
 
1881
/* Given the value and the type of a variable object,
 
1882
   adjust the value and type to those necessary
 
1883
   for getting children of the variable object.
 
1884
   This includes dereferencing top-level references
 
1885
   to all types and dereferencing pointers to
 
1886
   structures.  
 
1887
 
 
1888
   Both TYPE and *TYPE should be non-null. VALUE
 
1889
   can be null if we want to only translate type.
 
1890
   *VALUE can be null as well -- if the parent
 
1891
   value is not known.  
 
1892
 
 
1893
   If WAS_PTR is not NULL, set *WAS_PTR to 0 or 1
 
1894
   depending on whether pointer was deferenced
 
1895
   in this function.  */
 
1896
static void
 
1897
adjust_value_for_child_access (struct value **value,
 
1898
                                  struct type **type,
 
1899
                                  int *was_ptr)
 
1900
{
 
1901
  gdb_assert (type && *type);
 
1902
 
 
1903
  if (was_ptr)
 
1904
    *was_ptr = 0;
 
1905
 
 
1906
  *type = check_typedef (*type);
 
1907
  
 
1908
  /* The type of value stored in varobj, that is passed
 
1909
     to us, is already supposed to be
 
1910
     reference-stripped.  */
 
1911
 
 
1912
  gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF);
 
1913
 
 
1914
  /* Pointers to structures are treated just like
 
1915
     structures when accessing children.  Don't
 
1916
     dererences pointers to other types.  */
 
1917
  if (TYPE_CODE (*type) == TYPE_CODE_PTR)
 
1918
    {
 
1919
      struct type *target_type = get_target_type (*type);
 
1920
      if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
 
1921
          || TYPE_CODE (target_type) == TYPE_CODE_UNION)
 
1922
        {
 
1923
          if (value && *value)
 
1924
            gdb_value_ind (*value, value);        
 
1925
          *type = target_type;
 
1926
          if (was_ptr)
 
1927
            *was_ptr = 1;
 
1928
        }
 
1929
    }
 
1930
 
 
1931
  /* The 'get_target_type' function calls check_typedef on
 
1932
     result, so we can immediately check type code.  No
 
1933
     need to call check_typedef here.  */
 
1934
}
 
1935
 
1752
1936
/* C */
1753
1937
static int
1754
1938
c_number_of_children (struct varobj *var)
1755
1939
{
1756
 
  struct type *type;
 
1940
  struct type *type = get_value_type (var);
 
1941
  int children = 0;
1757
1942
  struct type *target;
1758
 
  int children;
1759
1943
 
1760
 
  type = get_type (var);
 
1944
  adjust_value_for_child_access (NULL, &type, NULL);
1761
1945
  target = get_target_type (type);
1762
 
  children = 0;
1763
1946
 
1764
1947
  switch (TYPE_CODE (type))
1765
1948
    {
1768
1951
          && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED)
1769
1952
        children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
1770
1953
      else
1771
 
        children = -1;
 
1954
        /* If we don't know how many elements there are, don't display
 
1955
           any.  */
 
1956
        children = 0;
1772
1957
      break;
1773
1958
 
1774
1959
    case TYPE_CODE_STRUCT:
1777
1962
      break;
1778
1963
 
1779
1964
    case TYPE_CODE_PTR:
1780
 
      /* This is where things get compilcated. All pointers have one child.
1781
 
         Except, of course, for struct and union ptr, which we automagically
1782
 
         dereference for the user and function ptrs, which have no children.
1783
 
         We also don't dereference void* as we don't know what to show.
 
1965
      /* The type here is a pointer to non-struct. Typically, pointers
 
1966
         have one child, except for function ptrs, which have no children,
 
1967
         and except for void*, as we don't know what to show.
 
1968
 
1784
1969
         We can show char* so we allow it to be dereferenced.  If you decide
1785
1970
         to test for it, please mind that a little magic is necessary to
1786
1971
         properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
1787
1972
         TYPE_NAME == "char" */
1788
 
 
1789
 
      switch (TYPE_CODE (target))
1790
 
        {
1791
 
        case TYPE_CODE_STRUCT:
1792
 
        case TYPE_CODE_UNION:
1793
 
          children = TYPE_NFIELDS (target);
1794
 
          break;
1795
 
 
1796
 
        case TYPE_CODE_FUNC:
1797
 
        case TYPE_CODE_VOID:
1798
 
          children = 0;
1799
 
          break;
1800
 
 
1801
 
        default:
1802
 
          children = 1;
1803
 
        }
 
1973
      if (TYPE_CODE (target) == TYPE_CODE_FUNC
 
1974
          || TYPE_CODE (target) == TYPE_CODE_VOID)
 
1975
        children = 0;
 
1976
      else
 
1977
        children = 1;
1804
1978
      break;
1805
1979
 
1806
1980
    default:
1817
1991
  return savestring (parent->name, strlen (parent->name));
1818
1992
}
1819
1993
 
 
1994
/* Return the value of element TYPE_INDEX of a structure
 
1995
   value VALUE.  VALUE's type should be a structure,
 
1996
   or union, or a typedef to struct/union.  
 
1997
 
 
1998
   Returns NULL if getting the value fails.  Never throws.  */
 
1999
static struct value *
 
2000
value_struct_element_index (struct value *value, int type_index)
 
2001
{
 
2002
  struct value *result = NULL;
 
2003
  volatile struct gdb_exception e;
 
2004
 
 
2005
  struct type *type = value_type (value);
 
2006
  type = check_typedef (type);
 
2007
 
 
2008
  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
 
2009
              || TYPE_CODE (type) == TYPE_CODE_UNION);
 
2010
 
 
2011
  TRY_CATCH (e, RETURN_MASK_ERROR)
 
2012
    {
 
2013
      if (TYPE_FIELD_STATIC (type, type_index))
 
2014
        result = value_static_field (type, type_index);
 
2015
      else
 
2016
        result = value_primitive_field (value, 0, type_index, type);
 
2017
    }
 
2018
  if (e.reason < 0)
 
2019
    {
 
2020
      return NULL;
 
2021
    }
 
2022
  else
 
2023
    {
 
2024
      return result;
 
2025
    }
 
2026
}
 
2027
 
 
2028
/* Obtain the information about child INDEX of the variable
 
2029
   object PARENT.  
 
2030
   If CNAME is not null, sets *CNAME to the name of the child relative
 
2031
   to the parent.
 
2032
   If CVALUE is not null, sets *CVALUE to the value of the child.
 
2033
   If CTYPE is not null, sets *CTYPE to the type of the child.
 
2034
 
 
2035
   If any of CNAME, CVALUE, or CTYPE is not null, but the corresponding
 
2036
   information cannot be determined, set *CNAME, *CVALUE, or *CTYPE
 
2037
   to NULL.  */
 
2038
static void 
 
2039
c_describe_child (struct varobj *parent, int index,
 
2040
                  char **cname, struct value **cvalue, struct type **ctype,
 
2041
                  char **cfull_expression)
 
2042
{
 
2043
  struct value *value = parent->value;
 
2044
  struct type *type = get_value_type (parent);
 
2045
  char *parent_expression = NULL;
 
2046
  int was_ptr;
 
2047
 
 
2048
  if (cname)
 
2049
    *cname = NULL;
 
2050
  if (cvalue)
 
2051
    *cvalue = NULL;
 
2052
  if (ctype)
 
2053
    *ctype = NULL;
 
2054
  if (cfull_expression)
 
2055
    {
 
2056
      *cfull_expression = NULL;
 
2057
      parent_expression = varobj_get_path_expr (parent);
 
2058
    }
 
2059
  adjust_value_for_child_access (&value, &type, &was_ptr);
 
2060
      
 
2061
  switch (TYPE_CODE (type))
 
2062
    {
 
2063
    case TYPE_CODE_ARRAY:
 
2064
      if (cname)
 
2065
        *cname = xstrprintf ("%d", index
 
2066
                             + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
 
2067
 
 
2068
      if (cvalue && value)
 
2069
        {
 
2070
          int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
 
2071
          struct value *indval = 
 
2072
            value_from_longest (builtin_type_int, (LONGEST) real_index);
 
2073
          gdb_value_subscript (value, indval, cvalue);
 
2074
        }
 
2075
 
 
2076
      if (ctype)
 
2077
        *ctype = get_target_type (type);
 
2078
 
 
2079
      if (cfull_expression)
 
2080
        *cfull_expression = xstrprintf ("(%s)[%d]", parent_expression, 
 
2081
                                        index
 
2082
                                        + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
 
2083
 
 
2084
 
 
2085
      break;
 
2086
 
 
2087
    case TYPE_CODE_STRUCT:
 
2088
    case TYPE_CODE_UNION:
 
2089
      if (cname)
 
2090
        {
 
2091
          char *string = TYPE_FIELD_NAME (type, index);
 
2092
          *cname = savestring (string, strlen (string));
 
2093
        }
 
2094
 
 
2095
      if (cvalue && value)
 
2096
        {
 
2097
          /* For C, varobj index is the same as type index.  */
 
2098
          *cvalue = value_struct_element_index (value, index);
 
2099
        }
 
2100
 
 
2101
      if (ctype)
 
2102
        *ctype = TYPE_FIELD_TYPE (type, index);
 
2103
 
 
2104
      if (cfull_expression)
 
2105
        {
 
2106
          char *join = was_ptr ? "->" : ".";
 
2107
          *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join,
 
2108
                                          TYPE_FIELD_NAME (type, index));
 
2109
        }
 
2110
 
 
2111
      break;
 
2112
 
 
2113
    case TYPE_CODE_PTR:
 
2114
      if (cname)
 
2115
        *cname = xstrprintf ("*%s", parent->name);
 
2116
 
 
2117
      if (cvalue && value)
 
2118
        gdb_value_ind (value, cvalue);
 
2119
 
 
2120
      /* Don't use get_target_type because it calls
 
2121
         check_typedef and here, we want to show the true
 
2122
         declared type of the variable.  */
 
2123
      if (ctype)
 
2124
        *ctype = TYPE_TARGET_TYPE (type);
 
2125
 
 
2126
      if (cfull_expression)
 
2127
        *cfull_expression = xstrprintf ("*(%s)", parent_expression);
 
2128
      
 
2129
      break;
 
2130
 
 
2131
    default:
 
2132
      /* This should not happen */
 
2133
      if (cname)
 
2134
        *cname = xstrdup ("???");
 
2135
      if (cfull_expression)
 
2136
        *cfull_expression = xstrdup ("???");
 
2137
      /* Don't set value and type, we don't know then. */
 
2138
    }
 
2139
}
 
2140
 
1820
2141
static char *
1821
2142
c_name_of_child (struct varobj *parent, int index)
1822
2143
{
1823
 
  struct type *type;
1824
 
  struct type *target;
1825
2144
  char *name;
1826
 
  char *string;
1827
 
 
1828
 
  type = get_type (parent);
1829
 
  target = get_target_type (type);
1830
 
 
1831
 
  switch (TYPE_CODE (type))
1832
 
    {
1833
 
    case TYPE_CODE_ARRAY:
1834
 
      name = xstrprintf ("%d", index
1835
 
                         + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)));
1836
 
      break;
1837
 
 
1838
 
    case TYPE_CODE_STRUCT:
1839
 
    case TYPE_CODE_UNION:
1840
 
      string = TYPE_FIELD_NAME (type, index);
1841
 
      name = savestring (string, strlen (string));
1842
 
      break;
1843
 
 
1844
 
    case TYPE_CODE_PTR:
1845
 
      switch (TYPE_CODE (target))
1846
 
        {
1847
 
        case TYPE_CODE_STRUCT:
1848
 
        case TYPE_CODE_UNION:
1849
 
          string = TYPE_FIELD_NAME (target, index);
1850
 
          name = savestring (string, strlen (string));
1851
 
          break;
1852
 
 
1853
 
        default:
1854
 
          name = xstrprintf ("*%s", parent->name);
1855
 
          break;
1856
 
        }
1857
 
      break;
1858
 
 
1859
 
    default:
1860
 
      /* This should not happen */
1861
 
      name = xstrdup ("???");
1862
 
    }
1863
 
 
 
2145
  c_describe_child (parent, index, &name, NULL, NULL, NULL);
1864
2146
  return name;
1865
2147
}
1866
2148
 
 
2149
static char *
 
2150
c_path_expr_of_child (struct varobj *child)
 
2151
{
 
2152
  c_describe_child (child->parent, child->index, NULL, NULL, NULL, 
 
2153
                    &child->path_expr);
 
2154
  return child->path_expr;
 
2155
}
 
2156
 
1867
2157
static struct value *
1868
2158
c_value_of_root (struct varobj **var_handle)
1869
2159
{
1870
 
  struct value *new_val;
 
2160
  struct value *new_val = NULL;
1871
2161
  struct varobj *var = *var_handle;
1872
2162
  struct frame_info *fi;
1873
2163
  int within_scope;
1874
2164
 
1875
2165
  /*  Only root variables can be updated... */
1876
 
  if (var->root->rootvar != var)
 
2166
  if (!is_root_p (var))
1877
2167
    /* Not a root var */
1878
2168
    return NULL;
1879
2169
 
1880
2170
 
1881
2171
  /* Determine whether the variable is still around. */
1882
 
  if (var->root->valid_block == NULL)
 
2172
  if (var->root->valid_block == NULL || var->root->use_selected_frame)
1883
2173
    within_scope = 1;
1884
2174
  else
1885
2175
    {
1886
 
      reinit_frame_cache ();
1887
2176
      fi = frame_find_by_id (var->root->frame);
1888
2177
      within_scope = fi != NULL;
1889
2178
      /* FIXME: select_frame could fail */
1890
 
      if (within_scope)
1891
 
        select_frame (fi);
 
2179
      if (fi)
 
2180
        {
 
2181
          CORE_ADDR pc = get_frame_pc (fi);
 
2182
          if (pc <  BLOCK_START (var->root->valid_block) ||
 
2183
              pc >= BLOCK_END (var->root->valid_block))
 
2184
            within_scope = 0;
 
2185
          else
 
2186
            select_frame (fi);
 
2187
        }         
1892
2188
    }
1893
2189
 
1894
2190
  if (within_scope)
1895
2191
    {
1896
2192
      /* We need to catch errors here, because if evaluate
1897
 
         expression fails we just want to make val->error = 1 and
1898
 
         go on */
1899
 
      if (gdb_evaluate_expression (var->root->exp, &new_val))
1900
 
        {
1901
 
          if (value_lazy (new_val))
1902
 
            {
1903
 
              /* We need to catch errors because if
1904
 
                 value_fetch_lazy fails we still want to continue
1905
 
                 (after making val->error = 1) */
1906
 
              /* FIXME: Shouldn't be using value_contents()?  The
1907
 
                 comment on value_fetch_lazy() says it is only called
1908
 
                 from the macro... */
1909
 
              if (!gdb_value_fetch_lazy (new_val))
1910
 
                var->error = 1;
1911
 
              else
1912
 
                var->error = 0;
1913
 
            }
1914
 
        }
1915
 
      else
1916
 
        var->error = 1;
1917
 
 
1918
 
      release_value (new_val);
 
2193
         expression fails we want to just return NULL.  */
 
2194
      gdb_evaluate_expression (var->root->exp, &new_val);
1919
2195
      return new_val;
1920
2196
    }
1921
2197
 
1925
2201
static struct value *
1926
2202
c_value_of_child (struct varobj *parent, int index)
1927
2203
{
1928
 
  struct value *value;
1929
 
  struct value *temp;
1930
 
  struct value *indval;
1931
 
  struct type *type, *target;
1932
 
  char *name;
1933
 
  int real_index;
1934
 
 
1935
 
  type = get_type (parent);
1936
 
  target = get_target_type (type);
1937
 
  name = name_of_child (parent, index);
1938
 
  temp = parent->value;
1939
 
  value = NULL;
1940
 
 
1941
 
  if (temp != NULL)
1942
 
    {
1943
 
      switch (TYPE_CODE (type))
1944
 
        {
1945
 
        case TYPE_CODE_ARRAY:
1946
 
          real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
1947
 
#if 0
1948
 
          /* This breaks if the array lives in a (vector) register. */
1949
 
          value = value_slice (temp, real_index, 1);
1950
 
          temp = value_coerce_array (value);
1951
 
          gdb_value_ind (temp, &value);
1952
 
#else
1953
 
          indval = value_from_longest (builtin_type_int, (LONGEST) real_index);
1954
 
          gdb_value_subscript (temp, indval, &value);
1955
 
#endif
1956
 
          break;
1957
 
 
1958
 
        case TYPE_CODE_STRUCT:
1959
 
        case TYPE_CODE_UNION:
1960
 
          gdb_value_struct_elt (NULL, &value, &temp, NULL, name, NULL,
1961
 
                                "vstructure");
1962
 
          break;
1963
 
 
1964
 
        case TYPE_CODE_PTR:
1965
 
          switch (TYPE_CODE (target))
1966
 
            {
1967
 
            case TYPE_CODE_STRUCT:
1968
 
            case TYPE_CODE_UNION:
1969
 
              gdb_value_struct_elt (NULL, &value, &temp, NULL, name, NULL,
1970
 
                                    "vstructure");
1971
 
              break;
1972
 
 
1973
 
            default:
1974
 
              gdb_value_ind (temp, &value);
1975
 
              break;
1976
 
            }
1977
 
          break;
1978
 
 
1979
 
        default:
1980
 
          break;
1981
 
        }
1982
 
    }
1983
 
 
1984
 
  if (value != NULL)
1985
 
    release_value (value);
1986
 
 
1987
 
  xfree (name);
 
2204
  struct value *value = NULL;
 
2205
  c_describe_child (parent, index, NULL, &value, NULL, NULL);
 
2206
 
1988
2207
  return value;
1989
2208
}
1990
2209
 
1991
2210
static struct type *
1992
2211
c_type_of_child (struct varobj *parent, int index)
1993
2212
{
1994
 
  struct type *type;
1995
 
  char *name = name_of_child (parent, index);
1996
 
 
1997
 
  switch (TYPE_CODE (parent->type))
1998
 
    {
1999
 
    case TYPE_CODE_ARRAY:
2000
 
      type = get_target_type (parent->type);
2001
 
      break;
2002
 
 
2003
 
    case TYPE_CODE_STRUCT:
2004
 
    case TYPE_CODE_UNION:
2005
 
      type = lookup_struct_elt_type (parent->type, name, 0);
2006
 
      break;
2007
 
 
2008
 
    case TYPE_CODE_PTR:
2009
 
      switch (TYPE_CODE (get_target_type (parent->type)))
2010
 
        {
2011
 
        case TYPE_CODE_STRUCT:
2012
 
        case TYPE_CODE_UNION:
2013
 
          type = lookup_struct_elt_type (parent->type, name, 0);
2014
 
          break;
2015
 
 
2016
 
        default:
2017
 
          type = get_target_type (parent->type);
2018
 
          break;
2019
 
        }
2020
 
      break;
2021
 
 
2022
 
    default:
2023
 
      /* This should not happen as only the above types have children */
2024
 
      warning (_("Child of parent whose type does not allow children"));
2025
 
      /* FIXME: Can we still go on? */
2026
 
      type = NULL;
2027
 
      break;
2028
 
    }
2029
 
 
2030
 
  xfree (name);
 
2213
  struct type *type = NULL;
 
2214
  c_describe_child (parent, index, NULL, NULL, &type, NULL);
2031
2215
  return type;
2032
2216
}
2033
2217
 
2034
2218
static int
2035
2219
c_variable_editable (struct varobj *var)
2036
2220
{
2037
 
  switch (TYPE_CODE (get_type (var)))
 
2221
  switch (TYPE_CODE (get_value_type (var)))
2038
2222
    {
2039
2223
    case TYPE_CODE_STRUCT:
2040
2224
    case TYPE_CODE_UNION:
2041
2225
    case TYPE_CODE_ARRAY:
2042
2226
    case TYPE_CODE_FUNC:
2043
 
    case TYPE_CODE_MEMBER:
2044
2227
    case TYPE_CODE_METHOD:
2045
2228
      return 0;
2046
2229
      break;
2089
2272
          }
2090
2273
        else
2091
2274
          {
2092
 
            long dummy;
2093
 
            struct ui_file *stb = mem_fileopen ();
2094
 
            struct cleanup *old_chain = make_cleanup_ui_file_delete (stb);
2095
 
            char *thevalue;
 
2275
            if (var->not_fetched && value_lazy (var->value))
 
2276
              /* Frozen variable and no value yet.  We don't
 
2277
                 implicitly fetch the value.  MI response will
 
2278
                 use empty string for the value, which is OK.  */
 
2279
              return NULL;
2096
2280
 
2097
 
            if (value_lazy (var->value))
2098
 
              gdb_value_fetch_lazy (var->value);
2099
 
            common_val_print (var->value, stb,
2100
 
                              format_code[(int) var->format], 1, 0, 0);
2101
 
            thevalue = ui_file_xstrdup (stb, &dummy);
2102
 
            do_cleanups (old_chain);
2103
 
        return thevalue;
2104
 
      }
 
2281
            gdb_assert (varobj_value_is_changeable_p (var));
 
2282
            gdb_assert (!value_lazy (var->value));
 
2283
            return value_get_print_value (var->value, var->format);
 
2284
          }
2105
2285
      }
2106
2286
    }
2107
2287
}
2120
2300
 
2121
2301
  if (!CPLUS_FAKE_CHILD (var))
2122
2302
    {
2123
 
      type = get_type_deref (var);
 
2303
      type = get_value_type (var);
 
2304
      adjust_value_for_child_access (NULL, &type, NULL);
2124
2305
 
2125
2306
      if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
2126
2307
          ((TYPE_CODE (type)) == TYPE_CODE_UNION))
2146
2327
    {
2147
2328
      int kids[3];
2148
2329
 
2149
 
      type = get_type_deref (var->parent);
 
2330
      type = get_value_type (var->parent);
 
2331
      adjust_value_for_child_access (NULL, &type, NULL);
2150
2332
 
2151
2333
      cplus_class_num_children (type, kids);
2152
2334
      if (strcmp (var->name, "public") == 0)
2197
2379
  return c_name_of_variable (parent);
2198
2380
}
2199
2381
 
2200
 
static char *
2201
 
cplus_name_of_child (struct varobj *parent, int index)
2202
 
{
2203
 
  char *name;
 
2382
enum accessibility { private_field, protected_field, public_field };
 
2383
 
 
2384
/* Check if field INDEX of TYPE has the specified accessibility.
 
2385
   Return 0 if so and 1 otherwise.  */
 
2386
static int 
 
2387
match_accessibility (struct type *type, int index, enum accessibility acc)
 
2388
{
 
2389
  if (acc == private_field && TYPE_FIELD_PRIVATE (type, index))
 
2390
    return 1;
 
2391
  else if (acc == protected_field && TYPE_FIELD_PROTECTED (type, index))
 
2392
    return 1;
 
2393
  else if (acc == public_field && !TYPE_FIELD_PRIVATE (type, index)
 
2394
           && !TYPE_FIELD_PROTECTED (type, index))
 
2395
    return 1;
 
2396
  else
 
2397
    return 0;
 
2398
}
 
2399
 
 
2400
static void
 
2401
cplus_describe_child (struct varobj *parent, int index,
 
2402
                      char **cname, struct value **cvalue, struct type **ctype,
 
2403
                      char **cfull_expression)
 
2404
{
 
2405
  char *name = NULL;
 
2406
  struct value *value;
2204
2407
  struct type *type;
 
2408
  int was_ptr;
 
2409
  char *parent_expression = NULL;
 
2410
 
 
2411
  if (cname)
 
2412
    *cname = NULL;
 
2413
  if (cvalue)
 
2414
    *cvalue = NULL;
 
2415
  if (ctype)
 
2416
    *ctype = NULL;
 
2417
  if (cfull_expression)
 
2418
    *cfull_expression = NULL;
2205
2419
 
2206
2420
  if (CPLUS_FAKE_CHILD (parent))
2207
2421
    {
2208
 
      /* Looking for children of public, private, or protected. */
2209
 
      type = get_type_deref (parent->parent);
 
2422
      value = parent->parent->value;
 
2423
      type = get_value_type (parent->parent);
 
2424
      if (cfull_expression)
 
2425
        parent_expression = varobj_get_path_expr (parent->parent);
2210
2426
    }
2211
2427
  else
2212
 
    type = get_type_deref (parent);
2213
 
 
2214
 
  name = NULL;
2215
 
  switch (TYPE_CODE (type))
2216
 
    {
2217
 
    case TYPE_CODE_STRUCT:
2218
 
    case TYPE_CODE_UNION:
 
2428
    {
 
2429
      value = parent->value;
 
2430
      type = get_value_type (parent);
 
2431
      if (cfull_expression)
 
2432
        parent_expression = varobj_get_path_expr (parent);
 
2433
    }
 
2434
 
 
2435
  adjust_value_for_child_access (&value, &type, &was_ptr);
 
2436
 
 
2437
  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
 
2438
      || TYPE_CODE (type) == TYPE_CODE_STRUCT)
 
2439
    {
 
2440
      char *join = was_ptr ? "->" : ".";
2219
2441
      if (CPLUS_FAKE_CHILD (parent))
2220
2442
        {
2221
2443
          /* The fields of the class type are ordered as they
2225
2447
             have the access control we are looking for to properly
2226
2448
             find the indexed field. */
2227
2449
          int type_index = TYPE_N_BASECLASSES (type);
 
2450
          enum accessibility acc = public_field;
2228
2451
          if (strcmp (parent->name, "private") == 0)
2229
 
            {
2230
 
              while (index >= 0)
2231
 
                {
2232
 
                  if (TYPE_VPTR_BASETYPE (type) == type
2233
 
                      && type_index == TYPE_VPTR_FIELDNO (type))
2234
 
                    ; /* ignore vptr */
2235
 
                  else if (TYPE_FIELD_PRIVATE (type, type_index))
2236
 
                    --index;
2237
 
                  ++type_index;
2238
 
                }
2239
 
              --type_index;
2240
 
            }
 
2452
            acc = private_field;
2241
2453
          else if (strcmp (parent->name, "protected") == 0)
2242
 
            {
2243
 
              while (index >= 0)
2244
 
                {
2245
 
                  if (TYPE_VPTR_BASETYPE (type) == type
2246
 
                      && type_index == TYPE_VPTR_FIELDNO (type))
2247
 
                    ; /* ignore vptr */
2248
 
                  else if (TYPE_FIELD_PROTECTED (type, type_index))
2249
 
                    --index;
2250
 
                  ++type_index;
2251
 
                }
2252
 
              --type_index;
2253
 
            }
2254
 
          else
2255
 
            {
2256
 
              while (index >= 0)
2257
 
                {
2258
 
                  if (TYPE_VPTR_BASETYPE (type) == type
2259
 
                      && type_index == TYPE_VPTR_FIELDNO (type))
2260
 
                    ; /* ignore vptr */
2261
 
                  else if (!TYPE_FIELD_PRIVATE (type, type_index) &&
2262
 
                      !TYPE_FIELD_PROTECTED (type, type_index))
2263
 
                    --index;
2264
 
                  ++type_index;
2265
 
                }
2266
 
              --type_index;
2267
 
            }
2268
 
 
2269
 
          name = TYPE_FIELD_NAME (type, type_index);
 
2454
            acc = protected_field;
 
2455
 
 
2456
          while (index >= 0)
 
2457
            {
 
2458
              if (TYPE_VPTR_BASETYPE (type) == type
 
2459
                  && type_index == TYPE_VPTR_FIELDNO (type))
 
2460
                ; /* ignore vptr */
 
2461
              else if (match_accessibility (type, type_index, acc))
 
2462
                    --index;
 
2463
                  ++type_index;
 
2464
            }
 
2465
          --type_index;
 
2466
 
 
2467
          if (cname)
 
2468
            *cname = xstrdup (TYPE_FIELD_NAME (type, type_index));
 
2469
 
 
2470
          if (cvalue && value)
 
2471
            *cvalue = value_struct_element_index (value, type_index);
 
2472
 
 
2473
          if (ctype)
 
2474
            *ctype = TYPE_FIELD_TYPE (type, type_index);
 
2475
 
 
2476
          if (cfull_expression)
 
2477
            *cfull_expression = xstrprintf ("((%s)%s%s)", parent_expression,
 
2478
                                            join, 
 
2479
                                            TYPE_FIELD_NAME (type, type_index));
2270
2480
        }
2271
2481
      else if (index < TYPE_N_BASECLASSES (type))
2272
 
        /* We are looking up the name of a base class */
2273
 
        name = TYPE_FIELD_NAME (type, index);
 
2482
        {
 
2483
          /* This is a baseclass.  */
 
2484
          if (cname)
 
2485
            *cname = xstrdup (TYPE_FIELD_NAME (type, index));
 
2486
 
 
2487
          if (cvalue && value)
 
2488
            {
 
2489
              *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
 
2490
              release_value (*cvalue);
 
2491
            }
 
2492
 
 
2493
          if (ctype)
 
2494
            {
 
2495
              *ctype = TYPE_FIELD_TYPE (type, index);
 
2496
            }
 
2497
 
 
2498
          if (cfull_expression)
 
2499
            {
 
2500
              char *ptr = was_ptr ? "*" : "";
 
2501
              /* Cast the parent to the base' type. Note that in gdb,
 
2502
                 expression like 
 
2503
                         (Base1)d
 
2504
                 will create an lvalue, for all appearences, so we don't
 
2505
                 need to use more fancy:
 
2506
                         *(Base1*)(&d)
 
2507
                 construct.  */
 
2508
              *cfull_expression = xstrprintf ("(%s(%s%s) %s)", 
 
2509
                                              ptr, 
 
2510
                                              TYPE_FIELD_NAME (type, index),
 
2511
                                              ptr,
 
2512
                                              parent_expression);
 
2513
            }
 
2514
        }
2274
2515
      else
2275
2516
        {
 
2517
          char *access = NULL;
2276
2518
          int children[3];
2277
 
          cplus_class_num_children(type, children);
 
2519
          cplus_class_num_children (type, children);
2278
2520
 
2279
2521
          /* Everything beyond the baseclasses can
2280
2522
             only be "public", "private", or "protected"
2286
2528
            {
2287
2529
            case 0:
2288
2530
              if (children[v_public] > 0)
2289
 
                name = "public";
 
2531
                access = "public";
2290
2532
              else if (children[v_private] > 0)
2291
 
                name = "private";
 
2533
                access = "private";
2292
2534
              else 
2293
 
                name = "protected";
 
2535
                access = "protected";
2294
2536
              break;
2295
2537
            case 1:
2296
2538
              if (children[v_public] > 0)
2297
2539
                {
2298
2540
                  if (children[v_private] > 0)
2299
 
                    name = "private";
 
2541
                    access = "private";
2300
2542
                  else
2301
 
                    name = "protected";
 
2543
                    access = "protected";
2302
2544
                }
2303
2545
              else if (children[v_private] > 0)
2304
 
                name = "protected";
 
2546
                access = "protected";
2305
2547
              break;
2306
2548
            case 2:
2307
2549
              /* Must be protected */
2308
 
              name = "protected";
 
2550
              access = "protected";
2309
2551
              break;
2310
2552
            default:
2311
2553
              /* error! */
2312
2554
              break;
2313
2555
            }
 
2556
 
 
2557
          gdb_assert (access);
 
2558
          if (cname)
 
2559
            *cname = xstrdup (access);
 
2560
 
 
2561
          /* Value and type and full expression are null here.  */
2314
2562
        }
2315
 
      break;
2316
 
 
2317
 
    default:
2318
 
      break;
2319
2563
    }
2320
 
 
2321
 
  if (name == NULL)
2322
 
    return c_name_of_child (parent, index);
2323
2564
  else
2324
2565
    {
2325
 
      if (name != NULL)
2326
 
        name = savestring (name, strlen (name));
2327
 
    }
 
2566
      c_describe_child (parent, index, cname, cvalue, ctype, cfull_expression);
 
2567
    }  
 
2568
}
2328
2569
 
 
2570
static char *
 
2571
cplus_name_of_child (struct varobj *parent, int index)
 
2572
{
 
2573
  char *name = NULL;
 
2574
  cplus_describe_child (parent, index, &name, NULL, NULL, NULL);
2329
2575
  return name;
2330
2576
}
2331
2577
 
 
2578
static char *
 
2579
cplus_path_expr_of_child (struct varobj *child)
 
2580
{
 
2581
  cplus_describe_child (child->parent, child->index, NULL, NULL, NULL, 
 
2582
                        &child->path_expr);
 
2583
  return child->path_expr;
 
2584
}
 
2585
 
2332
2586
static struct value *
2333
2587
cplus_value_of_root (struct varobj **var_handle)
2334
2588
{
2338
2592
static struct value *
2339
2593
cplus_value_of_child (struct varobj *parent, int index)
2340
2594
{
2341
 
  struct type *type;
2342
 
  struct value *value;
2343
 
 
2344
 
  if (CPLUS_FAKE_CHILD (parent))
2345
 
    type = get_type_deref (parent->parent);
2346
 
  else
2347
 
    type = get_type_deref (parent);
2348
 
 
2349
 
  value = NULL;
2350
 
 
2351
 
  if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
2352
 
      ((TYPE_CODE (type)) == TYPE_CODE_UNION))
2353
 
    {
2354
 
      if (CPLUS_FAKE_CHILD (parent))
2355
 
        {
2356
 
          char *name;
2357
 
          struct value *temp = parent->parent->value;
2358
 
 
2359
 
          if (temp == NULL)
2360
 
            return NULL;
2361
 
 
2362
 
          name = name_of_child (parent, index);
2363
 
          gdb_value_struct_elt (NULL, &value, &temp, NULL, name, NULL,
2364
 
                                "cplus_structure");
2365
 
          if (value != NULL)
2366
 
            release_value (value);
2367
 
 
2368
 
          xfree (name);
2369
 
        }
2370
 
      else if (index >= TYPE_N_BASECLASSES (type))
2371
 
        {
2372
 
          /* public, private, or protected */
2373
 
          return NULL;
2374
 
        }
2375
 
      else
2376
 
        {
2377
 
          /* Baseclass */
2378
 
          if (parent->value != NULL)
2379
 
            {
2380
 
              struct value *temp = NULL;
2381
 
 
2382
 
              /* No special processing for references is needed --
2383
 
                 value_cast below handles references.  */
2384
 
              if (TYPE_CODE (value_type (parent->value)) == TYPE_CODE_PTR)
2385
 
                {
2386
 
                  if (!gdb_value_ind (parent->value, &temp))
2387
 
                    return NULL;
2388
 
                }
2389
 
              else
2390
 
                temp = parent->value;
2391
 
 
2392
 
              if (temp != NULL)
2393
 
                {
2394
 
                  value = value_cast (TYPE_FIELD_TYPE (type, index), temp);
2395
 
                  release_value (value);
2396
 
                }
2397
 
              else
2398
 
                {
2399
 
                  /* We failed to evaluate the parent's value, so don't even
2400
 
                     bother trying to evaluate this child. */
2401
 
                  return NULL;
2402
 
                }
2403
 
            }
2404
 
        }
2405
 
    }
2406
 
 
2407
 
  if (value == NULL)
2408
 
    return c_value_of_child (parent, index);
2409
 
 
 
2595
  struct value *value = NULL;
 
2596
  cplus_describe_child (parent, index, NULL, &value, NULL, NULL);
2410
2597
  return value;
2411
2598
}
2412
2599
 
2413
2600
static struct type *
2414
2601
cplus_type_of_child (struct varobj *parent, int index)
2415
2602
{
2416
 
  struct type *type, *t;
2417
 
 
2418
 
  if (CPLUS_FAKE_CHILD (parent))
2419
 
    {
2420
 
      /* Looking for the type of a child of public, private, or protected. */
2421
 
      t = get_type_deref (parent->parent);
2422
 
    }
2423
 
  else
2424
 
    t = get_type_deref (parent);
2425
 
 
2426
 
  type = NULL;
2427
 
  switch (TYPE_CODE (t))
2428
 
    {
2429
 
    case TYPE_CODE_STRUCT:
2430
 
    case TYPE_CODE_UNION:
2431
 
      if (CPLUS_FAKE_CHILD (parent))
2432
 
        {
2433
 
          char *name = cplus_name_of_child (parent, index);
2434
 
          type = lookup_struct_elt_type (t, name, 0);
2435
 
          xfree (name);
2436
 
        }
2437
 
      else if (index < TYPE_N_BASECLASSES (t))
2438
 
        type = TYPE_FIELD_TYPE (t, index);
2439
 
      else
2440
 
        {
2441
 
          /* special */
2442
 
          return NULL;
2443
 
        }
2444
 
      break;
2445
 
 
2446
 
    default:
2447
 
      break;
2448
 
    }
2449
 
 
2450
 
  if (type == NULL)
2451
 
    return c_type_of_child (parent, index);
2452
 
 
 
2603
  struct type *type = NULL;
 
2604
  cplus_describe_child (parent, index, NULL, NULL, &type, NULL);
2453
2605
  return type;
2454
2606
}
2455
2607
 
2521
2673
  return name;
2522
2674
}
2523
2675
 
 
2676
static char *
 
2677
java_path_expr_of_child (struct varobj *child)
 
2678
{
 
2679
  return NULL;
 
2680
}
 
2681
 
2524
2682
static struct value *
2525
2683
java_value_of_root (struct varobj **var_handle)
2526
2684
{
2569
2727
                            show_varobjdebug,
2570
2728
                            &setlist, &showlist);
2571
2729
}
 
2730
 
 
2731
/* Invalidate the varobjs that are tied to locals and re-create the ones that
 
2732
   are defined on globals.
 
2733
   Invalidated varobjs will be always printed in_scope="invalid".  */
 
2734
void 
 
2735
varobj_invalidate (void)
 
2736
{
 
2737
  struct varobj **all_rootvarobj;
 
2738
  struct varobj **varp;
 
2739
 
 
2740
  if (varobj_list (&all_rootvarobj) > 0)
 
2741
  {
 
2742
    varp = all_rootvarobj;
 
2743
    while (*varp != NULL)
 
2744
      {
 
2745
        /* global var must be re-evaluated.  */     
 
2746
        if ((*varp)->root->valid_block == NULL)
 
2747
        {
 
2748
          struct varobj *tmp_var;
 
2749
 
 
2750
          /* Try to create a varobj with same expression.  If we succeed replace
 
2751
             the old varobj, otherwise invalidate it.  */
 
2752
          tmp_var = varobj_create (NULL, (*varp)->name, (CORE_ADDR) 0, USE_CURRENT_FRAME);
 
2753
          if (tmp_var != NULL) 
 
2754
            { 
 
2755
              tmp_var->obj_name = xstrdup ((*varp)->obj_name);
 
2756
              varobj_delete (*varp, NULL, 0);
 
2757
              install_variable (tmp_var);
 
2758
            }
 
2759
          else
 
2760
              (*varp)->root->is_valid = 0;
 
2761
        }
 
2762
        else /* locals must be invalidated.  */
 
2763
          (*varp)->root->is_valid = 0;
 
2764
 
 
2765
        varp++;
 
2766
      }
 
2767
    xfree (all_rootvarobj);
 
2768
  }
 
2769
  return;
 
2770
}