OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gdb-7.2/] [gdb/] [varobj.c] - Blame information for rev 330

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.