OSDN Git Service

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