OSDN Git Service

e338dd2d73bbcba849aa247f818566903c42c2f9
[pf3gnuchains/pf3gnuchains3x.git] / gdb / value.c
1 /* Low level packing and unpacking of values for GDB, the GNU Debugger.
2
3    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4    1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005 Free
5    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 2 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, write to the Free Software
21    Foundation, Inc., 59 Temple Place - Suite 330,
22    Boston, MA 02111-1307, USA.  */
23
24 /* Hack so that value.h can detect when it's being included by
25    value.c.  */
26 #define VALUE_C
27
28 #include "defs.h"
29 #include "gdb_string.h"
30 #include "symtab.h"
31 #include "gdbtypes.h"
32 #include "value.h"
33 #include "gdbcore.h"
34 #include "command.h"
35 #include "gdbcmd.h"
36 #include "target.h"
37 #include "language.h"
38 #include "scm-lang.h"
39 #include "demangle.h"
40 #include "doublest.h"
41 #include "gdb_assert.h"
42 #include "regcache.h"
43 #include "block.h"
44
45 /* Prototypes for exported functions. */
46
47 void _initialize_values (void);
48
49 /* Prototypes for local functions. */
50
51 static void show_values (char *, int);
52
53 static void show_convenience (char *, int);
54
55
56 /* The value-history records all the values printed
57    by print commands during this session.  Each chunk
58    records 60 consecutive values.  The first chunk on
59    the chain records the most recent values.
60    The total number of values is in value_history_count.  */
61
62 #define VALUE_HISTORY_CHUNK 60
63
64 struct value_history_chunk
65   {
66     struct value_history_chunk *next;
67     struct value *values[VALUE_HISTORY_CHUNK];
68   };
69
70 /* Chain of chunks now in use.  */
71
72 static struct value_history_chunk *value_history_chain;
73
74 static int value_history_count; /* Abs number of last entry stored */
75 \f
76 /* List of all value objects currently allocated
77    (except for those released by calls to release_value)
78    This is so they can be freed after each command.  */
79
80 static struct value *all_values;
81
82 /* Allocate a  value  that has the correct length for type TYPE.  */
83
84 struct value *
85 allocate_value (struct type *type)
86 {
87   struct value *val;
88   struct type *atype = check_typedef (type);
89
90   val = (struct value *) xzalloc (sizeof (struct value) + TYPE_LENGTH (atype));
91   val->next = all_values;
92   all_values = val;
93   val->type = type;
94   val->enclosing_type = type;
95   VALUE_LVAL (val) = not_lval;
96   VALUE_ADDRESS (val) = 0;
97   VALUE_FRAME_ID (val) = null_frame_id;
98   val->offset = 0;
99   val->bitpos = 0;
100   val->bitsize = 0;
101   VALUE_REGNUM (val) = -1;
102   val->lazy = 0;
103   val->optimized_out = 0;
104   val->embedded_offset = 0;
105   val->pointed_to_offset = 0;
106   val->modifiable = 1;
107   return val;
108 }
109
110 /* Allocate a  value  that has the correct length
111    for COUNT repetitions type TYPE.  */
112
113 struct value *
114 allocate_repeat_value (struct type *type, int count)
115 {
116   int low_bound = current_language->string_lower_bound;         /* ??? */
117   /* FIXME-type-allocation: need a way to free this type when we are
118      done with it.  */
119   struct type *range_type
120   = create_range_type ((struct type *) NULL, builtin_type_int,
121                        low_bound, count + low_bound - 1);
122   /* FIXME-type-allocation: need a way to free this type when we are
123      done with it.  */
124   return allocate_value (create_array_type ((struct type *) NULL,
125                                             type, range_type));
126 }
127
128 /* Accessor methods.  */
129
130 struct type *
131 value_type (struct value *value)
132 {
133   return value->type;
134 }
135 void
136 deprecated_set_value_type (struct value *value, struct type *type)
137 {
138   value->type = type;
139 }
140
141 int
142 value_offset (struct value *value)
143 {
144   return value->offset;
145 }
146
147 int
148 value_bitpos (struct value *value)
149 {
150   return value->bitpos;
151 }
152
153 int
154 value_bitsize (struct value *value)
155 {
156   return value->bitsize;
157 }
158
159 bfd_byte *
160 value_contents_raw (struct value *value)
161 {
162   return value->aligner.contents + value->embedded_offset;
163 }
164
165 bfd_byte *
166 value_contents_all_raw (struct value *value)
167 {
168   return value->aligner.contents;
169 }
170
171 struct type *
172 value_enclosing_type (struct value *value)
173 {
174   return value->enclosing_type;
175 }
176
177 const bfd_byte *
178 value_contents_all (struct value *value)
179 {
180   if (value->lazy)
181     value_fetch_lazy (value);
182   return value->aligner.contents;
183 }
184
185 int
186 value_lazy (struct value *value)
187 {
188   return value->lazy;
189 }
190
191 void
192 set_value_lazy (struct value *value, int val)
193 {
194   value->lazy = val;
195 }
196
197 const bfd_byte *
198 value_contents (struct value *value)
199 {
200   return value_contents_writeable (value);
201 }
202
203 bfd_byte *
204 value_contents_writeable (struct value *value)
205 {
206   if (value->lazy)
207     value_fetch_lazy (value);
208   return value->aligner.contents;
209 }
210
211 int
212 value_optimized_out (struct value *value)
213 {
214   return value->optimized_out;
215 }
216
217 void
218 set_value_optimized_out (struct value *value, int val)
219 {
220   value->optimized_out = val;
221 }
222
223 int
224 value_embedded_offset (struct value *value)
225 {
226   return value->embedded_offset;
227 }
228
229 void
230 set_value_embedded_offset (struct value *value, int val)
231 {
232   value->embedded_offset = val;
233 }
234
235 int
236 value_pointed_to_offset (struct value *value)
237 {
238   return value->pointed_to_offset;
239 }
240
241 void
242 set_value_pointed_to_offset (struct value *value, int val)
243 {
244   value->pointed_to_offset = val;
245 }
246
247 enum lval_type *
248 deprecated_value_lval_hack (struct value *value)
249 {
250   return &value->lval;
251 }
252
253 CORE_ADDR *
254 deprecated_value_address_hack (struct value *value)
255 {
256   return &value->location.address;
257 }
258
259 struct internalvar **
260 deprecated_value_internalvar_hack (struct value *value)
261 {
262   return &value->location.internalvar;
263 }
264
265 struct frame_id *
266 deprecated_value_frame_id_hack (struct value *value)
267 {
268   return &value->frame_id;
269 }
270
271 short *
272 deprecated_value_regnum_hack (struct value *value)
273 {
274   return &value->regnum;
275 }
276 \f
277 /* Return a mark in the value chain.  All values allocated after the
278    mark is obtained (except for those released) are subject to being freed
279    if a subsequent value_free_to_mark is passed the mark.  */
280 struct value *
281 value_mark (void)
282 {
283   return all_values;
284 }
285
286 /* Free all values allocated since MARK was obtained by value_mark
287    (except for those released).  */
288 void
289 value_free_to_mark (struct value *mark)
290 {
291   struct value *val;
292   struct value *next;
293
294   for (val = all_values; val && val != mark; val = next)
295     {
296       next = val->next;
297       value_free (val);
298     }
299   all_values = val;
300 }
301
302 /* Free all the values that have been allocated (except for those released).
303    Called after each command, successful or not.  */
304
305 void
306 free_all_values (void)
307 {
308   struct value *val;
309   struct value *next;
310
311   for (val = all_values; val; val = next)
312     {
313       next = val->next;
314       value_free (val);
315     }
316
317   all_values = 0;
318 }
319
320 /* Remove VAL from the chain all_values
321    so it will not be freed automatically.  */
322
323 void
324 release_value (struct value *val)
325 {
326   struct value *v;
327
328   if (all_values == val)
329     {
330       all_values = val->next;
331       return;
332     }
333
334   for (v = all_values; v; v = v->next)
335     {
336       if (v->next == val)
337         {
338           v->next = val->next;
339           break;
340         }
341     }
342 }
343
344 /* Release all values up to mark  */
345 struct value *
346 value_release_to_mark (struct value *mark)
347 {
348   struct value *val;
349   struct value *next;
350
351   for (val = next = all_values; next; next = next->next)
352     if (next->next == mark)
353       {
354         all_values = next->next;
355         next->next = NULL;
356         return val;
357       }
358   all_values = 0;
359   return val;
360 }
361
362 /* Return a copy of the value ARG.
363    It contains the same contents, for same memory address,
364    but it's a different block of storage.  */
365
366 struct value *
367 value_copy (struct value *arg)
368 {
369   struct type *encl_type = value_enclosing_type (arg);
370   struct value *val = allocate_value (encl_type);
371   val->type = arg->type;
372   VALUE_LVAL (val) = VALUE_LVAL (arg);
373   VALUE_ADDRESS (val) = VALUE_ADDRESS (arg);
374   val->offset = arg->offset;
375   val->bitpos = arg->bitpos;
376   val->bitsize = arg->bitsize;
377   VALUE_FRAME_ID (val) = VALUE_FRAME_ID (arg);
378   VALUE_REGNUM (val) = VALUE_REGNUM (arg);
379   val->lazy = arg->lazy;
380   val->optimized_out = arg->optimized_out;
381   val->embedded_offset = value_embedded_offset (arg);
382   val->pointed_to_offset = arg->pointed_to_offset;
383   val->modifiable = arg->modifiable;
384   if (!value_lazy (val))
385     {
386       memcpy (value_contents_all_raw (val), value_contents_all_raw (arg),
387               TYPE_LENGTH (value_enclosing_type (arg)));
388
389     }
390   return val;
391 }
392 \f
393 /* Access to the value history.  */
394
395 /* Record a new value in the value history.
396    Returns the absolute history index of the entry.
397    Result of -1 indicates the value was not saved; otherwise it is the
398    value history index of this new item.  */
399
400 int
401 record_latest_value (struct value *val)
402 {
403   int i;
404
405   /* We don't want this value to have anything to do with the inferior anymore.
406      In particular, "set $1 = 50" should not affect the variable from which
407      the value was taken, and fast watchpoints should be able to assume that
408      a value on the value history never changes.  */
409   if (value_lazy (val))
410     value_fetch_lazy (val);
411   /* We preserve VALUE_LVAL so that the user can find out where it was fetched
412      from.  This is a bit dubious, because then *&$1 does not just return $1
413      but the current contents of that location.  c'est la vie...  */
414   val->modifiable = 0;
415   release_value (val);
416
417   /* Here we treat value_history_count as origin-zero
418      and applying to the value being stored now.  */
419
420   i = value_history_count % VALUE_HISTORY_CHUNK;
421   if (i == 0)
422     {
423       struct value_history_chunk *new
424       = (struct value_history_chunk *)
425       xmalloc (sizeof (struct value_history_chunk));
426       memset (new->values, 0, sizeof new->values);
427       new->next = value_history_chain;
428       value_history_chain = new;
429     }
430
431   value_history_chain->values[i] = val;
432
433   /* Now we regard value_history_count as origin-one
434      and applying to the value just stored.  */
435
436   return ++value_history_count;
437 }
438
439 /* Return a copy of the value in the history with sequence number NUM.  */
440
441 struct value *
442 access_value_history (int num)
443 {
444   struct value_history_chunk *chunk;
445   int i;
446   int absnum = num;
447
448   if (absnum <= 0)
449     absnum += value_history_count;
450
451   if (absnum <= 0)
452     {
453       if (num == 0)
454         error ("The history is empty.");
455       else if (num == 1)
456         error ("There is only one value in the history.");
457       else
458         error ("History does not go back to $$%d.", -num);
459     }
460   if (absnum > value_history_count)
461     error ("History has not yet reached $%d.", absnum);
462
463   absnum--;
464
465   /* Now absnum is always absolute and origin zero.  */
466
467   chunk = value_history_chain;
468   for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK - absnum / VALUE_HISTORY_CHUNK;
469        i > 0; i--)
470     chunk = chunk->next;
471
472   return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]);
473 }
474
475 /* Clear the value history entirely.
476    Must be done when new symbol tables are loaded,
477    because the type pointers become invalid.  */
478
479 void
480 clear_value_history (void)
481 {
482   struct value_history_chunk *next;
483   int i;
484   struct value *val;
485
486   while (value_history_chain)
487     {
488       for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
489         if ((val = value_history_chain->values[i]) != NULL)
490           xfree (val);
491       next = value_history_chain->next;
492       xfree (value_history_chain);
493       value_history_chain = next;
494     }
495   value_history_count = 0;
496 }
497
498 static void
499 show_values (char *num_exp, int from_tty)
500 {
501   int i;
502   struct value *val;
503   static int num = 1;
504
505   if (num_exp)
506     {
507       /* "info history +" should print from the stored position.
508          "info history <exp>" should print around value number <exp>.  */
509       if (num_exp[0] != '+' || num_exp[1] != '\0')
510         num = parse_and_eval_long (num_exp) - 5;
511     }
512   else
513     {
514       /* "info history" means print the last 10 values.  */
515       num = value_history_count - 9;
516     }
517
518   if (num <= 0)
519     num = 1;
520
521   for (i = num; i < num + 10 && i <= value_history_count; i++)
522     {
523       val = access_value_history (i);
524       printf_filtered ("$%d = ", i);
525       value_print (val, gdb_stdout, 0, Val_pretty_default);
526       printf_filtered ("\n");
527     }
528
529   /* The next "info history +" should start after what we just printed.  */
530   num += 10;
531
532   /* Hitting just return after this command should do the same thing as
533      "info history +".  If num_exp is null, this is unnecessary, since
534      "info history +" is not useful after "info history".  */
535   if (from_tty && num_exp)
536     {
537       num_exp[0] = '+';
538       num_exp[1] = '\0';
539     }
540 }
541 \f
542 /* Internal variables.  These are variables within the debugger
543    that hold values assigned by debugger commands.
544    The user refers to them with a '$' prefix
545    that does not appear in the variable names stored internally.  */
546
547 static struct internalvar *internalvars;
548
549 /* Look up an internal variable with name NAME.  NAME should not
550    normally include a dollar sign.
551
552    If the specified internal variable does not exist,
553    one is created, with a void value.  */
554
555 struct internalvar *
556 lookup_internalvar (char *name)
557 {
558   struct internalvar *var;
559
560   for (var = internalvars; var; var = var->next)
561     if (strcmp (var->name, name) == 0)
562       return var;
563
564   var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
565   var->name = concat (name, NULL);
566   var->value = allocate_value (builtin_type_void);
567   release_value (var->value);
568   var->next = internalvars;
569   internalvars = var;
570   return var;
571 }
572
573 struct value *
574 value_of_internalvar (struct internalvar *var)
575 {
576   struct value *val;
577
578   val = value_copy (var->value);
579   if (value_lazy (val))
580     value_fetch_lazy (val);
581   VALUE_LVAL (val) = lval_internalvar;
582   VALUE_INTERNALVAR (val) = var;
583   return val;
584 }
585
586 void
587 set_internalvar_component (struct internalvar *var, int offset, int bitpos,
588                            int bitsize, struct value *newval)
589 {
590   bfd_byte *addr = value_contents_writeable (var->value) + offset;
591
592   if (bitsize)
593     modify_field (addr, value_as_long (newval),
594                   bitpos, bitsize);
595   else
596     memcpy (addr, value_contents (newval), TYPE_LENGTH (value_type (newval)));
597 }
598
599 void
600 set_internalvar (struct internalvar *var, struct value *val)
601 {
602   struct value *newval;
603
604   newval = value_copy (val);
605   newval->modifiable = 1;
606
607   /* Force the value to be fetched from the target now, to avoid problems
608      later when this internalvar is referenced and the target is gone or
609      has changed.  */
610   if (value_lazy (newval))
611     value_fetch_lazy (newval);
612
613   /* Begin code which must not call error().  If var->value points to
614      something free'd, an error() obviously leaves a dangling pointer.
615      But we also get a danling pointer if var->value points to
616      something in the value chain (i.e., before release_value is
617      called), because after the error free_all_values will get called before
618      long.  */
619   xfree (var->value);
620   var->value = newval;
621   release_value (newval);
622   /* End code which must not call error().  */
623 }
624
625 char *
626 internalvar_name (struct internalvar *var)
627 {
628   return var->name;
629 }
630
631 /* Free all internalvars.  Done when new symtabs are loaded,
632    because that makes the values invalid.  */
633
634 void
635 clear_internalvars (void)
636 {
637   struct internalvar *var;
638
639   while (internalvars)
640     {
641       var = internalvars;
642       internalvars = var->next;
643       xfree (var->name);
644       xfree (var->value);
645       xfree (var);
646     }
647 }
648
649 static void
650 show_convenience (char *ignore, int from_tty)
651 {
652   struct internalvar *var;
653   int varseen = 0;
654
655   for (var = internalvars; var; var = var->next)
656     {
657       if (!varseen)
658         {
659           varseen = 1;
660         }
661       printf_filtered ("$%s = ", var->name);
662       value_print (var->value, gdb_stdout, 0, Val_pretty_default);
663       printf_filtered ("\n");
664     }
665   if (!varseen)
666     printf_unfiltered ("No debugger convenience variables now defined.\n\
667 Convenience variables have names starting with \"$\";\n\
668 use \"set\" as in \"set $foo = 5\" to define them.\n");
669 }
670 \f
671 /* Extract a value as a C number (either long or double).
672    Knows how to convert fixed values to double, or
673    floating values to long.
674    Does not deallocate the value.  */
675
676 LONGEST
677 value_as_long (struct value *val)
678 {
679   /* This coerces arrays and functions, which is necessary (e.g.
680      in disassemble_command).  It also dereferences references, which
681      I suspect is the most logical thing to do.  */
682   val = coerce_array (val);
683   return unpack_long (value_type (val), value_contents (val));
684 }
685
686 DOUBLEST
687 value_as_double (struct value *val)
688 {
689   DOUBLEST foo;
690   int inv;
691
692   foo = unpack_double (value_type (val), value_contents (val), &inv);
693   if (inv)
694     error ("Invalid floating value found in program.");
695   return foo;
696 }
697 /* Extract a value as a C pointer. Does not deallocate the value.  
698    Note that val's type may not actually be a pointer; value_as_long
699    handles all the cases.  */
700 CORE_ADDR
701 value_as_address (struct value *val)
702 {
703   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
704      whether we want this to be true eventually.  */
705 #if 0
706   /* ADDR_BITS_REMOVE is wrong if we are being called for a
707      non-address (e.g. argument to "signal", "info break", etc.), or
708      for pointers to char, in which the low bits *are* significant.  */
709   return ADDR_BITS_REMOVE (value_as_long (val));
710 #else
711
712   /* There are several targets (IA-64, PowerPC, and others) which
713      don't represent pointers to functions as simply the address of
714      the function's entry point.  For example, on the IA-64, a
715      function pointer points to a two-word descriptor, generated by
716      the linker, which contains the function's entry point, and the
717      value the IA-64 "global pointer" register should have --- to
718      support position-independent code.  The linker generates
719      descriptors only for those functions whose addresses are taken.
720
721      On such targets, it's difficult for GDB to convert an arbitrary
722      function address into a function pointer; it has to either find
723      an existing descriptor for that function, or call malloc and
724      build its own.  On some targets, it is impossible for GDB to
725      build a descriptor at all: the descriptor must contain a jump
726      instruction; data memory cannot be executed; and code memory
727      cannot be modified.
728
729      Upon entry to this function, if VAL is a value of type `function'
730      (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then
731      VALUE_ADDRESS (val) is the address of the function.  This is what
732      you'll get if you evaluate an expression like `main'.  The call
733      to COERCE_ARRAY below actually does all the usual unary
734      conversions, which includes converting values of type `function'
735      to `pointer to function'.  This is the challenging conversion
736      discussed above.  Then, `unpack_long' will convert that pointer
737      back into an address.
738
739      So, suppose the user types `disassemble foo' on an architecture
740      with a strange function pointer representation, on which GDB
741      cannot build its own descriptors, and suppose further that `foo'
742      has no linker-built descriptor.  The address->pointer conversion
743      will signal an error and prevent the command from running, even
744      though the next step would have been to convert the pointer
745      directly back into the same address.
746
747      The following shortcut avoids this whole mess.  If VAL is a
748      function, just return its address directly.  */
749   if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
750       || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
751     return VALUE_ADDRESS (val);
752
753   val = coerce_array (val);
754
755   /* Some architectures (e.g. Harvard), map instruction and data
756      addresses onto a single large unified address space.  For
757      instance: An architecture may consider a large integer in the
758      range 0x10000000 .. 0x1000ffff to already represent a data
759      addresses (hence not need a pointer to address conversion) while
760      a small integer would still need to be converted integer to
761      pointer to address.  Just assume such architectures handle all
762      integer conversions in a single function.  */
763
764   /* JimB writes:
765
766      I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we
767      must admonish GDB hackers to make sure its behavior matches the
768      compiler's, whenever possible.
769
770      In general, I think GDB should evaluate expressions the same way
771      the compiler does.  When the user copies an expression out of
772      their source code and hands it to a `print' command, they should
773      get the same value the compiler would have computed.  Any
774      deviation from this rule can cause major confusion and annoyance,
775      and needs to be justified carefully.  In other words, GDB doesn't
776      really have the freedom to do these conversions in clever and
777      useful ways.
778
779      AndrewC pointed out that users aren't complaining about how GDB
780      casts integers to pointers; they are complaining that they can't
781      take an address from a disassembly listing and give it to `x/i'.
782      This is certainly important.
783
784      Adding an architecture method like integer_to_address() certainly
785      makes it possible for GDB to "get it right" in all circumstances
786      --- the target has complete control over how things get done, so
787      people can Do The Right Thing for their target without breaking
788      anyone else.  The standard doesn't specify how integers get
789      converted to pointers; usually, the ABI doesn't either, but
790      ABI-specific code is a more reasonable place to handle it.  */
791
792   if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
793       && TYPE_CODE (value_type (val)) != TYPE_CODE_REF
794       && gdbarch_integer_to_address_p (current_gdbarch))
795     return gdbarch_integer_to_address (current_gdbarch, value_type (val),
796                                        value_contents (val));
797
798   return unpack_long (value_type (val), value_contents (val));
799 #endif
800 }
801 \f
802 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
803    as a long, or as a double, assuming the raw data is described
804    by type TYPE.  Knows how to convert different sizes of values
805    and can convert between fixed and floating point.  We don't assume
806    any alignment for the raw data.  Return value is in host byte order.
807
808    If you want functions and arrays to be coerced to pointers, and
809    references to be dereferenced, call value_as_long() instead.
810
811    C++: It is assumed that the front-end has taken care of
812    all matters concerning pointers to members.  A pointer
813    to member which reaches here is considered to be equivalent
814    to an INT (or some size).  After all, it is only an offset.  */
815
816 LONGEST
817 unpack_long (struct type *type, const char *valaddr)
818 {
819   enum type_code code = TYPE_CODE (type);
820   int len = TYPE_LENGTH (type);
821   int nosign = TYPE_UNSIGNED (type);
822
823   if (current_language->la_language == language_scm
824       && is_scmvalue_type (type))
825     return scm_unpack (type, valaddr, TYPE_CODE_INT);
826
827   switch (code)
828     {
829     case TYPE_CODE_TYPEDEF:
830       return unpack_long (check_typedef (type), valaddr);
831     case TYPE_CODE_ENUM:
832     case TYPE_CODE_BOOL:
833     case TYPE_CODE_INT:
834     case TYPE_CODE_CHAR:
835     case TYPE_CODE_RANGE:
836       if (nosign)
837         return extract_unsigned_integer (valaddr, len);
838       else
839         return extract_signed_integer (valaddr, len);
840
841     case TYPE_CODE_FLT:
842       return extract_typed_floating (valaddr, type);
843
844     case TYPE_CODE_PTR:
845     case TYPE_CODE_REF:
846       /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
847          whether we want this to be true eventually.  */
848       return extract_typed_address (valaddr, type);
849
850     case TYPE_CODE_MEMBER:
851       error ("not implemented: member types in unpack_long");
852
853     default:
854       error ("Value can't be converted to integer.");
855     }
856   return 0;                     /* Placate lint.  */
857 }
858
859 /* Return a double value from the specified type and address.
860    INVP points to an int which is set to 0 for valid value,
861    1 for invalid value (bad float format).  In either case,
862    the returned double is OK to use.  Argument is in target
863    format, result is in host format.  */
864
865 DOUBLEST
866 unpack_double (struct type *type, const char *valaddr, int *invp)
867 {
868   enum type_code code;
869   int len;
870   int nosign;
871
872   *invp = 0;                    /* Assume valid.   */
873   CHECK_TYPEDEF (type);
874   code = TYPE_CODE (type);
875   len = TYPE_LENGTH (type);
876   nosign = TYPE_UNSIGNED (type);
877   if (code == TYPE_CODE_FLT)
878     {
879       /* NOTE: cagney/2002-02-19: There was a test here to see if the
880          floating-point value was valid (using the macro
881          INVALID_FLOAT).  That test/macro have been removed.
882
883          It turns out that only the VAX defined this macro and then
884          only in a non-portable way.  Fixing the portability problem
885          wouldn't help since the VAX floating-point code is also badly
886          bit-rotten.  The target needs to add definitions for the
887          methods TARGET_FLOAT_FORMAT and TARGET_DOUBLE_FORMAT - these
888          exactly describe the target floating-point format.  The
889          problem here is that the corresponding floatformat_vax_f and
890          floatformat_vax_d values these methods should be set to are
891          also not defined either.  Oops!
892
893          Hopefully someone will add both the missing floatformat
894          definitions and the new cases for floatformat_is_valid ().  */
895
896       if (!floatformat_is_valid (floatformat_from_type (type), valaddr))
897         {
898           *invp = 1;
899           return 0.0;
900         }
901
902       return extract_typed_floating (valaddr, type);
903     }
904   else if (nosign)
905     {
906       /* Unsigned -- be sure we compensate for signed LONGEST.  */
907       return (ULONGEST) unpack_long (type, valaddr);
908     }
909   else
910     {
911       /* Signed -- we are OK with unpack_long.  */
912       return unpack_long (type, valaddr);
913     }
914 }
915
916 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
917    as a CORE_ADDR, assuming the raw data is described by type TYPE.
918    We don't assume any alignment for the raw data.  Return value is in
919    host byte order.
920
921    If you want functions and arrays to be coerced to pointers, and
922    references to be dereferenced, call value_as_address() instead.
923
924    C++: It is assumed that the front-end has taken care of
925    all matters concerning pointers to members.  A pointer
926    to member which reaches here is considered to be equivalent
927    to an INT (or some size).  After all, it is only an offset.  */
928
929 CORE_ADDR
930 unpack_pointer (struct type *type, const char *valaddr)
931 {
932   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
933      whether we want this to be true eventually.  */
934   return unpack_long (type, valaddr);
935 }
936
937 \f
938 /* Get the value of the FIELDN'th field (which must be static) of
939    TYPE.  Return NULL if the field doesn't exist or has been
940    optimized out. */
941
942 struct value *
943 value_static_field (struct type *type, int fieldno)
944 {
945   struct value *retval;
946
947   if (TYPE_FIELD_STATIC_HAS_ADDR (type, fieldno))
948     {
949       retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
950                          TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
951     }
952   else
953     {
954       char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
955       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0, NULL);
956       if (sym == NULL)
957         {
958           /* With some compilers, e.g. HP aCC, static data members are reported
959              as non-debuggable symbols */
960           struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, NULL, NULL);
961           if (!msym)
962             return NULL;
963           else
964             {
965               retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
966                                  SYMBOL_VALUE_ADDRESS (msym));
967             }
968         }
969       else
970         {
971           /* SYM should never have a SYMBOL_CLASS which will require
972              read_var_value to use the FRAME parameter.  */
973           if (symbol_read_needs_frame (sym))
974             warning ("static field's value depends on the current "
975                      "frame - bad debug info?");
976           retval = read_var_value (sym, NULL);
977         }
978       if (retval && VALUE_LVAL (retval) == lval_memory)
979         SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno),
980                             VALUE_ADDRESS (retval));
981     }
982   return retval;
983 }
984
985 /* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE.  
986    You have to be careful here, since the size of the data area for the value 
987    is set by the length of the enclosing type.  So if NEW_ENCL_TYPE is bigger 
988    than the old enclosing type, you have to allocate more space for the data.  
989    The return value is a pointer to the new version of this value structure. */
990
991 struct value *
992 value_change_enclosing_type (struct value *val, struct type *new_encl_type)
993 {
994   if (TYPE_LENGTH (new_encl_type) <= TYPE_LENGTH (value_enclosing_type (val))) 
995     {
996       val->enclosing_type = new_encl_type;
997       return val;
998     }
999   else
1000     {
1001       struct value *new_val;
1002       struct value *prev;
1003       
1004       new_val = (struct value *) xrealloc (val, sizeof (struct value) + TYPE_LENGTH (new_encl_type));
1005
1006       new_val->enclosing_type = new_encl_type;
1007  
1008       /* We have to make sure this ends up in the same place in the value
1009          chain as the original copy, so it's clean-up behavior is the same. 
1010          If the value has been released, this is a waste of time, but there
1011          is no way to tell that in advance, so... */
1012       
1013       if (val != all_values) 
1014         {
1015           for (prev = all_values; prev != NULL; prev = prev->next)
1016             {
1017               if (prev->next == val) 
1018                 {
1019                   prev->next = new_val;
1020                   break;
1021                 }
1022             }
1023         }
1024       
1025       return new_val;
1026     }
1027 }
1028
1029 /* Given a value ARG1 (offset by OFFSET bytes)
1030    of a struct or union type ARG_TYPE,
1031    extract and return the value of one of its (non-static) fields.
1032    FIELDNO says which field. */
1033
1034 struct value *
1035 value_primitive_field (struct value *arg1, int offset,
1036                        int fieldno, struct type *arg_type)
1037 {
1038   struct value *v;
1039   struct type *type;
1040
1041   CHECK_TYPEDEF (arg_type);
1042   type = TYPE_FIELD_TYPE (arg_type, fieldno);
1043
1044   /* Handle packed fields */
1045
1046   if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
1047     {
1048       v = value_from_longest (type,
1049                               unpack_field_as_long (arg_type,
1050                                                     value_contents (arg1)
1051                                                     + offset,
1052                                                     fieldno));
1053       v->bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno) % 8;
1054       v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno);
1055       v->offset = value_offset (arg1) + offset
1056         + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1057     }
1058   else if (fieldno < TYPE_N_BASECLASSES (arg_type))
1059     {
1060       /* This field is actually a base subobject, so preserve the
1061          entire object's contents for later references to virtual
1062          bases, etc.  */
1063       v = allocate_value (value_enclosing_type (arg1));
1064       v->type = type;
1065       if (value_lazy (arg1))
1066         set_value_lazy (v, 1);
1067       else
1068         memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
1069                 TYPE_LENGTH (value_enclosing_type (arg1)));
1070       v->offset = value_offset (arg1);
1071       v->embedded_offset = (offset + value_embedded_offset (arg1)
1072                             + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8);
1073     }
1074   else
1075     {
1076       /* Plain old data member */
1077       offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1078       v = allocate_value (type);
1079       if (value_lazy (arg1))
1080         set_value_lazy (v, 1);
1081       else
1082         memcpy (value_contents_raw (v),
1083                 value_contents_raw (arg1) + offset,
1084                 TYPE_LENGTH (type));
1085       v->offset = (value_offset (arg1) + offset
1086                    + value_embedded_offset (arg1));
1087     }
1088   VALUE_LVAL (v) = VALUE_LVAL (arg1);
1089   if (VALUE_LVAL (arg1) == lval_internalvar)
1090     VALUE_LVAL (v) = lval_internalvar_component;
1091   VALUE_ADDRESS (v) = VALUE_ADDRESS (arg1);
1092   VALUE_REGNUM (v) = VALUE_REGNUM (arg1);
1093   VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1);
1094 /*  VALUE_OFFSET (v) = VALUE_OFFSET (arg1) + offset
1095    + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8; */
1096   return v;
1097 }
1098
1099 /* Given a value ARG1 of a struct or union type,
1100    extract and return the value of one of its (non-static) fields.
1101    FIELDNO says which field. */
1102
1103 struct value *
1104 value_field (struct value *arg1, int fieldno)
1105 {
1106   return value_primitive_field (arg1, 0, fieldno, value_type (arg1));
1107 }
1108
1109 /* Return a non-virtual function as a value.
1110    F is the list of member functions which contains the desired method.
1111    J is an index into F which provides the desired method.
1112
1113    We only use the symbol for its address, so be happy with either a
1114    full symbol or a minimal symbol.
1115  */
1116
1117 struct value *
1118 value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type,
1119                 int offset)
1120 {
1121   struct value *v;
1122   struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
1123   char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
1124   struct symbol *sym;
1125   struct minimal_symbol *msym;
1126
1127   sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0, NULL);
1128   if (sym != NULL)
1129     {
1130       msym = NULL;
1131     }
1132   else
1133     {
1134       gdb_assert (sym == NULL);
1135       msym = lookup_minimal_symbol (physname, NULL, NULL);
1136       if (msym == NULL)
1137         return NULL;
1138     }
1139
1140   v = allocate_value (ftype);
1141   if (sym)
1142     {
1143       VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1144     }
1145   else
1146     {
1147       VALUE_ADDRESS (v) = SYMBOL_VALUE_ADDRESS (msym);
1148     }
1149
1150   if (arg1p)
1151     {
1152       if (type != value_type (*arg1p))
1153         *arg1p = value_ind (value_cast (lookup_pointer_type (type),
1154                                         value_addr (*arg1p)));
1155
1156       /* Move the `this' pointer according to the offset.
1157          VALUE_OFFSET (*arg1p) += offset;
1158        */
1159     }
1160
1161   return v;
1162 }
1163
1164 \f
1165 /* Unpack a field FIELDNO of the specified TYPE, from the anonymous object at
1166    VALADDR.
1167
1168    Extracting bits depends on endianness of the machine.  Compute the
1169    number of least significant bits to discard.  For big endian machines,
1170    we compute the total number of bits in the anonymous object, subtract
1171    off the bit count from the MSB of the object to the MSB of the
1172    bitfield, then the size of the bitfield, which leaves the LSB discard
1173    count.  For little endian machines, the discard count is simply the
1174    number of bits from the LSB of the anonymous object to the LSB of the
1175    bitfield.
1176
1177    If the field is signed, we also do sign extension. */
1178
1179 LONGEST
1180 unpack_field_as_long (struct type *type, const char *valaddr, int fieldno)
1181 {
1182   ULONGEST val;
1183   ULONGEST valmask;
1184   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
1185   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
1186   int lsbcount;
1187   struct type *field_type;
1188
1189   val = extract_unsigned_integer (valaddr + bitpos / 8, sizeof (val));
1190   field_type = TYPE_FIELD_TYPE (type, fieldno);
1191   CHECK_TYPEDEF (field_type);
1192
1193   /* Extract bits.  See comment above. */
1194
1195   if (BITS_BIG_ENDIAN)
1196     lsbcount = (sizeof val * 8 - bitpos % 8 - bitsize);
1197   else
1198     lsbcount = (bitpos % 8);
1199   val >>= lsbcount;
1200
1201   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
1202      If the field is signed, and is negative, then sign extend. */
1203
1204   if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val)))
1205     {
1206       valmask = (((ULONGEST) 1) << bitsize) - 1;
1207       val &= valmask;
1208       if (!TYPE_UNSIGNED (field_type))
1209         {
1210           if (val & (valmask ^ (valmask >> 1)))
1211             {
1212               val |= ~valmask;
1213             }
1214         }
1215     }
1216   return (val);
1217 }
1218
1219 /* Modify the value of a bitfield.  ADDR points to a block of memory in
1220    target byte order; the bitfield starts in the byte pointed to.  FIELDVAL
1221    is the desired value of the field, in host byte order.  BITPOS and BITSIZE
1222    indicate which bits (in target bit order) comprise the bitfield.  
1223    Requires 0 < BITSIZE <= lbits, 0 <= BITPOS+BITSIZE <= lbits, and
1224    0 <= BITPOS, where lbits is the size of a LONGEST in bits.  */
1225
1226 void
1227 modify_field (char *addr, LONGEST fieldval, int bitpos, int bitsize)
1228 {
1229   ULONGEST oword;
1230   ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
1231
1232   /* If a negative fieldval fits in the field in question, chop
1233      off the sign extension bits.  */
1234   if ((~fieldval & ~(mask >> 1)) == 0)
1235     fieldval &= mask;
1236
1237   /* Warn if value is too big to fit in the field in question.  */
1238   if (0 != (fieldval & ~mask))
1239     {
1240       /* FIXME: would like to include fieldval in the message, but
1241          we don't have a sprintf_longest.  */
1242       warning ("Value does not fit in %d bits.", bitsize);
1243
1244       /* Truncate it, otherwise adjoining fields may be corrupted.  */
1245       fieldval &= mask;
1246     }
1247
1248   oword = extract_unsigned_integer (addr, sizeof oword);
1249
1250   /* Shifting for bit field depends on endianness of the target machine.  */
1251   if (BITS_BIG_ENDIAN)
1252     bitpos = sizeof (oword) * 8 - bitpos - bitsize;
1253
1254   oword &= ~(mask << bitpos);
1255   oword |= fieldval << bitpos;
1256
1257   store_unsigned_integer (addr, sizeof oword, oword);
1258 }
1259 \f
1260 /* Convert C numbers into newly allocated values */
1261
1262 struct value *
1263 value_from_longest (struct type *type, LONGEST num)
1264 {
1265   struct value *val = allocate_value (type);
1266   enum type_code code;
1267   int len;
1268 retry:
1269   code = TYPE_CODE (type);
1270   len = TYPE_LENGTH (type);
1271
1272   switch (code)
1273     {
1274     case TYPE_CODE_TYPEDEF:
1275       type = check_typedef (type);
1276       goto retry;
1277     case TYPE_CODE_INT:
1278     case TYPE_CODE_CHAR:
1279     case TYPE_CODE_ENUM:
1280     case TYPE_CODE_BOOL:
1281     case TYPE_CODE_RANGE:
1282       store_signed_integer (value_contents_raw (val), len, num);
1283       break;
1284
1285     case TYPE_CODE_REF:
1286     case TYPE_CODE_PTR:
1287       store_typed_address (value_contents_raw (val), type, (CORE_ADDR) num);
1288       break;
1289
1290     default:
1291       error ("Unexpected type (%d) encountered for integer constant.", code);
1292     }
1293   return val;
1294 }
1295
1296
1297 /* Create a value representing a pointer of type TYPE to the address
1298    ADDR.  */
1299 struct value *
1300 value_from_pointer (struct type *type, CORE_ADDR addr)
1301 {
1302   struct value *val = allocate_value (type);
1303   store_typed_address (value_contents_raw (val), type, addr);
1304   return val;
1305 }
1306
1307
1308 /* Create a value for a string constant to be stored locally
1309    (not in the inferior's memory space, but in GDB memory).
1310    This is analogous to value_from_longest, which also does not
1311    use inferior memory.  String shall NOT contain embedded nulls.  */
1312
1313 struct value *
1314 value_from_string (char *ptr)
1315 {
1316   struct value *val;
1317   int len = strlen (ptr);
1318   int lowbound = current_language->string_lower_bound;
1319   struct type *string_char_type;
1320   struct type *rangetype;
1321   struct type *stringtype;
1322
1323   rangetype = create_range_type ((struct type *) NULL,
1324                                  builtin_type_int,
1325                                  lowbound, len + lowbound - 1);
1326   string_char_type = language_string_char_type (current_language,
1327                                                 current_gdbarch);
1328   stringtype = create_array_type ((struct type *) NULL,
1329                                   string_char_type,
1330                                   rangetype);
1331   val = allocate_value (stringtype);
1332   memcpy (value_contents_raw (val), ptr, len);
1333   return val;
1334 }
1335
1336 struct value *
1337 value_from_double (struct type *type, DOUBLEST num)
1338 {
1339   struct value *val = allocate_value (type);
1340   struct type *base_type = check_typedef (type);
1341   enum type_code code = TYPE_CODE (base_type);
1342   int len = TYPE_LENGTH (base_type);
1343
1344   if (code == TYPE_CODE_FLT)
1345     {
1346       store_typed_floating (value_contents_raw (val), base_type, num);
1347     }
1348   else
1349     error ("Unexpected type encountered for floating constant.");
1350
1351   return val;
1352 }
1353
1354 struct value *
1355 coerce_ref (struct value *arg)
1356 {
1357   struct type *value_type_arg_tmp = check_typedef (value_type (arg));
1358   if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
1359     arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
1360                          unpack_pointer (value_type (arg),              
1361                                          value_contents (arg)));
1362   return arg;
1363 }
1364
1365 struct value *
1366 coerce_array (struct value *arg)
1367 {
1368   arg = coerce_ref (arg);
1369   if (current_language->c_style_arrays
1370       && TYPE_CODE (value_type (arg)) == TYPE_CODE_ARRAY)
1371     arg = value_coerce_array (arg);
1372   if (TYPE_CODE (value_type (arg)) == TYPE_CODE_FUNC)
1373     arg = value_coerce_function (arg);
1374   return arg;
1375 }
1376
1377 struct value *
1378 coerce_number (struct value *arg)
1379 {
1380   arg = coerce_array (arg);
1381   arg = coerce_enum (arg);
1382   return arg;
1383 }
1384
1385 struct value *
1386 coerce_enum (struct value *arg)
1387 {
1388   if (TYPE_CODE (check_typedef (value_type (arg))) == TYPE_CODE_ENUM)
1389     arg = value_cast (builtin_type_unsigned_int, arg);
1390   return arg;
1391 }
1392 \f
1393
1394 /* Should we use DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS instead of
1395    EXTRACT_RETURN_VALUE?  GCC_P is true if compiled with gcc and TYPE
1396    is the type (which is known to be struct, union or array).
1397
1398    On most machines, the struct convention is used unless we are
1399    using gcc and the type is of a special size.  */
1400 /* As of about 31 Mar 93, GCC was changed to be compatible with the
1401    native compiler.  GCC 2.3.3 was the last release that did it the
1402    old way.  Since gcc2_compiled was not changed, we have no
1403    way to correctly win in all cases, so we just do the right thing
1404    for gcc1 and for gcc2 after this change.  Thus it loses for gcc
1405    2.0-2.3.3.  This is somewhat unfortunate, but changing gcc2_compiled
1406    would cause more chaos than dealing with some struct returns being
1407    handled wrong.  */
1408 /* NOTE: cagney/2004-06-13: Deleted check for "gcc_p".  GCC 1.x is
1409    dead.  */
1410
1411 int
1412 generic_use_struct_convention (int gcc_p, struct type *value_type)
1413 {
1414   return !(TYPE_LENGTH (value_type) == 1
1415            || TYPE_LENGTH (value_type) == 2
1416            || TYPE_LENGTH (value_type) == 4
1417            || TYPE_LENGTH (value_type) == 8);
1418 }
1419
1420 /* Return true if the function returning the specified type is using
1421    the convention of returning structures in memory (passing in the
1422    address as a hidden first parameter).  GCC_P is nonzero if compiled
1423    with GCC.  */
1424
1425 int
1426 using_struct_return (struct type *value_type, int gcc_p)
1427 {
1428   enum type_code code = TYPE_CODE (value_type);
1429
1430   if (code == TYPE_CODE_ERROR)
1431     error ("Function return type unknown.");
1432
1433   if (code == TYPE_CODE_VOID)
1434     /* A void return value is never in memory.  See also corresponding
1435        code in "print_return_value".  */
1436     return 0;
1437
1438   /* Probe the architecture for the return-value convention.  */
1439   return (gdbarch_return_value (current_gdbarch, value_type,
1440                                 NULL, NULL, NULL)
1441           != RETURN_VALUE_REGISTER_CONVENTION);
1442 }
1443
1444 void
1445 _initialize_values (void)
1446 {
1447   add_cmd ("convenience", no_class, show_convenience,
1448            "Debugger convenience (\"$foo\") variables.\n\
1449 These variables are created when you assign them values;\n\
1450 thus, \"print $foo=1\" gives \"$foo\" the value 1.  Values may be any type.\n\n\
1451 A few convenience variables are given values automatically:\n\
1452 \"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
1453 \"$__\" holds the contents of the last address examined with \"x\".",
1454            &showlist);
1455
1456   add_cmd ("values", no_class, show_values,
1457            "Elements of value history around item number IDX (or last ten).",
1458            &showlist);
1459 }