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