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