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