1 /* Low level packing and unpacking of values for GDB, the GNU Debugger. 2 3 Copyright (C) 1986-2000, 2002-2012 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 #include "defs.h" 21 #include "arch-utils.h" 22 #include "gdb_string.h" 23 #include "symtab.h" 24 #include "gdbtypes.h" 25 #include "value.h" 26 #include "gdbcore.h" 27 #include "command.h" 28 #include "gdbcmd.h" 29 #include "target.h" 30 #include "language.h" 31 #include "demangle.h" 32 #include "doublest.h" 33 #include "gdb_assert.h" 34 #include "regcache.h" 35 #include "block.h" 36 #include "dfp.h" 37 #include "objfiles.h" 38 #include "valprint.h" 39 #include "cli/cli-decode.h" 40 #include "exceptions.h" 41 #include "python/python.h" 42 #include <ctype.h> 43 #include "tracepoint.h" 44 45 /* Prototypes for exported functions. */ 46 47 void _initialize_values (void); 48 49 /* Definition of a user function. */ 50 struct internal_function 51 { 52 /* The name of the function. It is a bit odd to have this in the 53 function itself -- the user might use a differently-named 54 convenience variable to hold the function. */ 55 char *name; 56 57 /* The handler. */ 58 internal_function_fn handler; 59 60 /* User data for the handler. */ 61 void *cookie; 62 }; 63 64 /* Defines an [OFFSET, OFFSET + LENGTH) range. */ 65 66 struct range 67 { 68 /* Lowest offset in the range. */ 69 int offset; 70 71 /* Length of the range. */ 72 int length; 73 }; 74 75 typedef struct range range_s; 76 77 DEF_VEC_O(range_s); 78 79 /* Returns true if the ranges defined by [offset1, offset1+len1) and 80 [offset2, offset2+len2) overlap. */ 81 82 static int 83 ranges_overlap (int offset1, int len1, 84 int offset2, int len2) 85 { 86 ULONGEST h, l; 87 88 l = max (offset1, offset2); 89 h = min (offset1 + len1, offset2 + len2); 90 return (l < h); 91 } 92 93 /* Returns true if the first argument is strictly less than the 94 second, useful for VEC_lower_bound. We keep ranges sorted by 95 offset and coalesce overlapping and contiguous ranges, so this just 96 compares the starting offset. */ 97 98 static int 99 range_lessthan (const range_s *r1, const range_s *r2) 100 { 101 return r1->offset < r2->offset; 102 } 103 104 /* Returns true if RANGES contains any range that overlaps [OFFSET, 105 OFFSET+LENGTH). */ 106 107 static int 108 ranges_contain (VEC(range_s) *ranges, int offset, int length) 109 { 110 range_s what; 111 int i; 112 113 what.offset = offset; 114 what.length = length; 115 116 /* We keep ranges sorted by offset and coalesce overlapping and 117 contiguous ranges, so to check if a range list contains a given 118 range, we can do a binary search for the position the given range 119 would be inserted if we only considered the starting OFFSET of 120 ranges. We call that position I. Since we also have LENGTH to 121 care for (this is a range afterall), we need to check if the 122 _previous_ range overlaps the I range. E.g., 123 124 R 125 |---| 126 |---| |---| |------| ... |--| 127 0 1 2 N 128 129 I=1 130 131 In the case above, the binary search would return `I=1', meaning, 132 this OFFSET should be inserted at position 1, and the current 133 position 1 should be pushed further (and before 2). But, `0' 134 overlaps with R. 135 136 Then we need to check if the I range overlaps the I range itself. 137 E.g., 138 139 R 140 |---| 141 |---| |---| |-------| ... |--| 142 0 1 2 N 143 144 I=1 145 */ 146 147 i = VEC_lower_bound (range_s, ranges, &what, range_lessthan); 148 149 if (i > 0) 150 { 151 struct range *bef = VEC_index (range_s, ranges, i - 1); 152 153 if (ranges_overlap (bef->offset, bef->length, offset, length)) 154 return 1; 155 } 156 157 if (i < VEC_length (range_s, ranges)) 158 { 159 struct range *r = VEC_index (range_s, ranges, i); 160 161 if (ranges_overlap (r->offset, r->length, offset, length)) 162 return 1; 163 } 164 165 return 0; 166 } 167 168 static struct cmd_list_element *functionlist; 169 170 struct value 171 { 172 /* Type of value; either not an lval, or one of the various 173 different possible kinds of lval. */ 174 enum lval_type lval; 175 176 /* Is it modifiable? Only relevant if lval != not_lval. */ 177 int modifiable; 178 179 /* Location of value (if lval). */ 180 union 181 { 182 /* If lval == lval_memory, this is the address in the inferior. 183 If lval == lval_register, this is the byte offset into the 184 registers structure. */ 185 CORE_ADDR address; 186 187 /* Pointer to internal variable. */ 188 struct internalvar *internalvar; 189 190 /* If lval == lval_computed, this is a set of function pointers 191 to use to access and describe the value, and a closure pointer 192 for them to use. */ 193 struct 194 { 195 /* Functions to call. */ 196 const struct lval_funcs *funcs; 197 198 /* Closure for those functions to use. */ 199 void *closure; 200 } computed; 201 } location; 202 203 /* Describes offset of a value within lval of a structure in bytes. 204 If lval == lval_memory, this is an offset to the address. If 205 lval == lval_register, this is a further offset from 206 location.address within the registers structure. Note also the 207 member embedded_offset below. */ 208 int offset; 209 210 /* Only used for bitfields; number of bits contained in them. */ 211 int bitsize; 212 213 /* Only used for bitfields; position of start of field. For 214 gdbarch_bits_big_endian=0 targets, it is the position of the LSB. For 215 gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */ 216 int bitpos; 217 218 /* Only used for bitfields; the containing value. This allows a 219 single read from the target when displaying multiple 220 bitfields. */ 221 struct value *parent; 222 223 /* Frame register value is relative to. This will be described in 224 the lval enum above as "lval_register". */ 225 struct frame_id frame_id; 226 227 /* Type of the value. */ 228 struct type *type; 229 230 /* If a value represents a C++ object, then the `type' field gives 231 the object's compile-time type. If the object actually belongs 232 to some class derived from `type', perhaps with other base 233 classes and additional members, then `type' is just a subobject 234 of the real thing, and the full object is probably larger than 235 `type' would suggest. 236 237 If `type' is a dynamic class (i.e. one with a vtable), then GDB 238 can actually determine the object's run-time type by looking at 239 the run-time type information in the vtable. When this 240 information is available, we may elect to read in the entire 241 object, for several reasons: 242 243 - When printing the value, the user would probably rather see the 244 full object, not just the limited portion apparent from the 245 compile-time type. 246 247 - If `type' has virtual base classes, then even printing `type' 248 alone may require reaching outside the `type' portion of the 249 object to wherever the virtual base class has been stored. 250 251 When we store the entire object, `enclosing_type' is the run-time 252 type -- the complete object -- and `embedded_offset' is the 253 offset of `type' within that larger type, in bytes. The 254 value_contents() macro takes `embedded_offset' into account, so 255 most GDB code continues to see the `type' portion of the value, 256 just as the inferior would. 257 258 If `type' is a pointer to an object, then `enclosing_type' is a 259 pointer to the object's run-time type, and `pointed_to_offset' is 260 the offset in bytes from the full object to the pointed-to object 261 -- that is, the value `embedded_offset' would have if we followed 262 the pointer and fetched the complete object. (I don't really see 263 the point. Why not just determine the run-time type when you 264 indirect, and avoid the special case? The contents don't matter 265 until you indirect anyway.) 266 267 If we're not doing anything fancy, `enclosing_type' is equal to 268 `type', and `embedded_offset' is zero, so everything works 269 normally. */ 270 struct type *enclosing_type; 271 int embedded_offset; 272 int pointed_to_offset; 273 274 /* Values are stored in a chain, so that they can be deleted easily 275 over calls to the inferior. Values assigned to internal 276 variables, put into the value history or exposed to Python are 277 taken off this list. */ 278 struct value *next; 279 280 /* Register number if the value is from a register. */ 281 short regnum; 282 283 /* If zero, contents of this value are in the contents field. If 284 nonzero, contents are in inferior. If the lval field is lval_memory, 285 the contents are in inferior memory at location.address plus offset. 286 The lval field may also be lval_register. 287 288 WARNING: This field is used by the code which handles watchpoints 289 (see breakpoint.c) to decide whether a particular value can be 290 watched by hardware watchpoints. If the lazy flag is set for 291 some member of a value chain, it is assumed that this member of 292 the chain doesn't need to be watched as part of watching the 293 value itself. This is how GDB avoids watching the entire struct 294 or array when the user wants to watch a single struct member or 295 array element. If you ever change the way lazy flag is set and 296 reset, be sure to consider this use as well! */ 297 char lazy; 298 299 /* If nonzero, this is the value of a variable which does not 300 actually exist in the program. */ 301 char optimized_out; 302 303 /* If value is a variable, is it initialized or not. */ 304 int initialized; 305 306 /* If value is from the stack. If this is set, read_stack will be 307 used instead of read_memory to enable extra caching. */ 308 int stack; 309 310 /* Actual contents of the value. Target byte-order. NULL or not 311 valid if lazy is nonzero. */ 312 gdb_byte *contents; 313 314 /* Unavailable ranges in CONTENTS. We mark unavailable ranges, 315 rather than available, since the common and default case is for a 316 value to be available. This is filled in at value read time. */ 317 VEC(range_s) *unavailable; 318 319 /* The number of references to this value. When a value is created, 320 the value chain holds a reference, so REFERENCE_COUNT is 1. If 321 release_value is called, this value is removed from the chain but 322 the caller of release_value now has a reference to this value. 323 The caller must arrange for a call to value_free later. */ 324 int reference_count; 325 }; 326 327 int 328 value_bytes_available (const struct value *value, int offset, int length) 329 { 330 gdb_assert (!value->lazy); 331 332 return !ranges_contain (value->unavailable, offset, length); 333 } 334 335 int 336 value_entirely_available (struct value *value) 337 { 338 /* We can only tell whether the whole value is available when we try 339 to read it. */ 340 if (value->lazy) 341 value_fetch_lazy (value); 342 343 if (VEC_empty (range_s, value->unavailable)) 344 return 1; 345 return 0; 346 } 347 348 void 349 mark_value_bytes_unavailable (struct value *value, int offset, int length) 350 { 351 range_s newr; 352 int i; 353 354 /* Insert the range sorted. If there's overlap or the new range 355 would be contiguous with an existing range, merge. */ 356 357 newr.offset = offset; 358 newr.length = length; 359 360 /* Do a binary search for the position the given range would be 361 inserted if we only considered the starting OFFSET of ranges. 362 Call that position I. Since we also have LENGTH to care for 363 (this is a range afterall), we need to check if the _previous_ 364 range overlaps the I range. E.g., calling R the new range: 365 366 #1 - overlaps with previous 367 368 R 369 |-...-| 370 |---| |---| |------| ... |--| 371 0 1 2 N 372 373 I=1 374 375 In the case #1 above, the binary search would return `I=1', 376 meaning, this OFFSET should be inserted at position 1, and the 377 current position 1 should be pushed further (and become 2). But, 378 note that `0' overlaps with R, so we want to merge them. 379 380 A similar consideration needs to be taken if the new range would 381 be contiguous with the previous range: 382 383 #2 - contiguous with previous 384 385 R 386 |-...-| 387 |--| |---| |------| ... |--| 388 0 1 2 N 389 390 I=1 391 392 If there's no overlap with the previous range, as in: 393 394 #3 - not overlapping and not contiguous 395 396 R 397 |-...-| 398 |--| |---| |------| ... |--| 399 0 1 2 N 400 401 I=1 402 403 or if I is 0: 404 405 #4 - R is the range with lowest offset 406 407 R 408 |-...-| 409 |--| |---| |------| ... |--| 410 0 1 2 N 411 412 I=0 413 414 ... we just push the new range to I. 415 416 All the 4 cases above need to consider that the new range may 417 also overlap several of the ranges that follow, or that R may be 418 contiguous with the following range, and merge. E.g., 419 420 #5 - overlapping following ranges 421 422 R 423 |------------------------| 424 |--| |---| |------| ... |--| 425 0 1 2 N 426 427 I=0 428 429 or: 430 431 R 432 |-------| 433 |--| |---| |------| ... |--| 434 0 1 2 N 435 436 I=1 437 438 */ 439 440 i = VEC_lower_bound (range_s, value->unavailable, &newr, range_lessthan); 441 if (i > 0) 442 { 443 struct range *bef = VEC_index (range_s, value->unavailable, i - 1); 444 445 if (ranges_overlap (bef->offset, bef->length, offset, length)) 446 { 447 /* #1 */ 448 ULONGEST l = min (bef->offset, offset); 449 ULONGEST h = max (bef->offset + bef->length, offset + length); 450 451 bef->offset = l; 452 bef->length = h - l; 453 i--; 454 } 455 else if (offset == bef->offset + bef->length) 456 { 457 /* #2 */ 458 bef->length += length; 459 i--; 460 } 461 else 462 { 463 /* #3 */ 464 VEC_safe_insert (range_s, value->unavailable, i, &newr); 465 } 466 } 467 else 468 { 469 /* #4 */ 470 VEC_safe_insert (range_s, value->unavailable, i, &newr); 471 } 472 473 /* Check whether the ranges following the one we've just added or 474 touched can be folded in (#5 above). */ 475 if (i + 1 < VEC_length (range_s, value->unavailable)) 476 { 477 struct range *t; 478 struct range *r; 479 int removed = 0; 480 int next = i + 1; 481 482 /* Get the range we just touched. */ 483 t = VEC_index (range_s, value->unavailable, i); 484 removed = 0; 485 486 i = next; 487 for (; VEC_iterate (range_s, value->unavailable, i, r); i++) 488 if (r->offset <= t->offset + t->length) 489 { 490 ULONGEST l, h; 491 492 l = min (t->offset, r->offset); 493 h = max (t->offset + t->length, r->offset + r->length); 494 495 t->offset = l; 496 t->length = h - l; 497 498 removed++; 499 } 500 else 501 { 502 /* If we couldn't merge this one, we won't be able to 503 merge following ones either, since the ranges are 504 always sorted by OFFSET. */ 505 break; 506 } 507 508 if (removed != 0) 509 VEC_block_remove (range_s, value->unavailable, next, removed); 510 } 511 } 512 513 /* Find the first range in RANGES that overlaps the range defined by 514 OFFSET and LENGTH, starting at element POS in the RANGES vector, 515 Returns the index into RANGES where such overlapping range was 516 found, or -1 if none was found. */ 517 518 static int 519 find_first_range_overlap (VEC(range_s) *ranges, int pos, 520 int offset, int length) 521 { 522 range_s *r; 523 int i; 524 525 for (i = pos; VEC_iterate (range_s, ranges, i, r); i++) 526 if (ranges_overlap (r->offset, r->length, offset, length)) 527 return i; 528 529 return -1; 530 } 531 532 int 533 value_available_contents_eq (const struct value *val1, int offset1, 534 const struct value *val2, int offset2, 535 int length) 536 { 537 int idx1 = 0, idx2 = 0; 538 539 /* This routine is used by printing routines, where we should 540 already have read the value. Note that we only know whether a 541 value chunk is available if we've tried to read it. */ 542 gdb_assert (!val1->lazy && !val2->lazy); 543 544 while (length > 0) 545 { 546 range_s *r1, *r2; 547 ULONGEST l1, h1; 548 ULONGEST l2, h2; 549 550 idx1 = find_first_range_overlap (val1->unavailable, idx1, 551 offset1, length); 552 idx2 = find_first_range_overlap (val2->unavailable, idx2, 553 offset2, length); 554 555 /* The usual case is for both values to be completely available. */ 556 if (idx1 == -1 && idx2 == -1) 557 return (memcmp (val1->contents + offset1, 558 val2->contents + offset2, 559 length) == 0); 560 /* The contents only match equal if the available set matches as 561 well. */ 562 else if (idx1 == -1 || idx2 == -1) 563 return 0; 564 565 gdb_assert (idx1 != -1 && idx2 != -1); 566 567 r1 = VEC_index (range_s, val1->unavailable, idx1); 568 r2 = VEC_index (range_s, val2->unavailable, idx2); 569 570 /* Get the unavailable windows intersected by the incoming 571 ranges. The first and last ranges that overlap the argument 572 range may be wider than said incoming arguments ranges. */ 573 l1 = max (offset1, r1->offset); 574 h1 = min (offset1 + length, r1->offset + r1->length); 575 576 l2 = max (offset2, r2->offset); 577 h2 = min (offset2 + length, r2->offset + r2->length); 578 579 /* Make them relative to the respective start offsets, so we can 580 compare them for equality. */ 581 l1 -= offset1; 582 h1 -= offset1; 583 584 l2 -= offset2; 585 h2 -= offset2; 586 587 /* Different availability, no match. */ 588 if (l1 != l2 || h1 != h2) 589 return 0; 590 591 /* Compare the _available_ contents. */ 592 if (memcmp (val1->contents + offset1, 593 val2->contents + offset2, 594 l1) != 0) 595 return 0; 596 597 length -= h1; 598 offset1 += h1; 599 offset2 += h1; 600 } 601 602 return 1; 603 } 604 605 /* Prototypes for local functions. */ 606 607 static void show_values (char *, int); 608 609 static void show_convenience (char *, int); 610 611 612 /* The value-history records all the values printed 613 by print commands during this session. Each chunk 614 records 60 consecutive values. The first chunk on 615 the chain records the most recent values. 616 The total number of values is in value_history_count. */ 617 618 #define VALUE_HISTORY_CHUNK 60 619 620 struct value_history_chunk 621 { 622 struct value_history_chunk *next; 623 struct value *values[VALUE_HISTORY_CHUNK]; 624 }; 625 626 /* Chain of chunks now in use. */ 627 628 static struct value_history_chunk *value_history_chain; 629 630 static int value_history_count; /* Abs number of last entry stored. */ 631 632 633 /* List of all value objects currently allocated 634 (except for those released by calls to release_value) 635 This is so they can be freed after each command. */ 636 637 static struct value *all_values; 638 639 /* Allocate a lazy value for type TYPE. Its actual content is 640 "lazily" allocated too: the content field of the return value is 641 NULL; it will be allocated when it is fetched from the target. */ 642 643 struct value * 644 allocate_value_lazy (struct type *type) 645 { 646 struct value *val; 647 648 /* Call check_typedef on our type to make sure that, if TYPE 649 is a TYPE_CODE_TYPEDEF, its length is set to the length 650 of the target type instead of zero. However, we do not 651 replace the typedef type by the target type, because we want 652 to keep the typedef in order to be able to set the VAL's type 653 description correctly. */ 654 check_typedef (type); 655 656 val = (struct value *) xzalloc (sizeof (struct value)); 657 val->contents = NULL; 658 val->next = all_values; 659 all_values = val; 660 val->type = type; 661 val->enclosing_type = type; 662 VALUE_LVAL (val) = not_lval; 663 val->location.address = 0; 664 VALUE_FRAME_ID (val) = null_frame_id; 665 val->offset = 0; 666 val->bitpos = 0; 667 val->bitsize = 0; 668 VALUE_REGNUM (val) = -1; 669 val->lazy = 1; 670 val->optimized_out = 0; 671 val->embedded_offset = 0; 672 val->pointed_to_offset = 0; 673 val->modifiable = 1; 674 val->initialized = 1; /* Default to initialized. */ 675 676 /* Values start out on the all_values chain. */ 677 val->reference_count = 1; 678 679 return val; 680 } 681 682 /* Allocate the contents of VAL if it has not been allocated yet. */ 683 684 void 685 allocate_value_contents (struct value *val) 686 { 687 if (!val->contents) 688 val->contents = (gdb_byte *) xzalloc (TYPE_LENGTH (val->enclosing_type)); 689 } 690 691 /* Allocate a value and its contents for type TYPE. */ 692 693 struct value * 694 allocate_value (struct type *type) 695 { 696 struct value *val = allocate_value_lazy (type); 697 698 allocate_value_contents (val); 699 val->lazy = 0; 700 return val; 701 } 702 703 /* Allocate a value that has the correct length 704 for COUNT repetitions of type TYPE. */ 705 706 struct value * 707 allocate_repeat_value (struct type *type, int count) 708 { 709 int low_bound = current_language->string_lower_bound; /* ??? */ 710 /* FIXME-type-allocation: need a way to free this type when we are 711 done with it. */ 712 struct type *array_type 713 = lookup_array_range_type (type, low_bound, count + low_bound - 1); 714 715 return allocate_value (array_type); 716 } 717 718 struct value * 719 allocate_computed_value (struct type *type, 720 const struct lval_funcs *funcs, 721 void *closure) 722 { 723 struct value *v = allocate_value_lazy (type); 724 725 VALUE_LVAL (v) = lval_computed; 726 v->location.computed.funcs = funcs; 727 v->location.computed.closure = closure; 728 729 return v; 730 } 731 732 /* Allocate NOT_LVAL value for type TYPE being OPTIMIZED_OUT. */ 733 734 struct value * 735 allocate_optimized_out_value (struct type *type) 736 { 737 struct value *retval = allocate_value_lazy (type); 738 739 set_value_optimized_out (retval, 1); 740 741 return retval; 742 } 743 744 /* Accessor methods. */ 745 746 struct value * 747 value_next (struct value *value) 748 { 749 return value->next; 750 } 751 752 struct type * 753 value_type (const struct value *value) 754 { 755 return value->type; 756 } 757 void 758 deprecated_set_value_type (struct value *value, struct type *type) 759 { 760 value->type = type; 761 } 762 763 int 764 value_offset (const struct value *value) 765 { 766 return value->offset; 767 } 768 void 769 set_value_offset (struct value *value, int offset) 770 { 771 value->offset = offset; 772 } 773 774 int 775 value_bitpos (const struct value *value) 776 { 777 return value->bitpos; 778 } 779 void 780 set_value_bitpos (struct value *value, int bit) 781 { 782 value->bitpos = bit; 783 } 784 785 int 786 value_bitsize (const struct value *value) 787 { 788 return value->bitsize; 789 } 790 void 791 set_value_bitsize (struct value *value, int bit) 792 { 793 value->bitsize = bit; 794 } 795 796 struct value * 797 value_parent (struct value *value) 798 { 799 return value->parent; 800 } 801 802 gdb_byte * 803 value_contents_raw (struct value *value) 804 { 805 allocate_value_contents (value); 806 return value->contents + value->embedded_offset; 807 } 808 809 gdb_byte * 810 value_contents_all_raw (struct value *value) 811 { 812 allocate_value_contents (value); 813 return value->contents; 814 } 815 816 struct type * 817 value_enclosing_type (struct value *value) 818 { 819 return value->enclosing_type; 820 } 821 822 static void 823 require_not_optimized_out (const struct value *value) 824 { 825 if (value->optimized_out) 826 error (_("value has been optimized out")); 827 } 828 829 static void 830 require_available (const struct value *value) 831 { 832 if (!VEC_empty (range_s, value->unavailable)) 833 throw_error (NOT_AVAILABLE_ERROR, _("value is not available")); 834 } 835 836 const gdb_byte * 837 value_contents_for_printing (struct value *value) 838 { 839 if (value->lazy) 840 value_fetch_lazy (value); 841 return value->contents; 842 } 843 844 const gdb_byte * 845 value_contents_for_printing_const (const struct value *value) 846 { 847 gdb_assert (!value->lazy); 848 return value->contents; 849 } 850 851 const gdb_byte * 852 value_contents_all (struct value *value) 853 { 854 const gdb_byte *result = value_contents_for_printing (value); 855 require_not_optimized_out (value); 856 require_available (value); 857 return result; 858 } 859 860 /* Copy LENGTH bytes of SRC value's (all) contents 861 (value_contents_all) starting at SRC_OFFSET, into DST value's (all) 862 contents, starting at DST_OFFSET. If unavailable contents are 863 being copied from SRC, the corresponding DST contents are marked 864 unavailable accordingly. Neither DST nor SRC may be lazy 865 values. 866 867 It is assumed the contents of DST in the [DST_OFFSET, 868 DST_OFFSET+LENGTH) range are wholly available. */ 869 870 void 871 value_contents_copy_raw (struct value *dst, int dst_offset, 872 struct value *src, int src_offset, int length) 873 { 874 range_s *r; 875 int i; 876 877 /* A lazy DST would make that this copy operation useless, since as 878 soon as DST's contents were un-lazied (by a later value_contents 879 call, say), the contents would be overwritten. A lazy SRC would 880 mean we'd be copying garbage. */ 881 gdb_assert (!dst->lazy && !src->lazy); 882 883 /* The overwritten DST range gets unavailability ORed in, not 884 replaced. Make sure to remember to implement replacing if it 885 turns out actually necessary. */ 886 gdb_assert (value_bytes_available (dst, dst_offset, length)); 887 888 /* Copy the data. */ 889 memcpy (value_contents_all_raw (dst) + dst_offset, 890 value_contents_all_raw (src) + src_offset, 891 length); 892 893 /* Copy the meta-data, adjusted. */ 894 for (i = 0; VEC_iterate (range_s, src->unavailable, i, r); i++) 895 { 896 ULONGEST h, l; 897 898 l = max (r->offset, src_offset); 899 h = min (r->offset + r->length, src_offset + length); 900 901 if (l < h) 902 mark_value_bytes_unavailable (dst, 903 dst_offset + (l - src_offset), 904 h - l); 905 } 906 } 907 908 /* Copy LENGTH bytes of SRC value's (all) contents 909 (value_contents_all) starting at SRC_OFFSET byte, into DST value's 910 (all) contents, starting at DST_OFFSET. If unavailable contents 911 are being copied from SRC, the corresponding DST contents are 912 marked unavailable accordingly. DST must not be lazy. If SRC is 913 lazy, it will be fetched now. If SRC is not valid (is optimized 914 out), an error is thrown. 915 916 It is assumed the contents of DST in the [DST_OFFSET, 917 DST_OFFSET+LENGTH) range are wholly available. */ 918 919 void 920 value_contents_copy (struct value *dst, int dst_offset, 921 struct value *src, int src_offset, int length) 922 { 923 require_not_optimized_out (src); 924 925 if (src->lazy) 926 value_fetch_lazy (src); 927 928 value_contents_copy_raw (dst, dst_offset, src, src_offset, length); 929 } 930 931 int 932 value_lazy (struct value *value) 933 { 934 return value->lazy; 935 } 936 937 void 938 set_value_lazy (struct value *value, int val) 939 { 940 value->lazy = val; 941 } 942 943 int 944 value_stack (struct value *value) 945 { 946 return value->stack; 947 } 948 949 void 950 set_value_stack (struct value *value, int val) 951 { 952 value->stack = val; 953 } 954 955 const gdb_byte * 956 value_contents (struct value *value) 957 { 958 const gdb_byte *result = value_contents_writeable (value); 959 require_not_optimized_out (value); 960 require_available (value); 961 return result; 962 } 963 964 gdb_byte * 965 value_contents_writeable (struct value *value) 966 { 967 if (value->lazy) 968 value_fetch_lazy (value); 969 return value_contents_raw (value); 970 } 971 972 /* Return non-zero if VAL1 and VAL2 have the same contents. Note that 973 this function is different from value_equal; in C the operator == 974 can return 0 even if the two values being compared are equal. */ 975 976 int 977 value_contents_equal (struct value *val1, struct value *val2) 978 { 979 struct type *type1; 980 struct type *type2; 981 int len; 982 983 type1 = check_typedef (value_type (val1)); 984 type2 = check_typedef (value_type (val2)); 985 len = TYPE_LENGTH (type1); 986 if (len != TYPE_LENGTH (type2)) 987 return 0; 988 989 return (memcmp (value_contents (val1), value_contents (val2), len) == 0); 990 } 991 992 int 993 value_optimized_out (struct value *value) 994 { 995 return value->optimized_out; 996 } 997 998 void 999 set_value_optimized_out (struct value *value, int val) 1000 { 1001 value->optimized_out = val; 1002 } 1003 1004 int 1005 value_entirely_optimized_out (const struct value *value) 1006 { 1007 if (!value->optimized_out) 1008 return 0; 1009 if (value->lval != lval_computed 1010 || !value->location.computed.funcs->check_any_valid) 1011 return 1; 1012 return !value->location.computed.funcs->check_any_valid (value); 1013 } 1014 1015 int 1016 value_bits_valid (const struct value *value, int offset, int length) 1017 { 1018 if (!value->optimized_out) 1019 return 1; 1020 if (value->lval != lval_computed 1021 || !value->location.computed.funcs->check_validity) 1022 return 0; 1023 return value->location.computed.funcs->check_validity (value, offset, 1024 length); 1025 } 1026 1027 int 1028 value_bits_synthetic_pointer (const struct value *value, 1029 int offset, int length) 1030 { 1031 if (value->lval != lval_computed 1032 || !value->location.computed.funcs->check_synthetic_pointer) 1033 return 0; 1034 return value->location.computed.funcs->check_synthetic_pointer (value, 1035 offset, 1036 length); 1037 } 1038 1039 int 1040 value_embedded_offset (struct value *value) 1041 { 1042 return value->embedded_offset; 1043 } 1044 1045 void 1046 set_value_embedded_offset (struct value *value, int val) 1047 { 1048 value->embedded_offset = val; 1049 } 1050 1051 int 1052 value_pointed_to_offset (struct value *value) 1053 { 1054 return value->pointed_to_offset; 1055 } 1056 1057 void 1058 set_value_pointed_to_offset (struct value *value, int val) 1059 { 1060 value->pointed_to_offset = val; 1061 } 1062 1063 const struct lval_funcs * 1064 value_computed_funcs (const struct value *v) 1065 { 1066 gdb_assert (value_lval_const (v) == lval_computed); 1067 1068 return v->location.computed.funcs; 1069 } 1070 1071 void * 1072 value_computed_closure (const struct value *v) 1073 { 1074 gdb_assert (v->lval == lval_computed); 1075 1076 return v->location.computed.closure; 1077 } 1078 1079 enum lval_type * 1080 deprecated_value_lval_hack (struct value *value) 1081 { 1082 return &value->lval; 1083 } 1084 1085 enum lval_type 1086 value_lval_const (const struct value *value) 1087 { 1088 return value->lval; 1089 } 1090 1091 CORE_ADDR 1092 value_address (const struct value *value) 1093 { 1094 if (value->lval == lval_internalvar 1095 || value->lval == lval_internalvar_component) 1096 return 0; 1097 return value->location.address + value->offset; 1098 } 1099 1100 CORE_ADDR 1101 value_raw_address (struct value *value) 1102 { 1103 if (value->lval == lval_internalvar 1104 || value->lval == lval_internalvar_component) 1105 return 0; 1106 return value->location.address; 1107 } 1108 1109 void 1110 set_value_address (struct value *value, CORE_ADDR addr) 1111 { 1112 gdb_assert (value->lval != lval_internalvar 1113 && value->lval != lval_internalvar_component); 1114 value->location.address = addr; 1115 } 1116 1117 struct internalvar ** 1118 deprecated_value_internalvar_hack (struct value *value) 1119 { 1120 return &value->location.internalvar; 1121 } 1122 1123 struct frame_id * 1124 deprecated_value_frame_id_hack (struct value *value) 1125 { 1126 return &value->frame_id; 1127 } 1128 1129 short * 1130 deprecated_value_regnum_hack (struct value *value) 1131 { 1132 return &value->regnum; 1133 } 1134 1135 int 1136 deprecated_value_modifiable (struct value *value) 1137 { 1138 return value->modifiable; 1139 } 1140 void 1141 deprecated_set_value_modifiable (struct value *value, int modifiable) 1142 { 1143 value->modifiable = modifiable; 1144 } 1145 1146 /* Return a mark in the value chain. All values allocated after the 1147 mark is obtained (except for those released) are subject to being freed 1148 if a subsequent value_free_to_mark is passed the mark. */ 1149 struct value * 1150 value_mark (void) 1151 { 1152 return all_values; 1153 } 1154 1155 /* Take a reference to VAL. VAL will not be deallocated until all 1156 references are released. */ 1157 1158 void 1159 value_incref (struct value *val) 1160 { 1161 val->reference_count++; 1162 } 1163 1164 /* Release a reference to VAL, which was acquired with value_incref. 1165 This function is also called to deallocate values from the value 1166 chain. */ 1167 1168 void 1169 value_free (struct value *val) 1170 { 1171 if (val) 1172 { 1173 gdb_assert (val->reference_count > 0); 1174 val->reference_count--; 1175 if (val->reference_count > 0) 1176 return; 1177 1178 /* If there's an associated parent value, drop our reference to 1179 it. */ 1180 if (val->parent != NULL) 1181 value_free (val->parent); 1182 1183 if (VALUE_LVAL (val) == lval_computed) 1184 { 1185 const struct lval_funcs *funcs = val->location.computed.funcs; 1186 1187 if (funcs->free_closure) 1188 funcs->free_closure (val); 1189 } 1190 1191 xfree (val->contents); 1192 VEC_free (range_s, val->unavailable); 1193 } 1194 xfree (val); 1195 } 1196 1197 /* Free all values allocated since MARK was obtained by value_mark 1198 (except for those released). */ 1199 void 1200 value_free_to_mark (struct value *mark) 1201 { 1202 struct value *val; 1203 struct value *next; 1204 1205 for (val = all_values; val && val != mark; val = next) 1206 { 1207 next = val->next; 1208 value_free (val); 1209 } 1210 all_values = val; 1211 } 1212 1213 /* Free all the values that have been allocated (except for those released). 1214 Call after each command, successful or not. 1215 In practice this is called before each command, which is sufficient. */ 1216 1217 void 1218 free_all_values (void) 1219 { 1220 struct value *val; 1221 struct value *next; 1222 1223 for (val = all_values; val; val = next) 1224 { 1225 next = val->next; 1226 value_free (val); 1227 } 1228 1229 all_values = 0; 1230 } 1231 1232 /* Frees all the elements in a chain of values. */ 1233 1234 void 1235 free_value_chain (struct value *v) 1236 { 1237 struct value *next; 1238 1239 for (; v; v = next) 1240 { 1241 next = value_next (v); 1242 value_free (v); 1243 } 1244 } 1245 1246 /* Remove VAL from the chain all_values 1247 so it will not be freed automatically. */ 1248 1249 void 1250 release_value (struct value *val) 1251 { 1252 struct value *v; 1253 1254 if (all_values == val) 1255 { 1256 all_values = val->next; 1257 val->next = NULL; 1258 return; 1259 } 1260 1261 for (v = all_values; v; v = v->next) 1262 { 1263 if (v->next == val) 1264 { 1265 v->next = val->next; 1266 val->next = NULL; 1267 break; 1268 } 1269 } 1270 } 1271 1272 /* Release all values up to mark */ 1273 struct value * 1274 value_release_to_mark (struct value *mark) 1275 { 1276 struct value *val; 1277 struct value *next; 1278 1279 for (val = next = all_values; next; next = next->next) 1280 if (next->next == mark) 1281 { 1282 all_values = next->next; 1283 next->next = NULL; 1284 return val; 1285 } 1286 all_values = 0; 1287 return val; 1288 } 1289 1290 /* Return a copy of the value ARG. 1291 It contains the same contents, for same memory address, 1292 but it's a different block of storage. */ 1293 1294 struct value * 1295 value_copy (struct value *arg) 1296 { 1297 struct type *encl_type = value_enclosing_type (arg); 1298 struct value *val; 1299 1300 if (value_lazy (arg)) 1301 val = allocate_value_lazy (encl_type); 1302 else 1303 val = allocate_value (encl_type); 1304 val->type = arg->type; 1305 VALUE_LVAL (val) = VALUE_LVAL (arg); 1306 val->location = arg->location; 1307 val->offset = arg->offset; 1308 val->bitpos = arg->bitpos; 1309 val->bitsize = arg->bitsize; 1310 VALUE_FRAME_ID (val) = VALUE_FRAME_ID (arg); 1311 VALUE_REGNUM (val) = VALUE_REGNUM (arg); 1312 val->lazy = arg->lazy; 1313 val->optimized_out = arg->optimized_out; 1314 val->embedded_offset = value_embedded_offset (arg); 1315 val->pointed_to_offset = arg->pointed_to_offset; 1316 val->modifiable = arg->modifiable; 1317 if (!value_lazy (val)) 1318 { 1319 memcpy (value_contents_all_raw (val), value_contents_all_raw (arg), 1320 TYPE_LENGTH (value_enclosing_type (arg))); 1321 1322 } 1323 val->unavailable = VEC_copy (range_s, arg->unavailable); 1324 val->parent = arg->parent; 1325 if (val->parent) 1326 value_incref (val->parent); 1327 if (VALUE_LVAL (val) == lval_computed) 1328 { 1329 const struct lval_funcs *funcs = val->location.computed.funcs; 1330 1331 if (funcs->copy_closure) 1332 val->location.computed.closure = funcs->copy_closure (val); 1333 } 1334 return val; 1335 } 1336 1337 /* Return a version of ARG that is non-lvalue. */ 1338 1339 struct value * 1340 value_non_lval (struct value *arg) 1341 { 1342 if (VALUE_LVAL (arg) != not_lval) 1343 { 1344 struct type *enc_type = value_enclosing_type (arg); 1345 struct value *val = allocate_value (enc_type); 1346 1347 memcpy (value_contents_all_raw (val), value_contents_all (arg), 1348 TYPE_LENGTH (enc_type)); 1349 val->type = arg->type; 1350 set_value_embedded_offset (val, value_embedded_offset (arg)); 1351 set_value_pointed_to_offset (val, value_pointed_to_offset (arg)); 1352 return val; 1353 } 1354 return arg; 1355 } 1356 1357 void 1358 set_value_component_location (struct value *component, 1359 const struct value *whole) 1360 { 1361 if (whole->lval == lval_internalvar) 1362 VALUE_LVAL (component) = lval_internalvar_component; 1363 else 1364 VALUE_LVAL (component) = whole->lval; 1365 1366 component->location = whole->location; 1367 if (whole->lval == lval_computed) 1368 { 1369 const struct lval_funcs *funcs = whole->location.computed.funcs; 1370 1371 if (funcs->copy_closure) 1372 component->location.computed.closure = funcs->copy_closure (whole); 1373 } 1374 } 1375 1376 1377 /* Access to the value history. */ 1378 1379 /* Record a new value in the value history. 1380 Returns the absolute history index of the entry. 1381 Result of -1 indicates the value was not saved; otherwise it is the 1382 value history index of this new item. */ 1383 1384 int 1385 record_latest_value (struct value *val) 1386 { 1387 int i; 1388 1389 /* We don't want this value to have anything to do with the inferior anymore. 1390 In particular, "set $1 = 50" should not affect the variable from which 1391 the value was taken, and fast watchpoints should be able to assume that 1392 a value on the value history never changes. */ 1393 if (value_lazy (val)) 1394 value_fetch_lazy (val); 1395 /* We preserve VALUE_LVAL so that the user can find out where it was fetched 1396 from. This is a bit dubious, because then *&$1 does not just return $1 1397 but the current contents of that location. c'est la vie... */ 1398 val->modifiable = 0; 1399 release_value (val); 1400 1401 /* Here we treat value_history_count as origin-zero 1402 and applying to the value being stored now. */ 1403 1404 i = value_history_count % VALUE_HISTORY_CHUNK; 1405 if (i == 0) 1406 { 1407 struct value_history_chunk *new 1408 = (struct value_history_chunk *) 1409 1410 xmalloc (sizeof (struct value_history_chunk)); 1411 memset (new->values, 0, sizeof new->values); 1412 new->next = value_history_chain; 1413 value_history_chain = new; 1414 } 1415 1416 value_history_chain->values[i] = val; 1417 1418 /* Now we regard value_history_count as origin-one 1419 and applying to the value just stored. */ 1420 1421 return ++value_history_count; 1422 } 1423 1424 /* Return a copy of the value in the history with sequence number NUM. */ 1425 1426 struct value * 1427 access_value_history (int num) 1428 { 1429 struct value_history_chunk *chunk; 1430 int i; 1431 int absnum = num; 1432 1433 if (absnum <= 0) 1434 absnum += value_history_count; 1435 1436 if (absnum <= 0) 1437 { 1438 if (num == 0) 1439 error (_("The history is empty.")); 1440 else if (num == 1) 1441 error (_("There is only one value in the history.")); 1442 else 1443 error (_("History does not go back to $$%d."), -num); 1444 } 1445 if (absnum > value_history_count) 1446 error (_("History has not yet reached $%d."), absnum); 1447 1448 absnum--; 1449 1450 /* Now absnum is always absolute and origin zero. */ 1451 1452 chunk = value_history_chain; 1453 for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK 1454 - absnum / VALUE_HISTORY_CHUNK; 1455 i > 0; i--) 1456 chunk = chunk->next; 1457 1458 return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]); 1459 } 1460 1461 static void 1462 show_values (char *num_exp, int from_tty) 1463 { 1464 int i; 1465 struct value *val; 1466 static int num = 1; 1467 1468 if (num_exp) 1469 { 1470 /* "show values +" should print from the stored position. 1471 "show values <exp>" should print around value number <exp>. */ 1472 if (num_exp[0] != '+' || num_exp[1] != '\0') 1473 num = parse_and_eval_long (num_exp) - 5; 1474 } 1475 else 1476 { 1477 /* "show values" means print the last 10 values. */ 1478 num = value_history_count - 9; 1479 } 1480 1481 if (num <= 0) 1482 num = 1; 1483 1484 for (i = num; i < num + 10 && i <= value_history_count; i++) 1485 { 1486 struct value_print_options opts; 1487 1488 val = access_value_history (i); 1489 printf_filtered (("$%d = "), i); 1490 get_user_print_options (&opts); 1491 value_print (val, gdb_stdout, &opts); 1492 printf_filtered (("\n")); 1493 } 1494 1495 /* The next "show values +" should start after what we just printed. */ 1496 num += 10; 1497 1498 /* Hitting just return after this command should do the same thing as 1499 "show values +". If num_exp is null, this is unnecessary, since 1500 "show values +" is not useful after "show values". */ 1501 if (from_tty && num_exp) 1502 { 1503 num_exp[0] = '+'; 1504 num_exp[1] = '\0'; 1505 } 1506 } 1507 1508 /* Internal variables. These are variables within the debugger 1509 that hold values assigned by debugger commands. 1510 The user refers to them with a '$' prefix 1511 that does not appear in the variable names stored internally. */ 1512 1513 struct internalvar 1514 { 1515 struct internalvar *next; 1516 char *name; 1517 1518 /* We support various different kinds of content of an internal variable. 1519 enum internalvar_kind specifies the kind, and union internalvar_data 1520 provides the data associated with this particular kind. */ 1521 1522 enum internalvar_kind 1523 { 1524 /* The internal variable is empty. */ 1525 INTERNALVAR_VOID, 1526 1527 /* The value of the internal variable is provided directly as 1528 a GDB value object. */ 1529 INTERNALVAR_VALUE, 1530 1531 /* A fresh value is computed via a call-back routine on every 1532 access to the internal variable. */ 1533 INTERNALVAR_MAKE_VALUE, 1534 1535 /* The internal variable holds a GDB internal convenience function. */ 1536 INTERNALVAR_FUNCTION, 1537 1538 /* The variable holds an integer value. */ 1539 INTERNALVAR_INTEGER, 1540 1541 /* The variable holds a GDB-provided string. */ 1542 INTERNALVAR_STRING, 1543 1544 } kind; 1545 1546 union internalvar_data 1547 { 1548 /* A value object used with INTERNALVAR_VALUE. */ 1549 struct value *value; 1550 1551 /* The call-back routine used with INTERNALVAR_MAKE_VALUE. */ 1552 internalvar_make_value make_value; 1553 1554 /* The internal function used with INTERNALVAR_FUNCTION. */ 1555 struct 1556 { 1557 struct internal_function *function; 1558 /* True if this is the canonical name for the function. */ 1559 int canonical; 1560 } fn; 1561 1562 /* An integer value used with INTERNALVAR_INTEGER. */ 1563 struct 1564 { 1565 /* If type is non-NULL, it will be used as the type to generate 1566 a value for this internal variable. If type is NULL, a default 1567 integer type for the architecture is used. */ 1568 struct type *type; 1569 LONGEST val; 1570 } integer; 1571 1572 /* A string value used with INTERNALVAR_STRING. */ 1573 char *string; 1574 } u; 1575 }; 1576 1577 static struct internalvar *internalvars; 1578 1579 /* If the variable does not already exist create it and give it the 1580 value given. If no value is given then the default is zero. */ 1581 static void 1582 init_if_undefined_command (char* args, int from_tty) 1583 { 1584 struct internalvar* intvar; 1585 1586 /* Parse the expression - this is taken from set_command(). */ 1587 struct expression *expr = parse_expression (args); 1588 register struct cleanup *old_chain = 1589 make_cleanup (free_current_contents, &expr); 1590 1591 /* Validate the expression. 1592 Was the expression an assignment? 1593 Or even an expression at all? */ 1594 if (expr->nelts == 0 || expr->elts[0].opcode != BINOP_ASSIGN) 1595 error (_("Init-if-undefined requires an assignment expression.")); 1596 1597 /* Extract the variable from the parsed expression. 1598 In the case of an assign the lvalue will be in elts[1] and elts[2]. */ 1599 if (expr->elts[1].opcode != OP_INTERNALVAR) 1600 error (_("The first parameter to init-if-undefined " 1601 "should be a GDB variable.")); 1602 intvar = expr->elts[2].internalvar; 1603 1604 /* Only evaluate the expression if the lvalue is void. 1605 This may still fail if the expresssion is invalid. */ 1606 if (intvar->kind == INTERNALVAR_VOID) 1607 evaluate_expression (expr); 1608 1609 do_cleanups (old_chain); 1610 } 1611 1612 1613 /* Look up an internal variable with name NAME. NAME should not 1614 normally include a dollar sign. 1615 1616 If the specified internal variable does not exist, 1617 the return value is NULL. */ 1618 1619 struct internalvar * 1620 lookup_only_internalvar (const char *name) 1621 { 1622 struct internalvar *var; 1623 1624 for (var = internalvars; var; var = var->next) 1625 if (strcmp (var->name, name) == 0) 1626 return var; 1627 1628 return NULL; 1629 } 1630 1631 1632 /* Create an internal variable with name NAME and with a void value. 1633 NAME should not normally include a dollar sign. */ 1634 1635 struct internalvar * 1636 create_internalvar (const char *name) 1637 { 1638 struct internalvar *var; 1639 1640 var = (struct internalvar *) xmalloc (sizeof (struct internalvar)); 1641 var->name = concat (name, (char *)NULL); 1642 var->kind = INTERNALVAR_VOID; 1643 var->next = internalvars; 1644 internalvars = var; 1645 return var; 1646 } 1647 1648 /* Create an internal variable with name NAME and register FUN as the 1649 function that value_of_internalvar uses to create a value whenever 1650 this variable is referenced. NAME should not normally include a 1651 dollar sign. */ 1652 1653 struct internalvar * 1654 create_internalvar_type_lazy (char *name, internalvar_make_value fun) 1655 { 1656 struct internalvar *var = create_internalvar (name); 1657 1658 var->kind = INTERNALVAR_MAKE_VALUE; 1659 var->u.make_value = fun; 1660 return var; 1661 } 1662 1663 /* Look up an internal variable with name NAME. NAME should not 1664 normally include a dollar sign. 1665 1666 If the specified internal variable does not exist, 1667 one is created, with a void value. */ 1668 1669 struct internalvar * 1670 lookup_internalvar (const char *name) 1671 { 1672 struct internalvar *var; 1673 1674 var = lookup_only_internalvar (name); 1675 if (var) 1676 return var; 1677 1678 return create_internalvar (name); 1679 } 1680 1681 /* Return current value of internal variable VAR. For variables that 1682 are not inherently typed, use a value type appropriate for GDBARCH. */ 1683 1684 struct value * 1685 value_of_internalvar (struct gdbarch *gdbarch, struct internalvar *var) 1686 { 1687 struct value *val; 1688 struct trace_state_variable *tsv; 1689 1690 /* If there is a trace state variable of the same name, assume that 1691 is what we really want to see. */ 1692 tsv = find_trace_state_variable (var->name); 1693 if (tsv) 1694 { 1695 tsv->value_known = target_get_trace_state_variable_value (tsv->number, 1696 &(tsv->value)); 1697 if (tsv->value_known) 1698 val = value_from_longest (builtin_type (gdbarch)->builtin_int64, 1699 tsv->value); 1700 else 1701 val = allocate_value (builtin_type (gdbarch)->builtin_void); 1702 return val; 1703 } 1704 1705 switch (var->kind) 1706 { 1707 case INTERNALVAR_VOID: 1708 val = allocate_value (builtin_type (gdbarch)->builtin_void); 1709 break; 1710 1711 case INTERNALVAR_FUNCTION: 1712 val = allocate_value (builtin_type (gdbarch)->internal_fn); 1713 break; 1714 1715 case INTERNALVAR_INTEGER: 1716 if (!var->u.integer.type) 1717 val = value_from_longest (builtin_type (gdbarch)->builtin_int, 1718 var->u.integer.val); 1719 else 1720 val = value_from_longest (var->u.integer.type, var->u.integer.val); 1721 break; 1722 1723 case INTERNALVAR_STRING: 1724 val = value_cstring (var->u.string, strlen (var->u.string), 1725 builtin_type (gdbarch)->builtin_char); 1726 break; 1727 1728 case INTERNALVAR_VALUE: 1729 val = value_copy (var->u.value); 1730 if (value_lazy (val)) 1731 value_fetch_lazy (val); 1732 break; 1733 1734 case INTERNALVAR_MAKE_VALUE: 1735 val = (*var->u.make_value) (gdbarch, var); 1736 break; 1737 1738 default: 1739 internal_error (__FILE__, __LINE__, _("bad kind")); 1740 } 1741 1742 /* Change the VALUE_LVAL to lval_internalvar so that future operations 1743 on this value go back to affect the original internal variable. 1744 1745 Do not do this for INTERNALVAR_MAKE_VALUE variables, as those have 1746 no underlying modifyable state in the internal variable. 1747 1748 Likewise, if the variable's value is a computed lvalue, we want 1749 references to it to produce another computed lvalue, where 1750 references and assignments actually operate through the 1751 computed value's functions. 1752 1753 This means that internal variables with computed values 1754 behave a little differently from other internal variables: 1755 assignments to them don't just replace the previous value 1756 altogether. At the moment, this seems like the behavior we 1757 want. */ 1758 1759 if (var->kind != INTERNALVAR_MAKE_VALUE 1760 && val->lval != lval_computed) 1761 { 1762 VALUE_LVAL (val) = lval_internalvar; 1763 VALUE_INTERNALVAR (val) = var; 1764 } 1765 1766 return val; 1767 } 1768 1769 int 1770 get_internalvar_integer (struct internalvar *var, LONGEST *result) 1771 { 1772 if (var->kind == INTERNALVAR_INTEGER) 1773 { 1774 *result = var->u.integer.val; 1775 return 1; 1776 } 1777 1778 if (var->kind == INTERNALVAR_VALUE) 1779 { 1780 struct type *type = check_typedef (value_type (var->u.value)); 1781 1782 if (TYPE_CODE (type) == TYPE_CODE_INT) 1783 { 1784 *result = value_as_long (var->u.value); 1785 return 1; 1786 } 1787 } 1788 1789 return 0; 1790 } 1791 1792 static int 1793 get_internalvar_function (struct internalvar *var, 1794 struct internal_function **result) 1795 { 1796 switch (var->kind) 1797 { 1798 case INTERNALVAR_FUNCTION: 1799 *result = var->u.fn.function; 1800 return 1; 1801 1802 default: 1803 return 0; 1804 } 1805 } 1806 1807 void 1808 set_internalvar_component (struct internalvar *var, int offset, int bitpos, 1809 int bitsize, struct value *newval) 1810 { 1811 gdb_byte *addr; 1812 1813 switch (var->kind) 1814 { 1815 case INTERNALVAR_VALUE: 1816 addr = value_contents_writeable (var->u.value); 1817 1818 if (bitsize) 1819 modify_field (value_type (var->u.value), addr + offset, 1820 value_as_long (newval), bitpos, bitsize); 1821 else 1822 memcpy (addr + offset, value_contents (newval), 1823 TYPE_LENGTH (value_type (newval))); 1824 break; 1825 1826 default: 1827 /* We can never get a component of any other kind. */ 1828 internal_error (__FILE__, __LINE__, _("set_internalvar_component")); 1829 } 1830 } 1831 1832 void 1833 set_internalvar (struct internalvar *var, struct value *val) 1834 { 1835 enum internalvar_kind new_kind; 1836 union internalvar_data new_data = { 0 }; 1837 1838 if (var->kind == INTERNALVAR_FUNCTION && var->u.fn.canonical) 1839 error (_("Cannot overwrite convenience function %s"), var->name); 1840 1841 /* Prepare new contents. */ 1842 switch (TYPE_CODE (check_typedef (value_type (val)))) 1843 { 1844 case TYPE_CODE_VOID: 1845 new_kind = INTERNALVAR_VOID; 1846 break; 1847 1848 case TYPE_CODE_INTERNAL_FUNCTION: 1849 gdb_assert (VALUE_LVAL (val) == lval_internalvar); 1850 new_kind = INTERNALVAR_FUNCTION; 1851 get_internalvar_function (VALUE_INTERNALVAR (val), 1852 &new_data.fn.function); 1853 /* Copies created here are never canonical. */ 1854 break; 1855 1856 default: 1857 new_kind = INTERNALVAR_VALUE; 1858 new_data.value = value_copy (val); 1859 new_data.value->modifiable = 1; 1860 1861 /* Force the value to be fetched from the target now, to avoid problems 1862 later when this internalvar is referenced and the target is gone or 1863 has changed. */ 1864 if (value_lazy (new_data.value)) 1865 value_fetch_lazy (new_data.value); 1866 1867 /* Release the value from the value chain to prevent it from being 1868 deleted by free_all_values. From here on this function should not 1869 call error () until new_data is installed into the var->u to avoid 1870 leaking memory. */ 1871 release_value (new_data.value); 1872 break; 1873 } 1874 1875 /* Clean up old contents. */ 1876 clear_internalvar (var); 1877 1878 /* Switch over. */ 1879 var->kind = new_kind; 1880 var->u = new_data; 1881 /* End code which must not call error(). */ 1882 } 1883 1884 void 1885 set_internalvar_integer (struct internalvar *var, LONGEST l) 1886 { 1887 /* Clean up old contents. */ 1888 clear_internalvar (var); 1889 1890 var->kind = INTERNALVAR_INTEGER; 1891 var->u.integer.type = NULL; 1892 var->u.integer.val = l; 1893 } 1894 1895 void 1896 set_internalvar_string (struct internalvar *var, const char *string) 1897 { 1898 /* Clean up old contents. */ 1899 clear_internalvar (var); 1900 1901 var->kind = INTERNALVAR_STRING; 1902 var->u.string = xstrdup (string); 1903 } 1904 1905 static void 1906 set_internalvar_function (struct internalvar *var, struct internal_function *f) 1907 { 1908 /* Clean up old contents. */ 1909 clear_internalvar (var); 1910 1911 var->kind = INTERNALVAR_FUNCTION; 1912 var->u.fn.function = f; 1913 var->u.fn.canonical = 1; 1914 /* Variables installed here are always the canonical version. */ 1915 } 1916 1917 void 1918 clear_internalvar (struct internalvar *var) 1919 { 1920 /* Clean up old contents. */ 1921 switch (var->kind) 1922 { 1923 case INTERNALVAR_VALUE: 1924 value_free (var->u.value); 1925 break; 1926 1927 case INTERNALVAR_STRING: 1928 xfree (var->u.string); 1929 break; 1930 1931 default: 1932 break; 1933 } 1934 1935 /* Reset to void kind. */ 1936 var->kind = INTERNALVAR_VOID; 1937 } 1938 1939 char * 1940 internalvar_name (struct internalvar *var) 1941 { 1942 return var->name; 1943 } 1944 1945 static struct internal_function * 1946 create_internal_function (const char *name, 1947 internal_function_fn handler, void *cookie) 1948 { 1949 struct internal_function *ifn = XNEW (struct internal_function); 1950 1951 ifn->name = xstrdup (name); 1952 ifn->handler = handler; 1953 ifn->cookie = cookie; 1954 return ifn; 1955 } 1956 1957 char * 1958 value_internal_function_name (struct value *val) 1959 { 1960 struct internal_function *ifn; 1961 int result; 1962 1963 gdb_assert (VALUE_LVAL (val) == lval_internalvar); 1964 result = get_internalvar_function (VALUE_INTERNALVAR (val), &ifn); 1965 gdb_assert (result); 1966 1967 return ifn->name; 1968 } 1969 1970 struct value * 1971 call_internal_function (struct gdbarch *gdbarch, 1972 const struct language_defn *language, 1973 struct value *func, int argc, struct value **argv) 1974 { 1975 struct internal_function *ifn; 1976 int result; 1977 1978 gdb_assert (VALUE_LVAL (func) == lval_internalvar); 1979 result = get_internalvar_function (VALUE_INTERNALVAR (func), &ifn); 1980 gdb_assert (result); 1981 1982 return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv); 1983 } 1984 1985 /* The 'function' command. This does nothing -- it is just a 1986 placeholder to let "help function NAME" work. This is also used as 1987 the implementation of the sub-command that is created when 1988 registering an internal function. */ 1989 static void 1990 function_command (char *command, int from_tty) 1991 { 1992 /* Do nothing. */ 1993 } 1994 1995 /* Clean up if an internal function's command is destroyed. */ 1996 static void 1997 function_destroyer (struct cmd_list_element *self, void *ignore) 1998 { 1999 xfree (self->name); 2000 xfree (self->doc); 2001 } 2002 2003 /* Add a new internal function. NAME is the name of the function; DOC 2004 is a documentation string describing the function. HANDLER is 2005 called when the function is invoked. COOKIE is an arbitrary 2006 pointer which is passed to HANDLER and is intended for "user 2007 data". */ 2008 void 2009 add_internal_function (const char *name, const char *doc, 2010 internal_function_fn handler, void *cookie) 2011 { 2012 struct cmd_list_element *cmd; 2013 struct internal_function *ifn; 2014 struct internalvar *var = lookup_internalvar (name); 2015 2016 ifn = create_internal_function (name, handler, cookie); 2017 set_internalvar_function (var, ifn); 2018 2019 cmd = add_cmd (xstrdup (name), no_class, function_command, (char *) doc, 2020 &functionlist); 2021 cmd->destroyer = function_destroyer; 2022 } 2023 2024 /* Update VALUE before discarding OBJFILE. COPIED_TYPES is used to 2025 prevent cycles / duplicates. */ 2026 2027 void 2028 preserve_one_value (struct value *value, struct objfile *objfile, 2029 htab_t copied_types) 2030 { 2031 if (TYPE_OBJFILE (value->type) == objfile) 2032 value->type = copy_type_recursive (objfile, value->type, copied_types); 2033 2034 if (TYPE_OBJFILE (value->enclosing_type) == objfile) 2035 value->enclosing_type = copy_type_recursive (objfile, 2036 value->enclosing_type, 2037 copied_types); 2038 } 2039 2040 /* Likewise for internal variable VAR. */ 2041 2042 static void 2043 preserve_one_internalvar (struct internalvar *var, struct objfile *objfile, 2044 htab_t copied_types) 2045 { 2046 switch (var->kind) 2047 { 2048 case INTERNALVAR_INTEGER: 2049 if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile) 2050 var->u.integer.type 2051 = copy_type_recursive (objfile, var->u.integer.type, copied_types); 2052 break; 2053 2054 case INTERNALVAR_VALUE: 2055 preserve_one_value (var->u.value, objfile, copied_types); 2056 break; 2057 } 2058 } 2059 2060 /* Update the internal variables and value history when OBJFILE is 2061 discarded; we must copy the types out of the objfile. New global types 2062 will be created for every convenience variable which currently points to 2063 this objfile's types, and the convenience variables will be adjusted to 2064 use the new global types. */ 2065 2066 void 2067 preserve_values (struct objfile *objfile) 2068 { 2069 htab_t copied_types; 2070 struct value_history_chunk *cur; 2071 struct internalvar *var; 2072 int i; 2073 2074 /* Create the hash table. We allocate on the objfile's obstack, since 2075 it is soon to be deleted. */ 2076 copied_types = create_copied_types_hash (objfile); 2077 2078 for (cur = value_history_chain; cur; cur = cur->next) 2079 for (i = 0; i < VALUE_HISTORY_CHUNK; i++) 2080 if (cur->values[i]) 2081 preserve_one_value (cur->values[i], objfile, copied_types); 2082 2083 for (var = internalvars; var; var = var->next) 2084 preserve_one_internalvar (var, objfile, copied_types); 2085 2086 preserve_python_values (objfile, copied_types); 2087 2088 htab_delete (copied_types); 2089 } 2090 2091 static void 2092 show_convenience (char *ignore, int from_tty) 2093 { 2094 struct gdbarch *gdbarch = get_current_arch (); 2095 struct internalvar *var; 2096 int varseen = 0; 2097 struct value_print_options opts; 2098 2099 get_user_print_options (&opts); 2100 for (var = internalvars; var; var = var->next) 2101 { 2102 volatile struct gdb_exception ex; 2103 2104 if (!varseen) 2105 { 2106 varseen = 1; 2107 } 2108 printf_filtered (("$%s = "), var->name); 2109 2110 TRY_CATCH (ex, RETURN_MASK_ERROR) 2111 { 2112 struct value *val; 2113 2114 val = value_of_internalvar (gdbarch, var); 2115 value_print (val, gdb_stdout, &opts); 2116 } 2117 if (ex.reason < 0) 2118 fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message); 2119 printf_filtered (("\n")); 2120 } 2121 if (!varseen) 2122 printf_unfiltered (_("No debugger convenience variables now defined.\n" 2123 "Convenience variables have " 2124 "names starting with \"$\";\n" 2125 "use \"set\" as in \"set " 2126 "$foo = 5\" to define them.\n")); 2127 } 2128 2129 /* Extract a value as a C number (either long or double). 2130 Knows how to convert fixed values to double, or 2131 floating values to long. 2132 Does not deallocate the value. */ 2133 2134 LONGEST 2135 value_as_long (struct value *val) 2136 { 2137 /* This coerces arrays and functions, which is necessary (e.g. 2138 in disassemble_command). It also dereferences references, which 2139 I suspect is the most logical thing to do. */ 2140 val = coerce_array (val); 2141 return unpack_long (value_type (val), value_contents (val)); 2142 } 2143 2144 DOUBLEST 2145 value_as_double (struct value *val) 2146 { 2147 DOUBLEST foo; 2148 int inv; 2149 2150 foo = unpack_double (value_type (val), value_contents (val), &inv); 2151 if (inv) 2152 error (_("Invalid floating value found in program.")); 2153 return foo; 2154 } 2155 2156 /* Extract a value as a C pointer. Does not deallocate the value. 2157 Note that val's type may not actually be a pointer; value_as_long 2158 handles all the cases. */ 2159 CORE_ADDR 2160 value_as_address (struct value *val) 2161 { 2162 struct gdbarch *gdbarch = get_type_arch (value_type (val)); 2163 2164 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure 2165 whether we want this to be true eventually. */ 2166 #if 0 2167 /* gdbarch_addr_bits_remove is wrong if we are being called for a 2168 non-address (e.g. argument to "signal", "info break", etc.), or 2169 for pointers to char, in which the low bits *are* significant. */ 2170 return gdbarch_addr_bits_remove (gdbarch, value_as_long (val)); 2171 #else 2172 2173 /* There are several targets (IA-64, PowerPC, and others) which 2174 don't represent pointers to functions as simply the address of 2175 the function's entry point. For example, on the IA-64, a 2176 function pointer points to a two-word descriptor, generated by 2177 the linker, which contains the function's entry point, and the 2178 value the IA-64 "global pointer" register should have --- to 2179 support position-independent code. The linker generates 2180 descriptors only for those functions whose addresses are taken. 2181 2182 On such targets, it's difficult for GDB to convert an arbitrary 2183 function address into a function pointer; it has to either find 2184 an existing descriptor for that function, or call malloc and 2185 build its own. On some targets, it is impossible for GDB to 2186 build a descriptor at all: the descriptor must contain a jump 2187 instruction; data memory cannot be executed; and code memory 2188 cannot be modified. 2189 2190 Upon entry to this function, if VAL is a value of type `function' 2191 (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then 2192 value_address (val) is the address of the function. This is what 2193 you'll get if you evaluate an expression like `main'. The call 2194 to COERCE_ARRAY below actually does all the usual unary 2195 conversions, which includes converting values of type `function' 2196 to `pointer to function'. This is the challenging conversion 2197 discussed above. Then, `unpack_long' will convert that pointer 2198 back into an address. 2199 2200 So, suppose the user types `disassemble foo' on an architecture 2201 with a strange function pointer representation, on which GDB 2202 cannot build its own descriptors, and suppose further that `foo' 2203 has no linker-built descriptor. The address->pointer conversion 2204 will signal an error and prevent the command from running, even 2205 though the next step would have been to convert the pointer 2206 directly back into the same address. 2207 2208 The following shortcut avoids this whole mess. If VAL is a 2209 function, just return its address directly. */ 2210 if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC 2211 || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD) 2212 return value_address (val); 2213 2214 val = coerce_array (val); 2215 2216 /* Some architectures (e.g. Harvard), map instruction and data 2217 addresses onto a single large unified address space. For 2218 instance: An architecture may consider a large integer in the 2219 range 0x10000000 .. 0x1000ffff to already represent a data 2220 addresses (hence not need a pointer to address conversion) while 2221 a small integer would still need to be converted integer to 2222 pointer to address. Just assume such architectures handle all 2223 integer conversions in a single function. */ 2224 2225 /* JimB writes: 2226 2227 I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we 2228 must admonish GDB hackers to make sure its behavior matches the 2229 compiler's, whenever possible. 2230 2231 In general, I think GDB should evaluate expressions the same way 2232 the compiler does. When the user copies an expression out of 2233 their source code and hands it to a `print' command, they should 2234 get the same value the compiler would have computed. Any 2235 deviation from this rule can cause major confusion and annoyance, 2236 and needs to be justified carefully. In other words, GDB doesn't 2237 really have the freedom to do these conversions in clever and 2238 useful ways. 2239 2240 AndrewC pointed out that users aren't complaining about how GDB 2241 casts integers to pointers; they are complaining that they can't 2242 take an address from a disassembly listing and give it to `x/i'. 2243 This is certainly important. 2244 2245 Adding an architecture method like integer_to_address() certainly 2246 makes it possible for GDB to "get it right" in all circumstances 2247 --- the target has complete control over how things get done, so 2248 people can Do The Right Thing for their target without breaking 2249 anyone else. The standard doesn't specify how integers get 2250 converted to pointers; usually, the ABI doesn't either, but 2251 ABI-specific code is a more reasonable place to handle it. */ 2252 2253 if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR 2254 && TYPE_CODE (value_type (val)) != TYPE_CODE_REF 2255 && gdbarch_integer_to_address_p (gdbarch)) 2256 return gdbarch_integer_to_address (gdbarch, value_type (val), 2257 value_contents (val)); 2258 2259 return unpack_long (value_type (val), value_contents (val)); 2260 #endif 2261 } 2262 2263 /* Unpack raw data (copied from debugee, target byte order) at VALADDR 2264 as a long, or as a double, assuming the raw data is described 2265 by type TYPE. Knows how to convert different sizes of values 2266 and can convert between fixed and floating point. We don't assume 2267 any alignment for the raw data. Return value is in host byte order. 2268 2269 If you want functions and arrays to be coerced to pointers, and 2270 references to be dereferenced, call value_as_long() instead. 2271 2272 C++: It is assumed that the front-end has taken care of 2273 all matters concerning pointers to members. A pointer 2274 to member which reaches here is considered to be equivalent 2275 to an INT (or some size). After all, it is only an offset. */ 2276 2277 LONGEST 2278 unpack_long (struct type *type, const gdb_byte *valaddr) 2279 { 2280 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); 2281 enum type_code code = TYPE_CODE (type); 2282 int len = TYPE_LENGTH (type); 2283 int nosign = TYPE_UNSIGNED (type); 2284 2285 switch (code) 2286 { 2287 case TYPE_CODE_TYPEDEF: 2288 return unpack_long (check_typedef (type), valaddr); 2289 case TYPE_CODE_ENUM: 2290 case TYPE_CODE_FLAGS: 2291 case TYPE_CODE_BOOL: 2292 case TYPE_CODE_INT: 2293 case TYPE_CODE_CHAR: 2294 case TYPE_CODE_RANGE: 2295 case TYPE_CODE_MEMBERPTR: 2296 if (nosign) 2297 return extract_unsigned_integer (valaddr, len, byte_order); 2298 else 2299 return extract_signed_integer (valaddr, len, byte_order); 2300 2301 case TYPE_CODE_FLT: 2302 return extract_typed_floating (valaddr, type); 2303 2304 case TYPE_CODE_DECFLOAT: 2305 /* libdecnumber has a function to convert from decimal to integer, but 2306 it doesn't work when the decimal number has a fractional part. */ 2307 return decimal_to_doublest (valaddr, len, byte_order); 2308 2309 case TYPE_CODE_PTR: 2310 case TYPE_CODE_REF: 2311 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure 2312 whether we want this to be true eventually. */ 2313 return extract_typed_address (valaddr, type); 2314 2315 default: 2316 error (_("Value can't be converted to integer.")); 2317 } 2318 return 0; /* Placate lint. */ 2319 } 2320 2321 /* Return a double value from the specified type and address. 2322 INVP points to an int which is set to 0 for valid value, 2323 1 for invalid value (bad float format). In either case, 2324 the returned double is OK to use. Argument is in target 2325 format, result is in host format. */ 2326 2327 DOUBLEST 2328 unpack_double (struct type *type, const gdb_byte *valaddr, int *invp) 2329 { 2330 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); 2331 enum type_code code; 2332 int len; 2333 int nosign; 2334 2335 *invp = 0; /* Assume valid. */ 2336 CHECK_TYPEDEF (type); 2337 code = TYPE_CODE (type); 2338 len = TYPE_LENGTH (type); 2339 nosign = TYPE_UNSIGNED (type); 2340 if (code == TYPE_CODE_FLT) 2341 { 2342 /* NOTE: cagney/2002-02-19: There was a test here to see if the 2343 floating-point value was valid (using the macro 2344 INVALID_FLOAT). That test/macro have been removed. 2345 2346 It turns out that only the VAX defined this macro and then 2347 only in a non-portable way. Fixing the portability problem 2348 wouldn't help since the VAX floating-point code is also badly 2349 bit-rotten. The target needs to add definitions for the 2350 methods gdbarch_float_format and gdbarch_double_format - these 2351 exactly describe the target floating-point format. The 2352 problem here is that the corresponding floatformat_vax_f and 2353 floatformat_vax_d values these methods should be set to are 2354 also not defined either. Oops! 2355 2356 Hopefully someone will add both the missing floatformat 2357 definitions and the new cases for floatformat_is_valid (). */ 2358 2359 if (!floatformat_is_valid (floatformat_from_type (type), valaddr)) 2360 { 2361 *invp = 1; 2362 return 0.0; 2363 } 2364 2365 return extract_typed_floating (valaddr, type); 2366 } 2367 else if (code == TYPE_CODE_DECFLOAT) 2368 return decimal_to_doublest (valaddr, len, byte_order); 2369 else if (nosign) 2370 { 2371 /* Unsigned -- be sure we compensate for signed LONGEST. */ 2372 return (ULONGEST) unpack_long (type, valaddr); 2373 } 2374 else 2375 { 2376 /* Signed -- we are OK with unpack_long. */ 2377 return unpack_long (type, valaddr); 2378 } 2379 } 2380 2381 /* Unpack raw data (copied from debugee, target byte order) at VALADDR 2382 as a CORE_ADDR, assuming the raw data is described by type TYPE. 2383 We don't assume any alignment for the raw data. Return value is in 2384 host byte order. 2385 2386 If you want functions and arrays to be coerced to pointers, and 2387 references to be dereferenced, call value_as_address() instead. 2388 2389 C++: It is assumed that the front-end has taken care of 2390 all matters concerning pointers to members. A pointer 2391 to member which reaches here is considered to be equivalent 2392 to an INT (or some size). After all, it is only an offset. */ 2393 2394 CORE_ADDR 2395 unpack_pointer (struct type *type, const gdb_byte *valaddr) 2396 { 2397 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure 2398 whether we want this to be true eventually. */ 2399 return unpack_long (type, valaddr); 2400 } 2401 2402 2403 /* Get the value of the FIELDNO'th field (which must be static) of 2404 TYPE. Return NULL if the field doesn't exist or has been 2405 optimized out. */ 2406 2407 struct value * 2408 value_static_field (struct type *type, int fieldno) 2409 { 2410 struct value *retval; 2411 2412 switch (TYPE_FIELD_LOC_KIND (type, fieldno)) 2413 { 2414 case FIELD_LOC_KIND_PHYSADDR: 2415 retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno), 2416 TYPE_FIELD_STATIC_PHYSADDR (type, fieldno)); 2417 break; 2418 case FIELD_LOC_KIND_PHYSNAME: 2419 { 2420 const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno); 2421 /* TYPE_FIELD_NAME (type, fieldno); */ 2422 struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0); 2423 2424 if (sym == NULL) 2425 { 2426 /* With some compilers, e.g. HP aCC, static data members are 2427 reported as non-debuggable symbols. */ 2428 struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, 2429 NULL, NULL); 2430 2431 if (!msym) 2432 return NULL; 2433 else 2434 { 2435 retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno), 2436 SYMBOL_VALUE_ADDRESS (msym)); 2437 } 2438 } 2439 else 2440 retval = value_of_variable (sym, NULL); 2441 break; 2442 } 2443 default: 2444 gdb_assert_not_reached ("unexpected field location kind"); 2445 } 2446 2447 return retval; 2448 } 2449 2450 /* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE. 2451 You have to be careful here, since the size of the data area for the value 2452 is set by the length of the enclosing type. So if NEW_ENCL_TYPE is bigger 2453 than the old enclosing type, you have to allocate more space for the 2454 data. */ 2455 2456 void 2457 set_value_enclosing_type (struct value *val, struct type *new_encl_type) 2458 { 2459 if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val))) 2460 val->contents = 2461 (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type)); 2462 2463 val->enclosing_type = new_encl_type; 2464 } 2465 2466 /* Given a value ARG1 (offset by OFFSET bytes) 2467 of a struct or union type ARG_TYPE, 2468 extract and return the value of one of its (non-static) fields. 2469 FIELDNO says which field. */ 2470 2471 struct value * 2472 value_primitive_field (struct value *arg1, int offset, 2473 int fieldno, struct type *arg_type) 2474 { 2475 struct value *v; 2476 struct type *type; 2477 2478 CHECK_TYPEDEF (arg_type); 2479 type = TYPE_FIELD_TYPE (arg_type, fieldno); 2480 2481 /* Call check_typedef on our type to make sure that, if TYPE 2482 is a TYPE_CODE_TYPEDEF, its length is set to the length 2483 of the target type instead of zero. However, we do not 2484 replace the typedef type by the target type, because we want 2485 to keep the typedef in order to be able to print the type 2486 description correctly. */ 2487 check_typedef (type); 2488 2489 if (value_optimized_out (arg1)) 2490 v = allocate_optimized_out_value (type); 2491 else if (TYPE_FIELD_BITSIZE (arg_type, fieldno)) 2492 { 2493 /* Handle packed fields. 2494 2495 Create a new value for the bitfield, with bitpos and bitsize 2496 set. If possible, arrange offset and bitpos so that we can 2497 do a single aligned read of the size of the containing type. 2498 Otherwise, adjust offset to the byte containing the first 2499 bit. Assume that the address, offset, and embedded offset 2500 are sufficiently aligned. */ 2501 2502 int bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno); 2503 int container_bitsize = TYPE_LENGTH (type) * 8; 2504 2505 v = allocate_value_lazy (type); 2506 v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno); 2507 if ((bitpos % container_bitsize) + v->bitsize <= container_bitsize 2508 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)) 2509 v->bitpos = bitpos % container_bitsize; 2510 else 2511 v->bitpos = bitpos % 8; 2512 v->offset = (value_embedded_offset (arg1) 2513 + offset 2514 + (bitpos - v->bitpos) / 8); 2515 v->parent = arg1; 2516 value_incref (v->parent); 2517 if (!value_lazy (arg1)) 2518 value_fetch_lazy (v); 2519 } 2520 else if (fieldno < TYPE_N_BASECLASSES (arg_type)) 2521 { 2522 /* This field is actually a base subobject, so preserve the 2523 entire object's contents for later references to virtual 2524 bases, etc. */ 2525 2526 /* Lazy register values with offsets are not supported. */ 2527 if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1)) 2528 value_fetch_lazy (arg1); 2529 2530 if (value_lazy (arg1)) 2531 v = allocate_value_lazy (value_enclosing_type (arg1)); 2532 else 2533 { 2534 v = allocate_value (value_enclosing_type (arg1)); 2535 value_contents_copy_raw (v, 0, arg1, 0, 2536 TYPE_LENGTH (value_enclosing_type (arg1))); 2537 } 2538 v->type = type; 2539 v->offset = value_offset (arg1); 2540 v->embedded_offset = (offset + value_embedded_offset (arg1) 2541 + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8); 2542 } 2543 else 2544 { 2545 /* Plain old data member */ 2546 offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8; 2547 2548 /* Lazy register values with offsets are not supported. */ 2549 if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1)) 2550 value_fetch_lazy (arg1); 2551 2552 if (value_lazy (arg1)) 2553 v = allocate_value_lazy (type); 2554 else 2555 { 2556 v = allocate_value (type); 2557 value_contents_copy_raw (v, value_embedded_offset (v), 2558 arg1, value_embedded_offset (arg1) + offset, 2559 TYPE_LENGTH (type)); 2560 } 2561 v->offset = (value_offset (arg1) + offset 2562 + value_embedded_offset (arg1)); 2563 } 2564 set_value_component_location (v, arg1); 2565 VALUE_REGNUM (v) = VALUE_REGNUM (arg1); 2566 VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1); 2567 return v; 2568 } 2569 2570 /* Given a value ARG1 of a struct or union type, 2571 extract and return the value of one of its (non-static) fields. 2572 FIELDNO says which field. */ 2573 2574 struct value * 2575 value_field (struct value *arg1, int fieldno) 2576 { 2577 return value_primitive_field (arg1, 0, fieldno, value_type (arg1)); 2578 } 2579 2580 /* Return a non-virtual function as a value. 2581 F is the list of member functions which contains the desired method. 2582 J is an index into F which provides the desired method. 2583 2584 We only use the symbol for its address, so be happy with either a 2585 full symbol or a minimal symbol. */ 2586 2587 struct value * 2588 value_fn_field (struct value **arg1p, struct fn_field *f, 2589 int j, struct type *type, 2590 int offset) 2591 { 2592 struct value *v; 2593 struct type *ftype = TYPE_FN_FIELD_TYPE (f, j); 2594 const char *physname = TYPE_FN_FIELD_PHYSNAME (f, j); 2595 struct symbol *sym; 2596 struct minimal_symbol *msym; 2597 2598 sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0); 2599 if (sym != NULL) 2600 { 2601 msym = NULL; 2602 } 2603 else 2604 { 2605 gdb_assert (sym == NULL); 2606 msym = lookup_minimal_symbol (physname, NULL, NULL); 2607 if (msym == NULL) 2608 return NULL; 2609 } 2610 2611 v = allocate_value (ftype); 2612 if (sym) 2613 { 2614 set_value_address (v, BLOCK_START (SYMBOL_BLOCK_VALUE (sym))); 2615 } 2616 else 2617 { 2618 /* The minimal symbol might point to a function descriptor; 2619 resolve it to the actual code address instead. */ 2620 struct objfile *objfile = msymbol_objfile (msym); 2621 struct gdbarch *gdbarch = get_objfile_arch (objfile); 2622 2623 set_value_address (v, 2624 gdbarch_convert_from_func_ptr_addr 2625 (gdbarch, SYMBOL_VALUE_ADDRESS (msym), ¤t_target)); 2626 } 2627 2628 if (arg1p) 2629 { 2630 if (type != value_type (*arg1p)) 2631 *arg1p = value_ind (value_cast (lookup_pointer_type (type), 2632 value_addr (*arg1p))); 2633 2634 /* Move the `this' pointer according to the offset. 2635 VALUE_OFFSET (*arg1p) += offset; */ 2636 } 2637 2638 return v; 2639 } 2640 2641 2642 2643 /* Helper function for both unpack_value_bits_as_long and 2644 unpack_bits_as_long. See those functions for more details on the 2645 interface; the only difference is that this function accepts either 2646 a NULL or a non-NULL ORIGINAL_VALUE. */ 2647 2648 static int 2649 unpack_value_bits_as_long_1 (struct type *field_type, const gdb_byte *valaddr, 2650 int embedded_offset, int bitpos, int bitsize, 2651 const struct value *original_value, 2652 LONGEST *result) 2653 { 2654 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (field_type)); 2655 ULONGEST val; 2656 ULONGEST valmask; 2657 int lsbcount; 2658 int bytes_read; 2659 int read_offset; 2660 2661 /* Read the minimum number of bytes required; there may not be 2662 enough bytes to read an entire ULONGEST. */ 2663 CHECK_TYPEDEF (field_type); 2664 if (bitsize) 2665 bytes_read = ((bitpos % 8) + bitsize + 7) / 8; 2666 else 2667 bytes_read = TYPE_LENGTH (field_type); 2668 2669 read_offset = bitpos / 8; 2670 2671 if (original_value != NULL 2672 && !value_bytes_available (original_value, embedded_offset + read_offset, 2673 bytes_read)) 2674 return 0; 2675 2676 val = extract_unsigned_integer (valaddr + embedded_offset + read_offset, 2677 bytes_read, byte_order); 2678 2679 /* Extract bits. See comment above. */ 2680 2681 if (gdbarch_bits_big_endian (get_type_arch (field_type))) 2682 lsbcount = (bytes_read * 8 - bitpos % 8 - bitsize); 2683 else 2684 lsbcount = (bitpos % 8); 2685 val >>= lsbcount; 2686 2687 /* If the field does not entirely fill a LONGEST, then zero the sign bits. 2688 If the field is signed, and is negative, then sign extend. */ 2689 2690 if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val))) 2691 { 2692 valmask = (((ULONGEST) 1) << bitsize) - 1; 2693 val &= valmask; 2694 if (!TYPE_UNSIGNED (field_type)) 2695 { 2696 if (val & (valmask ^ (valmask >> 1))) 2697 { 2698 val |= ~valmask; 2699 } 2700 } 2701 } 2702 2703 *result = val; 2704 return 1; 2705 } 2706 2707 /* Unpack a bitfield of the specified FIELD_TYPE, from the object at 2708 VALADDR + EMBEDDED_OFFSET, and store the result in *RESULT. 2709 VALADDR points to the contents of ORIGINAL_VALUE, which must not be 2710 NULL. The bitfield starts at BITPOS bits and contains BITSIZE 2711 bits. 2712 2713 Returns false if the value contents are unavailable, otherwise 2714 returns true, indicating a valid value has been stored in *RESULT. 2715 2716 Extracting bits depends on endianness of the machine. Compute the 2717 number of least significant bits to discard. For big endian machines, 2718 we compute the total number of bits in the anonymous object, subtract 2719 off the bit count from the MSB of the object to the MSB of the 2720 bitfield, then the size of the bitfield, which leaves the LSB discard 2721 count. For little endian machines, the discard count is simply the 2722 number of bits from the LSB of the anonymous object to the LSB of the 2723 bitfield. 2724 2725 If the field is signed, we also do sign extension. */ 2726 2727 int 2728 unpack_value_bits_as_long (struct type *field_type, const gdb_byte *valaddr, 2729 int embedded_offset, int bitpos, int bitsize, 2730 const struct value *original_value, 2731 LONGEST *result) 2732 { 2733 gdb_assert (original_value != NULL); 2734 2735 return unpack_value_bits_as_long_1 (field_type, valaddr, embedded_offset, 2736 bitpos, bitsize, original_value, result); 2737 2738 } 2739 2740 /* Unpack a field FIELDNO of the specified TYPE, from the object at 2741 VALADDR + EMBEDDED_OFFSET. VALADDR points to the contents of 2742 ORIGINAL_VALUE. See unpack_value_bits_as_long for more 2743 details. */ 2744 2745 static int 2746 unpack_value_field_as_long_1 (struct type *type, const gdb_byte *valaddr, 2747 int embedded_offset, int fieldno, 2748 const struct value *val, LONGEST *result) 2749 { 2750 int bitpos = TYPE_FIELD_BITPOS (type, fieldno); 2751 int bitsize = TYPE_FIELD_BITSIZE (type, fieldno); 2752 struct type *field_type = TYPE_FIELD_TYPE (type, fieldno); 2753 2754 return unpack_value_bits_as_long_1 (field_type, valaddr, embedded_offset, 2755 bitpos, bitsize, val, 2756 result); 2757 } 2758 2759 /* Unpack a field FIELDNO of the specified TYPE, from the object at 2760 VALADDR + EMBEDDED_OFFSET. VALADDR points to the contents of 2761 ORIGINAL_VALUE, which must not be NULL. See 2762 unpack_value_bits_as_long for more details. */ 2763 2764 int 2765 unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr, 2766 int embedded_offset, int fieldno, 2767 const struct value *val, LONGEST *result) 2768 { 2769 gdb_assert (val != NULL); 2770 2771 return unpack_value_field_as_long_1 (type, valaddr, embedded_offset, 2772 fieldno, val, result); 2773 } 2774 2775 /* Unpack a field FIELDNO of the specified TYPE, from the anonymous 2776 object at VALADDR. See unpack_value_bits_as_long for more details. 2777 This function differs from unpack_value_field_as_long in that it 2778 operates without a struct value object. */ 2779 2780 LONGEST 2781 unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno) 2782 { 2783 LONGEST result; 2784 2785 unpack_value_field_as_long_1 (type, valaddr, 0, fieldno, NULL, &result); 2786 return result; 2787 } 2788 2789 /* Return a new value with type TYPE, which is FIELDNO field of the 2790 object at VALADDR + EMBEDDEDOFFSET. VALADDR points to the contents 2791 of VAL. If the VAL's contents required to extract the bitfield 2792 from are unavailable, the new value is correspondingly marked as 2793 unavailable. */ 2794 2795 struct value * 2796 value_field_bitfield (struct type *type, int fieldno, 2797 const gdb_byte *valaddr, 2798 int embedded_offset, const struct value *val) 2799 { 2800 LONGEST l; 2801 2802 if (!unpack_value_field_as_long (type, valaddr, embedded_offset, fieldno, 2803 val, &l)) 2804 { 2805 struct type *field_type = TYPE_FIELD_TYPE (type, fieldno); 2806 struct value *retval = allocate_value (field_type); 2807 mark_value_bytes_unavailable (retval, 0, TYPE_LENGTH (field_type)); 2808 return retval; 2809 } 2810 else 2811 { 2812 return value_from_longest (TYPE_FIELD_TYPE (type, fieldno), l); 2813 } 2814 } 2815 2816 /* Modify the value of a bitfield. ADDR points to a block of memory in 2817 target byte order; the bitfield starts in the byte pointed to. FIELDVAL 2818 is the desired value of the field, in host byte order. BITPOS and BITSIZE 2819 indicate which bits (in target bit order) comprise the bitfield. 2820 Requires 0 < BITSIZE <= lbits, 0 <= BITPOS % 8 + BITSIZE <= lbits, and 2821 0 <= BITPOS, where lbits is the size of a LONGEST in bits. */ 2822 2823 void 2824 modify_field (struct type *type, gdb_byte *addr, 2825 LONGEST fieldval, int bitpos, int bitsize) 2826 { 2827 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); 2828 ULONGEST oword; 2829 ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize); 2830 int bytesize; 2831 2832 /* Normalize BITPOS. */ 2833 addr += bitpos / 8; 2834 bitpos %= 8; 2835 2836 /* If a negative fieldval fits in the field in question, chop 2837 off the sign extension bits. */ 2838 if ((~fieldval & ~(mask >> 1)) == 0) 2839 fieldval &= mask; 2840 2841 /* Warn if value is too big to fit in the field in question. */ 2842 if (0 != (fieldval & ~mask)) 2843 { 2844 /* FIXME: would like to include fieldval in the message, but 2845 we don't have a sprintf_longest. */ 2846 warning (_("Value does not fit in %d bits."), bitsize); 2847 2848 /* Truncate it, otherwise adjoining fields may be corrupted. */ 2849 fieldval &= mask; 2850 } 2851 2852 /* Ensure no bytes outside of the modified ones get accessed as it may cause 2853 false valgrind reports. */ 2854 2855 bytesize = (bitpos + bitsize + 7) / 8; 2856 oword = extract_unsigned_integer (addr, bytesize, byte_order); 2857 2858 /* Shifting for bit field depends on endianness of the target machine. */ 2859 if (gdbarch_bits_big_endian (get_type_arch (type))) 2860 bitpos = bytesize * 8 - bitpos - bitsize; 2861 2862 oword &= ~(mask << bitpos); 2863 oword |= fieldval << bitpos; 2864 2865 store_unsigned_integer (addr, bytesize, byte_order, oword); 2866 } 2867 2868 /* Pack NUM into BUF using a target format of TYPE. */ 2869 2870 void 2871 pack_long (gdb_byte *buf, struct type *type, LONGEST num) 2872 { 2873 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); 2874 int len; 2875 2876 type = check_typedef (type); 2877 len = TYPE_LENGTH (type); 2878 2879 switch (TYPE_CODE (type)) 2880 { 2881 case TYPE_CODE_INT: 2882 case TYPE_CODE_CHAR: 2883 case TYPE_CODE_ENUM: 2884 case TYPE_CODE_FLAGS: 2885 case TYPE_CODE_BOOL: 2886 case TYPE_CODE_RANGE: 2887 case TYPE_CODE_MEMBERPTR: 2888 store_signed_integer (buf, len, byte_order, num); 2889 break; 2890 2891 case TYPE_CODE_REF: 2892 case TYPE_CODE_PTR: 2893 store_typed_address (buf, type, (CORE_ADDR) num); 2894 break; 2895 2896 default: 2897 error (_("Unexpected type (%d) encountered for integer constant."), 2898 TYPE_CODE (type)); 2899 } 2900 } 2901 2902 2903 /* Pack NUM into BUF using a target format of TYPE. */ 2904 2905 void 2906 pack_unsigned_long (gdb_byte *buf, struct type *type, ULONGEST num) 2907 { 2908 int len; 2909 enum bfd_endian byte_order; 2910 2911 type = check_typedef (type); 2912 len = TYPE_LENGTH (type); 2913 byte_order = gdbarch_byte_order (get_type_arch (type)); 2914 2915 switch (TYPE_CODE (type)) 2916 { 2917 case TYPE_CODE_INT: 2918 case TYPE_CODE_CHAR: 2919 case TYPE_CODE_ENUM: 2920 case TYPE_CODE_FLAGS: 2921 case TYPE_CODE_BOOL: 2922 case TYPE_CODE_RANGE: 2923 case TYPE_CODE_MEMBERPTR: 2924 store_unsigned_integer (buf, len, byte_order, num); 2925 break; 2926 2927 case TYPE_CODE_REF: 2928 case TYPE_CODE_PTR: 2929 store_typed_address (buf, type, (CORE_ADDR) num); 2930 break; 2931 2932 default: 2933 error (_("Unexpected type (%d) encountered " 2934 "for unsigned integer constant."), 2935 TYPE_CODE (type)); 2936 } 2937 } 2938 2939 2940 /* Convert C numbers into newly allocated values. */ 2941 2942 struct value * 2943 value_from_longest (struct type *type, LONGEST num) 2944 { 2945 struct value *val = allocate_value (type); 2946 2947 pack_long (value_contents_raw (val), type, num); 2948 return val; 2949 } 2950 2951 2952 /* Convert C unsigned numbers into newly allocated values. */ 2953 2954 struct value * 2955 value_from_ulongest (struct type *type, ULONGEST num) 2956 { 2957 struct value *val = allocate_value (type); 2958 2959 pack_unsigned_long (value_contents_raw (val), type, num); 2960 2961 return val; 2962 } 2963 2964 2965 /* Create a value representing a pointer of type TYPE to the address 2966 ADDR. */ 2967 struct value * 2968 value_from_pointer (struct type *type, CORE_ADDR addr) 2969 { 2970 struct value *val = allocate_value (type); 2971 2972 store_typed_address (value_contents_raw (val), check_typedef (type), addr); 2973 return val; 2974 } 2975 2976 2977 /* Create a value of type TYPE whose contents come from VALADDR, if it 2978 is non-null, and whose memory address (in the inferior) is 2979 ADDRESS. */ 2980 2981 struct value * 2982 value_from_contents_and_address (struct type *type, 2983 const gdb_byte *valaddr, 2984 CORE_ADDR address) 2985 { 2986 struct value *v; 2987 2988 if (valaddr == NULL) 2989 v = allocate_value_lazy (type); 2990 else 2991 { 2992 v = allocate_value (type); 2993 memcpy (value_contents_raw (v), valaddr, TYPE_LENGTH (type)); 2994 } 2995 set_value_address (v, address); 2996 VALUE_LVAL (v) = lval_memory; 2997 return v; 2998 } 2999 3000 /* Create a value of type TYPE holding the contents CONTENTS. 3001 The new value is `not_lval'. */ 3002 3003 struct value * 3004 value_from_contents (struct type *type, const gdb_byte *contents) 3005 { 3006 struct value *result; 3007 3008 result = allocate_value (type); 3009 memcpy (value_contents_raw (result), contents, TYPE_LENGTH (type)); 3010 return result; 3011 } 3012 3013 struct value * 3014 value_from_double (struct type *type, DOUBLEST num) 3015 { 3016 struct value *val = allocate_value (type); 3017 struct type *base_type = check_typedef (type); 3018 enum type_code code = TYPE_CODE (base_type); 3019 3020 if (code == TYPE_CODE_FLT) 3021 { 3022 store_typed_floating (value_contents_raw (val), base_type, num); 3023 } 3024 else 3025 error (_("Unexpected type encountered for floating constant.")); 3026 3027 return val; 3028 } 3029 3030 struct value * 3031 value_from_decfloat (struct type *type, const gdb_byte *dec) 3032 { 3033 struct value *val = allocate_value (type); 3034 3035 memcpy (value_contents_raw (val), dec, TYPE_LENGTH (type)); 3036 return val; 3037 } 3038 3039 /* Extract a value from the history file. Input will be of the form 3040 $digits or $$digits. See block comment above 'write_dollar_variable' 3041 for details. */ 3042 3043 struct value * 3044 value_from_history_ref (char *h, char **endp) 3045 { 3046 int index, len; 3047 3048 if (h[0] == '$') 3049 len = 1; 3050 else 3051 return NULL; 3052 3053 if (h[1] == '$') 3054 len = 2; 3055 3056 /* Find length of numeral string. */ 3057 for (; isdigit (h[len]); len++) 3058 ; 3059 3060 /* Make sure numeral string is not part of an identifier. */ 3061 if (h[len] == '_' || isalpha (h[len])) 3062 return NULL; 3063 3064 /* Now collect the index value. */ 3065 if (h[1] == '$') 3066 { 3067 if (len == 2) 3068 { 3069 /* For some bizarre reason, "$$" is equivalent to "$$1", 3070 rather than to "$$0" as it ought to be! */ 3071 index = -1; 3072 *endp += len; 3073 } 3074 else 3075 index = -strtol (&h[2], endp, 10); 3076 } 3077 else 3078 { 3079 if (len == 1) 3080 { 3081 /* "$" is equivalent to "$0". */ 3082 index = 0; 3083 *endp += len; 3084 } 3085 else 3086 index = strtol (&h[1], endp, 10); 3087 } 3088 3089 return access_value_history (index); 3090 } 3091 3092 struct value * 3093 coerce_ref_if_computed (const struct value *arg) 3094 { 3095 const struct lval_funcs *funcs; 3096 3097 if (TYPE_CODE (check_typedef (value_type (arg))) != TYPE_CODE_REF) 3098 return NULL; 3099 3100 if (value_lval_const (arg) != lval_computed) 3101 return NULL; 3102 3103 funcs = value_computed_funcs (arg); 3104 if (funcs->coerce_ref == NULL) 3105 return NULL; 3106 3107 return funcs->coerce_ref (arg); 3108 } 3109 3110 struct value * 3111 coerce_ref (struct value *arg) 3112 { 3113 struct type *value_type_arg_tmp = check_typedef (value_type (arg)); 3114 struct value *retval; 3115 3116 retval = coerce_ref_if_computed (arg); 3117 if (retval) 3118 return retval; 3119 3120 if (TYPE_CODE (value_type_arg_tmp) != TYPE_CODE_REF) 3121 return arg; 3122 3123 return value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp), 3124 unpack_pointer (value_type (arg), 3125 value_contents (arg))); 3126 } 3127 3128 struct value * 3129 coerce_array (struct value *arg) 3130 { 3131 struct type *type; 3132 3133 arg = coerce_ref (arg); 3134 type = check_typedef (value_type (arg)); 3135 3136 switch (TYPE_CODE (type)) 3137 { 3138 case TYPE_CODE_ARRAY: 3139 if (!TYPE_VECTOR (type) && current_language->c_style_arrays) 3140 arg = value_coerce_array (arg); 3141 break; 3142 case TYPE_CODE_FUNC: 3143 arg = value_coerce_function (arg); 3144 break; 3145 } 3146 return arg; 3147 } 3148 3149 3150 /* Return true if the function returning the specified type is using 3151 the convention of returning structures in memory (passing in the 3152 address as a hidden first parameter). */ 3153 3154 int 3155 using_struct_return (struct gdbarch *gdbarch, 3156 struct type *func_type, struct type *value_type) 3157 { 3158 enum type_code code = TYPE_CODE (value_type); 3159 3160 if (code == TYPE_CODE_ERROR) 3161 error (_("Function return type unknown.")); 3162 3163 if (code == TYPE_CODE_VOID) 3164 /* A void return value is never in memory. See also corresponding 3165 code in "print_return_value". */ 3166 return 0; 3167 3168 /* Probe the architecture for the return-value convention. */ 3169 return (gdbarch_return_value (gdbarch, func_type, value_type, 3170 NULL, NULL, NULL) 3171 != RETURN_VALUE_REGISTER_CONVENTION); 3172 } 3173 3174 /* Set the initialized field in a value struct. */ 3175 3176 void 3177 set_value_initialized (struct value *val, int status) 3178 { 3179 val->initialized = status; 3180 } 3181 3182 /* Return the initialized field in a value struct. */ 3183 3184 int 3185 value_initialized (struct value *val) 3186 { 3187 return val->initialized; 3188 } 3189 3190 void 3191 _initialize_values (void) 3192 { 3193 add_cmd ("convenience", no_class, show_convenience, _("\ 3194 Debugger convenience (\"$foo\") variables.\n\ 3195 These variables are created when you assign them values;\n\ 3196 thus, \"print $foo=1\" gives \"$foo\" the value 1. Values may be any type.\n\ 3197 \n\ 3198 A few convenience variables are given values automatically:\n\ 3199 \"$_\"holds the last address examined with \"x\" or \"info lines\",\n\ 3200 \"$__\" holds the contents of the last address examined with \"x\"."), 3201 &showlist); 3202 3203 add_cmd ("values", no_set_class, show_values, _("\ 3204 Elements of value history around item number IDX (or last ten)."), 3205 &showlist); 3206 3207 add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\ 3208 Initialize a convenience variable if necessary.\n\ 3209 init-if-undefined VARIABLE = EXPRESSION\n\ 3210 Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\ 3211 exist or does not contain a value. The EXPRESSION is not evaluated if the\n\ 3212 VARIABLE is already initialized.")); 3213 3214 add_prefix_cmd ("function", no_class, function_command, _("\ 3215 Placeholder command for showing help on convenience functions."), 3216 &functionlist, "function ", 0, &cmdlist); 3217 } 3218