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