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