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