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