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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [gdb/] [values.c] - Blame information for rev 1773

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

Line No. Rev Author Line
1 104 markom
/* Low level packing and unpacking of values for GDB, the GNU Debugger.
2
   Copyright 1986, 87, 89, 91, 93, 94, 95, 96, 97, 1998
3
   Free Software Foundation, Inc.
4
 
5
   This file is part of GDB.
6
 
7
   This program is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 2 of the License, or
10
   (at your option) any later version.
11
 
12
   This program is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with this program; if not, write to the Free Software
19
   Foundation, Inc., 59 Temple Place - Suite 330,
20
   Boston, MA 02111-1307, USA.  */
21
 
22
#include "defs.h"
23
#include "gdb_string.h"
24
#include "symtab.h"
25
#include "gdbtypes.h"
26
#include "value.h"
27
#include "gdbcore.h"
28
#include "frame.h"
29
#include "command.h"
30
#include "gdbcmd.h"
31
#include "target.h"
32
#include "language.h"
33
#include "scm-lang.h"
34
#include "demangle.h"
35
 
36
/* Prototypes for exported functions. */
37
 
38
void _initialize_values PARAMS ((void));
39
 
40
/* Prototypes for local functions. */
41
 
42
static value_ptr value_headof PARAMS ((value_ptr, struct type *,
43
                                       struct type *));
44
 
45
static void show_values PARAMS ((char *, int));
46
 
47
static void show_convenience PARAMS ((char *, int));
48
 
49
static int vb_match PARAMS ((struct type *, int, struct type *));
50
 
51
/* The value-history records all the values printed
52
   by print commands during this session.  Each chunk
53
   records 60 consecutive values.  The first chunk on
54
   the chain records the most recent values.
55
   The total number of values is in value_history_count.  */
56
 
57
#define VALUE_HISTORY_CHUNK 60
58
 
59
struct value_history_chunk
60
  {
61
    struct value_history_chunk *next;
62
    value_ptr values[VALUE_HISTORY_CHUNK];
63
  };
64
 
65
/* Chain of chunks now in use.  */
66
 
67
static struct value_history_chunk *value_history_chain;
68
 
69
static int value_history_count; /* Abs number of last entry stored */
70
 
71
/* List of all value objects currently allocated
72
   (except for those released by calls to release_value)
73
   This is so they can be freed after each command.  */
74
 
75
static value_ptr all_values;
76
 
77
/* Allocate a  value  that has the correct length for type TYPE.  */
78
 
79
value_ptr
80
allocate_value (type)
81
     struct type *type;
82
{
83
  register value_ptr val;
84
  struct type *atype = check_typedef (type);
85
 
86
  val = (struct value *) xmalloc (sizeof (struct value) + TYPE_LENGTH (atype));
87
  VALUE_NEXT (val) = all_values;
88
  all_values = val;
89
  VALUE_TYPE (val) = type;
90
  VALUE_ENCLOSING_TYPE (val) = type;
91
  VALUE_LVAL (val) = not_lval;
92
  VALUE_ADDRESS (val) = 0;
93
  VALUE_FRAME (val) = 0;
94
  VALUE_OFFSET (val) = 0;
95
  VALUE_BITPOS (val) = 0;
96
  VALUE_BITSIZE (val) = 0;
97
  VALUE_REGNO (val) = -1;
98
  VALUE_LAZY (val) = 0;
99
  VALUE_OPTIMIZED_OUT (val) = 0;
100
  VALUE_BFD_SECTION (val) = NULL;
101
  VALUE_EMBEDDED_OFFSET (val) = 0;
102
  VALUE_POINTED_TO_OFFSET (val) = 0;
103
  val->modifiable = 1;
104
  return val;
105
}
106
 
107
/* Allocate a  value  that has the correct length
108
   for COUNT repetitions type TYPE.  */
109
 
110
value_ptr
111
allocate_repeat_value (type, count)
112
     struct type *type;
113
     int count;
114
{
115
  int low_bound = current_language->string_lower_bound;         /* ??? */
116
  /* FIXME-type-allocation: need a way to free this type when we are
117
     done with it.  */
118
  struct type *range_type
119
  = create_range_type ((struct type *) NULL, builtin_type_int,
120
                       low_bound, count + low_bound - 1);
121
  /* FIXME-type-allocation: need a way to free this type when we are
122
     done with it.  */
123
  return allocate_value (create_array_type ((struct type *) NULL,
124
                                            type, range_type));
125
}
126
 
127
/* Return a mark in the value chain.  All values allocated after the
128
   mark is obtained (except for those released) are subject to being freed
129
   if a subsequent value_free_to_mark is passed the mark.  */
130
value_ptr
131
value_mark ()
132
{
133
  return all_values;
134
}
135
 
136
/* Free all values allocated since MARK was obtained by value_mark
137
   (except for those released).  */
138
void
139
value_free_to_mark (mark)
140
     value_ptr mark;
141
{
142
  value_ptr val, next;
143
 
144
  for (val = all_values; val && val != mark; val = next)
145
    {
146
      next = VALUE_NEXT (val);
147
      value_free (val);
148
    }
149
  all_values = val;
150
}
151
 
152
/* Free all the values that have been allocated (except for those released).
153
   Called after each command, successful or not.  */
154
 
155
void
156
free_all_values ()
157
{
158
  register value_ptr val, next;
159
 
160
  for (val = all_values; val; val = next)
161
    {
162
      next = VALUE_NEXT (val);
163
      value_free (val);
164
    }
165
 
166
  all_values = 0;
167
}
168
 
169
/* Remove VAL from the chain all_values
170
   so it will not be freed automatically.  */
171
 
172
void
173
release_value (val)
174
     register value_ptr val;
175
{
176
  register value_ptr v;
177
 
178
  if (all_values == val)
179
    {
180
      all_values = val->next;
181
      return;
182
    }
183
 
184
  for (v = all_values; v; v = v->next)
185
    {
186
      if (v->next == val)
187
        {
188
          v->next = val->next;
189
          break;
190
        }
191
    }
192
}
193
 
194
/* Release all values up to mark  */
195
value_ptr
196
value_release_to_mark (mark)
197
     value_ptr mark;
198
{
199
  value_ptr val, next;
200
 
201
  for (val = next = all_values; next; next = VALUE_NEXT (next))
202
    if (VALUE_NEXT (next) == mark)
203
      {
204
        all_values = VALUE_NEXT (next);
205
        VALUE_NEXT (next) = 0;
206
        return val;
207
      }
208
  all_values = 0;
209
  return val;
210
}
211
 
212
/* Return a copy of the value ARG.
213
   It contains the same contents, for same memory address,
214
   but it's a different block of storage.  */
215
 
216
value_ptr
217
value_copy (arg)
218
     value_ptr arg;
219
{
220
  register struct type *encl_type = VALUE_ENCLOSING_TYPE (arg);
221
  register value_ptr val = allocate_value (encl_type);
222
  VALUE_TYPE (val) = VALUE_TYPE (arg);
223
  VALUE_LVAL (val) = VALUE_LVAL (arg);
224
  VALUE_ADDRESS (val) = VALUE_ADDRESS (arg);
225
  VALUE_OFFSET (val) = VALUE_OFFSET (arg);
226
  VALUE_BITPOS (val) = VALUE_BITPOS (arg);
227
  VALUE_BITSIZE (val) = VALUE_BITSIZE (arg);
228
  VALUE_FRAME (val) = VALUE_FRAME (arg);
229
  VALUE_REGNO (val) = VALUE_REGNO (arg);
230
  VALUE_LAZY (val) = VALUE_LAZY (arg);
231
  VALUE_OPTIMIZED_OUT (val) = VALUE_OPTIMIZED_OUT (arg);
232
  VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (arg);
233
  VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (arg);
234
  VALUE_BFD_SECTION (val) = VALUE_BFD_SECTION (arg);
235
  val->modifiable = arg->modifiable;
236
  if (!VALUE_LAZY (val))
237
    {
238
      memcpy (VALUE_CONTENTS_ALL_RAW (val), VALUE_CONTENTS_ALL_RAW (arg),
239
              TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg)));
240
 
241
    }
242
  return val;
243
}
244
 
245
/* Access to the value history.  */
246
 
247
/* Record a new value in the value history.
248
   Returns the absolute history index of the entry.
249
   Result of -1 indicates the value was not saved; otherwise it is the
250
   value history index of this new item.  */
251
 
252
int
253
record_latest_value (val)
254
     value_ptr val;
255
{
256
  int i;
257
 
258
  /* We don't want this value to have anything to do with the inferior anymore.
259
     In particular, "set $1 = 50" should not affect the variable from which
260
     the value was taken, and fast watchpoints should be able to assume that
261
     a value on the value history never changes.  */
262
  if (VALUE_LAZY (val))
263
    value_fetch_lazy (val);
264
  /* We preserve VALUE_LVAL so that the user can find out where it was fetched
265
     from.  This is a bit dubious, because then *&$1 does not just return $1
266
     but the current contents of that location.  c'est la vie...  */
267
  val->modifiable = 0;
268
  release_value (val);
269
 
270
  /* Here we treat value_history_count as origin-zero
271
     and applying to the value being stored now.  */
272
 
273
  i = value_history_count % VALUE_HISTORY_CHUNK;
274
  if (i == 0)
275
    {
276
      register struct value_history_chunk *new
277
      = (struct value_history_chunk *)
278
      xmalloc (sizeof (struct value_history_chunk));
279
      memset (new->values, 0, sizeof new->values);
280
      new->next = value_history_chain;
281
      value_history_chain = new;
282
    }
283
 
284
  value_history_chain->values[i] = val;
285
 
286
  /* Now we regard value_history_count as origin-one
287
     and applying to the value just stored.  */
288
 
289
  return ++value_history_count;
290
}
291
 
292
/* Return a copy of the value in the history with sequence number NUM.  */
293
 
294
value_ptr
295
access_value_history (num)
296
     int num;
297
{
298
  register struct value_history_chunk *chunk;
299
  register int i;
300
  register int absnum = num;
301
 
302
  if (absnum <= 0)
303
    absnum += value_history_count;
304
 
305
  if (absnum <= 0)
306
    {
307
      if (num == 0)
308
        error ("The history is empty.");
309
      else if (num == 1)
310
        error ("There is only one value in the history.");
311
      else
312
        error ("History does not go back to $$%d.", -num);
313
    }
314
  if (absnum > value_history_count)
315
    error ("History has not yet reached $%d.", absnum);
316
 
317
  absnum--;
318
 
319
  /* Now absnum is always absolute and origin zero.  */
320
 
321
  chunk = value_history_chain;
322
  for (i = (value_history_count - 1) / VALUE_HISTORY_CHUNK - absnum / VALUE_HISTORY_CHUNK;
323
       i > 0; i--)
324
    chunk = chunk->next;
325
 
326
  return value_copy (chunk->values[absnum % VALUE_HISTORY_CHUNK]);
327
}
328
 
329
/* Clear the value history entirely.
330
   Must be done when new symbol tables are loaded,
331
   because the type pointers become invalid.  */
332
 
333
void
334
clear_value_history ()
335
{
336
  register struct value_history_chunk *next;
337
  register int i;
338
  register value_ptr val;
339
 
340
  while (value_history_chain)
341
    {
342
      for (i = 0; i < VALUE_HISTORY_CHUNK; i++)
343
        if ((val = value_history_chain->values[i]) != NULL)
344
          free ((PTR) val);
345
      next = value_history_chain->next;
346
      free ((PTR) value_history_chain);
347
      value_history_chain = next;
348
    }
349
  value_history_count = 0;
350
}
351
 
352
static void
353
show_values (num_exp, from_tty)
354
     char *num_exp;
355
     int from_tty;
356
{
357
  register int i;
358
  register value_ptr val;
359
  static int num = 1;
360
 
361
  if (num_exp)
362
    {
363
      /* "info history +" should print from the stored position.
364
         "info history <exp>" should print around value number <exp>.  */
365
      if (num_exp[0] != '+' || num_exp[1] != '\0')
366
        num = parse_and_eval_address (num_exp) - 5;
367
    }
368
  else
369
    {
370
      /* "info history" means print the last 10 values.  */
371
      num = value_history_count - 9;
372
    }
373
 
374
  if (num <= 0)
375
    num = 1;
376
 
377
  for (i = num; i < num + 10 && i <= value_history_count; i++)
378
    {
379
      val = access_value_history (i);
380
      printf_filtered ("$%d = ", i);
381
      value_print (val, gdb_stdout, 0, Val_pretty_default);
382
      printf_filtered ("\n");
383
    }
384
 
385
  /* The next "info history +" should start after what we just printed.  */
386
  num += 10;
387
 
388
  /* Hitting just return after this command should do the same thing as
389
     "info history +".  If num_exp is null, this is unnecessary, since
390
     "info history +" is not useful after "info history".  */
391
  if (from_tty && num_exp)
392
    {
393
      num_exp[0] = '+';
394
      num_exp[1] = '\0';
395
    }
396
}
397
 
398
/* Internal variables.  These are variables within the debugger
399
   that hold values assigned by debugger commands.
400
   The user refers to them with a '$' prefix
401
   that does not appear in the variable names stored internally.  */
402
 
403
static struct internalvar *internalvars;
404
 
405
/* Look up an internal variable with name NAME.  NAME should not
406
   normally include a dollar sign.
407
 
408
   If the specified internal variable does not exist,
409
   one is created, with a void value.  */
410
 
411
struct internalvar *
412
lookup_internalvar (name)
413
     char *name;
414
{
415
  register struct internalvar *var;
416
 
417
  for (var = internalvars; var; var = var->next)
418
    if (STREQ (var->name, name))
419
      return var;
420
 
421
  var = (struct internalvar *) xmalloc (sizeof (struct internalvar));
422
  var->name = concat (name, NULL);
423
  var->value = allocate_value (builtin_type_void);
424
  release_value (var->value);
425
  var->next = internalvars;
426
  internalvars = var;
427
  return var;
428
}
429
 
430
value_ptr
431
value_of_internalvar (var)
432
     struct internalvar *var;
433
{
434
  register value_ptr val;
435
 
436
#ifdef IS_TRAPPED_INTERNALVAR
437
  if (IS_TRAPPED_INTERNALVAR (var->name))
438
    return VALUE_OF_TRAPPED_INTERNALVAR (var);
439
#endif
440
 
441
  val = value_copy (var->value);
442
  if (VALUE_LAZY (val))
443
    value_fetch_lazy (val);
444
  VALUE_LVAL (val) = lval_internalvar;
445
  VALUE_INTERNALVAR (val) = var;
446
  return val;
447
}
448
 
449
void
450
set_internalvar_component (var, offset, bitpos, bitsize, newval)
451
     struct internalvar *var;
452
     int offset, bitpos, bitsize;
453
     value_ptr newval;
454
{
455
  register char *addr = VALUE_CONTENTS (var->value) + offset;
456
 
457
#ifdef IS_TRAPPED_INTERNALVAR
458
  if (IS_TRAPPED_INTERNALVAR (var->name))
459
    SET_TRAPPED_INTERNALVAR (var, newval, bitpos, bitsize, offset);
460
#endif
461
 
462
  if (bitsize)
463
    modify_field (addr, value_as_long (newval),
464
                  bitpos, bitsize);
465
  else
466
    memcpy (addr, VALUE_CONTENTS (newval), TYPE_LENGTH (VALUE_TYPE (newval)));
467
}
468
 
469
void
470
set_internalvar (var, val)
471
     struct internalvar *var;
472
     value_ptr val;
473
{
474
  value_ptr newval;
475
 
476
#ifdef IS_TRAPPED_INTERNALVAR
477
  if (IS_TRAPPED_INTERNALVAR (var->name))
478
    SET_TRAPPED_INTERNALVAR (var, val, 0, 0, 0);
479
#endif
480
 
481
  newval = value_copy (val);
482
  newval->modifiable = 1;
483
 
484
  /* Force the value to be fetched from the target now, to avoid problems
485
     later when this internalvar is referenced and the target is gone or
486
     has changed.  */
487
  if (VALUE_LAZY (newval))
488
    value_fetch_lazy (newval);
489
 
490
  /* Begin code which must not call error().  If var->value points to
491
     something free'd, an error() obviously leaves a dangling pointer.
492
     But we also get a danling pointer if var->value points to
493
     something in the value chain (i.e., before release_value is
494
     called), because after the error free_all_values will get called before
495
     long.  */
496
  free ((PTR) var->value);
497
  var->value = newval;
498
  release_value (newval);
499
  /* End code which must not call error().  */
500
}
501
 
502
char *
503
internalvar_name (var)
504
     struct internalvar *var;
505
{
506
  return var->name;
507
}
508
 
509
/* Free all internalvars.  Done when new symtabs are loaded,
510
   because that makes the values invalid.  */
511
 
512
void
513
clear_internalvars ()
514
{
515
  register struct internalvar *var;
516
 
517
  while (internalvars)
518
    {
519
      var = internalvars;
520
      internalvars = var->next;
521
      free ((PTR) var->name);
522
      free ((PTR) var->value);
523
      free ((PTR) var);
524
    }
525
}
526
 
527
static void
528
show_convenience (ignore, from_tty)
529
     char *ignore;
530
     int from_tty;
531
{
532
  register struct internalvar *var;
533
  int varseen = 0;
534
 
535
  for (var = internalvars; var; var = var->next)
536
    {
537
#ifdef IS_TRAPPED_INTERNALVAR
538
      if (IS_TRAPPED_INTERNALVAR (var->name))
539
        continue;
540
#endif
541
      if (!varseen)
542
        {
543
          varseen = 1;
544
        }
545
      printf_filtered ("$%s = ", var->name);
546
      value_print (var->value, gdb_stdout, 0, Val_pretty_default);
547
      printf_filtered ("\n");
548
    }
549
  if (!varseen)
550
    printf_unfiltered ("No debugger convenience variables now defined.\n\
551
Convenience variables have names starting with \"$\";\n\
552
use \"set\" as in \"set $foo = 5\" to define them.\n");
553
}
554
 
555
/* Extract a value as a C number (either long or double).
556
   Knows how to convert fixed values to double, or
557
   floating values to long.
558
   Does not deallocate the value.  */
559
 
560
LONGEST
561
value_as_long (val)
562
     register value_ptr val;
563
{
564
  /* This coerces arrays and functions, which is necessary (e.g.
565
     in disassemble_command).  It also dereferences references, which
566
     I suspect is the most logical thing to do.  */
567
  COERCE_ARRAY (val);
568
  return unpack_long (VALUE_TYPE (val), VALUE_CONTENTS (val));
569
}
570
 
571
DOUBLEST
572
value_as_double (val)
573
     register value_ptr val;
574
{
575
  DOUBLEST foo;
576
  int inv;
577
 
578
  foo = unpack_double (VALUE_TYPE (val), VALUE_CONTENTS (val), &inv);
579
  if (inv)
580
    error ("Invalid floating value found in program.");
581
  return foo;
582
}
583
/* Extract a value as a C pointer.
584
   Does not deallocate the value.  */
585
CORE_ADDR
586
value_as_pointer (val)
587
     value_ptr val;
588
{
589
  /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
590
     whether we want this to be true eventually.  */
591
#if 0
592
  /* ADDR_BITS_REMOVE is wrong if we are being called for a
593
     non-address (e.g. argument to "signal", "info break", etc.), or
594
     for pointers to char, in which the low bits *are* significant.  */
595
  return ADDR_BITS_REMOVE (value_as_long (val));
596
#else
597
  return value_as_long (val);
598
#endif
599
}
600
 
601
/* Unpack raw data (copied from debugee, target byte order) at VALADDR
602
   as a long, or as a double, assuming the raw data is described
603
   by type TYPE.  Knows how to convert different sizes of values
604
   and can convert between fixed and floating point.  We don't assume
605
   any alignment for the raw data.  Return value is in host byte order.
606
 
607
   If you want functions and arrays to be coerced to pointers, and
608
   references to be dereferenced, call value_as_long() instead.
609
 
610
   C++: It is assumed that the front-end has taken care of
611
   all matters concerning pointers to members.  A pointer
612
   to member which reaches here is considered to be equivalent
613
   to an INT (or some size).  After all, it is only an offset.  */
614
 
615
LONGEST
616
unpack_long (type, valaddr)
617
     struct type *type;
618
     char *valaddr;
619
{
620
  register enum type_code code = TYPE_CODE (type);
621
  register int len = TYPE_LENGTH (type);
622
  register int nosign = TYPE_UNSIGNED (type);
623
 
624
  if (current_language->la_language == language_scm
625
      && is_scmvalue_type (type))
626
    return scm_unpack (type, valaddr, TYPE_CODE_INT);
627
 
628
  switch (code)
629
    {
630
    case TYPE_CODE_TYPEDEF:
631
      return unpack_long (check_typedef (type), valaddr);
632
    case TYPE_CODE_ENUM:
633
    case TYPE_CODE_BOOL:
634
    case TYPE_CODE_INT:
635
    case TYPE_CODE_CHAR:
636
    case TYPE_CODE_RANGE:
637
      if (nosign)
638
        return extract_unsigned_integer (valaddr, len);
639
      else
640
        return extract_signed_integer (valaddr, len);
641
 
642
    case TYPE_CODE_FLT:
643
      return extract_floating (valaddr, len);
644
 
645
    case TYPE_CODE_PTR:
646
    case TYPE_CODE_REF:
647
      /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
648
         whether we want this to be true eventually.  */
649
      if (GDB_TARGET_IS_D10V
650
          && len == 2)
651
        return D10V_MAKE_DADDR (extract_address (valaddr, len));
652
      return extract_address (valaddr, len);
653
 
654
    case TYPE_CODE_MEMBER:
655
      error ("not implemented: member types in unpack_long");
656
 
657
    default:
658
      error ("Value can't be converted to integer.");
659
    }
660
  return 0;                      /* Placate lint.  */
661
}
662
 
663
/* Return a double value from the specified type and address.
664
   INVP points to an int which is set to 0 for valid value,
665
   1 for invalid value (bad float format).  In either case,
666
   the returned double is OK to use.  Argument is in target
667
   format, result is in host format.  */
668
 
669
DOUBLEST
670
unpack_double (type, valaddr, invp)
671
     struct type *type;
672
     char *valaddr;
673
     int *invp;
674
{
675
  enum type_code code;
676
  int len;
677
  int nosign;
678
 
679
  *invp = 0;                     /* Assume valid.   */
680
  CHECK_TYPEDEF (type);
681
  code = TYPE_CODE (type);
682
  len = TYPE_LENGTH (type);
683
  nosign = TYPE_UNSIGNED (type);
684
  if (code == TYPE_CODE_FLT)
685
    {
686
#ifdef INVALID_FLOAT
687
      if (INVALID_FLOAT (valaddr, len))
688
        {
689
          *invp = 1;
690
          return 1.234567891011121314;
691
        }
692
#endif
693
      return extract_floating (valaddr, len);
694
    }
695
  else if (nosign)
696
    {
697
      /* Unsigned -- be sure we compensate for signed LONGEST.  */
698
#if !defined (_MSC_VER) || (_MSC_VER > 900)
699
      return (ULONGEST) unpack_long (type, valaddr);
700
#else
701
      /* FIXME!!! msvc22 doesn't support unsigned __int64 -> double */
702
      return (LONGEST) unpack_long (type, valaddr);
703
#endif /* _MSC_VER */
704
    }
705
  else
706
    {
707
      /* Signed -- we are OK with unpack_long.  */
708
      return unpack_long (type, valaddr);
709
    }
710
}
711
 
712
/* Unpack raw data (copied from debugee, target byte order) at VALADDR
713
   as a CORE_ADDR, assuming the raw data is described by type TYPE.
714
   We don't assume any alignment for the raw data.  Return value is in
715
   host byte order.
716
 
717
   If you want functions and arrays to be coerced to pointers, and
718
   references to be dereferenced, call value_as_pointer() instead.
719
 
720
   C++: It is assumed that the front-end has taken care of
721
   all matters concerning pointers to members.  A pointer
722
   to member which reaches here is considered to be equivalent
723
   to an INT (or some size).  After all, it is only an offset.  */
724
 
725
CORE_ADDR
726
unpack_pointer (type, valaddr)
727
     struct type *type;
728
     char *valaddr;
729
{
730
  /* Assume a CORE_ADDR can fit in a LONGEST (for now).  Not sure
731
     whether we want this to be true eventually.  */
732
  return unpack_long (type, valaddr);
733
}
734
 
735
/* Get the value of the FIELDN'th field (which must be static) of TYPE. */
736
 
737
value_ptr
738
value_static_field (type, fieldno)
739
     struct type *type;
740
     int fieldno;
741
{
742
  CORE_ADDR addr;
743
  asection *sect;
744
  if (TYPE_FIELD_STATIC_HAS_ADDR (type, fieldno))
745
    {
746
      addr = TYPE_FIELD_STATIC_PHYSADDR (type, fieldno);
747
      sect = NULL;
748
    }
749
  else
750
    {
751
      char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
752
      struct symbol *sym = lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
753
      if (sym == NULL)
754
        {
755
          /* With some compilers, e.g. HP aCC, static data members are reported
756
             as non-debuggable symbols */
757
          struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, NULL, NULL);
758
          if (!msym)
759
            return NULL;
760
          else
761
            {
762
              addr = SYMBOL_VALUE_ADDRESS (msym);
763
              sect = SYMBOL_BFD_SECTION (msym);
764
            }
765
        }
766
      else
767
        {
768
          addr = SYMBOL_VALUE_ADDRESS (sym);
769
          sect = SYMBOL_BFD_SECTION (sym);
770
        }
771
      SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno), addr);
772
    }
773
  return value_at (TYPE_FIELD_TYPE (type, fieldno), addr, sect);
774
}
775
 
776
/* Given a value ARG1 (offset by OFFSET bytes)
777
   of a struct or union type ARG_TYPE,
778
   extract and return the value of one of its (non-static) fields.
779
   FIELDNO says which field. */
780
 
781
value_ptr
782
value_primitive_field (arg1, offset, fieldno, arg_type)
783
     register value_ptr arg1;
784
     int offset;
785
     register int fieldno;
786
     register struct type *arg_type;
787
{
788
  register value_ptr v;
789
  register struct type *type;
790
 
791
  CHECK_TYPEDEF (arg_type);
792
  type = TYPE_FIELD_TYPE (arg_type, fieldno);
793
 
794
  /* Handle packed fields */
795
 
796
  if (TYPE_FIELD_BITSIZE (arg_type, fieldno))
797
    {
798
      v = value_from_longest (type,
799
                              unpack_field_as_long (arg_type,
800
                                                    VALUE_CONTENTS (arg1)
801
                                                    + offset,
802
                                                    fieldno));
803
      VALUE_BITPOS (v) = TYPE_FIELD_BITPOS (arg_type, fieldno) % 8;
804
      VALUE_BITSIZE (v) = TYPE_FIELD_BITSIZE (arg_type, fieldno);
805
      VALUE_OFFSET (v) = VALUE_OFFSET (arg1) + offset
806
        + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
807
    }
808
  else if (fieldno < TYPE_N_BASECLASSES (arg_type))
809
    {
810
      /* This field is actually a base subobject, so preserve the
811
         entire object's contents for later references to virtual
812
         bases, etc.  */
813
      v = allocate_value (VALUE_ENCLOSING_TYPE (arg1));
814
      VALUE_TYPE (v) = arg_type;
815
      if (VALUE_LAZY (arg1))
816
        VALUE_LAZY (v) = 1;
817
      else
818
        memcpy (VALUE_CONTENTS_ALL_RAW (v), VALUE_CONTENTS_ALL_RAW (arg1),
819
                TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg1)));
820
      VALUE_OFFSET (v) = VALUE_OFFSET (arg1);
821
      VALUE_EMBEDDED_OFFSET (v)
822
        = offset +
823
        VALUE_EMBEDDED_OFFSET (arg1) +
824
        TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
825
    }
826
  else
827
    {
828
      /* Plain old data member */
829
      offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
830
      v = allocate_value (type);
831
      if (VALUE_LAZY (arg1))
832
        VALUE_LAZY (v) = 1;
833
      else
834
        memcpy (VALUE_CONTENTS_RAW (v),
835
                VALUE_CONTENTS_RAW (arg1) + offset,
836
                TYPE_LENGTH (type));
837
      VALUE_OFFSET (v) = VALUE_OFFSET (arg1) + offset;
838
    }
839
  VALUE_LVAL (v) = VALUE_LVAL (arg1);
840
  if (VALUE_LVAL (arg1) == lval_internalvar)
841
    VALUE_LVAL (v) = lval_internalvar_component;
842
  VALUE_ADDRESS (v) = VALUE_ADDRESS (arg1);
843
/*  VALUE_OFFSET (v) = VALUE_OFFSET (arg1) + offset
844
   + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8; */
845
  return v;
846
}
847
 
848
/* Given a value ARG1 of a struct or union type,
849
   extract and return the value of one of its (non-static) fields.
850
   FIELDNO says which field. */
851
 
852
value_ptr
853
value_field (arg1, fieldno)
854
     register value_ptr arg1;
855
     register int fieldno;
856
{
857
  return value_primitive_field (arg1, 0, fieldno, VALUE_TYPE (arg1));
858
}
859
 
860
/* Return a non-virtual function as a value.
861
   F is the list of member functions which contains the desired method.
862
   J is an index into F which provides the desired method. */
863
 
864
value_ptr
865
value_fn_field (arg1p, f, j, type, offset)
866
     value_ptr *arg1p;
867
     struct fn_field *f;
868
     int j;
869
     struct type *type;
870
     int offset;
871
{
872
  register value_ptr v;
873
  register struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
874
  struct symbol *sym;
875
 
876
  sym = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
877
                       0, VAR_NAMESPACE, 0, NULL);
878
  if (!sym)
879
    return NULL;
880
/*
881
   error ("Internal error: could not find physical method named %s",
882
   TYPE_FN_FIELD_PHYSNAME (f, j));
883
 */
884
 
885
  v = allocate_value (ftype);
886
  VALUE_ADDRESS (v) = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
887
  VALUE_TYPE (v) = ftype;
888
 
889
  if (arg1p)
890
    {
891
      if (type != VALUE_TYPE (*arg1p))
892
        *arg1p = value_ind (value_cast (lookup_pointer_type (type),
893
                                        value_addr (*arg1p)));
894
 
895
      /* Move the `this' pointer according to the offset.
896
         VALUE_OFFSET (*arg1p) += offset;
897
       */
898
    }
899
 
900
  return v;
901
}
902
 
903
/* Return a virtual function as a value.
904
   ARG1 is the object which provides the virtual function
905
   table pointer.  *ARG1P is side-effected in calling this function.
906
   F is the list of member functions which contains the desired virtual
907
   function.
908
   J is an index into F which provides the desired virtual function.
909
 
910
   TYPE is the type in which F is located.  */
911
value_ptr
912
value_virtual_fn_field (arg1p, f, j, type, offset)
913
     value_ptr *arg1p;
914
     struct fn_field *f;
915
     int j;
916
     struct type *type;
917
     int offset;
918
{
919
  value_ptr arg1 = *arg1p;
920
  struct type *type1 = check_typedef (VALUE_TYPE (arg1));
921
 
922
  if (TYPE_HAS_VTABLE (type))
923
    {
924
      /* Deal with HP/Taligent runtime model for virtual functions */
925
      value_ptr vp;
926
      value_ptr argp;           /* arg1 cast to base */
927
      CORE_ADDR coreptr;        /* pointer to target address */
928
      int class_index;          /* which class segment pointer to use */
929
      struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);   /* method type */
930
 
931
      argp = value_cast (type, *arg1p);
932
 
933
      if (VALUE_ADDRESS (argp) == 0)
934
        error ("Address of object is null; object may not have been created.");
935
 
936
      /* pai: FIXME -- 32x64 possible problem? */
937
      /* First word (4 bytes) in object layout is the vtable pointer */
938
      coreptr = *(CORE_ADDR *) (VALUE_CONTENTS (argp));         /* pai: (temp)  */
939
      /* + offset + VALUE_EMBEDDED_OFFSET (argp)); */
940
 
941
      if (!coreptr)
942
        error ("Virtual table pointer is null for object; object may not have been created.");
943
 
944
      /* pai/1997-05-09
945
       * FIXME: The code here currently handles only
946
       * the non-RRBC case of the Taligent/HP runtime spec; when RRBC
947
       * is introduced, the condition for the "if" below will have to
948
       * be changed to be a test for the RRBC case.  */
949
 
950
      if (1)
951
        {
952
          /* Non-RRBC case; the virtual function pointers are stored at fixed
953
           * offsets in the virtual table. */
954
 
955
          /* Retrieve the offset in the virtual table from the debug
956
           * info.  The offset of the vfunc's entry is in words from
957
           * the beginning of the vtable; but first we have to adjust
958
           * by HP_ACC_VFUNC_START to account for other entries */
959
 
960
          /* pai: FIXME: 32x64 problem here, a word may be 8 bytes in
961
           * which case the multiplier should be 8 and values should be long */
962
          vp = value_at (builtin_type_int,
963
                         coreptr + 4 * (TYPE_FN_FIELD_VOFFSET (f, j) + HP_ACC_VFUNC_START), NULL);
964
 
965
          coreptr = *(CORE_ADDR *) (VALUE_CONTENTS (vp));
966
          /* coreptr now contains the address of the virtual function */
967
          /* (Actually, it contains the pointer to the plabel for the function. */
968
        }
969
      else
970
        {
971
          /* RRBC case; the virtual function pointers are found by double
972
           * indirection through the class segment tables. */
973
 
974
          /* Choose class segment depending on type we were passed */
975
          class_index = class_index_in_primary_list (type);
976
 
977
          /* Find class segment pointer.  These are in the vtable slots after
978
           * some other entries, so adjust by HP_ACC_VFUNC_START for that. */
979
          /* pai: FIXME 32x64 problem here, if words are 8 bytes long
980
           * the multiplier below has to be 8 and value should be long. */
981
          vp = value_at (builtin_type_int,
982
                    coreptr + 4 * (HP_ACC_VFUNC_START + class_index), NULL);
983
          /* Indirect once more, offset by function index */
984
          /* pai: FIXME 32x64 problem here, again multiplier could be 8 and value long */
985
          coreptr = *(CORE_ADDR *) (VALUE_CONTENTS (vp) + 4 * TYPE_FN_FIELD_VOFFSET (f, j));
986
          vp = value_at (builtin_type_int, coreptr, NULL);
987
          coreptr = *(CORE_ADDR *) (VALUE_CONTENTS (vp));
988
 
989
          /* coreptr now contains the address of the virtual function */
990
          /* (Actually, it contains the pointer to the plabel for the function.) */
991
 
992
        }
993
 
994
      if (!coreptr)
995
        error ("Address of virtual function is null; error in virtual table?");
996
 
997
      /* Wrap this addr in a value and return pointer */
998
      vp = allocate_value (ftype);
999
      VALUE_TYPE (vp) = ftype;
1000
      VALUE_ADDRESS (vp) = coreptr;
1001
 
1002
      /* pai: (temp) do we need the value_ind stuff in value_fn_field? */
1003
      return vp;
1004
    }
1005
  else
1006
    {                           /* Not using HP/Taligent runtime conventions; so try to
1007
                                 * use g++ conventions for virtual table */
1008
 
1009
      struct type *entry_type;
1010
      /* First, get the virtual function table pointer.  That comes
1011
         with a strange type, so cast it to type `pointer to long' (which
1012
         should serve just fine as a function type).  Then, index into
1013
         the table, and convert final value to appropriate function type.  */
1014
      value_ptr entry, vfn, vtbl;
1015
      value_ptr vi = value_from_longest (builtin_type_int,
1016
                                    (LONGEST) TYPE_FN_FIELD_VOFFSET (f, j));
1017
      struct type *fcontext = TYPE_FN_FIELD_FCONTEXT (f, j);
1018
      struct type *context;
1019
      if (fcontext == NULL)
1020
        /* We don't have an fcontext (e.g. the program was compiled with
1021
           g++ version 1).  Try to get the vtbl from the TYPE_VPTR_BASETYPE.
1022
           This won't work right for multiple inheritance, but at least we
1023
           should do as well as GDB 3.x did.  */
1024
        fcontext = TYPE_VPTR_BASETYPE (type);
1025
      context = lookup_pointer_type (fcontext);
1026
      /* Now context is a pointer to the basetype containing the vtbl.  */
1027
      if (TYPE_TARGET_TYPE (context) != type1)
1028
        {
1029
          value_ptr tmp = value_cast (context, value_addr (arg1));
1030
          VALUE_POINTED_TO_OFFSET (tmp) = 0;
1031
          arg1 = value_ind (tmp);
1032
          type1 = check_typedef (VALUE_TYPE (arg1));
1033
        }
1034
 
1035
      context = type1;
1036
      /* Now context is the basetype containing the vtbl.  */
1037
 
1038
      /* This type may have been defined before its virtual function table
1039
         was.  If so, fill in the virtual function table entry for the
1040
         type now.  */
1041
      if (TYPE_VPTR_FIELDNO (context) < 0)
1042
        fill_in_vptr_fieldno (context);
1043
 
1044
      /* The virtual function table is now an array of structures
1045
         which have the form { int16 offset, delta; void *pfn; }.  */
1046
      vtbl = value_primitive_field (arg1, 0, TYPE_VPTR_FIELDNO (context),
1047
                                    TYPE_VPTR_BASETYPE (context));
1048
 
1049
      /* With older versions of g++, the vtbl field pointed to an array
1050
         of structures.  Nowadays it points directly to the structure. */
1051
      if (TYPE_CODE (VALUE_TYPE (vtbl)) == TYPE_CODE_PTR
1052
      && TYPE_CODE (TYPE_TARGET_TYPE (VALUE_TYPE (vtbl))) == TYPE_CODE_ARRAY)
1053
        {
1054
          /* Handle the case where the vtbl field points to an
1055
             array of structures. */
1056
          vtbl = value_ind (vtbl);
1057
 
1058
          /* Index into the virtual function table.  This is hard-coded because
1059
             looking up a field is not cheap, and it may be important to save
1060
             time, e.g. if the user has set a conditional breakpoint calling
1061
             a virtual function.  */
1062
          entry = value_subscript (vtbl, vi);
1063
        }
1064
      else
1065
        {
1066
          /* Handle the case where the vtbl field points directly to a structure. */
1067
          vtbl = value_add (vtbl, vi);
1068
          entry = value_ind (vtbl);
1069
        }
1070
 
1071
      entry_type = check_typedef (VALUE_TYPE (entry));
1072
 
1073
      if (TYPE_CODE (entry_type) == TYPE_CODE_STRUCT)
1074
        {
1075
          /* Move the `this' pointer according to the virtual function table. */
1076
          VALUE_OFFSET (arg1) += value_as_long (value_field (entry, 0));
1077
 
1078
          if (!VALUE_LAZY (arg1))
1079
            {
1080
              VALUE_LAZY (arg1) = 1;
1081
              value_fetch_lazy (arg1);
1082
            }
1083
 
1084
          vfn = value_field (entry, 2);
1085
        }
1086
      else if (TYPE_CODE (entry_type) == TYPE_CODE_PTR)
1087
        vfn = entry;
1088
      else
1089
        error ("I'm confused:  virtual function table has bad type");
1090
      /* Reinstantiate the function pointer with the correct type.  */
1091
      VALUE_TYPE (vfn) = lookup_pointer_type (TYPE_FN_FIELD_TYPE (f, j));
1092
 
1093
      *arg1p = arg1;
1094
      return vfn;
1095
    }
1096
}
1097
 
1098
/* ARG is a pointer to an object we know to be at least
1099
   a DTYPE.  BTYPE is the most derived basetype that has
1100
   already been searched (and need not be searched again).
1101
   After looking at the vtables between BTYPE and DTYPE,
1102
   return the most derived type we find.  The caller must
1103
   be satisfied when the return value == DTYPE.
1104
 
1105
   FIXME-tiemann: should work with dossier entries as well.
1106
   NOTICE - djb: I see no good reason at all to keep this function now that
1107
   we have RTTI support. It's used in literally one place, and it's
1108
   hard to keep this function up to date when it's purpose is served
1109
   by value_rtti_type efficiently.
1110
   Consider it gone for 5.1. */
1111
 
1112
static value_ptr
1113
value_headof (in_arg, btype, dtype)
1114
     value_ptr in_arg;
1115
     struct type *btype, *dtype;
1116
{
1117
  /* First collect the vtables we must look at for this object.  */
1118
  value_ptr arg, vtbl;
1119
  struct symbol *sym;
1120
  char *demangled_name;
1121
  struct minimal_symbol *msymbol;
1122
 
1123
  btype = TYPE_VPTR_BASETYPE (dtype);
1124
  CHECK_TYPEDEF (btype);
1125
  arg = in_arg;
1126
  if (btype != dtype)
1127
      arg = value_cast (lookup_pointer_type (btype), arg);
1128
  if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_REF)
1129
      {
1130
          /*
1131
           * Copy the value, but change the type from (T&) to (T*).
1132
           * We keep the same location information, which is efficient,
1133
           * and allows &(&X) to get the location containing the reference.
1134
           */
1135
          arg = value_copy (arg);
1136
          VALUE_TYPE (arg) = lookup_pointer_type (TYPE_TARGET_TYPE (VALUE_TYPE (arg)));
1137
      }
1138
  if (VALUE_ADDRESS(value_field (value_ind(arg), TYPE_VPTR_FIELDNO (btype)))==0)
1139
      return arg;
1140
 
1141
  vtbl = value_ind (value_field (value_ind (arg), TYPE_VPTR_FIELDNO (btype)));
1142
  /* Turn vtable into typeinfo function */
1143
  VALUE_OFFSET(vtbl)+=4;
1144
 
1145
  msymbol = lookup_minimal_symbol_by_pc ( value_as_pointer(value_ind(vtbl)) );
1146
  if (msymbol == NULL
1147
      || (demangled_name = SYMBOL_NAME (msymbol)) == NULL)
1148
      {
1149
          /* If we expected to find a vtable, but did not, let the user
1150
             know that we aren't happy, but don't throw an error.
1151
             FIXME: there has to be a better way to do this.  */
1152
          struct type *error_type = (struct type *) xmalloc (sizeof (struct type));
1153
          memcpy (error_type, VALUE_TYPE (in_arg), sizeof (struct type));
1154
          TYPE_NAME (error_type) = savestring ("suspicious *", sizeof ("suspicious *"));
1155
          VALUE_TYPE (in_arg) = error_type;
1156
          return in_arg;
1157
      }
1158
  demangled_name = cplus_demangle(demangled_name,DMGL_ANSI);
1159
  *(strchr (demangled_name, ' ')) = '\0';
1160
 
1161
  sym = lookup_symbol (demangled_name, 0, VAR_NAMESPACE, 0, 0);
1162
  if (sym == NULL)
1163
      error ("could not find type declaration for `%s'", demangled_name);
1164
 
1165
  arg = in_arg;
1166
  VALUE_TYPE (arg) = lookup_pointer_type (SYMBOL_TYPE (sym));
1167
  return arg;
1168
}
1169
 
1170
/* ARG is a pointer object of type TYPE.  If TYPE has virtual
1171
   function tables, probe ARG's tables (including the vtables
1172
   of its baseclasses) to figure out the most derived type that ARG
1173
   could actually be a pointer to.  */
1174
 
1175
value_ptr
1176
value_from_vtable_info (arg, type)
1177
     value_ptr arg;
1178
     struct type *type;
1179
{
1180
  /* Take care of preliminaries.  */
1181
  if (TYPE_VPTR_FIELDNO (type) < 0)
1182
    fill_in_vptr_fieldno (type);
1183
  if (TYPE_VPTR_FIELDNO (type) < 0)
1184
    return 0;
1185
 
1186
  return value_headof (arg, 0, type);
1187
}
1188
 
1189
/* Return true if the INDEXth field of TYPE is a virtual baseclass
1190
   pointer which is for the base class whose type is BASECLASS.  */
1191
 
1192
static int
1193
vb_match (type, index, basetype)
1194
     struct type *type;
1195
     int index;
1196
     struct type *basetype;
1197
{
1198
  struct type *fieldtype;
1199
  char *name = TYPE_FIELD_NAME (type, index);
1200
  char *field_class_name = NULL;
1201
 
1202
  if (*name != '_')
1203
    return 0;
1204
  /* gcc 2.4 uses _vb$.  */
1205
  if (name[1] == 'v' && name[2] == 'b' && is_cplus_marker (name[3]))
1206
    field_class_name = name + 4;
1207
  /* gcc 2.5 will use __vb_.  */
1208
  if (name[1] == '_' && name[2] == 'v' && name[3] == 'b' && name[4] == '_')
1209
    field_class_name = name + 5;
1210
 
1211
  if (field_class_name == NULL)
1212
    /* This field is not a virtual base class pointer.  */
1213
    return 0;
1214
 
1215
  /* It's a virtual baseclass pointer, now we just need to find out whether
1216
     it is for this baseclass.  */
1217
  fieldtype = TYPE_FIELD_TYPE (type, index);
1218
  if (fieldtype == NULL
1219
      || TYPE_CODE (fieldtype) != TYPE_CODE_PTR)
1220
    /* "Can't happen".  */
1221
    return 0;
1222
 
1223
  /* What we check for is that either the types are equal (needed for
1224
     nameless types) or have the same name.  This is ugly, and a more
1225
     elegant solution should be devised (which would probably just push
1226
     the ugliness into symbol reading unless we change the stabs format).  */
1227
  if (TYPE_TARGET_TYPE (fieldtype) == basetype)
1228
    return 1;
1229
 
1230
  if (TYPE_NAME (basetype) != NULL
1231
      && TYPE_NAME (TYPE_TARGET_TYPE (fieldtype)) != NULL
1232
      && STREQ (TYPE_NAME (basetype),
1233
                TYPE_NAME (TYPE_TARGET_TYPE (fieldtype))))
1234
    return 1;
1235
  return 0;
1236
}
1237
 
1238
/* Compute the offset of the baseclass which is
1239
   the INDEXth baseclass of class TYPE,
1240
   for value at VALADDR (in host) at ADDRESS (in target).
1241
   The result is the offset of the baseclass value relative
1242
   to (the address of)(ARG) + OFFSET.
1243
 
1244
   -1 is returned on error. */
1245
 
1246
int
1247
baseclass_offset (type, index, valaddr, address)
1248
     struct type *type;
1249
     int index;
1250
     char *valaddr;
1251
     CORE_ADDR address;
1252
{
1253
  struct type *basetype = TYPE_BASECLASS (type, index);
1254
 
1255
  if (BASETYPE_VIA_VIRTUAL (type, index))
1256
    {
1257
      /* Must hunt for the pointer to this virtual baseclass.  */
1258
      register int i, len = TYPE_NFIELDS (type);
1259
      register int n_baseclasses = TYPE_N_BASECLASSES (type);
1260
 
1261
      /* First look for the virtual baseclass pointer
1262
         in the fields.  */
1263
      for (i = n_baseclasses; i < len; i++)
1264
        {
1265
          if (vb_match (type, i, basetype))
1266
            {
1267
              CORE_ADDR addr
1268
              = unpack_pointer (TYPE_FIELD_TYPE (type, i),
1269
                                valaddr + (TYPE_FIELD_BITPOS (type, i) / 8));
1270
 
1271
              return addr - (LONGEST) address;
1272
            }
1273
        }
1274
      /* Not in the fields, so try looking through the baseclasses.  */
1275
      for (i = index + 1; i < n_baseclasses; i++)
1276
        {
1277
          int boffset =
1278
          baseclass_offset (type, i, valaddr, address);
1279
          if (boffset)
1280
            return boffset;
1281
        }
1282
      /* Not found.  */
1283
      return -1;
1284
    }
1285
 
1286
  /* Baseclass is easily computed.  */
1287
  return TYPE_BASECLASS_BITPOS (type, index) / 8;
1288
}
1289
 
1290
/* Unpack a field FIELDNO of the specified TYPE, from the anonymous object at
1291
   VALADDR.
1292
 
1293
   Extracting bits depends on endianness of the machine.  Compute the
1294
   number of least significant bits to discard.  For big endian machines,
1295
   we compute the total number of bits in the anonymous object, subtract
1296
   off the bit count from the MSB of the object to the MSB of the
1297
   bitfield, then the size of the bitfield, which leaves the LSB discard
1298
   count.  For little endian machines, the discard count is simply the
1299
   number of bits from the LSB of the anonymous object to the LSB of the
1300
   bitfield.
1301
 
1302
   If the field is signed, we also do sign extension. */
1303
 
1304
LONGEST
1305
unpack_field_as_long (type, valaddr, fieldno)
1306
     struct type *type;
1307
     char *valaddr;
1308
     int fieldno;
1309
{
1310
  ULONGEST val;
1311
  ULONGEST valmask;
1312
  int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
1313
  int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
1314
  int lsbcount;
1315
  struct type *field_type;
1316
 
1317
  val = extract_unsigned_integer (valaddr + bitpos / 8, sizeof (val));
1318
  field_type = TYPE_FIELD_TYPE (type, fieldno);
1319
  CHECK_TYPEDEF (field_type);
1320
 
1321
  /* Extract bits.  See comment above. */
1322
 
1323
  if (BITS_BIG_ENDIAN)
1324
    lsbcount = (sizeof val * 8 - bitpos % 8 - bitsize);
1325
  else
1326
    lsbcount = (bitpos % 8);
1327
  val >>= lsbcount;
1328
 
1329
  /* If the field does not entirely fill a LONGEST, then zero the sign bits.
1330
     If the field is signed, and is negative, then sign extend. */
1331
 
1332
  if ((bitsize > 0) && (bitsize < 8 * (int) sizeof (val)))
1333
    {
1334
      valmask = (((ULONGEST) 1) << bitsize) - 1;
1335
      val &= valmask;
1336
      if (!TYPE_UNSIGNED (field_type))
1337
        {
1338
          if (val & (valmask ^ (valmask >> 1)))
1339
            {
1340
              val |= ~valmask;
1341
            }
1342
        }
1343
    }
1344
  return (val);
1345
}
1346
 
1347
/* Modify the value of a bitfield.  ADDR points to a block of memory in
1348
   target byte order; the bitfield starts in the byte pointed to.  FIELDVAL
1349
   is the desired value of the field, in host byte order.  BITPOS and BITSIZE
1350
   indicate which bits (in target bit order) comprise the bitfield.  */
1351
 
1352
void
1353
modify_field (addr, fieldval, bitpos, bitsize)
1354
     char *addr;
1355
     LONGEST fieldval;
1356
     int bitpos, bitsize;
1357
{
1358
  LONGEST oword;
1359
 
1360
  /* If a negative fieldval fits in the field in question, chop
1361
     off the sign extension bits.  */
1362
  if (bitsize < (8 * (int) sizeof (fieldval))
1363
      && (~fieldval & ~((1 << (bitsize - 1)) - 1)) == 0)
1364
    fieldval = fieldval & ((1 << bitsize) - 1);
1365
 
1366
  /* Warn if value is too big to fit in the field in question.  */
1367
  if (bitsize < (8 * (int) sizeof (fieldval))
1368
      && 0 != (fieldval & ~((1 << bitsize) - 1)))
1369
    {
1370
      /* FIXME: would like to include fieldval in the message, but
1371
         we don't have a sprintf_longest.  */
1372
      warning ("Value does not fit in %d bits.", bitsize);
1373
 
1374
      /* Truncate it, otherwise adjoining fields may be corrupted.  */
1375
      fieldval = fieldval & ((1 << bitsize) - 1);
1376
    }
1377
 
1378
  oword = extract_signed_integer (addr, sizeof oword);
1379
 
1380
  /* Shifting for bit field depends on endianness of the target machine.  */
1381
  if (BITS_BIG_ENDIAN)
1382
    bitpos = sizeof (oword) * 8 - bitpos - bitsize;
1383
 
1384
  /* Mask out old value, while avoiding shifts >= size of oword */
1385
  if (bitsize < 8 * (int) sizeof (oword))
1386
    oword &= ~(((((ULONGEST) 1) << bitsize) - 1) << bitpos);
1387
  else
1388
    oword &= ~((~(ULONGEST) 0) << bitpos);
1389
  oword |= fieldval << bitpos;
1390
 
1391
  store_signed_integer (addr, sizeof oword, oword);
1392
}
1393
 
1394
/* Convert C numbers into newly allocated values */
1395
 
1396
value_ptr
1397
value_from_longest (type, num)
1398
     struct type *type;
1399
     register LONGEST num;
1400
{
1401
  register value_ptr val = allocate_value (type);
1402
  register enum type_code code;
1403
  register int len;
1404
retry:
1405
  code = TYPE_CODE (type);
1406
  len = TYPE_LENGTH (type);
1407
 
1408
  switch (code)
1409
    {
1410
    case TYPE_CODE_TYPEDEF:
1411
      type = check_typedef (type);
1412
      goto retry;
1413
    case TYPE_CODE_INT:
1414
    case TYPE_CODE_CHAR:
1415
    case TYPE_CODE_ENUM:
1416
    case TYPE_CODE_BOOL:
1417
    case TYPE_CODE_RANGE:
1418
      store_signed_integer (VALUE_CONTENTS_RAW (val), len, num);
1419
      break;
1420
 
1421
    case TYPE_CODE_REF:
1422
    case TYPE_CODE_PTR:
1423
      /* This assumes that all pointers of a given length
1424
         have the same form.  */
1425
      store_address (VALUE_CONTENTS_RAW (val), len, (CORE_ADDR) num);
1426
      break;
1427
 
1428
    default:
1429
      error ("Unexpected type (%d) encountered for integer constant.", code);
1430
    }
1431
  return val;
1432
}
1433
 
1434
/* Create a value for a string constant to be stored locally
1435
   (not in the inferior's memory space, but in GDB memory).
1436
   This is analogous to value_from_longest, which also does not
1437
   use inferior memory.  String shall NOT contain embedded nulls.  */
1438
 
1439
value_ptr
1440
value_from_string (ptr)
1441
     char *ptr;
1442
{
1443
  value_ptr val;
1444
  int len = strlen (ptr);
1445
  int lowbound = current_language->string_lower_bound;
1446
  struct type *rangetype =
1447
  create_range_type ((struct type *) NULL,
1448
                     builtin_type_int,
1449
                     lowbound, len + lowbound - 1);
1450
  struct type *stringtype =
1451
  create_array_type ((struct type *) NULL,
1452
                     *current_language->string_char_type,
1453
                     rangetype);
1454
 
1455
  val = allocate_value (stringtype);
1456
  memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1457
  return val;
1458
}
1459
 
1460
value_ptr
1461
value_from_double (type, num)
1462
     struct type *type;
1463
     DOUBLEST num;
1464
{
1465
  register value_ptr val = allocate_value (type);
1466
  struct type *base_type = check_typedef (type);
1467
  register enum type_code code = TYPE_CODE (base_type);
1468
  register int len = TYPE_LENGTH (base_type);
1469
 
1470
  if (code == TYPE_CODE_FLT)
1471
    {
1472
      store_floating (VALUE_CONTENTS_RAW (val), len, num);
1473
    }
1474
  else
1475
    error ("Unexpected type encountered for floating constant.");
1476
 
1477
  return val;
1478
}
1479
 
1480
/* Deal with the value that is "about to be returned".  */
1481
 
1482
/* Return the value that a function returning now
1483
   would be returning to its caller, assuming its type is VALTYPE.
1484
   RETBUF is where we look for what ought to be the contents
1485
   of the registers (in raw form).  This is because it is often
1486
   desirable to restore old values to those registers
1487
   after saving the contents of interest, and then call
1488
   this function using the saved values.
1489
   struct_return is non-zero when the function in question is
1490
   using the structure return conventions on the machine in question;
1491
 
1492
   means returning pointer to where structure is vs. returning value). */
1493
 
1494
value_ptr
1495
value_being_returned (valtype, retbuf, struct_return)
1496
     register struct type *valtype;
1497
     char *retbuf;
1498
     int struct_return;
1499
     /*ARGSUSED */
1500
{
1501
  register value_ptr val;
1502
  CORE_ADDR addr;
1503
 
1504
  /* If this is not defined, just use EXTRACT_RETURN_VALUE instead.  */
1505
  if (EXTRACT_STRUCT_VALUE_ADDRESS_P)
1506
    if (struct_return)
1507
      {
1508
        addr = EXTRACT_STRUCT_VALUE_ADDRESS (retbuf);
1509
        if (!addr)
1510
          error ("Function return value unknown");
1511
        return value_at (valtype, addr, NULL);
1512
      }
1513
 
1514
  val = allocate_value (valtype);
1515
  CHECK_TYPEDEF (valtype);
1516
  EXTRACT_RETURN_VALUE (valtype, retbuf, VALUE_CONTENTS_RAW (val));
1517
 
1518
  return val;
1519
}
1520
 
1521
/* Should we use EXTRACT_STRUCT_VALUE_ADDRESS instead of
1522
   EXTRACT_RETURN_VALUE?  GCC_P is true if compiled with gcc
1523
   and TYPE is the type (which is known to be struct, union or array).
1524
 
1525
   On most machines, the struct convention is used unless we are
1526
   using gcc and the type is of a special size.  */
1527
/* As of about 31 Mar 93, GCC was changed to be compatible with the
1528
   native compiler.  GCC 2.3.3 was the last release that did it the
1529
   old way.  Since gcc2_compiled was not changed, we have no
1530
   way to correctly win in all cases, so we just do the right thing
1531
   for gcc1 and for gcc2 after this change.  Thus it loses for gcc
1532
   2.0-2.3.3.  This is somewhat unfortunate, but changing gcc2_compiled
1533
   would cause more chaos than dealing with some struct returns being
1534
   handled wrong.  */
1535
 
1536
int
1537
generic_use_struct_convention (gcc_p, value_type)
1538
     int gcc_p;
1539
     struct type *value_type;
1540
{
1541
  return !((gcc_p == 1)
1542
           && (TYPE_LENGTH (value_type) == 1
1543
               || TYPE_LENGTH (value_type) == 2
1544
               || TYPE_LENGTH (value_type) == 4
1545
               || TYPE_LENGTH (value_type) == 8));
1546
}
1547
 
1548
#ifndef USE_STRUCT_CONVENTION
1549
#define USE_STRUCT_CONVENTION(gcc_p,type) generic_use_struct_convention (gcc_p, type)
1550
#endif
1551
 
1552
/* Some fundamental types (such as long double) are returned on the stack for
1553
   certain architectures.  This macro should return true for any type besides
1554
   struct, union or array that gets returned on the stack.  */
1555
 
1556
#ifndef RETURN_VALUE_ON_STACK
1557
#define RETURN_VALUE_ON_STACK(TYPE) 0
1558
#endif
1559
 
1560
/* Return true if the function specified is using the structure returning
1561
   convention on this machine to return arguments, or 0 if it is using
1562
   the value returning convention.  FUNCTION is the value representing
1563
   the function, FUNCADDR is the address of the function, and VALUE_TYPE
1564
   is the type returned by the function.  GCC_P is nonzero if compiled
1565
   with GCC.  */
1566
 
1567
int
1568
using_struct_return (function, funcaddr, value_type, gcc_p)
1569
     value_ptr function;
1570
     CORE_ADDR funcaddr;
1571
     struct type *value_type;
1572
     int gcc_p;
1573
     /*ARGSUSED */
1574
{
1575
  register enum type_code code = TYPE_CODE (value_type);
1576
 
1577
  if (code == TYPE_CODE_ERROR)
1578
    error ("Function return type unknown.");
1579
 
1580
  if (code == TYPE_CODE_STRUCT
1581
      || code == TYPE_CODE_UNION
1582
      || code == TYPE_CODE_ARRAY
1583
      || RETURN_VALUE_ON_STACK (value_type))
1584
    return USE_STRUCT_CONVENTION (gcc_p, value_type);
1585
 
1586
  return 0;
1587
}
1588
 
1589
/* Store VAL so it will be returned if a function returns now.
1590
   Does not verify that VAL's type matches what the current
1591
   function wants to return.  */
1592
 
1593
void
1594
set_return_value (val)
1595
     value_ptr val;
1596
{
1597
  struct type *type = check_typedef (VALUE_TYPE (val));
1598
  register enum type_code code = TYPE_CODE (type);
1599
 
1600
  if (code == TYPE_CODE_ERROR)
1601
    error ("Function return type unknown.");
1602
 
1603
  if (code == TYPE_CODE_STRUCT
1604
      || code == TYPE_CODE_UNION)       /* FIXME, implement struct return.  */
1605
    error ("GDB does not support specifying a struct or union return value.");
1606
 
1607
  STORE_RETURN_VALUE (type, VALUE_CONTENTS (val));
1608
}
1609
 
1610
void
1611
_initialize_values ()
1612
{
1613
  add_cmd ("convenience", no_class, show_convenience,
1614
           "Debugger convenience (\"$foo\") variables.\n\
1615
These variables are created when you assign them values;\n\
1616
thus, \"print $foo=1\" gives \"$foo\" the value 1.  Values may be any type.\n\n\
1617
A few convenience variables are given values automatically:\n\
1618
\"$_\"holds the last address examined with \"x\" or \"info lines\",\n\
1619
\"$__\" holds the contents of the last address examined with \"x\".",
1620
           &showlist);
1621
 
1622
  add_cmd ("values", no_class, show_values,
1623
           "Elements of value history around item number IDX (or last ten).",
1624
           &showlist);
1625
}

powered by: WebSVN 2.1.0

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