]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/value.c
Change value::parent to a value_ref_ptr
[thirdparty/binutils-gdb.git] / gdb / value.c
CommitLineData
c906108c 1/* Low level packing and unpacking of values for GDB, the GNU Debugger.
1bac305b 2
e2882c85 3 Copyright (C) 1986-2018 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
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
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
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.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
e17c207e 21#include "arch-utils.h"
c906108c
SS
22#include "symtab.h"
23#include "gdbtypes.h"
24#include "value.h"
25#include "gdbcore.h"
c906108c
SS
26#include "command.h"
27#include "gdbcmd.h"
28#include "target.h"
29#include "language.h"
c906108c 30#include "demangle.h"
36160dc4 31#include "regcache.h"
fe898f56 32#include "block.h"
70100014 33#include "target-float.h"
bccdca4a 34#include "objfiles.h"
79a45b7d 35#include "valprint.h"
bc3b79fd 36#include "cli/cli-decode.h"
6dddc817 37#include "extension.h"
3bd0f5ef 38#include <ctype.h>
0914bcdb 39#include "tracepoint.h"
be335936 40#include "cp-abi.h"
a58e2656 41#include "user-regs.h"
325fac50 42#include <algorithm>
eb3ff9a5 43#include "completer.h"
0914bcdb 44
bc3b79fd
TJB
45/* Definition of a user function. */
46struct internal_function
47{
48 /* The name of the function. It is a bit odd to have this in the
49 function itself -- the user might use a differently-named
50 convenience variable to hold the function. */
51 char *name;
52
53 /* The handler. */
54 internal_function_fn handler;
55
56 /* User data for the handler. */
57 void *cookie;
58};
59
4e07d55f
PA
60/* Defines an [OFFSET, OFFSET + LENGTH) range. */
61
62struct range
63{
64 /* Lowest offset in the range. */
6b850546 65 LONGEST offset;
4e07d55f
PA
66
67 /* Length of the range. */
6b850546 68 LONGEST length;
4e07d55f
PA
69};
70
71typedef struct range range_s;
72
73DEF_VEC_O(range_s);
74
75/* Returns true if the ranges defined by [offset1, offset1+len1) and
76 [offset2, offset2+len2) overlap. */
77
78static int
6b850546
DT
79ranges_overlap (LONGEST offset1, LONGEST len1,
80 LONGEST offset2, LONGEST len2)
4e07d55f
PA
81{
82 ULONGEST h, l;
83
325fac50
PA
84 l = std::max (offset1, offset2);
85 h = std::min (offset1 + len1, offset2 + len2);
4e07d55f
PA
86 return (l < h);
87}
88
89/* Returns true if the first argument is strictly less than the
90 second, useful for VEC_lower_bound. We keep ranges sorted by
91 offset and coalesce overlapping and contiguous ranges, so this just
92 compares the starting offset. */
93
94static int
95range_lessthan (const range_s *r1, const range_s *r2)
96{
97 return r1->offset < r2->offset;
98}
99
100/* Returns true if RANGES contains any range that overlaps [OFFSET,
101 OFFSET+LENGTH). */
102
103static int
6b850546 104ranges_contain (VEC(range_s) *ranges, LONGEST offset, LONGEST length)
4e07d55f
PA
105{
106 range_s what;
6b850546 107 LONGEST i;
4e07d55f
PA
108
109 what.offset = offset;
110 what.length = length;
111
112 /* We keep ranges sorted by offset and coalesce overlapping and
113 contiguous ranges, so to check if a range list contains a given
114 range, we can do a binary search for the position the given range
115 would be inserted if we only considered the starting OFFSET of
116 ranges. We call that position I. Since we also have LENGTH to
117 care for (this is a range afterall), we need to check if the
118 _previous_ range overlaps the I range. E.g.,
119
120 R
121 |---|
122 |---| |---| |------| ... |--|
123 0 1 2 N
124
125 I=1
126
127 In the case above, the binary search would return `I=1', meaning,
128 this OFFSET should be inserted at position 1, and the current
129 position 1 should be pushed further (and before 2). But, `0'
130 overlaps with R.
131
132 Then we need to check if the I range overlaps the I range itself.
133 E.g.,
134
135 R
136 |---|
137 |---| |---| |-------| ... |--|
138 0 1 2 N
139
140 I=1
141 */
142
143 i = VEC_lower_bound (range_s, ranges, &what, range_lessthan);
144
145 if (i > 0)
146 {
147 struct range *bef = VEC_index (range_s, ranges, i - 1);
148
149 if (ranges_overlap (bef->offset, bef->length, offset, length))
150 return 1;
151 }
152
153 if (i < VEC_length (range_s, ranges))
154 {
155 struct range *r = VEC_index (range_s, ranges, i);
156
157 if (ranges_overlap (r->offset, r->length, offset, length))
158 return 1;
159 }
160
161 return 0;
162}
163
bc3b79fd
TJB
164static struct cmd_list_element *functionlist;
165
87784a47
TT
166/* Note that the fields in this structure are arranged to save a bit
167 of memory. */
168
91294c83
AC
169struct value
170{
466ce3ae
TT
171 explicit value (struct type *type_)
172 : modifiable (1),
173 lazy (1),
174 initialized (1),
175 stack (0),
176 type (type_),
177 enclosing_type (type_)
178 {
179 location.address = 0;
180 }
181
182 ~value ()
183 {
466ce3ae
TT
184 if (VALUE_LVAL (this) == lval_computed)
185 {
186 const struct lval_funcs *funcs = location.computed.funcs;
187
188 if (funcs->free_closure)
189 funcs->free_closure (this);
190 }
191 else if (VALUE_LVAL (this) == lval_xcallable)
192 delete location.xm_worker;
193
194 xfree (contents);
195 VEC_free (range_s, unavailable);
196 VEC_free (range_s, optimized_out);
197 }
198
199 DISABLE_COPY_AND_ASSIGN (value);
200
91294c83
AC
201 /* Type of value; either not an lval, or one of the various
202 different possible kinds of lval. */
466ce3ae 203 enum lval_type lval = not_lval;
91294c83
AC
204
205 /* Is it modifiable? Only relevant if lval != not_lval. */
87784a47
TT
206 unsigned int modifiable : 1;
207
208 /* If zero, contents of this value are in the contents field. If
209 nonzero, contents are in inferior. If the lval field is lval_memory,
210 the contents are in inferior memory at location.address plus offset.
211 The lval field may also be lval_register.
212
213 WARNING: This field is used by the code which handles watchpoints
214 (see breakpoint.c) to decide whether a particular value can be
215 watched by hardware watchpoints. If the lazy flag is set for
216 some member of a value chain, it is assumed that this member of
217 the chain doesn't need to be watched as part of watching the
218 value itself. This is how GDB avoids watching the entire struct
219 or array when the user wants to watch a single struct member or
220 array element. If you ever change the way lazy flag is set and
221 reset, be sure to consider this use as well! */
222 unsigned int lazy : 1;
223
87784a47
TT
224 /* If value is a variable, is it initialized or not. */
225 unsigned int initialized : 1;
226
227 /* If value is from the stack. If this is set, read_stack will be
228 used instead of read_memory to enable extra caching. */
229 unsigned int stack : 1;
91294c83
AC
230
231 /* Location of value (if lval). */
232 union
233 {
7dc54575 234 /* If lval == lval_memory, this is the address in the inferior */
91294c83
AC
235 CORE_ADDR address;
236
7dc54575
YQ
237 /*If lval == lval_register, the value is from a register. */
238 struct
239 {
240 /* Register number. */
241 int regnum;
242 /* Frame ID of "next" frame to which a register value is relative.
243 If the register value is found relative to frame F, then the
244 frame id of F->next will be stored in next_frame_id. */
245 struct frame_id next_frame_id;
246 } reg;
247
91294c83
AC
248 /* Pointer to internal variable. */
249 struct internalvar *internalvar;
5f5233d4 250
e81e7f5e
SC
251 /* Pointer to xmethod worker. */
252 struct xmethod_worker *xm_worker;
253
5f5233d4
PA
254 /* If lval == lval_computed, this is a set of function pointers
255 to use to access and describe the value, and a closure pointer
256 for them to use. */
257 struct
258 {
c8f2448a
JK
259 /* Functions to call. */
260 const struct lval_funcs *funcs;
261
262 /* Closure for those functions to use. */
263 void *closure;
5f5233d4 264 } computed;
91294c83
AC
265 } location;
266
3723fda8 267 /* Describes offset of a value within lval of a structure in target
7dc54575
YQ
268 addressable memory units. Note also the member embedded_offset
269 below. */
466ce3ae 270 LONGEST offset = 0;
91294c83
AC
271
272 /* Only used for bitfields; number of bits contained in them. */
466ce3ae 273 LONGEST bitsize = 0;
91294c83
AC
274
275 /* Only used for bitfields; position of start of field. For
32c9a795 276 gdbarch_bits_big_endian=0 targets, it is the position of the LSB. For
581e13c1 277 gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */
466ce3ae 278 LONGEST bitpos = 0;
91294c83 279
87784a47
TT
280 /* The number of references to this value. When a value is created,
281 the value chain holds a reference, so REFERENCE_COUNT is 1. If
282 release_value is called, this value is removed from the chain but
283 the caller of release_value now has a reference to this value.
284 The caller must arrange for a call to value_free later. */
466ce3ae 285 int reference_count = 1;
87784a47 286
4ea48cc1
DJ
287 /* Only used for bitfields; the containing value. This allows a
288 single read from the target when displaying multiple
289 bitfields. */
2c8331b9 290 value_ref_ptr parent;
4ea48cc1 291
91294c83
AC
292 /* Type of the value. */
293 struct type *type;
294
295 /* If a value represents a C++ object, then the `type' field gives
296 the object's compile-time type. If the object actually belongs
297 to some class derived from `type', perhaps with other base
298 classes and additional members, then `type' is just a subobject
299 of the real thing, and the full object is probably larger than
300 `type' would suggest.
301
302 If `type' is a dynamic class (i.e. one with a vtable), then GDB
303 can actually determine the object's run-time type by looking at
304 the run-time type information in the vtable. When this
305 information is available, we may elect to read in the entire
306 object, for several reasons:
307
308 - When printing the value, the user would probably rather see the
309 full object, not just the limited portion apparent from the
310 compile-time type.
311
312 - If `type' has virtual base classes, then even printing `type'
313 alone may require reaching outside the `type' portion of the
314 object to wherever the virtual base class has been stored.
315
316 When we store the entire object, `enclosing_type' is the run-time
317 type -- the complete object -- and `embedded_offset' is the
3723fda8
SM
318 offset of `type' within that larger type, in target addressable memory
319 units. The value_contents() macro takes `embedded_offset' into account,
320 so most GDB code continues to see the `type' portion of the value, just
321 as the inferior would.
91294c83
AC
322
323 If `type' is a pointer to an object, then `enclosing_type' is a
324 pointer to the object's run-time type, and `pointed_to_offset' is
3723fda8
SM
325 the offset in target addressable memory units from the full object
326 to the pointed-to object -- that is, the value `embedded_offset' would
327 have if we followed the pointer and fetched the complete object.
328 (I don't really see the point. Why not just determine the
329 run-time type when you indirect, and avoid the special case? The
330 contents don't matter until you indirect anyway.)
91294c83
AC
331
332 If we're not doing anything fancy, `enclosing_type' is equal to
333 `type', and `embedded_offset' is zero, so everything works
334 normally. */
335 struct type *enclosing_type;
466ce3ae
TT
336 LONGEST embedded_offset = 0;
337 LONGEST pointed_to_offset = 0;
91294c83 338
3e3d7139
JG
339 /* Actual contents of the value. Target byte-order. NULL or not
340 valid if lazy is nonzero. */
466ce3ae 341 gdb_byte *contents = nullptr;
828d3400 342
4e07d55f
PA
343 /* Unavailable ranges in CONTENTS. We mark unavailable ranges,
344 rather than available, since the common and default case is for a
9a0dc9e3
PA
345 value to be available. This is filled in at value read time.
346 The unavailable ranges are tracked in bits. Note that a contents
347 bit that has been optimized out doesn't really exist in the
348 program, so it can't be marked unavailable either. */
466ce3ae 349 VEC(range_s) *unavailable = nullptr;
9a0dc9e3
PA
350
351 /* Likewise, but for optimized out contents (a chunk of the value of
352 a variable that does not actually exist in the program). If LVAL
353 is lval_register, this is a register ($pc, $sp, etc., never a
354 program variable) that has not been saved in the frame. Not
355 saved registers and optimized-out program variables values are
356 treated pretty much the same, except not-saved registers have a
357 different string representation and related error strings. */
466ce3ae 358 VEC(range_s) *optimized_out = nullptr;
91294c83
AC
359};
360
e512cdbd
SM
361/* See value.h. */
362
363struct gdbarch *
364get_value_arch (const struct value *value)
365{
366 return get_type_arch (value_type (value));
367}
368
4e07d55f 369int
6b850546 370value_bits_available (const struct value *value, LONGEST offset, LONGEST length)
4e07d55f
PA
371{
372 gdb_assert (!value->lazy);
373
374 return !ranges_contain (value->unavailable, offset, length);
375}
376
bdf22206 377int
6b850546
DT
378value_bytes_available (const struct value *value,
379 LONGEST offset, LONGEST length)
bdf22206
AB
380{
381 return value_bits_available (value,
382 offset * TARGET_CHAR_BIT,
383 length * TARGET_CHAR_BIT);
384}
385
9a0dc9e3
PA
386int
387value_bits_any_optimized_out (const struct value *value, int bit_offset, int bit_length)
388{
389 gdb_assert (!value->lazy);
390
391 return ranges_contain (value->optimized_out, bit_offset, bit_length);
392}
393
ec0a52e1
PA
394int
395value_entirely_available (struct value *value)
396{
397 /* We can only tell whether the whole value is available when we try
398 to read it. */
399 if (value->lazy)
400 value_fetch_lazy (value);
401
402 if (VEC_empty (range_s, value->unavailable))
403 return 1;
404 return 0;
405}
406
9a0dc9e3
PA
407/* Returns true if VALUE is entirely covered by RANGES. If the value
408 is lazy, it'll be read now. Note that RANGE is a pointer to
409 pointer because reading the value might change *RANGE. */
410
411static int
412value_entirely_covered_by_range_vector (struct value *value,
413 VEC(range_s) **ranges)
6211c335 414{
9a0dc9e3
PA
415 /* We can only tell whether the whole value is optimized out /
416 unavailable when we try to read it. */
6211c335
YQ
417 if (value->lazy)
418 value_fetch_lazy (value);
419
9a0dc9e3 420 if (VEC_length (range_s, *ranges) == 1)
6211c335 421 {
9a0dc9e3 422 struct range *t = VEC_index (range_s, *ranges, 0);
6211c335
YQ
423
424 if (t->offset == 0
64c46ce4
JB
425 && t->length == (TARGET_CHAR_BIT
426 * TYPE_LENGTH (value_enclosing_type (value))))
6211c335
YQ
427 return 1;
428 }
429
430 return 0;
431}
432
9a0dc9e3
PA
433int
434value_entirely_unavailable (struct value *value)
435{
436 return value_entirely_covered_by_range_vector (value, &value->unavailable);
437}
438
439int
440value_entirely_optimized_out (struct value *value)
441{
442 return value_entirely_covered_by_range_vector (value, &value->optimized_out);
443}
444
445/* Insert into the vector pointed to by VECTORP the bit range starting of
446 OFFSET bits, and extending for the next LENGTH bits. */
447
448static void
6b850546
DT
449insert_into_bit_range_vector (VEC(range_s) **vectorp,
450 LONGEST offset, LONGEST length)
4e07d55f
PA
451{
452 range_s newr;
453 int i;
454
455 /* Insert the range sorted. If there's overlap or the new range
456 would be contiguous with an existing range, merge. */
457
458 newr.offset = offset;
459 newr.length = length;
460
461 /* Do a binary search for the position the given range would be
462 inserted if we only considered the starting OFFSET of ranges.
463 Call that position I. Since we also have LENGTH to care for
464 (this is a range afterall), we need to check if the _previous_
465 range overlaps the I range. E.g., calling R the new range:
466
467 #1 - overlaps with previous
468
469 R
470 |-...-|
471 |---| |---| |------| ... |--|
472 0 1 2 N
473
474 I=1
475
476 In the case #1 above, the binary search would return `I=1',
477 meaning, this OFFSET should be inserted at position 1, and the
478 current position 1 should be pushed further (and become 2). But,
479 note that `0' overlaps with R, so we want to merge them.
480
481 A similar consideration needs to be taken if the new range would
482 be contiguous with the previous range:
483
484 #2 - contiguous with previous
485
486 R
487 |-...-|
488 |--| |---| |------| ... |--|
489 0 1 2 N
490
491 I=1
492
493 If there's no overlap with the previous range, as in:
494
495 #3 - not overlapping and not contiguous
496
497 R
498 |-...-|
499 |--| |---| |------| ... |--|
500 0 1 2 N
501
502 I=1
503
504 or if I is 0:
505
506 #4 - R is the range with lowest offset
507
508 R
509 |-...-|
510 |--| |---| |------| ... |--|
511 0 1 2 N
512
513 I=0
514
515 ... we just push the new range to I.
516
517 All the 4 cases above need to consider that the new range may
518 also overlap several of the ranges that follow, or that R may be
519 contiguous with the following range, and merge. E.g.,
520
521 #5 - overlapping following ranges
522
523 R
524 |------------------------|
525 |--| |---| |------| ... |--|
526 0 1 2 N
527
528 I=0
529
530 or:
531
532 R
533 |-------|
534 |--| |---| |------| ... |--|
535 0 1 2 N
536
537 I=1
538
539 */
540
9a0dc9e3 541 i = VEC_lower_bound (range_s, *vectorp, &newr, range_lessthan);
4e07d55f
PA
542 if (i > 0)
543 {
9a0dc9e3 544 struct range *bef = VEC_index (range_s, *vectorp, i - 1);
4e07d55f
PA
545
546 if (ranges_overlap (bef->offset, bef->length, offset, length))
547 {
548 /* #1 */
325fac50
PA
549 ULONGEST l = std::min (bef->offset, offset);
550 ULONGEST h = std::max (bef->offset + bef->length, offset + length);
4e07d55f
PA
551
552 bef->offset = l;
553 bef->length = h - l;
554 i--;
555 }
556 else if (offset == bef->offset + bef->length)
557 {
558 /* #2 */
559 bef->length += length;
560 i--;
561 }
562 else
563 {
564 /* #3 */
9a0dc9e3 565 VEC_safe_insert (range_s, *vectorp, i, &newr);
4e07d55f
PA
566 }
567 }
568 else
569 {
570 /* #4 */
9a0dc9e3 571 VEC_safe_insert (range_s, *vectorp, i, &newr);
4e07d55f
PA
572 }
573
574 /* Check whether the ranges following the one we've just added or
575 touched can be folded in (#5 above). */
9a0dc9e3 576 if (i + 1 < VEC_length (range_s, *vectorp))
4e07d55f
PA
577 {
578 struct range *t;
579 struct range *r;
580 int removed = 0;
581 int next = i + 1;
582
583 /* Get the range we just touched. */
9a0dc9e3 584 t = VEC_index (range_s, *vectorp, i);
4e07d55f
PA
585 removed = 0;
586
587 i = next;
9a0dc9e3 588 for (; VEC_iterate (range_s, *vectorp, i, r); i++)
4e07d55f
PA
589 if (r->offset <= t->offset + t->length)
590 {
591 ULONGEST l, h;
592
325fac50
PA
593 l = std::min (t->offset, r->offset);
594 h = std::max (t->offset + t->length, r->offset + r->length);
4e07d55f
PA
595
596 t->offset = l;
597 t->length = h - l;
598
599 removed++;
600 }
601 else
602 {
603 /* If we couldn't merge this one, we won't be able to
604 merge following ones either, since the ranges are
605 always sorted by OFFSET. */
606 break;
607 }
608
609 if (removed != 0)
9a0dc9e3 610 VEC_block_remove (range_s, *vectorp, next, removed);
4e07d55f
PA
611 }
612}
613
9a0dc9e3 614void
6b850546
DT
615mark_value_bits_unavailable (struct value *value,
616 LONGEST offset, LONGEST length)
9a0dc9e3
PA
617{
618 insert_into_bit_range_vector (&value->unavailable, offset, length);
619}
620
bdf22206 621void
6b850546
DT
622mark_value_bytes_unavailable (struct value *value,
623 LONGEST offset, LONGEST length)
bdf22206
AB
624{
625 mark_value_bits_unavailable (value,
626 offset * TARGET_CHAR_BIT,
627 length * TARGET_CHAR_BIT);
628}
629
c8c1c22f
PA
630/* Find the first range in RANGES that overlaps the range defined by
631 OFFSET and LENGTH, starting at element POS in the RANGES vector,
632 Returns the index into RANGES where such overlapping range was
633 found, or -1 if none was found. */
634
635static int
636find_first_range_overlap (VEC(range_s) *ranges, int pos,
6b850546 637 LONGEST offset, LONGEST length)
c8c1c22f
PA
638{
639 range_s *r;
640 int i;
641
642 for (i = pos; VEC_iterate (range_s, ranges, i, r); i++)
643 if (ranges_overlap (r->offset, r->length, offset, length))
644 return i;
645
646 return -1;
647}
648
bdf22206
AB
649/* Compare LENGTH_BITS of memory at PTR1 + OFFSET1_BITS with the memory at
650 PTR2 + OFFSET2_BITS. Return 0 if the memory is the same, otherwise
651 return non-zero.
652
653 It must always be the case that:
654 OFFSET1_BITS % TARGET_CHAR_BIT == OFFSET2_BITS % TARGET_CHAR_BIT
655
656 It is assumed that memory can be accessed from:
657 PTR + (OFFSET_BITS / TARGET_CHAR_BIT)
658 to:
659 PTR + ((OFFSET_BITS + LENGTH_BITS + TARGET_CHAR_BIT - 1)
660 / TARGET_CHAR_BIT) */
661static int
662memcmp_with_bit_offsets (const gdb_byte *ptr1, size_t offset1_bits,
663 const gdb_byte *ptr2, size_t offset2_bits,
664 size_t length_bits)
665{
666 gdb_assert (offset1_bits % TARGET_CHAR_BIT
667 == offset2_bits % TARGET_CHAR_BIT);
668
669 if (offset1_bits % TARGET_CHAR_BIT != 0)
670 {
671 size_t bits;
672 gdb_byte mask, b1, b2;
673
674 /* The offset from the base pointers PTR1 and PTR2 is not a complete
675 number of bytes. A number of bits up to either the next exact
676 byte boundary, or LENGTH_BITS (which ever is sooner) will be
677 compared. */
678 bits = TARGET_CHAR_BIT - offset1_bits % TARGET_CHAR_BIT;
679 gdb_assert (bits < sizeof (mask) * TARGET_CHAR_BIT);
680 mask = (1 << bits) - 1;
681
682 if (length_bits < bits)
683 {
684 mask &= ~(gdb_byte) ((1 << (bits - length_bits)) - 1);
685 bits = length_bits;
686 }
687
688 /* Now load the two bytes and mask off the bits we care about. */
689 b1 = *(ptr1 + offset1_bits / TARGET_CHAR_BIT) & mask;
690 b2 = *(ptr2 + offset2_bits / TARGET_CHAR_BIT) & mask;
691
692 if (b1 != b2)
693 return 1;
694
695 /* Now update the length and offsets to take account of the bits
696 we've just compared. */
697 length_bits -= bits;
698 offset1_bits += bits;
699 offset2_bits += bits;
700 }
701
702 if (length_bits % TARGET_CHAR_BIT != 0)
703 {
704 size_t bits;
705 size_t o1, o2;
706 gdb_byte mask, b1, b2;
707
708 /* The length is not an exact number of bytes. After the previous
709 IF.. block then the offsets are byte aligned, or the
710 length is zero (in which case this code is not reached). Compare
711 a number of bits at the end of the region, starting from an exact
712 byte boundary. */
713 bits = length_bits % TARGET_CHAR_BIT;
714 o1 = offset1_bits + length_bits - bits;
715 o2 = offset2_bits + length_bits - bits;
716
717 gdb_assert (bits < sizeof (mask) * TARGET_CHAR_BIT);
718 mask = ((1 << bits) - 1) << (TARGET_CHAR_BIT - bits);
719
720 gdb_assert (o1 % TARGET_CHAR_BIT == 0);
721 gdb_assert (o2 % TARGET_CHAR_BIT == 0);
722
723 b1 = *(ptr1 + o1 / TARGET_CHAR_BIT) & mask;
724 b2 = *(ptr2 + o2 / TARGET_CHAR_BIT) & mask;
725
726 if (b1 != b2)
727 return 1;
728
729 length_bits -= bits;
730 }
731
732 if (length_bits > 0)
733 {
734 /* We've now taken care of any stray "bits" at the start, or end of
735 the region to compare, the remainder can be covered with a simple
736 memcmp. */
737 gdb_assert (offset1_bits % TARGET_CHAR_BIT == 0);
738 gdb_assert (offset2_bits % TARGET_CHAR_BIT == 0);
739 gdb_assert (length_bits % TARGET_CHAR_BIT == 0);
740
741 return memcmp (ptr1 + offset1_bits / TARGET_CHAR_BIT,
742 ptr2 + offset2_bits / TARGET_CHAR_BIT,
743 length_bits / TARGET_CHAR_BIT);
744 }
745
746 /* Length is zero, regions match. */
747 return 0;
748}
749
9a0dc9e3
PA
750/* Helper struct for find_first_range_overlap_and_match and
751 value_contents_bits_eq. Keep track of which slot of a given ranges
752 vector have we last looked at. */
bdf22206 753
9a0dc9e3
PA
754struct ranges_and_idx
755{
756 /* The ranges. */
757 VEC(range_s) *ranges;
758
759 /* The range we've last found in RANGES. Given ranges are sorted,
760 we can start the next lookup here. */
761 int idx;
762};
763
764/* Helper function for value_contents_bits_eq. Compare LENGTH bits of
765 RP1's ranges starting at OFFSET1 bits with LENGTH bits of RP2's
766 ranges starting at OFFSET2 bits. Return true if the ranges match
767 and fill in *L and *H with the overlapping window relative to
768 (both) OFFSET1 or OFFSET2. */
bdf22206
AB
769
770static int
9a0dc9e3
PA
771find_first_range_overlap_and_match (struct ranges_and_idx *rp1,
772 struct ranges_and_idx *rp2,
6b850546
DT
773 LONGEST offset1, LONGEST offset2,
774 LONGEST length, ULONGEST *l, ULONGEST *h)
c8c1c22f 775{
9a0dc9e3
PA
776 rp1->idx = find_first_range_overlap (rp1->ranges, rp1->idx,
777 offset1, length);
778 rp2->idx = find_first_range_overlap (rp2->ranges, rp2->idx,
779 offset2, length);
c8c1c22f 780
9a0dc9e3
PA
781 if (rp1->idx == -1 && rp2->idx == -1)
782 {
783 *l = length;
784 *h = length;
785 return 1;
786 }
787 else if (rp1->idx == -1 || rp2->idx == -1)
788 return 0;
789 else
c8c1c22f
PA
790 {
791 range_s *r1, *r2;
792 ULONGEST l1, h1;
793 ULONGEST l2, h2;
794
9a0dc9e3
PA
795 r1 = VEC_index (range_s, rp1->ranges, rp1->idx);
796 r2 = VEC_index (range_s, rp2->ranges, rp2->idx);
c8c1c22f
PA
797
798 /* Get the unavailable windows intersected by the incoming
799 ranges. The first and last ranges that overlap the argument
800 range may be wider than said incoming arguments ranges. */
325fac50
PA
801 l1 = std::max (offset1, r1->offset);
802 h1 = std::min (offset1 + length, r1->offset + r1->length);
c8c1c22f 803
325fac50
PA
804 l2 = std::max (offset2, r2->offset);
805 h2 = std::min (offset2 + length, offset2 + r2->length);
c8c1c22f
PA
806
807 /* Make them relative to the respective start offsets, so we can
808 compare them for equality. */
809 l1 -= offset1;
810 h1 -= offset1;
811
812 l2 -= offset2;
813 h2 -= offset2;
814
9a0dc9e3 815 /* Different ranges, no match. */
c8c1c22f
PA
816 if (l1 != l2 || h1 != h2)
817 return 0;
818
9a0dc9e3
PA
819 *h = h1;
820 *l = l1;
821 return 1;
822 }
823}
824
825/* Helper function for value_contents_eq. The only difference is that
826 this function is bit rather than byte based.
827
828 Compare LENGTH bits of VAL1's contents starting at OFFSET1 bits
829 with LENGTH bits of VAL2's contents starting at OFFSET2 bits.
830 Return true if the available bits match. */
831
98ead37e 832static bool
9a0dc9e3
PA
833value_contents_bits_eq (const struct value *val1, int offset1,
834 const struct value *val2, int offset2,
835 int length)
836{
837 /* Each array element corresponds to a ranges source (unavailable,
838 optimized out). '1' is for VAL1, '2' for VAL2. */
839 struct ranges_and_idx rp1[2], rp2[2];
840
841 /* See function description in value.h. */
842 gdb_assert (!val1->lazy && !val2->lazy);
843
844 /* We shouldn't be trying to compare past the end of the values. */
845 gdb_assert (offset1 + length
846 <= TYPE_LENGTH (val1->enclosing_type) * TARGET_CHAR_BIT);
847 gdb_assert (offset2 + length
848 <= TYPE_LENGTH (val2->enclosing_type) * TARGET_CHAR_BIT);
849
850 memset (&rp1, 0, sizeof (rp1));
851 memset (&rp2, 0, sizeof (rp2));
852 rp1[0].ranges = val1->unavailable;
853 rp2[0].ranges = val2->unavailable;
854 rp1[1].ranges = val1->optimized_out;
855 rp2[1].ranges = val2->optimized_out;
856
857 while (length > 0)
858 {
000339af 859 ULONGEST l = 0, h = 0; /* init for gcc -Wall */
9a0dc9e3
PA
860 int i;
861
862 for (i = 0; i < 2; i++)
863 {
864 ULONGEST l_tmp, h_tmp;
865
866 /* The contents only match equal if the invalid/unavailable
867 contents ranges match as well. */
868 if (!find_first_range_overlap_and_match (&rp1[i], &rp2[i],
869 offset1, offset2, length,
870 &l_tmp, &h_tmp))
98ead37e 871 return false;
9a0dc9e3
PA
872
873 /* We're interested in the lowest/first range found. */
874 if (i == 0 || l_tmp < l)
875 {
876 l = l_tmp;
877 h = h_tmp;
878 }
879 }
880
881 /* Compare the available/valid contents. */
bdf22206 882 if (memcmp_with_bit_offsets (val1->contents, offset1,
9a0dc9e3 883 val2->contents, offset2, l) != 0)
98ead37e 884 return false;
c8c1c22f 885
9a0dc9e3
PA
886 length -= h;
887 offset1 += h;
888 offset2 += h;
c8c1c22f
PA
889 }
890
98ead37e 891 return true;
c8c1c22f
PA
892}
893
98ead37e 894bool
6b850546
DT
895value_contents_eq (const struct value *val1, LONGEST offset1,
896 const struct value *val2, LONGEST offset2,
897 LONGEST length)
bdf22206 898{
9a0dc9e3
PA
899 return value_contents_bits_eq (val1, offset1 * TARGET_CHAR_BIT,
900 val2, offset2 * TARGET_CHAR_BIT,
901 length * TARGET_CHAR_BIT);
bdf22206
AB
902}
903
c906108c 904
4d0266a0
TT
905/* The value-history records all the values printed by print commands
906 during this session. */
c906108c 907
4d0266a0 908static std::vector<value_ref_ptr> value_history;
bc3b79fd 909
c906108c
SS
910\f
911/* List of all value objects currently allocated
912 (except for those released by calls to release_value)
913 This is so they can be freed after each command. */
914
062d818d 915static std::vector<value_ref_ptr> all_values;
c906108c 916
3e3d7139
JG
917/* Allocate a lazy value for type TYPE. Its actual content is
918 "lazily" allocated too: the content field of the return value is
919 NULL; it will be allocated when it is fetched from the target. */
c906108c 920
f23631e4 921struct value *
3e3d7139 922allocate_value_lazy (struct type *type)
c906108c 923{
f23631e4 924 struct value *val;
c54eabfa
JK
925
926 /* Call check_typedef on our type to make sure that, if TYPE
927 is a TYPE_CODE_TYPEDEF, its length is set to the length
928 of the target type instead of zero. However, we do not
929 replace the typedef type by the target type, because we want
930 to keep the typedef in order to be able to set the VAL's type
931 description correctly. */
932 check_typedef (type);
c906108c 933
466ce3ae 934 val = new struct value (type);
828d3400
DJ
935
936 /* Values start out on the all_values chain. */
062d818d 937 all_values.emplace_back (val);
828d3400 938
c906108c
SS
939 return val;
940}
941
5fdf6324
AB
942/* The maximum size, in bytes, that GDB will try to allocate for a value.
943 The initial value of 64k was not selected for any specific reason, it is
944 just a reasonable starting point. */
945
946static int max_value_size = 65536; /* 64k bytes */
947
948/* It is critical that the MAX_VALUE_SIZE is at least as big as the size of
949 LONGEST, otherwise GDB will not be able to parse integer values from the
950 CLI; for example if the MAX_VALUE_SIZE could be set to 1 then GDB would
951 be unable to parse "set max-value-size 2".
952
953 As we want a consistent GDB experience across hosts with different sizes
954 of LONGEST, this arbitrary minimum value was selected, so long as this
955 is bigger than LONGEST on all GDB supported hosts we're fine. */
956
957#define MIN_VALUE_FOR_MAX_VALUE_SIZE 16
958gdb_static_assert (sizeof (LONGEST) <= MIN_VALUE_FOR_MAX_VALUE_SIZE);
959
960/* Implement the "set max-value-size" command. */
961
962static void
eb4c3f4a 963set_max_value_size (const char *args, int from_tty,
5fdf6324
AB
964 struct cmd_list_element *c)
965{
966 gdb_assert (max_value_size == -1 || max_value_size >= 0);
967
968 if (max_value_size > -1 && max_value_size < MIN_VALUE_FOR_MAX_VALUE_SIZE)
969 {
970 max_value_size = MIN_VALUE_FOR_MAX_VALUE_SIZE;
971 error (_("max-value-size set too low, increasing to %d bytes"),
972 max_value_size);
973 }
974}
975
976/* Implement the "show max-value-size" command. */
977
978static void
979show_max_value_size (struct ui_file *file, int from_tty,
980 struct cmd_list_element *c, const char *value)
981{
982 if (max_value_size == -1)
983 fprintf_filtered (file, _("Maximum value size is unlimited.\n"));
984 else
985 fprintf_filtered (file, _("Maximum value size is %d bytes.\n"),
986 max_value_size);
987}
988
989/* Called before we attempt to allocate or reallocate a buffer for the
990 contents of a value. TYPE is the type of the value for which we are
991 allocating the buffer. If the buffer is too large (based on the user
992 controllable setting) then throw an error. If this function returns
993 then we should attempt to allocate the buffer. */
994
995static void
996check_type_length_before_alloc (const struct type *type)
997{
998 unsigned int length = TYPE_LENGTH (type);
999
1000 if (max_value_size > -1 && length > max_value_size)
1001 {
1002 if (TYPE_NAME (type) != NULL)
1003 error (_("value of type `%s' requires %u bytes, which is more "
1004 "than max-value-size"), TYPE_NAME (type), length);
1005 else
1006 error (_("value requires %u bytes, which is more than "
1007 "max-value-size"), length);
1008 }
1009}
1010
3e3d7139
JG
1011/* Allocate the contents of VAL if it has not been allocated yet. */
1012
548b762d 1013static void
3e3d7139
JG
1014allocate_value_contents (struct value *val)
1015{
1016 if (!val->contents)
5fdf6324
AB
1017 {
1018 check_type_length_before_alloc (val->enclosing_type);
1019 val->contents
1020 = (gdb_byte *) xzalloc (TYPE_LENGTH (val->enclosing_type));
1021 }
3e3d7139
JG
1022}
1023
1024/* Allocate a value and its contents for type TYPE. */
1025
1026struct value *
1027allocate_value (struct type *type)
1028{
1029 struct value *val = allocate_value_lazy (type);
a109c7c1 1030
3e3d7139
JG
1031 allocate_value_contents (val);
1032 val->lazy = 0;
1033 return val;
1034}
1035
c906108c 1036/* Allocate a value that has the correct length
938f5214 1037 for COUNT repetitions of type TYPE. */
c906108c 1038
f23631e4 1039struct value *
fba45db2 1040allocate_repeat_value (struct type *type, int count)
c906108c 1041{
c5aa993b 1042 int low_bound = current_language->string_lower_bound; /* ??? */
c906108c
SS
1043 /* FIXME-type-allocation: need a way to free this type when we are
1044 done with it. */
e3506a9f
UW
1045 struct type *array_type
1046 = lookup_array_range_type (type, low_bound, count + low_bound - 1);
a109c7c1 1047
e3506a9f 1048 return allocate_value (array_type);
c906108c
SS
1049}
1050
5f5233d4
PA
1051struct value *
1052allocate_computed_value (struct type *type,
c8f2448a 1053 const struct lval_funcs *funcs,
5f5233d4
PA
1054 void *closure)
1055{
41e8491f 1056 struct value *v = allocate_value_lazy (type);
a109c7c1 1057
5f5233d4
PA
1058 VALUE_LVAL (v) = lval_computed;
1059 v->location.computed.funcs = funcs;
1060 v->location.computed.closure = closure;
5f5233d4
PA
1061
1062 return v;
1063}
1064
a7035dbb
JK
1065/* Allocate NOT_LVAL value for type TYPE being OPTIMIZED_OUT. */
1066
1067struct value *
1068allocate_optimized_out_value (struct type *type)
1069{
1070 struct value *retval = allocate_value_lazy (type);
1071
9a0dc9e3
PA
1072 mark_value_bytes_optimized_out (retval, 0, TYPE_LENGTH (type));
1073 set_value_lazy (retval, 0);
a7035dbb
JK
1074 return retval;
1075}
1076
df407dfe
AC
1077/* Accessor methods. */
1078
1079struct type *
0e03807e 1080value_type (const struct value *value)
df407dfe
AC
1081{
1082 return value->type;
1083}
04624583
AC
1084void
1085deprecated_set_value_type (struct value *value, struct type *type)
1086{
1087 value->type = type;
1088}
df407dfe 1089
6b850546 1090LONGEST
0e03807e 1091value_offset (const struct value *value)
df407dfe
AC
1092{
1093 return value->offset;
1094}
f5cf64a7 1095void
6b850546 1096set_value_offset (struct value *value, LONGEST offset)
f5cf64a7
AC
1097{
1098 value->offset = offset;
1099}
df407dfe 1100
6b850546 1101LONGEST
0e03807e 1102value_bitpos (const struct value *value)
df407dfe
AC
1103{
1104 return value->bitpos;
1105}
9bbda503 1106void
6b850546 1107set_value_bitpos (struct value *value, LONGEST bit)
9bbda503
AC
1108{
1109 value->bitpos = bit;
1110}
df407dfe 1111
6b850546 1112LONGEST
0e03807e 1113value_bitsize (const struct value *value)
df407dfe
AC
1114{
1115 return value->bitsize;
1116}
9bbda503 1117void
6b850546 1118set_value_bitsize (struct value *value, LONGEST bit)
9bbda503
AC
1119{
1120 value->bitsize = bit;
1121}
df407dfe 1122
4ea48cc1 1123struct value *
4bf7b526 1124value_parent (const struct value *value)
4ea48cc1 1125{
2c8331b9 1126 return value->parent.get ();
4ea48cc1
DJ
1127}
1128
53ba8333
JB
1129/* See value.h. */
1130
1131void
1132set_value_parent (struct value *value, struct value *parent)
1133{
2c8331b9 1134 value->parent = value_ref_ptr (value_incref (parent));
53ba8333
JB
1135}
1136
fc1a4b47 1137gdb_byte *
990a07ab
AC
1138value_contents_raw (struct value *value)
1139{
3ae385af
SM
1140 struct gdbarch *arch = get_value_arch (value);
1141 int unit_size = gdbarch_addressable_memory_unit_size (arch);
1142
3e3d7139 1143 allocate_value_contents (value);
3ae385af 1144 return value->contents + value->embedded_offset * unit_size;
990a07ab
AC
1145}
1146
fc1a4b47 1147gdb_byte *
990a07ab
AC
1148value_contents_all_raw (struct value *value)
1149{
3e3d7139
JG
1150 allocate_value_contents (value);
1151 return value->contents;
990a07ab
AC
1152}
1153
4754a64e 1154struct type *
4bf7b526 1155value_enclosing_type (const struct value *value)
4754a64e
AC
1156{
1157 return value->enclosing_type;
1158}
1159
8264ba82
AG
1160/* Look at value.h for description. */
1161
1162struct type *
1163value_actual_type (struct value *value, int resolve_simple_types,
1164 int *real_type_found)
1165{
1166 struct value_print_options opts;
8264ba82
AG
1167 struct type *result;
1168
1169 get_user_print_options (&opts);
1170
1171 if (real_type_found)
1172 *real_type_found = 0;
1173 result = value_type (value);
1174 if (opts.objectprint)
1175 {
5e34c6c3
LM
1176 /* If result's target type is TYPE_CODE_STRUCT, proceed to
1177 fetch its rtti type. */
aa006118 1178 if ((TYPE_CODE (result) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (result))
5e34c6c3 1179 && TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (result)))
ecf2e90c
DB
1180 == TYPE_CODE_STRUCT
1181 && !value_optimized_out (value))
8264ba82
AG
1182 {
1183 struct type *real_type;
1184
1185 real_type = value_rtti_indirect_type (value, NULL, NULL, NULL);
1186 if (real_type)
1187 {
1188 if (real_type_found)
1189 *real_type_found = 1;
1190 result = real_type;
1191 }
1192 }
1193 else if (resolve_simple_types)
1194 {
1195 if (real_type_found)
1196 *real_type_found = 1;
1197 result = value_enclosing_type (value);
1198 }
1199 }
1200
1201 return result;
1202}
1203
901461f8
PA
1204void
1205error_value_optimized_out (void)
1206{
1207 error (_("value has been optimized out"));
1208}
1209
0e03807e 1210static void
4e07d55f 1211require_not_optimized_out (const struct value *value)
0e03807e 1212{
9a0dc9e3 1213 if (!VEC_empty (range_s, value->optimized_out))
901461f8
PA
1214 {
1215 if (value->lval == lval_register)
1216 error (_("register has not been saved in frame"));
1217 else
1218 error_value_optimized_out ();
1219 }
0e03807e
TT
1220}
1221
4e07d55f
PA
1222static void
1223require_available (const struct value *value)
1224{
1225 if (!VEC_empty (range_s, value->unavailable))
8af8e3bc 1226 throw_error (NOT_AVAILABLE_ERROR, _("value is not available"));
4e07d55f
PA
1227}
1228
fc1a4b47 1229const gdb_byte *
0e03807e 1230value_contents_for_printing (struct value *value)
46615f07
AC
1231{
1232 if (value->lazy)
1233 value_fetch_lazy (value);
3e3d7139 1234 return value->contents;
46615f07
AC
1235}
1236
de4127a3
PA
1237const gdb_byte *
1238value_contents_for_printing_const (const struct value *value)
1239{
1240 gdb_assert (!value->lazy);
1241 return value->contents;
1242}
1243
0e03807e
TT
1244const gdb_byte *
1245value_contents_all (struct value *value)
1246{
1247 const gdb_byte *result = value_contents_for_printing (value);
1248 require_not_optimized_out (value);
4e07d55f 1249 require_available (value);
0e03807e
TT
1250 return result;
1251}
1252
9a0dc9e3
PA
1253/* Copy ranges in SRC_RANGE that overlap [SRC_BIT_OFFSET,
1254 SRC_BIT_OFFSET+BIT_LENGTH) ranges into *DST_RANGE, adjusted. */
1255
1256static void
1257ranges_copy_adjusted (VEC (range_s) **dst_range, int dst_bit_offset,
1258 VEC (range_s) *src_range, int src_bit_offset,
1259 int bit_length)
1260{
1261 range_s *r;
1262 int i;
1263
1264 for (i = 0; VEC_iterate (range_s, src_range, i, r); i++)
1265 {
1266 ULONGEST h, l;
1267
325fac50
PA
1268 l = std::max (r->offset, (LONGEST) src_bit_offset);
1269 h = std::min (r->offset + r->length,
1270 (LONGEST) src_bit_offset + bit_length);
9a0dc9e3
PA
1271
1272 if (l < h)
1273 insert_into_bit_range_vector (dst_range,
1274 dst_bit_offset + (l - src_bit_offset),
1275 h - l);
1276 }
1277}
1278
4875ffdb
PA
1279/* Copy the ranges metadata in SRC that overlaps [SRC_BIT_OFFSET,
1280 SRC_BIT_OFFSET+BIT_LENGTH) into DST, adjusted. */
1281
1282static void
1283value_ranges_copy_adjusted (struct value *dst, int dst_bit_offset,
1284 const struct value *src, int src_bit_offset,
1285 int bit_length)
1286{
1287 ranges_copy_adjusted (&dst->unavailable, dst_bit_offset,
1288 src->unavailable, src_bit_offset,
1289 bit_length);
1290 ranges_copy_adjusted (&dst->optimized_out, dst_bit_offset,
1291 src->optimized_out, src_bit_offset,
1292 bit_length);
1293}
1294
3ae385af 1295/* Copy LENGTH target addressable memory units of SRC value's (all) contents
29976f3f
PA
1296 (value_contents_all) starting at SRC_OFFSET, into DST value's (all)
1297 contents, starting at DST_OFFSET. If unavailable contents are
1298 being copied from SRC, the corresponding DST contents are marked
1299 unavailable accordingly. Neither DST nor SRC may be lazy
1300 values.
1301
1302 It is assumed the contents of DST in the [DST_OFFSET,
1303 DST_OFFSET+LENGTH) range are wholly available. */
39d37385
PA
1304
1305void
6b850546
DT
1306value_contents_copy_raw (struct value *dst, LONGEST dst_offset,
1307 struct value *src, LONGEST src_offset, LONGEST length)
39d37385 1308{
6b850546 1309 LONGEST src_bit_offset, dst_bit_offset, bit_length;
3ae385af
SM
1310 struct gdbarch *arch = get_value_arch (src);
1311 int unit_size = gdbarch_addressable_memory_unit_size (arch);
39d37385
PA
1312
1313 /* A lazy DST would make that this copy operation useless, since as
1314 soon as DST's contents were un-lazied (by a later value_contents
1315 call, say), the contents would be overwritten. A lazy SRC would
1316 mean we'd be copying garbage. */
1317 gdb_assert (!dst->lazy && !src->lazy);
1318
29976f3f
PA
1319 /* The overwritten DST range gets unavailability ORed in, not
1320 replaced. Make sure to remember to implement replacing if it
1321 turns out actually necessary. */
1322 gdb_assert (value_bytes_available (dst, dst_offset, length));
9a0dc9e3
PA
1323 gdb_assert (!value_bits_any_optimized_out (dst,
1324 TARGET_CHAR_BIT * dst_offset,
1325 TARGET_CHAR_BIT * length));
29976f3f 1326
39d37385 1327 /* Copy the data. */
3ae385af
SM
1328 memcpy (value_contents_all_raw (dst) + dst_offset * unit_size,
1329 value_contents_all_raw (src) + src_offset * unit_size,
1330 length * unit_size);
39d37385
PA
1331
1332 /* Copy the meta-data, adjusted. */
3ae385af
SM
1333 src_bit_offset = src_offset * unit_size * HOST_CHAR_BIT;
1334 dst_bit_offset = dst_offset * unit_size * HOST_CHAR_BIT;
1335 bit_length = length * unit_size * HOST_CHAR_BIT;
39d37385 1336
4875ffdb
PA
1337 value_ranges_copy_adjusted (dst, dst_bit_offset,
1338 src, src_bit_offset,
1339 bit_length);
39d37385
PA
1340}
1341
29976f3f
PA
1342/* Copy LENGTH bytes of SRC value's (all) contents
1343 (value_contents_all) starting at SRC_OFFSET byte, into DST value's
1344 (all) contents, starting at DST_OFFSET. If unavailable contents
1345 are being copied from SRC, the corresponding DST contents are
1346 marked unavailable accordingly. DST must not be lazy. If SRC is
9a0dc9e3 1347 lazy, it will be fetched now.
29976f3f
PA
1348
1349 It is assumed the contents of DST in the [DST_OFFSET,
1350 DST_OFFSET+LENGTH) range are wholly available. */
39d37385
PA
1351
1352void
6b850546
DT
1353value_contents_copy (struct value *dst, LONGEST dst_offset,
1354 struct value *src, LONGEST src_offset, LONGEST length)
39d37385 1355{
39d37385
PA
1356 if (src->lazy)
1357 value_fetch_lazy (src);
1358
1359 value_contents_copy_raw (dst, dst_offset, src, src_offset, length);
1360}
1361
d69fe07e 1362int
4bf7b526 1363value_lazy (const struct value *value)
d69fe07e
AC
1364{
1365 return value->lazy;
1366}
1367
dfa52d88
AC
1368void
1369set_value_lazy (struct value *value, int val)
1370{
1371 value->lazy = val;
1372}
1373
4e5d721f 1374int
4bf7b526 1375value_stack (const struct value *value)
4e5d721f
DE
1376{
1377 return value->stack;
1378}
1379
1380void
1381set_value_stack (struct value *value, int val)
1382{
1383 value->stack = val;
1384}
1385
fc1a4b47 1386const gdb_byte *
0fd88904
AC
1387value_contents (struct value *value)
1388{
0e03807e
TT
1389 const gdb_byte *result = value_contents_writeable (value);
1390 require_not_optimized_out (value);
4e07d55f 1391 require_available (value);
0e03807e 1392 return result;
0fd88904
AC
1393}
1394
fc1a4b47 1395gdb_byte *
0fd88904
AC
1396value_contents_writeable (struct value *value)
1397{
1398 if (value->lazy)
1399 value_fetch_lazy (value);
fc0c53a0 1400 return value_contents_raw (value);
0fd88904
AC
1401}
1402
feb13ab0
AC
1403int
1404value_optimized_out (struct value *value)
1405{
691a26f5
AB
1406 /* We can only know if a value is optimized out once we have tried to
1407 fetch it. */
9a0dc9e3 1408 if (VEC_empty (range_s, value->optimized_out) && value->lazy)
ecf2e90c
DB
1409 {
1410 TRY
1411 {
1412 value_fetch_lazy (value);
1413 }
1414 CATCH (ex, RETURN_MASK_ERROR)
1415 {
1416 /* Fall back to checking value->optimized_out. */
1417 }
1418 END_CATCH
1419 }
691a26f5 1420
9a0dc9e3 1421 return !VEC_empty (range_s, value->optimized_out);
feb13ab0
AC
1422}
1423
9a0dc9e3
PA
1424/* Mark contents of VALUE as optimized out, starting at OFFSET bytes, and
1425 the following LENGTH bytes. */
eca07816 1426
feb13ab0 1427void
9a0dc9e3 1428mark_value_bytes_optimized_out (struct value *value, int offset, int length)
feb13ab0 1429{
9a0dc9e3
PA
1430 mark_value_bits_optimized_out (value,
1431 offset * TARGET_CHAR_BIT,
1432 length * TARGET_CHAR_BIT);
feb13ab0 1433}
13c3b5f5 1434
9a0dc9e3 1435/* See value.h. */
0e03807e 1436
9a0dc9e3 1437void
6b850546
DT
1438mark_value_bits_optimized_out (struct value *value,
1439 LONGEST offset, LONGEST length)
0e03807e 1440{
9a0dc9e3 1441 insert_into_bit_range_vector (&value->optimized_out, offset, length);
0e03807e
TT
1442}
1443
8cf6f0b1
TT
1444int
1445value_bits_synthetic_pointer (const struct value *value,
6b850546 1446 LONGEST offset, LONGEST length)
8cf6f0b1 1447{
e7303042 1448 if (value->lval != lval_computed
8cf6f0b1
TT
1449 || !value->location.computed.funcs->check_synthetic_pointer)
1450 return 0;
1451 return value->location.computed.funcs->check_synthetic_pointer (value,
1452 offset,
1453 length);
1454}
1455
6b850546 1456LONGEST
4bf7b526 1457value_embedded_offset (const struct value *value)
13c3b5f5
AC
1458{
1459 return value->embedded_offset;
1460}
1461
1462void
6b850546 1463set_value_embedded_offset (struct value *value, LONGEST val)
13c3b5f5
AC
1464{
1465 value->embedded_offset = val;
1466}
b44d461b 1467
6b850546 1468LONGEST
4bf7b526 1469value_pointed_to_offset (const struct value *value)
b44d461b
AC
1470{
1471 return value->pointed_to_offset;
1472}
1473
1474void
6b850546 1475set_value_pointed_to_offset (struct value *value, LONGEST val)
b44d461b
AC
1476{
1477 value->pointed_to_offset = val;
1478}
13bb5560 1479
c8f2448a 1480const struct lval_funcs *
a471c594 1481value_computed_funcs (const struct value *v)
5f5233d4 1482{
a471c594 1483 gdb_assert (value_lval_const (v) == lval_computed);
5f5233d4
PA
1484
1485 return v->location.computed.funcs;
1486}
1487
1488void *
0e03807e 1489value_computed_closure (const struct value *v)
5f5233d4 1490{
0e03807e 1491 gdb_assert (v->lval == lval_computed);
5f5233d4
PA
1492
1493 return v->location.computed.closure;
1494}
1495
13bb5560
AC
1496enum lval_type *
1497deprecated_value_lval_hack (struct value *value)
1498{
1499 return &value->lval;
1500}
1501
a471c594
JK
1502enum lval_type
1503value_lval_const (const struct value *value)
1504{
1505 return value->lval;
1506}
1507
42ae5230 1508CORE_ADDR
de4127a3 1509value_address (const struct value *value)
42ae5230 1510{
1a088441 1511 if (value->lval != lval_memory)
42ae5230 1512 return 0;
53ba8333 1513 if (value->parent != NULL)
2c8331b9 1514 return value_address (value->parent.get ()) + value->offset;
9920b434
BH
1515 if (NULL != TYPE_DATA_LOCATION (value_type (value)))
1516 {
1517 gdb_assert (PROP_CONST == TYPE_DATA_LOCATION_KIND (value_type (value)));
1518 return TYPE_DATA_LOCATION_ADDR (value_type (value));
1519 }
1520
1521 return value->location.address + value->offset;
42ae5230
TT
1522}
1523
1524CORE_ADDR
4bf7b526 1525value_raw_address (const struct value *value)
42ae5230 1526{
1a088441 1527 if (value->lval != lval_memory)
42ae5230
TT
1528 return 0;
1529 return value->location.address;
1530}
1531
1532void
1533set_value_address (struct value *value, CORE_ADDR addr)
13bb5560 1534{
1a088441 1535 gdb_assert (value->lval == lval_memory);
42ae5230 1536 value->location.address = addr;
13bb5560
AC
1537}
1538
1539struct internalvar **
1540deprecated_value_internalvar_hack (struct value *value)
1541{
1542 return &value->location.internalvar;
1543}
1544
1545struct frame_id *
41b56feb 1546deprecated_value_next_frame_id_hack (struct value *value)
13bb5560 1547{
7c2ba67e 1548 gdb_assert (value->lval == lval_register);
7dc54575 1549 return &value->location.reg.next_frame_id;
13bb5560
AC
1550}
1551
7dc54575 1552int *
13bb5560
AC
1553deprecated_value_regnum_hack (struct value *value)
1554{
7c2ba67e 1555 gdb_assert (value->lval == lval_register);
7dc54575 1556 return &value->location.reg.regnum;
13bb5560 1557}
88e3b34b
AC
1558
1559int
4bf7b526 1560deprecated_value_modifiable (const struct value *value)
88e3b34b
AC
1561{
1562 return value->modifiable;
1563}
990a07ab 1564\f
c906108c
SS
1565/* Return a mark in the value chain. All values allocated after the
1566 mark is obtained (except for those released) are subject to being freed
1567 if a subsequent value_free_to_mark is passed the mark. */
f23631e4 1568struct value *
fba45db2 1569value_mark (void)
c906108c 1570{
062d818d
TT
1571 if (all_values.empty ())
1572 return nullptr;
1573 return all_values.back ().get ();
c906108c
SS
1574}
1575
828d3400
DJ
1576/* Take a reference to VAL. VAL will not be deallocated until all
1577 references are released. */
1578
22bc8444 1579struct value *
828d3400
DJ
1580value_incref (struct value *val)
1581{
1582 val->reference_count++;
22bc8444 1583 return val;
828d3400
DJ
1584}
1585
1586/* Release a reference to VAL, which was acquired with value_incref.
1587 This function is also called to deallocate values from the value
1588 chain. */
1589
3e3d7139 1590void
22bc8444 1591value_decref (struct value *val)
3e3d7139 1592{
466ce3ae 1593 if (val != nullptr)
5f5233d4 1594 {
828d3400
DJ
1595 gdb_assert (val->reference_count > 0);
1596 val->reference_count--;
466ce3ae
TT
1597 if (val->reference_count == 0)
1598 delete val;
5f5233d4 1599 }
3e3d7139
JG
1600}
1601
c906108c
SS
1602/* Free all values allocated since MARK was obtained by value_mark
1603 (except for those released). */
1604void
4bf7b526 1605value_free_to_mark (const struct value *mark)
c906108c 1606{
062d818d
TT
1607 auto iter = std::find (all_values.begin (), all_values.end (), mark);
1608 if (iter == all_values.end ())
1609 all_values.clear ();
1610 else
1611 all_values.erase (iter + 1, all_values.end ());
c906108c
SS
1612}
1613
c906108c
SS
1614/* Remove VAL from the chain all_values
1615 so it will not be freed automatically. */
1616
22bc8444 1617value_ref_ptr
f23631e4 1618release_value (struct value *val)
c906108c 1619{
f23631e4 1620 struct value *v;
c906108c 1621
850645cf
TT
1622 if (val == nullptr)
1623 return value_ref_ptr ();
1624
062d818d
TT
1625 std::vector<value_ref_ptr>::reverse_iterator iter;
1626 for (iter = all_values.rbegin (); iter != all_values.rend (); ++iter)
c906108c 1627 {
062d818d 1628 if (*iter == val)
c906108c 1629 {
062d818d
TT
1630 value_ref_ptr result = *iter;
1631 all_values.erase (iter.base () - 1);
1632 return result;
c906108c
SS
1633 }
1634 }
c906108c 1635
062d818d
TT
1636 /* We must always return an owned reference. Normally this happens
1637 because we transfer the reference from the value chain, but in
1638 this case the value was not on the chain. */
1639 return value_ref_ptr (value_incref (val));
e848a8a5
TT
1640}
1641
a6535de1
TT
1642/* See value.h. */
1643
1644std::vector<value_ref_ptr>
4bf7b526 1645value_release_to_mark (const struct value *mark)
c906108c 1646{
a6535de1 1647 std::vector<value_ref_ptr> result;
c906108c 1648
062d818d
TT
1649 auto iter = std::find (all_values.begin (), all_values.end (), mark);
1650 if (iter == all_values.end ())
1651 std::swap (result, all_values);
1652 else
e848a8a5 1653 {
062d818d
TT
1654 std::move (iter + 1, all_values.end (), std::back_inserter (result));
1655 all_values.erase (iter + 1, all_values.end ());
e848a8a5 1656 }
062d818d 1657 std::reverse (result.begin (), result.end ());
a6535de1 1658 return result;
c906108c
SS
1659}
1660
1661/* Return a copy of the value ARG.
1662 It contains the same contents, for same memory address,
1663 but it's a different block of storage. */
1664
f23631e4
AC
1665struct value *
1666value_copy (struct value *arg)
c906108c 1667{
4754a64e 1668 struct type *encl_type = value_enclosing_type (arg);
3e3d7139
JG
1669 struct value *val;
1670
1671 if (value_lazy (arg))
1672 val = allocate_value_lazy (encl_type);
1673 else
1674 val = allocate_value (encl_type);
df407dfe 1675 val->type = arg->type;
c906108c 1676 VALUE_LVAL (val) = VALUE_LVAL (arg);
6f7c8fc2 1677 val->location = arg->location;
df407dfe
AC
1678 val->offset = arg->offset;
1679 val->bitpos = arg->bitpos;
1680 val->bitsize = arg->bitsize;
d69fe07e 1681 val->lazy = arg->lazy;
13c3b5f5 1682 val->embedded_offset = value_embedded_offset (arg);
b44d461b 1683 val->pointed_to_offset = arg->pointed_to_offset;
c906108c 1684 val->modifiable = arg->modifiable;
d69fe07e 1685 if (!value_lazy (val))
c906108c 1686 {
990a07ab 1687 memcpy (value_contents_all_raw (val), value_contents_all_raw (arg),
4754a64e 1688 TYPE_LENGTH (value_enclosing_type (arg)));
c906108c
SS
1689
1690 }
4e07d55f 1691 val->unavailable = VEC_copy (range_s, arg->unavailable);
9a0dc9e3 1692 val->optimized_out = VEC_copy (range_s, arg->optimized_out);
2c8331b9 1693 val->parent = arg->parent;
5f5233d4
PA
1694 if (VALUE_LVAL (val) == lval_computed)
1695 {
c8f2448a 1696 const struct lval_funcs *funcs = val->location.computed.funcs;
5f5233d4
PA
1697
1698 if (funcs->copy_closure)
1699 val->location.computed.closure = funcs->copy_closure (val);
1700 }
c906108c
SS
1701 return val;
1702}
74bcbdf3 1703
4c082a81
SC
1704/* Return a "const" and/or "volatile" qualified version of the value V.
1705 If CNST is true, then the returned value will be qualified with
1706 "const".
1707 if VOLTL is true, then the returned value will be qualified with
1708 "volatile". */
1709
1710struct value *
1711make_cv_value (int cnst, int voltl, struct value *v)
1712{
1713 struct type *val_type = value_type (v);
1714 struct type *enclosing_type = value_enclosing_type (v);
1715 struct value *cv_val = value_copy (v);
1716
1717 deprecated_set_value_type (cv_val,
1718 make_cv_type (cnst, voltl, val_type, NULL));
1719 set_value_enclosing_type (cv_val,
1720 make_cv_type (cnst, voltl, enclosing_type, NULL));
1721
1722 return cv_val;
1723}
1724
c37f7098
KW
1725/* Return a version of ARG that is non-lvalue. */
1726
1727struct value *
1728value_non_lval (struct value *arg)
1729{
1730 if (VALUE_LVAL (arg) != not_lval)
1731 {
1732 struct type *enc_type = value_enclosing_type (arg);
1733 struct value *val = allocate_value (enc_type);
1734
1735 memcpy (value_contents_all_raw (val), value_contents_all (arg),
1736 TYPE_LENGTH (enc_type));
1737 val->type = arg->type;
1738 set_value_embedded_offset (val, value_embedded_offset (arg));
1739 set_value_pointed_to_offset (val, value_pointed_to_offset (arg));
1740 return val;
1741 }
1742 return arg;
1743}
1744
6c659fc2
SC
1745/* Write contents of V at ADDR and set its lval type to be LVAL_MEMORY. */
1746
1747void
1748value_force_lval (struct value *v, CORE_ADDR addr)
1749{
1750 gdb_assert (VALUE_LVAL (v) == not_lval);
1751
1752 write_memory (addr, value_contents_raw (v), TYPE_LENGTH (value_type (v)));
1753 v->lval = lval_memory;
1754 v->location.address = addr;
1755}
1756
74bcbdf3 1757void
0e03807e
TT
1758set_value_component_location (struct value *component,
1759 const struct value *whole)
74bcbdf3 1760{
9920b434
BH
1761 struct type *type;
1762
e81e7f5e
SC
1763 gdb_assert (whole->lval != lval_xcallable);
1764
0e03807e 1765 if (whole->lval == lval_internalvar)
74bcbdf3
PA
1766 VALUE_LVAL (component) = lval_internalvar_component;
1767 else
0e03807e 1768 VALUE_LVAL (component) = whole->lval;
5f5233d4 1769
74bcbdf3 1770 component->location = whole->location;
0e03807e 1771 if (whole->lval == lval_computed)
5f5233d4 1772 {
c8f2448a 1773 const struct lval_funcs *funcs = whole->location.computed.funcs;
5f5233d4
PA
1774
1775 if (funcs->copy_closure)
1776 component->location.computed.closure = funcs->copy_closure (whole);
1777 }
9920b434
BH
1778
1779 /* If type has a dynamic resolved location property
1780 update it's value address. */
1781 type = value_type (whole);
1782 if (NULL != TYPE_DATA_LOCATION (type)
1783 && TYPE_DATA_LOCATION_KIND (type) == PROP_CONST)
1784 set_value_address (component, TYPE_DATA_LOCATION_ADDR (type));
74bcbdf3
PA
1785}
1786
c906108c
SS
1787/* Access to the value history. */
1788
1789/* Record a new value in the value history.
eddf0bae 1790 Returns the absolute history index of the entry. */
c906108c
SS
1791
1792int
f23631e4 1793record_latest_value (struct value *val)
c906108c
SS
1794{
1795 int i;
1796
1797 /* We don't want this value to have anything to do with the inferior anymore.
1798 In particular, "set $1 = 50" should not affect the variable from which
1799 the value was taken, and fast watchpoints should be able to assume that
1800 a value on the value history never changes. */
d69fe07e 1801 if (value_lazy (val))
c906108c
SS
1802 value_fetch_lazy (val);
1803 /* We preserve VALUE_LVAL so that the user can find out where it was fetched
1804 from. This is a bit dubious, because then *&$1 does not just return $1
1805 but the current contents of that location. c'est la vie... */
1806 val->modifiable = 0;
350e1a76 1807
4d0266a0 1808 value_history.push_back (release_value (val));
a109c7c1 1809
4d0266a0 1810 return value_history.size ();
c906108c
SS
1811}
1812
1813/* Return a copy of the value in the history with sequence number NUM. */
1814
f23631e4 1815struct value *
fba45db2 1816access_value_history (int num)
c906108c 1817{
52f0bd74
AC
1818 int i;
1819 int absnum = num;
c906108c
SS
1820
1821 if (absnum <= 0)
4d0266a0 1822 absnum += value_history.size ();
c906108c
SS
1823
1824 if (absnum <= 0)
1825 {
1826 if (num == 0)
8a3fe4f8 1827 error (_("The history is empty."));
c906108c 1828 else if (num == 1)
8a3fe4f8 1829 error (_("There is only one value in the history."));
c906108c 1830 else
8a3fe4f8 1831 error (_("History does not go back to $$%d."), -num);
c906108c 1832 }
4d0266a0 1833 if (absnum > value_history.size ())
8a3fe4f8 1834 error (_("History has not yet reached $%d."), absnum);
c906108c
SS
1835
1836 absnum--;
1837
4d0266a0 1838 return value_copy (value_history[absnum].get ());
c906108c
SS
1839}
1840
c906108c 1841static void
5fed81ff 1842show_values (const char *num_exp, int from_tty)
c906108c 1843{
52f0bd74 1844 int i;
f23631e4 1845 struct value *val;
c906108c
SS
1846 static int num = 1;
1847
1848 if (num_exp)
1849 {
f132ba9d
TJB
1850 /* "show values +" should print from the stored position.
1851 "show values <exp>" should print around value number <exp>. */
c906108c 1852 if (num_exp[0] != '+' || num_exp[1] != '\0')
bb518678 1853 num = parse_and_eval_long (num_exp) - 5;
c906108c
SS
1854 }
1855 else
1856 {
f132ba9d 1857 /* "show values" means print the last 10 values. */
4d0266a0 1858 num = value_history.size () - 9;
c906108c
SS
1859 }
1860
1861 if (num <= 0)
1862 num = 1;
1863
4d0266a0 1864 for (i = num; i < num + 10 && i <= value_history.size (); i++)
c906108c 1865 {
79a45b7d 1866 struct value_print_options opts;
a109c7c1 1867
c906108c 1868 val = access_value_history (i);
a3f17187 1869 printf_filtered (("$%d = "), i);
79a45b7d
TT
1870 get_user_print_options (&opts);
1871 value_print (val, gdb_stdout, &opts);
a3f17187 1872 printf_filtered (("\n"));
c906108c
SS
1873 }
1874
f132ba9d 1875 /* The next "show values +" should start after what we just printed. */
c906108c
SS
1876 num += 10;
1877
1878 /* Hitting just return after this command should do the same thing as
f132ba9d
TJB
1879 "show values +". If num_exp is null, this is unnecessary, since
1880 "show values +" is not useful after "show values". */
c906108c 1881 if (from_tty && num_exp)
85c4be7c 1882 set_repeat_arguments ("+");
c906108c
SS
1883}
1884\f
52059ffd
TT
1885enum internalvar_kind
1886{
1887 /* The internal variable is empty. */
1888 INTERNALVAR_VOID,
1889
1890 /* The value of the internal variable is provided directly as
1891 a GDB value object. */
1892 INTERNALVAR_VALUE,
1893
1894 /* A fresh value is computed via a call-back routine on every
1895 access to the internal variable. */
1896 INTERNALVAR_MAKE_VALUE,
1897
1898 /* The internal variable holds a GDB internal convenience function. */
1899 INTERNALVAR_FUNCTION,
1900
1901 /* The variable holds an integer value. */
1902 INTERNALVAR_INTEGER,
1903
1904 /* The variable holds a GDB-provided string. */
1905 INTERNALVAR_STRING,
1906};
1907
1908union internalvar_data
1909{
1910 /* A value object used with INTERNALVAR_VALUE. */
1911 struct value *value;
1912
1913 /* The call-back routine used with INTERNALVAR_MAKE_VALUE. */
1914 struct
1915 {
1916 /* The functions to call. */
1917 const struct internalvar_funcs *functions;
1918
1919 /* The function's user-data. */
1920 void *data;
1921 } make_value;
1922
1923 /* The internal function used with INTERNALVAR_FUNCTION. */
1924 struct
1925 {
1926 struct internal_function *function;
1927 /* True if this is the canonical name for the function. */
1928 int canonical;
1929 } fn;
1930
1931 /* An integer value used with INTERNALVAR_INTEGER. */
1932 struct
1933 {
1934 /* If type is non-NULL, it will be used as the type to generate
1935 a value for this internal variable. If type is NULL, a default
1936 integer type for the architecture is used. */
1937 struct type *type;
1938 LONGEST val;
1939 } integer;
1940
1941 /* A string value used with INTERNALVAR_STRING. */
1942 char *string;
1943};
1944
c906108c
SS
1945/* Internal variables. These are variables within the debugger
1946 that hold values assigned by debugger commands.
1947 The user refers to them with a '$' prefix
1948 that does not appear in the variable names stored internally. */
1949
4fa62494
UW
1950struct internalvar
1951{
1952 struct internalvar *next;
1953 char *name;
4fa62494 1954
78267919
UW
1955 /* We support various different kinds of content of an internal variable.
1956 enum internalvar_kind specifies the kind, and union internalvar_data
1957 provides the data associated with this particular kind. */
1958
52059ffd 1959 enum internalvar_kind kind;
4fa62494 1960
52059ffd 1961 union internalvar_data u;
4fa62494
UW
1962};
1963
c906108c
SS
1964static struct internalvar *internalvars;
1965
3e43a32a
MS
1966/* If the variable does not already exist create it and give it the
1967 value given. If no value is given then the default is zero. */
53e5f3cf 1968static void
0b39b52e 1969init_if_undefined_command (const char* args, int from_tty)
53e5f3cf
AS
1970{
1971 struct internalvar* intvar;
1972
1973 /* Parse the expression - this is taken from set_command(). */
4d01a485 1974 expression_up expr = parse_expression (args);
53e5f3cf
AS
1975
1976 /* Validate the expression.
1977 Was the expression an assignment?
1978 Or even an expression at all? */
1979 if (expr->nelts == 0 || expr->elts[0].opcode != BINOP_ASSIGN)
1980 error (_("Init-if-undefined requires an assignment expression."));
1981
1982 /* Extract the variable from the parsed expression.
1983 In the case of an assign the lvalue will be in elts[1] and elts[2]. */
1984 if (expr->elts[1].opcode != OP_INTERNALVAR)
3e43a32a
MS
1985 error (_("The first parameter to init-if-undefined "
1986 "should be a GDB variable."));
53e5f3cf
AS
1987 intvar = expr->elts[2].internalvar;
1988
1989 /* Only evaluate the expression if the lvalue is void.
1990 This may still fail if the expresssion is invalid. */
78267919 1991 if (intvar->kind == INTERNALVAR_VOID)
4d01a485 1992 evaluate_expression (expr.get ());
53e5f3cf
AS
1993}
1994
1995
c906108c
SS
1996/* Look up an internal variable with name NAME. NAME should not
1997 normally include a dollar sign.
1998
1999 If the specified internal variable does not exist,
c4a3d09a 2000 the return value is NULL. */
c906108c
SS
2001
2002struct internalvar *
bc3b79fd 2003lookup_only_internalvar (const char *name)
c906108c 2004{
52f0bd74 2005 struct internalvar *var;
c906108c
SS
2006
2007 for (var = internalvars; var; var = var->next)
5cb316ef 2008 if (strcmp (var->name, name) == 0)
c906108c
SS
2009 return var;
2010
c4a3d09a
MF
2011 return NULL;
2012}
2013
eb3ff9a5
PA
2014/* Complete NAME by comparing it to the names of internal
2015 variables. */
d55637df 2016
eb3ff9a5
PA
2017void
2018complete_internalvar (completion_tracker &tracker, const char *name)
d55637df 2019{
d55637df
TT
2020 struct internalvar *var;
2021 int len;
2022
2023 len = strlen (name);
2024
2025 for (var = internalvars; var; var = var->next)
2026 if (strncmp (var->name, name, len) == 0)
2027 {
eb3ff9a5 2028 gdb::unique_xmalloc_ptr<char> copy (xstrdup (var->name));
d55637df 2029
eb3ff9a5 2030 tracker.add_completion (std::move (copy));
d55637df 2031 }
d55637df 2032}
c4a3d09a
MF
2033
2034/* Create an internal variable with name NAME and with a void value.
2035 NAME should not normally include a dollar sign. */
2036
2037struct internalvar *
bc3b79fd 2038create_internalvar (const char *name)
c4a3d09a 2039{
8d749320 2040 struct internalvar *var = XNEW (struct internalvar);
a109c7c1 2041
1754f103 2042 var->name = concat (name, (char *)NULL);
78267919 2043 var->kind = INTERNALVAR_VOID;
c906108c
SS
2044 var->next = internalvars;
2045 internalvars = var;
2046 return var;
2047}
2048
4aa995e1
PA
2049/* Create an internal variable with name NAME and register FUN as the
2050 function that value_of_internalvar uses to create a value whenever
2051 this variable is referenced. NAME should not normally include a
22d2b532
SDJ
2052 dollar sign. DATA is passed uninterpreted to FUN when it is
2053 called. CLEANUP, if not NULL, is called when the internal variable
2054 is destroyed. It is passed DATA as its only argument. */
4aa995e1
PA
2055
2056struct internalvar *
22d2b532
SDJ
2057create_internalvar_type_lazy (const char *name,
2058 const struct internalvar_funcs *funcs,
2059 void *data)
4aa995e1 2060{
4fa62494 2061 struct internalvar *var = create_internalvar (name);
a109c7c1 2062
78267919 2063 var->kind = INTERNALVAR_MAKE_VALUE;
22d2b532
SDJ
2064 var->u.make_value.functions = funcs;
2065 var->u.make_value.data = data;
4aa995e1
PA
2066 return var;
2067}
c4a3d09a 2068
22d2b532
SDJ
2069/* See documentation in value.h. */
2070
2071int
2072compile_internalvar_to_ax (struct internalvar *var,
2073 struct agent_expr *expr,
2074 struct axs_value *value)
2075{
2076 if (var->kind != INTERNALVAR_MAKE_VALUE
2077 || var->u.make_value.functions->compile_to_ax == NULL)
2078 return 0;
2079
2080 var->u.make_value.functions->compile_to_ax (var, expr, value,
2081 var->u.make_value.data);
2082 return 1;
2083}
2084
c4a3d09a
MF
2085/* Look up an internal variable with name NAME. NAME should not
2086 normally include a dollar sign.
2087
2088 If the specified internal variable does not exist,
2089 one is created, with a void value. */
2090
2091struct internalvar *
bc3b79fd 2092lookup_internalvar (const char *name)
c4a3d09a
MF
2093{
2094 struct internalvar *var;
2095
2096 var = lookup_only_internalvar (name);
2097 if (var)
2098 return var;
2099
2100 return create_internalvar (name);
2101}
2102
78267919
UW
2103/* Return current value of internal variable VAR. For variables that
2104 are not inherently typed, use a value type appropriate for GDBARCH. */
2105
f23631e4 2106struct value *
78267919 2107value_of_internalvar (struct gdbarch *gdbarch, struct internalvar *var)
c906108c 2108{
f23631e4 2109 struct value *val;
0914bcdb
SS
2110 struct trace_state_variable *tsv;
2111
2112 /* If there is a trace state variable of the same name, assume that
2113 is what we really want to see. */
2114 tsv = find_trace_state_variable (var->name);
2115 if (tsv)
2116 {
2117 tsv->value_known = target_get_trace_state_variable_value (tsv->number,
2118 &(tsv->value));
2119 if (tsv->value_known)
2120 val = value_from_longest (builtin_type (gdbarch)->builtin_int64,
2121 tsv->value);
2122 else
2123 val = allocate_value (builtin_type (gdbarch)->builtin_void);
2124 return val;
2125 }
c906108c 2126
78267919 2127 switch (var->kind)
5f5233d4 2128 {
78267919
UW
2129 case INTERNALVAR_VOID:
2130 val = allocate_value (builtin_type (gdbarch)->builtin_void);
2131 break;
4fa62494 2132
78267919
UW
2133 case INTERNALVAR_FUNCTION:
2134 val = allocate_value (builtin_type (gdbarch)->internal_fn);
2135 break;
4fa62494 2136
cab0c772
UW
2137 case INTERNALVAR_INTEGER:
2138 if (!var->u.integer.type)
78267919 2139 val = value_from_longest (builtin_type (gdbarch)->builtin_int,
cab0c772 2140 var->u.integer.val);
78267919 2141 else
cab0c772
UW
2142 val = value_from_longest (var->u.integer.type, var->u.integer.val);
2143 break;
2144
78267919
UW
2145 case INTERNALVAR_STRING:
2146 val = value_cstring (var->u.string, strlen (var->u.string),
2147 builtin_type (gdbarch)->builtin_char);
2148 break;
4fa62494 2149
78267919
UW
2150 case INTERNALVAR_VALUE:
2151 val = value_copy (var->u.value);
4aa995e1
PA
2152 if (value_lazy (val))
2153 value_fetch_lazy (val);
78267919 2154 break;
4aa995e1 2155
78267919 2156 case INTERNALVAR_MAKE_VALUE:
22d2b532
SDJ
2157 val = (*var->u.make_value.functions->make_value) (gdbarch, var,
2158 var->u.make_value.data);
78267919
UW
2159 break;
2160
2161 default:
9b20d036 2162 internal_error (__FILE__, __LINE__, _("bad kind"));
78267919
UW
2163 }
2164
2165 /* Change the VALUE_LVAL to lval_internalvar so that future operations
2166 on this value go back to affect the original internal variable.
2167
2168 Do not do this for INTERNALVAR_MAKE_VALUE variables, as those have
2169 no underlying modifyable state in the internal variable.
2170
2171 Likewise, if the variable's value is a computed lvalue, we want
2172 references to it to produce another computed lvalue, where
2173 references and assignments actually operate through the
2174 computed value's functions.
2175
2176 This means that internal variables with computed values
2177 behave a little differently from other internal variables:
2178 assignments to them don't just replace the previous value
2179 altogether. At the moment, this seems like the behavior we
2180 want. */
2181
2182 if (var->kind != INTERNALVAR_MAKE_VALUE
2183 && val->lval != lval_computed)
2184 {
2185 VALUE_LVAL (val) = lval_internalvar;
2186 VALUE_INTERNALVAR (val) = var;
5f5233d4 2187 }
d3c139e9 2188
4fa62494
UW
2189 return val;
2190}
d3c139e9 2191
4fa62494
UW
2192int
2193get_internalvar_integer (struct internalvar *var, LONGEST *result)
2194{
3158c6ed 2195 if (var->kind == INTERNALVAR_INTEGER)
4fa62494 2196 {
cab0c772
UW
2197 *result = var->u.integer.val;
2198 return 1;
3158c6ed 2199 }
d3c139e9 2200
3158c6ed
PA
2201 if (var->kind == INTERNALVAR_VALUE)
2202 {
2203 struct type *type = check_typedef (value_type (var->u.value));
2204
2205 if (TYPE_CODE (type) == TYPE_CODE_INT)
2206 {
2207 *result = value_as_long (var->u.value);
2208 return 1;
2209 }
4fa62494 2210 }
3158c6ed
PA
2211
2212 return 0;
4fa62494 2213}
d3c139e9 2214
4fa62494
UW
2215static int
2216get_internalvar_function (struct internalvar *var,
2217 struct internal_function **result)
2218{
78267919 2219 switch (var->kind)
d3c139e9 2220 {
78267919
UW
2221 case INTERNALVAR_FUNCTION:
2222 *result = var->u.fn.function;
4fa62494 2223 return 1;
d3c139e9 2224
4fa62494
UW
2225 default:
2226 return 0;
2227 }
c906108c
SS
2228}
2229
2230void
6b850546
DT
2231set_internalvar_component (struct internalvar *var,
2232 LONGEST offset, LONGEST bitpos,
2233 LONGEST bitsize, struct value *newval)
c906108c 2234{
4fa62494 2235 gdb_byte *addr;
3ae385af
SM
2236 struct gdbarch *arch;
2237 int unit_size;
c906108c 2238
78267919 2239 switch (var->kind)
4fa62494 2240 {
78267919
UW
2241 case INTERNALVAR_VALUE:
2242 addr = value_contents_writeable (var->u.value);
3ae385af
SM
2243 arch = get_value_arch (var->u.value);
2244 unit_size = gdbarch_addressable_memory_unit_size (arch);
4fa62494
UW
2245
2246 if (bitsize)
50810684 2247 modify_field (value_type (var->u.value), addr + offset,
4fa62494
UW
2248 value_as_long (newval), bitpos, bitsize);
2249 else
3ae385af 2250 memcpy (addr + offset * unit_size, value_contents (newval),
4fa62494
UW
2251 TYPE_LENGTH (value_type (newval)));
2252 break;
78267919
UW
2253
2254 default:
2255 /* We can never get a component of any other kind. */
9b20d036 2256 internal_error (__FILE__, __LINE__, _("set_internalvar_component"));
4fa62494 2257 }
c906108c
SS
2258}
2259
2260void
f23631e4 2261set_internalvar (struct internalvar *var, struct value *val)
c906108c 2262{
78267919 2263 enum internalvar_kind new_kind;
4fa62494 2264 union internalvar_data new_data = { 0 };
c906108c 2265
78267919 2266 if (var->kind == INTERNALVAR_FUNCTION && var->u.fn.canonical)
bc3b79fd
TJB
2267 error (_("Cannot overwrite convenience function %s"), var->name);
2268
4fa62494 2269 /* Prepare new contents. */
78267919 2270 switch (TYPE_CODE (check_typedef (value_type (val))))
4fa62494
UW
2271 {
2272 case TYPE_CODE_VOID:
78267919 2273 new_kind = INTERNALVAR_VOID;
4fa62494
UW
2274 break;
2275
2276 case TYPE_CODE_INTERNAL_FUNCTION:
2277 gdb_assert (VALUE_LVAL (val) == lval_internalvar);
78267919
UW
2278 new_kind = INTERNALVAR_FUNCTION;
2279 get_internalvar_function (VALUE_INTERNALVAR (val),
2280 &new_data.fn.function);
2281 /* Copies created here are never canonical. */
4fa62494
UW
2282 break;
2283
4fa62494 2284 default:
78267919
UW
2285 new_kind = INTERNALVAR_VALUE;
2286 new_data.value = value_copy (val);
2287 new_data.value->modifiable = 1;
4fa62494
UW
2288
2289 /* Force the value to be fetched from the target now, to avoid problems
2290 later when this internalvar is referenced and the target is gone or
2291 has changed. */
78267919
UW
2292 if (value_lazy (new_data.value))
2293 value_fetch_lazy (new_data.value);
4fa62494
UW
2294
2295 /* Release the value from the value chain to prevent it from being
2296 deleted by free_all_values. From here on this function should not
2297 call error () until new_data is installed into the var->u to avoid
2298 leaking memory. */
22bc8444 2299 release_value (new_data.value).release ();
9920b434
BH
2300
2301 /* Internal variables which are created from values with a dynamic
2302 location don't need the location property of the origin anymore.
2303 The resolved dynamic location is used prior then any other address
2304 when accessing the value.
2305 If we keep it, we would still refer to the origin value.
2306 Remove the location property in case it exist. */
2307 remove_dyn_prop (DYN_PROP_DATA_LOCATION, value_type (new_data.value));
2308
4fa62494
UW
2309 break;
2310 }
2311
2312 /* Clean up old contents. */
2313 clear_internalvar (var);
2314
2315 /* Switch over. */
78267919 2316 var->kind = new_kind;
4fa62494 2317 var->u = new_data;
c906108c
SS
2318 /* End code which must not call error(). */
2319}
2320
4fa62494
UW
2321void
2322set_internalvar_integer (struct internalvar *var, LONGEST l)
2323{
2324 /* Clean up old contents. */
2325 clear_internalvar (var);
2326
cab0c772
UW
2327 var->kind = INTERNALVAR_INTEGER;
2328 var->u.integer.type = NULL;
2329 var->u.integer.val = l;
78267919
UW
2330}
2331
2332void
2333set_internalvar_string (struct internalvar *var, const char *string)
2334{
2335 /* Clean up old contents. */
2336 clear_internalvar (var);
2337
2338 var->kind = INTERNALVAR_STRING;
2339 var->u.string = xstrdup (string);
4fa62494
UW
2340}
2341
2342static void
2343set_internalvar_function (struct internalvar *var, struct internal_function *f)
2344{
2345 /* Clean up old contents. */
2346 clear_internalvar (var);
2347
78267919
UW
2348 var->kind = INTERNALVAR_FUNCTION;
2349 var->u.fn.function = f;
2350 var->u.fn.canonical = 1;
2351 /* Variables installed here are always the canonical version. */
4fa62494
UW
2352}
2353
2354void
2355clear_internalvar (struct internalvar *var)
2356{
2357 /* Clean up old contents. */
78267919 2358 switch (var->kind)
4fa62494 2359 {
78267919 2360 case INTERNALVAR_VALUE:
22bc8444 2361 value_decref (var->u.value);
78267919
UW
2362 break;
2363
2364 case INTERNALVAR_STRING:
2365 xfree (var->u.string);
4fa62494
UW
2366 break;
2367
22d2b532
SDJ
2368 case INTERNALVAR_MAKE_VALUE:
2369 if (var->u.make_value.functions->destroy != NULL)
2370 var->u.make_value.functions->destroy (var->u.make_value.data);
2371 break;
2372
4fa62494 2373 default:
4fa62494
UW
2374 break;
2375 }
2376
78267919
UW
2377 /* Reset to void kind. */
2378 var->kind = INTERNALVAR_VOID;
4fa62494
UW
2379}
2380
c906108c 2381char *
4bf7b526 2382internalvar_name (const struct internalvar *var)
c906108c
SS
2383{
2384 return var->name;
2385}
2386
4fa62494
UW
2387static struct internal_function *
2388create_internal_function (const char *name,
2389 internal_function_fn handler, void *cookie)
bc3b79fd 2390{
bc3b79fd 2391 struct internal_function *ifn = XNEW (struct internal_function);
a109c7c1 2392
bc3b79fd
TJB
2393 ifn->name = xstrdup (name);
2394 ifn->handler = handler;
2395 ifn->cookie = cookie;
4fa62494 2396 return ifn;
bc3b79fd
TJB
2397}
2398
2399char *
2400value_internal_function_name (struct value *val)
2401{
4fa62494
UW
2402 struct internal_function *ifn;
2403 int result;
2404
2405 gdb_assert (VALUE_LVAL (val) == lval_internalvar);
2406 result = get_internalvar_function (VALUE_INTERNALVAR (val), &ifn);
2407 gdb_assert (result);
2408
bc3b79fd
TJB
2409 return ifn->name;
2410}
2411
2412struct value *
d452c4bc
UW
2413call_internal_function (struct gdbarch *gdbarch,
2414 const struct language_defn *language,
2415 struct value *func, int argc, struct value **argv)
bc3b79fd 2416{
4fa62494
UW
2417 struct internal_function *ifn;
2418 int result;
2419
2420 gdb_assert (VALUE_LVAL (func) == lval_internalvar);
2421 result = get_internalvar_function (VALUE_INTERNALVAR (func), &ifn);
2422 gdb_assert (result);
2423
d452c4bc 2424 return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
bc3b79fd
TJB
2425}
2426
2427/* The 'function' command. This does nothing -- it is just a
2428 placeholder to let "help function NAME" work. This is also used as
2429 the implementation of the sub-command that is created when
2430 registering an internal function. */
2431static void
981a3fb3 2432function_command (const char *command, int from_tty)
bc3b79fd
TJB
2433{
2434 /* Do nothing. */
2435}
2436
2437/* Clean up if an internal function's command is destroyed. */
2438static void
2439function_destroyer (struct cmd_list_element *self, void *ignore)
2440{
6f937416 2441 xfree ((char *) self->name);
1947513d 2442 xfree ((char *) self->doc);
bc3b79fd
TJB
2443}
2444
2445/* Add a new internal function. NAME is the name of the function; DOC
2446 is a documentation string describing the function. HANDLER is
2447 called when the function is invoked. COOKIE is an arbitrary
2448 pointer which is passed to HANDLER and is intended for "user
2449 data". */
2450void
2451add_internal_function (const char *name, const char *doc,
2452 internal_function_fn handler, void *cookie)
2453{
2454 struct cmd_list_element *cmd;
4fa62494 2455 struct internal_function *ifn;
bc3b79fd 2456 struct internalvar *var = lookup_internalvar (name);
4fa62494
UW
2457
2458 ifn = create_internal_function (name, handler, cookie);
2459 set_internalvar_function (var, ifn);
bc3b79fd
TJB
2460
2461 cmd = add_cmd (xstrdup (name), no_class, function_command, (char *) doc,
2462 &functionlist);
2463 cmd->destroyer = function_destroyer;
2464}
2465
ae5a43e0
DJ
2466/* Update VALUE before discarding OBJFILE. COPIED_TYPES is used to
2467 prevent cycles / duplicates. */
2468
4e7a5ef5 2469void
ae5a43e0
DJ
2470preserve_one_value (struct value *value, struct objfile *objfile,
2471 htab_t copied_types)
2472{
2473 if (TYPE_OBJFILE (value->type) == objfile)
2474 value->type = copy_type_recursive (objfile, value->type, copied_types);
2475
2476 if (TYPE_OBJFILE (value->enclosing_type) == objfile)
2477 value->enclosing_type = copy_type_recursive (objfile,
2478 value->enclosing_type,
2479 copied_types);
2480}
2481
78267919
UW
2482/* Likewise for internal variable VAR. */
2483
2484static void
2485preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
2486 htab_t copied_types)
2487{
2488 switch (var->kind)
2489 {
cab0c772
UW
2490 case INTERNALVAR_INTEGER:
2491 if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
2492 var->u.integer.type
2493 = copy_type_recursive (objfile, var->u.integer.type, copied_types);
2494 break;
2495
78267919
UW
2496 case INTERNALVAR_VALUE:
2497 preserve_one_value (var->u.value, objfile, copied_types);
2498 break;
2499 }
2500}
2501
ae5a43e0
DJ
2502/* Update the internal variables and value history when OBJFILE is
2503 discarded; we must copy the types out of the objfile. New global types
2504 will be created for every convenience variable which currently points to
2505 this objfile's types, and the convenience variables will be adjusted to
2506 use the new global types. */
c906108c
SS
2507
2508void
ae5a43e0 2509preserve_values (struct objfile *objfile)
c906108c 2510{
ae5a43e0 2511 htab_t copied_types;
52f0bd74 2512 struct internalvar *var;
ae5a43e0 2513 int i;
c906108c 2514
ae5a43e0
DJ
2515 /* Create the hash table. We allocate on the objfile's obstack, since
2516 it is soon to be deleted. */
2517 copied_types = create_copied_types_hash (objfile);
2518
4d0266a0
TT
2519 for (const value_ref_ptr &item : value_history)
2520 preserve_one_value (item.get (), objfile, copied_types);
ae5a43e0
DJ
2521
2522 for (var = internalvars; var; var = var->next)
78267919 2523 preserve_one_internalvar (var, objfile, copied_types);
ae5a43e0 2524
6dddc817 2525 preserve_ext_lang_values (objfile, copied_types);
a08702d6 2526
ae5a43e0 2527 htab_delete (copied_types);
c906108c
SS
2528}
2529
2530static void
ad25e423 2531show_convenience (const char *ignore, int from_tty)
c906108c 2532{
e17c207e 2533 struct gdbarch *gdbarch = get_current_arch ();
52f0bd74 2534 struct internalvar *var;
c906108c 2535 int varseen = 0;
79a45b7d 2536 struct value_print_options opts;
c906108c 2537
79a45b7d 2538 get_user_print_options (&opts);
c906108c
SS
2539 for (var = internalvars; var; var = var->next)
2540 {
c709acd1 2541
c906108c
SS
2542 if (!varseen)
2543 {
2544 varseen = 1;
2545 }
a3f17187 2546 printf_filtered (("$%s = "), var->name);
c709acd1 2547
492d29ea 2548 TRY
c709acd1
PA
2549 {
2550 struct value *val;
2551
2552 val = value_of_internalvar (gdbarch, var);
2553 value_print (val, gdb_stdout, &opts);
2554 }
492d29ea
PA
2555 CATCH (ex, RETURN_MASK_ERROR)
2556 {
2557 fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
2558 }
2559 END_CATCH
2560
a3f17187 2561 printf_filtered (("\n"));
c906108c
SS
2562 }
2563 if (!varseen)
f47f77df
DE
2564 {
2565 /* This text does not mention convenience functions on purpose.
2566 The user can't create them except via Python, and if Python support
2567 is installed this message will never be printed ($_streq will
2568 exist). */
2569 printf_unfiltered (_("No debugger convenience variables now defined.\n"
2570 "Convenience variables have "
2571 "names starting with \"$\";\n"
2572 "use \"set\" as in \"set "
2573 "$foo = 5\" to define them.\n"));
2574 }
c906108c
SS
2575}
2576\f
ba18742c
SM
2577
2578/* See value.h. */
e81e7f5e
SC
2579
2580struct value *
ba18742c 2581value_from_xmethod (xmethod_worker_up &&worker)
e81e7f5e 2582{
ba18742c 2583 struct value *v;
e81e7f5e 2584
ba18742c
SM
2585 v = allocate_value (builtin_type (target_gdbarch ())->xmethod);
2586 v->lval = lval_xcallable;
2587 v->location.xm_worker = worker.release ();
2588 v->modifiable = 0;
e81e7f5e 2589
ba18742c 2590 return v;
e81e7f5e
SC
2591}
2592
2ce1cdbf
DE
2593/* Return the type of the result of TYPE_CODE_XMETHOD value METHOD. */
2594
2595struct type *
2596result_type_of_xmethod (struct value *method, int argc, struct value **argv)
2597{
2598 gdb_assert (TYPE_CODE (value_type (method)) == TYPE_CODE_XMETHOD
2599 && method->lval == lval_xcallable && argc > 0);
2600
ba18742c
SM
2601 return method->location.xm_worker->get_result_type
2602 (argv[0], argv + 1, argc - 1);
2ce1cdbf
DE
2603}
2604
e81e7f5e
SC
2605/* Call the xmethod corresponding to the TYPE_CODE_XMETHOD value METHOD. */
2606
2607struct value *
2608call_xmethod (struct value *method, int argc, struct value **argv)
2609{
2610 gdb_assert (TYPE_CODE (value_type (method)) == TYPE_CODE_XMETHOD
2611 && method->lval == lval_xcallable && argc > 0);
2612
ba18742c 2613 return method->location.xm_worker->invoke (argv[0], argv + 1, argc - 1);
e81e7f5e
SC
2614}
2615\f
c906108c
SS
2616/* Extract a value as a C number (either long or double).
2617 Knows how to convert fixed values to double, or
2618 floating values to long.
2619 Does not deallocate the value. */
2620
2621LONGEST
f23631e4 2622value_as_long (struct value *val)
c906108c
SS
2623{
2624 /* This coerces arrays and functions, which is necessary (e.g.
2625 in disassemble_command). It also dereferences references, which
2626 I suspect is the most logical thing to do. */
994b9211 2627 val = coerce_array (val);
0fd88904 2628 return unpack_long (value_type (val), value_contents (val));
c906108c
SS
2629}
2630
581e13c1 2631/* Extract a value as a C pointer. Does not deallocate the value.
4478b372
JB
2632 Note that val's type may not actually be a pointer; value_as_long
2633 handles all the cases. */
c906108c 2634CORE_ADDR
f23631e4 2635value_as_address (struct value *val)
c906108c 2636{
50810684
UW
2637 struct gdbarch *gdbarch = get_type_arch (value_type (val));
2638
c906108c
SS
2639 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure
2640 whether we want this to be true eventually. */
2641#if 0
bf6ae464 2642 /* gdbarch_addr_bits_remove is wrong if we are being called for a
c906108c
SS
2643 non-address (e.g. argument to "signal", "info break", etc.), or
2644 for pointers to char, in which the low bits *are* significant. */
50810684 2645 return gdbarch_addr_bits_remove (gdbarch, value_as_long (val));
c906108c 2646#else
f312f057
JB
2647
2648 /* There are several targets (IA-64, PowerPC, and others) which
2649 don't represent pointers to functions as simply the address of
2650 the function's entry point. For example, on the IA-64, a
2651 function pointer points to a two-word descriptor, generated by
2652 the linker, which contains the function's entry point, and the
2653 value the IA-64 "global pointer" register should have --- to
2654 support position-independent code. The linker generates
2655 descriptors only for those functions whose addresses are taken.
2656
2657 On such targets, it's difficult for GDB to convert an arbitrary
2658 function address into a function pointer; it has to either find
2659 an existing descriptor for that function, or call malloc and
2660 build its own. On some targets, it is impossible for GDB to
2661 build a descriptor at all: the descriptor must contain a jump
2662 instruction; data memory cannot be executed; and code memory
2663 cannot be modified.
2664
2665 Upon entry to this function, if VAL is a value of type `function'
2666 (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then
42ae5230 2667 value_address (val) is the address of the function. This is what
f312f057
JB
2668 you'll get if you evaluate an expression like `main'. The call
2669 to COERCE_ARRAY below actually does all the usual unary
2670 conversions, which includes converting values of type `function'
2671 to `pointer to function'. This is the challenging conversion
2672 discussed above. Then, `unpack_long' will convert that pointer
2673 back into an address.
2674
2675 So, suppose the user types `disassemble foo' on an architecture
2676 with a strange function pointer representation, on which GDB
2677 cannot build its own descriptors, and suppose further that `foo'
2678 has no linker-built descriptor. The address->pointer conversion
2679 will signal an error and prevent the command from running, even
2680 though the next step would have been to convert the pointer
2681 directly back into the same address.
2682
2683 The following shortcut avoids this whole mess. If VAL is a
2684 function, just return its address directly. */
df407dfe
AC
2685 if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
2686 || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
42ae5230 2687 return value_address (val);
f312f057 2688
994b9211 2689 val = coerce_array (val);
fc0c74b1
AC
2690
2691 /* Some architectures (e.g. Harvard), map instruction and data
2692 addresses onto a single large unified address space. For
2693 instance: An architecture may consider a large integer in the
2694 range 0x10000000 .. 0x1000ffff to already represent a data
2695 addresses (hence not need a pointer to address conversion) while
2696 a small integer would still need to be converted integer to
2697 pointer to address. Just assume such architectures handle all
2698 integer conversions in a single function. */
2699
2700 /* JimB writes:
2701
2702 I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we
2703 must admonish GDB hackers to make sure its behavior matches the
2704 compiler's, whenever possible.
2705
2706 In general, I think GDB should evaluate expressions the same way
2707 the compiler does. When the user copies an expression out of
2708 their source code and hands it to a `print' command, they should
2709 get the same value the compiler would have computed. Any
2710 deviation from this rule can cause major confusion and annoyance,
2711 and needs to be justified carefully. In other words, GDB doesn't
2712 really have the freedom to do these conversions in clever and
2713 useful ways.
2714
2715 AndrewC pointed out that users aren't complaining about how GDB
2716 casts integers to pointers; they are complaining that they can't
2717 take an address from a disassembly listing and give it to `x/i'.
2718 This is certainly important.
2719
79dd2d24 2720 Adding an architecture method like integer_to_address() certainly
fc0c74b1
AC
2721 makes it possible for GDB to "get it right" in all circumstances
2722 --- the target has complete control over how things get done, so
2723 people can Do The Right Thing for their target without breaking
2724 anyone else. The standard doesn't specify how integers get
2725 converted to pointers; usually, the ABI doesn't either, but
2726 ABI-specific code is a more reasonable place to handle it. */
2727
df407dfe 2728 if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
aa006118 2729 && !TYPE_IS_REFERENCE (value_type (val))
50810684
UW
2730 && gdbarch_integer_to_address_p (gdbarch))
2731 return gdbarch_integer_to_address (gdbarch, value_type (val),
0fd88904 2732 value_contents (val));
fc0c74b1 2733
0fd88904 2734 return unpack_long (value_type (val), value_contents (val));
c906108c
SS
2735#endif
2736}
2737\f
2738/* Unpack raw data (copied from debugee, target byte order) at VALADDR
2739 as a long, or as a double, assuming the raw data is described
2740 by type TYPE. Knows how to convert different sizes of values
2741 and can convert between fixed and floating point. We don't assume
2742 any alignment for the raw data. Return value is in host byte order.
2743
2744 If you want functions and arrays to be coerced to pointers, and
2745 references to be dereferenced, call value_as_long() instead.
2746
2747 C++: It is assumed that the front-end has taken care of
2748 all matters concerning pointers to members. A pointer
2749 to member which reaches here is considered to be equivalent
2750 to an INT (or some size). After all, it is only an offset. */
2751
2752LONGEST
fc1a4b47 2753unpack_long (struct type *type, const gdb_byte *valaddr)
c906108c 2754{
e17a4113 2755 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
52f0bd74
AC
2756 enum type_code code = TYPE_CODE (type);
2757 int len = TYPE_LENGTH (type);
2758 int nosign = TYPE_UNSIGNED (type);
c906108c 2759
c906108c
SS
2760 switch (code)
2761 {
2762 case TYPE_CODE_TYPEDEF:
2763 return unpack_long (check_typedef (type), valaddr);
2764 case TYPE_CODE_ENUM:
4f2aea11 2765 case TYPE_CODE_FLAGS:
c906108c
SS
2766 case TYPE_CODE_BOOL:
2767 case TYPE_CODE_INT:
2768 case TYPE_CODE_CHAR:
2769 case TYPE_CODE_RANGE:
0d5de010 2770 case TYPE_CODE_MEMBERPTR:
c906108c 2771 if (nosign)
e17a4113 2772 return extract_unsigned_integer (valaddr, len, byte_order);
c906108c 2773 else
e17a4113 2774 return extract_signed_integer (valaddr, len, byte_order);
c906108c
SS
2775
2776 case TYPE_CODE_FLT:
4ef30785 2777 case TYPE_CODE_DECFLOAT:
50637b26 2778 return target_float_to_longest (valaddr, type);
4ef30785 2779
c906108c
SS
2780 case TYPE_CODE_PTR:
2781 case TYPE_CODE_REF:
aa006118 2782 case TYPE_CODE_RVALUE_REF:
c906108c 2783 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure
c5aa993b 2784 whether we want this to be true eventually. */
4478b372 2785 return extract_typed_address (valaddr, type);
c906108c 2786
c906108c 2787 default:
8a3fe4f8 2788 error (_("Value can't be converted to integer."));
c906108c 2789 }
c5aa993b 2790 return 0; /* Placate lint. */
c906108c
SS
2791}
2792
c906108c
SS
2793/* Unpack raw data (copied from debugee, target byte order) at VALADDR
2794 as a CORE_ADDR, assuming the raw data is described by type TYPE.
2795 We don't assume any alignment for the raw data. Return value is in
2796 host byte order.
2797
2798 If you want functions and arrays to be coerced to pointers, and
1aa20aa8 2799 references to be dereferenced, call value_as_address() instead.
c906108c
SS
2800
2801 C++: It is assumed that the front-end has taken care of
2802 all matters concerning pointers to members. A pointer
2803 to member which reaches here is considered to be equivalent
2804 to an INT (or some size). After all, it is only an offset. */
2805
2806CORE_ADDR
fc1a4b47 2807unpack_pointer (struct type *type, const gdb_byte *valaddr)
c906108c
SS
2808{
2809 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure
2810 whether we want this to be true eventually. */
2811 return unpack_long (type, valaddr);
2812}
4478b372 2813
70100014
UW
2814bool
2815is_floating_value (struct value *val)
2816{
2817 struct type *type = check_typedef (value_type (val));
2818
2819 if (is_floating_type (type))
2820 {
2821 if (!target_float_is_valid (value_contents (val), type))
2822 error (_("Invalid floating value found in program."));
2823 return true;
2824 }
2825
2826 return false;
2827}
2828
c906108c 2829\f
1596cb5d 2830/* Get the value of the FIELDNO'th field (which must be static) of
686d4def 2831 TYPE. */
c906108c 2832
f23631e4 2833struct value *
fba45db2 2834value_static_field (struct type *type, int fieldno)
c906108c 2835{
948e66d9
DJ
2836 struct value *retval;
2837
1596cb5d 2838 switch (TYPE_FIELD_LOC_KIND (type, fieldno))
c906108c 2839 {
1596cb5d 2840 case FIELD_LOC_KIND_PHYSADDR:
52e9fde8
SS
2841 retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
2842 TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1596cb5d
DE
2843 break;
2844 case FIELD_LOC_KIND_PHYSNAME:
c906108c 2845 {
ff355380 2846 const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
581e13c1 2847 /* TYPE_FIELD_NAME (type, fieldno); */
d12307c1 2848 struct block_symbol sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
94af9270 2849
d12307c1 2850 if (sym.symbol == NULL)
c906108c 2851 {
a109c7c1 2852 /* With some compilers, e.g. HP aCC, static data members are
581e13c1 2853 reported as non-debuggable symbols. */
3b7344d5
TT
2854 struct bound_minimal_symbol msym
2855 = lookup_minimal_symbol (phys_name, NULL, NULL);
c2e0e465 2856 struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
a109c7c1 2857
3b7344d5 2858 if (!msym.minsym)
c2e0e465 2859 retval = allocate_optimized_out_value (field_type);
c906108c 2860 else
c2e0e465 2861 retval = value_at_lazy (field_type, BMSYMBOL_VALUE_ADDRESS (msym));
c906108c
SS
2862 }
2863 else
d12307c1 2864 retval = value_of_variable (sym.symbol, sym.block);
1596cb5d 2865 break;
c906108c 2866 }
1596cb5d 2867 default:
f3574227 2868 gdb_assert_not_reached ("unexpected field location kind");
1596cb5d
DE
2869 }
2870
948e66d9 2871 return retval;
c906108c
SS
2872}
2873
4dfea560
DE
2874/* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE.
2875 You have to be careful here, since the size of the data area for the value
2876 is set by the length of the enclosing type. So if NEW_ENCL_TYPE is bigger
2877 than the old enclosing type, you have to allocate more space for the
2878 data. */
2b127877 2879
4dfea560
DE
2880void
2881set_value_enclosing_type (struct value *val, struct type *new_encl_type)
2b127877 2882{
5fdf6324
AB
2883 if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val)))
2884 {
2885 check_type_length_before_alloc (new_encl_type);
2886 val->contents
2887 = (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
2888 }
3e3d7139
JG
2889
2890 val->enclosing_type = new_encl_type;
2b127877
DB
2891}
2892
c906108c
SS
2893/* Given a value ARG1 (offset by OFFSET bytes)
2894 of a struct or union type ARG_TYPE,
2895 extract and return the value of one of its (non-static) fields.
581e13c1 2896 FIELDNO says which field. */
c906108c 2897
f23631e4 2898struct value *
6b850546 2899value_primitive_field (struct value *arg1, LONGEST offset,
aa1ee363 2900 int fieldno, struct type *arg_type)
c906108c 2901{
f23631e4 2902 struct value *v;
52f0bd74 2903 struct type *type;
3ae385af
SM
2904 struct gdbarch *arch = get_value_arch (arg1);
2905 int unit_size = gdbarch_addressable_memory_unit_size (arch);
c906108c 2906
f168693b 2907 arg_type = check_typedef (arg_type);
c906108c 2908 type = TYPE_FIELD_TYPE (arg_type, fieldno);
c54eabfa
JK
2909
2910 /* Call check_typedef on our type to make sure that, if TYPE
2911 is a TYPE_CODE_TYPEDEF, its length is set to the length
2912 of the target type instead of zero. However, we do not
2913 replace the typedef type by the target type, because we want
2914 to keep the typedef in order to be able to print the type
2915 description correctly. */
2916 check_typedef (type);
c906108c 2917
691a26f5 2918 if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
c906108c 2919 {
22c05d8a
JK
2920 /* Handle packed fields.
2921
2922 Create a new value for the bitfield, with bitpos and bitsize
4ea48cc1
DJ
2923 set. If possible, arrange offset and bitpos so that we can
2924 do a single aligned read of the size of the containing type.
2925 Otherwise, adjust offset to the byte containing the first
2926 bit. Assume that the address, offset, and embedded offset
2927 are sufficiently aligned. */
22c05d8a 2928
6b850546
DT
2929 LONGEST bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno);
2930 LONGEST container_bitsize = TYPE_LENGTH (type) * 8;
4ea48cc1 2931
9a0dc9e3
PA
2932 v = allocate_value_lazy (type);
2933 v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno);
2934 if ((bitpos % container_bitsize) + v->bitsize <= container_bitsize
2935 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST))
2936 v->bitpos = bitpos % container_bitsize;
4ea48cc1 2937 else
9a0dc9e3
PA
2938 v->bitpos = bitpos % 8;
2939 v->offset = (value_embedded_offset (arg1)
2940 + offset
2941 + (bitpos - v->bitpos) / 8);
2942 set_value_parent (v, arg1);
2943 if (!value_lazy (arg1))
2944 value_fetch_lazy (v);
c906108c
SS
2945 }
2946 else if (fieldno < TYPE_N_BASECLASSES (arg_type))
2947 {
2948 /* This field is actually a base subobject, so preserve the
39d37385
PA
2949 entire object's contents for later references to virtual
2950 bases, etc. */
6b850546 2951 LONGEST boffset;
a4e2ee12
DJ
2952
2953 /* Lazy register values with offsets are not supported. */
2954 if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
2955 value_fetch_lazy (arg1);
2956
9a0dc9e3
PA
2957 /* We special case virtual inheritance here because this
2958 requires access to the contents, which we would rather avoid
2959 for references to ordinary fields of unavailable values. */
2960 if (BASETYPE_VIA_VIRTUAL (arg_type, fieldno))
2961 boffset = baseclass_offset (arg_type, fieldno,
2962 value_contents (arg1),
2963 value_embedded_offset (arg1),
2964 value_address (arg1),
2965 arg1);
c906108c 2966 else
9a0dc9e3 2967 boffset = TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
691a26f5 2968
9a0dc9e3
PA
2969 if (value_lazy (arg1))
2970 v = allocate_value_lazy (value_enclosing_type (arg1));
2971 else
2972 {
2973 v = allocate_value (value_enclosing_type (arg1));
2974 value_contents_copy_raw (v, 0, arg1, 0,
2975 TYPE_LENGTH (value_enclosing_type (arg1)));
3e3d7139 2976 }
9a0dc9e3
PA
2977 v->type = type;
2978 v->offset = value_offset (arg1);
2979 v->embedded_offset = offset + value_embedded_offset (arg1) + boffset;
c906108c 2980 }
9920b434
BH
2981 else if (NULL != TYPE_DATA_LOCATION (type))
2982 {
2983 /* Field is a dynamic data member. */
2984
2985 gdb_assert (0 == offset);
2986 /* We expect an already resolved data location. */
2987 gdb_assert (PROP_CONST == TYPE_DATA_LOCATION_KIND (type));
2988 /* For dynamic data types defer memory allocation
2989 until we actual access the value. */
2990 v = allocate_value_lazy (type);
2991 }
c906108c
SS
2992 else
2993 {
2994 /* Plain old data member */
3ae385af
SM
2995 offset += (TYPE_FIELD_BITPOS (arg_type, fieldno)
2996 / (HOST_CHAR_BIT * unit_size));
a4e2ee12
DJ
2997
2998 /* Lazy register values with offsets are not supported. */
2999 if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
3000 value_fetch_lazy (arg1);
3001
9a0dc9e3 3002 if (value_lazy (arg1))
3e3d7139 3003 v = allocate_value_lazy (type);
c906108c 3004 else
3e3d7139
JG
3005 {
3006 v = allocate_value (type);
39d37385
PA
3007 value_contents_copy_raw (v, value_embedded_offset (v),
3008 arg1, value_embedded_offset (arg1) + offset,
3ae385af 3009 type_length_units (type));
3e3d7139 3010 }
df407dfe 3011 v->offset = (value_offset (arg1) + offset
13c3b5f5 3012 + value_embedded_offset (arg1));
c906108c 3013 }
74bcbdf3 3014 set_value_component_location (v, arg1);
c906108c
SS
3015 return v;
3016}
3017
3018/* Given a value ARG1 of a struct or union type,
3019 extract and return the value of one of its (non-static) fields.
581e13c1 3020 FIELDNO says which field. */
c906108c 3021
f23631e4 3022struct value *
aa1ee363 3023value_field (struct value *arg1, int fieldno)
c906108c 3024{
df407dfe 3025 return value_primitive_field (arg1, 0, fieldno, value_type (arg1));
c906108c
SS
3026}
3027
3028/* Return a non-virtual function as a value.
3029 F is the list of member functions which contains the desired method.
0478d61c
FF
3030 J is an index into F which provides the desired method.
3031
3032 We only use the symbol for its address, so be happy with either a
581e13c1 3033 full symbol or a minimal symbol. */
c906108c 3034
f23631e4 3035struct value *
3e43a32a
MS
3036value_fn_field (struct value **arg1p, struct fn_field *f,
3037 int j, struct type *type,
6b850546 3038 LONGEST offset)
c906108c 3039{
f23631e4 3040 struct value *v;
52f0bd74 3041 struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
1d06ead6 3042 const char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
c906108c 3043 struct symbol *sym;
7c7b6655 3044 struct bound_minimal_symbol msym;
c906108c 3045
d12307c1 3046 sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0).symbol;
5ae326fa 3047 if (sym != NULL)
0478d61c 3048 {
7c7b6655 3049 memset (&msym, 0, sizeof (msym));
5ae326fa
AC
3050 }
3051 else
3052 {
3053 gdb_assert (sym == NULL);
7c7b6655
TT
3054 msym = lookup_bound_minimal_symbol (physname);
3055 if (msym.minsym == NULL)
5ae326fa 3056 return NULL;
0478d61c
FF
3057 }
3058
c906108c 3059 v = allocate_value (ftype);
1a088441 3060 VALUE_LVAL (v) = lval_memory;
0478d61c
FF
3061 if (sym)
3062 {
42ae5230 3063 set_value_address (v, BLOCK_START (SYMBOL_BLOCK_VALUE (sym)));
0478d61c
FF
3064 }
3065 else
3066 {
bccdca4a
UW
3067 /* The minimal symbol might point to a function descriptor;
3068 resolve it to the actual code address instead. */
7c7b6655 3069 struct objfile *objfile = msym.objfile;
bccdca4a
UW
3070 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3071
42ae5230
TT
3072 set_value_address (v,
3073 gdbarch_convert_from_func_ptr_addr
77e371c0 3074 (gdbarch, BMSYMBOL_VALUE_ADDRESS (msym), &current_target));
0478d61c 3075 }
c906108c
SS
3076
3077 if (arg1p)
c5aa993b 3078 {
df407dfe 3079 if (type != value_type (*arg1p))
c5aa993b
JM
3080 *arg1p = value_ind (value_cast (lookup_pointer_type (type),
3081 value_addr (*arg1p)));
3082
070ad9f0 3083 /* Move the `this' pointer according to the offset.
581e13c1 3084 VALUE_OFFSET (*arg1p) += offset; */
c906108c
SS
3085 }
3086
3087 return v;
3088}
3089
c906108c 3090\f
c906108c 3091
4875ffdb
PA
3092/* Unpack a bitfield of the specified FIELD_TYPE, from the object at
3093 VALADDR, and store the result in *RESULT.
15ce8941
TT
3094 The bitfield starts at BITPOS bits and contains BITSIZE bits; if
3095 BITSIZE is zero, then the length is taken from FIELD_TYPE.
c906108c 3096
4875ffdb
PA
3097 Extracting bits depends on endianness of the machine. Compute the
3098 number of least significant bits to discard. For big endian machines,
3099 we compute the total number of bits in the anonymous object, subtract
3100 off the bit count from the MSB of the object to the MSB of the
3101 bitfield, then the size of the bitfield, which leaves the LSB discard
3102 count. For little endian machines, the discard count is simply the
3103 number of bits from the LSB of the anonymous object to the LSB of the
3104 bitfield.
3105
3106 If the field is signed, we also do sign extension. */
3107
3108static LONGEST
3109unpack_bits_as_long (struct type *field_type, const gdb_byte *valaddr,
6b850546 3110 LONGEST bitpos, LONGEST bitsize)
c906108c 3111{
4ea48cc1 3112 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (field_type));
c906108c
SS
3113 ULONGEST val;
3114 ULONGEST valmask;
c906108c 3115 int lsbcount;
6b850546
DT
3116 LONGEST bytes_read;
3117 LONGEST read_offset;
c906108c 3118
4a76eae5
DJ
3119 /* Read the minimum number of bytes required; there may not be
3120 enough bytes to read an entire ULONGEST. */
f168693b 3121 field_type = check_typedef (field_type);
4a76eae5
DJ
3122 if (bitsize)
3123 bytes_read = ((bitpos % 8) + bitsize + 7) / 8;
3124 else
15ce8941
TT
3125 {
3126 bytes_read = TYPE_LENGTH (field_type);
3127 bitsize = 8 * bytes_read;
3128 }
4a76eae5 3129
5467c6c8
PA
3130 read_offset = bitpos / 8;
3131
4875ffdb 3132 val = extract_unsigned_integer (valaddr + read_offset,
4a76eae5 3133 bytes_read, byte_order);
c906108c 3134
581e13c1 3135 /* Extract bits. See comment above. */
c906108c 3136
4ea48cc1 3137 if (gdbarch_bits_big_endian (get_type_arch (field_type)))
4a76eae5 3138 lsbcount = (bytes_read * 8 - bitpos % 8 - bitsize);
c906108c
SS
3139 else
3140 lsbcount = (bitpos % 8);
3141 val >>= lsbcount;
3142
3143 /* If the field does not entirely fill a LONGEST, then zero the sign bits.
581e13c1 3144 If the field is signed, and is negative, then sign extend. */
c906108c 3145
15ce8941 3146 if (bitsize < 8 * (int) sizeof (val))
c906108c
SS
3147 {
3148 valmask = (((ULONGEST) 1) << bitsize) - 1;
3149 val &= valmask;
3150 if (!TYPE_UNSIGNED (field_type))
3151 {
3152 if (val & (valmask ^ (valmask >> 1)))
3153 {
3154 val |= ~valmask;
3155 }
3156 }
3157 }
5467c6c8 3158
4875ffdb 3159 return val;
5467c6c8
PA
3160}
3161
3162/* Unpack a field FIELDNO of the specified TYPE, from the object at
3163 VALADDR + EMBEDDED_OFFSET. VALADDR points to the contents of
3164 ORIGINAL_VALUE, which must not be NULL. See
3165 unpack_value_bits_as_long for more details. */
3166
3167int
3168unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr,
6b850546 3169 LONGEST embedded_offset, int fieldno,
5467c6c8
PA
3170 const struct value *val, LONGEST *result)
3171{
4875ffdb
PA
3172 int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
3173 int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
3174 struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
3175 int bit_offset;
3176
5467c6c8
PA
3177 gdb_assert (val != NULL);
3178
4875ffdb
PA
3179 bit_offset = embedded_offset * TARGET_CHAR_BIT + bitpos;
3180 if (value_bits_any_optimized_out (val, bit_offset, bitsize)
3181 || !value_bits_available (val, bit_offset, bitsize))
3182 return 0;
3183
3184 *result = unpack_bits_as_long (field_type, valaddr + embedded_offset,
3185 bitpos, bitsize);
3186 return 1;
5467c6c8
PA
3187}
3188
3189/* Unpack a field FIELDNO of the specified TYPE, from the anonymous
4875ffdb 3190 object at VALADDR. See unpack_bits_as_long for more details. */
5467c6c8
PA
3191
3192LONGEST
3193unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno)
3194{
4875ffdb
PA
3195 int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
3196 int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
3197 struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
5467c6c8 3198
4875ffdb
PA
3199 return unpack_bits_as_long (field_type, valaddr, bitpos, bitsize);
3200}
3201
3202/* Unpack a bitfield of BITSIZE bits found at BITPOS in the object at
3203 VALADDR + EMBEDDEDOFFSET that has the type of DEST_VAL and store
3204 the contents in DEST_VAL, zero or sign extending if the type of
3205 DEST_VAL is wider than BITSIZE. VALADDR points to the contents of
3206 VAL. If the VAL's contents required to extract the bitfield from
3207 are unavailable/optimized out, DEST_VAL is correspondingly
3208 marked unavailable/optimized out. */
3209
bb9d5f81 3210void
4875ffdb 3211unpack_value_bitfield (struct value *dest_val,
6b850546
DT
3212 LONGEST bitpos, LONGEST bitsize,
3213 const gdb_byte *valaddr, LONGEST embedded_offset,
4875ffdb
PA
3214 const struct value *val)
3215{
3216 enum bfd_endian byte_order;
3217 int src_bit_offset;
3218 int dst_bit_offset;
4875ffdb
PA
3219 struct type *field_type = value_type (dest_val);
3220
4875ffdb 3221 byte_order = gdbarch_byte_order (get_type_arch (field_type));
e5ca03b4
PA
3222
3223 /* First, unpack and sign extend the bitfield as if it was wholly
3224 valid. Optimized out/unavailable bits are read as zero, but
3225 that's OK, as they'll end up marked below. If the VAL is
3226 wholly-invalid we may have skipped allocating its contents,
3227 though. See allocate_optimized_out_value. */
3228 if (valaddr != NULL)
3229 {
3230 LONGEST num;
3231
3232 num = unpack_bits_as_long (field_type, valaddr + embedded_offset,
3233 bitpos, bitsize);
3234 store_signed_integer (value_contents_raw (dest_val),
3235 TYPE_LENGTH (field_type), byte_order, num);
3236 }
4875ffdb
PA
3237
3238 /* Now copy the optimized out / unavailability ranges to the right
3239 bits. */
3240 src_bit_offset = embedded_offset * TARGET_CHAR_BIT + bitpos;
3241 if (byte_order == BFD_ENDIAN_BIG)
3242 dst_bit_offset = TYPE_LENGTH (field_type) * TARGET_CHAR_BIT - bitsize;
3243 else
3244 dst_bit_offset = 0;
3245 value_ranges_copy_adjusted (dest_val, dst_bit_offset,
3246 val, src_bit_offset, bitsize);
5467c6c8
PA
3247}
3248
3249/* Return a new value with type TYPE, which is FIELDNO field of the
3250 object at VALADDR + EMBEDDEDOFFSET. VALADDR points to the contents
3251 of VAL. If the VAL's contents required to extract the bitfield
4875ffdb
PA
3252 from are unavailable/optimized out, the new value is
3253 correspondingly marked unavailable/optimized out. */
5467c6c8
PA
3254
3255struct value *
3256value_field_bitfield (struct type *type, int fieldno,
3257 const gdb_byte *valaddr,
6b850546 3258 LONGEST embedded_offset, const struct value *val)
5467c6c8 3259{
4875ffdb
PA
3260 int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
3261 int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
3262 struct value *res_val = allocate_value (TYPE_FIELD_TYPE (type, fieldno));
5467c6c8 3263
4875ffdb
PA
3264 unpack_value_bitfield (res_val, bitpos, bitsize,
3265 valaddr, embedded_offset, val);
3266
3267 return res_val;
4ea48cc1
DJ
3268}
3269
c906108c
SS
3270/* Modify the value of a bitfield. ADDR points to a block of memory in
3271 target byte order; the bitfield starts in the byte pointed to. FIELDVAL
3272 is the desired value of the field, in host byte order. BITPOS and BITSIZE
581e13c1 3273 indicate which bits (in target bit order) comprise the bitfield.
19f220c3 3274 Requires 0 < BITSIZE <= lbits, 0 <= BITPOS % 8 + BITSIZE <= lbits, and
f4e88c8e 3275 0 <= BITPOS, where lbits is the size of a LONGEST in bits. */
c906108c
SS
3276
3277void
50810684 3278modify_field (struct type *type, gdb_byte *addr,
6b850546 3279 LONGEST fieldval, LONGEST bitpos, LONGEST bitsize)
c906108c 3280{
e17a4113 3281 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
f4e88c8e
PH
3282 ULONGEST oword;
3283 ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
6b850546 3284 LONGEST bytesize;
19f220c3
JK
3285
3286 /* Normalize BITPOS. */
3287 addr += bitpos / 8;
3288 bitpos %= 8;
c906108c
SS
3289
3290 /* If a negative fieldval fits in the field in question, chop
3291 off the sign extension bits. */
f4e88c8e
PH
3292 if ((~fieldval & ~(mask >> 1)) == 0)
3293 fieldval &= mask;
c906108c
SS
3294
3295 /* Warn if value is too big to fit in the field in question. */
f4e88c8e 3296 if (0 != (fieldval & ~mask))
c906108c
SS
3297 {
3298 /* FIXME: would like to include fieldval in the message, but
c5aa993b 3299 we don't have a sprintf_longest. */
6b850546 3300 warning (_("Value does not fit in %s bits."), plongest (bitsize));
c906108c
SS
3301
3302 /* Truncate it, otherwise adjoining fields may be corrupted. */
f4e88c8e 3303 fieldval &= mask;
c906108c
SS
3304 }
3305
19f220c3
JK
3306 /* Ensure no bytes outside of the modified ones get accessed as it may cause
3307 false valgrind reports. */
3308
3309 bytesize = (bitpos + bitsize + 7) / 8;
3310 oword = extract_unsigned_integer (addr, bytesize, byte_order);
c906108c
SS
3311
3312 /* Shifting for bit field depends on endianness of the target machine. */
50810684 3313 if (gdbarch_bits_big_endian (get_type_arch (type)))
19f220c3 3314 bitpos = bytesize * 8 - bitpos - bitsize;
c906108c 3315
f4e88c8e 3316 oword &= ~(mask << bitpos);
c906108c
SS
3317 oword |= fieldval << bitpos;
3318
19f220c3 3319 store_unsigned_integer (addr, bytesize, byte_order, oword);
c906108c
SS
3320}
3321\f
14d06750 3322/* Pack NUM into BUF using a target format of TYPE. */
c906108c 3323
14d06750
DJ
3324void
3325pack_long (gdb_byte *buf, struct type *type, LONGEST num)
c906108c 3326{
e17a4113 3327 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
6b850546 3328 LONGEST len;
14d06750
DJ
3329
3330 type = check_typedef (type);
c906108c
SS
3331 len = TYPE_LENGTH (type);
3332
14d06750 3333 switch (TYPE_CODE (type))
c906108c 3334 {
c906108c
SS
3335 case TYPE_CODE_INT:
3336 case TYPE_CODE_CHAR:
3337 case TYPE_CODE_ENUM:
4f2aea11 3338 case TYPE_CODE_FLAGS:
c906108c
SS
3339 case TYPE_CODE_BOOL:
3340 case TYPE_CODE_RANGE:
0d5de010 3341 case TYPE_CODE_MEMBERPTR:
e17a4113 3342 store_signed_integer (buf, len, byte_order, num);
c906108c 3343 break;
c5aa993b 3344
c906108c 3345 case TYPE_CODE_REF:
aa006118 3346 case TYPE_CODE_RVALUE_REF:
c906108c 3347 case TYPE_CODE_PTR:
14d06750 3348 store_typed_address (buf, type, (CORE_ADDR) num);
c906108c 3349 break;
c5aa993b 3350
50637b26
UW
3351 case TYPE_CODE_FLT:
3352 case TYPE_CODE_DECFLOAT:
3353 target_float_from_longest (buf, type, num);
3354 break;
3355
c906108c 3356 default:
14d06750
DJ
3357 error (_("Unexpected type (%d) encountered for integer constant."),
3358 TYPE_CODE (type));
c906108c 3359 }
14d06750
DJ
3360}
3361
3362
595939de
PM
3363/* Pack NUM into BUF using a target format of TYPE. */
3364
70221824 3365static void
595939de
PM
3366pack_unsigned_long (gdb_byte *buf, struct type *type, ULONGEST num)
3367{
6b850546 3368 LONGEST len;
595939de
PM
3369 enum bfd_endian byte_order;
3370
3371 type = check_typedef (type);
3372 len = TYPE_LENGTH (type);
3373 byte_order = gdbarch_byte_order (get_type_arch (type));
3374
3375 switch (TYPE_CODE (type))
3376 {
3377 case TYPE_CODE_INT:
3378 case TYPE_CODE_CHAR:
3379 case TYPE_CODE_ENUM:
3380 case TYPE_CODE_FLAGS:
3381 case TYPE_CODE_BOOL:
3382 case TYPE_CODE_RANGE:
3383 case TYPE_CODE_MEMBERPTR:
3384 store_unsigned_integer (buf, len, byte_order, num);
3385 break;
3386
3387 case TYPE_CODE_REF:
aa006118 3388 case TYPE_CODE_RVALUE_REF:
595939de
PM
3389 case TYPE_CODE_PTR:
3390 store_typed_address (buf, type, (CORE_ADDR) num);
3391 break;
3392
50637b26
UW
3393 case TYPE_CODE_FLT:
3394 case TYPE_CODE_DECFLOAT:
3395 target_float_from_ulongest (buf, type, num);
3396 break;
3397
595939de 3398 default:
3e43a32a
MS
3399 error (_("Unexpected type (%d) encountered "
3400 "for unsigned integer constant."),
595939de
PM
3401 TYPE_CODE (type));
3402 }
3403}
3404
3405
14d06750
DJ
3406/* Convert C numbers into newly allocated values. */
3407
3408struct value *
3409value_from_longest (struct type *type, LONGEST num)
3410{
3411 struct value *val = allocate_value (type);
3412
3413 pack_long (value_contents_raw (val), type, num);
c906108c
SS
3414 return val;
3415}
3416
4478b372 3417
595939de
PM
3418/* Convert C unsigned numbers into newly allocated values. */
3419
3420struct value *
3421value_from_ulongest (struct type *type, ULONGEST num)
3422{
3423 struct value *val = allocate_value (type);
3424
3425 pack_unsigned_long (value_contents_raw (val), type, num);
3426
3427 return val;
3428}
3429
3430
4478b372 3431/* Create a value representing a pointer of type TYPE to the address
cb417230 3432 ADDR. */
80180f79 3433
f23631e4 3434struct value *
4478b372
JB
3435value_from_pointer (struct type *type, CORE_ADDR addr)
3436{
cb417230 3437 struct value *val = allocate_value (type);
a109c7c1 3438
80180f79 3439 store_typed_address (value_contents_raw (val),
cb417230 3440 check_typedef (type), addr);
4478b372
JB
3441 return val;
3442}
3443
3444
012370f6
TT
3445/* Create a value of type TYPE whose contents come from VALADDR, if it
3446 is non-null, and whose memory address (in the inferior) is
3447 ADDRESS. The type of the created value may differ from the passed
3448 type TYPE. Make sure to retrieve values new type after this call.
3449 Note that TYPE is not passed through resolve_dynamic_type; this is
3450 a special API intended for use only by Ada. */
3451
3452struct value *
3453value_from_contents_and_address_unresolved (struct type *type,
3454 const gdb_byte *valaddr,
3455 CORE_ADDR address)
3456{
3457 struct value *v;
3458
3459 if (valaddr == NULL)
3460 v = allocate_value_lazy (type);
3461 else
3462 v = value_from_contents (type, valaddr);
012370f6 3463 VALUE_LVAL (v) = lval_memory;
1a088441 3464 set_value_address (v, address);
012370f6
TT
3465 return v;
3466}
3467
8acb6b92
TT
3468/* Create a value of type TYPE whose contents come from VALADDR, if it
3469 is non-null, and whose memory address (in the inferior) is
80180f79
SA
3470 ADDRESS. The type of the created value may differ from the passed
3471 type TYPE. Make sure to retrieve values new type after this call. */
8acb6b92
TT
3472
3473struct value *
3474value_from_contents_and_address (struct type *type,
3475 const gdb_byte *valaddr,
3476 CORE_ADDR address)
3477{
c3345124 3478 struct type *resolved_type = resolve_dynamic_type (type, valaddr, address);
d36430db 3479 struct type *resolved_type_no_typedef = check_typedef (resolved_type);
41e8491f 3480 struct value *v;
a109c7c1 3481
8acb6b92 3482 if (valaddr == NULL)
80180f79 3483 v = allocate_value_lazy (resolved_type);
8acb6b92 3484 else
80180f79 3485 v = value_from_contents (resolved_type, valaddr);
d36430db
JB
3486 if (TYPE_DATA_LOCATION (resolved_type_no_typedef) != NULL
3487 && TYPE_DATA_LOCATION_KIND (resolved_type_no_typedef) == PROP_CONST)
3488 address = TYPE_DATA_LOCATION_ADDR (resolved_type_no_typedef);
33d502b4 3489 VALUE_LVAL (v) = lval_memory;
1a088441 3490 set_value_address (v, address);
8acb6b92
TT
3491 return v;
3492}
3493
8a9b8146
TT
3494/* Create a value of type TYPE holding the contents CONTENTS.
3495 The new value is `not_lval'. */
3496
3497struct value *
3498value_from_contents (struct type *type, const gdb_byte *contents)
3499{
3500 struct value *result;
3501
3502 result = allocate_value (type);
3503 memcpy (value_contents_raw (result), contents, TYPE_LENGTH (type));
3504 return result;
3505}
3506
3bd0f5ef
MS
3507/* Extract a value from the history file. Input will be of the form
3508 $digits or $$digits. See block comment above 'write_dollar_variable'
3509 for details. */
3510
3511struct value *
e799154c 3512value_from_history_ref (const char *h, const char **endp)
3bd0f5ef
MS
3513{
3514 int index, len;
3515
3516 if (h[0] == '$')
3517 len = 1;
3518 else
3519 return NULL;
3520
3521 if (h[1] == '$')
3522 len = 2;
3523
3524 /* Find length of numeral string. */
3525 for (; isdigit (h[len]); len++)
3526 ;
3527
3528 /* Make sure numeral string is not part of an identifier. */
3529 if (h[len] == '_' || isalpha (h[len]))
3530 return NULL;
3531
3532 /* Now collect the index value. */
3533 if (h[1] == '$')
3534 {
3535 if (len == 2)
3536 {
3537 /* For some bizarre reason, "$$" is equivalent to "$$1",
3538 rather than to "$$0" as it ought to be! */
3539 index = -1;
3540 *endp += len;
3541 }
3542 else
e799154c
TT
3543 {
3544 char *local_end;
3545
3546 index = -strtol (&h[2], &local_end, 10);
3547 *endp = local_end;
3548 }
3bd0f5ef
MS
3549 }
3550 else
3551 {
3552 if (len == 1)
3553 {
3554 /* "$" is equivalent to "$0". */
3555 index = 0;
3556 *endp += len;
3557 }
3558 else
e799154c
TT
3559 {
3560 char *local_end;
3561
3562 index = strtol (&h[1], &local_end, 10);
3563 *endp = local_end;
3564 }
3bd0f5ef
MS
3565 }
3566
3567 return access_value_history (index);
3568}
3569
3fff9862
YQ
3570/* Get the component value (offset by OFFSET bytes) of a struct or
3571 union WHOLE. Component's type is TYPE. */
3572
3573struct value *
3574value_from_component (struct value *whole, struct type *type, LONGEST offset)
3575{
3576 struct value *v;
3577
3578 if (VALUE_LVAL (whole) == lval_memory && value_lazy (whole))
3579 v = allocate_value_lazy (type);
3580 else
3581 {
3582 v = allocate_value (type);
3583 value_contents_copy (v, value_embedded_offset (v),
3584 whole, value_embedded_offset (whole) + offset,
3585 type_length_units (type));
3586 }
3587 v->offset = value_offset (whole) + offset + value_embedded_offset (whole);
3588 set_value_component_location (v, whole);
3fff9862
YQ
3589
3590 return v;
3591}
3592
a471c594
JK
3593struct value *
3594coerce_ref_if_computed (const struct value *arg)
3595{
3596 const struct lval_funcs *funcs;
3597
aa006118 3598 if (!TYPE_IS_REFERENCE (check_typedef (value_type (arg))))
a471c594
JK
3599 return NULL;
3600
3601 if (value_lval_const (arg) != lval_computed)
3602 return NULL;
3603
3604 funcs = value_computed_funcs (arg);
3605 if (funcs->coerce_ref == NULL)
3606 return NULL;
3607
3608 return funcs->coerce_ref (arg);
3609}
3610
dfcee124
AG
3611/* Look at value.h for description. */
3612
3613struct value *
3614readjust_indirect_value_type (struct value *value, struct type *enc_type,
4bf7b526
MG
3615 const struct type *original_type,
3616 const struct value *original_value)
dfcee124
AG
3617{
3618 /* Re-adjust type. */
3619 deprecated_set_value_type (value, TYPE_TARGET_TYPE (original_type));
3620
3621 /* Add embedding info. */
3622 set_value_enclosing_type (value, enc_type);
3623 set_value_embedded_offset (value, value_pointed_to_offset (original_value));
3624
3625 /* We may be pointing to an object of some derived type. */
3626 return value_full_object (value, NULL, 0, 0, 0);
3627}
3628
994b9211
AC
3629struct value *
3630coerce_ref (struct value *arg)
3631{
df407dfe 3632 struct type *value_type_arg_tmp = check_typedef (value_type (arg));
a471c594 3633 struct value *retval;
dfcee124 3634 struct type *enc_type;
a109c7c1 3635
a471c594
JK
3636 retval = coerce_ref_if_computed (arg);
3637 if (retval)
3638 return retval;
3639
aa006118 3640 if (!TYPE_IS_REFERENCE (value_type_arg_tmp))
a471c594
JK
3641 return arg;
3642
dfcee124
AG
3643 enc_type = check_typedef (value_enclosing_type (arg));
3644 enc_type = TYPE_TARGET_TYPE (enc_type);
3645
3646 retval = value_at_lazy (enc_type,
3647 unpack_pointer (value_type (arg),
3648 value_contents (arg)));
9f1f738a 3649 enc_type = value_type (retval);
dfcee124
AG
3650 return readjust_indirect_value_type (retval, enc_type,
3651 value_type_arg_tmp, arg);
994b9211
AC
3652}
3653
3654struct value *
3655coerce_array (struct value *arg)
3656{
f3134b88
TT
3657 struct type *type;
3658
994b9211 3659 arg = coerce_ref (arg);
f3134b88
TT
3660 type = check_typedef (value_type (arg));
3661
3662 switch (TYPE_CODE (type))
3663 {
3664 case TYPE_CODE_ARRAY:
7346b668 3665 if (!TYPE_VECTOR (type) && current_language->c_style_arrays)
f3134b88
TT
3666 arg = value_coerce_array (arg);
3667 break;
3668 case TYPE_CODE_FUNC:
3669 arg = value_coerce_function (arg);
3670 break;
3671 }
994b9211
AC
3672 return arg;
3673}
c906108c 3674\f
c906108c 3675
bbfdfe1c
DM
3676/* Return the return value convention that will be used for the
3677 specified type. */
3678
3679enum return_value_convention
3680struct_return_convention (struct gdbarch *gdbarch,
3681 struct value *function, struct type *value_type)
3682{
3683 enum type_code code = TYPE_CODE (value_type);
3684
3685 if (code == TYPE_CODE_ERROR)
3686 error (_("Function return type unknown."));
3687
3688 /* Probe the architecture for the return-value convention. */
3689 return gdbarch_return_value (gdbarch, function, value_type,
3690 NULL, NULL, NULL);
3691}
3692
48436ce6
AC
3693/* Return true if the function returning the specified type is using
3694 the convention of returning structures in memory (passing in the
82585c72 3695 address as a hidden first parameter). */
c906108c
SS
3696
3697int
d80b854b 3698using_struct_return (struct gdbarch *gdbarch,
6a3a010b 3699 struct value *function, struct type *value_type)
c906108c 3700{
bbfdfe1c 3701 if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
667e784f 3702 /* A void return value is never in memory. See also corresponding
44e5158b 3703 code in "print_return_value". */
667e784f
AC
3704 return 0;
3705
bbfdfe1c 3706 return (struct_return_convention (gdbarch, function, value_type)
31db7b6c 3707 != RETURN_VALUE_REGISTER_CONVENTION);
c906108c
SS
3708}
3709
42be36b3
CT
3710/* Set the initialized field in a value struct. */
3711
3712void
3713set_value_initialized (struct value *val, int status)
3714{
3715 val->initialized = status;
3716}
3717
3718/* Return the initialized field in a value struct. */
3719
3720int
4bf7b526 3721value_initialized (const struct value *val)
42be36b3
CT
3722{
3723 return val->initialized;
3724}
3725
a844296a
SM
3726/* Load the actual content of a lazy value. Fetch the data from the
3727 user's process and clear the lazy flag to indicate that the data in
3728 the buffer is valid.
a58e2656
AB
3729
3730 If the value is zero-length, we avoid calling read_memory, which
3731 would abort. We mark the value as fetched anyway -- all 0 bytes of
a844296a 3732 it. */
a58e2656 3733
a844296a 3734void
a58e2656
AB
3735value_fetch_lazy (struct value *val)
3736{
3737 gdb_assert (value_lazy (val));
3738 allocate_value_contents (val);
9a0dc9e3
PA
3739 /* A value is either lazy, or fully fetched. The
3740 availability/validity is only established as we try to fetch a
3741 value. */
3742 gdb_assert (VEC_empty (range_s, val->optimized_out));
3743 gdb_assert (VEC_empty (range_s, val->unavailable));
a58e2656
AB
3744 if (value_bitsize (val))
3745 {
3746 /* To read a lazy bitfield, read the entire enclosing value. This
3747 prevents reading the same block of (possibly volatile) memory once
3748 per bitfield. It would be even better to read only the containing
3749 word, but we have no way to record that just specific bits of a
3750 value have been fetched. */
3751 struct type *type = check_typedef (value_type (val));
a58e2656 3752 struct value *parent = value_parent (val);
a58e2656 3753
b0c54aa5
AB
3754 if (value_lazy (parent))
3755 value_fetch_lazy (parent);
3756
4875ffdb
PA
3757 unpack_value_bitfield (val,
3758 value_bitpos (val), value_bitsize (val),
3759 value_contents_for_printing (parent),
3760 value_offset (val), parent);
a58e2656
AB
3761 }
3762 else if (VALUE_LVAL (val) == lval_memory)
3763 {
3764 CORE_ADDR addr = value_address (val);
3765 struct type *type = check_typedef (value_enclosing_type (val));
3766
3767 if (TYPE_LENGTH (type))
3768 read_value_memory (val, 0, value_stack (val),
3769 addr, value_contents_all_raw (val),
3ae385af 3770 type_length_units (type));
a58e2656
AB
3771 }
3772 else if (VALUE_LVAL (val) == lval_register)
3773 {
41b56feb 3774 struct frame_info *next_frame;
a58e2656
AB
3775 int regnum;
3776 struct type *type = check_typedef (value_type (val));
3777 struct value *new_val = val, *mark = value_mark ();
3778
3779 /* Offsets are not supported here; lazy register values must
3780 refer to the entire register. */
3781 gdb_assert (value_offset (val) == 0);
3782
3783 while (VALUE_LVAL (new_val) == lval_register && value_lazy (new_val))
3784 {
41b56feb 3785 struct frame_id next_frame_id = VALUE_NEXT_FRAME_ID (new_val);
6eeee81c 3786
41b56feb 3787 next_frame = frame_find_by_id (next_frame_id);
a58e2656
AB
3788 regnum = VALUE_REGNUM (new_val);
3789
41b56feb 3790 gdb_assert (next_frame != NULL);
a58e2656
AB
3791
3792 /* Convertible register routines are used for multi-register
3793 values and for interpretation in different types
3794 (e.g. float or int from a double register). Lazy
3795 register values should have the register's natural type,
3796 so they do not apply. */
41b56feb 3797 gdb_assert (!gdbarch_convert_register_p (get_frame_arch (next_frame),
a58e2656
AB
3798 regnum, type));
3799
41b56feb
KB
3800 /* FRAME was obtained, above, via VALUE_NEXT_FRAME_ID.
3801 Since a "->next" operation was performed when setting
3802 this field, we do not need to perform a "next" operation
3803 again when unwinding the register. That's why
3804 frame_unwind_register_value() is called here instead of
3805 get_frame_register_value(). */
3806 new_val = frame_unwind_register_value (next_frame, regnum);
6eeee81c
TT
3807
3808 /* If we get another lazy lval_register value, it means the
41b56feb
KB
3809 register is found by reading it from NEXT_FRAME's next frame.
3810 frame_unwind_register_value should never return a value with
3811 the frame id pointing to NEXT_FRAME. If it does, it means we
6eeee81c
TT
3812 either have two consecutive frames with the same frame id
3813 in the frame chain, or some code is trying to unwind
3814 behind get_prev_frame's back (e.g., a frame unwind
3815 sniffer trying to unwind), bypassing its validations. In
3816 any case, it should always be an internal error to end up
3817 in this situation. */
3818 if (VALUE_LVAL (new_val) == lval_register
3819 && value_lazy (new_val)
41b56feb 3820 && frame_id_eq (VALUE_NEXT_FRAME_ID (new_val), next_frame_id))
6eeee81c
TT
3821 internal_error (__FILE__, __LINE__,
3822 _("infinite loop while fetching a register"));
a58e2656
AB
3823 }
3824
3825 /* If it's still lazy (for instance, a saved register on the
3826 stack), fetch it. */
3827 if (value_lazy (new_val))
3828 value_fetch_lazy (new_val);
3829
9a0dc9e3
PA
3830 /* Copy the contents and the unavailability/optimized-out
3831 meta-data from NEW_VAL to VAL. */
3832 set_value_lazy (val, 0);
3833 value_contents_copy (val, value_embedded_offset (val),
3834 new_val, value_embedded_offset (new_val),
3ae385af 3835 type_length_units (type));
a58e2656
AB
3836
3837 if (frame_debug)
3838 {
3839 struct gdbarch *gdbarch;
41b56feb
KB
3840 struct frame_info *frame;
3841 /* VALUE_FRAME_ID is used here, instead of VALUE_NEXT_FRAME_ID,
3842 so that the frame level will be shown correctly. */
a58e2656
AB
3843 frame = frame_find_by_id (VALUE_FRAME_ID (val));
3844 regnum = VALUE_REGNUM (val);
3845 gdbarch = get_frame_arch (frame);
3846
3847 fprintf_unfiltered (gdb_stdlog,
3848 "{ value_fetch_lazy "
3849 "(frame=%d,regnum=%d(%s),...) ",
3850 frame_relative_level (frame), regnum,
3851 user_reg_map_regnum_to_name (gdbarch, regnum));
3852
3853 fprintf_unfiltered (gdb_stdlog, "->");
3854 if (value_optimized_out (new_val))
f6c01fc5
AB
3855 {
3856 fprintf_unfiltered (gdb_stdlog, " ");
3857 val_print_optimized_out (new_val, gdb_stdlog);
3858 }
a58e2656
AB
3859 else
3860 {
3861 int i;
3862 const gdb_byte *buf = value_contents (new_val);
3863
3864 if (VALUE_LVAL (new_val) == lval_register)
3865 fprintf_unfiltered (gdb_stdlog, " register=%d",
3866 VALUE_REGNUM (new_val));
3867 else if (VALUE_LVAL (new_val) == lval_memory)
3868 fprintf_unfiltered (gdb_stdlog, " address=%s",
3869 paddress (gdbarch,
3870 value_address (new_val)));
3871 else
3872 fprintf_unfiltered (gdb_stdlog, " computed");
3873
3874 fprintf_unfiltered (gdb_stdlog, " bytes=");
3875 fprintf_unfiltered (gdb_stdlog, "[");
3876 for (i = 0; i < register_size (gdbarch, regnum); i++)
3877 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3878 fprintf_unfiltered (gdb_stdlog, "]");
3879 }
3880
3881 fprintf_unfiltered (gdb_stdlog, " }\n");
3882 }
3883
3884 /* Dispose of the intermediate values. This prevents
3885 watchpoints from trying to watch the saved frame pointer. */
3886 value_free_to_mark (mark);
3887 }
3888 else if (VALUE_LVAL (val) == lval_computed
3889 && value_computed_funcs (val)->read != NULL)
3890 value_computed_funcs (val)->read (val);
a58e2656
AB
3891 else
3892 internal_error (__FILE__, __LINE__, _("Unexpected lazy value type."));
3893
3894 set_value_lazy (val, 0);
a58e2656
AB
3895}
3896
a280dbd1
SDJ
3897/* Implementation of the convenience function $_isvoid. */
3898
3899static struct value *
3900isvoid_internal_fn (struct gdbarch *gdbarch,
3901 const struct language_defn *language,
3902 void *cookie, int argc, struct value **argv)
3903{
3904 int ret;
3905
3906 if (argc != 1)
6bc305f5 3907 error (_("You must provide one argument for $_isvoid."));
a280dbd1
SDJ
3908
3909 ret = TYPE_CODE (value_type (argv[0])) == TYPE_CODE_VOID;
3910
3911 return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
3912}
3913
c906108c 3914void
fba45db2 3915_initialize_values (void)
c906108c 3916{
1a966eab 3917 add_cmd ("convenience", no_class, show_convenience, _("\
f47f77df
DE
3918Debugger convenience (\"$foo\") variables and functions.\n\
3919Convenience variables are created when you assign them values;\n\
3920thus, \"set $foo=1\" gives \"$foo\" the value 1. Values may be any type.\n\
1a966eab 3921\n\
c906108c
SS
3922A few convenience variables are given values automatically:\n\
3923\"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
f47f77df
DE
3924\"$__\" holds the contents of the last address examined with \"x\"."
3925#ifdef HAVE_PYTHON
3926"\n\n\
3927Convenience functions are defined via the Python API."
3928#endif
3929 ), &showlist);
7e20dfcd 3930 add_alias_cmd ("conv", "convenience", no_class, 1, &showlist);
c906108c 3931
db5f229b 3932 add_cmd ("values", no_set_class, show_values, _("\
3e43a32a 3933Elements of value history around item number IDX (or last ten)."),
c906108c 3934 &showlist);
53e5f3cf
AS
3935
3936 add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\
3937Initialize a convenience variable if necessary.\n\
3938init-if-undefined VARIABLE = EXPRESSION\n\
3939Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\
3940exist or does not contain a value. The EXPRESSION is not evaluated if the\n\
3941VARIABLE is already initialized."));
bc3b79fd
TJB
3942
3943 add_prefix_cmd ("function", no_class, function_command, _("\
3944Placeholder command for showing help on convenience functions."),
3945 &functionlist, "function ", 0, &cmdlist);
a280dbd1
SDJ
3946
3947 add_internal_function ("_isvoid", _("\
3948Check whether an expression is void.\n\
3949Usage: $_isvoid (expression)\n\
3950Return 1 if the expression is void, zero otherwise."),
3951 isvoid_internal_fn, NULL);
5fdf6324
AB
3952
3953 add_setshow_zuinteger_unlimited_cmd ("max-value-size",
3954 class_support, &max_value_size, _("\
3955Set maximum sized value gdb will load from the inferior."), _("\
3956Show maximum sized value gdb will load from the inferior."), _("\
3957Use this to control the maximum size, in bytes, of a value that gdb\n\
3958will load from the inferior. Setting this value to 'unlimited'\n\
3959disables checking.\n\
3960Setting this does not invalidate already allocated values, it only\n\
3961prevents future values, larger than this size, from being allocated."),
3962 set_max_value_size,
3963 show_max_value_size,
3964 &setlist, &showlist);
c906108c 3965}