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