OSDN Git Service

2009-02-06 Pedro Alves <pedro@codesourcery.com>
[pf3gnuchains/pf3gnuchains4x.git] / gdb / value.c
1 /* Low level packing and unpacking of values for GDB, the GNU Debugger.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
5    2009 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "value.h"
27 #include "gdbcore.h"
28 #include "command.h"
29 #include "gdbcmd.h"
30 #include "target.h"
31 #include "language.h"
32 #include "demangle.h"
33 #include "doublest.h"
34 #include "gdb_assert.h"
35 #include "regcache.h"
36 #include "block.h"
37 #include "dfp.h"
38 #include "objfiles.h"
39 #include "valprint.h"
40
41 #include "python/python.h"
42
43 /* Prototypes for exported functions. */
44
45 void _initialize_values (void);
46
47 struct value
48 {
49   /* Type of value; either not an lval, or one of the various
50      different possible kinds of lval.  */
51   enum lval_type lval;
52
53   /* Is it modifiable?  Only relevant if lval != not_lval.  */
54   int modifiable;
55
56   /* Location of value (if lval).  */
57   union
58   {
59     /* If lval == lval_memory, this is the address in the inferior.
60        If lval == lval_register, this is the byte offset into the
61        registers structure.  */
62     CORE_ADDR address;
63
64     /* Pointer to internal variable.  */
65     struct internalvar *internalvar;
66
67     /* If lval == lval_computed, this is a set of function pointers
68        to use to access and describe the value, and a closure pointer
69        for them to use.  */
70     struct
71     {
72       struct lval_funcs *funcs; /* Functions to call.  */
73       void *closure;            /* Closure for those functions to use.  */
74     } computed;
75   } location;
76
77   /* Describes offset of a value within lval of a structure in bytes.
78      If lval == lval_memory, this is an offset to the address.  If
79      lval == lval_register, this is a further offset from
80      location.address within the registers structure.  Note also the
81      member embedded_offset below.  */
82   int offset;
83
84   /* Only used for bitfields; number of bits contained in them.  */
85   int bitsize;
86
87   /* Only used for bitfields; position of start of field.  For
88      gdbarch_bits_big_endian=0 targets, it is the position of the LSB.  For
89      gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */
90   int bitpos;
91
92   /* Frame register value is relative to.  This will be described in
93      the lval enum above as "lval_register".  */
94   struct frame_id frame_id;
95
96   /* Type of the value.  */
97   struct type *type;
98
99   /* If a value represents a C++ object, then the `type' field gives
100      the object's compile-time type.  If the object actually belongs
101      to some class derived from `type', perhaps with other base
102      classes and additional members, then `type' is just a subobject
103      of the real thing, and the full object is probably larger than
104      `type' would suggest.
105
106      If `type' is a dynamic class (i.e. one with a vtable), then GDB
107      can actually determine the object's run-time type by looking at
108      the run-time type information in the vtable.  When this
109      information is available, we may elect to read in the entire
110      object, for several reasons:
111
112      - When printing the value, the user would probably rather see the
113      full object, not just the limited portion apparent from the
114      compile-time type.
115
116      - If `type' has virtual base classes, then even printing `type'
117      alone may require reaching outside the `type' portion of the
118      object to wherever the virtual base class has been stored.
119
120      When we store the entire object, `enclosing_type' is the run-time
121      type -- the complete object -- and `embedded_offset' is the
122      offset of `type' within that larger type, in bytes.  The
123      value_contents() macro takes `embedded_offset' into account, so
124      most GDB code continues to see the `type' portion of the value,
125      just as the inferior would.
126
127      If `type' is a pointer to an object, then `enclosing_type' is a
128      pointer to the object's run-time type, and `pointed_to_offset' is
129      the offset in bytes from the full object to the pointed-to object
130      -- that is, the value `embedded_offset' would have if we followed
131      the pointer and fetched the complete object.  (I don't really see
132      the point.  Why not just determine the run-time type when you
133      indirect, and avoid the special case?  The contents don't matter
134      until you indirect anyway.)
135
136      If we're not doing anything fancy, `enclosing_type' is equal to
137      `type', and `embedded_offset' is zero, so everything works
138      normally.  */
139   struct type *enclosing_type;
140   int embedded_offset;
141   int pointed_to_offset;
142
143   /* Values are stored in a chain, so that they can be deleted easily
144      over calls to the inferior.  Values assigned to internal
145      variables, put into the value history or exposed to Python are
146      taken off this list.  */
147   struct value *next;
148
149   /* Register number if the value is from a register.  */
150   short regnum;
151
152   /* If zero, contents of this value are in the contents field.  If
153      nonzero, contents are in inferior.  If the lval field is lval_memory,
154      the contents are in inferior memory at location.address plus offset.
155      The lval field may also be lval_register.
156
157      WARNING: This field is used by the code which handles watchpoints
158      (see breakpoint.c) to decide whether a particular value can be
159      watched by hardware watchpoints.  If the lazy flag is set for
160      some member of a value chain, it is assumed that this member of
161      the chain doesn't need to be watched as part of watching the
162      value itself.  This is how GDB avoids watching the entire struct
163      or array when the user wants to watch a single struct member or
164      array element.  If you ever change the way lazy flag is set and
165      reset, be sure to consider this use as well!  */
166   char lazy;
167
168   /* If nonzero, this is the value of a variable which does not
169      actually exist in the program.  */
170   char optimized_out;
171
172   /* If value is a variable, is it initialized or not.  */
173   int initialized;
174
175   /* Actual contents of the value.  Target byte-order.  NULL or not
176      valid if lazy is nonzero.  */
177   gdb_byte *contents;
178 };
179
180 /* Prototypes for local functions. */
181
182 static void show_values (char *, int);
183
184 static void show_convenience (char *, int);
185
186
187 /* The value-history records all the values printed
188    by print commands during this session.  Each chunk
189    records 60 consecutive values.  The first chunk on
190    the chain records the most recent values.
191    The total number of values is in value_history_count.  */
192
193 #define VALUE_HISTORY_CHUNK 60
194
195 struct value_history_chunk
196   {
197     struct value_history_chunk *next;
198     struct value *values[VALUE_HISTORY_CHUNK];
199   };
200
201 /* Chain of chunks now in use.  */
202
203 static struct value_history_chunk *value_history_chain;
204
205 static int value_history_count; /* Abs number of last entry stored */
206 \f
207 /* List of all value objects currently allocated
208    (except for those released by calls to release_value)
209    This is so they can be freed after each command.  */
210
211 static struct value *all_values;
212
213 /* Allocate a lazy value for type TYPE.  Its actual content is
214    "lazily" allocated too: the content field of the return value is
215    NULL; it will be allocated when it is fetched from the target.  */
216
217 struct value *
218 allocate_value_lazy (struct type *type)
219 {
220   struct value *val;
221   struct type *atype = check_typedef (type);
222
223   val = (struct value *) xzalloc (sizeof (struct value));
224   val->contents = NULL;
225   val->next = all_values;
226   all_values = val;
227   val->type = type;
228   val->enclosing_type = type;
229   VALUE_LVAL (val) = not_lval;
230   VALUE_ADDRESS (val) = 0;
231   VALUE_FRAME_ID (val) = null_frame_id;
232   val->offset = 0;
233   val->bitpos = 0;
234   val->bitsize = 0;
235   VALUE_REGNUM (val) = -1;
236   val->lazy = 1;
237   val->optimized_out = 0;
238   val->embedded_offset = 0;
239   val->pointed_to_offset = 0;
240   val->modifiable = 1;
241   val->initialized = 1;  /* Default to initialized.  */
242   return val;
243 }
244
245 /* Allocate the contents of VAL if it has not been allocated yet.  */
246
247 void
248 allocate_value_contents (struct value *val)
249 {
250   if (!val->contents)
251     val->contents = (gdb_byte *) xzalloc (TYPE_LENGTH (val->enclosing_type));
252 }
253
254 /* Allocate a  value  and its contents for type TYPE.  */
255
256 struct value *
257 allocate_value (struct type *type)
258 {
259   struct value *val = allocate_value_lazy (type);
260   allocate_value_contents (val);
261   val->lazy = 0;
262   return val;
263 }
264
265 /* Allocate a  value  that has the correct length
266    for COUNT repetitions of type TYPE.  */
267
268 struct value *
269 allocate_repeat_value (struct type *type, int count)
270 {
271   int low_bound = current_language->string_lower_bound;         /* ??? */
272   /* FIXME-type-allocation: need a way to free this type when we are
273      done with it.  */
274   struct type *range_type
275   = create_range_type ((struct type *) NULL, builtin_type_int32,
276                        low_bound, count + low_bound - 1);
277   /* FIXME-type-allocation: need a way to free this type when we are
278      done with it.  */
279   return allocate_value (create_array_type ((struct type *) NULL,
280                                             type, range_type));
281 }
282
283 /* Needed if another module needs to maintain its on list of values.  */
284 void
285 value_prepend_to_list (struct value **head, struct value *val)
286 {
287   val->next = *head;
288   *head = val;
289 }
290
291 /* Needed if another module needs to maintain its on list of values.  */
292 void
293 value_remove_from_list (struct value **head, struct value *val)
294 {
295   struct value *prev;
296
297   if (*head == val)
298     *head = (*head)->next;
299   else
300     for (prev = *head; prev->next; prev = prev->next)
301       if (prev->next == val)
302       {
303         prev->next = val->next;
304         break;
305       }
306 }
307
308 struct value *
309 allocate_computed_value (struct type *type,
310                          struct lval_funcs *funcs,
311                          void *closure)
312 {
313   struct value *v = allocate_value (type);
314   VALUE_LVAL (v) = lval_computed;
315   v->location.computed.funcs = funcs;
316   v->location.computed.closure = closure;
317   set_value_lazy (v, 1);
318
319   return v;
320 }
321
322 /* Accessor methods.  */
323
324 struct value *
325 value_next (struct value *value)
326 {
327   return value->next;
328 }
329
330 struct type *
331 value_type (struct value *value)
332 {
333   return value->type;
334 }
335 void
336 deprecated_set_value_type (struct value *value, struct type *type)
337 {
338   value->type = type;
339 }
340
341 int
342 value_offset (struct value *value)
343 {
344   return value->offset;
345 }
346 void
347 set_value_offset (struct value *value, int offset)
348 {
349   value->offset = offset;
350 }
351
352 int
353 value_bitpos (struct value *value)
354 {
355   return value->bitpos;
356 }
357 void
358 set_value_bitpos (struct value *value, int bit)
359 {
360   value->bitpos = bit;
361 }
362
363 int
364 value_bitsize (struct value *value)
365 {
366   return value->bitsize;
367 }
368 void
369 set_value_bitsize (struct value *value, int bit)
370 {
371   value->bitsize = bit;
372 }
373
374 gdb_byte *
375 value_contents_raw (struct value *value)
376 {
377   allocate_value_contents (value);
378   return value->contents + value->embedded_offset;
379 }
380
381 gdb_byte *
382 value_contents_all_raw (struct value *value)
383 {
384   allocate_value_contents (value);
385   return value->contents;
386 }
387
388 struct type *
389 value_enclosing_type (struct value *value)
390 {
391   return value->enclosing_type;
392 }
393
394 const gdb_byte *
395 value_contents_all (struct value *value)
396 {
397   if (value->lazy)
398     value_fetch_lazy (value);
399   return value->contents;
400 }
401
402 int
403 value_lazy (struct value *value)
404 {
405   return value->lazy;
406 }
407
408 void
409 set_value_lazy (struct value *value, int val)
410 {
411   value->lazy = val;
412 }
413
414 const gdb_byte *
415 value_contents (struct value *value)
416 {
417   return value_contents_writeable (value);
418 }
419
420 gdb_byte *
421 value_contents_writeable (struct value *value)
422 {
423   if (value->lazy)
424     value_fetch_lazy (value);
425   return value_contents_raw (value);
426 }
427
428 /* Return non-zero if VAL1 and VAL2 have the same contents.  Note that
429    this function is different from value_equal; in C the operator ==
430    can return 0 even if the two values being compared are equal.  */
431
432 int
433 value_contents_equal (struct value *val1, struct value *val2)
434 {
435   struct type *type1;
436   struct type *type2;
437   int len;
438
439   type1 = check_typedef (value_type (val1));
440   type2 = check_typedef (value_type (val2));
441   len = TYPE_LENGTH (type1);
442   if (len != TYPE_LENGTH (type2))
443     return 0;
444
445   return (memcmp (value_contents (val1), value_contents (val2), len) == 0);
446 }
447
448 int
449 value_optimized_out (struct value *value)
450 {
451   return value->optimized_out;
452 }
453
454 void
455 set_value_optimized_out (struct value *value, int val)
456 {
457   value->optimized_out = val;
458 }
459
460 int
461 value_embedded_offset (struct value *value)
462 {
463   return value->embedded_offset;
464 }
465
466 void
467 set_value_embedded_offset (struct value *value, int val)
468 {
469   value->embedded_offset = val;
470 }
471
472 int
473 value_pointed_to_offset (struct value *value)
474 {
475   return value->pointed_to_offset;
476 }
477
478 void
479 set_value_pointed_to_offset (struct value *value, int val)
480 {
481   value->pointed_to_offset = val;
482 }
483
484 struct lval_funcs *
485 value_computed_funcs (struct value *v)
486 {
487   gdb_assert (VALUE_LVAL (v) == lval_computed);
488
489   return v->location.computed.funcs;
490 }
491
492 void *
493 value_computed_closure (struct value *v)
494 {
495   gdb_assert (VALUE_LVAL (v) == lval_computed);
496
497   return v->location.computed.closure;
498 }
499
500 enum lval_type *
501 deprecated_value_lval_hack (struct value *value)
502 {
503   return &value->lval;
504 }
505
506 CORE_ADDR *
507 deprecated_value_address_hack (struct value *value)
508 {
509   return &value->location.address;
510 }
511
512 struct internalvar **
513 deprecated_value_internalvar_hack (struct value *value)
514 {
515   return &value->location.internalvar;
516 }
517
518 struct frame_id *
519 deprecated_value_frame_id_hack (struct value *value)
520 {
521   return &value->frame_id;
522 }
523
524 short *
525 deprecated_value_regnum_hack (struct value *value)
526 {
527   return &value->regnum;
528 }
529
530 int
531 deprecated_value_modifiable (struct value *value)
532 {
533   return value->modifiable;
534 }
535 void
536 deprecated_set_value_modifiable (struct value *value, int modifiable)
537 {
538   value->modifiable = modifiable;
539 }
540 \f
541 /* Return a mark in the value chain.  All values allocated after the
542    mark is obtained (except for those released) are subject to being freed
543    if a subsequent value_free_to_mark is passed the mark.  */
544 struct value *
545 value_mark (void)
546 {
547   return all_values;
548 }
549
550 void
551 value_free (struct value *val)
552 {
553   if (val)
554     {
555       if (VALUE_LVAL (val) == lval_computed)
556         {
557           struct lval_funcs *funcs = val->location.computed.funcs;
558
559           if (funcs->free_closure)
560             funcs->free_closure (val);
561         }
562
563       xfree (val->contents);
564     }
565   xfree (val);
566 }
567
568 /* Free all values allocated since MARK was obtained by value_mark
569    (except for those released).  */
570 void
571 value_free_to_mark (struct value *mark)
572 {
573   struct value *val;
574   struct value *next;
575
576   for (val = all_values; val && val != mark; val = next)
577     {
578       next = val->next;
579       value_free (val);
580     }
581   all_values = val;
582 }
583
584 /* Free all the values that have been allocated (except for those released).
585    Called after each command, successful or not.  */
586
587 void
588 free_all_values (void)
589 {
590   struct value *val;
591   struct value *next;
592
593   for (val = all_values; val; val = next)
594     {
595       next = val->next;
596       value_free (val);
597     }
598
599   all_values = 0;
600 }
601
602 /* Remove VAL from the chain all_values
603    so it will not be freed automatically.  */
604
605 void
606 release_value (struct value *val)
607 {
608   struct value *v;
609
610   if (all_values == val)
611     {
612       all_values = val->next;
613       return;
614     }
615
616   for (v = all_values; v; v = v->next)
617     {
618       if (v->next == val)
619         {
620           v->next = val->next;
621           break;
622         }
623     }
624 }
625
626 /* Release all values up to mark  */
627 struct value *
628 value_release_to_mark (struct value *mark)
629 {
630   struct value *val;
631   struct value *next;
632
633   for (val = next = all_values; next; next = next->next)
634     if (next->next == mark)
635       {
636         all_values = next->next;
637         next->next = NULL;
638         return val;
639       }
640   all_values = 0;
641   return val;
642 }
643
644 /* Return a copy of the value ARG.
645    It contains the same contents, for same memory address,
646    but it's a different block of storage.  */
647
648 struct value *
649 value_copy (struct value *arg)
650 {
651   struct type *encl_type = value_enclosing_type (arg);
652   struct value *val;
653
654   if (value_lazy (arg))
655     val = allocate_value_lazy (encl_type);
656   else
657     val = allocate_value (encl_type);
658   val->type = arg->type;
659   VALUE_LVAL (val) = VALUE_LVAL (arg);
660   val->location = arg->location;
661   val->offset = arg->offset;
662   val->bitpos = arg->bitpos;
663   val->bitsize = arg->bitsize;
664   VALUE_FRAME_ID (val) = VALUE_FRAME_ID (arg);
665   VALUE_REGNUM (val) = VALUE_REGNUM (arg);
666   val->lazy = arg->lazy;
667   val->optimized_out = arg->optimized_out;
668   val->embedded_offset = value_embedded_offset (arg);
669   val->pointed_to_offset = arg->pointed_to_offset;
670   val->modifiable = arg->modifiable;
671   if (!value_lazy (val))
672     {
673       memcpy (value_contents_all_raw (val), value_contents_all_raw (arg),
674               TYPE_LENGTH (value_enclosing_type (arg)));
675
676     }
677   if (VALUE_LVAL (val) == lval_computed)
678     {
679       struct lval_funcs *funcs = val->location.computed.funcs;
680
681       if (funcs->copy_closure)
682         val->location.computed.closure = funcs->copy_closure (val);
683     }
684   return val;
685 }
686
687 void
688 set_value_component_location (struct value *component, struct value *whole)
689 {
690   if (VALUE_LVAL (whole) == lval_internalvar)
691     VALUE_LVAL (component) = lval_internalvar_component;
692   else
693     VALUE_LVAL (component) = VALUE_LVAL (whole);
694
695   component->location = whole->location;
696   if (VALUE_LVAL (whole) == lval_computed)
697     {
698       struct lval_funcs *funcs = whole->location.computed.funcs;
699
700       if (funcs->copy_closure)
701         component->location.computed.closure = funcs->copy_closure (whole);
702     }
703 }
704
705 \f
706 /* Access to the value history.  */
707
708 /* Record a new value in the value history.
709    Returns the absolute history index of the entry.
710    Result of -1 indicates the value was not saved; otherwise it is the
711    value history index of this new item.  */
712
713 int
714 record_latest_value (struct value *val)
715 {
716   int i;
717
718   /* We don't want this value to have anything to do with the inferior anymore.
719      In particular, "set $1 = 50" should not affect the variable from which
720      the value was taken, and fast watchpoints should be able to assume that
721      a value on the value history never changes.  */
722   if (value_lazy (val))
723     value_fetch_lazy (val);
724   /* We preserve VALUE_LVAL so that the user can find out where it was fetched
725      from.  This is a bit dubious, because then *&$1 does not just return $1
726      but the current contents of that location.  c'est la vie...  */
727   val->modifiable = 0;
728   release_value (val);
729
730   /* Here we treat value_history_count as origin-zero
731      and applying to the value being stored now.  */
732
733   i = value_history_count % VALUE_HISTORY_CHUNK;
734   if (i == 0)
735     {
736       struct value_history_chunk *new
737       = (struct value_history_chunk *)
738       xmalloc (sizeof (struct value_history_chunk));
739       memset (new->values, 0, sizeof new->values);
740       new->next = value_history_chain;
741       value_history_chain = new;
742     }
743
744   value_history_chain->values[i] = val;
745
746   /* Now we regard value_history_count as origin-one
747      and applying to the value just stored.  */
748
749   return ++value_history_count;
750 }
751
752 /* Return a copy of the value in the history with sequence number NUM.  */
753
754 struct value *
755 access_value_history (int num)
756 {
757   struct value_history_chunk *chunk;
758   int i;
759   int absnum = num;
760
761   if (absnum <= 0)
762     absnum += value_history_count;
763
764   if (absnum <= 0)
765     {
766       if (num == 0)
767         error (_("The history is empty."));
768       else if (num == 1)
769         error (_("There is only one value in the history."));
770       else
771         error (_("History does not go back to $$%d."), -num);
772     }
773   if (absnum > value_history_count)
774     error (_("History has not yet reached $%d."), absnum);
775
776   absnum--;
777
778   /* Now absnum is always absolute and origin zero.  */
779
780   chunk = value_history_chain;
781   for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK - absnum / VALUE_HISTORY_CHUNK;
782        i > 0; i--)
783     chunk = chunk->next;
784
785   return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]);
786 }
787
788 static void
789 show_values (char *num_exp, int from_tty)
790 {
791   int i;
792   struct value *val;
793   static int num = 1;
794
795   if (num_exp)
796     {
797       /* "show values +" should print from the stored position.
798          "show values <exp>" should print around value number <exp>.  */
799       if (num_exp[0] != '+' || num_exp[1] != '\0')
800         num = parse_and_eval_long (num_exp) - 5;
801     }
802   else
803     {
804       /* "show values" means print the last 10 values.  */
805       num = value_history_count - 9;
806     }
807
808   if (num <= 0)
809     num = 1;
810
811   for (i = num; i < num + 10 && i <= value_history_count; i++)
812     {
813       struct value_print_options opts;
814       val = access_value_history (i);
815       printf_filtered (("$%d = "), i);
816       get_user_print_options (&opts);
817       value_print (val, gdb_stdout, &opts);
818       printf_filtered (("\n"));
819     }
820
821   /* The next "show values +" should start after what we just printed.  */
822   num += 10;
823
824   /* Hitting just return after this command should do the same thing as
825      "show values +".  If num_exp is null, this is unnecessary, since
826      "show values +" is not useful after "show values".  */
827   if (from_tty && num_exp)
828     {
829       num_exp[0] = '+';
830       num_exp[1] = '\0';
831     }
832 }
833 \f
834 /* Internal variables.  These are variables within the debugger
835    that hold values assigned by debugger commands.
836    The user refers to them with a '$' prefix
837    that does not appear in the variable names stored internally.  */
838
839 static struct internalvar *internalvars;
840
841 /* If the variable does not already exist create it and give it the value given.
842    If no value is given then the default is zero.  */
843 static void
844 init_if_undefined_command (char* args, int from_tty)
845 {
846   struct internalvar* intvar;
847
848   /* Parse the expression - this is taken from set_command().  */
849   struct expression *expr = parse_expression (args);
850   register struct cleanup *old_chain =
851     make_cleanup (free_current_contents, &expr);
852
853   /* Validate the expression.
854      Was the expression an assignment?
855      Or even an expression at all?  */
856   if (expr->nelts == 0 || expr->elts[0].opcode != BINOP_ASSIGN)
857     error (_("Init-if-undefined requires an assignment expression."));
858
859   /* Extract the variable from the parsed expression.
860      In the case of an assign the lvalue will be in elts[1] and elts[2].  */
861   if (expr->elts[1].opcode != OP_INTERNALVAR)
862     error (_("The first parameter to init-if-undefined should be a GDB variable."));
863   intvar = expr->elts[2].internalvar;
864
865   /* Only evaluate the expression if the lvalue is void.
866      This may still fail if the expresssion is invalid.  */
867   if (TYPE_CODE (value_type (intvar->value)) == TYPE_CODE_VOID)
868     evaluate_expression (expr);
869
870   do_cleanups (old_chain);
871 }
872
873
874 /* Look up an internal variable with name NAME.  NAME should not
875    normally include a dollar sign.
876
877    If the specified internal variable does not exist,
878    the return value is NULL.  */
879
880 struct internalvar *
881 lookup_only_internalvar (char *name)
882 {
883   struct internalvar *var;
884
885   for (var = internalvars; var; var = var->next)
886     if (strcmp (var->name, name) == 0)
887       return var;
888
889   return NULL;
890 }
891
892
893 /* Create an internal variable with name NAME and with a void value.
894    NAME should not normally include a dollar sign.  */
895
896 struct internalvar *
897 create_internalvar (char *name)
898 {
899   struct internalvar *var;
900   var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
901   var->name = concat (name, (char *)NULL);
902   var->value = allocate_value (builtin_type_void);
903   var->endian = gdbarch_byte_order (current_gdbarch);
904   var->make_value = NULL;
905   release_value (var->value);
906   var->next = internalvars;
907   internalvars = var;
908   return var;
909 }
910
911 /* Create an internal variable with name NAME and register FUN as the
912    function that value_of_internalvar uses to create a value whenever
913    this variable is referenced.  NAME should not normally include a
914    dollar sign.  */
915
916 struct internalvar *
917 create_internalvar_type_lazy (char *name, internalvar_make_value fun)
918 {
919   struct internalvar *var;
920   var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
921   var->name = concat (name, (char *)NULL);
922   var->value = NULL;
923   var->make_value = fun;
924   var->endian = gdbarch_byte_order (current_gdbarch);
925   var->next = internalvars;
926   internalvars = var;
927   return var;
928 }
929
930 /* Look up an internal variable with name NAME.  NAME should not
931    normally include a dollar sign.
932
933    If the specified internal variable does not exist,
934    one is created, with a void value.  */
935
936 struct internalvar *
937 lookup_internalvar (char *name)
938 {
939   struct internalvar *var;
940
941   var = lookup_only_internalvar (name);
942   if (var)
943     return var;
944
945   return create_internalvar (name);
946 }
947
948 struct value *
949 value_of_internalvar (struct internalvar *var)
950 {
951   struct value *val;
952   int i, j;
953   gdb_byte temp;
954
955   if (var->make_value != NULL)
956     val = (*var->make_value) (var);
957   else
958     {
959       val = value_copy (var->value);
960       if (value_lazy (val))
961         value_fetch_lazy (val);
962
963       /* If the variable's value is a computed lvalue, we want
964          references to it to produce another computed lvalue, where
965          referencces and assignments actually operate through the
966          computed value's functions.
967
968          This means that internal variables with computed values
969          behave a little differently from other internal variables:
970          assignments to them don't just replace the previous value
971          altogether.  At the moment, this seems like the behavior we
972          want.  */
973       if (var->value->lval == lval_computed)
974         VALUE_LVAL (val) = lval_computed;
975       else
976         {
977           VALUE_LVAL (val) = lval_internalvar;
978           VALUE_INTERNALVAR (val) = var;
979         }
980     }
981
982   /* Values are always stored in the target's byte order.  When connected to a
983      target this will most likely always be correct, so there's normally no
984      need to worry about it.
985
986      However, internal variables can be set up before the target endian is
987      known and so may become out of date.  Fix it up before anybody sees.
988
989      Internal variables usually hold simple scalar values, and we can
990      correct those.  More complex values (e.g. structures and floating
991      point types) are left alone, because they would be too complicated
992      to correct.  */
993
994   if (var->endian != gdbarch_byte_order (current_gdbarch))
995     {
996       gdb_byte *array = value_contents_raw (val);
997       struct type *type = check_typedef (value_enclosing_type (val));
998       switch (TYPE_CODE (type))
999         {
1000         case TYPE_CODE_INT:
1001         case TYPE_CODE_PTR:
1002           /* Reverse the bytes.  */
1003           for (i = 0, j = TYPE_LENGTH (type) - 1; i < j; i++, j--)
1004             {
1005               temp = array[j];
1006               array[j] = array[i];
1007               array[i] = temp;
1008             }
1009           break;
1010         }
1011     }
1012
1013   return val;
1014 }
1015
1016 void
1017 set_internalvar_component (struct internalvar *var, int offset, int bitpos,
1018                            int bitsize, struct value *newval)
1019 {
1020   gdb_byte *addr = value_contents_writeable (var->value) + offset;
1021
1022   if (bitsize)
1023     modify_field (addr, value_as_long (newval),
1024                   bitpos, bitsize);
1025   else
1026     memcpy (addr, value_contents (newval), TYPE_LENGTH (value_type (newval)));
1027 }
1028
1029 void
1030 set_internalvar (struct internalvar *var, struct value *val)
1031 {
1032   struct value *newval;
1033
1034   newval = value_copy (val);
1035   newval->modifiable = 1;
1036
1037   /* Force the value to be fetched from the target now, to avoid problems
1038      later when this internalvar is referenced and the target is gone or
1039      has changed.  */
1040   if (value_lazy (newval))
1041     value_fetch_lazy (newval);
1042
1043   /* Begin code which must not call error().  If var->value points to
1044      something free'd, an error() obviously leaves a dangling pointer.
1045      But we also get a danling pointer if var->value points to
1046      something in the value chain (i.e., before release_value is
1047      called), because after the error free_all_values will get called before
1048      long.  */
1049   value_free (var->value);
1050   var->value = newval;
1051   var->endian = gdbarch_byte_order (current_gdbarch);
1052   release_value (newval);
1053   /* End code which must not call error().  */
1054 }
1055
1056 char *
1057 internalvar_name (struct internalvar *var)
1058 {
1059   return var->name;
1060 }
1061
1062 /* Update VALUE before discarding OBJFILE.  COPIED_TYPES is used to
1063    prevent cycles / duplicates.  */
1064
1065 static void
1066 preserve_one_value (struct value *value, struct objfile *objfile,
1067                     htab_t copied_types)
1068 {
1069   if (TYPE_OBJFILE (value->type) == objfile)
1070     value->type = copy_type_recursive (objfile, value->type, copied_types);
1071
1072   if (TYPE_OBJFILE (value->enclosing_type) == objfile)
1073     value->enclosing_type = copy_type_recursive (objfile,
1074                                                  value->enclosing_type,
1075                                                  copied_types);
1076 }
1077
1078 /* Update the internal variables and value history when OBJFILE is
1079    discarded; we must copy the types out of the objfile.  New global types
1080    will be created for every convenience variable which currently points to
1081    this objfile's types, and the convenience variables will be adjusted to
1082    use the new global types.  */
1083
1084 void
1085 preserve_values (struct objfile *objfile)
1086 {
1087   htab_t copied_types;
1088   struct value_history_chunk *cur;
1089   struct internalvar *var;
1090   struct value *val;
1091   int i;
1092
1093   /* Create the hash table.  We allocate on the objfile's obstack, since
1094      it is soon to be deleted.  */
1095   copied_types = create_copied_types_hash (objfile);
1096
1097   for (cur = value_history_chain; cur; cur = cur->next)
1098     for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
1099       if (cur->values[i])
1100         preserve_one_value (cur->values[i], objfile, copied_types);
1101
1102   for (var = internalvars; var; var = var->next)
1103     if (var->value)
1104       preserve_one_value (var->value, objfile, copied_types);
1105
1106   for (val = values_in_python; val; val = val->next)
1107     preserve_one_value (val, objfile, copied_types);
1108
1109   htab_delete (copied_types);
1110 }
1111
1112 static void
1113 show_convenience (char *ignore, int from_tty)
1114 {
1115   struct internalvar *var;
1116   int varseen = 0;
1117   struct value_print_options opts;
1118
1119   get_user_print_options (&opts);
1120   for (var = internalvars; var; var = var->next)
1121     {
1122       if (!varseen)
1123         {
1124           varseen = 1;
1125         }
1126       printf_filtered (("$%s = "), var->name);
1127       value_print (value_of_internalvar (var), gdb_stdout,
1128                    &opts);
1129       printf_filtered (("\n"));
1130     }
1131   if (!varseen)
1132     printf_unfiltered (_("\
1133 No debugger convenience variables now defined.\n\
1134 Convenience variables have names starting with \"$\";\n\
1135 use \"set\" as in \"set $foo = 5\" to define them.\n"));
1136 }
1137 \f
1138 /* Extract a value as a C number (either long or double).
1139    Knows how to convert fixed values to double, or
1140    floating values to long.
1141    Does not deallocate the value.  */
1142
1143 LONGEST
1144 value_as_long (struct value *val)
1145 {
1146   /* This coerces arrays and functions, which is necessary (e.g.
1147      in disassemble_command).  It also dereferences references, which
1148      I suspect is the most logical thing to do.  */
1149   val = coerce_array (val);
1150   return unpack_long (value_type (val), value_contents (val));
1151 }
1152
1153 DOUBLEST
1154 value_as_double (struct value *val)
1155 {
1156   DOUBLEST foo;
1157   int inv;
1158
1159   foo = unpack_double (value_type (val), value_contents (val), &inv);
1160   if (inv)
1161     error (_("Invalid floating value found in program."));
1162   return foo;
1163 }
1164
1165 /* Extract a value as a C pointer. Does not deallocate the value.  
1166    Note that val's type may not actually be a pointer; value_as_long
1167    handles all the cases.  */
1168 CORE_ADDR
1169 value_as_address (struct value *val)
1170 {
1171   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1172      whether we want this to be true eventually.  */
1173 #if 0
1174   /* gdbarch_addr_bits_remove is wrong if we are being called for a
1175      non-address (e.g. argument to "signal", "info break", etc.), or
1176      for pointers to char, in which the low bits *are* significant.  */
1177   return gdbarch_addr_bits_remove (current_gdbarch, value_as_long (val));
1178 #else
1179
1180   /* There are several targets (IA-64, PowerPC, and others) which
1181      don't represent pointers to functions as simply the address of
1182      the function's entry point.  For example, on the IA-64, a
1183      function pointer points to a two-word descriptor, generated by
1184      the linker, which contains the function's entry point, and the
1185      value the IA-64 "global pointer" register should have --- to
1186      support position-independent code.  The linker generates
1187      descriptors only for those functions whose addresses are taken.
1188
1189      On such targets, it's difficult for GDB to convert an arbitrary
1190      function address into a function pointer; it has to either find
1191      an existing descriptor for that function, or call malloc and
1192      build its own.  On some targets, it is impossible for GDB to
1193      build a descriptor at all: the descriptor must contain a jump
1194      instruction; data memory cannot be executed; and code memory
1195      cannot be modified.
1196
1197      Upon entry to this function, if VAL is a value of type `function'
1198      (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then
1199      VALUE_ADDRESS (val) is the address of the function.  This is what
1200      you'll get if you evaluate an expression like `main'.  The call
1201      to COERCE_ARRAY below actually does all the usual unary
1202      conversions, which includes converting values of type `function'
1203      to `pointer to function'.  This is the challenging conversion
1204      discussed above.  Then, `unpack_long' will convert that pointer
1205      back into an address.
1206
1207      So, suppose the user types `disassemble foo' on an architecture
1208      with a strange function pointer representation, on which GDB
1209      cannot build its own descriptors, and suppose further that `foo'
1210      has no linker-built descriptor.  The address->pointer conversion
1211      will signal an error and prevent the command from running, even
1212      though the next step would have been to convert the pointer
1213      directly back into the same address.
1214
1215      The following shortcut avoids this whole mess.  If VAL is a
1216      function, just return its address directly.  */
1217   if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1218       || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
1219     return VALUE_ADDRESS (val);
1220
1221   val = coerce_array (val);
1222
1223   /* Some architectures (e.g. Harvard), map instruction and data
1224      addresses onto a single large unified address space.  For
1225      instance: An architecture may consider a large integer in the
1226      range 0x10000000 .. 0x1000ffff to already represent a data
1227      addresses (hence not need a pointer to address conversion) while
1228      a small integer would still need to be converted integer to
1229      pointer to address.  Just assume such architectures handle all
1230      integer conversions in a single function.  */
1231
1232   /* JimB writes:
1233
1234      I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we
1235      must admonish GDB hackers to make sure its behavior matches the
1236      compiler's, whenever possible.
1237
1238      In general, I think GDB should evaluate expressions the same way
1239      the compiler does.  When the user copies an expression out of
1240      their source code and hands it to a `print' command, they should
1241      get the same value the compiler would have computed.  Any
1242      deviation from this rule can cause major confusion and annoyance,
1243      and needs to be justified carefully.  In other words, GDB doesn't
1244      really have the freedom to do these conversions in clever and
1245      useful ways.
1246
1247      AndrewC pointed out that users aren't complaining about how GDB
1248      casts integers to pointers; they are complaining that they can't
1249      take an address from a disassembly listing and give it to `x/i'.
1250      This is certainly important.
1251
1252      Adding an architecture method like integer_to_address() certainly
1253      makes it possible for GDB to "get it right" in all circumstances
1254      --- the target has complete control over how things get done, so
1255      people can Do The Right Thing for their target without breaking
1256      anyone else.  The standard doesn't specify how integers get
1257      converted to pointers; usually, the ABI doesn't either, but
1258      ABI-specific code is a more reasonable place to handle it.  */
1259
1260   if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
1261       && TYPE_CODE (value_type (val)) != TYPE_CODE_REF
1262       && gdbarch_integer_to_address_p (current_gdbarch))
1263     return gdbarch_integer_to_address (current_gdbarch, value_type (val),
1264                                        value_contents (val));
1265
1266   return unpack_long (value_type (val), value_contents (val));
1267 #endif
1268 }
1269 \f
1270 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
1271    as a long, or as a double, assuming the raw data is described
1272    by type TYPE.  Knows how to convert different sizes of values
1273    and can convert between fixed and floating point.  We don't assume
1274    any alignment for the raw data.  Return value is in host byte order.
1275
1276    If you want functions and arrays to be coerced to pointers, and
1277    references to be dereferenced, call value_as_long() instead.
1278
1279    C++: It is assumed that the front-end has taken care of
1280    all matters concerning pointers to members.  A pointer
1281    to member which reaches here is considered to be equivalent
1282    to an INT (or some size).  After all, it is only an offset.  */
1283
1284 LONGEST
1285 unpack_long (struct type *type, const gdb_byte *valaddr)
1286 {
1287   enum type_code code = TYPE_CODE (type);
1288   int len = TYPE_LENGTH (type);
1289   int nosign = TYPE_UNSIGNED (type);
1290
1291   switch (code)
1292     {
1293     case TYPE_CODE_TYPEDEF:
1294       return unpack_long (check_typedef (type), valaddr);
1295     case TYPE_CODE_ENUM:
1296     case TYPE_CODE_FLAGS:
1297     case TYPE_CODE_BOOL:
1298     case TYPE_CODE_INT:
1299     case TYPE_CODE_CHAR:
1300     case TYPE_CODE_RANGE:
1301     case TYPE_CODE_MEMBERPTR:
1302       if (nosign)
1303         return extract_unsigned_integer (valaddr, len);
1304       else
1305         return extract_signed_integer (valaddr, len);
1306
1307     case TYPE_CODE_FLT:
1308       return extract_typed_floating (valaddr, type);
1309
1310     case TYPE_CODE_DECFLOAT:
1311       /* libdecnumber has a function to convert from decimal to integer, but
1312          it doesn't work when the decimal number has a fractional part.  */
1313       return decimal_to_doublest (valaddr, len);
1314
1315     case TYPE_CODE_PTR:
1316     case TYPE_CODE_REF:
1317       /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1318          whether we want this to be true eventually.  */
1319       return extract_typed_address (valaddr, type);
1320
1321     default:
1322       error (_("Value can't be converted to integer."));
1323     }
1324   return 0;                     /* Placate lint.  */
1325 }
1326
1327 /* Return a double value from the specified type and address.
1328    INVP points to an int which is set to 0 for valid value,
1329    1 for invalid value (bad float format).  In either case,
1330    the returned double is OK to use.  Argument is in target
1331    format, result is in host format.  */
1332
1333 DOUBLEST
1334 unpack_double (struct type *type, const gdb_byte *valaddr, int *invp)
1335 {
1336   enum type_code code;
1337   int len;
1338   int nosign;
1339
1340   *invp = 0;                    /* Assume valid.   */
1341   CHECK_TYPEDEF (type);
1342   code = TYPE_CODE (type);
1343   len = TYPE_LENGTH (type);
1344   nosign = TYPE_UNSIGNED (type);
1345   if (code == TYPE_CODE_FLT)
1346     {
1347       /* NOTE: cagney/2002-02-19: There was a test here to see if the
1348          floating-point value was valid (using the macro
1349          INVALID_FLOAT).  That test/macro have been removed.
1350
1351          It turns out that only the VAX defined this macro and then
1352          only in a non-portable way.  Fixing the portability problem
1353          wouldn't help since the VAX floating-point code is also badly
1354          bit-rotten.  The target needs to add definitions for the
1355          methods gdbarch_float_format and gdbarch_double_format - these
1356          exactly describe the target floating-point format.  The
1357          problem here is that the corresponding floatformat_vax_f and
1358          floatformat_vax_d values these methods should be set to are
1359          also not defined either.  Oops!
1360
1361          Hopefully someone will add both the missing floatformat
1362          definitions and the new cases for floatformat_is_valid ().  */
1363
1364       if (!floatformat_is_valid (floatformat_from_type (type), valaddr))
1365         {
1366           *invp = 1;
1367           return 0.0;
1368         }
1369
1370       return extract_typed_floating (valaddr, type);
1371     }
1372   else if (code == TYPE_CODE_DECFLOAT)
1373     return decimal_to_doublest (valaddr, len);
1374   else if (nosign)
1375     {
1376       /* Unsigned -- be sure we compensate for signed LONGEST.  */
1377       return (ULONGEST) unpack_long (type, valaddr);
1378     }
1379   else
1380     {
1381       /* Signed -- we are OK with unpack_long.  */
1382       return unpack_long (type, valaddr);
1383     }
1384 }
1385
1386 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
1387    as a CORE_ADDR, assuming the raw data is described by type TYPE.
1388    We don't assume any alignment for the raw data.  Return value is in
1389    host byte order.
1390
1391    If you want functions and arrays to be coerced to pointers, and
1392    references to be dereferenced, call value_as_address() instead.
1393
1394    C++: It is assumed that the front-end has taken care of
1395    all matters concerning pointers to members.  A pointer
1396    to member which reaches here is considered to be equivalent
1397    to an INT (or some size).  After all, it is only an offset.  */
1398
1399 CORE_ADDR
1400 unpack_pointer (struct type *type, const gdb_byte *valaddr)
1401 {
1402   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1403      whether we want this to be true eventually.  */
1404   return unpack_long (type, valaddr);
1405 }
1406
1407 \f
1408 /* Get the value of the FIELDN'th field (which must be static) of
1409    TYPE.  Return NULL if the field doesn't exist or has been
1410    optimized out. */
1411
1412 struct value *
1413 value_static_field (struct type *type, int fieldno)
1414 {
1415   struct value *retval;
1416
1417   if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
1418     {
1419       retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
1420                          TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1421     }
1422   else
1423     {
1424       char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
1425       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
1426       if (sym == NULL)
1427         {
1428           /* With some compilers, e.g. HP aCC, static data members are reported
1429              as non-debuggable symbols */
1430           struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, NULL, NULL);
1431           if (!msym)
1432             return NULL;
1433           else
1434             {
1435               retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
1436                                  SYMBOL_VALUE_ADDRESS (msym));
1437             }
1438         }
1439       else
1440         {
1441           /* SYM should never have a SYMBOL_CLASS which will require
1442              read_var_value to use the FRAME parameter.  */
1443           if (symbol_read_needs_frame (sym))
1444             warning (_("static field's value depends on the current "
1445                      "frame - bad debug info?"));
1446           retval = read_var_value (sym, NULL);
1447         }
1448       if (retval && VALUE_LVAL (retval) == lval_memory)
1449         SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno),
1450                             VALUE_ADDRESS (retval));
1451     }
1452   return retval;
1453 }
1454
1455 /* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE.  
1456    You have to be careful here, since the size of the data area for the value 
1457    is set by the length of the enclosing type.  So if NEW_ENCL_TYPE is bigger 
1458    than the old enclosing type, you have to allocate more space for the data.  
1459    The return value is a pointer to the new version of this value structure. */
1460
1461 struct value *
1462 value_change_enclosing_type (struct value *val, struct type *new_encl_type)
1463 {
1464   if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val))) 
1465     val->contents =
1466       (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
1467
1468   val->enclosing_type = new_encl_type;
1469   return val;
1470 }
1471
1472 /* Given a value ARG1 (offset by OFFSET bytes)
1473    of a struct or union type ARG_TYPE,
1474    extract and return the value of one of its (non-static) fields.
1475    FIELDNO says which field. */
1476
1477 struct value *
1478 value_primitive_field (struct value *arg1, int offset,
1479                        int fieldno, struct type *arg_type)
1480 {
1481   struct value *v;
1482   struct type *type;
1483
1484   CHECK_TYPEDEF (arg_type);
1485   type = TYPE_FIELD_TYPE (arg_type, fieldno);
1486
1487   /* Handle packed fields */
1488
1489   if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
1490     {
1491       v = value_from_longest (type,
1492                               unpack_field_as_long (arg_type,
1493                                                     value_contents (arg1)
1494                                                     + offset,
1495                                                     fieldno));
1496       v->bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno) % 8;
1497       v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno);
1498       v->offset = value_offset (arg1) + offset
1499         + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1500     }
1501   else if (fieldno < TYPE_N_BASECLASSES (arg_type))
1502     {
1503       /* This field is actually a base subobject, so preserve the
1504          entire object's contents for later references to virtual
1505          bases, etc.  */
1506
1507       /* Lazy register values with offsets are not supported.  */
1508       if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
1509         value_fetch_lazy (arg1);
1510
1511       if (value_lazy (arg1))
1512         v = allocate_value_lazy (value_enclosing_type (arg1));
1513       else
1514         {
1515           v = allocate_value (value_enclosing_type (arg1));
1516           memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
1517                   TYPE_LENGTH (value_enclosing_type (arg1)));
1518         }
1519       v->type = type;
1520       v->offset = value_offset (arg1);
1521       v->embedded_offset = (offset + value_embedded_offset (arg1)
1522                             + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8);
1523     }
1524   else
1525     {
1526       /* Plain old data member */
1527       offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1528
1529       /* Lazy register values with offsets are not supported.  */
1530       if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
1531         value_fetch_lazy (arg1);
1532
1533       if (value_lazy (arg1))
1534         v = allocate_value_lazy (type);
1535       else
1536         {
1537           v = allocate_value (type);
1538           memcpy (value_contents_raw (v),
1539                   value_contents_raw (arg1) + offset,
1540                   TYPE_LENGTH (type));
1541         }
1542       v->offset = (value_offset (arg1) + offset
1543                    + value_embedded_offset (arg1));
1544     }
1545   set_value_component_location (v, arg1);
1546   VALUE_REGNUM (v) = VALUE_REGNUM (arg1);
1547   VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1);
1548   return v;
1549 }
1550
1551 /* Given a value ARG1 of a struct or union type,
1552    extract and return the value of one of its (non-static) fields.
1553    FIELDNO says which field. */
1554
1555 struct value *
1556 value_field (struct value *arg1, int fieldno)
1557 {
1558   return value_primitive_field (arg1, 0, fieldno, value_type (arg1));
1559 }
1560
1561 /* Return a non-virtual function as a value.
1562    F is the list of member functions which contains the desired method.
1563    J is an index into F which provides the desired method.
1564
1565    We only use the symbol for its address, so be happy with either a
1566    full symbol or a minimal symbol.
1567  */
1568
1569 struct value *
1570 value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type,
1571                 int offset)
1572 {
1573   struct value *v;
1574   struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
1575   char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
1576   struct symbol *sym;
1577   struct minimal_symbol *msym;
1578
1579   sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0);
1580   if (sym != NULL)
1581     {
1582       msym = NULL;
1583     }
1584   else
1585     {
1586       gdb_assert (sym == NULL);
1587       msym = lookup_minimal_symbol (physname, NULL, NULL);
1588       if (msym == NULL)
1589         return NULL;
1590     }
1591
1592   v = allocate_value (ftype);
1593   if (sym)
1594     {
1595       VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1596     }
1597   else
1598     {
1599       /* The minimal symbol might point to a function descriptor;
1600          resolve it to the actual code address instead.  */
1601       struct objfile *objfile = msymbol_objfile (msym);
1602       struct gdbarch *gdbarch = get_objfile_arch (objfile);
1603
1604       VALUE_ADDRESS (v)
1605         = gdbarch_convert_from_func_ptr_addr
1606            (gdbarch, SYMBOL_VALUE_ADDRESS (msym), &current_target);
1607     }
1608
1609   if (arg1p)
1610     {
1611       if (type != value_type (*arg1p))
1612         *arg1p = value_ind (value_cast (lookup_pointer_type (type),
1613                                         value_addr (*arg1p)));
1614
1615       /* Move the `this' pointer according to the offset.
1616          VALUE_OFFSET (*arg1p) += offset;
1617        */
1618     }
1619
1620   return v;
1621 }
1622
1623 \f
1624 /* Unpack a field FIELDNO of the specified TYPE, from the anonymous object at
1625    VALADDR.
1626
1627    Extracting bits depends on endianness of the machine.  Compute the
1628    number of least significant bits to discard.  For big endian machines,
1629    we compute the total number of bits in the anonymous object, subtract
1630    off the bit count from the MSB of the object to the MSB of the
1631    bitfield, then the size of the bitfield, which leaves the LSB discard
1632    count.  For little endian machines, the discard count is simply the
1633    number of bits from the LSB of the anonymous object to the LSB of the
1634    bitfield.
1635
1636    If the field is signed, we also do sign extension. */
1637
1638 LONGEST
1639 unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno)
1640 {
1641   ULONGEST val;
1642   ULONGEST valmask;
1643   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
1644   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
1645   int lsbcount;
1646   struct type *field_type;
1647
1648   val = extract_unsigned_integer (valaddr + bitpos / 8, sizeof (val));
1649   field_type = TYPE_FIELD_TYPE (type, fieldno);
1650   CHECK_TYPEDEF (field_type);
1651
1652   /* Extract bits.  See comment above. */
1653
1654   if (gdbarch_bits_big_endian (current_gdbarch))
1655     lsbcount = (sizeof val * 8 - bitpos % 8 - bitsize);
1656   else
1657     lsbcount = (bitpos % 8);
1658   val >>= lsbcount;
1659
1660   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
1661      If the field is signed, and is negative, then sign extend. */
1662
1663   if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val)))
1664     {
1665       valmask = (((ULONGEST) 1) << bitsize) - 1;
1666       val &= valmask;
1667       if (!TYPE_UNSIGNED (field_type))
1668         {
1669           if (val & (valmask ^ (valmask >> 1)))
1670             {
1671               val |= ~valmask;
1672             }
1673         }
1674     }
1675   return (val);
1676 }
1677
1678 /* Modify the value of a bitfield.  ADDR points to a block of memory in
1679    target byte order; the bitfield starts in the byte pointed to.  FIELDVAL
1680    is the desired value of the field, in host byte order.  BITPOS and BITSIZE
1681    indicate which bits (in target bit order) comprise the bitfield.  
1682    Requires 0 < BITSIZE <= lbits, 0 <= BITPOS+BITSIZE <= lbits, and
1683    0 <= BITPOS, where lbits is the size of a LONGEST in bits.  */
1684
1685 void
1686 modify_field (gdb_byte *addr, LONGEST fieldval, int bitpos, int bitsize)
1687 {
1688   ULONGEST oword;
1689   ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
1690
1691   /* If a negative fieldval fits in the field in question, chop
1692      off the sign extension bits.  */
1693   if ((~fieldval & ~(mask >> 1)) == 0)
1694     fieldval &= mask;
1695
1696   /* Warn if value is too big to fit in the field in question.  */
1697   if (0 != (fieldval & ~mask))
1698     {
1699       /* FIXME: would like to include fieldval in the message, but
1700          we don't have a sprintf_longest.  */
1701       warning (_("Value does not fit in %d bits."), bitsize);
1702
1703       /* Truncate it, otherwise adjoining fields may be corrupted.  */
1704       fieldval &= mask;
1705     }
1706
1707   oword = extract_unsigned_integer (addr, sizeof oword);
1708
1709   /* Shifting for bit field depends on endianness of the target machine.  */
1710   if (gdbarch_bits_big_endian (current_gdbarch))
1711     bitpos = sizeof (oword) * 8 - bitpos - bitsize;
1712
1713   oword &= ~(mask << bitpos);
1714   oword |= fieldval << bitpos;
1715
1716   store_unsigned_integer (addr, sizeof oword, oword);
1717 }
1718 \f
1719 /* Pack NUM into BUF using a target format of TYPE.  */
1720
1721 void
1722 pack_long (gdb_byte *buf, struct type *type, LONGEST num)
1723 {
1724   int len;
1725
1726   type = check_typedef (type);
1727   len = TYPE_LENGTH (type);
1728
1729   switch (TYPE_CODE (type))
1730     {
1731     case TYPE_CODE_INT:
1732     case TYPE_CODE_CHAR:
1733     case TYPE_CODE_ENUM:
1734     case TYPE_CODE_FLAGS:
1735     case TYPE_CODE_BOOL:
1736     case TYPE_CODE_RANGE:
1737     case TYPE_CODE_MEMBERPTR:
1738       store_signed_integer (buf, len, num);
1739       break;
1740
1741     case TYPE_CODE_REF:
1742     case TYPE_CODE_PTR:
1743       store_typed_address (buf, type, (CORE_ADDR) num);
1744       break;
1745
1746     default:
1747       error (_("Unexpected type (%d) encountered for integer constant."),
1748              TYPE_CODE (type));
1749     }
1750 }
1751
1752
1753 /* Convert C numbers into newly allocated values.  */
1754
1755 struct value *
1756 value_from_longest (struct type *type, LONGEST num)
1757 {
1758   struct value *val = allocate_value (type);
1759
1760   pack_long (value_contents_raw (val), type, num);
1761
1762   return val;
1763 }
1764
1765
1766 /* Create a value representing a pointer of type TYPE to the address
1767    ADDR.  */
1768 struct value *
1769 value_from_pointer (struct type *type, CORE_ADDR addr)
1770 {
1771   struct value *val = allocate_value (type);
1772   store_typed_address (value_contents_raw (val), type, addr);
1773   return val;
1774 }
1775
1776
1777 /* Create a value for a string constant to be stored locally
1778    (not in the inferior's memory space, but in GDB memory).
1779    This is analogous to value_from_longest, which also does not
1780    use inferior memory.  String shall NOT contain embedded nulls.  */
1781
1782 struct value *
1783 value_from_string (char *ptr)
1784 {
1785   struct value *val;
1786   int len = strlen (ptr);
1787   int lowbound = current_language->string_lower_bound;
1788   struct type *string_char_type;
1789   struct type *rangetype;
1790   struct type *stringtype;
1791
1792   rangetype = create_range_type ((struct type *) NULL,
1793                                  builtin_type_int32,
1794                                  lowbound, len + lowbound - 1);
1795   string_char_type = language_string_char_type (current_language,
1796                                                 current_gdbarch);
1797   stringtype = create_array_type ((struct type *) NULL,
1798                                   string_char_type,
1799                                   rangetype);
1800   val = allocate_value (stringtype);
1801   memcpy (value_contents_raw (val), ptr, len);
1802   return val;
1803 }
1804
1805 /* Create a value of type TYPE whose contents come from VALADDR, if it
1806    is non-null, and whose memory address (in the inferior) is
1807    ADDRESS.  */
1808
1809 struct value *
1810 value_from_contents_and_address (struct type *type,
1811                                  const gdb_byte *valaddr,
1812                                  CORE_ADDR address)
1813 {
1814   struct value *v = allocate_value (type);
1815   if (valaddr == NULL)
1816     set_value_lazy (v, 1);
1817   else
1818     memcpy (value_contents_raw (v), valaddr, TYPE_LENGTH (type));
1819   VALUE_ADDRESS (v) = address;
1820   VALUE_LVAL (v) = lval_memory;
1821   return v;
1822 }
1823
1824 struct value *
1825 value_from_double (struct type *type, DOUBLEST num)
1826 {
1827   struct value *val = allocate_value (type);
1828   struct type *base_type = check_typedef (type);
1829   enum type_code code = TYPE_CODE (base_type);
1830   int len = TYPE_LENGTH (base_type);
1831
1832   if (code == TYPE_CODE_FLT)
1833     {
1834       store_typed_floating (value_contents_raw (val), base_type, num);
1835     }
1836   else
1837     error (_("Unexpected type encountered for floating constant."));
1838
1839   return val;
1840 }
1841
1842 struct value *
1843 value_from_decfloat (struct type *type, const gdb_byte *dec)
1844 {
1845   struct value *val = allocate_value (type);
1846
1847   memcpy (value_contents_raw (val), dec, TYPE_LENGTH (type));
1848
1849   return val;
1850 }
1851
1852 struct value *
1853 coerce_ref (struct value *arg)
1854 {
1855   struct type *value_type_arg_tmp = check_typedef (value_type (arg));
1856   if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
1857     arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
1858                          unpack_pointer (value_type (arg),              
1859                                          value_contents (arg)));
1860   return arg;
1861 }
1862
1863 struct value *
1864 coerce_array (struct value *arg)
1865 {
1866   struct type *type;
1867
1868   arg = coerce_ref (arg);
1869   type = check_typedef (value_type (arg));
1870
1871   switch (TYPE_CODE (type))
1872     {
1873     case TYPE_CODE_ARRAY:
1874       if (current_language->c_style_arrays)
1875         arg = value_coerce_array (arg);
1876       break;
1877     case TYPE_CODE_FUNC:
1878       arg = value_coerce_function (arg);
1879       break;
1880     }
1881   return arg;
1882 }
1883 \f
1884
1885 /* Return true if the function returning the specified type is using
1886    the convention of returning structures in memory (passing in the
1887    address as a hidden first parameter).  */
1888
1889 int
1890 using_struct_return (struct type *func_type, struct type *value_type)
1891 {
1892   enum type_code code = TYPE_CODE (value_type);
1893
1894   if (code == TYPE_CODE_ERROR)
1895     error (_("Function return type unknown."));
1896
1897   if (code == TYPE_CODE_VOID)
1898     /* A void return value is never in memory.  See also corresponding
1899        code in "print_return_value".  */
1900     return 0;
1901
1902   /* Probe the architecture for the return-value convention.  */
1903   return (gdbarch_return_value (current_gdbarch, func_type, value_type,
1904                                 NULL, NULL, NULL)
1905           != RETURN_VALUE_REGISTER_CONVENTION);
1906 }
1907
1908 /* Set the initialized field in a value struct.  */
1909
1910 void
1911 set_value_initialized (struct value *val, int status)
1912 {
1913   val->initialized = status;
1914 }
1915
1916 /* Return the initialized field in a value struct.  */
1917
1918 int
1919 value_initialized (struct value *val)
1920 {
1921   return val->initialized;
1922 }
1923
1924 void
1925 _initialize_values (void)
1926 {
1927   add_cmd ("convenience", no_class, show_convenience, _("\
1928 Debugger convenience (\"$foo\") variables.\n\
1929 These variables are created when you assign them values;\n\
1930 thus, \"print $foo=1\" gives \"$foo\" the value 1.  Values may be any type.\n\
1931 \n\
1932 A few convenience variables are given values automatically:\n\
1933 \"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
1934 \"$__\" holds the contents of the last address examined with \"x\"."),
1935            &showlist);
1936
1937   add_cmd ("values", no_class, show_values,
1938            _("Elements of value history around item number IDX (or last ten)."),
1939            &showlist);
1940
1941   add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\
1942 Initialize a convenience variable if necessary.\n\
1943 init-if-undefined VARIABLE = EXPRESSION\n\
1944 Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\
1945 exist or does not contain a value.  The EXPRESSION is not evaluated if the\n\
1946 VARIABLE is already initialized."));
1947 }