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