OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [value.c] - Blame information for rev 387

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.