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