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