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