OSDN Git Service

* gdbtypes.c (make_pointer_type, make_reference_type,
[pf3gnuchains/pf3gnuchains3x.git] / gdb / value.c
1 /* Low level packing and unpacking of values for GDB, the GNU Debugger.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
5    2009 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "value.h"
27 #include "gdbcore.h"
28 #include "command.h"
29 #include "gdbcmd.h"
30 #include "target.h"
31 #include "language.h"
32 #include "demangle.h"
33 #include "doublest.h"
34 #include "gdb_assert.h"
35 #include "regcache.h"
36 #include "block.h"
37 #include "dfp.h"
38 #include "objfiles.h"
39 #include "valprint.h"
40 #include "cli/cli-decode.h"
41
42 #include "python/python.h"
43
44 /* Prototypes for exported functions. */
45
46 void _initialize_values (void);
47
48 /* Definition of a user function.  */
49 struct internal_function
50 {
51   /* The name of the function.  It is a bit odd to have this in the
52      function itself -- the user might use a differently-named
53      convenience variable to hold the function.  */
54   char *name;
55
56   /* The handler.  */
57   internal_function_fn handler;
58
59   /* User data for the handler.  */
60   void *cookie;
61 };
62
63 static struct cmd_list_element *functionlist;
64
65 struct value
66 {
67   /* Type of value; either not an lval, or one of the various
68      different possible kinds of lval.  */
69   enum lval_type lval;
70
71   /* Is it modifiable?  Only relevant if lval != not_lval.  */
72   int modifiable;
73
74   /* Location of value (if lval).  */
75   union
76   {
77     /* If lval == lval_memory, this is the address in the inferior.
78        If lval == lval_register, this is the byte offset into the
79        registers structure.  */
80     CORE_ADDR address;
81
82     /* Pointer to internal variable.  */
83     struct internalvar *internalvar;
84
85     /* If lval == lval_computed, this is a set of function pointers
86        to use to access and describe the value, and a closure pointer
87        for them to use.  */
88     struct
89     {
90       struct lval_funcs *funcs; /* Functions to call.  */
91       void *closure;            /* Closure for those functions to use.  */
92     } computed;
93   } location;
94
95   /* Describes offset of a value within lval of a structure in bytes.
96      If lval == lval_memory, this is an offset to the address.  If
97      lval == lval_register, this is a further offset from
98      location.address within the registers structure.  Note also the
99      member embedded_offset below.  */
100   int offset;
101
102   /* Only used for bitfields; number of bits contained in them.  */
103   int bitsize;
104
105   /* Only used for bitfields; position of start of field.  For
106      gdbarch_bits_big_endian=0 targets, it is the position of the LSB.  For
107      gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */
108   int bitpos;
109
110   /* Frame register value is relative to.  This will be described in
111      the lval enum above as "lval_register".  */
112   struct frame_id frame_id;
113
114   /* Type of the value.  */
115   struct type *type;
116
117   /* If a value represents a C++ object, then the `type' field gives
118      the object's compile-time type.  If the object actually belongs
119      to some class derived from `type', perhaps with other base
120      classes and additional members, then `type' is just a subobject
121      of the real thing, and the full object is probably larger than
122      `type' would suggest.
123
124      If `type' is a dynamic class (i.e. one with a vtable), then GDB
125      can actually determine the object's run-time type by looking at
126      the run-time type information in the vtable.  When this
127      information is available, we may elect to read in the entire
128      object, for several reasons:
129
130      - When printing the value, the user would probably rather see the
131      full object, not just the limited portion apparent from the
132      compile-time type.
133
134      - If `type' has virtual base classes, then even printing `type'
135      alone may require reaching outside the `type' portion of the
136      object to wherever the virtual base class has been stored.
137
138      When we store the entire object, `enclosing_type' is the run-time
139      type -- the complete object -- and `embedded_offset' is the
140      offset of `type' within that larger type, in bytes.  The
141      value_contents() macro takes `embedded_offset' into account, so
142      most GDB code continues to see the `type' portion of the value,
143      just as the inferior would.
144
145      If `type' is a pointer to an object, then `enclosing_type' is a
146      pointer to the object's run-time type, and `pointed_to_offset' is
147      the offset in bytes from the full object to the pointed-to object
148      -- that is, the value `embedded_offset' would have if we followed
149      the pointer and fetched the complete object.  (I don't really see
150      the point.  Why not just determine the run-time type when you
151      indirect, and avoid the special case?  The contents don't matter
152      until you indirect anyway.)
153
154      If we're not doing anything fancy, `enclosing_type' is equal to
155      `type', and `embedded_offset' is zero, so everything works
156      normally.  */
157   struct type *enclosing_type;
158   int embedded_offset;
159   int pointed_to_offset;
160
161   /* Values are stored in a chain, so that they can be deleted easily
162      over calls to the inferior.  Values assigned to internal
163      variables, put into the value history or exposed to Python are
164      taken off this list.  */
165   struct value *next;
166
167   /* Register number if the value is from a register.  */
168   short regnum;
169
170   /* If zero, contents of this value are in the contents field.  If
171      nonzero, contents are in inferior.  If the lval field is lval_memory,
172      the contents are in inferior memory at location.address plus offset.
173      The lval field may also be lval_register.
174
175      WARNING: This field is used by the code which handles watchpoints
176      (see breakpoint.c) to decide whether a particular value can be
177      watched by hardware watchpoints.  If the lazy flag is set for
178      some member of a value chain, it is assumed that this member of
179      the chain doesn't need to be watched as part of watching the
180      value itself.  This is how GDB avoids watching the entire struct
181      or array when the user wants to watch a single struct member or
182      array element.  If you ever change the way lazy flag is set and
183      reset, be sure to consider this use as well!  */
184   char lazy;
185
186   /* If nonzero, this is the value of a variable which does not
187      actually exist in the program.  */
188   char optimized_out;
189
190   /* If value is a variable, is it initialized or not.  */
191   int initialized;
192
193   /* Actual contents of the value.  Target byte-order.  NULL or not
194      valid if lazy is nonzero.  */
195   gdb_byte *contents;
196 };
197
198 /* Prototypes for local functions. */
199
200 static void show_values (char *, int);
201
202 static void show_convenience (char *, int);
203
204
205 /* The value-history records all the values printed
206    by print commands during this session.  Each chunk
207    records 60 consecutive values.  The first chunk on
208    the chain records the most recent values.
209    The total number of values is in value_history_count.  */
210
211 #define VALUE_HISTORY_CHUNK 60
212
213 struct value_history_chunk
214   {
215     struct value_history_chunk *next;
216     struct value *values[VALUE_HISTORY_CHUNK];
217   };
218
219 /* Chain of chunks now in use.  */
220
221 static struct value_history_chunk *value_history_chain;
222
223 static int value_history_count; /* Abs number of last entry stored */
224
225 \f
226 /* List of all value objects currently allocated
227    (except for those released by calls to release_value)
228    This is so they can be freed after each command.  */
229
230 static struct value *all_values;
231
232 /* Allocate a lazy value for type TYPE.  Its actual content is
233    "lazily" allocated too: the content field of the return value is
234    NULL; it will be allocated when it is fetched from the target.  */
235
236 struct value *
237 allocate_value_lazy (struct type *type)
238 {
239   struct value *val;
240   struct type *atype = check_typedef (type);
241
242   val = (struct value *) xzalloc (sizeof (struct value));
243   val->contents = NULL;
244   val->next = all_values;
245   all_values = val;
246   val->type = type;
247   val->enclosing_type = type;
248   VALUE_LVAL (val) = not_lval;
249   val->location.address = 0;
250   VALUE_FRAME_ID (val) = null_frame_id;
251   val->offset = 0;
252   val->bitpos = 0;
253   val->bitsize = 0;
254   VALUE_REGNUM (val) = -1;
255   val->lazy = 1;
256   val->optimized_out = 0;
257   val->embedded_offset = 0;
258   val->pointed_to_offset = 0;
259   val->modifiable = 1;
260   val->initialized = 1;  /* Default to initialized.  */
261   return val;
262 }
263
264 /* Allocate the contents of VAL if it has not been allocated yet.  */
265
266 void
267 allocate_value_contents (struct value *val)
268 {
269   if (!val->contents)
270     val->contents = (gdb_byte *) xzalloc (TYPE_LENGTH (val->enclosing_type));
271 }
272
273 /* Allocate a  value  and its contents for type TYPE.  */
274
275 struct value *
276 allocate_value (struct type *type)
277 {
278   struct value *val = allocate_value_lazy (type);
279   allocate_value_contents (val);
280   val->lazy = 0;
281   return val;
282 }
283
284 /* Allocate a  value  that has the correct length
285    for COUNT repetitions of type TYPE.  */
286
287 struct value *
288 allocate_repeat_value (struct type *type, int count)
289 {
290   int low_bound = current_language->string_lower_bound;         /* ??? */
291   /* FIXME-type-allocation: need a way to free this type when we are
292      done with it.  */
293   struct type *array_type
294     = lookup_array_range_type (type, low_bound, count + low_bound - 1);
295   return allocate_value (array_type);
296 }
297
298 /* Needed if another module needs to maintain its on list of values.  */
299 void
300 value_prepend_to_list (struct value **head, struct value *val)
301 {
302   val->next = *head;
303   *head = val;
304 }
305
306 /* Needed if another module needs to maintain its on list of values.  */
307 void
308 value_remove_from_list (struct value **head, struct value *val)
309 {
310   struct value *prev;
311
312   if (*head == val)
313     *head = (*head)->next;
314   else
315     for (prev = *head; prev->next; prev = prev->next)
316       if (prev->next == val)
317       {
318         prev->next = val->next;
319         break;
320       }
321 }
322
323 struct value *
324 allocate_computed_value (struct type *type,
325                          struct lval_funcs *funcs,
326                          void *closure)
327 {
328   struct value *v = allocate_value (type);
329   VALUE_LVAL (v) = lval_computed;
330   v->location.computed.funcs = funcs;
331   v->location.computed.closure = closure;
332   set_value_lazy (v, 1);
333
334   return v;
335 }
336
337 /* Accessor methods.  */
338
339 struct value *
340 value_next (struct value *value)
341 {
342   return value->next;
343 }
344
345 struct type *
346 value_type (struct value *value)
347 {
348   return value->type;
349 }
350 void
351 deprecated_set_value_type (struct value *value, struct type *type)
352 {
353   value->type = type;
354 }
355
356 int
357 value_offset (struct value *value)
358 {
359   return value->offset;
360 }
361 void
362 set_value_offset (struct value *value, int offset)
363 {
364   value->offset = offset;
365 }
366
367 int
368 value_bitpos (struct value *value)
369 {
370   return value->bitpos;
371 }
372 void
373 set_value_bitpos (struct value *value, int bit)
374 {
375   value->bitpos = bit;
376 }
377
378 int
379 value_bitsize (struct value *value)
380 {
381   return value->bitsize;
382 }
383 void
384 set_value_bitsize (struct value *value, int bit)
385 {
386   value->bitsize = bit;
387 }
388
389 gdb_byte *
390 value_contents_raw (struct value *value)
391 {
392   allocate_value_contents (value);
393   return value->contents + value->embedded_offset;
394 }
395
396 gdb_byte *
397 value_contents_all_raw (struct value *value)
398 {
399   allocate_value_contents (value);
400   return value->contents;
401 }
402
403 struct type *
404 value_enclosing_type (struct value *value)
405 {
406   return value->enclosing_type;
407 }
408
409 const gdb_byte *
410 value_contents_all (struct value *value)
411 {
412   if (value->lazy)
413     value_fetch_lazy (value);
414   return value->contents;
415 }
416
417 int
418 value_lazy (struct value *value)
419 {
420   return value->lazy;
421 }
422
423 void
424 set_value_lazy (struct value *value, int val)
425 {
426   value->lazy = val;
427 }
428
429 const gdb_byte *
430 value_contents (struct value *value)
431 {
432   return value_contents_writeable (value);
433 }
434
435 gdb_byte *
436 value_contents_writeable (struct value *value)
437 {
438   if (value->lazy)
439     value_fetch_lazy (value);
440   return value_contents_raw (value);
441 }
442
443 /* Return non-zero if VAL1 and VAL2 have the same contents.  Note that
444    this function is different from value_equal; in C the operator ==
445    can return 0 even if the two values being compared are equal.  */
446
447 int
448 value_contents_equal (struct value *val1, struct value *val2)
449 {
450   struct type *type1;
451   struct type *type2;
452   int len;
453
454   type1 = check_typedef (value_type (val1));
455   type2 = check_typedef (value_type (val2));
456   len = TYPE_LENGTH (type1);
457   if (len != TYPE_LENGTH (type2))
458     return 0;
459
460   return (memcmp (value_contents (val1), value_contents (val2), len) == 0);
461 }
462
463 int
464 value_optimized_out (struct value *value)
465 {
466   return value->optimized_out;
467 }
468
469 void
470 set_value_optimized_out (struct value *value, int val)
471 {
472   value->optimized_out = val;
473 }
474
475 int
476 value_embedded_offset (struct value *value)
477 {
478   return value->embedded_offset;
479 }
480
481 void
482 set_value_embedded_offset (struct value *value, int val)
483 {
484   value->embedded_offset = val;
485 }
486
487 int
488 value_pointed_to_offset (struct value *value)
489 {
490   return value->pointed_to_offset;
491 }
492
493 void
494 set_value_pointed_to_offset (struct value *value, int val)
495 {
496   value->pointed_to_offset = val;
497 }
498
499 struct lval_funcs *
500 value_computed_funcs (struct value *v)
501 {
502   gdb_assert (VALUE_LVAL (v) == lval_computed);
503
504   return v->location.computed.funcs;
505 }
506
507 void *
508 value_computed_closure (struct value *v)
509 {
510   gdb_assert (VALUE_LVAL (v) == lval_computed);
511
512   return v->location.computed.closure;
513 }
514
515 enum lval_type *
516 deprecated_value_lval_hack (struct value *value)
517 {
518   return &value->lval;
519 }
520
521 CORE_ADDR
522 value_address (struct value *value)
523 {
524   if (value->lval == lval_internalvar
525       || value->lval == lval_internalvar_component)
526     return 0;
527   return value->location.address + value->offset;
528 }
529
530 CORE_ADDR
531 value_raw_address (struct value *value)
532 {
533   if (value->lval == lval_internalvar
534       || value->lval == lval_internalvar_component)
535     return 0;
536   return value->location.address;
537 }
538
539 void
540 set_value_address (struct value *value, CORE_ADDR addr)
541 {
542   gdb_assert (value->lval != lval_internalvar
543               && value->lval != lval_internalvar_component);
544   value->location.address = addr;
545 }
546
547 struct internalvar **
548 deprecated_value_internalvar_hack (struct value *value)
549 {
550   return &value->location.internalvar;
551 }
552
553 struct frame_id *
554 deprecated_value_frame_id_hack (struct value *value)
555 {
556   return &value->frame_id;
557 }
558
559 short *
560 deprecated_value_regnum_hack (struct value *value)
561 {
562   return &value->regnum;
563 }
564
565 int
566 deprecated_value_modifiable (struct value *value)
567 {
568   return value->modifiable;
569 }
570 void
571 deprecated_set_value_modifiable (struct value *value, int modifiable)
572 {
573   value->modifiable = modifiable;
574 }
575 \f
576 /* Return a mark in the value chain.  All values allocated after the
577    mark is obtained (except for those released) are subject to being freed
578    if a subsequent value_free_to_mark is passed the mark.  */
579 struct value *
580 value_mark (void)
581 {
582   return all_values;
583 }
584
585 void
586 value_free (struct value *val)
587 {
588   if (val)
589     {
590       if (VALUE_LVAL (val) == lval_computed)
591         {
592           struct lval_funcs *funcs = val->location.computed.funcs;
593
594           if (funcs->free_closure)
595             funcs->free_closure (val);
596         }
597
598       xfree (val->contents);
599     }
600   xfree (val);
601 }
602
603 /* Free all values allocated since MARK was obtained by value_mark
604    (except for those released).  */
605 void
606 value_free_to_mark (struct value *mark)
607 {
608   struct value *val;
609   struct value *next;
610
611   for (val = all_values; val && val != mark; val = next)
612     {
613       next = val->next;
614       value_free (val);
615     }
616   all_values = val;
617 }
618
619 /* Free all the values that have been allocated (except for those released).
620    Called after each command, successful or not.  */
621
622 void
623 free_all_values (void)
624 {
625   struct value *val;
626   struct value *next;
627
628   for (val = all_values; val; val = next)
629     {
630       next = val->next;
631       value_free (val);
632     }
633
634   all_values = 0;
635 }
636
637 /* Remove VAL from the chain all_values
638    so it will not be freed automatically.  */
639
640 void
641 release_value (struct value *val)
642 {
643   struct value *v;
644
645   if (all_values == val)
646     {
647       all_values = val->next;
648       return;
649     }
650
651   for (v = all_values; v; v = v->next)
652     {
653       if (v->next == val)
654         {
655           v->next = val->next;
656           break;
657         }
658     }
659 }
660
661 /* Release all values up to mark  */
662 struct value *
663 value_release_to_mark (struct value *mark)
664 {
665   struct value *val;
666   struct value *next;
667
668   for (val = next = all_values; next; next = next->next)
669     if (next->next == mark)
670       {
671         all_values = next->next;
672         next->next = NULL;
673         return val;
674       }
675   all_values = 0;
676   return val;
677 }
678
679 /* Return a copy of the value ARG.
680    It contains the same contents, for same memory address,
681    but it's a different block of storage.  */
682
683 struct value *
684 value_copy (struct value *arg)
685 {
686   struct type *encl_type = value_enclosing_type (arg);
687   struct value *val;
688
689   if (value_lazy (arg))
690     val = allocate_value_lazy (encl_type);
691   else
692     val = allocate_value (encl_type);
693   val->type = arg->type;
694   VALUE_LVAL (val) = VALUE_LVAL (arg);
695   val->location = arg->location;
696   val->offset = arg->offset;
697   val->bitpos = arg->bitpos;
698   val->bitsize = arg->bitsize;
699   VALUE_FRAME_ID (val) = VALUE_FRAME_ID (arg);
700   VALUE_REGNUM (val) = VALUE_REGNUM (arg);
701   val->lazy = arg->lazy;
702   val->optimized_out = arg->optimized_out;
703   val->embedded_offset = value_embedded_offset (arg);
704   val->pointed_to_offset = arg->pointed_to_offset;
705   val->modifiable = arg->modifiable;
706   if (!value_lazy (val))
707     {
708       memcpy (value_contents_all_raw (val), value_contents_all_raw (arg),
709               TYPE_LENGTH (value_enclosing_type (arg)));
710
711     }
712   if (VALUE_LVAL (val) == lval_computed)
713     {
714       struct lval_funcs *funcs = val->location.computed.funcs;
715
716       if (funcs->copy_closure)
717         val->location.computed.closure = funcs->copy_closure (val);
718     }
719   return val;
720 }
721
722 void
723 set_value_component_location (struct value *component, struct value *whole)
724 {
725   if (VALUE_LVAL (whole) == lval_internalvar)
726     VALUE_LVAL (component) = lval_internalvar_component;
727   else
728     VALUE_LVAL (component) = VALUE_LVAL (whole);
729
730   component->location = whole->location;
731   if (VALUE_LVAL (whole) == lval_computed)
732     {
733       struct lval_funcs *funcs = whole->location.computed.funcs;
734
735       if (funcs->copy_closure)
736         component->location.computed.closure = funcs->copy_closure (whole);
737     }
738 }
739
740 \f
741 /* Access to the value history.  */
742
743 /* Record a new value in the value history.
744    Returns the absolute history index of the entry.
745    Result of -1 indicates the value was not saved; otherwise it is the
746    value history index of this new item.  */
747
748 int
749 record_latest_value (struct value *val)
750 {
751   int i;
752
753   /* We don't want this value to have anything to do with the inferior anymore.
754      In particular, "set $1 = 50" should not affect the variable from which
755      the value was taken, and fast watchpoints should be able to assume that
756      a value on the value history never changes.  */
757   if (value_lazy (val))
758     value_fetch_lazy (val);
759   /* We preserve VALUE_LVAL so that the user can find out where it was fetched
760      from.  This is a bit dubious, because then *&$1 does not just return $1
761      but the current contents of that location.  c'est la vie...  */
762   val->modifiable = 0;
763   release_value (val);
764
765   /* Here we treat value_history_count as origin-zero
766      and applying to the value being stored now.  */
767
768   i = value_history_count % VALUE_HISTORY_CHUNK;
769   if (i == 0)
770     {
771       struct value_history_chunk *new
772       = (struct value_history_chunk *)
773       xmalloc (sizeof (struct value_history_chunk));
774       memset (new->values, 0, sizeof new->values);
775       new->next = value_history_chain;
776       value_history_chain = new;
777     }
778
779   value_history_chain->values[i] = val;
780
781   /* Now we regard value_history_count as origin-one
782      and applying to the value just stored.  */
783
784   return ++value_history_count;
785 }
786
787 /* Return a copy of the value in the history with sequence number NUM.  */
788
789 struct value *
790 access_value_history (int num)
791 {
792   struct value_history_chunk *chunk;
793   int i;
794   int absnum = num;
795
796   if (absnum <= 0)
797     absnum += value_history_count;
798
799   if (absnum <= 0)
800     {
801       if (num == 0)
802         error (_("The history is empty."));
803       else if (num == 1)
804         error (_("There is only one value in the history."));
805       else
806         error (_("History does not go back to $$%d."), -num);
807     }
808   if (absnum > value_history_count)
809     error (_("History has not yet reached $%d."), absnum);
810
811   absnum--;
812
813   /* Now absnum is always absolute and origin zero.  */
814
815   chunk = value_history_chain;
816   for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK - absnum / VALUE_HISTORY_CHUNK;
817        i > 0; i--)
818     chunk = chunk->next;
819
820   return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]);
821 }
822
823 static void
824 show_values (char *num_exp, int from_tty)
825 {
826   int i;
827   struct value *val;
828   static int num = 1;
829
830   if (num_exp)
831     {
832       /* "show values +" should print from the stored position.
833          "show values <exp>" should print around value number <exp>.  */
834       if (num_exp[0] != '+' || num_exp[1] != '\0')
835         num = parse_and_eval_long (num_exp) - 5;
836     }
837   else
838     {
839       /* "show values" means print the last 10 values.  */
840       num = value_history_count - 9;
841     }
842
843   if (num <= 0)
844     num = 1;
845
846   for (i = num; i < num + 10 && i <= value_history_count; i++)
847     {
848       struct value_print_options opts;
849       val = access_value_history (i);
850       printf_filtered (("$%d = "), i);
851       get_user_print_options (&opts);
852       value_print (val, gdb_stdout, &opts);
853       printf_filtered (("\n"));
854     }
855
856   /* The next "show values +" should start after what we just printed.  */
857   num += 10;
858
859   /* Hitting just return after this command should do the same thing as
860      "show values +".  If num_exp is null, this is unnecessary, since
861      "show values +" is not useful after "show values".  */
862   if (from_tty && num_exp)
863     {
864       num_exp[0] = '+';
865       num_exp[1] = '\0';
866     }
867 }
868 \f
869 /* Internal variables.  These are variables within the debugger
870    that hold values assigned by debugger commands.
871    The user refers to them with a '$' prefix
872    that does not appear in the variable names stored internally.  */
873
874 struct internalvar
875 {
876   struct internalvar *next;
877   char *name;
878
879   /* We support various different kinds of content of an internal variable.
880      enum internalvar_kind specifies the kind, and union internalvar_data
881      provides the data associated with this particular kind.  */
882
883   enum internalvar_kind
884     {
885       /* The internal variable is empty.  */
886       INTERNALVAR_VOID,
887
888       /* The value of the internal variable is provided directly as
889          a GDB value object.  */
890       INTERNALVAR_VALUE,
891
892       /* A fresh value is computed via a call-back routine on every
893          access to the internal variable.  */
894       INTERNALVAR_MAKE_VALUE,
895
896       /* The internal variable holds a GDB internal convenience function.  */
897       INTERNALVAR_FUNCTION,
898
899       /* The variable holds a simple scalar value.  */
900       INTERNALVAR_SCALAR,
901
902       /* The variable holds a GDB-provided string.  */
903       INTERNALVAR_STRING,
904
905     } kind;
906
907   union internalvar_data
908     {
909       /* A value object used with INTERNALVAR_VALUE.  */
910       struct value *value;
911
912       /* The call-back routine used with INTERNALVAR_MAKE_VALUE.  */
913       internalvar_make_value make_value;
914
915       /* The internal function used with INTERNALVAR_FUNCTION.  */
916       struct
917         {
918           struct internal_function *function;
919           /* True if this is the canonical name for the function.  */
920           int canonical;
921         } fn;
922
923       /* A scalar value used with INTERNALVAR_SCALAR.  */
924       struct
925         {
926           /* If type is non-NULL, it will be used as the type to generate
927              a value for this internal variable.  If type is NULL, a default
928              integer type for the architecture is used.  */
929           struct type *type;
930           union
931             {
932               LONGEST l;    /* Used with TYPE_CODE_INT and NULL types.  */
933               CORE_ADDR a;  /* Used with TYPE_CODE_PTR types.  */
934             } val;
935         } scalar;
936
937       /* A string value used with INTERNALVAR_STRING.  */
938       char *string;
939     } u;
940 };
941
942 static struct internalvar *internalvars;
943
944 /* If the variable does not already exist create it and give it the value given.
945    If no value is given then the default is zero.  */
946 static void
947 init_if_undefined_command (char* args, int from_tty)
948 {
949   struct internalvar* intvar;
950
951   /* Parse the expression - this is taken from set_command().  */
952   struct expression *expr = parse_expression (args);
953   register struct cleanup *old_chain =
954     make_cleanup (free_current_contents, &expr);
955
956   /* Validate the expression.
957      Was the expression an assignment?
958      Or even an expression at all?  */
959   if (expr->nelts == 0 || expr->elts[0].opcode != BINOP_ASSIGN)
960     error (_("Init-if-undefined requires an assignment expression."));
961
962   /* Extract the variable from the parsed expression.
963      In the case of an assign the lvalue will be in elts[1] and elts[2].  */
964   if (expr->elts[1].opcode != OP_INTERNALVAR)
965     error (_("The first parameter to init-if-undefined should be a GDB variable."));
966   intvar = expr->elts[2].internalvar;
967
968   /* Only evaluate the expression if the lvalue is void.
969      This may still fail if the expresssion is invalid.  */
970   if (intvar->kind == INTERNALVAR_VOID)
971     evaluate_expression (expr);
972
973   do_cleanups (old_chain);
974 }
975
976
977 /* Look up an internal variable with name NAME.  NAME should not
978    normally include a dollar sign.
979
980    If the specified internal variable does not exist,
981    the return value is NULL.  */
982
983 struct internalvar *
984 lookup_only_internalvar (const char *name)
985 {
986   struct internalvar *var;
987
988   for (var = internalvars; var; var = var->next)
989     if (strcmp (var->name, name) == 0)
990       return var;
991
992   return NULL;
993 }
994
995
996 /* Create an internal variable with name NAME and with a void value.
997    NAME should not normally include a dollar sign.  */
998
999 struct internalvar *
1000 create_internalvar (const char *name)
1001 {
1002   struct internalvar *var;
1003   var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
1004   var->name = concat (name, (char *)NULL);
1005   var->kind = INTERNALVAR_VOID;
1006   var->next = internalvars;
1007   internalvars = var;
1008   return var;
1009 }
1010
1011 /* Create an internal variable with name NAME and register FUN as the
1012    function that value_of_internalvar uses to create a value whenever
1013    this variable is referenced.  NAME should not normally include a
1014    dollar sign.  */
1015
1016 struct internalvar *
1017 create_internalvar_type_lazy (char *name, internalvar_make_value fun)
1018 {
1019   struct internalvar *var = create_internalvar (name);
1020   var->kind = INTERNALVAR_MAKE_VALUE;
1021   var->u.make_value = fun;
1022   return var;
1023 }
1024
1025 /* Look up an internal variable with name NAME.  NAME should not
1026    normally include a dollar sign.
1027
1028    If the specified internal variable does not exist,
1029    one is created, with a void value.  */
1030
1031 struct internalvar *
1032 lookup_internalvar (const char *name)
1033 {
1034   struct internalvar *var;
1035
1036   var = lookup_only_internalvar (name);
1037   if (var)
1038     return var;
1039
1040   return create_internalvar (name);
1041 }
1042
1043 /* Return current value of internal variable VAR.  For variables that
1044    are not inherently typed, use a value type appropriate for GDBARCH.  */
1045
1046 struct value *
1047 value_of_internalvar (struct gdbarch *gdbarch, struct internalvar *var)
1048 {
1049   struct value *val;
1050
1051   switch (var->kind)
1052     {
1053     case INTERNALVAR_VOID:
1054       val = allocate_value (builtin_type (gdbarch)->builtin_void);
1055       break;
1056
1057     case INTERNALVAR_FUNCTION:
1058       val = allocate_value (builtin_type (gdbarch)->internal_fn);
1059       break;
1060
1061     case INTERNALVAR_SCALAR:
1062       if (!var->u.scalar.type)
1063         val = value_from_longest (builtin_type (gdbarch)->builtin_int,
1064                                   var->u.scalar.val.l);
1065       else if (TYPE_CODE (var->u.scalar.type) == TYPE_CODE_INT)
1066         val = value_from_longest (var->u.scalar.type, var->u.scalar.val.l);
1067       else if (TYPE_CODE (var->u.scalar.type) == TYPE_CODE_PTR)
1068         val = value_from_pointer (var->u.scalar.type, var->u.scalar.val.a);
1069       else
1070         internal_error (__FILE__, __LINE__, "bad type");
1071       break;
1072
1073     case INTERNALVAR_STRING:
1074       val = value_cstring (var->u.string, strlen (var->u.string),
1075                            builtin_type (gdbarch)->builtin_char);
1076       break;
1077
1078     case INTERNALVAR_VALUE:
1079       val = value_copy (var->u.value);
1080       if (value_lazy (val))
1081         value_fetch_lazy (val);
1082       break;
1083
1084     case INTERNALVAR_MAKE_VALUE:
1085       val = (*var->u.make_value) (gdbarch, var);
1086       break;
1087
1088     default:
1089       internal_error (__FILE__, __LINE__, "bad kind");
1090     }
1091
1092   /* Change the VALUE_LVAL to lval_internalvar so that future operations
1093      on this value go back to affect the original internal variable.
1094
1095      Do not do this for INTERNALVAR_MAKE_VALUE variables, as those have
1096      no underlying modifyable state in the internal variable.
1097
1098      Likewise, if the variable's value is a computed lvalue, we want
1099      references to it to produce another computed lvalue, where
1100      references and assignments actually operate through the
1101      computed value's functions.
1102
1103      This means that internal variables with computed values
1104      behave a little differently from other internal variables:
1105      assignments to them don't just replace the previous value
1106      altogether.  At the moment, this seems like the behavior we
1107      want.  */
1108
1109   if (var->kind != INTERNALVAR_MAKE_VALUE
1110       && val->lval != lval_computed)
1111     {
1112       VALUE_LVAL (val) = lval_internalvar;
1113       VALUE_INTERNALVAR (val) = var;
1114     }
1115
1116   return val;
1117 }
1118
1119 int
1120 get_internalvar_integer (struct internalvar *var, LONGEST *result)
1121 {
1122   switch (var->kind)
1123     {
1124     case INTERNALVAR_SCALAR:
1125       if (var->u.scalar.type == NULL
1126           || TYPE_CODE (var->u.scalar.type) == TYPE_CODE_INT)
1127         {
1128           *result = var->u.scalar.val.l;
1129           return 1;
1130         }
1131       /* Fall through.  */
1132
1133     default:
1134       return 0;
1135     }
1136 }
1137
1138 static int
1139 get_internalvar_function (struct internalvar *var,
1140                           struct internal_function **result)
1141 {
1142   switch (var->kind)
1143     {
1144     case INTERNALVAR_FUNCTION:
1145       *result = var->u.fn.function;
1146       return 1;
1147
1148     default:
1149       return 0;
1150     }
1151 }
1152
1153 void
1154 set_internalvar_component (struct internalvar *var, int offset, int bitpos,
1155                            int bitsize, struct value *newval)
1156 {
1157   gdb_byte *addr;
1158
1159   switch (var->kind)
1160     {
1161     case INTERNALVAR_VALUE:
1162       addr = value_contents_writeable (var->u.value);
1163
1164       if (bitsize)
1165         modify_field (value_type (var->u.value), addr + offset,
1166                       value_as_long (newval), bitpos, bitsize);
1167       else
1168         memcpy (addr + offset, value_contents (newval),
1169                 TYPE_LENGTH (value_type (newval)));
1170       break;
1171
1172     default:
1173       /* We can never get a component of any other kind.  */
1174       internal_error (__FILE__, __LINE__, "set_internalvar_component");
1175     }
1176 }
1177
1178 void
1179 set_internalvar (struct internalvar *var, struct value *val)
1180 {
1181   enum internalvar_kind new_kind;
1182   union internalvar_data new_data = { 0 };
1183
1184   if (var->kind == INTERNALVAR_FUNCTION && var->u.fn.canonical)
1185     error (_("Cannot overwrite convenience function %s"), var->name);
1186
1187   /* Prepare new contents.  */
1188   switch (TYPE_CODE (check_typedef (value_type (val))))
1189     {
1190     case TYPE_CODE_VOID:
1191       new_kind = INTERNALVAR_VOID;
1192       break;
1193
1194     case TYPE_CODE_INTERNAL_FUNCTION:
1195       gdb_assert (VALUE_LVAL (val) == lval_internalvar);
1196       new_kind = INTERNALVAR_FUNCTION;
1197       get_internalvar_function (VALUE_INTERNALVAR (val),
1198                                 &new_data.fn.function);
1199       /* Copies created here are never canonical.  */
1200       break;
1201
1202     case TYPE_CODE_INT:
1203       new_kind = INTERNALVAR_SCALAR;
1204       new_data.scalar.type = value_type (val);
1205       new_data.scalar.val.l = value_as_long (val);
1206       break;
1207
1208     case TYPE_CODE_PTR:
1209       new_kind = INTERNALVAR_SCALAR;
1210       new_data.scalar.type = value_type (val);
1211       new_data.scalar.val.a = value_as_address (val);
1212       break;
1213
1214     default:
1215       new_kind = INTERNALVAR_VALUE;
1216       new_data.value = value_copy (val);
1217       new_data.value->modifiable = 1;
1218
1219       /* Force the value to be fetched from the target now, to avoid problems
1220          later when this internalvar is referenced and the target is gone or
1221          has changed.  */
1222       if (value_lazy (new_data.value))
1223        value_fetch_lazy (new_data.value);
1224
1225       /* Release the value from the value chain to prevent it from being
1226          deleted by free_all_values.  From here on this function should not
1227          call error () until new_data is installed into the var->u to avoid
1228          leaking memory.  */
1229       release_value (new_data.value);
1230       break;
1231     }
1232
1233   /* Clean up old contents.  */
1234   clear_internalvar (var);
1235
1236   /* Switch over.  */
1237   var->kind = new_kind;
1238   var->u = new_data;
1239   /* End code which must not call error().  */
1240 }
1241
1242 void
1243 set_internalvar_integer (struct internalvar *var, LONGEST l)
1244 {
1245   /* Clean up old contents.  */
1246   clear_internalvar (var);
1247
1248   var->kind = INTERNALVAR_SCALAR;
1249   var->u.scalar.type = NULL;
1250   var->u.scalar.val.l = l;
1251 }
1252
1253 void
1254 set_internalvar_string (struct internalvar *var, const char *string)
1255 {
1256   /* Clean up old contents.  */
1257   clear_internalvar (var);
1258
1259   var->kind = INTERNALVAR_STRING;
1260   var->u.string = xstrdup (string);
1261 }
1262
1263 static void
1264 set_internalvar_function (struct internalvar *var, struct internal_function *f)
1265 {
1266   /* Clean up old contents.  */
1267   clear_internalvar (var);
1268
1269   var->kind = INTERNALVAR_FUNCTION;
1270   var->u.fn.function = f;
1271   var->u.fn.canonical = 1;
1272   /* Variables installed here are always the canonical version.  */
1273 }
1274
1275 void
1276 clear_internalvar (struct internalvar *var)
1277 {
1278   /* Clean up old contents.  */
1279   switch (var->kind)
1280     {
1281     case INTERNALVAR_VALUE:
1282       value_free (var->u.value);
1283       break;
1284
1285     case INTERNALVAR_STRING:
1286       xfree (var->u.string);
1287       break;
1288
1289     default:
1290       break;
1291     }
1292
1293   /* Reset to void kind.  */
1294   var->kind = INTERNALVAR_VOID;
1295 }
1296
1297 char *
1298 internalvar_name (struct internalvar *var)
1299 {
1300   return var->name;
1301 }
1302
1303 static struct internal_function *
1304 create_internal_function (const char *name,
1305                           internal_function_fn handler, void *cookie)
1306 {
1307   struct internal_function *ifn = XNEW (struct internal_function);
1308   ifn->name = xstrdup (name);
1309   ifn->handler = handler;
1310   ifn->cookie = cookie;
1311   return ifn;
1312 }
1313
1314 char *
1315 value_internal_function_name (struct value *val)
1316 {
1317   struct internal_function *ifn;
1318   int result;
1319
1320   gdb_assert (VALUE_LVAL (val) == lval_internalvar);
1321   result = get_internalvar_function (VALUE_INTERNALVAR (val), &ifn);
1322   gdb_assert (result);
1323
1324   return ifn->name;
1325 }
1326
1327 struct value *
1328 call_internal_function (struct value *func, int argc, struct value **argv)
1329 {
1330   struct internal_function *ifn;
1331   int result;
1332
1333   gdb_assert (VALUE_LVAL (func) == lval_internalvar);
1334   result = get_internalvar_function (VALUE_INTERNALVAR (func), &ifn);
1335   gdb_assert (result);
1336
1337   return (*ifn->handler) (ifn->cookie, argc, argv);
1338 }
1339
1340 /* The 'function' command.  This does nothing -- it is just a
1341    placeholder to let "help function NAME" work.  This is also used as
1342    the implementation of the sub-command that is created when
1343    registering an internal function.  */
1344 static void
1345 function_command (char *command, int from_tty)
1346 {
1347   /* Do nothing.  */
1348 }
1349
1350 /* Clean up if an internal function's command is destroyed.  */
1351 static void
1352 function_destroyer (struct cmd_list_element *self, void *ignore)
1353 {
1354   xfree (self->name);
1355   xfree (self->doc);
1356 }
1357
1358 /* Add a new internal function.  NAME is the name of the function; DOC
1359    is a documentation string describing the function.  HANDLER is
1360    called when the function is invoked.  COOKIE is an arbitrary
1361    pointer which is passed to HANDLER and is intended for "user
1362    data".  */
1363 void
1364 add_internal_function (const char *name, const char *doc,
1365                        internal_function_fn handler, void *cookie)
1366 {
1367   struct cmd_list_element *cmd;
1368   struct internal_function *ifn;
1369   struct internalvar *var = lookup_internalvar (name);
1370
1371   ifn = create_internal_function (name, handler, cookie);
1372   set_internalvar_function (var, ifn);
1373
1374   cmd = add_cmd (xstrdup (name), no_class, function_command, (char *) doc,
1375                  &functionlist);
1376   cmd->destroyer = function_destroyer;
1377 }
1378
1379 /* Update VALUE before discarding OBJFILE.  COPIED_TYPES is used to
1380    prevent cycles / duplicates.  */
1381
1382 static void
1383 preserve_one_value (struct value *value, struct objfile *objfile,
1384                     htab_t copied_types)
1385 {
1386   if (TYPE_OBJFILE (value->type) == objfile)
1387     value->type = copy_type_recursive (objfile, value->type, copied_types);
1388
1389   if (TYPE_OBJFILE (value->enclosing_type) == objfile)
1390     value->enclosing_type = copy_type_recursive (objfile,
1391                                                  value->enclosing_type,
1392                                                  copied_types);
1393 }
1394
1395 /* Likewise for internal variable VAR.  */
1396
1397 static void
1398 preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
1399                           htab_t copied_types)
1400 {
1401   switch (var->kind)
1402     {
1403     case INTERNALVAR_SCALAR:
1404       if (var->u.scalar.type && TYPE_OBJFILE (var->u.scalar.type) == objfile)
1405         var->u.scalar.type
1406           = copy_type_recursive (objfile, var->u.scalar.type, copied_types);
1407       break;
1408
1409     case INTERNALVAR_VALUE:
1410       preserve_one_value (var->u.value, objfile, copied_types);
1411       break;
1412     }
1413 }
1414
1415 /* Update the internal variables and value history when OBJFILE is
1416    discarded; we must copy the types out of the objfile.  New global types
1417    will be created for every convenience variable which currently points to
1418    this objfile's types, and the convenience variables will be adjusted to
1419    use the new global types.  */
1420
1421 void
1422 preserve_values (struct objfile *objfile)
1423 {
1424   htab_t copied_types;
1425   struct value_history_chunk *cur;
1426   struct internalvar *var;
1427   struct value *val;
1428   int i;
1429
1430   /* Create the hash table.  We allocate on the objfile's obstack, since
1431      it is soon to be deleted.  */
1432   copied_types = create_copied_types_hash (objfile);
1433
1434   for (cur = value_history_chain; cur; cur = cur->next)
1435     for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
1436       if (cur->values[i])
1437         preserve_one_value (cur->values[i], objfile, copied_types);
1438
1439   for (var = internalvars; var; var = var->next)
1440     preserve_one_internalvar (var, objfile, copied_types);
1441
1442   for (val = values_in_python; val; val = val->next)
1443     preserve_one_value (val, objfile, copied_types);
1444
1445   htab_delete (copied_types);
1446 }
1447
1448 static void
1449 show_convenience (char *ignore, int from_tty)
1450 {
1451   struct gdbarch *gdbarch = current_gdbarch;
1452   struct internalvar *var;
1453   int varseen = 0;
1454   struct value_print_options opts;
1455
1456   get_user_print_options (&opts);
1457   for (var = internalvars; var; var = var->next)
1458     {
1459       if (!varseen)
1460         {
1461           varseen = 1;
1462         }
1463       printf_filtered (("$%s = "), var->name);
1464       value_print (value_of_internalvar (gdbarch, var), gdb_stdout,
1465                    &opts);
1466       printf_filtered (("\n"));
1467     }
1468   if (!varseen)
1469     printf_unfiltered (_("\
1470 No debugger convenience variables now defined.\n\
1471 Convenience variables have names starting with \"$\";\n\
1472 use \"set\" as in \"set $foo = 5\" to define them.\n"));
1473 }
1474 \f
1475 /* Extract a value as a C number (either long or double).
1476    Knows how to convert fixed values to double, or
1477    floating values to long.
1478    Does not deallocate the value.  */
1479
1480 LONGEST
1481 value_as_long (struct value *val)
1482 {
1483   /* This coerces arrays and functions, which is necessary (e.g.
1484      in disassemble_command).  It also dereferences references, which
1485      I suspect is the most logical thing to do.  */
1486   val = coerce_array (val);
1487   return unpack_long (value_type (val), value_contents (val));
1488 }
1489
1490 DOUBLEST
1491 value_as_double (struct value *val)
1492 {
1493   DOUBLEST foo;
1494   int inv;
1495
1496   foo = unpack_double (value_type (val), value_contents (val), &inv);
1497   if (inv)
1498     error (_("Invalid floating value found in program."));
1499   return foo;
1500 }
1501
1502 /* Extract a value as a C pointer. Does not deallocate the value.  
1503    Note that val's type may not actually be a pointer; value_as_long
1504    handles all the cases.  */
1505 CORE_ADDR
1506 value_as_address (struct value *val)
1507 {
1508   struct gdbarch *gdbarch = get_type_arch (value_type (val));
1509
1510   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1511      whether we want this to be true eventually.  */
1512 #if 0
1513   /* gdbarch_addr_bits_remove is wrong if we are being called for a
1514      non-address (e.g. argument to "signal", "info break", etc.), or
1515      for pointers to char, in which the low bits *are* significant.  */
1516   return gdbarch_addr_bits_remove (gdbarch, value_as_long (val));
1517 #else
1518
1519   /* There are several targets (IA-64, PowerPC, and others) which
1520      don't represent pointers to functions as simply the address of
1521      the function's entry point.  For example, on the IA-64, a
1522      function pointer points to a two-word descriptor, generated by
1523      the linker, which contains the function's entry point, and the
1524      value the IA-64 "global pointer" register should have --- to
1525      support position-independent code.  The linker generates
1526      descriptors only for those functions whose addresses are taken.
1527
1528      On such targets, it's difficult for GDB to convert an arbitrary
1529      function address into a function pointer; it has to either find
1530      an existing descriptor for that function, or call malloc and
1531      build its own.  On some targets, it is impossible for GDB to
1532      build a descriptor at all: the descriptor must contain a jump
1533      instruction; data memory cannot be executed; and code memory
1534      cannot be modified.
1535
1536      Upon entry to this function, if VAL is a value of type `function'
1537      (that is, TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC), then
1538      value_address (val) is the address of the function.  This is what
1539      you'll get if you evaluate an expression like `main'.  The call
1540      to COERCE_ARRAY below actually does all the usual unary
1541      conversions, which includes converting values of type `function'
1542      to `pointer to function'.  This is the challenging conversion
1543      discussed above.  Then, `unpack_long' will convert that pointer
1544      back into an address.
1545
1546      So, suppose the user types `disassemble foo' on an architecture
1547      with a strange function pointer representation, on which GDB
1548      cannot build its own descriptors, and suppose further that `foo'
1549      has no linker-built descriptor.  The address->pointer conversion
1550      will signal an error and prevent the command from running, even
1551      though the next step would have been to convert the pointer
1552      directly back into the same address.
1553
1554      The following shortcut avoids this whole mess.  If VAL is a
1555      function, just return its address directly.  */
1556   if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1557       || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
1558     return value_address (val);
1559
1560   val = coerce_array (val);
1561
1562   /* Some architectures (e.g. Harvard), map instruction and data
1563      addresses onto a single large unified address space.  For
1564      instance: An architecture may consider a large integer in the
1565      range 0x10000000 .. 0x1000ffff to already represent a data
1566      addresses (hence not need a pointer to address conversion) while
1567      a small integer would still need to be converted integer to
1568      pointer to address.  Just assume such architectures handle all
1569      integer conversions in a single function.  */
1570
1571   /* JimB writes:
1572
1573      I think INTEGER_TO_ADDRESS is a good idea as proposed --- but we
1574      must admonish GDB hackers to make sure its behavior matches the
1575      compiler's, whenever possible.
1576
1577      In general, I think GDB should evaluate expressions the same way
1578      the compiler does.  When the user copies an expression out of
1579      their source code and hands it to a `print' command, they should
1580      get the same value the compiler would have computed.  Any
1581      deviation from this rule can cause major confusion and annoyance,
1582      and needs to be justified carefully.  In other words, GDB doesn't
1583      really have the freedom to do these conversions in clever and
1584      useful ways.
1585
1586      AndrewC pointed out that users aren't complaining about how GDB
1587      casts integers to pointers; they are complaining that they can't
1588      take an address from a disassembly listing and give it to `x/i'.
1589      This is certainly important.
1590
1591      Adding an architecture method like integer_to_address() certainly
1592      makes it possible for GDB to "get it right" in all circumstances
1593      --- the target has complete control over how things get done, so
1594      people can Do The Right Thing for their target without breaking
1595      anyone else.  The standard doesn't specify how integers get
1596      converted to pointers; usually, the ABI doesn't either, but
1597      ABI-specific code is a more reasonable place to handle it.  */
1598
1599   if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
1600       && TYPE_CODE (value_type (val)) != TYPE_CODE_REF
1601       && gdbarch_integer_to_address_p (gdbarch))
1602     return gdbarch_integer_to_address (gdbarch, value_type (val),
1603                                        value_contents (val));
1604
1605   return unpack_long (value_type (val), value_contents (val));
1606 #endif
1607 }
1608 \f
1609 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
1610    as a long, or as a double, assuming the raw data is described
1611    by type TYPE.  Knows how to convert different sizes of values
1612    and can convert between fixed and floating point.  We don't assume
1613    any alignment for the raw data.  Return value is in host byte order.
1614
1615    If you want functions and arrays to be coerced to pointers, and
1616    references to be dereferenced, call value_as_long() instead.
1617
1618    C++: It is assumed that the front-end has taken care of
1619    all matters concerning pointers to members.  A pointer
1620    to member which reaches here is considered to be equivalent
1621    to an INT (or some size).  After all, it is only an offset.  */
1622
1623 LONGEST
1624 unpack_long (struct type *type, const gdb_byte *valaddr)
1625 {
1626   enum type_code code = TYPE_CODE (type);
1627   int len = TYPE_LENGTH (type);
1628   int nosign = TYPE_UNSIGNED (type);
1629
1630   switch (code)
1631     {
1632     case TYPE_CODE_TYPEDEF:
1633       return unpack_long (check_typedef (type), valaddr);
1634     case TYPE_CODE_ENUM:
1635     case TYPE_CODE_FLAGS:
1636     case TYPE_CODE_BOOL:
1637     case TYPE_CODE_INT:
1638     case TYPE_CODE_CHAR:
1639     case TYPE_CODE_RANGE:
1640     case TYPE_CODE_MEMBERPTR:
1641       if (nosign)
1642         return extract_unsigned_integer (valaddr, len);
1643       else
1644         return extract_signed_integer (valaddr, len);
1645
1646     case TYPE_CODE_FLT:
1647       return extract_typed_floating (valaddr, type);
1648
1649     case TYPE_CODE_DECFLOAT:
1650       /* libdecnumber has a function to convert from decimal to integer, but
1651          it doesn't work when the decimal number has a fractional part.  */
1652       return decimal_to_doublest (valaddr, len);
1653
1654     case TYPE_CODE_PTR:
1655     case TYPE_CODE_REF:
1656       /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1657          whether we want this to be true eventually.  */
1658       return extract_typed_address (valaddr, type);
1659
1660     default:
1661       error (_("Value can't be converted to integer."));
1662     }
1663   return 0;                     /* Placate lint.  */
1664 }
1665
1666 /* Return a double value from the specified type and address.
1667    INVP points to an int which is set to 0 for valid value,
1668    1 for invalid value (bad float format).  In either case,
1669    the returned double is OK to use.  Argument is in target
1670    format, result is in host format.  */
1671
1672 DOUBLEST
1673 unpack_double (struct type *type, const gdb_byte *valaddr, int *invp)
1674 {
1675   enum type_code code;
1676   int len;
1677   int nosign;
1678
1679   *invp = 0;                    /* Assume valid.   */
1680   CHECK_TYPEDEF (type);
1681   code = TYPE_CODE (type);
1682   len = TYPE_LENGTH (type);
1683   nosign = TYPE_UNSIGNED (type);
1684   if (code == TYPE_CODE_FLT)
1685     {
1686       /* NOTE: cagney/2002-02-19: There was a test here to see if the
1687          floating-point value was valid (using the macro
1688          INVALID_FLOAT).  That test/macro have been removed.
1689
1690          It turns out that only the VAX defined this macro and then
1691          only in a non-portable way.  Fixing the portability problem
1692          wouldn't help since the VAX floating-point code is also badly
1693          bit-rotten.  The target needs to add definitions for the
1694          methods gdbarch_float_format and gdbarch_double_format - these
1695          exactly describe the target floating-point format.  The
1696          problem here is that the corresponding floatformat_vax_f and
1697          floatformat_vax_d values these methods should be set to are
1698          also not defined either.  Oops!
1699
1700          Hopefully someone will add both the missing floatformat
1701          definitions and the new cases for floatformat_is_valid ().  */
1702
1703       if (!floatformat_is_valid (floatformat_from_type (type), valaddr))
1704         {
1705           *invp = 1;
1706           return 0.0;
1707         }
1708
1709       return extract_typed_floating (valaddr, type);
1710     }
1711   else if (code == TYPE_CODE_DECFLOAT)
1712     return decimal_to_doublest (valaddr, len);
1713   else if (nosign)
1714     {
1715       /* Unsigned -- be sure we compensate for signed LONGEST.  */
1716       return (ULONGEST) unpack_long (type, valaddr);
1717     }
1718   else
1719     {
1720       /* Signed -- we are OK with unpack_long.  */
1721       return unpack_long (type, valaddr);
1722     }
1723 }
1724
1725 /* Unpack raw data (copied from debugee, target byte order) at VALADDR
1726    as a CORE_ADDR, assuming the raw data is described by type TYPE.
1727    We don't assume any alignment for the raw data.  Return value is in
1728    host byte order.
1729
1730    If you want functions and arrays to be coerced to pointers, and
1731    references to be dereferenced, call value_as_address() instead.
1732
1733    C++: It is assumed that the front-end has taken care of
1734    all matters concerning pointers to members.  A pointer
1735    to member which reaches here is considered to be equivalent
1736    to an INT (or some size).  After all, it is only an offset.  */
1737
1738 CORE_ADDR
1739 unpack_pointer (struct type *type, const gdb_byte *valaddr)
1740 {
1741   /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
1742      whether we want this to be true eventually.  */
1743   return unpack_long (type, valaddr);
1744 }
1745
1746 \f
1747 /* Get the value of the FIELDN'th field (which must be static) of
1748    TYPE.  Return NULL if the field doesn't exist or has been
1749    optimized out. */
1750
1751 struct value *
1752 value_static_field (struct type *type, int fieldno)
1753 {
1754   struct value *retval;
1755
1756   if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
1757     {
1758       retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
1759                          TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
1760     }
1761   else
1762     {
1763       char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
1764       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
1765       if (sym == NULL)
1766         {
1767           /* With some compilers, e.g. HP aCC, static data members are reported
1768              as non-debuggable symbols */
1769           struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, NULL, NULL);
1770           if (!msym)
1771             return NULL;
1772           else
1773             {
1774               retval = value_at (TYPE_FIELD_TYPE (type, fieldno),
1775                                  SYMBOL_VALUE_ADDRESS (msym));
1776             }
1777         }
1778       else
1779         {
1780           /* SYM should never have a SYMBOL_CLASS which will require
1781              read_var_value to use the FRAME parameter.  */
1782           if (symbol_read_needs_frame (sym))
1783             warning (_("static field's value depends on the current "
1784                      "frame - bad debug info?"));
1785           retval = read_var_value (sym, NULL);
1786         }
1787       if (retval && VALUE_LVAL (retval) == lval_memory)
1788         SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno),
1789                             value_address (retval));
1790     }
1791   return retval;
1792 }
1793
1794 /* Change the enclosing type of a value object VAL to NEW_ENCL_TYPE.  
1795    You have to be careful here, since the size of the data area for the value 
1796    is set by the length of the enclosing type.  So if NEW_ENCL_TYPE is bigger 
1797    than the old enclosing type, you have to allocate more space for the data.  
1798    The return value is a pointer to the new version of this value structure. */
1799
1800 struct value *
1801 value_change_enclosing_type (struct value *val, struct type *new_encl_type)
1802 {
1803   if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val))) 
1804     val->contents =
1805       (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
1806
1807   val->enclosing_type = new_encl_type;
1808   return val;
1809 }
1810
1811 /* Given a value ARG1 (offset by OFFSET bytes)
1812    of a struct or union type ARG_TYPE,
1813    extract and return the value of one of its (non-static) fields.
1814    FIELDNO says which field. */
1815
1816 struct value *
1817 value_primitive_field (struct value *arg1, int offset,
1818                        int fieldno, struct type *arg_type)
1819 {
1820   struct value *v;
1821   struct type *type;
1822
1823   CHECK_TYPEDEF (arg_type);
1824   type = TYPE_FIELD_TYPE (arg_type, fieldno);
1825
1826   /* Handle packed fields */
1827
1828   if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
1829     {
1830       v = value_from_longest (type,
1831                               unpack_field_as_long (arg_type,
1832                                                     value_contents (arg1)
1833                                                     + offset,
1834                                                     fieldno));
1835       v->bitpos = TYPE_FIELD_BITPOS (arg_type, fieldno) % 8;
1836       v->bitsize = TYPE_FIELD_BITSIZE (arg_type, fieldno);
1837       v->offset = value_offset (arg1) + offset
1838         + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1839     }
1840   else if (fieldno < TYPE_N_BASECLASSES (arg_type))
1841     {
1842       /* This field is actually a base subobject, so preserve the
1843          entire object's contents for later references to virtual
1844          bases, etc.  */
1845
1846       /* Lazy register values with offsets are not supported.  */
1847       if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
1848         value_fetch_lazy (arg1);
1849
1850       if (value_lazy (arg1))
1851         v = allocate_value_lazy (value_enclosing_type (arg1));
1852       else
1853         {
1854           v = allocate_value (value_enclosing_type (arg1));
1855           memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
1856                   TYPE_LENGTH (value_enclosing_type (arg1)));
1857         }
1858       v->type = type;
1859       v->offset = value_offset (arg1);
1860       v->embedded_offset = (offset + value_embedded_offset (arg1)
1861                             + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8);
1862     }
1863   else
1864     {
1865       /* Plain old data member */
1866       offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
1867
1868       /* Lazy register values with offsets are not supported.  */
1869       if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
1870         value_fetch_lazy (arg1);
1871
1872       if (value_lazy (arg1))
1873         v = allocate_value_lazy (type);
1874       else
1875         {
1876           v = allocate_value (type);
1877           memcpy (value_contents_raw (v),
1878                   value_contents_raw (arg1) + offset,
1879                   TYPE_LENGTH (type));
1880         }
1881       v->offset = (value_offset (arg1) + offset
1882                    + value_embedded_offset (arg1));
1883     }
1884   set_value_component_location (v, arg1);
1885   VALUE_REGNUM (v) = VALUE_REGNUM (arg1);
1886   VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1);
1887   return v;
1888 }
1889
1890 /* Given a value ARG1 of a struct or union type,
1891    extract and return the value of one of its (non-static) fields.
1892    FIELDNO says which field. */
1893
1894 struct value *
1895 value_field (struct value *arg1, int fieldno)
1896 {
1897   return value_primitive_field (arg1, 0, fieldno, value_type (arg1));
1898 }
1899
1900 /* Return a non-virtual function as a value.
1901    F is the list of member functions which contains the desired method.
1902    J is an index into F which provides the desired method.
1903
1904    We only use the symbol for its address, so be happy with either a
1905    full symbol or a minimal symbol.
1906  */
1907
1908 struct value *
1909 value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type,
1910                 int offset)
1911 {
1912   struct value *v;
1913   struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
1914   char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
1915   struct symbol *sym;
1916   struct minimal_symbol *msym;
1917
1918   sym = lookup_symbol (physname, 0, VAR_DOMAIN, 0);
1919   if (sym != NULL)
1920     {
1921       msym = NULL;
1922     }
1923   else
1924     {
1925       gdb_assert (sym == NULL);
1926       msym = lookup_minimal_symbol (physname, NULL, NULL);
1927       if (msym == NULL)
1928         return NULL;
1929     }
1930
1931   v = allocate_value (ftype);
1932   if (sym)
1933     {
1934       set_value_address (v, BLOCK_START (SYMBOL_BLOCK_VALUE (sym)));
1935     }
1936   else
1937     {
1938       /* The minimal symbol might point to a function descriptor;
1939          resolve it to the actual code address instead.  */
1940       struct objfile *objfile = msymbol_objfile (msym);
1941       struct gdbarch *gdbarch = get_objfile_arch (objfile);
1942
1943       set_value_address (v,
1944         gdbarch_convert_from_func_ptr_addr
1945            (gdbarch, SYMBOL_VALUE_ADDRESS (msym), &current_target));
1946     }
1947
1948   if (arg1p)
1949     {
1950       if (type != value_type (*arg1p))
1951         *arg1p = value_ind (value_cast (lookup_pointer_type (type),
1952                                         value_addr (*arg1p)));
1953
1954       /* Move the `this' pointer according to the offset.
1955          VALUE_OFFSET (*arg1p) += offset;
1956        */
1957     }
1958
1959   return v;
1960 }
1961
1962 \f
1963 /* Unpack a field FIELDNO of the specified TYPE, from the anonymous object at
1964    VALADDR.
1965
1966    Extracting bits depends on endianness of the machine.  Compute the
1967    number of least significant bits to discard.  For big endian machines,
1968    we compute the total number of bits in the anonymous object, subtract
1969    off the bit count from the MSB of the object to the MSB of the
1970    bitfield, then the size of the bitfield, which leaves the LSB discard
1971    count.  For little endian machines, the discard count is simply the
1972    number of bits from the LSB of the anonymous object to the LSB of the
1973    bitfield.
1974
1975    If the field is signed, we also do sign extension. */
1976
1977 LONGEST
1978 unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno)
1979 {
1980   ULONGEST val;
1981   ULONGEST valmask;
1982   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
1983   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
1984   int lsbcount;
1985   struct type *field_type;
1986
1987   val = extract_unsigned_integer (valaddr + bitpos / 8, sizeof (val));
1988   field_type = TYPE_FIELD_TYPE (type, fieldno);
1989   CHECK_TYPEDEF (field_type);
1990
1991   /* Extract bits.  See comment above. */
1992
1993   if (gdbarch_bits_big_endian (get_type_arch (type)))
1994     lsbcount = (sizeof val * 8 - bitpos % 8 - bitsize);
1995   else
1996     lsbcount = (bitpos % 8);
1997   val >>= lsbcount;
1998
1999   /* If the field does not entirely fill a LONGEST, then zero the sign bits.
2000      If the field is signed, and is negative, then sign extend. */
2001
2002   if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val)))
2003     {
2004       valmask = (((ULONGEST) 1) << bitsize) - 1;
2005       val &= valmask;
2006       if (!TYPE_UNSIGNED (field_type))
2007         {
2008           if (val & (valmask ^ (valmask >> 1)))
2009             {
2010               val |= ~valmask;
2011             }
2012         }
2013     }
2014   return (val);
2015 }
2016
2017 /* Modify the value of a bitfield.  ADDR points to a block of memory in
2018    target byte order; the bitfield starts in the byte pointed to.  FIELDVAL
2019    is the desired value of the field, in host byte order.  BITPOS and BITSIZE
2020    indicate which bits (in target bit order) comprise the bitfield.  
2021    Requires 0 < BITSIZE <= lbits, 0 <= BITPOS+BITSIZE <= lbits, and
2022    0 <= BITPOS, where lbits is the size of a LONGEST in bits.  */
2023
2024 void
2025 modify_field (struct type *type, gdb_byte *addr,
2026               LONGEST fieldval, int bitpos, int bitsize)
2027 {
2028   ULONGEST oword;
2029   ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
2030
2031   /* If a negative fieldval fits in the field in question, chop
2032      off the sign extension bits.  */
2033   if ((~fieldval & ~(mask >> 1)) == 0)
2034     fieldval &= mask;
2035
2036   /* Warn if value is too big to fit in the field in question.  */
2037   if (0 != (fieldval & ~mask))
2038     {
2039       /* FIXME: would like to include fieldval in the message, but
2040          we don't have a sprintf_longest.  */
2041       warning (_("Value does not fit in %d bits."), bitsize);
2042
2043       /* Truncate it, otherwise adjoining fields may be corrupted.  */
2044       fieldval &= mask;
2045     }
2046
2047   oword = extract_unsigned_integer (addr, sizeof oword);
2048
2049   /* Shifting for bit field depends on endianness of the target machine.  */
2050   if (gdbarch_bits_big_endian (get_type_arch (type)))
2051     bitpos = sizeof (oword) * 8 - bitpos - bitsize;
2052
2053   oword &= ~(mask << bitpos);
2054   oword |= fieldval << bitpos;
2055
2056   store_unsigned_integer (addr, sizeof oword, oword);
2057 }
2058 \f
2059 /* Pack NUM into BUF using a target format of TYPE.  */
2060
2061 void
2062 pack_long (gdb_byte *buf, struct type *type, LONGEST num)
2063 {
2064   int len;
2065
2066   type = check_typedef (type);
2067   len = TYPE_LENGTH (type);
2068
2069   switch (TYPE_CODE (type))
2070     {
2071     case TYPE_CODE_INT:
2072     case TYPE_CODE_CHAR:
2073     case TYPE_CODE_ENUM:
2074     case TYPE_CODE_FLAGS:
2075     case TYPE_CODE_BOOL:
2076     case TYPE_CODE_RANGE:
2077     case TYPE_CODE_MEMBERPTR:
2078       store_signed_integer (buf, len, num);
2079       break;
2080
2081     case TYPE_CODE_REF:
2082     case TYPE_CODE_PTR:
2083       store_typed_address (buf, type, (CORE_ADDR) num);
2084       break;
2085
2086     default:
2087       error (_("Unexpected type (%d) encountered for integer constant."),
2088              TYPE_CODE (type));
2089     }
2090 }
2091
2092
2093 /* Convert C numbers into newly allocated values.  */
2094
2095 struct value *
2096 value_from_longest (struct type *type, LONGEST num)
2097 {
2098   struct value *val = allocate_value (type);
2099
2100   pack_long (value_contents_raw (val), type, num);
2101
2102   return val;
2103 }
2104
2105
2106 /* Create a value representing a pointer of type TYPE to the address
2107    ADDR.  */
2108 struct value *
2109 value_from_pointer (struct type *type, CORE_ADDR addr)
2110 {
2111   struct value *val = allocate_value (type);
2112   store_typed_address (value_contents_raw (val), type, addr);
2113   return val;
2114 }
2115
2116
2117 /* Create a value of type TYPE whose contents come from VALADDR, if it
2118    is non-null, and whose memory address (in the inferior) is
2119    ADDRESS.  */
2120
2121 struct value *
2122 value_from_contents_and_address (struct type *type,
2123                                  const gdb_byte *valaddr,
2124                                  CORE_ADDR address)
2125 {
2126   struct value *v = allocate_value (type);
2127   if (valaddr == NULL)
2128     set_value_lazy (v, 1);
2129   else
2130     memcpy (value_contents_raw (v), valaddr, TYPE_LENGTH (type));
2131   set_value_address (v, address);
2132   VALUE_LVAL (v) = lval_memory;
2133   return v;
2134 }
2135
2136 struct value *
2137 value_from_double (struct type *type, DOUBLEST num)
2138 {
2139   struct value *val = allocate_value (type);
2140   struct type *base_type = check_typedef (type);
2141   enum type_code code = TYPE_CODE (base_type);
2142   int len = TYPE_LENGTH (base_type);
2143
2144   if (code == TYPE_CODE_FLT)
2145     {
2146       store_typed_floating (value_contents_raw (val), base_type, num);
2147     }
2148   else
2149     error (_("Unexpected type encountered for floating constant."));
2150
2151   return val;
2152 }
2153
2154 struct value *
2155 value_from_decfloat (struct type *type, const gdb_byte *dec)
2156 {
2157   struct value *val = allocate_value (type);
2158
2159   memcpy (value_contents_raw (val), dec, TYPE_LENGTH (type));
2160
2161   return val;
2162 }
2163
2164 struct value *
2165 coerce_ref (struct value *arg)
2166 {
2167   struct type *value_type_arg_tmp = check_typedef (value_type (arg));
2168   if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
2169     arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
2170                          unpack_pointer (value_type (arg),              
2171                                          value_contents (arg)));
2172   return arg;
2173 }
2174
2175 struct value *
2176 coerce_array (struct value *arg)
2177 {
2178   struct type *type;
2179
2180   arg = coerce_ref (arg);
2181   type = check_typedef (value_type (arg));
2182
2183   switch (TYPE_CODE (type))
2184     {
2185     case TYPE_CODE_ARRAY:
2186       if (current_language->c_style_arrays)
2187         arg = value_coerce_array (arg);
2188       break;
2189     case TYPE_CODE_FUNC:
2190       arg = value_coerce_function (arg);
2191       break;
2192     }
2193   return arg;
2194 }
2195 \f
2196
2197 /* Return true if the function returning the specified type is using
2198    the convention of returning structures in memory (passing in the
2199    address as a hidden first parameter).  */
2200
2201 int
2202 using_struct_return (struct gdbarch *gdbarch,
2203                      struct type *func_type, struct type *value_type)
2204 {
2205   enum type_code code = TYPE_CODE (value_type);
2206
2207   if (code == TYPE_CODE_ERROR)
2208     error (_("Function return type unknown."));
2209
2210   if (code == TYPE_CODE_VOID)
2211     /* A void return value is never in memory.  See also corresponding
2212        code in "print_return_value".  */
2213     return 0;
2214
2215   /* Probe the architecture for the return-value convention.  */
2216   return (gdbarch_return_value (gdbarch, func_type, value_type,
2217                                 NULL, NULL, NULL)
2218           != RETURN_VALUE_REGISTER_CONVENTION);
2219 }
2220
2221 /* Set the initialized field in a value struct.  */
2222
2223 void
2224 set_value_initialized (struct value *val, int status)
2225 {
2226   val->initialized = status;
2227 }
2228
2229 /* Return the initialized field in a value struct.  */
2230
2231 int
2232 value_initialized (struct value *val)
2233 {
2234   return val->initialized;
2235 }
2236
2237 void
2238 _initialize_values (void)
2239 {
2240   add_cmd ("convenience", no_class, show_convenience, _("\
2241 Debugger convenience (\"$foo\") variables.\n\
2242 These variables are created when you assign them values;\n\
2243 thus, \"print $foo=1\" gives \"$foo\" the value 1.  Values may be any type.\n\
2244 \n\
2245 A few convenience variables are given values automatically:\n\
2246 \"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
2247 \"$__\" holds the contents of the last address examined with \"x\"."),
2248            &showlist);
2249
2250   add_cmd ("values", no_class, show_values,
2251            _("Elements of value history around item number IDX (or last ten)."),
2252            &showlist);
2253
2254   add_com ("init-if-undefined", class_vars, init_if_undefined_command, _("\
2255 Initialize a convenience variable if necessary.\n\
2256 init-if-undefined VARIABLE = EXPRESSION\n\
2257 Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\
2258 exist or does not contain a value.  The EXPRESSION is not evaluated if the\n\
2259 VARIABLE is already initialized."));
2260
2261   add_prefix_cmd ("function", no_class, function_command, _("\
2262 Placeholder command for showing help on convenience functions."),
2263                   &functionlist, "function ", 0, &cmdlist);
2264 }