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