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