Update copyright year in version of output (gdb/gdbserver/gdbreplay)
[deliverable/binutils-gdb.git] / gdb / value.c
CommitLineData
c906108c 1/* Low level packing and unpacking of values for GDB, the GNU Debugger.
1bac305b 2
6aba47ca 3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
0fb0cc75 4 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4c38e0a4 5 2009, 2010 Free Software Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22#include "defs.h"
e17c207e 23#include "arch-utils.h"
c906108c
SS
24#include "gdb_string.h"
25#include "symtab.h"
26#include "gdbtypes.h"
27#include "value.h"
28#include "gdbcore.h"
c906108c
SS
29#include "command.h"
30#include "gdbcmd.h"
31#include "target.h"
32#include "language.h"
c906108c 33#include "demangle.h"
d16aafd8 34#include "doublest.h"
5ae326fa 35#include "gdb_assert.h"
36160dc4 36#include "regcache.h"
fe898f56 37#include "block.h"
27bc4d80 38#include "dfp.h"
bccdca4a 39#include "objfiles.h"
79a45b7d 40#include "valprint.h"
bc3b79fd 41#include "cli/cli-decode.h"
c906108c 42
a08702d6
TJB
43#include "python/python.h"
44
0914bcdb
SS
45#include "tracepoint.h"
46
c906108c
SS
47/* Prototypes for exported functions. */
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
66static struct cmd_list_element *functionlist;
67
91294c83
AC
68struct value
69{
70 /* Type of value; either not an lval, or one of the various
71 different possible kinds of lval. */
72 enum lval_type lval;
73
74 /* Is it modifiable? Only relevant if lval != not_lval. */
75 int modifiable;
76
77 /* Location of value (if lval). */
78 union
79 {
80 /* If lval == lval_memory, this is the address in the inferior.
81 If lval == lval_register, this is the byte offset into the
82 registers structure. */
83 CORE_ADDR address;
84
85 /* Pointer to internal variable. */
86 struct internalvar *internalvar;
5f5233d4
PA
87
88 /* If lval == lval_computed, this is a set of function pointers
89 to use to access and describe the value, and a closure pointer
90 for them to use. */
91 struct
92 {
93 struct lval_funcs *funcs; /* Functions to call. */
94 void *closure; /* Closure for those functions to use. */
95 } computed;
91294c83
AC
96 } location;
97
98 /* Describes offset of a value within lval of a structure in bytes.
99 If lval == lval_memory, this is an offset to the address. If
100 lval == lval_register, this is a further offset from
101 location.address within the registers structure. Note also the
102 member embedded_offset below. */
103 int offset;
104
105 /* Only used for bitfields; number of bits contained in them. */
106 int bitsize;
107
108 /* Only used for bitfields; position of start of field. For
32c9a795
MD
109 gdbarch_bits_big_endian=0 targets, it is the position of the LSB. For
110 gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */
91294c83
AC
111 int bitpos;
112
4ea48cc1
DJ
113 /* Only used for bitfields; the containing value. This allows a
114 single read from the target when displaying multiple
115 bitfields. */
116 struct value *parent;
117
91294c83
AC
118 /* Frame register value is relative to. This will be described in
119 the lval enum above as "lval_register". */
120 struct frame_id frame_id;
121
122 /* Type of the value. */
123 struct type *type;
124
125 /* If a value represents a C++ object, then the `type' field gives
126 the object's compile-time type. If the object actually belongs
127 to some class derived from `type', perhaps with other base
128 classes and additional members, then `type' is just a subobject
129 of the real thing, and the full object is probably larger than
130 `type' would suggest.
131
132 If `type' is a dynamic class (i.e. one with a vtable), then GDB
133 can actually determine the object's run-time type by looking at
134 the run-time type information in the vtable. When this
135 information is available, we may elect to read in the entire
136 object, for several reasons:
137
138 - When printing the value, the user would probably rather see the
139 full object, not just the limited portion apparent from the
140 compile-time type.
141
142 - If `type' has virtual base classes, then even printing `type'
143 alone may require reaching outside the `type' portion of the
144 object to wherever the virtual base class has been stored.
145
146 When we store the entire object, `enclosing_type' is the run-time
147 type -- the complete object -- and `embedded_offset' is the
148 offset of `type' within that larger type, in bytes. The
149 value_contents() macro takes `embedded_offset' into account, so
150 most GDB code continues to see the `type' portion of the value,
151 just as the inferior would.
152
153 If `type' is a pointer to an object, then `enclosing_type' is a
154 pointer to the object's run-time type, and `pointed_to_offset' is
155 the offset in bytes from the full object to the pointed-to object
156 -- that is, the value `embedded_offset' would have if we followed
157 the pointer and fetched the complete object. (I don't really see
158 the point. Why not just determine the run-time type when you
159 indirect, and avoid the special case? The contents don't matter
160 until you indirect anyway.)
161
162 If we're not doing anything fancy, `enclosing_type' is equal to
163 `type', and `embedded_offset' is zero, so everything works
164 normally. */
165 struct type *enclosing_type;
166 int embedded_offset;
167 int pointed_to_offset;
168
169 /* Values are stored in a chain, so that they can be deleted easily
170 over calls to the inferior. Values assigned to internal
a08702d6
TJB
171 variables, put into the value history or exposed to Python are
172 taken off this list. */
91294c83
AC
173 struct value *next;
174
175 /* Register number if the value is from a register. */
176 short regnum;
177
178 /* If zero, contents of this value are in the contents field. If
9214ee5f
DJ
179 nonzero, contents are in inferior. If the lval field is lval_memory,
180 the contents are in inferior memory at location.address plus offset.
181 The lval field may also be lval_register.
91294c83
AC
182
183 WARNING: This field is used by the code which handles watchpoints
184 (see breakpoint.c) to decide whether a particular value can be
185 watched by hardware watchpoints. If the lazy flag is set for
186 some member of a value chain, it is assumed that this member of
187 the chain doesn't need to be watched as part of watching the
188 value itself. This is how GDB avoids watching the entire struct
189 or array when the user wants to watch a single struct member or
190 array element. If you ever change the way lazy flag is set and
191 reset, be sure to consider this use as well! */
192 char lazy;
193
194 /* If nonzero, this is the value of a variable which does not
195 actually exist in the program. */
196 char optimized_out;
197
42be36b3
CT
198 /* If value is a variable, is it initialized or not. */
199 int initialized;
200
4e5d721f
DE
201 /* If value is from the stack. If this is set, read_stack will be
202 used instead of read_memory to enable extra caching. */
203 int stack;
204
3e3d7139
JG
205 /* Actual contents of the value. Target byte-order. NULL or not
206 valid if lazy is nonzero. */
207 gdb_byte *contents;
828d3400
DJ
208
209 /* The number of references to this value. When a value is created,
210 the value chain holds a reference, so REFERENCE_COUNT is 1. If
211 release_value is called, this value is removed from the chain but
212 the caller of release_value now has a reference to this value.
213 The caller must arrange for a call to value_free later. */
214 int reference_count;
91294c83
AC
215};
216
c906108c
SS
217/* Prototypes for local functions. */
218
a14ed312 219static void show_values (char *, int);
c906108c 220
a14ed312 221static void show_convenience (char *, int);
c906108c 222
c906108c
SS
223
224/* The value-history records all the values printed
225 by print commands during this session. Each chunk
226 records 60 consecutive values. The first chunk on
227 the chain records the most recent values.
228 The total number of values is in value_history_count. */
229
230#define VALUE_HISTORY_CHUNK 60
231
232struct value_history_chunk
c5aa993b
JM
233 {
234 struct value_history_chunk *next;
f23631e4 235 struct value *values[VALUE_HISTORY_CHUNK];
c5aa993b 236 };
c906108c
SS
237
238/* Chain of chunks now in use. */
239
240static struct value_history_chunk *value_history_chain;
241
242static int value_history_count; /* Abs number of last entry stored */
bc3b79fd 243
c906108c
SS
244\f
245/* List of all value objects currently allocated
246 (except for those released by calls to release_value)
247 This is so they can be freed after each command. */
248
f23631e4 249static struct value *all_values;
c906108c 250
3e3d7139
JG
251/* Allocate a lazy value for type TYPE. Its actual content is
252 "lazily" allocated too: the content field of the return value is
253 NULL; it will be allocated when it is fetched from the target. */
c906108c 254
f23631e4 255struct value *
3e3d7139 256allocate_value_lazy (struct type *type)
c906108c 257{
f23631e4 258 struct value *val;
c54eabfa
JK
259
260 /* Call check_typedef on our type to make sure that, if TYPE
261 is a TYPE_CODE_TYPEDEF, its length is set to the length
262 of the target type instead of zero. However, we do not
263 replace the typedef type by the target type, because we want
264 to keep the typedef in order to be able to set the VAL's type
265 description correctly. */
266 check_typedef (type);
c906108c 267
3e3d7139
JG
268 val = (struct value *) xzalloc (sizeof (struct value));
269 val->contents = NULL;
df407dfe 270 val->next = all_values;
c906108c 271 all_values = val;
df407dfe 272 val->type = type;
4754a64e 273 val->enclosing_type = type;
c906108c 274 VALUE_LVAL (val) = not_lval;
42ae5230 275 val->location.address = 0;
1df6926e 276 VALUE_FRAME_ID (val) = null_frame_id;
df407dfe
AC
277 val->offset = 0;
278 val->bitpos = 0;
279 val->bitsize = 0;
9ee8fc9d 280 VALUE_REGNUM (val) = -1;
3e3d7139 281 val->lazy = 1;
feb13ab0 282 val->optimized_out = 0;
13c3b5f5 283 val->embedded_offset = 0;
b44d461b 284 val->pointed_to_offset = 0;
c906108c 285 val->modifiable = 1;
42be36b3 286 val->initialized = 1; /* Default to initialized. */
828d3400
DJ
287
288 /* Values start out on the all_values chain. */
289 val->reference_count = 1;
290
c906108c
SS
291 return val;
292}
293
3e3d7139
JG
294/* Allocate the contents of VAL if it has not been allocated yet. */
295
296void
297allocate_value_contents (struct value *val)
298{
299 if (!val->contents)
300 val->contents = (gdb_byte *) xzalloc (TYPE_LENGTH (val->enclosing_type));
301}
302
303/* Allocate a value and its contents for type TYPE. */
304
305struct value *
306allocate_value (struct type *type)
307{
308 struct value *val = allocate_value_lazy (type);
a109c7c1 309
3e3d7139
JG
310 allocate_value_contents (val);
311 val->lazy = 0;
312 return val;
313}
314
c906108c 315/* Allocate a value that has the correct length
938f5214 316 for COUNT repetitions of type TYPE. */
c906108c 317
f23631e4 318struct value *
fba45db2 319allocate_repeat_value (struct type *type, int count)
c906108c 320{
c5aa993b 321 int low_bound = current_language->string_lower_bound; /* ??? */
c906108c
SS
322 /* FIXME-type-allocation: need a way to free this type when we are
323 done with it. */
e3506a9f
UW
324 struct type *array_type
325 = lookup_array_range_type (type, low_bound, count + low_bound - 1);
a109c7c1 326
e3506a9f 327 return allocate_value (array_type);
c906108c
SS
328}
329
5f5233d4
PA
330struct value *
331allocate_computed_value (struct type *type,
332 struct lval_funcs *funcs,
333 void *closure)
334{
335 struct value *v = allocate_value (type);
a109c7c1 336
5f5233d4
PA
337 VALUE_LVAL (v) = lval_computed;
338 v->location.computed.funcs = funcs;
339 v->location.computed.closure = closure;
340 set_value_lazy (v, 1);
341
342 return v;
343}
344
df407dfe
AC
345/* Accessor methods. */
346
17cf0ecd
AC
347struct value *
348value_next (struct value *value)
349{
350 return value->next;
351}
352
df407dfe 353struct type *
0e03807e 354value_type (const struct value *value)
df407dfe
AC
355{
356 return value->type;
357}
04624583
AC
358void
359deprecated_set_value_type (struct value *value, struct type *type)
360{
361 value->type = type;
362}
df407dfe
AC
363
364int
0e03807e 365value_offset (const struct value *value)
df407dfe
AC
366{
367 return value->offset;
368}
f5cf64a7
AC
369void
370set_value_offset (struct value *value, int offset)
371{
372 value->offset = offset;
373}
df407dfe
AC
374
375int
0e03807e 376value_bitpos (const struct value *value)
df407dfe
AC
377{
378 return value->bitpos;
379}
9bbda503
AC
380void
381set_value_bitpos (struct value *value, int bit)
382{
383 value->bitpos = bit;
384}
df407dfe
AC
385
386int
0e03807e 387value_bitsize (const struct value *value)
df407dfe
AC
388{
389 return value->bitsize;
390}
9bbda503
AC
391void
392set_value_bitsize (struct value *value, int bit)
393{
394 value->bitsize = bit;
395}
df407dfe 396
4ea48cc1
DJ
397struct value *
398value_parent (struct value *value)
399{
400 return value->parent;
401}
402
fc1a4b47 403gdb_byte *
990a07ab
AC
404value_contents_raw (struct value *value)
405{
3e3d7139
JG
406 allocate_value_contents (value);
407 return value->contents + value->embedded_offset;
990a07ab
AC
408}
409
fc1a4b47 410gdb_byte *
990a07ab
AC
411value_contents_all_raw (struct value *value)
412{
3e3d7139
JG
413 allocate_value_contents (value);
414 return value->contents;
990a07ab
AC
415}
416
4754a64e
AC
417struct type *
418value_enclosing_type (struct value *value)
419{
420 return value->enclosing_type;
421}
422
0e03807e
TT
423static void
424require_not_optimized_out (struct value *value)
425{
426 if (value->optimized_out)
427 error (_("value has been optimized out"));
428}
429
fc1a4b47 430const gdb_byte *
0e03807e 431value_contents_for_printing (struct value *value)
46615f07
AC
432{
433 if (value->lazy)
434 value_fetch_lazy (value);
3e3d7139 435 return value->contents;
46615f07
AC
436}
437
0e03807e
TT
438const gdb_byte *
439value_contents_all (struct value *value)
440{
441 const gdb_byte *result = value_contents_for_printing (value);
442 require_not_optimized_out (value);
443 return result;
444}
445
d69fe07e
AC
446int
447value_lazy (struct value *value)
448{
449 return value->lazy;
450}
451
dfa52d88
AC
452void
453set_value_lazy (struct value *value, int val)
454{
455 value->lazy = val;
456}
457
4e5d721f
DE
458int
459value_stack (struct value *value)
460{
461 return value->stack;
462}
463
464void
465set_value_stack (struct value *value, int val)
466{
467 value->stack = val;
468}
469
fc1a4b47 470const gdb_byte *
0fd88904
AC
471value_contents (struct value *value)
472{
0e03807e
TT
473 const gdb_byte *result = value_contents_writeable (value);
474 require_not_optimized_out (value);
475 return result;
0fd88904
AC
476}
477
fc1a4b47 478gdb_byte *
0fd88904
AC
479value_contents_writeable (struct value *value)
480{
481 if (value->lazy)
482 value_fetch_lazy (value);
fc0c53a0 483 return value_contents_raw (value);
0fd88904
AC
484}
485
a6c442d8
MK
486/* Return non-zero if VAL1 and VAL2 have the same contents. Note that
487 this function is different from value_equal; in C the operator ==
488 can return 0 even if the two values being compared are equal. */
489
490int
491value_contents_equal (struct value *val1, struct value *val2)
492{
493 struct type *type1;
494 struct type *type2;
495 int len;
496
497 type1 = check_typedef (value_type (val1));
498 type2 = check_typedef (value_type (val2));
499 len = TYPE_LENGTH (type1);
500 if (len != TYPE_LENGTH (type2))
501 return 0;
502
503 return (memcmp (value_contents (val1), value_contents (val2), len) == 0);
504}
505
feb13ab0
AC
506int
507value_optimized_out (struct value *value)
508{
509 return value->optimized_out;
510}
511
512void
513set_value_optimized_out (struct value *value, int val)
514{
515 value->optimized_out = val;
516}
13c3b5f5 517
0e03807e
TT
518int
519value_entirely_optimized_out (const struct value *value)
520{
521 if (!value->optimized_out)
522 return 0;
523 if (value->lval != lval_computed
ba19bb4d 524 || !value->location.computed.funcs->check_any_valid)
0e03807e 525 return 1;
b65c7efe 526 return !value->location.computed.funcs->check_any_valid (value);
0e03807e
TT
527}
528
529int
530value_bits_valid (const struct value *value, int offset, int length)
531{
532 if (value == NULL || !value->optimized_out)
533 return 1;
534 if (value->lval != lval_computed
535 || !value->location.computed.funcs->check_validity)
536 return 0;
537 return value->location.computed.funcs->check_validity (value, offset,
538 length);
539}
540
8cf6f0b1
TT
541int
542value_bits_synthetic_pointer (const struct value *value,
543 int offset, int length)
544{
545 if (value == NULL || value->lval != lval_computed
546 || !value->location.computed.funcs->check_synthetic_pointer)
547 return 0;
548 return value->location.computed.funcs->check_synthetic_pointer (value,
549 offset,
550 length);
551}
552
13c3b5f5
AC
553int
554value_embedded_offset (struct value *value)
555{
556 return value->embedded_offset;
557}
558
559void
560set_value_embedded_offset (struct value *value, int val)
561{
562 value->embedded_offset = val;
563}
b44d461b
AC
564
565int
566value_pointed_to_offset (struct value *value)
567{
568 return value->pointed_to_offset;
569}
570
571void
572set_value_pointed_to_offset (struct value *value, int val)
573{
574 value->pointed_to_offset = val;
575}
13bb5560 576
5f5233d4
PA
577struct lval_funcs *
578value_computed_funcs (struct value *v)
579{
580 gdb_assert (VALUE_LVAL (v) == lval_computed);
581
582 return v->location.computed.funcs;
583}
584
585void *
0e03807e 586value_computed_closure (const struct value *v)
5f5233d4 587{
0e03807e 588 gdb_assert (v->lval == lval_computed);
5f5233d4
PA
589
590 return v->location.computed.closure;
591}
592
13bb5560
AC
593enum lval_type *
594deprecated_value_lval_hack (struct value *value)
595{
596 return &value->lval;
597}
598
42ae5230
TT
599CORE_ADDR
600value_address (struct value *value)
601{
602 if (value->lval == lval_internalvar
603 || value->lval == lval_internalvar_component)
604 return 0;
605 return value->location.address + value->offset;
606}
607
608CORE_ADDR
609value_raw_address (struct value *value)
610{
611 if (value->lval == lval_internalvar
612 || value->lval == lval_internalvar_component)
613 return 0;
614 return value->location.address;
615}
616
617void
618set_value_address (struct value *value, CORE_ADDR addr)
13bb5560 619{
42ae5230
TT
620 gdb_assert (value->lval != lval_internalvar
621 && value->lval != lval_internalvar_component);
622 value->location.address = addr;
13bb5560
AC
623}
624
625struct internalvar **
626deprecated_value_internalvar_hack (struct value *value)
627{
628 return &value->location.internalvar;
629}
630
631struct frame_id *
632deprecated_value_frame_id_hack (struct value *value)
633{
634 return &value->frame_id;
635}
636
637short *
638deprecated_value_regnum_hack (struct value *value)
639{
640 return &value->regnum;
641}
88e3b34b
AC
642
643int
644deprecated_value_modifiable (struct value *value)
645{
646 return value->modifiable;
647}
648void
649deprecated_set_value_modifiable (struct value *value, int modifiable)
650{
651 value->modifiable = modifiable;
652}
990a07ab 653\f
c906108c
SS
654/* Return a mark in the value chain. All values allocated after the
655 mark is obtained (except for those released) are subject to being freed
656 if a subsequent value_free_to_mark is passed the mark. */
f23631e4 657struct value *
fba45db2 658value_mark (void)
c906108c
SS
659{
660 return all_values;
661}
662
828d3400
DJ
663/* Take a reference to VAL. VAL will not be deallocated until all
664 references are released. */
665
666void
667value_incref (struct value *val)
668{
669 val->reference_count++;
670}
671
672/* Release a reference to VAL, which was acquired with value_incref.
673 This function is also called to deallocate values from the value
674 chain. */
675
3e3d7139
JG
676void
677value_free (struct value *val)
678{
679 if (val)
5f5233d4 680 {
828d3400
DJ
681 gdb_assert (val->reference_count > 0);
682 val->reference_count--;
683 if (val->reference_count > 0)
684 return;
685
4ea48cc1
DJ
686 /* If there's an associated parent value, drop our reference to
687 it. */
688 if (val->parent != NULL)
689 value_free (val->parent);
690
5f5233d4
PA
691 if (VALUE_LVAL (val) == lval_computed)
692 {
693 struct lval_funcs *funcs = val->location.computed.funcs;
694
695 if (funcs->free_closure)
696 funcs->free_closure (val);
697 }
698
699 xfree (val->contents);
700 }
3e3d7139
JG
701 xfree (val);
702}
703
c906108c
SS
704/* Free all values allocated since MARK was obtained by value_mark
705 (except for those released). */
706void
f23631e4 707value_free_to_mark (struct value *mark)
c906108c 708{
f23631e4
AC
709 struct value *val;
710 struct value *next;
c906108c
SS
711
712 for (val = all_values; val && val != mark; val = next)
713 {
df407dfe 714 next = val->next;
c906108c
SS
715 value_free (val);
716 }
717 all_values = val;
718}
719
720/* Free all the values that have been allocated (except for those released).
725e88af
DE
721 Call after each command, successful or not.
722 In practice this is called before each command, which is sufficient. */
c906108c
SS
723
724void
fba45db2 725free_all_values (void)
c906108c 726{
f23631e4
AC
727 struct value *val;
728 struct value *next;
c906108c
SS
729
730 for (val = all_values; val; val = next)
731 {
df407dfe 732 next = val->next;
c906108c
SS
733 value_free (val);
734 }
735
736 all_values = 0;
737}
738
0cf6dd15
TJB
739/* Frees all the elements in a chain of values. */
740
741void
742free_value_chain (struct value *v)
743{
744 struct value *next;
745
746 for (; v; v = next)
747 {
748 next = value_next (v);
749 value_free (v);
750 }
751}
752
c906108c
SS
753/* Remove VAL from the chain all_values
754 so it will not be freed automatically. */
755
756void
f23631e4 757release_value (struct value *val)
c906108c 758{
f23631e4 759 struct value *v;
c906108c
SS
760
761 if (all_values == val)
762 {
763 all_values = val->next;
06a64a0b 764 val->next = NULL;
c906108c
SS
765 return;
766 }
767
768 for (v = all_values; v; v = v->next)
769 {
770 if (v->next == val)
771 {
772 v->next = val->next;
06a64a0b 773 val->next = NULL;
c906108c
SS
774 break;
775 }
776 }
777}
778
779/* Release all values up to mark */
f23631e4
AC
780struct value *
781value_release_to_mark (struct value *mark)
c906108c 782{
f23631e4
AC
783 struct value *val;
784 struct value *next;
c906108c 785
df407dfe
AC
786 for (val = next = all_values; next; next = next->next)
787 if (next->next == mark)
c906108c 788 {
df407dfe
AC
789 all_values = next->next;
790 next->next = NULL;
c906108c
SS
791 return val;
792 }
793 all_values = 0;
794 return val;
795}
796
797/* Return a copy of the value ARG.
798 It contains the same contents, for same memory address,
799 but it's a different block of storage. */
800
f23631e4
AC
801struct value *
802value_copy (struct value *arg)
c906108c 803{
4754a64e 804 struct type *encl_type = value_enclosing_type (arg);
3e3d7139
JG
805 struct value *val;
806
807 if (value_lazy (arg))
808 val = allocate_value_lazy (encl_type);
809 else
810 val = allocate_value (encl_type);
df407dfe 811 val->type = arg->type;
c906108c 812 VALUE_LVAL (val) = VALUE_LVAL (arg);
6f7c8fc2 813 val->location = arg->location;
df407dfe
AC
814 val->offset = arg->offset;
815 val->bitpos = arg->bitpos;
816 val->bitsize = arg->bitsize;
1df6926e 817 VALUE_FRAME_ID (val) = VALUE_FRAME_ID (arg);
9ee8fc9d 818 VALUE_REGNUM (val) = VALUE_REGNUM (arg);
d69fe07e 819 val->lazy = arg->lazy;
feb13ab0 820 val->optimized_out = arg->optimized_out;
13c3b5f5 821 val->embedded_offset = value_embedded_offset (arg);
b44d461b 822 val->pointed_to_offset = arg->pointed_to_offset;
c906108c 823 val->modifiable = arg->modifiable;
d69fe07e 824 if (!value_lazy (val))
c906108c 825 {
990a07ab 826 memcpy (value_contents_all_raw (val), value_contents_all_raw (arg),
4754a64e 827 TYPE_LENGTH (value_enclosing_type (arg)));
c906108c
SS
828
829 }
4ea48cc1
DJ
830 val->parent = arg->parent;
831 if (val->parent)
832 value_incref (val->parent);
5f5233d4
PA
833 if (VALUE_LVAL (val) == lval_computed)
834 {
835 struct lval_funcs *funcs = val->location.computed.funcs;
836
837 if (funcs->copy_closure)
838 val->location.computed.closure = funcs->copy_closure (val);
839 }
c906108c
SS
840 return val;
841}
74bcbdf3 842
c37f7098
KW
843/* Return a version of ARG that is non-lvalue. */
844
845struct value *
846value_non_lval (struct value *arg)
847{
848 if (VALUE_LVAL (arg) != not_lval)
849 {
850 struct type *enc_type = value_enclosing_type (arg);
851 struct value *val = allocate_value (enc_type);
852
853 memcpy (value_contents_all_raw (val), value_contents_all (arg),
854 TYPE_LENGTH (enc_type));
855 val->type = arg->type;
856 set_value_embedded_offset (val, value_embedded_offset (arg));
857 set_value_pointed_to_offset (val, value_pointed_to_offset (arg));
858 return val;
859 }
860 return arg;
861}
862
74bcbdf3 863void
0e03807e
TT
864set_value_component_location (struct value *component,
865 const struct value *whole)
74bcbdf3 866{
0e03807e 867 if (whole->lval == lval_internalvar)
74bcbdf3
PA
868 VALUE_LVAL (component) = lval_internalvar_component;
869 else
0e03807e 870 VALUE_LVAL (component) = whole->lval;
5f5233d4 871
74bcbdf3 872 component->location = whole->location;
0e03807e 873 if (whole->lval == lval_computed)
5f5233d4
PA
874 {
875 struct lval_funcs *funcs = whole->location.computed.funcs;
876
877 if (funcs->copy_closure)
878 component->location.computed.closure = funcs->copy_closure (whole);
879 }
74bcbdf3
PA
880}
881
c906108c
SS
882\f
883/* Access to the value history. */
884
885/* Record a new value in the value history.
886 Returns the absolute history index of the entry.
887 Result of -1 indicates the value was not saved; otherwise it is the
888 value history index of this new item. */
889
890int
f23631e4 891record_latest_value (struct value *val)
c906108c
SS
892{
893 int i;
894
895 /* We don't want this value to have anything to do with the inferior anymore.
896 In particular, "set $1 = 50" should not affect the variable from which
897 the value was taken, and fast watchpoints should be able to assume that
898 a value on the value history never changes. */
d69fe07e 899 if (value_lazy (val))
c906108c
SS
900 value_fetch_lazy (val);
901 /* We preserve VALUE_LVAL so that the user can find out where it was fetched
902 from. This is a bit dubious, because then *&$1 does not just return $1
903 but the current contents of that location. c'est la vie... */
904 val->modifiable = 0;
905 release_value (val);
906
907 /* Here we treat value_history_count as origin-zero
908 and applying to the value being stored now. */
909
910 i = value_history_count % VALUE_HISTORY_CHUNK;
911 if (i == 0)
912 {
f23631e4 913 struct value_history_chunk *new
a109c7c1
MS
914 = (struct value_history_chunk *)
915
c5aa993b 916 xmalloc (sizeof (struct value_history_chunk));
c906108c
SS
917 memset (new->values, 0, sizeof new->values);
918 new->next = value_history_chain;
919 value_history_chain = new;
920 }
921
922 value_history_chain->values[i] = val;
923
924 /* Now we regard value_history_count as origin-one
925 and applying to the value just stored. */
926
927 return ++value_history_count;
928}
929
930/* Return a copy of the value in the history with sequence number NUM. */
931
f23631e4 932struct value *
fba45db2 933access_value_history (int num)
c906108c 934{
f23631e4 935 struct value_history_chunk *chunk;
52f0bd74
AC
936 int i;
937 int absnum = num;
c906108c
SS
938
939 if (absnum <= 0)
940 absnum += value_history_count;
941
942 if (absnum <= 0)
943 {
944 if (num == 0)
8a3fe4f8 945 error (_("The history is empty."));
c906108c 946 else if (num == 1)
8a3fe4f8 947 error (_("There is only one value in the history."));
c906108c 948 else
8a3fe4f8 949 error (_("History does not go back to $$%d."), -num);
c906108c
SS
950 }
951 if (absnum > value_history_count)
8a3fe4f8 952 error (_("History has not yet reached $%d."), absnum);
c906108c
SS
953
954 absnum--;
955
956 /* Now absnum is always absolute and origin zero. */
957
958 chunk = value_history_chain;
959 for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK - absnum / VALUE_HISTORY_CHUNK;
960 i > 0; i--)
961 chunk = chunk->next;
962
963 return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]);
964}
965
c906108c 966static void
fba45db2 967show_values (char *num_exp, int from_tty)
c906108c 968{
52f0bd74 969 int i;
f23631e4 970 struct value *val;
c906108c
SS
971 static int num = 1;
972
973 if (num_exp)
974 {
f132ba9d
TJB
975 /* "show values +" should print from the stored position.
976 "show values <exp>" should print around value number <exp>. */
c906108c 977 if (num_exp[0] != '+' || num_exp[1] != '\0')
bb518678 978 num = parse_and_eval_long (num_exp) - 5;
c906108c
SS
979 }
980 else
981 {
f132ba9d 982 /* "show values" means print the last 10 values. */
c906108c
SS
983 num = value_history_count - 9;
984 }
985
986 if (num <= 0)
987 num = 1;
988
989 for (i = num; i < num + 10 && i <= value_history_count; i++)
990 {
79a45b7d 991 struct value_print_options opts;
a109c7c1 992
c906108c 993 val = access_value_history (i);
a3f17187 994 printf_filtered (("$%d = "), i);
79a45b7d
TT
995 get_user_print_options (&opts);
996 value_print (val, gdb_stdout, &opts);
a3f17187 997 printf_filtered (("\n"));
c906108c
SS
998 }
999
f132ba9d 1000 /* The next "show values +" should start after what we just printed. */
c906108c
SS
1001 num += 10;
1002
1003 /* Hitting just return after this command should do the same thing as
f132ba9d
TJB
1004 "show values +". If num_exp is null, this is unnecessary, since
1005 "show values +" is not useful after "show values". */
c906108c
SS
1006 if (from_tty && num_exp)
1007 {
1008 num_exp[0] = '+';
1009 num_exp[1] = '\0';
1010 }
1011}
1012\f
1013/* Internal variables. These are variables within the debugger
1014 that hold values assigned by debugger commands.
1015 The user refers to them with a '$' prefix
1016 that does not appear in the variable names stored internally. */
1017
4fa62494
UW
1018struct internalvar
1019{
1020 struct internalvar *next;
1021 char *name;
4fa62494 1022
78267919
UW
1023 /* We support various different kinds of content of an internal variable.
1024 enum internalvar_kind specifies the kind, and union internalvar_data
1025 provides the data associated with this particular kind. */
1026
1027 enum internalvar_kind
1028 {
1029 /* The internal variable is empty. */
1030 INTERNALVAR_VOID,
1031
1032 /* The value of the internal variable is provided directly as
1033 a GDB value object. */
1034 INTERNALVAR_VALUE,
1035
1036 /* A fresh value is computed via a call-back routine on every
1037 access to the internal variable. */
1038 INTERNALVAR_MAKE_VALUE,
4fa62494 1039
78267919
UW
1040 /* The internal variable holds a GDB internal convenience function. */
1041 INTERNALVAR_FUNCTION,
1042
cab0c772
UW
1043 /* The variable holds an integer value. */
1044 INTERNALVAR_INTEGER,
1045
1046 /* The variable holds a pointer value. */
1047 INTERNALVAR_POINTER,
78267919
UW
1048
1049 /* The variable holds a GDB-provided string. */
1050 INTERNALVAR_STRING,
1051
1052 } kind;
4fa62494 1053
4fa62494
UW
1054 union internalvar_data
1055 {
78267919
UW
1056 /* A value object used with INTERNALVAR_VALUE. */
1057 struct value *value;
1058
1059 /* The call-back routine used with INTERNALVAR_MAKE_VALUE. */
1060 internalvar_make_value make_value;
1061
1062 /* The internal function used with INTERNALVAR_FUNCTION. */
1063 struct
1064 {
1065 struct internal_function *function;
1066 /* True if this is the canonical name for the function. */
1067 int canonical;
1068 } fn;
1069
cab0c772 1070 /* An integer value used with INTERNALVAR_INTEGER. */
78267919
UW
1071 struct
1072 {
1073 /* If type is non-NULL, it will be used as the type to generate
1074 a value for this internal variable. If type is NULL, a default
1075 integer type for the architecture is used. */
1076 struct type *type;
cab0c772
UW
1077 LONGEST val;
1078 } integer;
1079
1080 /* A pointer value used with INTERNALVAR_POINTER. */
1081 struct
1082 {
1083 struct type *type;
1084 CORE_ADDR val;
1085 } pointer;
78267919
UW
1086
1087 /* A string value used with INTERNALVAR_STRING. */
1088 char *string;
4fa62494
UW
1089 } u;
1090};
1091
c906108c
SS
1092static struct internalvar *internalvars;
1093
53e5f3cf
AS
1094/* If the variable does not already exist create it and give it the value given.
1095 If no value is given then the default is zero. */
1096static void
1097init_if_undefined_command (char* args, int from_tty)
1098{
1099 struct internalvar* intvar;
1100
1101 /* Parse the expression - this is taken from set_command(). */
1102 struct expression *expr = parse_expression (args);
1103 register struct cleanup *old_chain =
1104 make_cleanup (free_current_contents, &expr);
1105
1106 /* Validate the expression.
1107 Was the expression an assignment?
1108 Or even an expression at all? */
1109 if (expr->nelts == 0 || expr->elts[0].opcode != BINOP_ASSIGN)
1110 error (_("Init-if-undefined requires an assignment expression."));
1111
1112 /* Extract the variable from the parsed expression.
1113 In the case of an assign the lvalue will be in elts[1] and elts[2]. */
1114 if (expr->elts[1].opcode != OP_INTERNALVAR)
1115 error (_("The first parameter to init-if-undefined should be a GDB variable."));
1116 intvar = expr->elts[2].internalvar;
1117
1118 /* Only evaluate the expression if the lvalue is void.
1119 This may still fail if the expresssion is invalid. */
78267919 1120 if (intvar->kind == INTERNALVAR_VOID)
53e5f3cf
AS
1121 evaluate_expression (expr);
1122
1123 do_cleanups (old_chain);
1124}
1125
1126
c906108c
SS
1127/* Look up an internal variable with name NAME. NAME should not
1128 normally include a dollar sign.
1129
1130 If the specified internal variable does not exist,
c4a3d09a 1131 the return value is NULL. */
c906108c
SS
1132
1133struct internalvar *
bc3b79fd 1134lookup_only_internalvar (const char *name)
c906108c 1135{
52f0bd74 1136 struct internalvar *var;
c906108c
SS
1137
1138 for (var = internalvars; var; var = var->next)
5cb316ef 1139 if (strcmp (var->name, name) == 0)
c906108c
SS
1140 return var;
1141
c4a3d09a
MF
1142 return NULL;
1143}
1144
1145
1146/* Create an internal variable with name NAME and with a void value.
1147 NAME should not normally include a dollar sign. */
1148
1149struct internalvar *
bc3b79fd 1150create_internalvar (const char *name)
c4a3d09a
MF
1151{
1152 struct internalvar *var;
a109c7c1 1153
c906108c 1154 var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
1754f103 1155 var->name = concat (name, (char *)NULL);
78267919 1156 var->kind = INTERNALVAR_VOID;
c906108c
SS
1157 var->next = internalvars;
1158 internalvars = var;
1159 return var;
1160}
1161
4aa995e1
PA
1162/* Create an internal variable with name NAME and register FUN as the
1163 function that value_of_internalvar uses to create a value whenever
1164 this variable is referenced. NAME should not normally include a
1165 dollar sign. */
1166
1167struct internalvar *
1168create_internalvar_type_lazy (char *name, internalvar_make_value fun)
1169{
4fa62494 1170 struct internalvar *var = create_internalvar (name);
a109c7c1 1171
78267919
UW
1172 var->kind = INTERNALVAR_MAKE_VALUE;
1173 var->u.make_value = fun;
4aa995e1
PA
1174 return var;
1175}
c4a3d09a
MF
1176
1177/* Look up an internal variable with name NAME. NAME should not
1178 normally include a dollar sign.
1179
1180 If the specified internal variable does not exist,
1181 one is created, with a void value. */
1182
1183struct internalvar *
bc3b79fd 1184lookup_internalvar (const char *name)
c4a3d09a
MF
1185{
1186 struct internalvar *var;
1187
1188 var = lookup_only_internalvar (name);
1189 if (var)
1190 return var;
1191
1192 return create_internalvar (name);
1193}
1194
78267919
UW
1195/* Return current value of internal variable VAR. For variables that
1196 are not inherently typed, use a value type appropriate for GDBARCH. */
1197
f23631e4 1198struct value *
78267919 1199value_of_internalvar (struct gdbarch *gdbarch, struct internalvar *var)
c906108c 1200{
f23631e4 1201 struct value *val;
0914bcdb
SS
1202 struct trace_state_variable *tsv;
1203
1204 /* If there is a trace state variable of the same name, assume that
1205 is what we really want to see. */
1206 tsv = find_trace_state_variable (var->name);
1207 if (tsv)
1208 {
1209 tsv->value_known = target_get_trace_state_variable_value (tsv->number,
1210 &(tsv->value));
1211 if (tsv->value_known)
1212 val = value_from_longest (builtin_type (gdbarch)->builtin_int64,
1213 tsv->value);
1214 else
1215 val = allocate_value (builtin_type (gdbarch)->builtin_void);
1216 return val;
1217 }
c906108c 1218
78267919 1219 switch (var->kind)
5f5233d4 1220 {
78267919
UW
1221 case INTERNALVAR_VOID:
1222 val = allocate_value (builtin_type (gdbarch)->builtin_void);
1223 break;
4fa62494 1224
78267919
UW
1225 case INTERNALVAR_FUNCTION:
1226 val = allocate_value (builtin_type (gdbarch)->internal_fn);
1227 break;
4fa62494 1228
cab0c772
UW
1229 case INTERNALVAR_INTEGER:
1230 if (!var->u.integer.type)
78267919 1231 val = value_from_longest (builtin_type (gdbarch)->builtin_int,
cab0c772 1232 var->u.integer.val);
78267919 1233 else
cab0c772
UW
1234 val = value_from_longest (var->u.integer.type, var->u.integer.val);
1235 break;
1236
1237 case INTERNALVAR_POINTER:
1238 val = value_from_pointer (var->u.pointer.type, var->u.pointer.val);
78267919 1239 break;
4fa62494 1240
78267919
UW
1241 case INTERNALVAR_STRING:
1242 val = value_cstring (var->u.string, strlen (var->u.string),
1243 builtin_type (gdbarch)->builtin_char);
1244 break;
4fa62494 1245
78267919
UW
1246 case INTERNALVAR_VALUE:
1247 val = value_copy (var->u.value);
4aa995e1
PA
1248 if (value_lazy (val))
1249 value_fetch_lazy (val);
78267919 1250 break;
4aa995e1 1251
78267919
UW
1252 case INTERNALVAR_MAKE_VALUE:
1253 val = (*var->u.make_value) (gdbarch, var);
1254 break;
1255
1256 default:
1257 internal_error (__FILE__, __LINE__, "bad kind");
1258 }
1259
1260 /* Change the VALUE_LVAL to lval_internalvar so that future operations
1261 on this value go back to affect the original internal variable.
1262
1263 Do not do this for INTERNALVAR_MAKE_VALUE variables, as those have
1264 no underlying modifyable state in the internal variable.
1265
1266 Likewise, if the variable's value is a computed lvalue, we want
1267 references to it to produce another computed lvalue, where
1268 references and assignments actually operate through the
1269 computed value's functions.
1270
1271 This means that internal variables with computed values
1272 behave a little differently from other internal variables:
1273 assignments to them don't just replace the previous value
1274 altogether. At the moment, this seems like the behavior we
1275 want. */
1276
1277 if (var->kind != INTERNALVAR_MAKE_VALUE
1278 && val->lval != lval_computed)
1279 {
1280 VALUE_LVAL (val) = lval_internalvar;
1281 VALUE_INTERNALVAR (val) = var;
5f5233d4 1282 }
d3c139e9 1283
4fa62494
UW
1284 return val;
1285}
d3c139e9 1286
4fa62494
UW
1287int
1288get_internalvar_integer (struct internalvar *var, LONGEST *result)
1289{
78267919 1290 switch (var->kind)
4fa62494 1291 {
cab0c772
UW
1292 case INTERNALVAR_INTEGER:
1293 *result = var->u.integer.val;
1294 return 1;
d3c139e9 1295
4fa62494
UW
1296 default:
1297 return 0;
1298 }
1299}
d3c139e9 1300
4fa62494
UW
1301static int
1302get_internalvar_function (struct internalvar *var,
1303 struct internal_function **result)
1304{
78267919 1305 switch (var->kind)
d3c139e9 1306 {
78267919
UW
1307 case INTERNALVAR_FUNCTION:
1308 *result = var->u.fn.function;
4fa62494 1309 return 1;
d3c139e9 1310
4fa62494
UW
1311 default:
1312 return 0;
1313 }
c906108c
SS
1314}
1315
1316void
fba45db2 1317set_internalvar_component (struct internalvar *var, int offset, int bitpos,
f23631e4 1318 int bitsize, struct value *newval)
c906108c 1319{
4fa62494 1320 gdb_byte *addr;
c906108c 1321
78267919 1322 switch (var->kind)
4fa62494 1323 {
78267919
UW
1324 case INTERNALVAR_VALUE:
1325 addr = value_contents_writeable (var->u.value);
4fa62494
UW
1326
1327 if (bitsize)
50810684 1328 modify_field (value_type (var->u.value), addr + offset,
4fa62494
UW
1329 value_as_long (newval), bitpos, bitsize);
1330 else
1331 memcpy (addr + offset, value_contents (newval),
1332 TYPE_LENGTH (value_type (newval)));
1333 break;
78267919
UW
1334
1335 default:
1336 /* We can never get a component of any other kind. */
1337 internal_error (__FILE__, __LINE__, "set_internalvar_component");
4fa62494 1338 }
c906108c
SS
1339}
1340
1341void
f23631e4 1342set_internalvar (struct internalvar *var, struct value *val)
c906108c 1343{
78267919 1344 enum internalvar_kind new_kind;
4fa62494 1345 union internalvar_data new_data = { 0 };
c906108c 1346
78267919 1347 if (var->kind == INTERNALVAR_FUNCTION && var->u.fn.canonical)
bc3b79fd
TJB
1348 error (_("Cannot overwrite convenience function %s"), var->name);
1349
4fa62494 1350 /* Prepare new contents. */
78267919 1351 switch (TYPE_CODE (check_typedef (value_type (val))))
4fa62494
UW
1352 {
1353 case TYPE_CODE_VOID:
78267919 1354 new_kind = INTERNALVAR_VOID;
4fa62494
UW
1355 break;
1356
1357 case TYPE_CODE_INTERNAL_FUNCTION:
1358 gdb_assert (VALUE_LVAL (val) == lval_internalvar);
78267919
UW
1359 new_kind = INTERNALVAR_FUNCTION;
1360 get_internalvar_function (VALUE_INTERNALVAR (val),
1361 &new_data.fn.function);
1362 /* Copies created here are never canonical. */
4fa62494
UW
1363 break;
1364
1365 case TYPE_CODE_INT:
cab0c772
UW
1366 new_kind = INTERNALVAR_INTEGER;
1367 new_data.integer.type = value_type (val);
1368 new_data.integer.val = value_as_long (val);
4fa62494
UW
1369 break;
1370
1371 case TYPE_CODE_PTR:
cab0c772
UW
1372 new_kind = INTERNALVAR_POINTER;
1373 new_data.pointer.type = value_type (val);
1374 new_data.pointer.val = value_as_address (val);
4fa62494
UW
1375 break;
1376
1377 default:
78267919
UW
1378 new_kind = INTERNALVAR_VALUE;
1379 new_data.value = value_copy (val);
1380 new_data.value->modifiable = 1;
4fa62494
UW
1381
1382 /* Force the value to be fetched from the target now, to avoid problems
1383 later when this internalvar is referenced and the target is gone or
1384 has changed. */
78267919
UW
1385 if (value_lazy (new_data.value))
1386 value_fetch_lazy (new_data.value);
4fa62494
UW
1387
1388 /* Release the value from the value chain to prevent it from being
1389 deleted by free_all_values. From here on this function should not
1390 call error () until new_data is installed into the var->u to avoid
1391 leaking memory. */
78267919 1392 release_value (new_data.value);
4fa62494
UW
1393 break;
1394 }
1395
1396 /* Clean up old contents. */
1397 clear_internalvar (var);
1398
1399 /* Switch over. */
78267919 1400 var->kind = new_kind;
4fa62494 1401 var->u = new_data;
c906108c
SS
1402 /* End code which must not call error(). */
1403}
1404
4fa62494
UW
1405void
1406set_internalvar_integer (struct internalvar *var, LONGEST l)
1407{
1408 /* Clean up old contents. */
1409 clear_internalvar (var);
1410
cab0c772
UW
1411 var->kind = INTERNALVAR_INTEGER;
1412 var->u.integer.type = NULL;
1413 var->u.integer.val = l;
78267919
UW
1414}
1415
1416void
1417set_internalvar_string (struct internalvar *var, const char *string)
1418{
1419 /* Clean up old contents. */
1420 clear_internalvar (var);
1421
1422 var->kind = INTERNALVAR_STRING;
1423 var->u.string = xstrdup (string);
4fa62494
UW
1424}
1425
1426static void
1427set_internalvar_function (struct internalvar *var, struct internal_function *f)
1428{
1429 /* Clean up old contents. */
1430 clear_internalvar (var);
1431
78267919
UW
1432 var->kind = INTERNALVAR_FUNCTION;
1433 var->u.fn.function = f;
1434 var->u.fn.canonical = 1;
1435 /* Variables installed here are always the canonical version. */
4fa62494
UW
1436}
1437
1438void
1439clear_internalvar (struct internalvar *var)
1440{
1441 /* Clean up old contents. */
78267919 1442 switch (var->kind)
4fa62494 1443 {
78267919
UW
1444 case INTERNALVAR_VALUE:
1445 value_free (var->u.value);
1446 break;
1447
1448 case INTERNALVAR_STRING:
1449 xfree (var->u.string);
4fa62494
UW
1450 break;
1451
1452 default:
4fa62494
UW
1453 break;
1454 }
1455
78267919
UW
1456 /* Reset to void kind. */
1457 var->kind = INTERNALVAR_VOID;
4fa62494
UW
1458}
1459
c906108c 1460char *
fba45db2 1461internalvar_name (struct internalvar *var)
c906108c
SS
1462{
1463 return var->name;
1464}
1465
4fa62494
UW
1466static struct internal_function *
1467create_internal_function (const char *name,
1468 internal_function_fn handler, void *cookie)
bc3b79fd 1469{
bc3b79fd 1470 struct internal_function *ifn = XNEW (struct internal_function);
a109c7c1 1471
bc3b79fd
TJB
1472 ifn->name = xstrdup (name);
1473 ifn->handler = handler;
1474 ifn->cookie = cookie;
4fa62494 1475 return ifn;
bc3b79fd
TJB
1476}
1477
1478char *
1479value_internal_function_name (struct value *val)
1480{
4fa62494
UW
1481 struct internal_function *ifn;
1482 int result;
1483
1484 gdb_assert (VALUE_LVAL (val) == lval_internalvar);
1485 result = get_internalvar_function (VALUE_INTERNALVAR (val), &ifn);
1486 gdb_assert (result);
1487
bc3b79fd
TJB
1488 return ifn->name;
1489}
1490
1491struct value *
d452c4bc
UW
1492call_internal_function (struct gdbarch *gdbarch,
1493 const struct language_defn *language,
1494 struct value *func, int argc, struct value **argv)
bc3b79fd 1495{
4fa62494
UW
1496 struct internal_function *ifn;
1497 int result;
1498
1499 gdb_assert (VALUE_LVAL (func) == lval_internalvar);
1500 result = get_internalvar_function (VALUE_INTERNALVAR (func), &ifn);
1501 gdb_assert (result);
1502
d452c4bc 1503 return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
bc3b79fd
TJB
1504}
1505
1506/* The 'function' command. This does nothing -- it is just a
1507 placeholder to let "help function NAME" work. This is also used as
1508 the implementation of the sub-command that is created when
1509 registering an internal function. */
1510static void
1511function_command (char *command, int from_tty)
1512{
1513 /* Do nothing. */
1514}
1515
1516/* Clean up if an internal function's command is destroyed. */
1517static void
1518function_destroyer (struct cmd_list_element *self, void *ignore)
1519{
1520 xfree (self->name);
1521 xfree (self->doc);
1522}
1523
1524/* Add a new internal function. NAME is the name of the function; DOC
1525 is a documentation string describing the function. HANDLER is
1526 called when the function is invoked. COOKIE is an arbitrary
1527 pointer which is passed to HANDLER and is intended for "user
1528 data". */
1529void
1530add_internal_function (const char *name, const char *doc,
1531 internal_function_fn handler, void *cookie)
1532{
1533 struct cmd_list_element *cmd;
4fa62494 1534 struct internal_function *ifn;
bc3b79fd 1535 struct internalvar *var = lookup_internalvar (name);
4fa62494
UW
1536
1537 ifn = create_internal_function (name, handler, cookie);
1538 set_internalvar_function (var, ifn);
bc3b79fd
TJB
1539
1540 cmd = add_cmd (xstrdup (name), no_class, function_command, (char *) doc,
1541 &functionlist);
1542 cmd->destroyer = function_destroyer;
1543}
1544
ae5a43e0
DJ
1545/* Update VALUE before discarding OBJFILE. COPIED_TYPES is used to
1546 prevent cycles / duplicates. */
1547
4e7a5ef5 1548void
ae5a43e0
DJ
1549preserve_one_value (struct value *value, struct objfile *objfile,
1550 htab_t copied_types)
1551{
1552 if (TYPE_OBJFILE (value->type) == objfile)
1553 value->type = copy_type_recursive (objfile, value->type, copied_types);
1554
1555 if (TYPE_OBJFILE (value->enclosing_type) == objfile)
1556 value->enclosing_type = copy_type_recursive (objfile,
1557 value->enclosing_type,
1558 copied_types);
1559}
1560
78267919
UW
1561/* Likewise for internal variable VAR. */
1562
1563static void
1564preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
1565 htab_t copied_types)
1566{
1567 switch (var->kind)
1568 {
cab0c772
UW
1569 case INTERNALVAR_INTEGER:
1570 if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
1571 var->u.integer.type
1572 = copy_type_recursive (objfile, var->u.integer.type, copied_types);
1573 break;
1574
1575 case INTERNALVAR_POINTER:
1576 if (TYPE_OBJFILE (var->u.pointer.type) == objfile)
1577 var->u.pointer.type
1578 = copy_type_recursive (objfile, var->u.pointer.type, copied_types);
78267919
UW
1579 break;
1580
1581 case INTERNALVAR_VALUE:
1582 preserve_one_value (var->u.value, objfile, copied_types);
1583 break;
1584 }
1585}
1586
ae5a43e0
DJ
1587/* Update the internal variables and value history when OBJFILE is
1588 discarded; we must copy the types out of the objfile. New global types
1589 will be created for every convenience variable which currently points to
1590 this objfile's types, and the convenience variables will be adjusted to
1591 use the new global types. */
c906108c
SS
1592
1593void
ae5a43e0 1594preserve_values (struct objfile *objfile)
c906108c 1595{
ae5a43e0
DJ
1596 htab_t copied_types;
1597 struct value_history_chunk *cur;
52f0bd74 1598 struct internalvar *var;
ae5a43e0 1599 int i;
c906108c 1600
ae5a43e0
DJ
1601 /* Create the hash table. We allocate on the objfile's obstack, since
1602 it is soon to be deleted. */
1603 copied_types = create_copied_types_hash (objfile);
1604
1605 for (cur = value_history_chain; cur; cur = cur->next)
1606 for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
1607 if (cur->values[i])
1608 preserve_one_value (cur->values[i], objfile, copied_types);
1609
1610 for (var = internalvars; var; var = var->next)
78267919 1611 preserve_one_internalvar (var, objfile, copied_types);
ae5a43e0 1612
4e7a5ef5 1613 preserve_python_values (objfile, copied_types);
a08702d6 1614
ae5a43e0 1615 htab_delete (copied_types);
c906108c
SS
1616}
1617
1618static void
fba45db2 1619show_convenience (char *ignore, int from_tty)
c906108c 1620{
e17c207e 1621 struct gdbarch *gdbarch = get_current_arch ();
52f0bd74 1622 struct internalvar *var;
c906108c 1623 int varseen = 0;
79a45b7d 1624 struct value_print_options opts;
c906108c 1625
79a45b7d 1626 get_user_print_options (&opts);
c906108c
SS
1627 for (var = internalvars; var; var = var->next)
1628 {
c906108c
SS
1629 if (!varseen)
1630 {
1631 varseen = 1;
1632 }
a3f17187 1633 printf_filtered (("$%s = "), var->name);
78267919 1634 value_print (value_of_internalvar (gdbarch, var), gdb_stdout,
79a45b7d 1635 &opts);
a3f17187 1636 printf_filtered (("\n"));
c906108c
SS
1637 }
1638 if (!varseen)
a3f17187
AC
1639 printf_unfiltered (_("\
1640No debugger convenience variables now defined.\n\
c906108c 1641Convenience variables have names starting with \"$\";\n\
a3f17187 1642use \"set\" as in \"set $foo = 5\" to define them.\n"));
c906108c
SS
1643}
1644\f
1645/* Extract a value as a C number (either long or double).
1646 Knows how to convert fixed values to double, or
1647 floating values to long.
1648 Does not deallocate the value. */
1649
1650LONGEST
f23631e4 1651value_as_long (struct value *val)
c906108c
SS
1652{
1653 /* This coerces arrays and functions, which is necessary (e.g.
1654 in disassemble_command). It also dereferences references, which
1655 I suspect is the most logical thing to do. */
994b9211 1656 val = coerce_array (val);
0fd88904 1657 return unpack_long (value_type (val), value_contents (val));
c906108c
SS
1658}
1659
1660DOUBLEST
f23631e4 1661value_as_double (struct value *val)
c906108c
SS
1662{
1663 DOUBLEST foo;
1664 int inv;
c5aa993b 1665
0fd88904 1666 foo = unpack_double (value_type (val), value_contents (val), &inv);
c906108c 1667 if (inv)
8a3fe4f8 1668 error (_("Invalid floating value found in program."));
c906108c
SS
1669 return foo;
1670}
4ef30785 1671
4478b372
JB
1672/* Extract a value as a C pointer. Does not deallocate the value.
1673 Note that val's type may not actually be a pointer; value_as_long
1674 handles all the cases. */
c906108c 1675CORE_ADDR
f23631e4 1676value_as_address (struct value *val)
c906108c 1677{
50810684
UW
1678 struct gdbarch *gdbarch = get_type_arch (value_type (val));
1679
c906108c
SS
1680 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure
1681 whether we want this to be true eventually. */
1682#if 0
bf6ae464 1683 /* gdbarch_addr_bits_remove is wrong if we are being called for a
c906108c
SS
1684 non-address (e.g. argument to "signal", "info break", etc.), or
1685 for pointers to char, in which the low bits *are* significant. */
50810684 1686 return gdbarch_addr_bits_remove (gdbarch, value_as_long (val));
c906108c 1687#else
f312f057
JB
1688
1689 /* There are several targets (IA-64, PowerPC, and others) which
1690 don't represent pointers to functions as simply the address of
1691 the function's entry point. For example, on the IA-64, a
1692 function pointer points to a two-word descriptor, generated by
1693 the linker, which contains the function's entry point, and the
1694 value the IA-64 "global pointer" register should have --- to
1695 support position-independent code. The linker generates
1696 descriptors only for those functions whose addresses are taken.
1697
1698 On such targets, it's difficult for GDB to convert an arbitrary
1699 function address into a function pointer; it has to either find
1700 an existing descriptor for that function, or call malloc and
1701 build its own. On some targets, it is impossible for GDB to
1702 build a descriptor at all: the descriptor must contain a jump
1703 instruction; data memory cannot be executed; and code memory
1704 cannot be modified.
1705
1706 Upon entry to this function, if VAL is a value of type `function'
1707 (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then
42ae5230 1708 value_address (val) is the address of the function. This is what
f312f057
JB
1709 you'll get if you evaluate an expression like `main'. The call
1710 to COERCE_ARRAY below actually does all the usual unary
1711 conversions, which includes converting values of type `function'
1712 to `pointer to function'. This is the challenging conversion
1713 discussed above. Then, `unpack_long' will convert that pointer
1714 back into an address.
1715
1716 So, suppose the user types `disassemble foo' on an architecture
1717 with a strange function pointer representation, on which GDB
1718 cannot build its own descriptors, and suppose further that `foo'
1719 has no linker-built descriptor. The address->pointer conversion
1720 will signal an error and prevent the command from running, even
1721 though the next step would have been to convert the pointer
1722 directly back into the same address.
1723
1724 The following shortcut avoids this whole mess. If VAL is a
1725 function, just return its address directly. */
df407dfe
AC
1726 if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1727 || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
42ae5230 1728 return value_address (val);
f312f057 1729
994b9211 1730 val = coerce_array (val);
fc0c74b1
AC
1731
1732 /* Some architectures (e.g. Harvard), map instruction and data
1733 addresses onto a single large unified address space. For
1734 instance: An architecture may consider a large integer in the
1735 range 0x10000000 .. 0x1000ffff to already represent a data
1736 addresses (hence not need a pointer to address conversion) while
1737 a small integer would still need to be converted integer to
1738 pointer to address. Just assume such architectures handle all
1739 integer conversions in a single function. */
1740
1741 /* JimB writes:
1742
1743 I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we
1744 must admonish GDB hackers to make sure its behavior matches the
1745 compiler's, whenever possible.
1746
1747 In general, I think GDB should evaluate expressions the same way
1748 the compiler does. When the user copies an expression out of
1749 their source code and hands it to a `print' command, they should
1750 get the same value the compiler would have computed. Any
1751 deviation from this rule can cause major confusion and annoyance,
1752 and needs to be justified carefully. In other words, GDB doesn't
1753 really have the freedom to do these conversions in clever and
1754 useful ways.
1755
1756 AndrewC pointed out that users aren't complaining about how GDB
1757 casts integers to pointers; they are complaining that they can't
1758 take an address from a disassembly listing and give it to `x/i'.
1759 This is certainly important.
1760
79dd2d24 1761 Adding an architecture method like integer_to_address() certainly
fc0c74b1
AC
1762 makes it possible for GDB to "get it right" in all circumstances
1763 --- the target has complete control over how things get done, so
1764 people can Do The Right Thing for their target without breaking
1765 anyone else. The standard doesn't specify how integers get
1766 converted to pointers; usually, the ABI doesn't either, but
1767 ABI-specific code is a more reasonable place to handle it. */
1768
df407dfe
AC
1769 if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
1770 && TYPE_CODE (value_type (val)) != TYPE_CODE_REF
50810684
UW
1771 && gdbarch_integer_to_address_p (gdbarch))
1772 return gdbarch_integer_to_address (gdbarch, value_type (val),
0fd88904 1773 value_contents (val));
fc0c74b1 1774
0fd88904 1775 return unpack_long (value_type (val), value_contents (val));
c906108c
SS
1776#endif
1777}
1778\f
1779/* Unpack raw data (copied from debugee, target byte order) at VALADDR
1780 as a long, or as a double, assuming the raw data is described
1781 by type TYPE. Knows how to convert different sizes of values
1782 and can convert between fixed and floating point. We don't assume
1783 any alignment for the raw data. Return value is in host byte order.
1784
1785 If you want functions and arrays to be coerced to pointers, and
1786 references to be dereferenced, call value_as_long() instead.
1787
1788 C++: It is assumed that the front-end has taken care of
1789 all matters concerning pointers to members. A pointer
1790 to member which reaches here is considered to be equivalent
1791 to an INT (or some size). After all, it is only an offset. */
1792
1793LONGEST
fc1a4b47 1794unpack_long (struct type *type, const gdb_byte *valaddr)
c906108c 1795{
e17a4113 1796 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
52f0bd74
AC
1797 enum type_code code = TYPE_CODE (type);
1798 int len = TYPE_LENGTH (type);
1799 int nosign = TYPE_UNSIGNED (type);
c906108c 1800
c906108c
SS
1801 switch (code)
1802 {
1803 case TYPE_CODE_TYPEDEF:
1804 return unpack_long (check_typedef (type), valaddr);
1805 case TYPE_CODE_ENUM:
4f2aea11 1806 case TYPE_CODE_FLAGS:
c906108c
SS
1807 case TYPE_CODE_BOOL:
1808 case TYPE_CODE_INT:
1809 case TYPE_CODE_CHAR:
1810 case TYPE_CODE_RANGE:
0d5de010 1811 case TYPE_CODE_MEMBERPTR:
c906108c 1812 if (nosign)
e17a4113 1813 return extract_unsigned_integer (valaddr, len, byte_order);
c906108c 1814 else
e17a4113 1815 return extract_signed_integer (valaddr, len, byte_order);
c906108c
SS
1816
1817 case TYPE_CODE_FLT:
96d2f608 1818 return extract_typed_floating (valaddr, type);
c906108c 1819
4ef30785
TJB
1820 case TYPE_CODE_DECFLOAT:
1821 /* libdecnumber has a function to convert from decimal to integer, but
1822 it doesn't work when the decimal number has a fractional part. */
e17a4113 1823 return decimal_to_doublest (valaddr, len, byte_order);
4ef30785 1824
c906108c
SS
1825 case TYPE_CODE_PTR:
1826 case TYPE_CODE_REF:
1827 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure
c5aa993b 1828 whether we want this to be true eventually. */
4478b372 1829 return extract_typed_address (valaddr, type);
c906108c 1830
c906108c 1831 default:
8a3fe4f8 1832 error (_("Value can't be converted to integer."));
c906108c 1833 }
c5aa993b 1834 return 0; /* Placate lint. */
c906108c
SS
1835}
1836
1837/* Return a double value from the specified type and address.
1838 INVP points to an int which is set to 0 for valid value,
1839 1 for invalid value (bad float format). In either case,
1840 the returned double is OK to use. Argument is in target
1841 format, result is in host format. */
1842
1843DOUBLEST
fc1a4b47 1844unpack_double (struct type *type, const gdb_byte *valaddr, int *invp)
c906108c 1845{
e17a4113 1846 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
c906108c
SS
1847 enum type_code code;
1848 int len;
1849 int nosign;
1850
1851 *invp = 0; /* Assume valid. */
1852 CHECK_TYPEDEF (type);
1853 code = TYPE_CODE (type);
1854 len = TYPE_LENGTH (type);
1855 nosign = TYPE_UNSIGNED (type);
1856 if (code == TYPE_CODE_FLT)
1857 {
75bc7ddf
AC
1858 /* NOTE: cagney/2002-02-19: There was a test here to see if the
1859 floating-point value was valid (using the macro
1860 INVALID_FLOAT). That test/macro have been removed.
1861
1862 It turns out that only the VAX defined this macro and then
1863 only in a non-portable way. Fixing the portability problem
1864 wouldn't help since the VAX floating-point code is also badly
1865 bit-rotten. The target needs to add definitions for the
ea06eb3d 1866 methods gdbarch_float_format and gdbarch_double_format - these
75bc7ddf
AC
1867 exactly describe the target floating-point format. The
1868 problem here is that the corresponding floatformat_vax_f and
1869 floatformat_vax_d values these methods should be set to are
1870 also not defined either. Oops!
1871
1872 Hopefully someone will add both the missing floatformat
ac79b88b
DJ
1873 definitions and the new cases for floatformat_is_valid (). */
1874
1875 if (!floatformat_is_valid (floatformat_from_type (type), valaddr))
1876 {
1877 *invp = 1;
1878 return 0.0;
1879 }
1880
96d2f608 1881 return extract_typed_floating (valaddr, type);
c906108c 1882 }
4ef30785 1883 else if (code == TYPE_CODE_DECFLOAT)
e17a4113 1884 return decimal_to_doublest (valaddr, len, byte_order);
c906108c
SS
1885 else if (nosign)
1886 {
1887 /* Unsigned -- be sure we compensate for signed LONGEST. */
c906108c 1888 return (ULONGEST) unpack_long (type, valaddr);
c906108c
SS
1889 }
1890 else
1891 {
1892 /* Signed -- we are OK with unpack_long. */
1893 return unpack_long (type, valaddr);
1894 }
1895}
1896
1897/* Unpack raw data (copied from debugee, target byte order) at VALADDR
1898 as a CORE_ADDR, assuming the raw data is described by type TYPE.
1899 We don't assume any alignment for the raw data. Return value is in
1900 host byte order.
1901
1902 If you want functions and arrays to be coerced to pointers, and
1aa20aa8 1903 references to be dereferenced, call value_as_address() instead.
c906108c
SS
1904
1905 C++: It is assumed that the front-end has taken care of
1906 all matters concerning pointers to members. A pointer
1907 to member which reaches here is considered to be equivalent
1908 to an INT (or some size). After all, it is only an offset. */
1909
1910CORE_ADDR
fc1a4b47 1911unpack_pointer (struct type *type, const gdb_byte *valaddr)
c906108c
SS
1912{
1913 /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure
1914 whether we want this to be true eventually. */
1915 return unpack_long (type, valaddr);
1916}
4478b372 1917
c906108c 1918\f
1596cb5d 1919/* Get the value of the FIELDNO'th field (which must be static) of
2c2738a0
DC
1920 TYPE. Return NULL if the field doesn't exist or has been
1921 optimized out. */
c906108c 1922
f23631e4 1923struct value *
fba45db2 1924value_static_field (struct type *type, int fieldno)
c906108c 1925{
948e66d9
DJ
1926 struct value *retval;
1927
1596cb5d 1928 switch (TYPE_FIELD_LOC_KIND (type, fieldno))
c906108c 1929 {
1596cb5d 1930 case FIELD_LOC_KIND_PHYSADDR:
52e9fde8
SS
1931 retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
1932 TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1596cb5d
DE
1933 break;
1934 case FIELD_LOC_KIND_PHYSNAME:
c906108c
SS
1935 {
1936 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
a109c7c1 1937 /*TYPE_FIELD_NAME (type, fieldno);*/
2570f2b7 1938 struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
94af9270 1939
948e66d9 1940 if (sym == NULL)
c906108c 1941 {
a109c7c1
MS
1942 /* With some compilers, e.g. HP aCC, static data members are
1943 reported as non-debuggable symbols */
1944 struct minimal_symbol *msym = lookup_minimal_symbol (phys_name,
1945 NULL, NULL);
1946
c906108c
SS
1947 if (!msym)
1948 return NULL;
1949 else
c5aa993b 1950 {
52e9fde8
SS
1951 retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
1952 SYMBOL_VALUE_ADDRESS (msym));
c906108c
SS
1953 }
1954 }
1955 else
515ed532 1956 retval = value_of_variable (sym, NULL);
1596cb5d 1957 break;
c906108c 1958 }
1596cb5d 1959 default:
f3574227 1960 gdb_assert_not_reached ("unexpected field location kind");
1596cb5d
DE
1961 }
1962
948e66d9 1963 return retval;
c906108c
SS
1964}
1965
4dfea560
DE
1966/* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE.
1967 You have to be careful here, since the size of the data area for the value
1968 is set by the length of the enclosing type. So if NEW_ENCL_TYPE is bigger
1969 than the old enclosing type, you have to allocate more space for the
1970 data. */
2b127877 1971
4dfea560
DE
1972void
1973set_value_enclosing_type (struct value *val, struct type *new_encl_type)
2b127877 1974{
3e3d7139
JG
1975 if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val)))
1976 val->contents =
1977 (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
1978
1979 val->enclosing_type = new_encl_type;
2b127877
DB
1980}
1981
c906108c
SS
1982/* Given a value ARG1 (offset by OFFSET bytes)
1983 of a struct or union type ARG_TYPE,
1984 extract and return the value of one of its (non-static) fields.
1985 FIELDNO says which field. */
1986
f23631e4
AC
1987struct value *
1988value_primitive_field (struct value *arg1, int offset,
aa1ee363 1989 int fieldno, struct type *arg_type)
c906108c 1990{
f23631e4 1991 struct value *v;
52f0bd74 1992 struct type *type;
c906108c
SS
1993
1994 CHECK_TYPEDEF (arg_type);
1995 type = TYPE_FIELD_TYPE (arg_type, fieldno);
c54eabfa
JK
1996
1997 /* Call check_typedef on our type to make sure that, if TYPE
1998 is a TYPE_CODE_TYPEDEF, its length is set to the length
1999 of the target type instead of zero. However, we do not
2000 replace the typedef type by the target type, because we want
2001 to keep the typedef in order to be able to print the type
2002 description correctly. */
2003 check_typedef (type);
c906108c
SS
2004
2005 /* Handle packed fields */
2006
2007 if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
2008 {
4ea48cc1
DJ
2009 /* Create a new value for the bitfield, with bitpos and bitsize
2010 set. If possible, arrange offset and bitpos so that we can
2011 do a single aligned read of the size of the containing type.
2012 Otherwise, adjust offset to the byte containing the first
2013 bit. Assume that the address, offset, and embedded offset
2014 are sufficiently aligned. */
2015 int bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno);
2016 int container_bitsize = TYPE_LENGTH (type) * 8;
2017
2018 v = allocate_value_lazy (type);
df407dfe 2019 v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno);
4ea48cc1
DJ
2020 if ((bitpos % container_bitsize) + v->bitsize <= container_bitsize
2021 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST))
2022 v->bitpos = bitpos % container_bitsize;
2023 else
2024 v->bitpos = bitpos % 8;
38f12cfc
TT
2025 v->offset = (value_embedded_offset (arg1)
2026 + offset
2027 + (bitpos - v->bitpos) / 8);
4ea48cc1
DJ
2028 v->parent = arg1;
2029 value_incref (v->parent);
2030 if (!value_lazy (arg1))
2031 value_fetch_lazy (v);
c906108c
SS
2032 }
2033 else if (fieldno < TYPE_N_BASECLASSES (arg_type))
2034 {
2035 /* This field is actually a base subobject, so preserve the
2036 entire object's contents for later references to virtual
2037 bases, etc. */
a4e2ee12
DJ
2038
2039 /* Lazy register values with offsets are not supported. */
2040 if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
2041 value_fetch_lazy (arg1);
2042
2043 if (value_lazy (arg1))
3e3d7139 2044 v = allocate_value_lazy (value_enclosing_type (arg1));
c906108c 2045 else
3e3d7139
JG
2046 {
2047 v = allocate_value (value_enclosing_type (arg1));
2048 memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
2049 TYPE_LENGTH (value_enclosing_type (arg1)));
2050 }
2051 v->type = type;
df407dfe 2052 v->offset = value_offset (arg1);
13c3b5f5
AC
2053 v->embedded_offset = (offset + value_embedded_offset (arg1)
2054 + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8);
c906108c
SS
2055 }
2056 else
2057 {
2058 /* Plain old data member */
2059 offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
a4e2ee12
DJ
2060
2061 /* Lazy register values with offsets are not supported. */
2062 if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
2063 value_fetch_lazy (arg1);
2064
2065 if (value_lazy (arg1))
3e3d7139 2066 v = allocate_value_lazy (type);
c906108c 2067 else
3e3d7139
JG
2068 {
2069 v = allocate_value (type);
2070 memcpy (value_contents_raw (v),
2071 value_contents_raw (arg1) + offset,
2072 TYPE_LENGTH (type));
2073 }
df407dfe 2074 v->offset = (value_offset (arg1) + offset
13c3b5f5 2075 + value_embedded_offset (arg1));
c906108c 2076 }
74bcbdf3 2077 set_value_component_location (v, arg1);
9ee8fc9d 2078 VALUE_REGNUM (v) = VALUE_REGNUM (arg1);
0c16dd26 2079 VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1);
c906108c
SS
2080 return v;
2081}
2082
2083/* Given a value ARG1 of a struct or union type,
2084 extract and return the value of one of its (non-static) fields.
2085 FIELDNO says which field. */
2086
f23631e4 2087struct value *
aa1ee363 2088value_field (struct value *arg1, int fieldno)
c906108c 2089{
df407dfe 2090 return value_primitive_field (arg1, 0, fieldno, value_type (arg1));
c906108c
SS
2091}
2092
2093/* Return a non-virtual function as a value.
2094 F is the list of member functions which contains the desired method.
0478d61c
FF
2095 J is an index into F which provides the desired method.
2096
2097 We only use the symbol for its address, so be happy with either a
2098 full symbol or a minimal symbol.
2099 */
c906108c 2100
f23631e4
AC
2101struct value *
2102value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type,
fba45db2 2103 int offset)
c906108c 2104{
f23631e4 2105 struct value *v;
52f0bd74 2106 struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
0478d61c 2107 char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
c906108c 2108 struct symbol *sym;
0478d61c 2109 struct minimal_symbol *msym;
c906108c 2110
2570f2b7 2111 sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0);
5ae326fa 2112 if (sym != NULL)
0478d61c 2113 {
5ae326fa
AC
2114 msym = NULL;
2115 }
2116 else
2117 {
2118 gdb_assert (sym == NULL);
0478d61c 2119 msym = lookup_minimal_symbol (physname, NULL, NULL);
5ae326fa
AC
2120 if (msym == NULL)
2121 return NULL;
0478d61c
FF
2122 }
2123
c906108c 2124 v = allocate_value (ftype);
0478d61c
FF
2125 if (sym)
2126 {
42ae5230 2127 set_value_address (v, BLOCK_START (SYMBOL_BLOCK_VALUE (sym)));
0478d61c
FF
2128 }
2129 else
2130 {
bccdca4a
UW
2131 /* The minimal symbol might point to a function descriptor;
2132 resolve it to the actual code address instead. */
2133 struct objfile *objfile = msymbol_objfile (msym);
2134 struct gdbarch *gdbarch = get_objfile_arch (objfile);
2135
42ae5230
TT
2136 set_value_address (v,
2137 gdbarch_convert_from_func_ptr_addr
2138 (gdbarch, SYMBOL_VALUE_ADDRESS (msym), &current_target));
0478d61c 2139 }
c906108c
SS
2140
2141 if (arg1p)
c5aa993b 2142 {
df407dfe 2143 if (type != value_type (*arg1p))
c5aa993b
JM
2144 *arg1p = value_ind (value_cast (lookup_pointer_type (type),
2145 value_addr (*arg1p)));
2146
070ad9f0 2147 /* Move the `this' pointer according to the offset.
c5aa993b
JM
2148 VALUE_OFFSET (*arg1p) += offset;
2149 */
c906108c
SS
2150 }
2151
2152 return v;
2153}
2154
c906108c 2155\f
4ea48cc1
DJ
2156/* Unpack a bitfield of the specified FIELD_TYPE, from the anonymous
2157 object at VALADDR. The bitfield starts at BITPOS bits and contains
2158 BITSIZE bits.
c906108c
SS
2159
2160 Extracting bits depends on endianness of the machine. Compute the
2161 number of least significant bits to discard. For big endian machines,
2162 we compute the total number of bits in the anonymous object, subtract
2163 off the bit count from the MSB of the object to the MSB of the
2164 bitfield, then the size of the bitfield, which leaves the LSB discard
2165 count. For little endian machines, the discard count is simply the
2166 number of bits from the LSB of the anonymous object to the LSB of the
2167 bitfield.
2168
2169 If the field is signed, we also do sign extension. */
2170
2171LONGEST
4ea48cc1
DJ
2172unpack_bits_as_long (struct type *field_type, const gdb_byte *valaddr,
2173 int bitpos, int bitsize)
c906108c 2174{
4ea48cc1 2175 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (field_type));
c906108c
SS
2176 ULONGEST val;
2177 ULONGEST valmask;
c906108c 2178 int lsbcount;
4a76eae5 2179 int bytes_read;
c906108c 2180
4a76eae5
DJ
2181 /* Read the minimum number of bytes required; there may not be
2182 enough bytes to read an entire ULONGEST. */
c906108c 2183 CHECK_TYPEDEF (field_type);
4a76eae5
DJ
2184 if (bitsize)
2185 bytes_read = ((bitpos % 8) + bitsize + 7) / 8;
2186 else
2187 bytes_read = TYPE_LENGTH (field_type);
2188
2189 val = extract_unsigned_integer (valaddr + bitpos / 8,
2190 bytes_read, byte_order);
c906108c
SS
2191
2192 /* Extract bits. See comment above. */
2193
4ea48cc1 2194 if (gdbarch_bits_big_endian (get_type_arch (field_type)))
4a76eae5 2195 lsbcount = (bytes_read * 8 - bitpos % 8 - bitsize);
c906108c
SS
2196 else
2197 lsbcount = (bitpos % 8);
2198 val >>= lsbcount;
2199
2200 /* If the field does not entirely fill a LONGEST, then zero the sign bits.
2201 If the field is signed, and is negative, then sign extend. */
2202
2203 if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val)))
2204 {
2205 valmask = (((ULONGEST) 1) << bitsize) - 1;
2206 val &= valmask;
2207 if (!TYPE_UNSIGNED (field_type))
2208 {
2209 if (val & (valmask ^ (valmask >> 1)))
2210 {
2211 val |= ~valmask;
2212 }
2213 }
2214 }
2215 return (val);
2216}
2217
4ea48cc1
DJ
2218/* Unpack a field FIELDNO of the specified TYPE, from the anonymous object at
2219 VALADDR. See unpack_bits_as_long for more details. */
2220
2221LONGEST
2222unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno)
2223{
2224 int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
2225 int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
2226 struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
2227
2228 return unpack_bits_as_long (field_type, valaddr, bitpos, bitsize);
2229}
2230
c906108c
SS
2231/* Modify the value of a bitfield. ADDR points to a block of memory in
2232 target byte order; the bitfield starts in the byte pointed to. FIELDVAL
2233 is the desired value of the field, in host byte order. BITPOS and BITSIZE
f4e88c8e 2234 indicate which bits (in target bit order) comprise the bitfield.
19f220c3 2235 Requires 0 < BITSIZE <= lbits, 0 <= BITPOS % 8 + BITSIZE <= lbits, and
f4e88c8e 2236 0 <= BITPOS, where lbits is the size of a LONGEST in bits. */
c906108c
SS
2237
2238void
50810684
UW
2239modify_field (struct type *type, gdb_byte *addr,
2240 LONGEST fieldval, int bitpos, int bitsize)
c906108c 2241{
e17a4113 2242 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
f4e88c8e
PH
2243 ULONGEST oword;
2244 ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
19f220c3
JK
2245 int bytesize;
2246
2247 /* Normalize BITPOS. */
2248 addr += bitpos / 8;
2249 bitpos %= 8;
c906108c
SS
2250
2251 /* If a negative fieldval fits in the field in question, chop
2252 off the sign extension bits. */
f4e88c8e
PH
2253 if ((~fieldval & ~(mask >> 1)) == 0)
2254 fieldval &= mask;
c906108c
SS
2255
2256 /* Warn if value is too big to fit in the field in question. */
f4e88c8e 2257 if (0 != (fieldval & ~mask))
c906108c
SS
2258 {
2259 /* FIXME: would like to include fieldval in the message, but
c5aa993b 2260 we don't have a sprintf_longest. */
8a3fe4f8 2261 warning (_("Value does not fit in %d bits."), bitsize);
c906108c
SS
2262
2263 /* Truncate it, otherwise adjoining fields may be corrupted. */
f4e88c8e 2264 fieldval &= mask;
c906108c
SS
2265 }
2266
19f220c3
JK
2267 /* Ensure no bytes outside of the modified ones get accessed as it may cause
2268 false valgrind reports. */
2269
2270 bytesize = (bitpos + bitsize + 7) / 8;
2271 oword = extract_unsigned_integer (addr, bytesize, byte_order);
c906108c
SS
2272
2273 /* Shifting for bit field depends on endianness of the target machine. */
50810684 2274 if (gdbarch_bits_big_endian (get_type_arch (type)))
19f220c3 2275 bitpos = bytesize * 8 - bitpos - bitsize;
c906108c 2276
f4e88c8e 2277 oword &= ~(mask << bitpos);
c906108c
SS
2278 oword |= fieldval << bitpos;
2279
19f220c3 2280 store_unsigned_integer (addr, bytesize, byte_order, oword);
c906108c
SS
2281}
2282\f
14d06750 2283/* Pack NUM into BUF using a target format of TYPE. */
c906108c 2284
14d06750
DJ
2285void
2286pack_long (gdb_byte *buf, struct type *type, LONGEST num)
c906108c 2287{
e17a4113 2288 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
52f0bd74 2289 int len;
14d06750
DJ
2290
2291 type = check_typedef (type);
c906108c
SS
2292 len = TYPE_LENGTH (type);
2293
14d06750 2294 switch (TYPE_CODE (type))
c906108c 2295 {
c906108c
SS
2296 case TYPE_CODE_INT:
2297 case TYPE_CODE_CHAR:
2298 case TYPE_CODE_ENUM:
4f2aea11 2299 case TYPE_CODE_FLAGS:
c906108c
SS
2300 case TYPE_CODE_BOOL:
2301 case TYPE_CODE_RANGE:
0d5de010 2302 case TYPE_CODE_MEMBERPTR:
e17a4113 2303 store_signed_integer (buf, len, byte_order, num);
c906108c 2304 break;
c5aa993b 2305
c906108c
SS
2306 case TYPE_CODE_REF:
2307 case TYPE_CODE_PTR:
14d06750 2308 store_typed_address (buf, type, (CORE_ADDR) num);
c906108c 2309 break;
c5aa993b 2310
c906108c 2311 default:
14d06750
DJ
2312 error (_("Unexpected type (%d) encountered for integer constant."),
2313 TYPE_CODE (type));
c906108c 2314 }
14d06750
DJ
2315}
2316
2317
595939de
PM
2318/* Pack NUM into BUF using a target format of TYPE. */
2319
2320void
2321pack_unsigned_long (gdb_byte *buf, struct type *type, ULONGEST num)
2322{
2323 int len;
2324 enum bfd_endian byte_order;
2325
2326 type = check_typedef (type);
2327 len = TYPE_LENGTH (type);
2328 byte_order = gdbarch_byte_order (get_type_arch (type));
2329
2330 switch (TYPE_CODE (type))
2331 {
2332 case TYPE_CODE_INT:
2333 case TYPE_CODE_CHAR:
2334 case TYPE_CODE_ENUM:
2335 case TYPE_CODE_FLAGS:
2336 case TYPE_CODE_BOOL:
2337 case TYPE_CODE_RANGE:
2338 case TYPE_CODE_MEMBERPTR:
2339 store_unsigned_integer (buf, len, byte_order, num);
2340 break;
2341
2342 case TYPE_CODE_REF:
2343 case TYPE_CODE_PTR:
2344 store_typed_address (buf, type, (CORE_ADDR) num);
2345 break;
2346
2347 default:
2348 error (_("\
2349Unexpected type (%d) encountered for unsigned integer constant."),
2350 TYPE_CODE (type));
2351 }
2352}
2353
2354
14d06750
DJ
2355/* Convert C numbers into newly allocated values. */
2356
2357struct value *
2358value_from_longest (struct type *type, LONGEST num)
2359{
2360 struct value *val = allocate_value (type);
2361
2362 pack_long (value_contents_raw (val), type, num);
c906108c
SS
2363 return val;
2364}
2365
4478b372 2366
595939de
PM
2367/* Convert C unsigned numbers into newly allocated values. */
2368
2369struct value *
2370value_from_ulongest (struct type *type, ULONGEST num)
2371{
2372 struct value *val = allocate_value (type);
2373
2374 pack_unsigned_long (value_contents_raw (val), type, num);
2375
2376 return val;
2377}
2378
2379
4478b372
JB
2380/* Create a value representing a pointer of type TYPE to the address
2381 ADDR. */
f23631e4 2382struct value *
4478b372
JB
2383value_from_pointer (struct type *type, CORE_ADDR addr)
2384{
f23631e4 2385 struct value *val = allocate_value (type);
a109c7c1 2386
cab0c772 2387 store_typed_address (value_contents_raw (val), check_typedef (type), addr);
4478b372
JB
2388 return val;
2389}
2390
2391
8acb6b92
TT
2392/* Create a value of type TYPE whose contents come from VALADDR, if it
2393 is non-null, and whose memory address (in the inferior) is
2394 ADDRESS. */
2395
2396struct value *
2397value_from_contents_and_address (struct type *type,
2398 const gdb_byte *valaddr,
2399 CORE_ADDR address)
2400{
2401 struct value *v = allocate_value (type);
a109c7c1 2402
8acb6b92
TT
2403 if (valaddr == NULL)
2404 set_value_lazy (v, 1);
2405 else
2406 memcpy (value_contents_raw (v), valaddr, TYPE_LENGTH (type));
42ae5230 2407 set_value_address (v, address);
33d502b4 2408 VALUE_LVAL (v) = lval_memory;
8acb6b92
TT
2409 return v;
2410}
2411
f23631e4 2412struct value *
fba45db2 2413value_from_double (struct type *type, DOUBLEST num)
c906108c 2414{
f23631e4 2415 struct value *val = allocate_value (type);
c906108c 2416 struct type *base_type = check_typedef (type);
52f0bd74 2417 enum type_code code = TYPE_CODE (base_type);
c906108c
SS
2418
2419 if (code == TYPE_CODE_FLT)
2420 {
990a07ab 2421 store_typed_floating (value_contents_raw (val), base_type, num);
c906108c
SS
2422 }
2423 else
8a3fe4f8 2424 error (_("Unexpected type encountered for floating constant."));
c906108c
SS
2425
2426 return val;
2427}
994b9211 2428
27bc4d80 2429struct value *
4ef30785 2430value_from_decfloat (struct type *type, const gdb_byte *dec)
27bc4d80
TJB
2431{
2432 struct value *val = allocate_value (type);
27bc4d80 2433
4ef30785 2434 memcpy (value_contents_raw (val), dec, TYPE_LENGTH (type));
27bc4d80
TJB
2435 return val;
2436}
2437
994b9211
AC
2438struct value *
2439coerce_ref (struct value *arg)
2440{
df407dfe 2441 struct type *value_type_arg_tmp = check_typedef (value_type (arg));
a109c7c1 2442
994b9211
AC
2443 if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
2444 arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
df407dfe 2445 unpack_pointer (value_type (arg),
0fd88904 2446 value_contents (arg)));
994b9211
AC
2447 return arg;
2448}
2449
2450struct value *
2451coerce_array (struct value *arg)
2452{
f3134b88
TT
2453 struct type *type;
2454
994b9211 2455 arg = coerce_ref (arg);
f3134b88
TT
2456 type = check_typedef (value_type (arg));
2457
2458 switch (TYPE_CODE (type))
2459 {
2460 case TYPE_CODE_ARRAY:
7346b668 2461 if (!TYPE_VECTOR (type) && current_language->c_style_arrays)
f3134b88
TT
2462 arg = value_coerce_array (arg);
2463 break;
2464 case TYPE_CODE_FUNC:
2465 arg = value_coerce_function (arg);
2466 break;
2467 }
994b9211
AC
2468 return arg;
2469}
c906108c 2470\f
c906108c 2471
48436ce6
AC
2472/* Return true if the function returning the specified type is using
2473 the convention of returning structures in memory (passing in the
82585c72 2474 address as a hidden first parameter). */
c906108c
SS
2475
2476int
d80b854b
UW
2477using_struct_return (struct gdbarch *gdbarch,
2478 struct type *func_type, struct type *value_type)
c906108c 2479{
52f0bd74 2480 enum type_code code = TYPE_CODE (value_type);
c906108c
SS
2481
2482 if (code == TYPE_CODE_ERROR)
8a3fe4f8 2483 error (_("Function return type unknown."));
c906108c 2484
667e784f
AC
2485 if (code == TYPE_CODE_VOID)
2486 /* A void return value is never in memory. See also corresponding
44e5158b 2487 code in "print_return_value". */
667e784f
AC
2488 return 0;
2489
92ad9cd9 2490 /* Probe the architecture for the return-value convention. */
d80b854b 2491 return (gdbarch_return_value (gdbarch, func_type, value_type,
92ad9cd9 2492 NULL, NULL, NULL)
31db7b6c 2493 != RETURN_VALUE_REGISTER_CONVENTION);
c906108c
SS
2494}
2495
42be36b3
CT
2496/* Set the initialized field in a value struct. */
2497
2498void
2499set_value_initialized (struct value *val, int status)
2500{
2501 val->initialized = status;
2502}
2503
2504/* Return the initialized field in a value struct. */
2505
2506int
2507value_initialized (struct value *val)
2508{
2509 return val->initialized;
2510}
2511
c906108c 2512void
fba45db2 2513_initialize_values (void)
c906108c 2514{
1a966eab
AC
2515 add_cmd ("convenience", no_class, show_convenience, _("\
2516Debugger convenience (\"$foo\") variables.\n\
c906108c 2517These variables are created when you assign them values;\n\
1a966eab
AC
2518thus, \"print $foo=1\" gives \"$foo\" the value 1. Values may be any type.\n\
2519\n\
c906108c
SS
2520A few convenience variables are given values automatically:\n\
2521\"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
1a966eab 2522\"$__\" holds the contents of the last address examined with \"x\"."),
c906108c
SS
2523 &showlist);
2524
2525 add_cmd ("values", no_class, show_values,
1a966eab 2526 _("Elements of value history around item number IDX (or last ten)."),
c906108c 2527 &showlist);
53e5f3cf
AS
2528
2529 add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\
2530Initialize a convenience variable if necessary.\n\
2531init-if-undefined VARIABLE = EXPRESSION\n\
2532Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\
2533exist or does not contain a value. The EXPRESSION is not evaluated if the\n\
2534VARIABLE is already initialized."));
bc3b79fd
TJB
2535
2536 add_prefix_cmd ("function", no_class, function_command, _("\
2537Placeholder command for showing help on convenience functions."),
2538 &functionlist, "function ", 0, &cmdlist);
c906108c 2539}
This page took 1.25181 seconds and 4 git commands to generate.