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