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