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