OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

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

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

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

powered by: WebSVN 2.1.0

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