OSDN Git Service

gdb/
[pf3gnuchains/pf3gnuchains3x.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   release_value (var->value);
905   var->next = internalvars;
906   internalvars = var;
907   return var;
908 }
909
910
911 /* Look up an internal variable with name NAME.  NAME should not
912    normally include a dollar sign.
913
914    If the specified internal variable does not exist,
915    one is created, with a void value.  */
916
917 struct internalvar *
918 lookup_internalvar (char *name)
919 {
920   struct internalvar *var;
921
922   var = lookup_only_internalvar (name);
923   if (var)
924     return var;
925
926   return create_internalvar (name);
927 }
928
929 struct value *
930 value_of_internalvar (struct internalvar *var)
931 {
932   struct value *val;
933   int i, j;
934   gdb_byte temp;
935
936   val = value_copy (var->value);
937   if (value_lazy (val))
938     value_fetch_lazy (val);
939
940   /* If the variable's value is a computed lvalue, we want references
941      to it to produce another computed lvalue, where referencces and
942      assignments actually operate through the computed value's
943      functions.
944
945      This means that internal variables with computed values behave a
946      little differently from other internal variables: assignments to
947      them don't just replace the previous value altogether.  At the
948      moment, this seems like the behavior we want.  */
949   if (var->value->lval == lval_computed)
950     VALUE_LVAL (val) = lval_computed;
951   else
952     {
953       VALUE_LVAL (val) = lval_internalvar;
954       VALUE_INTERNALVAR (val) = var;
955     }
956
957   /* Values are always stored in the target's byte order.  When connected to a
958      target this will most likely always be correct, so there's normally no
959      need to worry about it.
960
961      However, internal variables can be set up before the target endian is
962      known and so may become out of date.  Fix it up before anybody sees.
963
964      Internal variables usually hold simple scalar values, and we can
965      correct those.  More complex values (e.g. structures and floating
966      point types) are left alone, because they would be too complicated
967      to correct.  */
968
969   if (var->endian != gdbarch_byte_order (current_gdbarch))
970     {
971       gdb_byte *array = value_contents_raw (val);
972       struct type *type = check_typedef (value_enclosing_type (val));
973       switch (TYPE_CODE (type))
974         {
975         case TYPE_CODE_INT:
976         case TYPE_CODE_PTR:
977           /* Reverse the bytes.  */
978           for (i = 0, j = TYPE_LENGTH (type) - 1; i < j; i++, j--)
979             {
980               temp = array[j];
981               array[j] = array[i];
982               array[i] = temp;
983             }
984           break;
985         }
986     }
987
988   return val;
989 }
990
991 void
992 set_internalvar_component (struct internalvar *var, int offset, int bitpos,
993                            int bitsize, struct value *newval)
994 {
995   gdb_byte *addr = value_contents_writeable (var->value) + offset;
996
997   if (bitsize)
998     modify_field (addr, value_as_long (newval),
999                   bitpos, bitsize);
1000   else
1001     memcpy (addr, value_contents (newval), TYPE_LENGTH (value_type (newval)));
1002 }
1003
1004 void
1005 set_internalvar (struct internalvar *var, struct value *val)
1006 {
1007   struct value *newval;
1008
1009   newval = value_copy (val);
1010   newval->modifiable = 1;
1011
1012   /* Force the value to be fetched from the target now, to avoid problems
1013      later when this internalvar is referenced and the target is gone or
1014      has changed.  */
1015   if (value_lazy (newval))
1016     value_fetch_lazy (newval);
1017
1018   /* Begin code which must not call error().  If var->value points to
1019      something free'd, an error() obviously leaves a dangling pointer.
1020      But we also get a danling pointer if var->value points to
1021      something in the value chain (i.e., before release_value is
1022      called), because after the error free_all_values will get called before
1023      long.  */
1024   value_free (var->value);
1025   var->value = newval;
1026   var->endian = gdbarch_byte_order (current_gdbarch);
1027   release_value (newval);
1028   /* End code which must not call error().  */
1029 }
1030
1031 char *
1032 internalvar_name (struct internalvar *var)
1033 {
1034   return var->name;
1035 }
1036
1037 /* Update VALUE before discarding OBJFILE.  COPIED_TYPES is used to
1038    prevent cycles / duplicates.  */
1039
1040 static void
1041 preserve_one_value (struct value *value, struct objfile *objfile,
1042                     htab_t copied_types)
1043 {
1044   if (TYPE_OBJFILE (value->type) == objfile)
1045     value->type = copy_type_recursive (objfile, value->type, copied_types);
1046
1047   if (TYPE_OBJFILE (value->enclosing_type) == objfile)
1048     value->enclosing_type = copy_type_recursive (objfile,
1049                                                  value->enclosing_type,
1050                                                  copied_types);
1051 }
1052
1053 /* Update the internal variables and value history when OBJFILE is
1054    discarded; we must copy the types out of the objfile.  New global types
1055    will be created for every convenience variable which currently points to
1056    this objfile's types, and the convenience variables will be adjusted to
1057    use the new global types.  */
1058
1059 void
1060 preserve_values (struct objfile *objfile)
1061 {
1062   htab_t copied_types;
1063   struct value_history_chunk *cur;
1064   struct internalvar *var;
1065   struct value *val;
1066   int i;
1067
1068   /* Create the hash table.  We allocate on the objfile's obstack, since
1069      it is soon to be deleted.  */
1070   copied_types = create_copied_types_hash (objfile);
1071
1072   for (cur = value_history_chain; cur; cur = cur->next)
1073     for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
1074       if (cur->values[i])
1075         preserve_one_value (cur->values[i], objfile, copied_types);
1076
1077   for (var = internalvars; var; var = var->next)
1078     preserve_one_value (var->value, objfile, copied_types);
1079
1080   for (val = values_in_python; val; val = val->next)
1081     preserve_one_value (val, objfile, copied_types);
1082
1083   htab_delete (copied_types);
1084 }
1085
1086 static void
1087 show_convenience (char *ignore, int from_tty)
1088 {
1089   struct internalvar *var;
1090   int varseen = 0;
1091   struct value_print_options opts;
1092
1093   get_user_print_options (&opts);
1094   for (var = internalvars; var; var = var->next)
1095     {
1096       if (!varseen)
1097         {
1098           varseen = 1;
1099         }
1100       printf_filtered (("$%s = "), var->name);
1101       value_print (value_of_internalvar (var), gdb_stdout,
1102                    &opts);
1103       printf_filtered (("\n"));
1104     }
1105   if (!varseen)
1106     printf_unfiltered (_("\
1107 No debugger convenience variables now defined.\n\
1108 Convenience variables have names starting with \"$\";\n\
1109 use \"set\" as in \"set $foo = 5\" to define them.\n"));
1110 }
1111 \f
1112 /* Extract a value as a C number (either long or double).
1113    Knows how to convert fixed values to double, or
1114    floating values to long.
1115    Does not deallocate the value.  */
1116
1117 LONGEST
1118 value_as_long (struct value *val)
1119 {
1120   /* This coerces arrays and functions, which is necessary (e.g.
1121      in disassemble_command).  It also dereferences references, which
1122      I suspect is the most logical thing to do.  */
1123   val = coerce_array (val);
1124   return unpack_long (value_type (val), value_contents (val));
1125 }
1126
1127 DOUBLEST
1128 value_as_double (struct value *val)
1129 {
1130   DOUBLEST foo;
1131   int inv;
1132
1133   foo = unpack_double (value_type (val), value_contents (val), &inv);
1134   if (inv)
1135     error (_("Invalid floating value found in program."));
1136   return foo;
1137 }
1138
1139 /* Extract a value as a C pointer. Does not deallocate the value.  
1140    Note that val's type may not actually be a pointer; value_as_long
1141    handles all the cases.  */
1142 CORE_ADDR
1143 value_as_address (struct value *val)
1144 {
1145   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1146      whether we want this to be true eventually.  */
1147 #if 0
1148   /* gdbarch_addr_bits_remove is wrong if we are being called for a
1149      non-address (e.g. argument to "signal", "info break", etc.), or
1150      for pointers to char, in which the low bits *are* significant.  */
1151   return gdbarch_addr_bits_remove (current_gdbarch, value_as_long (val));
1152 #else
1153
1154   /* There are several targets (IA-64, PowerPC, and others) which
1155      don't represent pointers to functions as simply the address of
1156      the function's entry point.  For example, on the IA-64, a
1157      function pointer points to a two-word descriptor, generated by
1158      the linker, which contains the function's entry point, and the
1159      value the IA-64 "global pointer" register should have --- to
1160      support position-independent code.  The linker generates
1161      descriptors only for those functions whose addresses are taken.
1162
1163      On such targets, it's difficult for GDB to convert an arbitrary
1164      function address into a function pointer; it has to either find
1165      an existing descriptor for that function, or call malloc and
1166      build its own.  On some targets, it is impossible for GDB to
1167      build a descriptor at all: the descriptor must contain a jump
1168      instruction; data memory cannot be executed; and code memory
1169      cannot be modified.
1170
1171      Upon entry to this function, if VAL is a value of type `function'
1172      (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then
1173      VALUE_ADDRESS (val) is the address of the function.  This is what
1174      you'll get if you evaluate an expression like `main'.  The call
1175      to COERCE_ARRAY below actually does all the usual unary
1176      conversions, which includes converting values of type `function'
1177      to `pointer to function'.  This is the challenging conversion
1178      discussed above.  Then, `unpack_long' will convert that pointer
1179      back into an address.
1180
1181      So, suppose the user types `disassemble foo' on an architecture
1182      with a strange function pointer representation, on which GDB
1183      cannot build its own descriptors, and suppose further that `foo'
1184      has no linker-built descriptor.  The address->pointer conversion
1185      will signal an error and prevent the command from running, even
1186      though the next step would have been to convert the pointer
1187      directly back into the same address.
1188
1189      The following shortcut avoids this whole mess.  If VAL is a
1190      function, just return its address directly.  */
1191   if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1192       || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
1193     return VALUE_ADDRESS (val);
1194
1195   val = coerce_array (val);
1196
1197   /* Some architectures (e.g. Harvard), map instruction and data
1198      addresses onto a single large unified address space.  For
1199      instance: An architecture may consider a large integer in the
1200      range 0x10000000 .. 0x1000ffff to already represent a data
1201      addresses (hence not need a pointer to address conversion) while
1202      a small integer would still need to be converted integer to
1203      pointer to address.  Just assume such architectures handle all
1204      integer conversions in a single function.  */
1205
1206   /* JimB writes:
1207
1208      I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we
1209      must admonish GDB hackers to make sure its behavior matches the
1210      compiler's, whenever possible.
1211
1212      In general, I think GDB should evaluate expressions the same way
1213      the compiler does.  When the user copies an expression out of
1214      their source code and hands it to a `print' command, they should
1215      get the same value the compiler would have computed.  Any
1216      deviation from this rule can cause major confusion and annoyance,
1217      and needs to be justified carefully.  In other words, GDB doesn't
1218      really have the freedom to do these conversions in clever and
1219      useful ways.
1220
1221      AndrewC pointed out that users aren't complaining about how GDB
1222      casts integers to pointers; they are complaining that they can't
1223      take an address from a disassembly listing and give it to `x/i'.
1224      This is certainly important.
1225
1226      Adding an architecture method like integer_to_address() certainly
1227      makes it possible for GDB to "get it right" in all circumstances
1228      --- the target has complete control over how things get done, so
1229      people can Do The Right Thing for their target without breaking
1230      anyone else.  The standard doesn't specify how integers get
1231      converted to pointers; usually, the ABI doesn't either, but
1232      ABI-specific code is a more reasonable place to handle it.  */
1233
1234   if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
1235       && TYPE_CODE (value_type (val)) != TYPE_CODE_REF
1236       && gdbarch_integer_to_address_p (current_gdbarch))
1237     return gdbarch_integer_to_address (current_gdbarch, value_type (val),
1238                                        value_contents (val));
1239
1240   return unpack_long (value_type (val), value_contents (val));
1241 #endif
1242 }
1243 \f
1244 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
1245    as a long, or as a double, assuming the raw data is described
1246    by type TYPE.  Knows how to convert different sizes of values
1247    and can convert between fixed and floating point.  We don't assume
1248    any alignment for the raw data.  Return value is in host byte order.
1249
1250    If you want functions and arrays to be coerced to pointers, and
1251    references to be dereferenced, call value_as_long() instead.
1252
1253    C++: It is assumed that the front-end has taken care of
1254    all matters concerning pointers to members.  A pointer
1255    to member which reaches here is considered to be equivalent
1256    to an INT (or some size).  After all, it is only an offset.  */
1257
1258 LONGEST
1259 unpack_long (struct type *type, const gdb_byte *valaddr)
1260 {
1261   enum type_code code = TYPE_CODE (type);
1262   int len = TYPE_LENGTH (type);
1263   int nosign = TYPE_UNSIGNED (type);
1264
1265   switch (code)
1266     {
1267     case TYPE_CODE_TYPEDEF:
1268       return unpack_long (check_typedef (type), valaddr);
1269     case TYPE_CODE_ENUM:
1270     case TYPE_CODE_FLAGS:
1271     case TYPE_CODE_BOOL:
1272     case TYPE_CODE_INT:
1273     case TYPE_CODE_CHAR:
1274     case TYPE_CODE_RANGE:
1275     case TYPE_CODE_MEMBERPTR:
1276       if (nosign)
1277         return extract_unsigned_integer (valaddr, len);
1278       else
1279         return extract_signed_integer (valaddr, len);
1280
1281     case TYPE_CODE_FLT:
1282       return extract_typed_floating (valaddr, type);
1283
1284     case TYPE_CODE_DECFLOAT:
1285       /* libdecnumber has a function to convert from decimal to integer, but
1286          it doesn't work when the decimal number has a fractional part.  */
1287       return decimal_to_doublest (valaddr, len);
1288
1289     case TYPE_CODE_PTR:
1290     case TYPE_CODE_REF:
1291       /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1292          whether we want this to be true eventually.  */
1293       return extract_typed_address (valaddr, type);
1294
1295     default:
1296       error (_("Value can't be converted to integer."));
1297     }
1298   return 0;                     /* Placate lint.  */
1299 }
1300
1301 /* Return a double value from the specified type and address.
1302    INVP points to an int which is set to 0 for valid value,
1303    1 for invalid value (bad float format).  In either case,
1304    the returned double is OK to use.  Argument is in target
1305    format, result is in host format.  */
1306
1307 DOUBLEST
1308 unpack_double (struct type *type, const gdb_byte *valaddr, int *invp)
1309 {
1310   enum type_code code;
1311   int len;
1312   int nosign;
1313
1314   *invp = 0;                    /* Assume valid.   */
1315   CHECK_TYPEDEF (type);
1316   code = TYPE_CODE (type);
1317   len = TYPE_LENGTH (type);
1318   nosign = TYPE_UNSIGNED (type);
1319   if (code == TYPE_CODE_FLT)
1320     {
1321       /* NOTE: cagney/2002-02-19: There was a test here to see if the
1322          floating-point value was valid (using the macro
1323          INVALID_FLOAT).  That test/macro have been removed.
1324
1325          It turns out that only the VAX defined this macro and then
1326          only in a non-portable way.  Fixing the portability problem
1327          wouldn't help since the VAX floating-point code is also badly
1328          bit-rotten.  The target needs to add definitions for the
1329          methods gdbarch_float_format and gdbarch_double_format - these
1330          exactly describe the target floating-point format.  The
1331          problem here is that the corresponding floatformat_vax_f and
1332          floatformat_vax_d values these methods should be set to are
1333          also not defined either.  Oops!
1334
1335          Hopefully someone will add both the missing floatformat
1336          definitions and the new cases for floatformat_is_valid ().  */
1337
1338       if (!floatformat_is_valid (floatformat_from_type (type), valaddr))
1339         {
1340           *invp = 1;
1341           return 0.0;
1342         }
1343
1344       return extract_typed_floating (valaddr, type);
1345     }
1346   else if (code == TYPE_CODE_DECFLOAT)
1347     return decimal_to_doublest (valaddr, len);
1348   else if (nosign)
1349     {
1350       /* Unsigned -- be sure we compensate for signed LONGEST.  */
1351       return (ULONGEST) unpack_long (type, valaddr);
1352     }
1353   else
1354     {
1355       /* Signed -- we are OK with unpack_long.  */
1356       return unpack_long (type, valaddr);
1357     }
1358 }
1359
1360 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
1361    as a CORE_ADDR, assuming the raw data is described by type TYPE.
1362    We don't assume any alignment for the raw data.  Return value is in
1363    host byte order.
1364
1365    If you want functions and arrays to be coerced to pointers, and
1366    references to be dereferenced, call value_as_address() instead.
1367
1368    C++: It is assumed that the front-end has taken care of
1369    all matters concerning pointers to members.  A pointer
1370    to member which reaches here is considered to be equivalent
1371    to an INT (or some size).  After all, it is only an offset.  */
1372
1373 CORE_ADDR
1374 unpack_pointer (struct type *type, const gdb_byte *valaddr)
1375 {
1376   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1377      whether we want this to be true eventually.  */
1378   return unpack_long (type, valaddr);
1379 }
1380
1381 \f
1382 /* Get the value of the FIELDN'th field (which must be static) of
1383    TYPE.  Return NULL if the field doesn't exist or has been
1384    optimized out. */
1385
1386 struct value *
1387 value_static_field (struct type *type, int fieldno)
1388 {
1389   struct value *retval;
1390
1391   if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
1392     {
1393       retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
1394                          TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1395     }
1396   else
1397     {
1398       char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
1399       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
1400       if (sym == NULL)
1401         {
1402           /* With some compilers, e.g. HP aCC, static data members are reported
1403              as non-debuggable symbols */
1404           struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, NULL, NULL);
1405           if (!msym)
1406             return NULL;
1407           else
1408             {
1409               retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
1410                                  SYMBOL_VALUE_ADDRESS (msym));
1411             }
1412         }
1413       else
1414         {
1415           /* SYM should never have a SYMBOL_CLASS which will require
1416              read_var_value to use the FRAME parameter.  */
1417           if (symbol_read_needs_frame (sym))
1418             warning (_("static field's value depends on the current "
1419                      "frame - bad debug info?"));
1420           retval = read_var_value (sym, NULL);
1421         }
1422       if (retval && VALUE_LVAL (retval) == lval_memory)
1423         SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno),
1424                             VALUE_ADDRESS (retval));
1425     }
1426   return retval;
1427 }
1428
1429 /* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE.  
1430    You have to be careful here, since the size of the data area for the value 
1431    is set by the length of the enclosing type.  So if NEW_ENCL_TYPE is bigger 
1432    than the old enclosing type, you have to allocate more space for the data.  
1433    The return value is a pointer to the new version of this value structure. */
1434
1435 struct value *
1436 value_change_enclosing_type (struct value *val, struct type *new_encl_type)
1437 {
1438   if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val))) 
1439     val->contents =
1440       (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
1441
1442   val->enclosing_type = new_encl_type;
1443   return val;
1444 }
1445
1446 /* Given a value ARG1 (offset by OFFSET bytes)
1447    of a struct or union type ARG_TYPE,
1448    extract and return the value of one of its (non-static) fields.
1449    FIELDNO says which field. */
1450
1451 struct value *
1452 value_primitive_field (struct value *arg1, int offset,
1453                        int fieldno, struct type *arg_type)
1454 {
1455   struct value *v;
1456   struct type *type;
1457
1458   CHECK_TYPEDEF (arg_type);
1459   type = TYPE_FIELD_TYPE (arg_type, fieldno);
1460
1461   /* Handle packed fields */
1462
1463   if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
1464     {
1465       v = value_from_longest (type,
1466                               unpack_field_as_long (arg_type,
1467                                                     value_contents (arg1)
1468                                                     + offset,
1469                                                     fieldno));
1470       v->bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno) % 8;
1471       v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno);
1472       v->offset = value_offset (arg1) + offset
1473         + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1474     }
1475   else if (fieldno < TYPE_N_BASECLASSES (arg_type))
1476     {
1477       /* This field is actually a base subobject, so preserve the
1478          entire object's contents for later references to virtual
1479          bases, etc.  */
1480
1481       /* Lazy register values with offsets are not supported.  */
1482       if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
1483         value_fetch_lazy (arg1);
1484
1485       if (value_lazy (arg1))
1486         v = allocate_value_lazy (value_enclosing_type (arg1));
1487       else
1488         {
1489           v = allocate_value (value_enclosing_type (arg1));
1490           memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
1491                   TYPE_LENGTH (value_enclosing_type (arg1)));
1492         }
1493       v->type = type;
1494       v->offset = value_offset (arg1);
1495       v->embedded_offset = (offset + value_embedded_offset (arg1)
1496                             + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8);
1497     }
1498   else
1499     {
1500       /* Plain old data member */
1501       offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1502
1503       /* Lazy register values with offsets are not supported.  */
1504       if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
1505         value_fetch_lazy (arg1);
1506
1507       if (value_lazy (arg1))
1508         v = allocate_value_lazy (type);
1509       else
1510         {
1511           v = allocate_value (type);
1512           memcpy (value_contents_raw (v),
1513                   value_contents_raw (arg1) + offset,
1514                   TYPE_LENGTH (type));
1515         }
1516       v->offset = (value_offset (arg1) + offset
1517                    + value_embedded_offset (arg1));
1518     }
1519   set_value_component_location (v, arg1);
1520   VALUE_REGNUM (v) = VALUE_REGNUM (arg1);
1521   VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1);
1522   return v;
1523 }
1524
1525 /* Given a value ARG1 of a struct or union type,
1526    extract and return the value of one of its (non-static) fields.
1527    FIELDNO says which field. */
1528
1529 struct value *
1530 value_field (struct value *arg1, int fieldno)
1531 {
1532   return value_primitive_field (arg1, 0, fieldno, value_type (arg1));
1533 }
1534
1535 /* Return a non-virtual function as a value.
1536    F is the list of member functions which contains the desired method.
1537    J is an index into F which provides the desired method.
1538
1539    We only use the symbol for its address, so be happy with either a
1540    full symbol or a minimal symbol.
1541  */
1542
1543 struct value *
1544 value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type,
1545                 int offset)
1546 {
1547   struct value *v;
1548   struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
1549   char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
1550   struct symbol *sym;
1551   struct minimal_symbol *msym;
1552
1553   sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0);
1554   if (sym != NULL)
1555     {
1556       msym = NULL;
1557     }
1558   else
1559     {
1560       gdb_assert (sym == NULL);
1561       msym = lookup_minimal_symbol (physname, NULL, NULL);
1562       if (msym == NULL)
1563         return NULL;
1564     }
1565
1566   v = allocate_value (ftype);
1567   if (sym)
1568     {
1569       VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1570     }
1571   else
1572     {
1573       /* The minimal symbol might point to a function descriptor;
1574          resolve it to the actual code address instead.  */
1575       struct objfile *objfile = msymbol_objfile (msym);
1576       struct gdbarch *gdbarch = get_objfile_arch (objfile);
1577
1578       VALUE_ADDRESS (v)
1579         = gdbarch_convert_from_func_ptr_addr
1580            (gdbarch, SYMBOL_VALUE_ADDRESS (msym), &current_target);
1581     }
1582
1583   if (arg1p)
1584     {
1585       if (type != value_type (*arg1p))
1586         *arg1p = value_ind (value_cast (lookup_pointer_type (type),
1587                                         value_addr (*arg1p)));
1588
1589       /* Move the `this' pointer according to the offset.
1590          VALUE_OFFSET (*arg1p) += offset;
1591        */
1592     }
1593
1594   return v;
1595 }
1596
1597 \f
1598 /* Unpack a field FIELDNO of the specified TYPE, from the anonymous object at
1599    VALADDR.
1600
1601    Extracting bits depends on endianness of the machine.  Compute the
1602    number of least significant bits to discard.  For big endian machines,
1603    we compute the total number of bits in the anonymous object, subtract
1604    off the bit count from the MSB of the object to the MSB of the
1605    bitfield, then the size of the bitfield, which leaves the LSB discard
1606    count.  For little endian machines, the discard count is simply the
1607    number of bits from the LSB of the anonymous object to the LSB of the
1608    bitfield.
1609
1610    If the field is signed, we also do sign extension. */
1611
1612 LONGEST
1613 unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno)
1614 {
1615   ULONGEST val;
1616   ULONGEST valmask;
1617   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
1618   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
1619   int lsbcount;
1620   struct type *field_type;
1621
1622   val = extract_unsigned_integer (valaddr + bitpos / 8, sizeof (val));
1623   field_type = TYPE_FIELD_TYPE (type, fieldno);
1624   CHECK_TYPEDEF (field_type);
1625
1626   /* Extract bits.  See comment above. */
1627
1628   if (gdbarch_bits_big_endian (current_gdbarch))
1629     lsbcount = (sizeof val * 8 - bitpos % 8 - bitsize);
1630   else
1631     lsbcount = (bitpos % 8);
1632   val >>= lsbcount;
1633
1634   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
1635      If the field is signed, and is negative, then sign extend. */
1636
1637   if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val)))
1638     {
1639       valmask = (((ULONGEST) 1) << bitsize) - 1;
1640       val &= valmask;
1641       if (!TYPE_UNSIGNED (field_type))
1642         {
1643           if (val & (valmask ^ (valmask >> 1)))
1644             {
1645               val |= ~valmask;
1646             }
1647         }
1648     }
1649   return (val);
1650 }
1651
1652 /* Modify the value of a bitfield.  ADDR points to a block of memory in
1653    target byte order; the bitfield starts in the byte pointed to.  FIELDVAL
1654    is the desired value of the field, in host byte order.  BITPOS and BITSIZE
1655    indicate which bits (in target bit order) comprise the bitfield.  
1656    Requires 0 < BITSIZE <= lbits, 0 <= BITPOS+BITSIZE <= lbits, and
1657    0 <= BITPOS, where lbits is the size of a LONGEST in bits.  */
1658
1659 void
1660 modify_field (gdb_byte *addr, LONGEST fieldval, int bitpos, int bitsize)
1661 {
1662   ULONGEST oword;
1663   ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
1664
1665   /* If a negative fieldval fits in the field in question, chop
1666      off the sign extension bits.  */
1667   if ((~fieldval & ~(mask >> 1)) == 0)
1668     fieldval &= mask;
1669
1670   /* Warn if value is too big to fit in the field in question.  */
1671   if (0 != (fieldval & ~mask))
1672     {
1673       /* FIXME: would like to include fieldval in the message, but
1674          we don't have a sprintf_longest.  */
1675       warning (_("Value does not fit in %d bits."), bitsize);
1676
1677       /* Truncate it, otherwise adjoining fields may be corrupted.  */
1678       fieldval &= mask;
1679     }
1680
1681   oword = extract_unsigned_integer (addr, sizeof oword);
1682
1683   /* Shifting for bit field depends on endianness of the target machine.  */
1684   if (gdbarch_bits_big_endian (current_gdbarch))
1685     bitpos = sizeof (oword) * 8 - bitpos - bitsize;
1686
1687   oword &= ~(mask << bitpos);
1688   oword |= fieldval << bitpos;
1689
1690   store_unsigned_integer (addr, sizeof oword, oword);
1691 }
1692 \f
1693 /* Pack NUM into BUF using a target format of TYPE.  */
1694
1695 void
1696 pack_long (gdb_byte *buf, struct type *type, LONGEST num)
1697 {
1698   int len;
1699
1700   type = check_typedef (type);
1701   len = TYPE_LENGTH (type);
1702
1703   switch (TYPE_CODE (type))
1704     {
1705     case TYPE_CODE_INT:
1706     case TYPE_CODE_CHAR:
1707     case TYPE_CODE_ENUM:
1708     case TYPE_CODE_FLAGS:
1709     case TYPE_CODE_BOOL:
1710     case TYPE_CODE_RANGE:
1711     case TYPE_CODE_MEMBERPTR:
1712       store_signed_integer (buf, len, num);
1713       break;
1714
1715     case TYPE_CODE_REF:
1716     case TYPE_CODE_PTR:
1717       store_typed_address (buf, type, (CORE_ADDR) num);
1718       break;
1719
1720     default:
1721       error (_("Unexpected type (%d) encountered for integer constant."),
1722              TYPE_CODE (type));
1723     }
1724 }
1725
1726
1727 /* Convert C numbers into newly allocated values.  */
1728
1729 struct value *
1730 value_from_longest (struct type *type, LONGEST num)
1731 {
1732   struct value *val = allocate_value (type);
1733
1734   pack_long (value_contents_raw (val), type, num);
1735
1736   return val;
1737 }
1738
1739
1740 /* Create a value representing a pointer of type TYPE to the address
1741    ADDR.  */
1742 struct value *
1743 value_from_pointer (struct type *type, CORE_ADDR addr)
1744 {
1745   struct value *val = allocate_value (type);
1746   store_typed_address (value_contents_raw (val), type, addr);
1747   return val;
1748 }
1749
1750
1751 /* Create a value for a string constant to be stored locally
1752    (not in the inferior's memory space, but in GDB memory).
1753    This is analogous to value_from_longest, which also does not
1754    use inferior memory.  String shall NOT contain embedded nulls.  */
1755
1756 struct value *
1757 value_from_string (char *ptr)
1758 {
1759   struct value *val;
1760   int len = strlen (ptr);
1761   int lowbound = current_language->string_lower_bound;
1762   struct type *string_char_type;
1763   struct type *rangetype;
1764   struct type *stringtype;
1765
1766   rangetype = create_range_type ((struct type *) NULL,
1767                                  builtin_type_int32,
1768                                  lowbound, len + lowbound - 1);
1769   string_char_type = language_string_char_type (current_language,
1770                                                 current_gdbarch);
1771   stringtype = create_array_type ((struct type *) NULL,
1772                                   string_char_type,
1773                                   rangetype);
1774   val = allocate_value (stringtype);
1775   memcpy (value_contents_raw (val), ptr, len);
1776   return val;
1777 }
1778
1779 /* Create a value of type TYPE whose contents come from VALADDR, if it
1780    is non-null, and whose memory address (in the inferior) is
1781    ADDRESS.  */
1782
1783 struct value *
1784 value_from_contents_and_address (struct type *type,
1785                                  const gdb_byte *valaddr,
1786                                  CORE_ADDR address)
1787 {
1788   struct value *v = allocate_value (type);
1789   if (valaddr == NULL)
1790     set_value_lazy (v, 1);
1791   else
1792     memcpy (value_contents_raw (v), valaddr, TYPE_LENGTH (type));
1793   VALUE_ADDRESS (v) = address;
1794   VALUE_LVAL (v) = lval_memory;
1795   return v;
1796 }
1797
1798 struct value *
1799 value_from_double (struct type *type, DOUBLEST num)
1800 {
1801   struct value *val = allocate_value (type);
1802   struct type *base_type = check_typedef (type);
1803   enum type_code code = TYPE_CODE (base_type);
1804   int len = TYPE_LENGTH (base_type);
1805
1806   if (code == TYPE_CODE_FLT)
1807     {
1808       store_typed_floating (value_contents_raw (val), base_type, num);
1809     }
1810   else
1811     error (_("Unexpected type encountered for floating constant."));
1812
1813   return val;
1814 }
1815
1816 struct value *
1817 value_from_decfloat (struct type *type, const gdb_byte *dec)
1818 {
1819   struct value *val = allocate_value (type);
1820
1821   memcpy (value_contents_raw (val), dec, TYPE_LENGTH (type));
1822
1823   return val;
1824 }
1825
1826 struct value *
1827 coerce_ref (struct value *arg)
1828 {
1829   struct type *value_type_arg_tmp = check_typedef (value_type (arg));
1830   if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
1831     arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
1832                          unpack_pointer (value_type (arg),              
1833                                          value_contents (arg)));
1834   return arg;
1835 }
1836
1837 struct value *
1838 coerce_array (struct value *arg)
1839 {
1840   struct type *type;
1841
1842   arg = coerce_ref (arg);
1843   type = check_typedef (value_type (arg));
1844
1845   switch (TYPE_CODE (type))
1846     {
1847     case TYPE_CODE_ARRAY:
1848       if (current_language->c_style_arrays)
1849         arg = value_coerce_array (arg);
1850       break;
1851     case TYPE_CODE_FUNC:
1852       arg = value_coerce_function (arg);
1853       break;
1854     }
1855   return arg;
1856 }
1857 \f
1858
1859 /* Return true if the function returning the specified type is using
1860    the convention of returning structures in memory (passing in the
1861    address as a hidden first parameter).  */
1862
1863 int
1864 using_struct_return (struct type *func_type, struct type *value_type)
1865 {
1866   enum type_code code = TYPE_CODE (value_type);
1867
1868   if (code == TYPE_CODE_ERROR)
1869     error (_("Function return type unknown."));
1870
1871   if (code == TYPE_CODE_VOID)
1872     /* A void return value is never in memory.  See also corresponding
1873        code in "print_return_value".  */
1874     return 0;
1875
1876   /* Probe the architecture for the return-value convention.  */
1877   return (gdbarch_return_value (current_gdbarch, func_type, value_type,
1878                                 NULL, NULL, NULL)
1879           != RETURN_VALUE_REGISTER_CONVENTION);
1880 }
1881
1882 /* Set the initialized field in a value struct.  */
1883
1884 void
1885 set_value_initialized (struct value *val, int status)
1886 {
1887   val->initialized = status;
1888 }
1889
1890 /* Return the initialized field in a value struct.  */
1891
1892 int
1893 value_initialized (struct value *val)
1894 {
1895   return val->initialized;
1896 }
1897
1898 void
1899 _initialize_values (void)
1900 {
1901   add_cmd ("convenience", no_class, show_convenience, _("\
1902 Debugger convenience (\"$foo\") variables.\n\
1903 These variables are created when you assign them values;\n\
1904 thus, \"print $foo=1\" gives \"$foo\" the value 1.  Values may be any type.\n\
1905 \n\
1906 A few convenience variables are given values automatically:\n\
1907 \"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
1908 \"$__\" holds the contents of the last address examined with \"x\"."),
1909            &showlist);
1910
1911   add_cmd ("values", no_class, show_values,
1912            _("Elements of value history around item number IDX (or last ten)."),
1913            &showlist);
1914
1915   add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\
1916 Initialize a convenience variable if necessary.\n\
1917 init-if-undefined VARIABLE = EXPRESSION\n\
1918 Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\
1919 exist or does not contain a value.  The EXPRESSION is not evaluated if the\n\
1920 VARIABLE is already initialized."));
1921 }