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