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