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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [valops.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* Perform non-arithmetic operations on values, for GDB.
2
   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
3
   1996, 1997, 1998, 1999, 2000, 2001 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 "symtab.h"
24
#include "gdbtypes.h"
25
#include "value.h"
26
#include "frame.h"
27
#include "inferior.h"
28
#include "gdbcore.h"
29
#include "target.h"
30
#include "demangle.h"
31
#include "language.h"
32
#include "gdbcmd.h"
33
#include "regcache.h"
34
#include "cp-abi.h"
35
 
36
#include <errno.h>
37
#include "gdb_string.h"
38
 
39
/* Flag indicating HP compilers were used; needed to correctly handle some
40
   value operations with HP aCC code/runtime. */
41
extern int hp_som_som_object_present;
42
 
43
extern int overload_debug;
44
/* Local functions.  */
45
 
46
static int typecmp (int staticp, struct type *t1[], value_ptr t2[]);
47
 
48
static CORE_ADDR find_function_addr (value_ptr, struct type **);
49
static value_ptr value_arg_coerce (value_ptr, struct type *, int);
50
 
51
 
52
static CORE_ADDR value_push (CORE_ADDR, value_ptr);
53
 
54
static value_ptr search_struct_field (char *, value_ptr, int,
55
                                      struct type *, int);
56
 
57
static value_ptr search_struct_method (char *, value_ptr *,
58
                                       value_ptr *,
59
                                       int, int *, struct type *);
60
 
61
static int check_field_in (struct type *, const char *);
62
 
63
static CORE_ADDR allocate_space_in_inferior (int);
64
 
65
static value_ptr cast_into_complex (struct type *, value_ptr);
66
 
67
static struct fn_field *find_method_list (value_ptr * argp, char *method,
68
                                          int offset, int *static_memfuncp,
69
                                          struct type *type, int *num_fns,
70
                                          struct type **basetype,
71
                                          int *boffset);
72
 
73
void _initialize_valops (void);
74
 
75
/* Flag for whether we want to abandon failed expression evals by default.  */
76
 
77
#if 0
78
static int auto_abandon = 0;
79
#endif
80
 
81
int overload_resolution = 0;
82
 
83
/* This boolean tells what gdb should do if a signal is received while in
84
   a function called from gdb (call dummy).  If set, gdb unwinds the stack
85
   and restore the context to what as it was before the call.
86
   The default is to stop in the frame where the signal was received. */
87
 
88
int unwind_on_signal_p = 0;
89
 
90
 
91
 
92
/* Find the address of function name NAME in the inferior.  */
93
 
94
value_ptr
95
find_function_in_inferior (char *name)
96
{
97
  register struct symbol *sym;
98
  sym = lookup_symbol (name, 0, VAR_NAMESPACE, 0, NULL);
99
  if (sym != NULL)
100
    {
101
      if (SYMBOL_CLASS (sym) != LOC_BLOCK)
102
        {
103
          error ("\"%s\" exists in this program but is not a function.",
104
                 name);
105
        }
106
      return value_of_variable (sym, NULL);
107
    }
108
  else
109
    {
110
      struct minimal_symbol *msymbol = lookup_minimal_symbol (name, NULL, NULL);
111
      if (msymbol != NULL)
112
        {
113
          struct type *type;
114
          CORE_ADDR maddr;
115
          type = lookup_pointer_type (builtin_type_char);
116
          type = lookup_function_type (type);
117
          type = lookup_pointer_type (type);
118
          maddr = SYMBOL_VALUE_ADDRESS (msymbol);
119
          return value_from_pointer (type, maddr);
120
        }
121
      else
122
        {
123
          if (!target_has_execution)
124
            error ("evaluation of this expression requires the target program to be active");
125
          else
126
            error ("evaluation of this expression requires the program to have a function \"%s\".", name);
127
        }
128
    }
129
}
130
 
131
/* Allocate NBYTES of space in the inferior using the inferior's malloc
132
   and return a value that is a pointer to the allocated space. */
133
 
134
value_ptr
135
value_allocate_space_in_inferior (int len)
136
{
137
  value_ptr blocklen;
138
  register value_ptr val = find_function_in_inferior ("malloc");
139
 
140
  blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
141
  val = call_function_by_hand (val, 1, &blocklen);
142
  if (value_logical_not (val))
143
    {
144
      if (!target_has_execution)
145
        error ("No memory available to program now: you need to start the target first");
146
      else
147
        error ("No memory available to program: call to malloc failed");
148
    }
149
  return val;
150
}
151
 
152
static CORE_ADDR
153
allocate_space_in_inferior (int len)
154
{
155
  return value_as_long (value_allocate_space_in_inferior (len));
156
}
157
 
158
/* Cast value ARG2 to type TYPE and return as a value.
159
   More general than a C cast: accepts any two types of the same length,
160
   and if ARG2 is an lvalue it can be cast into anything at all.  */
161
/* In C++, casts may change pointer or object representations.  */
162
 
163
value_ptr
164
value_cast (struct type *type, register value_ptr arg2)
165
{
166
  register enum type_code code1;
167
  register enum type_code code2;
168
  register int scalar;
169
  struct type *type2;
170
 
171
  int convert_to_boolean = 0;
172
 
173
  if (VALUE_TYPE (arg2) == type)
174
    return arg2;
175
 
176
  CHECK_TYPEDEF (type);
177
  code1 = TYPE_CODE (type);
178
  COERCE_REF (arg2);
179
  type2 = check_typedef (VALUE_TYPE (arg2));
180
 
181
  /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
182
     is treated like a cast to (TYPE [N])OBJECT,
183
     where N is sizeof(OBJECT)/sizeof(TYPE). */
184
  if (code1 == TYPE_CODE_ARRAY)
185
    {
186
      struct type *element_type = TYPE_TARGET_TYPE (type);
187
      unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
188
      if (element_length > 0
189
        && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
190
        {
191
          struct type *range_type = TYPE_INDEX_TYPE (type);
192
          int val_length = TYPE_LENGTH (type2);
193
          LONGEST low_bound, high_bound, new_length;
194
          if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
195
            low_bound = 0, high_bound = 0;
196
          new_length = val_length / element_length;
197
          if (val_length % element_length != 0)
198
            warning ("array element type size does not divide object size in cast");
199
          /* FIXME-type-allocation: need a way to free this type when we are
200
             done with it.  */
201
          range_type = create_range_type ((struct type *) NULL,
202
                                          TYPE_TARGET_TYPE (range_type),
203
                                          low_bound,
204
                                          new_length + low_bound - 1);
205
          VALUE_TYPE (arg2) = create_array_type ((struct type *) NULL,
206
                                                 element_type, range_type);
207
          return arg2;
208
        }
209
    }
210
 
211
  if (current_language->c_style_arrays
212
      && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
213
    arg2 = value_coerce_array (arg2);
214
 
215
  if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
216
    arg2 = value_coerce_function (arg2);
217
 
218
  type2 = check_typedef (VALUE_TYPE (arg2));
219
  COERCE_VARYING_ARRAY (arg2, type2);
220
  code2 = TYPE_CODE (type2);
221
 
222
  if (code1 == TYPE_CODE_COMPLEX)
223
    return cast_into_complex (type, arg2);
224
  if (code1 == TYPE_CODE_BOOL)
225
    {
226
      code1 = TYPE_CODE_INT;
227
      convert_to_boolean = 1;
228
    }
229
  if (code1 == TYPE_CODE_CHAR)
230
    code1 = TYPE_CODE_INT;
231
  if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
232
    code2 = TYPE_CODE_INT;
233
 
234
  scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
235
            || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
236
 
237
  if (code1 == TYPE_CODE_STRUCT
238
      && code2 == TYPE_CODE_STRUCT
239
      && TYPE_NAME (type) != 0)
240
    {
241
      /* Look in the type of the source to see if it contains the
242
         type of the target as a superclass.  If so, we'll need to
243
         offset the object in addition to changing its type.  */
244
      value_ptr v = search_struct_field (type_name_no_tag (type),
245
                                         arg2, 0, type2, 1);
246
      if (v)
247
        {
248
          VALUE_TYPE (v) = type;
249
          return v;
250
        }
251
    }
252
  if (code1 == TYPE_CODE_FLT && scalar)
253
    return value_from_double (type, value_as_double (arg2));
254
  else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
255
            || code1 == TYPE_CODE_RANGE)
256
           && (scalar || code2 == TYPE_CODE_PTR))
257
    {
258
      LONGEST longest;
259
 
260
      if (hp_som_som_object_present &&  /* if target compiled by HP aCC */
261
          (code2 == TYPE_CODE_PTR))
262
        {
263
          unsigned int *ptr;
264
          value_ptr retvalp;
265
 
266
          switch (TYPE_CODE (TYPE_TARGET_TYPE (type2)))
267
            {
268
              /* With HP aCC, pointers to data members have a bias */
269
            case TYPE_CODE_MEMBER:
270
              retvalp = value_from_longest (type, value_as_long (arg2));
271
              /* force evaluation */
272
              ptr = (unsigned int *) VALUE_CONTENTS (retvalp);
273
              *ptr &= ~0x20000000;      /* zap 29th bit to remove bias */
274
              return retvalp;
275
 
276
              /* While pointers to methods don't really point to a function */
277
            case TYPE_CODE_METHOD:
278
              error ("Pointers to methods not supported with HP aCC");
279
 
280
            default:
281
              break;            /* fall out and go to normal handling */
282
            }
283
        }
284
      longest = value_as_long (arg2);
285
      return value_from_longest (type, convert_to_boolean ?
286
                                 (LONGEST) (longest ? 1 : 0) : longest);
287
    }
288
  else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT  ||
289
                                      code2 == TYPE_CODE_ENUM ||
290
                                      code2 == TYPE_CODE_RANGE))
291
    {
292
      /* TYPE_LENGTH (type) is the length of a pointer, but we really
293
         want the length of an address! -- we are really dealing with
294
         addresses (i.e., gdb representations) not pointers (i.e.,
295
         target representations) here.
296
 
297
         This allows things like "print *(int *)0x01000234" to work
298
         without printing a misleading message -- which would
299
         otherwise occur when dealing with a target having two byte
300
         pointers and four byte addresses.  */
301
 
302
      int addr_bit = TARGET_ADDR_BIT;
303
 
304
      LONGEST longest = value_as_long (arg2);
305
      if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
306
        {
307
          if (longest >= ((LONGEST) 1 << addr_bit)
308
              || longest <= -((LONGEST) 1 << addr_bit))
309
            warning ("value truncated");
310
        }
311
      return value_from_longest (type, longest);
312
    }
313
  else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
314
    {
315
      if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
316
        {
317
          struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
318
          struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
319
          if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
320
              && TYPE_CODE (t2) == TYPE_CODE_STRUCT
321
              && !value_logical_not (arg2))
322
            {
323
              value_ptr v;
324
 
325
              /* Look in the type of the source to see if it contains the
326
                 type of the target as a superclass.  If so, we'll need to
327
                 offset the pointer rather than just change its type.  */
328
              if (TYPE_NAME (t1) != NULL)
329
                {
330
                  v = search_struct_field (type_name_no_tag (t1),
331
                                           value_ind (arg2), 0, t2, 1);
332
                  if (v)
333
                    {
334
                      v = value_addr (v);
335
                      VALUE_TYPE (v) = type;
336
                      return v;
337
                    }
338
                }
339
 
340
              /* Look in the type of the target to see if it contains the
341
                 type of the source as a superclass.  If so, we'll need to
342
                 offset the pointer rather than just change its type.
343
                 FIXME: This fails silently with virtual inheritance.  */
344
              if (TYPE_NAME (t2) != NULL)
345
                {
346
                  v = search_struct_field (type_name_no_tag (t2),
347
                                       value_zero (t1, not_lval), 0, t1, 1);
348
                  if (v)
349
                    {
350
                      value_ptr v2 = value_ind (arg2);
351
                      VALUE_ADDRESS (v2) -= VALUE_ADDRESS (v)
352
                        + VALUE_OFFSET (v);
353
 
354
                      /* JYG: adjust the new pointer value and
355
                         embedded offset. */
356
                      v2->aligner.contents[0] -=  VALUE_EMBEDDED_OFFSET (v);
357
                      VALUE_EMBEDDED_OFFSET (v2) = 0;
358
 
359
                      v2 = value_addr (v2);
360
                      VALUE_TYPE (v2) = type;
361
                      return v2;
362
                    }
363
                }
364
            }
365
          /* No superclass found, just fall through to change ptr type.  */
366
        }
367
      VALUE_TYPE (arg2) = type;
368
      arg2 = value_change_enclosing_type (arg2, type);
369
      VALUE_POINTED_TO_OFFSET (arg2) = 0;        /* pai: chk_val */
370
      return arg2;
371
    }
372
  else if (chill_varying_type (type))
373
    {
374
      struct type *range1, *range2, *eltype1, *eltype2;
375
      value_ptr val;
376
      int count1, count2;
377
      LONGEST low_bound, high_bound;
378
      char *valaddr, *valaddr_data;
379
      /* For lint warning about eltype2 possibly uninitialized: */
380
      eltype2 = NULL;
381
      if (code2 == TYPE_CODE_BITSTRING)
382
        error ("not implemented: converting bitstring to varying type");
383
      if ((code2 != TYPE_CODE_ARRAY && code2 != TYPE_CODE_STRING)
384
          || (eltype1 = check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1))),
385
              eltype2 = check_typedef (TYPE_TARGET_TYPE (type2)),
386
              (TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2)
387
      /* || TYPE_CODE (eltype1) != TYPE_CODE (eltype2) */ )))
388
        error ("Invalid conversion to varying type");
389
      range1 = TYPE_FIELD_TYPE (TYPE_FIELD_TYPE (type, 1), 0);
390
      range2 = TYPE_FIELD_TYPE (type2, 0);
391
      if (get_discrete_bounds (range1, &low_bound, &high_bound) < 0)
392
        count1 = -1;
393
      else
394
        count1 = high_bound - low_bound + 1;
395
      if (get_discrete_bounds (range2, &low_bound, &high_bound) < 0)
396
        count1 = -1, count2 = 0; /* To force error before */
397
      else
398
        count2 = high_bound - low_bound + 1;
399
      if (count2 > count1)
400
        error ("target varying type is too small");
401
      val = allocate_value (type);
402
      valaddr = VALUE_CONTENTS_RAW (val);
403
      valaddr_data = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
404
      /* Set val's __var_length field to count2. */
405
      store_signed_integer (valaddr, TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)),
406
                            count2);
407
      /* Set the __var_data field to count2 elements copied from arg2. */
408
      memcpy (valaddr_data, VALUE_CONTENTS (arg2),
409
              count2 * TYPE_LENGTH (eltype2));
410
      /* Zero the rest of the __var_data field of val. */
411
      memset (valaddr_data + count2 * TYPE_LENGTH (eltype2), '\0',
412
              (count1 - count2) * TYPE_LENGTH (eltype2));
413
      return val;
414
    }
415
  else if (VALUE_LVAL (arg2) == lval_memory)
416
    {
417
      return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2),
418
                            VALUE_BFD_SECTION (arg2));
419
    }
420
  else if (code1 == TYPE_CODE_VOID)
421
    {
422
      return value_zero (builtin_type_void, not_lval);
423
    }
424
  else
425
    {
426
      error ("Invalid cast.");
427
      return 0;
428
    }
429
}
430
 
431
/* Create a value of type TYPE that is zero, and return it.  */
432
 
433
value_ptr
434
value_zero (struct type *type, enum lval_type lv)
435
{
436
  register value_ptr val = allocate_value (type);
437
 
438
  memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (check_typedef (type)));
439
  VALUE_LVAL (val) = lv;
440
 
441
  return val;
442
}
443
 
444
/* Return a value with type TYPE located at ADDR.
445
 
446
   Call value_at only if the data needs to be fetched immediately;
447
   if we can be 'lazy' and defer the fetch, perhaps indefinately, call
448
   value_at_lazy instead.  value_at_lazy simply records the address of
449
   the data and sets the lazy-evaluation-required flag.  The lazy flag
450
   is tested in the VALUE_CONTENTS macro, which is used if and when
451
   the contents are actually required.
452
 
453
   Note: value_at does *NOT* handle embedded offsets; perform such
454
   adjustments before or after calling it. */
455
 
456
value_ptr
457
value_at (struct type *type, CORE_ADDR addr, asection *sect)
458
{
459
  register value_ptr val;
460
 
461
  if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
462
    error ("Attempt to dereference a generic pointer.");
463
 
464
  val = allocate_value (type);
465
 
466
  if (GDB_TARGET_IS_D10V
467
      && TYPE_CODE (type) == TYPE_CODE_PTR
468
      && TYPE_TARGET_TYPE (type)
469
      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
470
    {
471
      /* pointer to function */
472
      unsigned long num;
473
      unsigned short snum;
474
      snum = read_memory_unsigned_integer (addr, 2);
475
      num = D10V_MAKE_IADDR (snum);
476
      store_address (VALUE_CONTENTS_RAW (val), 4, num);
477
    }
478
  else if (GDB_TARGET_IS_D10V
479
           && TYPE_CODE (type) == TYPE_CODE_PTR)
480
    {
481
      /* pointer to data */
482
      unsigned long num;
483
      unsigned short snum;
484
      snum = read_memory_unsigned_integer (addr, 2);
485
      num = D10V_MAKE_DADDR (snum);
486
      store_address (VALUE_CONTENTS_RAW (val), 4, num);
487
    }
488
  else
489
    read_memory (addr, VALUE_CONTENTS_ALL_RAW (val), TYPE_LENGTH (type));
490
 
491
  VALUE_LVAL (val) = lval_memory;
492
  VALUE_ADDRESS (val) = addr;
493
  VALUE_BFD_SECTION (val) = sect;
494
 
495
  return val;
496
}
497
 
498
/* Return a lazy value with type TYPE located at ADDR (cf. value_at).  */
499
 
500
value_ptr
501
value_at_lazy (struct type *type, CORE_ADDR addr, asection *sect)
502
{
503
  register value_ptr val;
504
 
505
  if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
506
    error ("Attempt to dereference a generic pointer.");
507
 
508
  val = allocate_value (type);
509
 
510
  VALUE_LVAL (val) = lval_memory;
511
  VALUE_ADDRESS (val) = addr;
512
  VALUE_LAZY (val) = 1;
513
  VALUE_BFD_SECTION (val) = sect;
514
 
515
  return val;
516
}
517
 
518
/* Called only from the VALUE_CONTENTS and VALUE_CONTENTS_ALL macros,
519
   if the current data for a variable needs to be loaded into
520
   VALUE_CONTENTS(VAL).  Fetches the data from the user's process, and
521
   clears the lazy flag to indicate that the data in the buffer is valid.
522
 
523
   If the value is zero-length, we avoid calling read_memory, which would
524
   abort.  We mark the value as fetched anyway -- all 0 bytes of it.
525
 
526
   This function returns a value because it is used in the VALUE_CONTENTS
527
   macro as part of an expression, where a void would not work.  The
528
   value is ignored.  */
529
 
530
int
531
value_fetch_lazy (register value_ptr val)
532
{
533
  CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
534
  int length = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val));
535
 
536
  struct type *type = VALUE_TYPE (val);
537
  if (GDB_TARGET_IS_D10V
538
      && TYPE_CODE (type) == TYPE_CODE_PTR
539
      && TYPE_TARGET_TYPE (type)
540
      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
541
    {
542
      /* pointer to function */
543
      unsigned long num;
544
      unsigned short snum;
545
      snum = read_memory_unsigned_integer (addr, 2);
546
      num = D10V_MAKE_IADDR (snum);
547
      store_address (VALUE_CONTENTS_RAW (val), 4, num);
548
    }
549
  else if (GDB_TARGET_IS_D10V
550
           && TYPE_CODE (type) == TYPE_CODE_PTR)
551
    {
552
      /* pointer to data */
553
      unsigned long num;
554
      unsigned short snum;
555
      snum = read_memory_unsigned_integer (addr, 2);
556
      num = D10V_MAKE_DADDR (snum);
557
      store_address (VALUE_CONTENTS_RAW (val), 4, num);
558
    }
559
  else if (length)
560
    read_memory (addr, VALUE_CONTENTS_ALL_RAW (val), length);
561
 
562
  VALUE_LAZY (val) = 0;
563
  return 0;
564
}
565
 
566
 
567
/* Store the contents of FROMVAL into the location of TOVAL.
568
   Return a new value with the location of TOVAL and contents of FROMVAL.  */
569
 
570
value_ptr
571
value_assign (register value_ptr toval, register value_ptr fromval)
572
{
573
  register struct type *type;
574
  register value_ptr val;
575
  char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
576
  int use_buffer = 0;
577
 
578
  if (!toval->modifiable)
579
    error ("Left operand of assignment is not a modifiable lvalue.");
580
 
581
  COERCE_REF (toval);
582
 
583
  type = VALUE_TYPE (toval);
584
  if (VALUE_LVAL (toval) != lval_internalvar)
585
    fromval = value_cast (type, fromval);
586
  else
587
    COERCE_ARRAY (fromval);
588
  CHECK_TYPEDEF (type);
589
 
590
  /* If TOVAL is a special machine register requiring conversion
591
     of program values to a special raw format,
592
     convert FROMVAL's contents now, with result in `raw_buffer',
593
     and set USE_BUFFER to the number of bytes to write.  */
594
 
595
  if (VALUE_REGNO (toval) >= 0)
596
    {
597
      int regno = VALUE_REGNO (toval);
598
      if (REGISTER_CONVERTIBLE (regno))
599
        {
600
          struct type *fromtype = check_typedef (VALUE_TYPE (fromval));
601
          REGISTER_CONVERT_TO_RAW (fromtype, regno,
602
                                   VALUE_CONTENTS (fromval), raw_buffer);
603
          use_buffer = REGISTER_RAW_SIZE (regno);
604
        }
605
    }
606
 
607
  switch (VALUE_LVAL (toval))
608
    {
609
    case lval_internalvar:
610
      set_internalvar (VALUE_INTERNALVAR (toval), fromval);
611
      val = value_copy (VALUE_INTERNALVAR (toval)->value);
612
      val = value_change_enclosing_type (val, VALUE_ENCLOSING_TYPE (fromval));
613
      VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (fromval);
614
      VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (fromval);
615
      return val;
616
 
617
    case lval_internalvar_component:
618
      set_internalvar_component (VALUE_INTERNALVAR (toval),
619
                                 VALUE_OFFSET (toval),
620
                                 VALUE_BITPOS (toval),
621
                                 VALUE_BITSIZE (toval),
622
                                 fromval);
623
      break;
624
 
625
    case lval_memory:
626
      {
627
        char *dest_buffer;
628
        CORE_ADDR changed_addr;
629
        int changed_len;
630
 
631
        if (VALUE_BITSIZE (toval))
632
          {
633
            char buffer[sizeof (LONGEST)];
634
            /* We assume that the argument to read_memory is in units of
635
               host chars.  FIXME:  Is that correct?  */
636
            changed_len = (VALUE_BITPOS (toval)
637
                           + VALUE_BITSIZE (toval)
638
                           + HOST_CHAR_BIT - 1)
639
              / HOST_CHAR_BIT;
640
 
641
            if (changed_len > (int) sizeof (LONGEST))
642
              error ("Can't handle bitfields which don't fit in a %d bit word.",
643
                     sizeof (LONGEST) * HOST_CHAR_BIT);
644
 
645
            read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
646
                         buffer, changed_len);
647
            modify_field (buffer, value_as_long (fromval),
648
                          VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
649
            changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
650
            dest_buffer = buffer;
651
          }
652
        else if (use_buffer)
653
          {
654
            changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
655
            changed_len = use_buffer;
656
            dest_buffer = raw_buffer;
657
          }
658
        else
659
          {
660
            changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
661
            changed_len = TYPE_LENGTH (type);
662
            dest_buffer = VALUE_CONTENTS (fromval);
663
          }
664
 
665
        write_memory (changed_addr, dest_buffer, changed_len);
666
        if (memory_changed_hook)
667
          memory_changed_hook (changed_addr, changed_len);
668
      }
669
      break;
670
 
671
    case lval_register:
672
      if (VALUE_BITSIZE (toval))
673
        {
674
          char buffer[sizeof (LONGEST)];
675
          int len =
676
                REGISTER_RAW_SIZE (VALUE_REGNO (toval)) - VALUE_OFFSET (toval);
677
 
678
          if (len > (int) sizeof (LONGEST))
679
            error ("Can't handle bitfields in registers larger than %d bits.",
680
                   sizeof (LONGEST) * HOST_CHAR_BIT);
681
 
682
          if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
683
              > len * HOST_CHAR_BIT)
684
            /* Getting this right would involve being very careful about
685
               byte order.  */
686
            error ("Can't assign to bitfields that cross register "
687
                   "boundaries.");
688
 
689
          read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
690
                               buffer, len);
691
          modify_field (buffer, value_as_long (fromval),
692
                        VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
693
          write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
694
                                buffer, len);
695
        }
696
      else if (use_buffer)
697
        write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
698
                              raw_buffer, use_buffer);
699
      else
700
        {
701
          /* Do any conversion necessary when storing this type to more
702
             than one register.  */
703
#ifdef REGISTER_CONVERT_FROM_TYPE
704
          memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
705
          REGISTER_CONVERT_FROM_TYPE (VALUE_REGNO (toval), type, raw_buffer);
706
          write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
707
                                raw_buffer, TYPE_LENGTH (type));
708
#else
709
          write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
710
                              VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
711
#endif
712
        }
713
      /* Assigning to the stack pointer, frame pointer, and other
714
         (architecture and calling convention specific) registers may
715
         cause the frame cache to be out of date.  We just do this
716
         on all assignments to registers for simplicity; I doubt the slowdown
717
         matters.  */
718
      reinit_frame_cache ();
719
      break;
720
 
721
    case lval_reg_frame_relative:
722
      {
723
        /* value is stored in a series of registers in the frame
724
           specified by the structure.  Copy that value out, modify
725
           it, and copy it back in.  */
726
        int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
727
        int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
728
        int byte_offset = VALUE_OFFSET (toval) % reg_size;
729
        int reg_offset = VALUE_OFFSET (toval) / reg_size;
730
        int amount_copied;
731
 
732
        /* Make the buffer large enough in all cases.  */
733
        char *buffer = (char *) alloca (amount_to_copy
734
                                        + sizeof (LONGEST)
735
                                        + MAX_REGISTER_RAW_SIZE);
736
 
737
        int regno;
738
        struct frame_info *frame;
739
 
740
        /* Figure out which frame this is in currently.  */
741
        for (frame = get_current_frame ();
742
             frame && FRAME_FP (frame) != VALUE_FRAME (toval);
743
             frame = get_prev_frame (frame))
744
          ;
745
 
746
        if (!frame)
747
          error ("Value being assigned to is no longer active.");
748
 
749
        amount_to_copy += (reg_size - amount_to_copy % reg_size);
750
 
751
        /* Copy it out.  */
752
        for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
753
              amount_copied = 0);
754
             amount_copied < amount_to_copy;
755
             amount_copied += reg_size, regno++)
756
          {
757
            get_saved_register (buffer + amount_copied,
758
                                (int *) NULL, (CORE_ADDR *) NULL,
759
                                frame, regno, (enum lval_type *) NULL);
760
          }
761
 
762
        /* Modify what needs to be modified.  */
763
        if (VALUE_BITSIZE (toval))
764
          modify_field (buffer + byte_offset,
765
                        value_as_long (fromval),
766
                        VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
767
        else if (use_buffer)
768
          memcpy (buffer + byte_offset, raw_buffer, use_buffer);
769
        else
770
          memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
771
                  TYPE_LENGTH (type));
772
 
773
        /* Copy it back.  */
774
        for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
775
              amount_copied = 0);
776
             amount_copied < amount_to_copy;
777
             amount_copied += reg_size, regno++)
778
          {
779
            enum lval_type lval;
780
            CORE_ADDR addr;
781
            int optim;
782
 
783
            /* Just find out where to put it.  */
784
            get_saved_register ((char *) NULL,
785
                                &optim, &addr, frame, regno, &lval);
786
 
787
            if (optim)
788
              error ("Attempt to assign to a value that was optimized out.");
789
            if (lval == lval_memory)
790
              write_memory (addr, buffer + amount_copied, reg_size);
791
            else if (lval == lval_register)
792
              write_register_bytes (addr, buffer + amount_copied, reg_size);
793
            else
794
              error ("Attempt to assign to an unmodifiable value.");
795
          }
796
 
797
        if (register_changed_hook)
798
          register_changed_hook (-1);
799
      }
800
      break;
801
 
802
 
803
    default:
804
      error ("Left operand of assignment is not an lvalue.");
805
    }
806
 
807
  /* If the field does not entirely fill a LONGEST, then zero the sign bits.
808
     If the field is signed, and is negative, then sign extend. */
809
  if ((VALUE_BITSIZE (toval) > 0)
810
      && (VALUE_BITSIZE (toval) < 8 * (int) sizeof (LONGEST)))
811
    {
812
      LONGEST fieldval = value_as_long (fromval);
813
      LONGEST valmask = (((ULONGEST) 1) << VALUE_BITSIZE (toval)) - 1;
814
 
815
      fieldval &= valmask;
816
      if (!TYPE_UNSIGNED (type) && (fieldval & (valmask ^ (valmask >> 1))))
817
        fieldval |= ~valmask;
818
 
819
      fromval = value_from_longest (type, fieldval);
820
    }
821
 
822
  val = value_copy (toval);
823
  memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
824
          TYPE_LENGTH (type));
825
  VALUE_TYPE (val) = type;
826
  val = value_change_enclosing_type (val, VALUE_ENCLOSING_TYPE (fromval));
827
  VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (fromval);
828
  VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (fromval);
829
 
830
  return val;
831
}
832
 
833
/* Extend a value VAL to COUNT repetitions of its type.  */
834
 
835
value_ptr
836
value_repeat (value_ptr arg1, int count)
837
{
838
  register value_ptr val;
839
 
840
  if (VALUE_LVAL (arg1) != lval_memory)
841
    error ("Only values in memory can be extended with '@'.");
842
  if (count < 1)
843
    error ("Invalid number %d of repetitions.", count);
844
 
845
  val = allocate_repeat_value (VALUE_ENCLOSING_TYPE (arg1), count);
846
 
847
  read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
848
               VALUE_CONTENTS_ALL_RAW (val),
849
               TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val)));
850
  VALUE_LVAL (val) = lval_memory;
851
  VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
852
 
853
  return val;
854
}
855
 
856
value_ptr
857
value_of_variable (struct symbol *var, struct block *b)
858
{
859
  value_ptr val;
860
  struct frame_info *frame = NULL;
861
 
862
  if (!b)
863
    frame = NULL;               /* Use selected frame.  */
864
  else if (symbol_read_needs_frame (var))
865
    {
866
      frame = block_innermost_frame (b);
867
      if (!frame)
868
        {
869
          if (BLOCK_FUNCTION (b)
870
              && SYMBOL_SOURCE_NAME (BLOCK_FUNCTION (b)))
871
            error ("No frame is currently executing in block %s.",
872
                   SYMBOL_SOURCE_NAME (BLOCK_FUNCTION (b)));
873
          else
874
            error ("No frame is currently executing in specified block");
875
        }
876
    }
877
 
878
  val = read_var_value (var, frame);
879
  if (!val)
880
    error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
881
 
882
  return val;
883
}
884
 
885
/* Given a value which is an array, return a value which is a pointer to its
886
   first element, regardless of whether or not the array has a nonzero lower
887
   bound.
888
 
889
   FIXME:  A previous comment here indicated that this routine should be
890
   substracting the array's lower bound.  It's not clear to me that this
891
   is correct.  Given an array subscripting operation, it would certainly
892
   work to do the adjustment here, essentially computing:
893
 
894
   (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
895
 
896
   However I believe a more appropriate and logical place to account for
897
   the lower bound is to do so in value_subscript, essentially computing:
898
 
899
   (&array[0] + ((index - lowerbound) * sizeof array[0]))
900
 
901
   As further evidence consider what would happen with operations other
902
   than array subscripting, where the caller would get back a value that
903
   had an address somewhere before the actual first element of the array,
904
   and the information about the lower bound would be lost because of
905
   the coercion to pointer type.
906
 */
907
 
908
value_ptr
909
value_coerce_array (value_ptr arg1)
910
{
911
  register struct type *type = check_typedef (VALUE_TYPE (arg1));
912
 
913
  if (VALUE_LVAL (arg1) != lval_memory)
914
    error ("Attempt to take address of value not located in memory.");
915
 
916
  return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
917
                             (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
918
}
919
 
920
/* Given a value which is a function, return a value which is a pointer
921
   to it.  */
922
 
923
value_ptr
924
value_coerce_function (value_ptr arg1)
925
{
926
  value_ptr retval;
927
 
928
  if (VALUE_LVAL (arg1) != lval_memory)
929
    error ("Attempt to take address of value not located in memory.");
930
 
931
  retval = value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1)),
932
                               (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
933
  VALUE_BFD_SECTION (retval) = VALUE_BFD_SECTION (arg1);
934
  return retval;
935
}
936
 
937
/* Return a pointer value for the object for which ARG1 is the contents.  */
938
 
939
value_ptr
940
value_addr (value_ptr arg1)
941
{
942
  value_ptr arg2;
943
 
944
  struct type *type = check_typedef (VALUE_TYPE (arg1));
945
  if (TYPE_CODE (type) == TYPE_CODE_REF)
946
    {
947
      /* Copy the value, but change the type from (T&) to (T*).
948
         We keep the same location information, which is efficient,
949
         and allows &(&X) to get the location containing the reference. */
950
      arg2 = value_copy (arg1);
951
      VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
952
      return arg2;
953
    }
954
  if (TYPE_CODE (type) == TYPE_CODE_FUNC)
955
    return value_coerce_function (arg1);
956
 
957
  if (VALUE_LVAL (arg1) != lval_memory)
958
    error ("Attempt to take address of value not located in memory.");
959
 
960
  /* Get target memory address */
961
  arg2 = value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1)),
962
                             (VALUE_ADDRESS (arg1)
963
                              + VALUE_OFFSET (arg1)
964
                              + VALUE_EMBEDDED_OFFSET (arg1)));
965
 
966
  /* This may be a pointer to a base subobject; so remember the
967
     full derived object's type ... */
968
  arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (VALUE_ENCLOSING_TYPE (arg1)));
969
  /* ... and also the relative position of the subobject in the full object */
970
  VALUE_POINTED_TO_OFFSET (arg2) = VALUE_EMBEDDED_OFFSET (arg1);
971
  VALUE_BFD_SECTION (arg2) = VALUE_BFD_SECTION (arg1);
972
  return arg2;
973
}
974
 
975
/* Given a value of a pointer type, apply the C unary * operator to it.  */
976
 
977
value_ptr
978
value_ind (value_ptr arg1)
979
{
980
  struct type *base_type;
981
  value_ptr arg2;
982
 
983
  COERCE_ARRAY (arg1);
984
 
985
  base_type = check_typedef (VALUE_TYPE (arg1));
986
 
987
  if (TYPE_CODE (base_type) == TYPE_CODE_MEMBER)
988
    error ("not implemented: member types in value_ind");
989
 
990
  /* Allow * on an integer so we can cast it to whatever we want.
991
     This returns an int, which seems like the most C-like thing
992
     to do.  "long long" variables are rare enough that
993
     BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
994
  if (TYPE_CODE (base_type) == TYPE_CODE_INT)
995
    return value_at (builtin_type_int,
996
                     (CORE_ADDR) value_as_long (arg1),
997
                     VALUE_BFD_SECTION (arg1));
998
  else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
999
    {
1000
      struct type *enc_type;
1001
      /* We may be pointing to something embedded in a larger object */
1002
      /* Get the real type of the enclosing object */
1003
      enc_type = check_typedef (VALUE_ENCLOSING_TYPE (arg1));
1004
      enc_type = TYPE_TARGET_TYPE (enc_type);
1005
      /* Retrieve the enclosing object pointed to */
1006
      arg2 = value_at_lazy (enc_type,
1007
                   value_as_pointer (arg1) - VALUE_POINTED_TO_OFFSET (arg1),
1008
                            VALUE_BFD_SECTION (arg1));
1009
      /* Re-adjust type */
1010
      VALUE_TYPE (arg2) = TYPE_TARGET_TYPE (base_type);
1011
      /* Add embedding info */
1012
      arg2 = value_change_enclosing_type (arg2, enc_type);
1013
      VALUE_EMBEDDED_OFFSET (arg2) = VALUE_POINTED_TO_OFFSET (arg1);
1014
 
1015
      /* We may be pointing to an object of some derived type */
1016
      arg2 = value_full_object (arg2, NULL, 0, 0, 0);
1017
      return arg2;
1018
    }
1019
 
1020
  error ("Attempt to take contents of a non-pointer value.");
1021
  return 0;                      /* For lint -- never reached */
1022
}
1023
 
1024
/* Pushing small parts of stack frames.  */
1025
 
1026
/* Push one word (the size of object that a register holds).  */
1027
 
1028
CORE_ADDR
1029
push_word (CORE_ADDR sp, ULONGEST word)
1030
{
1031
  register int len = REGISTER_SIZE;
1032
  char *buffer = alloca (MAX_REGISTER_RAW_SIZE);
1033
 
1034
  store_unsigned_integer (buffer, len, word);
1035
  if (INNER_THAN (1, 2))
1036
    {
1037
      /* stack grows downward */
1038
      sp -= len;
1039
      write_memory (sp, buffer, len);
1040
    }
1041
  else
1042
    {
1043
      /* stack grows upward */
1044
      write_memory (sp, buffer, len);
1045
      sp += len;
1046
    }
1047
 
1048
  return sp;
1049
}
1050
 
1051
/* Push LEN bytes with data at BUFFER.  */
1052
 
1053
CORE_ADDR
1054
push_bytes (CORE_ADDR sp, char *buffer, int len)
1055
{
1056
  if (INNER_THAN (1, 2))
1057
    {
1058
      /* stack grows downward */
1059
      sp -= len;
1060
      write_memory (sp, buffer, len);
1061
    }
1062
  else
1063
    {
1064
      /* stack grows upward */
1065
      write_memory (sp, buffer, len);
1066
      sp += len;
1067
    }
1068
 
1069
  return sp;
1070
}
1071
 
1072
#ifndef PARM_BOUNDARY
1073
#define PARM_BOUNDARY (0)
1074
#endif
1075
 
1076
/* Push onto the stack the specified value VALUE.  Pad it correctly for
1077
   it to be an argument to a function.  */
1078
 
1079
static CORE_ADDR
1080
value_push (register CORE_ADDR sp, value_ptr arg)
1081
{
1082
  register int len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg));
1083
  register int container_len = len;
1084
  register int offset;
1085
 
1086
  /* How big is the container we're going to put this value in?  */
1087
  if (PARM_BOUNDARY)
1088
    container_len = ((len + PARM_BOUNDARY / TARGET_CHAR_BIT - 1)
1089
                     & ~(PARM_BOUNDARY / TARGET_CHAR_BIT - 1));
1090
 
1091
  /* Are we going to put it at the high or low end of the container?  */
1092
  if (TARGET_BYTE_ORDER == BIG_ENDIAN)
1093
    offset = container_len - len;
1094
  else
1095
    offset = 0;
1096
 
1097
  if (INNER_THAN (1, 2))
1098
    {
1099
      /* stack grows downward */
1100
      sp -= container_len;
1101
      write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
1102
    }
1103
  else
1104
    {
1105
      /* stack grows upward */
1106
      write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
1107
      sp += container_len;
1108
    }
1109
 
1110
  return sp;
1111
}
1112
 
1113
#ifndef PUSH_ARGUMENTS
1114
#define PUSH_ARGUMENTS default_push_arguments
1115
#endif
1116
 
1117
CORE_ADDR
1118
default_push_arguments (int nargs, value_ptr *args, CORE_ADDR sp,
1119
                        int struct_return, CORE_ADDR struct_addr)
1120
{
1121
  /* ASSERT ( !struct_return); */
1122
  int i;
1123
  for (i = nargs - 1; i >= 0; i--)
1124
    sp = value_push (sp, args[i]);
1125
  return sp;
1126
}
1127
 
1128
 
1129
/* A default function for COERCE_FLOAT_TO_DOUBLE: do the coercion only
1130
   when we don't have any type for the argument at hand.  This occurs
1131
   when we have no debug info, or when passing varargs.
1132
 
1133
   This is an annoying default: the rule the compiler follows is to do
1134
   the standard promotions whenever there is no prototype in scope,
1135
   and almost all targets want this behavior.  But there are some old
1136
   architectures which want this odd behavior.  If you want to go
1137
   through them all and fix them, please do.  Modern gdbarch-style
1138
   targets may find it convenient to use standard_coerce_float_to_double.  */
1139
int
1140
default_coerce_float_to_double (struct type *formal, struct type *actual)
1141
{
1142
  return formal == NULL;
1143
}
1144
 
1145
 
1146
/* Always coerce floats to doubles when there is no prototype in scope.
1147
   If your architecture follows the standard type promotion rules for
1148
   calling unprototyped functions, your gdbarch init function can pass
1149
   this function to set_gdbarch_coerce_float_to_double to use its logic.  */
1150
int
1151
standard_coerce_float_to_double (struct type *formal, struct type *actual)
1152
{
1153
  return 1;
1154
}
1155
 
1156
 
1157
/* Perform the standard coercions that are specified
1158
   for arguments to be passed to C functions.
1159
 
1160
   If PARAM_TYPE is non-NULL, it is the expected parameter type.
1161
   IS_PROTOTYPED is non-zero if the function declaration is prototyped.  */
1162
 
1163
static value_ptr
1164
value_arg_coerce (value_ptr arg, struct type *param_type, int is_prototyped)
1165
{
1166
  register struct type *arg_type = check_typedef (VALUE_TYPE (arg));
1167
  register struct type *type
1168
  = param_type ? check_typedef (param_type) : arg_type;
1169
 
1170
  switch (TYPE_CODE (type))
1171
    {
1172
    case TYPE_CODE_REF:
1173
      if (TYPE_CODE (arg_type) != TYPE_CODE_REF)
1174
        {
1175
          arg = value_addr (arg);
1176
          VALUE_TYPE (arg) = param_type;
1177
          return arg;
1178
        }
1179
      break;
1180
    case TYPE_CODE_INT:
1181
    case TYPE_CODE_CHAR:
1182
    case TYPE_CODE_BOOL:
1183
    case TYPE_CODE_ENUM:
1184
      /* If we don't have a prototype, coerce to integer type if necessary.  */
1185
      if (!is_prototyped)
1186
        {
1187
          if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
1188
            type = builtin_type_int;
1189
        }
1190
      /* Currently all target ABIs require at least the width of an integer
1191
         type for an argument.  We may have to conditionalize the following
1192
         type coercion for future targets.  */
1193
      if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
1194
        type = builtin_type_int;
1195
      break;
1196
    case TYPE_CODE_FLT:
1197
      /* FIXME: We should always convert floats to doubles in the
1198
         non-prototyped case.  As many debugging formats include
1199
         no information about prototyping, we have to live with
1200
         COERCE_FLOAT_TO_DOUBLE for now.  */
1201
      if (!is_prototyped && COERCE_FLOAT_TO_DOUBLE (param_type, arg_type))
1202
        {
1203
          if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
1204
            type = builtin_type_double;
1205
          else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin_type_double))
1206
            type = builtin_type_long_double;
1207
        }
1208
      break;
1209
    case TYPE_CODE_FUNC:
1210
      type = lookup_pointer_type (type);
1211
      break;
1212
    case TYPE_CODE_ARRAY:
1213
      if (current_language->c_style_arrays)
1214
        type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1215
      break;
1216
    case TYPE_CODE_UNDEF:
1217
    case TYPE_CODE_PTR:
1218
    case TYPE_CODE_STRUCT:
1219
    case TYPE_CODE_UNION:
1220
    case TYPE_CODE_VOID:
1221
    case TYPE_CODE_SET:
1222
    case TYPE_CODE_RANGE:
1223
    case TYPE_CODE_STRING:
1224
    case TYPE_CODE_BITSTRING:
1225
    case TYPE_CODE_ERROR:
1226
    case TYPE_CODE_MEMBER:
1227
    case TYPE_CODE_METHOD:
1228
    case TYPE_CODE_COMPLEX:
1229
    default:
1230
      break;
1231
    }
1232
 
1233
  return value_cast (type, arg);
1234
}
1235
 
1236
/* Determine a function's address and its return type from its value.
1237
   Calls error() if the function is not valid for calling.  */
1238
 
1239
static CORE_ADDR
1240
find_function_addr (value_ptr function, struct type **retval_type)
1241
{
1242
  register struct type *ftype = check_typedef (VALUE_TYPE (function));
1243
  register enum type_code code = TYPE_CODE (ftype);
1244
  struct type *value_type;
1245
  CORE_ADDR funaddr;
1246
 
1247
  /* If it's a member function, just look at the function
1248
     part of it.  */
1249
 
1250
  /* Determine address to call.  */
1251
  if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
1252
    {
1253
      funaddr = VALUE_ADDRESS (function);
1254
      value_type = TYPE_TARGET_TYPE (ftype);
1255
    }
1256
  else if (code == TYPE_CODE_PTR)
1257
    {
1258
      funaddr = value_as_pointer (function);
1259
      ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
1260
      if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
1261
          || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
1262
        {
1263
          funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
1264
          value_type = TYPE_TARGET_TYPE (ftype);
1265
        }
1266
      else
1267
        value_type = builtin_type_int;
1268
    }
1269
  else if (code == TYPE_CODE_INT)
1270
    {
1271
      /* Handle the case of functions lacking debugging info.
1272
         Their values are characters since their addresses are char */
1273
      if (TYPE_LENGTH (ftype) == 1)
1274
        funaddr = value_as_pointer (value_addr (function));
1275
      else
1276
        /* Handle integer used as address of a function.  */
1277
        funaddr = (CORE_ADDR) value_as_long (function);
1278
 
1279
      value_type = builtin_type_int;
1280
    }
1281
  else
1282
    error ("Invalid data type for function to be called.");
1283
 
1284
  *retval_type = value_type;
1285
  return funaddr;
1286
}
1287
 
1288
/* All this stuff with a dummy frame may seem unnecessarily complicated
1289
   (why not just save registers in GDB?).  The purpose of pushing a dummy
1290
   frame which looks just like a real frame is so that if you call a
1291
   function and then hit a breakpoint (get a signal, etc), "backtrace"
1292
   will look right.  Whether the backtrace needs to actually show the
1293
   stack at the time the inferior function was called is debatable, but
1294
   it certainly needs to not display garbage.  So if you are contemplating
1295
   making dummy frames be different from normal frames, consider that.  */
1296
 
1297
/* Perform a function call in the inferior.
1298
   ARGS is a vector of values of arguments (NARGS of them).
1299
   FUNCTION is a value, the function to be called.
1300
   Returns a value representing what the function returned.
1301
   May fail to return, if a breakpoint or signal is hit
1302
   during the execution of the function.
1303
 
1304
   ARGS is modified to contain coerced values. */
1305
 
1306
static value_ptr hand_function_call (value_ptr function, int nargs,
1307
                                     value_ptr * args);
1308
static value_ptr
1309
hand_function_call (value_ptr function, int nargs, value_ptr *args)
1310
{
1311
  register CORE_ADDR sp;
1312
  register int i;
1313
  int rc;
1314
  CORE_ADDR start_sp;
1315
  /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
1316
     is in host byte order.  Before calling FIX_CALL_DUMMY, we byteswap it
1317
     and remove any extra bytes which might exist because ULONGEST is
1318
     bigger than REGISTER_SIZE.
1319
 
1320
     NOTE: This is pretty wierd, as the call dummy is actually a
1321
     sequence of instructions.  But CISC machines will have
1322
     to pack the instructions into REGISTER_SIZE units (and
1323
     so will RISC machines for which INSTRUCTION_SIZE is not
1324
     REGISTER_SIZE).
1325
 
1326
     NOTE: This is pretty stupid.  CALL_DUMMY should be in strict
1327
     target byte order. */
1328
 
1329
  static ULONGEST *dummy;
1330
  int sizeof_dummy1;
1331
  char *dummy1;
1332
  CORE_ADDR old_sp;
1333
  struct type *value_type;
1334
  unsigned char struct_return;
1335
  CORE_ADDR struct_addr = 0;
1336
  struct inferior_status *inf_status;
1337
  struct cleanup *old_chain;
1338
  CORE_ADDR funaddr;
1339
  int using_gcc;                /* Set to version of gcc in use, or zero if not gcc */
1340
  CORE_ADDR real_pc;
1341
  struct type *param_type = NULL;
1342
  struct type *ftype = check_typedef (SYMBOL_TYPE (function));
1343
 
1344
  dummy = alloca (SIZEOF_CALL_DUMMY_WORDS);
1345
  sizeof_dummy1 = REGISTER_SIZE * SIZEOF_CALL_DUMMY_WORDS / sizeof (ULONGEST);
1346
  dummy1 = alloca (sizeof_dummy1);
1347
  memcpy (dummy, CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS);
1348
 
1349
  if (!target_has_execution)
1350
    noprocess ();
1351
 
1352
  inf_status = save_inferior_status (1);
1353
  old_chain = make_cleanup_restore_inferior_status (inf_status);
1354
 
1355
  /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
1356
     (and POP_FRAME for restoring them).  (At least on most machines)
1357
     they are saved on the stack in the inferior.  */
1358
  PUSH_DUMMY_FRAME;
1359
 
1360
  old_sp = sp = read_sp ();
1361
 
1362
  if (INNER_THAN (1, 2))
1363
    {
1364
      /* Stack grows down */
1365
      sp -= sizeof_dummy1;
1366
      start_sp = sp;
1367
    }
1368
  else
1369
    {
1370
      /* Stack grows up */
1371
      start_sp = sp;
1372
      sp += sizeof_dummy1;
1373
    }
1374
 
1375
  funaddr = find_function_addr (function, &value_type);
1376
  CHECK_TYPEDEF (value_type);
1377
 
1378
  {
1379
    struct block *b = block_for_pc (funaddr);
1380
    /* If compiled without -g, assume GCC 2.  */
1381
    using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
1382
  }
1383
 
1384
  /* Are we returning a value using a structure return or a normal
1385
     value return? */
1386
 
1387
  struct_return = using_struct_return (function, funaddr, value_type,
1388
                                       using_gcc);
1389
 
1390
  /* Create a call sequence customized for this function
1391
     and the number of arguments for it.  */
1392
  for (i = 0; i < (int) (SIZEOF_CALL_DUMMY_WORDS / sizeof (dummy[0])); i++)
1393
    store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
1394
                            REGISTER_SIZE,
1395
                            (ULONGEST) dummy[i]);
1396
 
1397
#ifdef GDB_TARGET_IS_HPPA
1398
  real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1399
                            value_type, using_gcc);
1400
#else
1401
  FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1402
                  value_type, using_gcc);
1403
  real_pc = start_sp;
1404
#endif
1405
 
1406
  if (CALL_DUMMY_LOCATION == ON_STACK)
1407
    {
1408
      write_memory (start_sp, (char *) dummy1, sizeof_dummy1);
1409
    }
1410
 
1411
  if (CALL_DUMMY_LOCATION == BEFORE_TEXT_END)
1412
    {
1413
      /* Convex Unix prohibits executing in the stack segment. */
1414
      /* Hope there is empty room at the top of the text segment. */
1415
      extern CORE_ADDR text_end;
1416
      static int checked = 0;
1417
      if (!checked)
1418
        for (start_sp = text_end - sizeof_dummy1; start_sp < text_end; ++start_sp)
1419
          if (read_memory_integer (start_sp, 1) != 0)
1420
            error ("text segment full -- no place to put call");
1421
      checked = 1;
1422
      sp = old_sp;
1423
      real_pc = text_end - sizeof_dummy1;
1424
      write_memory (real_pc, (char *) dummy1, sizeof_dummy1);
1425
    }
1426
 
1427
  if (CALL_DUMMY_LOCATION == AFTER_TEXT_END)
1428
    {
1429
      extern CORE_ADDR text_end;
1430
      int errcode;
1431
      sp = old_sp;
1432
      real_pc = text_end;
1433
      errcode = target_write_memory (real_pc, (char *) dummy1, sizeof_dummy1);
1434
      if (errcode != 0)
1435
        error ("Cannot write text segment -- call_function failed");
1436
    }
1437
 
1438
  if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
1439
    {
1440
      real_pc = funaddr;
1441
    }
1442
 
1443
#ifdef lint
1444
  sp = old_sp;                  /* It really is used, for some ifdef's... */
1445
#endif
1446
 
1447
  if (nargs < TYPE_NFIELDS (ftype))
1448
    error ("too few arguments in function call");
1449
 
1450
  for (i = nargs - 1; i >= 0; i--)
1451
    {
1452
      /* If we're off the end of the known arguments, do the standard
1453
         promotions.  FIXME: if we had a prototype, this should only
1454
         be allowed if ... were present.  */
1455
      if (i >= TYPE_NFIELDS (ftype))
1456
        args[i] = value_arg_coerce (args[i], NULL, 0);
1457
 
1458
      else
1459
        {
1460
          int is_prototyped = TYPE_FLAGS (ftype) & TYPE_FLAG_PROTOTYPED;
1461
          param_type = TYPE_FIELD_TYPE (ftype, i);
1462
 
1463
          args[i] = value_arg_coerce (args[i], param_type, is_prototyped);
1464
        }
1465
 
1466
      /*elz: this code is to handle the case in which the function to be called
1467
         has a pointer to function as parameter and the corresponding actual argument
1468
         is the address of a function and not a pointer to function variable.
1469
         In aCC compiled code, the calls through pointers to functions (in the body
1470
         of the function called by hand) are made via $$dyncall_external which
1471
         requires some registers setting, this is taken care of if we call
1472
         via a function pointer variable, but not via a function address.
1473
         In cc this is not a problem. */
1474
 
1475
      if (using_gcc == 0)
1476
        if (param_type)
1477
          /* if this parameter is a pointer to function */
1478
          if (TYPE_CODE (param_type) == TYPE_CODE_PTR)
1479
            if (TYPE_CODE (param_type->target_type) == TYPE_CODE_FUNC)
1480
              /* elz: FIXME here should go the test about the compiler used
1481
                 to compile the target. We want to issue the error
1482
                 message only if the compiler used was HP's aCC.
1483
                 If we used HP's cc, then there is no problem and no need
1484
                 to return at this point */
1485
              if (using_gcc == 0)        /* && compiler == aCC */
1486
                /* go see if the actual parameter is a variable of type
1487
                   pointer to function or just a function */
1488
                if (args[i]->lval == not_lval)
1489
                  {
1490
                    char *arg_name;
1491
                    if (find_pc_partial_function ((CORE_ADDR) args[i]->aligner.contents[0], &arg_name, NULL, NULL))
1492
                      error ("\
1493
You cannot use function <%s> as argument. \n\
1494
You must use a pointer to function type variable. Command ignored.", arg_name);
1495
                  }
1496
    }
1497
 
1498
  if (REG_STRUCT_HAS_ADDR_P ())
1499
    {
1500
      /* This is a machine like the sparc, where we may need to pass a
1501
         pointer to the structure, not the structure itself.  */
1502
      for (i = nargs - 1; i >= 0; i--)
1503
        {
1504
          struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
1505
          if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
1506
               || TYPE_CODE (arg_type) == TYPE_CODE_UNION
1507
               || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
1508
               || TYPE_CODE (arg_type) == TYPE_CODE_STRING
1509
               || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
1510
               || TYPE_CODE (arg_type) == TYPE_CODE_SET
1511
               || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
1512
                   && TYPE_LENGTH (arg_type) > 8)
1513
               )
1514
              && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
1515
            {
1516
              CORE_ADDR addr;
1517
              int len;          /*  = TYPE_LENGTH (arg_type); */
1518
              int aligned_len;
1519
              arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
1520
              len = TYPE_LENGTH (arg_type);
1521
 
1522
              if (STACK_ALIGN_P ())
1523
                /* MVS 11/22/96: I think at least some of this
1524
                   stack_align code is really broken.  Better to let
1525
                   PUSH_ARGUMENTS adjust the stack in a target-defined
1526
                   manner.  */
1527
                aligned_len = STACK_ALIGN (len);
1528
              else
1529
                aligned_len = len;
1530
              if (INNER_THAN (1, 2))
1531
                {
1532
                  /* stack grows downward */
1533
                  sp -= aligned_len;
1534
                  /* ... so the address of the thing we push is the
1535
                     stack pointer after we push it.  */
1536
                  addr = sp;
1537
                }
1538
              else
1539
                {
1540
                  /* The stack grows up, so the address of the thing
1541
                     we push is the stack pointer before we push it.  */
1542
                  addr = sp;
1543
                  sp += aligned_len;
1544
                }
1545
              /* Push the structure.  */
1546
              write_memory (addr, VALUE_CONTENTS_ALL (args[i]), len);
1547
              /* The value we're going to pass is the address of the
1548
                 thing we just pushed.  */
1549
              /*args[i] = value_from_longest (lookup_pointer_type (value_type),
1550
                (LONGEST) addr); */
1551
              args[i] = value_from_pointer (lookup_pointer_type (arg_type),
1552
                                            addr);
1553
            }
1554
        }
1555
    }
1556
 
1557
 
1558
  /* Reserve space for the return structure to be written on the
1559
     stack, if necessary */
1560
 
1561
  if (struct_return)
1562
    {
1563
      int len = TYPE_LENGTH (value_type);
1564
      if (STACK_ALIGN_P ())
1565
        /* MVS 11/22/96: I think at least some of this stack_align
1566
           code is really broken.  Better to let PUSH_ARGUMENTS adjust
1567
           the stack in a target-defined manner.  */
1568
        len = STACK_ALIGN (len);
1569
      if (INNER_THAN (1, 2))
1570
        {
1571
          /* stack grows downward */
1572
          sp -= len;
1573
          struct_addr = sp;
1574
        }
1575
      else
1576
        {
1577
          /* stack grows upward */
1578
          struct_addr = sp;
1579
          sp += len;
1580
        }
1581
    }
1582
 
1583
  /* elz: on HPPA no need for this extra alignment, maybe it is needed
1584
     on other architectures. This is because all the alignment is
1585
     taken care of in the above code (ifdef REG_STRUCT_HAS_ADDR) and
1586
     in hppa_push_arguments */
1587
  if (EXTRA_STACK_ALIGNMENT_NEEDED)
1588
    {
1589
      /* MVS 11/22/96: I think at least some of this stack_align code
1590
         is really broken.  Better to let PUSH_ARGUMENTS adjust the
1591
         stack in a target-defined manner.  */
1592
      if (STACK_ALIGN_P () && INNER_THAN (1, 2))
1593
        {
1594
          /* If stack grows down, we must leave a hole at the top. */
1595
          int len = 0;
1596
 
1597
          for (i = nargs - 1; i >= 0; i--)
1598
            len += TYPE_LENGTH (VALUE_ENCLOSING_TYPE (args[i]));
1599
          if (CALL_DUMMY_STACK_ADJUST_P)
1600
            len += CALL_DUMMY_STACK_ADJUST;
1601
          sp -= STACK_ALIGN (len) - len;
1602
        }
1603
    }
1604
 
1605
  sp = PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr);
1606
 
1607
#ifdef PUSH_RETURN_ADDRESS      /* for targets that use no CALL_DUMMY */
1608
  /* There are a number of targets now which actually don't write any
1609
     CALL_DUMMY instructions into the target, but instead just save the
1610
     machine state, push the arguments, and jump directly to the callee
1611
     function.  Since this doesn't actually involve executing a JSR/BSR
1612
     instruction, the return address must be set up by hand, either by
1613
     pushing onto the stack or copying into a return-address register
1614
     as appropriate.  Formerly this has been done in PUSH_ARGUMENTS,
1615
     but that's overloading its functionality a bit, so I'm making it
1616
     explicit to do it here.  */
1617
  sp = PUSH_RETURN_ADDRESS (real_pc, sp);
1618
#endif /* PUSH_RETURN_ADDRESS */
1619
 
1620
  if (STACK_ALIGN_P () && !INNER_THAN (1, 2))
1621
    {
1622
      /* If stack grows up, we must leave a hole at the bottom, note
1623
         that sp already has been advanced for the arguments!  */
1624
      if (CALL_DUMMY_STACK_ADJUST_P)
1625
        sp += CALL_DUMMY_STACK_ADJUST;
1626
      sp = STACK_ALIGN (sp);
1627
    }
1628
 
1629
/* XXX This seems wrong.  For stacks that grow down we shouldn't do
1630
   anything here!  */
1631
  /* MVS 11/22/96: I think at least some of this stack_align code is
1632
     really broken.  Better to let PUSH_ARGUMENTS adjust the stack in
1633
     a target-defined manner.  */
1634
  if (CALL_DUMMY_STACK_ADJUST_P)
1635
    if (INNER_THAN (1, 2))
1636
      {
1637
        /* stack grows downward */
1638
        sp -= CALL_DUMMY_STACK_ADJUST;
1639
      }
1640
 
1641
  /* Store the address at which the structure is supposed to be
1642
     written.  Note that this (and the code which reserved the space
1643
     above) assumes that gcc was used to compile this function.  Since
1644
     it doesn't cost us anything but space and if the function is pcc
1645
     it will ignore this value, we will make that assumption.
1646
 
1647
     Also note that on some machines (like the sparc) pcc uses a
1648
     convention like gcc's.  */
1649
 
1650
  if (struct_return)
1651
    STORE_STRUCT_RETURN (struct_addr, sp);
1652
 
1653
  /* Write the stack pointer.  This is here because the statements above
1654
     might fool with it.  On SPARC, this write also stores the register
1655
     window into the right place in the new stack frame, which otherwise
1656
     wouldn't happen.  (See store_inferior_registers in sparc-nat.c.)  */
1657
  write_sp (sp);
1658
 
1659
  if (SAVE_DUMMY_FRAME_TOS_P ())
1660
    SAVE_DUMMY_FRAME_TOS (sp);
1661
 
1662
  {
1663
    char *retbuf = (char*) alloca (REGISTER_BYTES);
1664
    char *name;
1665
    struct symbol *symbol;
1666
 
1667
    name = NULL;
1668
    symbol = find_pc_function (funaddr);
1669
    if (symbol)
1670
      {
1671
        name = SYMBOL_SOURCE_NAME (symbol);
1672
      }
1673
    else
1674
      {
1675
        /* Try the minimal symbols.  */
1676
        struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1677
 
1678
        if (msymbol)
1679
          {
1680
            name = SYMBOL_SOURCE_NAME (msymbol);
1681
          }
1682
      }
1683
    if (name == NULL)
1684
      {
1685
        char format[80];
1686
        sprintf (format, "at %s", local_hex_format ());
1687
        name = alloca (80);
1688
        /* FIXME-32x64: assumes funaddr fits in a long.  */
1689
        sprintf (name, format, (unsigned long) funaddr);
1690
      }
1691
 
1692
    /* Execute the stack dummy routine, calling FUNCTION.
1693
       When it is done, discard the empty frame
1694
       after storing the contents of all regs into retbuf.  */
1695
    rc = run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf);
1696
 
1697
    if (rc == 1)
1698
      {
1699
        /* We stopped inside the FUNCTION because of a random signal.
1700
           Further execution of the FUNCTION is not allowed. */
1701
 
1702
        if (unwind_on_signal_p)
1703
          {
1704
            /* The user wants the context restored. */
1705
 
1706
            /* We must get back to the frame we were before the dummy call. */
1707
            POP_FRAME;
1708
 
1709
            /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1710
               a C++ name with arguments and stuff.  */
1711
            error ("\
1712
The program being debugged was signaled while in a function called from GDB.\n\
1713
GDB has restored the context to what it was before the call.\n\
1714
To change this behavior use \"set unwindonsignal off\"\n\
1715
Evaluation of the expression containing the function (%s) will be abandoned.",
1716
                   name);
1717
          }
1718
        else
1719
          {
1720
            /* The user wants to stay in the frame where we stopped (default).*/
1721
 
1722
            /* If we did the cleanups, we would print a spurious error
1723
               message (Unable to restore previously selected frame),
1724
               would write the registers from the inf_status (which is
1725
               wrong), and would do other wrong things.  */
1726
            discard_cleanups (old_chain);
1727
            discard_inferior_status (inf_status);
1728
 
1729
            /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1730
               a C++ name with arguments and stuff.  */
1731
            error ("\
1732
The program being debugged was signaled while in a function called from GDB.\n\
1733
GDB remains in the frame where the signal was received.\n\
1734
To change this behavior use \"set unwindonsignal on\"\n\
1735
Evaluation of the expression containing the function (%s) will be abandoned.",
1736
                   name);
1737
          }
1738
      }
1739
 
1740
    if (rc == 2)
1741
      {
1742
        /* We hit a breakpoint inside the FUNCTION. */
1743
 
1744
        /* If we did the cleanups, we would print a spurious error
1745
           message (Unable to restore previously selected frame),
1746
           would write the registers from the inf_status (which is
1747
           wrong), and would do other wrong things.  */
1748
        discard_cleanups (old_chain);
1749
        discard_inferior_status (inf_status);
1750
 
1751
        /* The following error message used to say "The expression
1752
           which contained the function call has been discarded."  It
1753
           is a hard concept to explain in a few words.  Ideally, GDB
1754
           would be able to resume evaluation of the expression when
1755
           the function finally is done executing.  Perhaps someday
1756
           this will be implemented (it would not be easy).  */
1757
 
1758
        /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1759
           a C++ name with arguments and stuff.  */
1760
        error ("\
1761
The program being debugged stopped while in a function called from GDB.\n\
1762
When the function (%s) is done executing, GDB will silently\n\
1763
stop (instead of continuing to evaluate the expression containing\n\
1764
the function call).", name);
1765
      }
1766
 
1767
    /* If we get here the called FUNCTION run to completion. */
1768
    do_cleanups (old_chain);
1769
 
1770
    /* Figure out the value returned by the function.  */
1771
/* elz: I defined this new macro for the hppa architecture only.
1772
   this gives us a way to get the value returned by the function from the stack,
1773
   at the same address we told the function to put it.
1774
   We cannot assume on the pa that r28 still contains the address of the returned
1775
   structure. Usually this will be overwritten by the callee.
1776
   I don't know about other architectures, so I defined this macro
1777
 */
1778
 
1779
#ifdef VALUE_RETURNED_FROM_STACK
1780
    if (struct_return)
1781
      return (value_ptr) VALUE_RETURNED_FROM_STACK (value_type, struct_addr);
1782
#endif
1783
 
1784
    return value_being_returned (value_type, retbuf, struct_return);
1785
  }
1786
}
1787
 
1788
value_ptr
1789
call_function_by_hand (value_ptr function, int nargs, value_ptr *args)
1790
{
1791
  if (CALL_DUMMY_P)
1792
    {
1793
      return hand_function_call (function, nargs, args);
1794
    }
1795
  else
1796
    {
1797
      error ("Cannot invoke functions on this machine.");
1798
    }
1799
}
1800
 
1801
 
1802
 
1803
/* Create a value for an array by allocating space in the inferior, copying
1804
   the data into that space, and then setting up an array value.
1805
 
1806
   The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1807
   populated from the values passed in ELEMVEC.
1808
 
1809
   The element type of the array is inherited from the type of the
1810
   first element, and all elements must have the same size (though we
1811
   don't currently enforce any restriction on their types). */
1812
 
1813
value_ptr
1814
value_array (int lowbound, int highbound, value_ptr *elemvec)
1815
{
1816
  int nelem;
1817
  int idx;
1818
  unsigned int typelength;
1819
  value_ptr val;
1820
  struct type *rangetype;
1821
  struct type *arraytype;
1822
  CORE_ADDR addr;
1823
 
1824
  /* Validate that the bounds are reasonable and that each of the elements
1825
     have the same size. */
1826
 
1827
  nelem = highbound - lowbound + 1;
1828
  if (nelem <= 0)
1829
    {
1830
      error ("bad array bounds (%d, %d)", lowbound, highbound);
1831
    }
1832
  typelength = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec[0]));
1833
  for (idx = 1; idx < nelem; idx++)
1834
    {
1835
      if (TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec[idx])) != typelength)
1836
        {
1837
          error ("array elements must all be the same size");
1838
        }
1839
    }
1840
 
1841
  rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1842
                                 lowbound, highbound);
1843
  arraytype = create_array_type ((struct type *) NULL,
1844
                              VALUE_ENCLOSING_TYPE (elemvec[0]), rangetype);
1845
 
1846
  if (!current_language->c_style_arrays)
1847
    {
1848
      val = allocate_value (arraytype);
1849
      for (idx = 0; idx < nelem; idx++)
1850
        {
1851
          memcpy (VALUE_CONTENTS_ALL_RAW (val) + (idx * typelength),
1852
                  VALUE_CONTENTS_ALL (elemvec[idx]),
1853
                  typelength);
1854
        }
1855
      VALUE_BFD_SECTION (val) = VALUE_BFD_SECTION (elemvec[0]);
1856
      return val;
1857
    }
1858
 
1859
  /* Allocate space to store the array in the inferior, and then initialize
1860
     it by copying in each element.  FIXME:  Is it worth it to create a
1861
     local buffer in which to collect each value and then write all the
1862
     bytes in one operation? */
1863
 
1864
  addr = allocate_space_in_inferior (nelem * typelength);
1865
  for (idx = 0; idx < nelem; idx++)
1866
    {
1867
      write_memory (addr + (idx * typelength), VALUE_CONTENTS_ALL (elemvec[idx]),
1868
                    typelength);
1869
    }
1870
 
1871
  /* Create the array type and set up an array value to be evaluated lazily. */
1872
 
1873
  val = value_at_lazy (arraytype, addr, VALUE_BFD_SECTION (elemvec[0]));
1874
  return (val);
1875
}
1876
 
1877
/* Create a value for a string constant by allocating space in the inferior,
1878
   copying the data into that space, and returning the address with type
1879
   TYPE_CODE_STRING.  PTR points to the string constant data; LEN is number
1880
   of characters.
1881
   Note that string types are like array of char types with a lower bound of
1882
   zero and an upper bound of LEN - 1.  Also note that the string may contain
1883
   embedded null bytes. */
1884
 
1885
value_ptr
1886
value_string (char *ptr, int len)
1887
{
1888
  value_ptr val;
1889
  int lowbound = current_language->string_lower_bound;
1890
  struct type *rangetype = create_range_type ((struct type *) NULL,
1891
                                              builtin_type_int,
1892
                                              lowbound, len + lowbound - 1);
1893
  struct type *stringtype
1894
  = create_string_type ((struct type *) NULL, rangetype);
1895
  CORE_ADDR addr;
1896
 
1897
  if (current_language->c_style_arrays == 0)
1898
    {
1899
      val = allocate_value (stringtype);
1900
      memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1901
      return val;
1902
    }
1903
 
1904
 
1905
  /* Allocate space to store the string in the inferior, and then
1906
     copy LEN bytes from PTR in gdb to that address in the inferior. */
1907
 
1908
  addr = allocate_space_in_inferior (len);
1909
  write_memory (addr, ptr, len);
1910
 
1911
  val = value_at_lazy (stringtype, addr, NULL);
1912
  return (val);
1913
}
1914
 
1915
value_ptr
1916
value_bitstring (char *ptr, int len)
1917
{
1918
  value_ptr val;
1919
  struct type *domain_type = create_range_type (NULL, builtin_type_int,
1920
                                                0, len - 1);
1921
  struct type *type = create_set_type ((struct type *) NULL, domain_type);
1922
  TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1923
  val = allocate_value (type);
1924
  memcpy (VALUE_CONTENTS_RAW (val), ptr, TYPE_LENGTH (type));
1925
  return val;
1926
}
1927
 
1928
/* See if we can pass arguments in T2 to a function which takes arguments
1929
   of types T1.  Both t1 and t2 are NULL-terminated vectors.  If some
1930
   arguments need coercion of some sort, then the coerced values are written
1931
   into T2.  Return value is 0 if the arguments could be matched, or the
1932
   position at which they differ if not.
1933
 
1934
   STATICP is nonzero if the T1 argument list came from a
1935
   static member function.
1936
 
1937
   For non-static member functions, we ignore the first argument,
1938
   which is the type of the instance variable.  This is because we want
1939
   to handle calls with objects from derived classes.  This is not
1940
   entirely correct: we should actually check to make sure that a
1941
   requested operation is type secure, shouldn't we?  FIXME.  */
1942
 
1943
static int
1944
typecmp (int staticp, struct type *t1[], value_ptr t2[])
1945
{
1946
  int i;
1947
 
1948
  if (t2 == 0)
1949
    return 1;
1950
  if (staticp && t1 == 0)
1951
    return t2[1] != 0;
1952
  if (t1 == 0)
1953
    return 1;
1954
  if (TYPE_CODE (t1[0]) == TYPE_CODE_VOID)
1955
    return 0;
1956
  if (t1[!staticp] == 0)
1957
    return 0;
1958
  for (i = !staticp; t1[i] && TYPE_CODE (t1[i]) != TYPE_CODE_VOID; i++)
1959
    {
1960
      struct type *tt1, *tt2;
1961
      if (!t2[i])
1962
        return i + 1;
1963
      tt1 = check_typedef (t1[i]);
1964
      tt2 = check_typedef (VALUE_TYPE (t2[i]));
1965
      if (TYPE_CODE (tt1) == TYPE_CODE_REF
1966
      /* We should be doing hairy argument matching, as below.  */
1967
          && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1968
        {
1969
          if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1970
            t2[i] = value_coerce_array (t2[i]);
1971
          else
1972
            t2[i] = value_addr (t2[i]);
1973
          continue;
1974
        }
1975
 
1976
      /* djb - 20000715 - Until the new type structure is in the
1977
         place, and we can attempt things like implicit conversions,
1978
         we need to do this so you can take something like a map<const
1979
         char *>, and properly access map["hello"], because the
1980
         argument to [] will be a reference to a pointer to a char,
1981
         and the argument will be a pointer to a char. */
1982
      while ( TYPE_CODE(tt1) == TYPE_CODE_REF ||
1983
              TYPE_CODE (tt1) == TYPE_CODE_PTR)
1984
        {
1985
          tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1986
        }
1987
      while ( TYPE_CODE(tt2) == TYPE_CODE_ARRAY ||
1988
              TYPE_CODE(tt2) == TYPE_CODE_PTR ||
1989
              TYPE_CODE(tt2) == TYPE_CODE_REF)
1990
        {
1991
          tt2 = check_typedef( TYPE_TARGET_TYPE(tt2) );
1992
        }
1993
      if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1994
        continue;
1995
      /* Array to pointer is a `trivial conversion' according to the ARM.  */
1996
 
1997
      /* We should be doing much hairier argument matching (see section 13.2
1998
         of the ARM), but as a quick kludge, just check for the same type
1999
         code.  */
2000
      if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
2001
        return i + 1;
2002
    }
2003
  if (!t1[i])
2004
    return 0;
2005
  return t2[i] ? i + 1 : 0;
2006
}
2007
 
2008
/* Helper function used by value_struct_elt to recurse through baseclasses.
2009
   Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2010
   and search in it assuming it has (class) type TYPE.
2011
   If found, return value, else return NULL.
2012
 
2013
   If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
2014
   look for a baseclass named NAME.  */
2015
 
2016
static value_ptr
2017
search_struct_field (char *name, register value_ptr arg1, int offset,
2018
                     register struct type *type, int looking_for_baseclass)
2019
{
2020
  int i;
2021
  int nbases = TYPE_N_BASECLASSES (type);
2022
 
2023
  CHECK_TYPEDEF (type);
2024
 
2025
  if (!looking_for_baseclass)
2026
    for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
2027
      {
2028
        char *t_field_name = TYPE_FIELD_NAME (type, i);
2029
 
2030
        if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2031
          {
2032
            value_ptr v;
2033
            if (TYPE_FIELD_STATIC (type, i))
2034
              v = value_static_field (type, i);
2035
            else
2036
              v = value_primitive_field (arg1, offset, i, type);
2037
            if (v == 0)
2038
              error ("there is no field named %s", name);
2039
            return v;
2040
          }
2041
 
2042
        if (t_field_name
2043
            && (t_field_name[0] == '\0'
2044
                || (TYPE_CODE (type) == TYPE_CODE_UNION
2045
                    && (strcmp_iw (t_field_name, "else") == 0))))
2046
          {
2047
            struct type *field_type = TYPE_FIELD_TYPE (type, i);
2048
            if (TYPE_CODE (field_type) == TYPE_CODE_UNION
2049
                || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
2050
              {
2051
                /* Look for a match through the fields of an anonymous union,
2052
                   or anonymous struct.  C++ provides anonymous unions.
2053
 
2054
                   In the GNU Chill implementation of variant record types,
2055
                   each <alternative field> has an (anonymous) union type,
2056
                   each member of the union represents a <variant alternative>.
2057
                   Each <variant alternative> is represented as a struct,
2058
                   with a member for each <variant field>.  */
2059
 
2060
                value_ptr v;
2061
                int new_offset = offset;
2062
 
2063
                /* This is pretty gross.  In G++, the offset in an anonymous
2064
                   union is relative to the beginning of the enclosing struct.
2065
                   In the GNU Chill implementation of variant records,
2066
                   the bitpos is zero in an anonymous union field, so we
2067
                   have to add the offset of the union here. */
2068
                if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
2069
                    || (TYPE_NFIELDS (field_type) > 0
2070
                        && TYPE_FIELD_BITPOS (field_type, 0) == 0))
2071
                  new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
2072
 
2073
                v = search_struct_field (name, arg1, new_offset, field_type,
2074
                                         looking_for_baseclass);
2075
                if (v)
2076
                  return v;
2077
              }
2078
          }
2079
      }
2080
 
2081
  for (i = 0; i < nbases; i++)
2082
    {
2083
      value_ptr v;
2084
      struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2085
      /* If we are looking for baseclasses, this is what we get when we
2086
         hit them.  But it could happen that the base part's member name
2087
         is not yet filled in.  */
2088
      int found_baseclass = (looking_for_baseclass
2089
                             && TYPE_BASECLASS_NAME (type, i) != NULL
2090
                             && (strcmp_iw (name, TYPE_BASECLASS_NAME (type, i)) == 0));
2091
 
2092
      if (BASETYPE_VIA_VIRTUAL (type, i))
2093
        {
2094
          int boffset;
2095
          value_ptr v2 = allocate_value (basetype);
2096
 
2097
          boffset = baseclass_offset (type, i,
2098
                                      VALUE_CONTENTS (arg1) + offset,
2099
                                      VALUE_ADDRESS (arg1)
2100
                                      + VALUE_OFFSET (arg1) + offset);
2101
          if (boffset == -1)
2102
            error ("virtual baseclass botch");
2103
 
2104
          /* The virtual base class pointer might have been clobbered by the
2105
             user program. Make sure that it still points to a valid memory
2106
             location.  */
2107
 
2108
          boffset += offset;
2109
          if (boffset < 0 || boffset >= TYPE_LENGTH (type))
2110
            {
2111
              CORE_ADDR base_addr;
2112
 
2113
              base_addr = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1) + boffset;
2114
              if (target_read_memory (base_addr, VALUE_CONTENTS_RAW (v2),
2115
                                      TYPE_LENGTH (basetype)) != 0)
2116
                error ("virtual baseclass botch");
2117
              VALUE_LVAL (v2) = lval_memory;
2118
              VALUE_ADDRESS (v2) = base_addr;
2119
            }
2120
          else
2121
            {
2122
              VALUE_LVAL (v2) = VALUE_LVAL (arg1);
2123
              VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
2124
              VALUE_OFFSET (v2) = VALUE_OFFSET (arg1) + boffset;
2125
              if (VALUE_LAZY (arg1))
2126
                VALUE_LAZY (v2) = 1;
2127
              else
2128
                memcpy (VALUE_CONTENTS_RAW (v2),
2129
                        VALUE_CONTENTS_RAW (arg1) + boffset,
2130
                        TYPE_LENGTH (basetype));
2131
            }
2132
 
2133
          if (found_baseclass)
2134
            return v2;
2135
          v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
2136
                                   looking_for_baseclass);
2137
        }
2138
      else if (found_baseclass)
2139
        v = value_primitive_field (arg1, offset, i, type);
2140
      else
2141
        v = search_struct_field (name, arg1,
2142
                               offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2143
                                 basetype, looking_for_baseclass);
2144
      if (v)
2145
        return v;
2146
    }
2147
  return NULL;
2148
}
2149
 
2150
 
2151
/* Return the offset (in bytes) of the virtual base of type BASETYPE
2152
 * in an object pointed to by VALADDR (on the host), assumed to be of
2153
 * type TYPE.  OFFSET is number of bytes beyond start of ARG to start
2154
 * looking (in case VALADDR is the contents of an enclosing object).
2155
 *
2156
 * This routine recurses on the primary base of the derived class because
2157
 * the virtual base entries of the primary base appear before the other
2158
 * virtual base entries.
2159
 *
2160
 * If the virtual base is not found, a negative integer is returned.
2161
 * The magnitude of the negative integer is the number of entries in
2162
 * the virtual table to skip over (entries corresponding to various
2163
 * ancestral classes in the chain of primary bases).
2164
 *
2165
 * Important: This assumes the HP / Taligent C++ runtime
2166
 * conventions. Use baseclass_offset() instead to deal with g++
2167
 * conventions.  */
2168
 
2169
void
2170
find_rt_vbase_offset (struct type *type, struct type *basetype, char *valaddr,
2171
                      int offset, int *boffset_p, int *skip_p)
2172
{
2173
  int boffset;                  /* offset of virtual base */
2174
  int index;                    /* displacement to use in virtual table */
2175
  int skip;
2176
 
2177
  value_ptr vp;
2178
  CORE_ADDR vtbl;               /* the virtual table pointer */
2179
  struct type *pbc;             /* the primary base class */
2180
 
2181
  /* Look for the virtual base recursively in the primary base, first.
2182
   * This is because the derived class object and its primary base
2183
   * subobject share the primary virtual table.  */
2184
 
2185
  boffset = 0;
2186
  pbc = TYPE_PRIMARY_BASE (type);
2187
  if (pbc)
2188
    {
2189
      find_rt_vbase_offset (pbc, basetype, valaddr, offset, &boffset, &skip);
2190
      if (skip < 0)
2191
        {
2192
          *boffset_p = boffset;
2193
          *skip_p = -1;
2194
          return;
2195
        }
2196
    }
2197
  else
2198
    skip = 0;
2199
 
2200
 
2201
  /* Find the index of the virtual base according to HP/Taligent
2202
     runtime spec. (Depth-first, left-to-right.)  */
2203
  index = virtual_base_index_skip_primaries (basetype, type);
2204
 
2205
  if (index < 0)
2206
    {
2207
      *skip_p = skip + virtual_base_list_length_skip_primaries (type);
2208
      *boffset_p = 0;
2209
      return;
2210
    }
2211
 
2212
  /* pai: FIXME -- 32x64 possible problem */
2213
  /* First word (4 bytes) in object layout is the vtable pointer */
2214
  vtbl = *(CORE_ADDR *) (valaddr + offset);
2215
 
2216
  /* Before the constructor is invoked, things are usually zero'd out. */
2217
  if (vtbl == 0)
2218
    error ("Couldn't find virtual table -- object may not be constructed yet.");
2219
 
2220
 
2221
  /* Find virtual base's offset -- jump over entries for primary base
2222
   * ancestors, then use the index computed above.  But also adjust by
2223
   * HP_ACC_VBASE_START for the vtable slots before the start of the
2224
   * virtual base entries.  Offset is negative -- virtual base entries
2225
   * appear _before_ the address point of the virtual table. */
2226
 
2227
  /* pai: FIXME -- 32x64 problem, if word = 8 bytes, change multiplier
2228
     & use long type */
2229
 
2230
  /* epstein : FIXME -- added param for overlay section. May not be correct */
2231
  vp = value_at (builtin_type_int, vtbl + 4 * (-skip - index - HP_ACC_VBASE_START), NULL);
2232
  boffset = value_as_long (vp);
2233
  *skip_p = -1;
2234
  *boffset_p = boffset;
2235
  return;
2236
}
2237
 
2238
 
2239
/* Helper function used by value_struct_elt to recurse through baseclasses.
2240
   Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2241
   and search in it assuming it has (class) type TYPE.
2242
   If found, return value, else if name matched and args not return (value)-1,
2243
   else return NULL. */
2244
 
2245
static value_ptr
2246
search_struct_method (char *name, register value_ptr *arg1p,
2247
                      register value_ptr *args, int offset,
2248
                      int *static_memfuncp, register struct type *type)
2249
{
2250
  int i;
2251
  value_ptr v;
2252
  int name_matched = 0;
2253
  char dem_opname[64];
2254
 
2255
  CHECK_TYPEDEF (type);
2256
  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2257
    {
2258
      char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2259
      /* FIXME!  May need to check for ARM demangling here */
2260
      if (strncmp (t_field_name, "__", 2) == 0 ||
2261
          strncmp (t_field_name, "op", 2) == 0 ||
2262
          strncmp (t_field_name, "type", 4) == 0)
2263
        {
2264
          if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2265
            t_field_name = dem_opname;
2266
          else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2267
            t_field_name = dem_opname;
2268
        }
2269
      if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2270
        {
2271
          int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2272
          struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2273
          name_matched = 1;
2274
 
2275
          if (j > 0 && args == 0)
2276
            error ("cannot resolve overloaded method `%s': no arguments supplied", name);
2277
          while (j >= 0)
2278
            {
2279
              if (TYPE_FN_FIELD_STUB (f, j))
2280
                check_stub_method (type, i, j);
2281
              if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2282
                            TYPE_FN_FIELD_ARGS (f, j), args))
2283
                {
2284
                  if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2285
                    return value_virtual_fn_field (arg1p, f, j, type, offset);
2286
                  if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
2287
                    *static_memfuncp = 1;
2288
                  v = value_fn_field (arg1p, f, j, type, offset);
2289
                  if (v != NULL)
2290
                    return v;
2291
                }
2292
              j--;
2293
            }
2294
        }
2295
    }
2296
 
2297
  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2298
    {
2299
      int base_offset;
2300
 
2301
      if (BASETYPE_VIA_VIRTUAL (type, i))
2302
        {
2303
          if (TYPE_HAS_VTABLE (type))
2304
            {
2305
              /* HP aCC compiled type, search for virtual base offset
2306
                 according to HP/Taligent runtime spec.  */
2307
              int skip;
2308
              find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
2309
                                    VALUE_CONTENTS_ALL (*arg1p),
2310
                                    offset + VALUE_EMBEDDED_OFFSET (*arg1p),
2311
                                    &base_offset, &skip);
2312
              if (skip >= 0)
2313
                error ("Virtual base class offset not found in vtable");
2314
            }
2315
          else
2316
            {
2317
              struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2318
              char *base_valaddr;
2319
 
2320
              /* The virtual base class pointer might have been clobbered by the
2321
                 user program. Make sure that it still points to a valid memory
2322
                 location.  */
2323
 
2324
              if (offset < 0 || offset >= TYPE_LENGTH (type))
2325
                {
2326
                  base_valaddr = (char *) alloca (TYPE_LENGTH (baseclass));
2327
                  if (target_read_memory (VALUE_ADDRESS (*arg1p)
2328
                                          + VALUE_OFFSET (*arg1p) + offset,
2329
                                          base_valaddr,
2330
                                          TYPE_LENGTH (baseclass)) != 0)
2331
                    error ("virtual baseclass botch");
2332
                }
2333
              else
2334
                base_valaddr = VALUE_CONTENTS (*arg1p) + offset;
2335
 
2336
              base_offset =
2337
                baseclass_offset (type, i, base_valaddr,
2338
                                  VALUE_ADDRESS (*arg1p)
2339
                                  + VALUE_OFFSET (*arg1p) + offset);
2340
              if (base_offset == -1)
2341
                error ("virtual baseclass botch");
2342
            }
2343
        }
2344
      else
2345
        {
2346
          base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2347
        }
2348
      v = search_struct_method (name, arg1p, args, base_offset + offset,
2349
                                static_memfuncp, TYPE_BASECLASS (type, i));
2350
      if (v == (value_ptr) - 1)
2351
        {
2352
          name_matched = 1;
2353
        }
2354
      else if (v)
2355
        {
2356
/* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2357
/*        *arg1p = arg1_tmp; */
2358
          return v;
2359
        }
2360
    }
2361
  if (name_matched)
2362
    return (value_ptr) - 1;
2363
  else
2364
    return NULL;
2365
}
2366
 
2367
/* Given *ARGP, a value of type (pointer to a)* structure/union,
2368
   extract the component named NAME from the ultimate target structure/union
2369
   and return it as a value with its appropriate type.
2370
   ERR is used in the error message if *ARGP's type is wrong.
2371
 
2372
   C++: ARGS is a list of argument types to aid in the selection of
2373
   an appropriate method. Also, handle derived types.
2374
 
2375
   STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2376
   where the truthvalue of whether the function that was resolved was
2377
   a static member function or not is stored.
2378
 
2379
   ERR is an error message to be printed in case the field is not found.  */
2380
 
2381
value_ptr
2382
value_struct_elt (register value_ptr *argp, register value_ptr *args,
2383
                  char *name, int *static_memfuncp, char *err)
2384
{
2385
  register struct type *t;
2386
  value_ptr v;
2387
 
2388
  COERCE_ARRAY (*argp);
2389
 
2390
  t = check_typedef (VALUE_TYPE (*argp));
2391
 
2392
  /* Follow pointers until we get to a non-pointer.  */
2393
 
2394
  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2395
    {
2396
      *argp = value_ind (*argp);
2397
      /* Don't coerce fn pointer to fn and then back again!  */
2398
      if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
2399
        COERCE_ARRAY (*argp);
2400
      t = check_typedef (VALUE_TYPE (*argp));
2401
    }
2402
 
2403
  if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2404
    error ("not implemented: member type in value_struct_elt");
2405
 
2406
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2407
      && TYPE_CODE (t) != TYPE_CODE_UNION)
2408
    error ("Attempt to extract a component of a value that is not a %s.", err);
2409
 
2410
  /* Assume it's not, unless we see that it is.  */
2411
  if (static_memfuncp)
2412
    *static_memfuncp = 0;
2413
 
2414
  if (!args)
2415
    {
2416
      /* if there are no arguments ...do this...  */
2417
 
2418
      /* Try as a field first, because if we succeed, there
2419
         is less work to be done.  */
2420
      v = search_struct_field (name, *argp, 0, t, 0);
2421
      if (v)
2422
        return v;
2423
 
2424
      /* C++: If it was not found as a data field, then try to
2425
         return it as a pointer to a method.  */
2426
 
2427
      if (destructor_name_p (name, t))
2428
        error ("Cannot get value of destructor");
2429
 
2430
      v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
2431
 
2432
      if (v == (value_ptr) - 1)
2433
        error ("Cannot take address of a method");
2434
      else if (v == 0)
2435
        {
2436
          if (TYPE_NFN_FIELDS (t))
2437
            error ("There is no member or method named %s.", name);
2438
          else
2439
            error ("There is no member named %s.", name);
2440
        }
2441
      return v;
2442
    }
2443
 
2444
  if (destructor_name_p (name, t))
2445
    {
2446
      if (!args[1])
2447
        {
2448
          /* Destructors are a special case.  */
2449
          int m_index, f_index;
2450
 
2451
          v = NULL;
2452
          if (get_destructor_fn_field (t, &m_index, &f_index))
2453
            {
2454
              v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, m_index),
2455
                                  f_index, NULL, 0);
2456
            }
2457
          if (v == NULL)
2458
            error ("could not find destructor function named %s.", name);
2459
          else
2460
            return v;
2461
        }
2462
      else
2463
        {
2464
          error ("destructor should not have any argument");
2465
        }
2466
    }
2467
  else
2468
    v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
2469
 
2470
  if (v == (value_ptr) - 1)
2471
    {
2472
      error ("One of the arguments you tried to pass to %s could not be converted to what the function wants.", name);
2473
    }
2474
  else if (v == 0)
2475
    {
2476
      /* See if user tried to invoke data as function.  If so,
2477
         hand it back.  If it's not callable (i.e., a pointer to function),
2478
         gdb should give an error.  */
2479
      v = search_struct_field (name, *argp, 0, t, 0);
2480
    }
2481
 
2482
  if (!v)
2483
    error ("Structure has no component named %s.", name);
2484
  return v;
2485
}
2486
 
2487
/* Search through the methods of an object (and its bases)
2488
 * to find a specified method. Return the pointer to the
2489
 * fn_field list of overloaded instances.
2490
 * Helper function for value_find_oload_list.
2491
 * ARGP is a pointer to a pointer to a value (the object)
2492
 * METHOD is a string containing the method name
2493
 * OFFSET is the offset within the value
2494
 * STATIC_MEMFUNCP is set if the method is static
2495
 * TYPE is the assumed type of the object
2496
 * NUM_FNS is the number of overloaded instances
2497
 * BASETYPE is set to the actual type of the subobject where the method is found
2498
 * BOFFSET is the offset of the base subobject where the method is found */
2499
 
2500
static struct fn_field *
2501
find_method_list (value_ptr *argp, char *method, int offset,
2502
                  int *static_memfuncp, struct type *type, int *num_fns,
2503
                  struct type **basetype, int *boffset)
2504
{
2505
  int i;
2506
  struct fn_field *f;
2507
  CHECK_TYPEDEF (type);
2508
 
2509
  *num_fns = 0;
2510
 
2511
  /* First check in object itself */
2512
  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2513
    {
2514
      /* pai: FIXME What about operators and type conversions? */
2515
      char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2516
      if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2517
        {
2518
          *num_fns = TYPE_FN_FIELDLIST_LENGTH (type, i);
2519
          *basetype = type;
2520
          *boffset = offset;
2521
          return TYPE_FN_FIELDLIST1 (type, i);
2522
        }
2523
    }
2524
 
2525
  /* Not found in object, check in base subobjects */
2526
  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2527
    {
2528
      int base_offset;
2529
      if (BASETYPE_VIA_VIRTUAL (type, i))
2530
        {
2531
          if (TYPE_HAS_VTABLE (type))
2532
            {
2533
              /* HP aCC compiled type, search for virtual base offset
2534
               * according to HP/Taligent runtime spec.  */
2535
              int skip;
2536
              find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
2537
                                    VALUE_CONTENTS_ALL (*argp),
2538
                                    offset + VALUE_EMBEDDED_OFFSET (*argp),
2539
                                    &base_offset, &skip);
2540
              if (skip >= 0)
2541
                error ("Virtual base class offset not found in vtable");
2542
            }
2543
          else
2544
            {
2545
              /* probably g++ runtime model */
2546
              base_offset = VALUE_OFFSET (*argp) + offset;
2547
              base_offset =
2548
                baseclass_offset (type, i,
2549
                                  VALUE_CONTENTS (*argp) + base_offset,
2550
                                  VALUE_ADDRESS (*argp) + base_offset);
2551
              if (base_offset == -1)
2552
                error ("virtual baseclass botch");
2553
            }
2554
        }
2555
      else
2556
        /* non-virtual base, simply use bit position from debug info */
2557
        {
2558
          base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2559
        }
2560
      f = find_method_list (argp, method, base_offset + offset,
2561
      static_memfuncp, TYPE_BASECLASS (type, i), num_fns, basetype, boffset);
2562
      if (f)
2563
        return f;
2564
    }
2565
  return NULL;
2566
}
2567
 
2568
/* Return the list of overloaded methods of a specified name.
2569
 * ARGP is a pointer to a pointer to a value (the object)
2570
 * METHOD is the method name
2571
 * OFFSET is the offset within the value contents
2572
 * STATIC_MEMFUNCP is set if the method is static
2573
 * NUM_FNS is the number of overloaded instances
2574
 * BASETYPE is set to the type of the base subobject that defines the method
2575
 * BOFFSET is the offset of the base subobject which defines the method */
2576
 
2577
struct fn_field *
2578
value_find_oload_method_list (value_ptr *argp, char *method, int offset,
2579
                              int *static_memfuncp, int *num_fns,
2580
                              struct type **basetype, int *boffset)
2581
{
2582
  struct type *t;
2583
 
2584
  t = check_typedef (VALUE_TYPE (*argp));
2585
 
2586
  /* code snarfed from value_struct_elt */
2587
  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2588
    {
2589
      *argp = value_ind (*argp);
2590
      /* Don't coerce fn pointer to fn and then back again!  */
2591
      if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
2592
        COERCE_ARRAY (*argp);
2593
      t = check_typedef (VALUE_TYPE (*argp));
2594
    }
2595
 
2596
  if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2597
    error ("Not implemented: member type in value_find_oload_lis");
2598
 
2599
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2600
      && TYPE_CODE (t) != TYPE_CODE_UNION)
2601
    error ("Attempt to extract a component of a value that is not a struct or union");
2602
 
2603
  /* Assume it's not static, unless we see that it is.  */
2604
  if (static_memfuncp)
2605
    *static_memfuncp = 0;
2606
 
2607
  return find_method_list (argp, method, 0, static_memfuncp, t, num_fns, basetype, boffset);
2608
 
2609
}
2610
 
2611
/* Given an array of argument types (ARGTYPES) (which includes an
2612
   entry for "this" in the case of C++ methods), the number of
2613
   arguments NARGS, the NAME of a function whether it's a method or
2614
   not (METHOD), and the degree of laxness (LAX) in conforming to
2615
   overload resolution rules in ANSI C++, find the best function that
2616
   matches on the argument types according to the overload resolution
2617
   rules.
2618
 
2619
   In the case of class methods, the parameter OBJ is an object value
2620
   in which to search for overloaded methods.
2621
 
2622
   In the case of non-method functions, the parameter FSYM is a symbol
2623
   corresponding to one of the overloaded functions.
2624
 
2625
   Return value is an integer: 0 -> good match, 10 -> debugger applied
2626
   non-standard coercions, 100 -> incompatible.
2627
 
2628
   If a method is being searched for, VALP will hold the value.
2629
   If a non-method is being searched for, SYMP will hold the symbol for it.
2630
 
2631
   If a method is being searched for, and it is a static method,
2632
   then STATICP will point to a non-zero value.
2633
 
2634
   Note: This function does *not* check the value of
2635
   overload_resolution.  Caller must check it to see whether overload
2636
   resolution is permitted.
2637
 */
2638
 
2639
int
2640
find_overload_match (struct type **arg_types, int nargs, char *name, int method,
2641
                     int lax, value_ptr obj, struct symbol *fsym,
2642
                     value_ptr *valp, struct symbol **symp, int *staticp)
2643
{
2644
  int nparms;
2645
  struct type **parm_types;
2646
  int champ_nparms = 0;
2647
 
2648
  short oload_champ = -1;       /* Index of best overloaded function */
2649
  short oload_ambiguous = 0;     /* Current ambiguity state for overload resolution */
2650
  /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs */
2651
  short oload_ambig_champ = -1; /* 2nd contender for best match */
2652
  short oload_non_standard = 0;  /* did we have to use non-standard conversions? */
2653
  short oload_incompatible = 0;  /* are args supplied incompatible with any function? */
2654
 
2655
  struct badness_vector *bv;    /* A measure of how good an overloaded instance is */
2656
  struct badness_vector *oload_champ_bv = NULL;         /* The measure for the current best match */
2657
 
2658
  value_ptr temp = obj;
2659
  struct fn_field *fns_ptr = NULL;      /* For methods, the list of overloaded methods */
2660
  struct symbol **oload_syms = NULL;    /* For non-methods, the list of overloaded function symbols */
2661
  int num_fns = 0;               /* Number of overloaded instances being considered */
2662
  struct type *basetype = NULL;
2663
  int boffset;
2664
  register int jj;
2665
  register int ix;
2666
 
2667
  char *obj_type_name = NULL;
2668
  char *func_name = NULL;
2669
 
2670
  /* Get the list of overloaded methods or functions */
2671
  if (method)
2672
    {
2673
      int i;
2674
      int len;
2675
      struct type *domain;
2676
      obj_type_name = TYPE_NAME (VALUE_TYPE (obj));
2677
      /* Hack: evaluate_subexp_standard often passes in a pointer
2678
         value rather than the object itself, so try again */
2679
      if ((!obj_type_name || !*obj_type_name) &&
2680
          (TYPE_CODE (VALUE_TYPE (obj)) == TYPE_CODE_PTR))
2681
        obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (VALUE_TYPE (obj)));
2682
 
2683
      fns_ptr = value_find_oload_method_list (&temp, name, 0,
2684
                                              staticp,
2685
                                              &num_fns,
2686
                                              &basetype, &boffset);
2687
      if (!fns_ptr || !num_fns)
2688
        error ("Couldn't find method %s%s%s",
2689
               obj_type_name,
2690
               (obj_type_name && *obj_type_name) ? "::" : "",
2691
               name);
2692
      domain = TYPE_DOMAIN_TYPE (fns_ptr[0].type);
2693
      len = TYPE_NFN_FIELDS (domain);
2694
      /* NOTE: dan/2000-03-10: This stuff is for STABS, which won't
2695
         give us the info we need directly in the types. We have to
2696
         use the method stub conversion to get it. Be aware that this
2697
         is by no means perfect, and if you use STABS, please move to
2698
         DWARF-2, or something like it, because trying to improve
2699
         overloading using STABS is really a waste of time. */
2700
      for (i = 0; i < len; i++)
2701
        {
2702
          int j;
2703
          struct fn_field *f = TYPE_FN_FIELDLIST1 (domain, i);
2704
          int len2 = TYPE_FN_FIELDLIST_LENGTH (domain, i);
2705
 
2706
          for (j = 0; j < len2; j++)
2707
            {
2708
              if (TYPE_FN_FIELD_STUB (f, j) && (!strcmp_iw (TYPE_FN_FIELDLIST_NAME (domain,i),name)))
2709
                check_stub_method (domain, i, j);
2710
            }
2711
        }
2712
    }
2713
  else
2714
    {
2715
      int i = -1;
2716
      func_name = cplus_demangle (SYMBOL_NAME (fsym), DMGL_NO_OPTS);
2717
 
2718
      /* If the name is NULL this must be a C-style function.
2719
         Just return the same symbol. */
2720
      if (!func_name)
2721
        {
2722
          *symp = fsym;
2723
          return 0;
2724
        }
2725
 
2726
      oload_syms = make_symbol_overload_list (fsym);
2727
      while (oload_syms[++i])
2728
        num_fns++;
2729
      if (!num_fns)
2730
        error ("Couldn't find function %s", func_name);
2731
    }
2732
 
2733
  oload_champ_bv = NULL;
2734
 
2735
  /* Consider each candidate in turn */
2736
  for (ix = 0; ix < num_fns; ix++)
2737
    {
2738
      if (method)
2739
        {
2740
          /* For static member functions, we won't have a this pointer, but nothing
2741
             else seems to handle them right now, so we just pretend ourselves */
2742
          nparms=0;
2743
 
2744
          if (TYPE_FN_FIELD_ARGS(fns_ptr,ix))
2745
            {
2746
              while (TYPE_CODE(TYPE_FN_FIELD_ARGS(fns_ptr,ix)[nparms]) != TYPE_CODE_VOID)
2747
                nparms++;
2748
            }
2749
        }
2750
      else
2751
        {
2752
          /* If it's not a method, this is the proper place */
2753
          nparms=TYPE_NFIELDS(SYMBOL_TYPE(oload_syms[ix]));
2754
        }
2755
 
2756
      /* Prepare array of parameter types */
2757
      parm_types = (struct type **) xmalloc (nparms * (sizeof (struct type *)));
2758
      for (jj = 0; jj < nparms; jj++)
2759
        parm_types[jj] = (method
2760
                          ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj])
2761
                          : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), jj));
2762
 
2763
      /* Compare parameter types to supplied argument types */
2764
      bv = rank_function (parm_types, nparms, arg_types, nargs);
2765
 
2766
      if (!oload_champ_bv)
2767
        {
2768
          oload_champ_bv = bv;
2769
          oload_champ = 0;
2770
          champ_nparms = nparms;
2771
        }
2772
      else
2773
        /* See whether current candidate is better or worse than previous best */
2774
        switch (compare_badness (bv, oload_champ_bv))
2775
          {
2776
          case 0:
2777
            oload_ambiguous = 1;        /* top two contenders are equally good */
2778
            oload_ambig_champ = ix;
2779
            break;
2780
          case 1:
2781
            oload_ambiguous = 2;        /* incomparable top contenders */
2782
            oload_ambig_champ = ix;
2783
            break;
2784
          case 2:
2785
            oload_champ_bv = bv;        /* new champion, record details */
2786
            oload_ambiguous = 0;
2787
            oload_champ = ix;
2788
            oload_ambig_champ = -1;
2789
            champ_nparms = nparms;
2790
            break;
2791
          case 3:
2792
          default:
2793
            break;
2794
          }
2795
      xfree (parm_types);
2796
      if (overload_debug)
2797
        {
2798
          if (method)
2799
            fprintf_filtered (gdb_stderr,"Overloaded method instance %s, # of parms %d\n", fns_ptr[ix].physname, nparms);
2800
          else
2801
            fprintf_filtered (gdb_stderr,"Overloaded function instance %s # of parms %d\n", SYMBOL_DEMANGLED_NAME (oload_syms[ix]), nparms);
2802
          for (jj = 0; jj < nargs; jj++)
2803
            fprintf_filtered (gdb_stderr,"...Badness @ %d : %d\n", jj, bv->rank[jj]);
2804
          fprintf_filtered (gdb_stderr,"Overload resolution champion is %d, ambiguous? %d\n", oload_champ, oload_ambiguous);
2805
        }
2806
    }                           /* end loop over all candidates */
2807
  /* NOTE: dan/2000-03-10: Seems to be a better idea to just pick one
2808
     if they have the exact same goodness. This is because there is no
2809
     way to differentiate based on return type, which we need to in
2810
     cases like overloads of .begin() <It's both const and non-const> */
2811
#if 0
2812
  if (oload_ambiguous)
2813
    {
2814
      if (method)
2815
        error ("Cannot resolve overloaded method %s%s%s to unique instance; disambiguate by specifying function signature",
2816
               obj_type_name,
2817
               (obj_type_name && *obj_type_name) ? "::" : "",
2818
               name);
2819
      else
2820
        error ("Cannot resolve overloaded function %s to unique instance; disambiguate by specifying function signature",
2821
               func_name);
2822
    }
2823
#endif
2824
 
2825
  /* Check how bad the best match is */
2826
  for (ix = 1; ix <= nargs; ix++)
2827
    {
2828
      if (oload_champ_bv->rank[ix] >= 100)
2829
        oload_incompatible = 1; /* truly mismatched types */
2830
 
2831
      else if (oload_champ_bv->rank[ix] >= 10)
2832
        oload_non_standard = 1; /* non-standard type conversions needed */
2833
    }
2834
  if (oload_incompatible)
2835
    {
2836
      if (method)
2837
        error ("Cannot resolve method %s%s%s to any overloaded instance",
2838
               obj_type_name,
2839
               (obj_type_name && *obj_type_name) ? "::" : "",
2840
               name);
2841
      else
2842
        error ("Cannot resolve function %s to any overloaded instance",
2843
               func_name);
2844
    }
2845
  else if (oload_non_standard)
2846
    {
2847
      if (method)
2848
        warning ("Using non-standard conversion to match method %s%s%s to supplied arguments",
2849
                 obj_type_name,
2850
                 (obj_type_name && *obj_type_name) ? "::" : "",
2851
                 name);
2852
      else
2853
        warning ("Using non-standard conversion to match function %s to supplied arguments",
2854
                 func_name);
2855
    }
2856
 
2857
  if (method)
2858
    {
2859
      if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ))
2860
        *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
2861
      else
2862
        *valp = value_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
2863
    }
2864
  else
2865
    {
2866
      *symp = oload_syms[oload_champ];
2867
      xfree (func_name);
2868
    }
2869
 
2870
  return oload_incompatible ? 100 : (oload_non_standard ? 10 : 0);
2871
}
2872
 
2873
/* C++: return 1 is NAME is a legitimate name for the destructor
2874
   of type TYPE.  If TYPE does not have a destructor, or
2875
   if NAME is inappropriate for TYPE, an error is signaled.  */
2876
int
2877
destructor_name_p (const char *name, const struct type *type)
2878
{
2879
  /* destructors are a special case.  */
2880
 
2881
  if (name[0] == '~')
2882
    {
2883
      char *dname = type_name_no_tag (type);
2884
      char *cp = strchr (dname, '<');
2885
      unsigned int len;
2886
 
2887
      /* Do not compare the template part for template classes.  */
2888
      if (cp == NULL)
2889
        len = strlen (dname);
2890
      else
2891
        len = cp - dname;
2892
      if (strlen (name + 1) != len || !STREQN (dname, name + 1, len))
2893
        error ("name of destructor must equal name of class");
2894
      else
2895
        return 1;
2896
    }
2897
  return 0;
2898
}
2899
 
2900
/* Helper function for check_field: Given TYPE, a structure/union,
2901
   return 1 if the component named NAME from the ultimate
2902
   target structure/union is defined, otherwise, return 0. */
2903
 
2904
static int
2905
check_field_in (register struct type *type, const char *name)
2906
{
2907
  register int i;
2908
 
2909
  for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2910
    {
2911
      char *t_field_name = TYPE_FIELD_NAME (type, i);
2912
      if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2913
        return 1;
2914
    }
2915
 
2916
  /* C++: If it was not found as a data field, then try to
2917
     return it as a pointer to a method.  */
2918
 
2919
  /* Destructors are a special case.  */
2920
  if (destructor_name_p (name, type))
2921
    {
2922
      int m_index, f_index;
2923
 
2924
      return get_destructor_fn_field (type, &m_index, &f_index);
2925
    }
2926
 
2927
  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2928
    {
2929
      if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2930
        return 1;
2931
    }
2932
 
2933
  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2934
    if (check_field_in (TYPE_BASECLASS (type, i), name))
2935
      return 1;
2936
 
2937
  return 0;
2938
}
2939
 
2940
 
2941
/* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2942
   return 1 if the component named NAME from the ultimate
2943
   target structure/union is defined, otherwise, return 0.  */
2944
 
2945
int
2946
check_field (register value_ptr arg1, const char *name)
2947
{
2948
  register struct type *t;
2949
 
2950
  COERCE_ARRAY (arg1);
2951
 
2952
  t = VALUE_TYPE (arg1);
2953
 
2954
  /* Follow pointers until we get to a non-pointer.  */
2955
 
2956
  for (;;)
2957
    {
2958
      CHECK_TYPEDEF (t);
2959
      if (TYPE_CODE (t) != TYPE_CODE_PTR && TYPE_CODE (t) != TYPE_CODE_REF)
2960
        break;
2961
      t = TYPE_TARGET_TYPE (t);
2962
    }
2963
 
2964
  if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2965
    error ("not implemented: member type in check_field");
2966
 
2967
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2968
      && TYPE_CODE (t) != TYPE_CODE_UNION)
2969
    error ("Internal error: `this' is not an aggregate");
2970
 
2971
  return check_field_in (t, name);
2972
}
2973
 
2974
/* C++: Given an aggregate type CURTYPE, and a member name NAME,
2975
   return the address of this member as a "pointer to member"
2976
   type.  If INTYPE is non-null, then it will be the type
2977
   of the member we are looking for.  This will help us resolve
2978
   "pointers to member functions".  This function is used
2979
   to resolve user expressions of the form "DOMAIN::NAME".  */
2980
 
2981
value_ptr
2982
value_struct_elt_for_reference (struct type *domain, int offset,
2983
                                struct type *curtype, char *name,
2984
                                struct type *intype)
2985
{
2986
  register struct type *t = curtype;
2987
  register int i;
2988
  value_ptr v;
2989
 
2990
  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2991
      && TYPE_CODE (t) != TYPE_CODE_UNION)
2992
    error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
2993
 
2994
  for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2995
    {
2996
      char *t_field_name = TYPE_FIELD_NAME (t, i);
2997
 
2998
      if (t_field_name && STREQ (t_field_name, name))
2999
        {
3000
          if (TYPE_FIELD_STATIC (t, i))
3001
            {
3002
              v = value_static_field (t, i);
3003
              if (v == NULL)
3004
                error ("Internal error: could not find static variable %s",
3005
                       name);
3006
              return v;
3007
            }
3008
          if (TYPE_FIELD_PACKED (t, i))
3009
            error ("pointers to bitfield members not allowed");
3010
 
3011
          return value_from_longest
3012
            (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
3013
                                                        domain)),
3014
             offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3015
        }
3016
    }
3017
 
3018
  /* C++: If it was not found as a data field, then try to
3019
     return it as a pointer to a method.  */
3020
 
3021
  /* Destructors are a special case.  */
3022
  if (destructor_name_p (name, t))
3023
    {
3024
      error ("member pointers to destructors not implemented yet");
3025
    }
3026
 
3027
  /* Perform all necessary dereferencing.  */
3028
  while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3029
    intype = TYPE_TARGET_TYPE (intype);
3030
 
3031
  for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3032
    {
3033
      char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3034
      char dem_opname[64];
3035
 
3036
      if (strncmp (t_field_name, "__", 2) == 0 ||
3037
          strncmp (t_field_name, "op", 2) == 0 ||
3038
          strncmp (t_field_name, "type", 4) == 0)
3039
        {
3040
          if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
3041
            t_field_name = dem_opname;
3042
          else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
3043
            t_field_name = dem_opname;
3044
        }
3045
      if (t_field_name && STREQ (t_field_name, name))
3046
        {
3047
          int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
3048
          struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3049
 
3050
          if (intype == 0 && j > 1)
3051
            error ("non-unique member `%s' requires type instantiation", name);
3052
          if (intype)
3053
            {
3054
              while (j--)
3055
                if (TYPE_FN_FIELD_TYPE (f, j) == intype)
3056
                  break;
3057
              if (j < 0)
3058
                error ("no member function matches that type instantiation");
3059
            }
3060
          else
3061
            j = 0;
3062
 
3063
          if (TYPE_FN_FIELD_STUB (f, j))
3064
            check_stub_method (t, i, j);
3065
          if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3066
            {
3067
              return value_from_longest
3068
                (lookup_reference_type
3069
                 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
3070
                                      domain)),
3071
                 (LONGEST) METHOD_PTR_FROM_VOFFSET (TYPE_FN_FIELD_VOFFSET (f, j)));
3072
            }
3073
          else
3074
            {
3075
              struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3076
                                                0, VAR_NAMESPACE, 0, NULL);
3077
              if (s == NULL)
3078
                {
3079
                  v = 0;
3080
                }
3081
              else
3082
                {
3083
                  v = read_var_value (s, 0);
3084
#if 0
3085
                  VALUE_TYPE (v) = lookup_reference_type
3086
                    (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
3087
                                         domain));
3088
#endif
3089
                }
3090
              return v;
3091
            }
3092
        }
3093
    }
3094
  for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3095
    {
3096
      value_ptr v;
3097
      int base_offset;
3098
 
3099
      if (BASETYPE_VIA_VIRTUAL (t, i))
3100
        base_offset = 0;
3101
      else
3102
        base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3103
      v = value_struct_elt_for_reference (domain,
3104
                                          offset + base_offset,
3105
                                          TYPE_BASECLASS (t, i),
3106
                                          name,
3107
                                          intype);
3108
      if (v)
3109
        return v;
3110
    }
3111
  return 0;
3112
}
3113
 
3114
 
3115
/* Given a pointer value V, find the real (RTTI) type
3116
   of the object it points to.
3117
   Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3118
   and refer to the values computed for the object pointed to. */
3119
 
3120
struct type *
3121
value_rtti_target_type (value_ptr v, int *full, int *top, int *using_enc)
3122
{
3123
  value_ptr target;
3124
 
3125
  target = value_ind (v);
3126
 
3127
  return value_rtti_type (target, full, top, using_enc);
3128
}
3129
 
3130
/* Given a value pointed to by ARGP, check its real run-time type, and
3131
   if that is different from the enclosing type, create a new value
3132
   using the real run-time type as the enclosing type (and of the same
3133
   type as ARGP) and return it, with the embedded offset adjusted to
3134
   be the correct offset to the enclosed object
3135
   RTYPE is the type, and XFULL, XTOP, and XUSING_ENC are the other
3136
   parameters, computed by value_rtti_type(). If these are available,
3137
   they can be supplied and a second call to value_rtti_type() is avoided.
3138
   (Pass RTYPE == NULL if they're not available */
3139
 
3140
value_ptr
3141
value_full_object (value_ptr argp, struct type *rtype, int xfull, int xtop,
3142
                   int xusing_enc)
3143
{
3144
  struct type *real_type;
3145
  int full = 0;
3146
  int top = -1;
3147
  int using_enc = 0;
3148
  value_ptr new_val;
3149
 
3150
  if (rtype)
3151
    {
3152
      real_type = rtype;
3153
      full = xfull;
3154
      top = xtop;
3155
      using_enc = xusing_enc;
3156
    }
3157
  else
3158
    real_type = value_rtti_type (argp, &full, &top, &using_enc);
3159
 
3160
  /* If no RTTI data, or if object is already complete, do nothing */
3161
  if (!real_type || real_type == VALUE_ENCLOSING_TYPE (argp))
3162
    return argp;
3163
 
3164
  /* If we have the full object, but for some reason the enclosing
3165
     type is wrong, set it *//* pai: FIXME -- sounds iffy */
3166
  if (full)
3167
    {
3168
      argp = value_change_enclosing_type (argp, real_type);
3169
      return argp;
3170
    }
3171
 
3172
  /* Check if object is in memory */
3173
  if (VALUE_LVAL (argp) != lval_memory)
3174
    {
3175
      warning ("Couldn't retrieve complete object of RTTI type %s; object may be in register(s).", TYPE_NAME (real_type));
3176
 
3177
      return argp;
3178
    }
3179
 
3180
  /* All other cases -- retrieve the complete object */
3181
  /* Go back by the computed top_offset from the beginning of the object,
3182
     adjusting for the embedded offset of argp if that's what value_rtti_type
3183
     used for its computation. */
3184
  new_val = value_at_lazy (real_type, VALUE_ADDRESS (argp) - top +
3185
                           (using_enc ? 0 : VALUE_EMBEDDED_OFFSET (argp)),
3186
                           VALUE_BFD_SECTION (argp));
3187
  VALUE_TYPE (new_val) = VALUE_TYPE (argp);
3188
  VALUE_EMBEDDED_OFFSET (new_val) = using_enc ? top + VALUE_EMBEDDED_OFFSET (argp) : top;
3189
  return new_val;
3190
}
3191
 
3192
 
3193
 
3194
 
3195
/* C++: return the value of the class instance variable, if one exists.
3196
   Flag COMPLAIN signals an error if the request is made in an
3197
   inappropriate context.  */
3198
 
3199
value_ptr
3200
value_of_this (int complain)
3201
{
3202
  struct symbol *func, *sym;
3203
  struct block *b;
3204
  int i;
3205
  static const char funny_this[] = "this";
3206
  value_ptr this;
3207
 
3208
  if (selected_frame == 0)
3209
    {
3210
      if (complain)
3211
        error ("no frame selected");
3212
      else
3213
        return 0;
3214
    }
3215
 
3216
  func = get_frame_function (selected_frame);
3217
  if (!func)
3218
    {
3219
      if (complain)
3220
        error ("no `this' in nameless context");
3221
      else
3222
        return 0;
3223
    }
3224
 
3225
  b = SYMBOL_BLOCK_VALUE (func);
3226
  i = BLOCK_NSYMS (b);
3227
  if (i <= 0)
3228
    {
3229
      if (complain)
3230
        error ("no args, no `this'");
3231
      else
3232
        return 0;
3233
    }
3234
 
3235
  /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
3236
     symbol instead of the LOC_ARG one (if both exist).  */
3237
  sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
3238
  if (sym == NULL)
3239
    {
3240
      if (complain)
3241
        error ("current stack frame not in method");
3242
      else
3243
        return NULL;
3244
    }
3245
 
3246
  this = read_var_value (sym, selected_frame);
3247
  if (this == 0 && complain)
3248
    error ("`this' argument at unknown address");
3249
  return this;
3250
}
3251
 
3252
/* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
3253
   long, starting at LOWBOUND.  The result has the same lower bound as
3254
   the original ARRAY.  */
3255
 
3256
value_ptr
3257
value_slice (value_ptr array, int lowbound, int length)
3258
{
3259
  struct type *slice_range_type, *slice_type, *range_type;
3260
  LONGEST lowerbound, upperbound, offset;
3261
  value_ptr slice;
3262
  struct type *array_type;
3263
  array_type = check_typedef (VALUE_TYPE (array));
3264
  COERCE_VARYING_ARRAY (array, array_type);
3265
  if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3266
      && TYPE_CODE (array_type) != TYPE_CODE_STRING
3267
      && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
3268
    error ("cannot take slice of non-array");
3269
  range_type = TYPE_INDEX_TYPE (array_type);
3270
  if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3271
    error ("slice from bad array or bitstring");
3272
  if (lowbound < lowerbound || length < 0
3273
      || lowbound + length - 1 > upperbound
3274
  /* Chill allows zero-length strings but not arrays. */
3275
      || (current_language->la_language == language_chill
3276
          && length == 0 && TYPE_CODE (array_type) == TYPE_CODE_ARRAY))
3277
    error ("slice out of range");
3278
  /* FIXME-type-allocation: need a way to free this type when we are
3279
     done with it.  */
3280
  slice_range_type = create_range_type ((struct type *) NULL,
3281
                                        TYPE_TARGET_TYPE (range_type),
3282
                                        lowbound, lowbound + length - 1);
3283
  if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
3284
    {
3285
      int i;
3286
      slice_type = create_set_type ((struct type *) NULL, slice_range_type);
3287
      TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
3288
      slice = value_zero (slice_type, not_lval);
3289
      for (i = 0; i < length; i++)
3290
        {
3291
          int element = value_bit_index (array_type,
3292
                                         VALUE_CONTENTS (array),
3293
                                         lowbound + i);
3294
          if (element < 0)
3295
            error ("internal error accessing bitstring");
3296
          else if (element > 0)
3297
            {
3298
              int j = i % TARGET_CHAR_BIT;
3299
              if (BITS_BIG_ENDIAN)
3300
                j = TARGET_CHAR_BIT - 1 - j;
3301
              VALUE_CONTENTS_RAW (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
3302
            }
3303
        }
3304
      /* We should set the address, bitssize, and bitspos, so the clice
3305
         can be used on the LHS, but that may require extensions to
3306
         value_assign.  For now, just leave as a non_lval.  FIXME.  */
3307
    }
3308
  else
3309
    {
3310
      struct type *element_type = TYPE_TARGET_TYPE (array_type);
3311
      offset
3312
        = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3313
      slice_type = create_array_type ((struct type *) NULL, element_type,
3314
                                      slice_range_type);
3315
      TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3316
      slice = allocate_value (slice_type);
3317
      if (VALUE_LAZY (array))
3318
        VALUE_LAZY (slice) = 1;
3319
      else
3320
        memcpy (VALUE_CONTENTS (slice), VALUE_CONTENTS (array) + offset,
3321
                TYPE_LENGTH (slice_type));
3322
      if (VALUE_LVAL (array) == lval_internalvar)
3323
        VALUE_LVAL (slice) = lval_internalvar_component;
3324
      else
3325
        VALUE_LVAL (slice) = VALUE_LVAL (array);
3326
      VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
3327
      VALUE_OFFSET (slice) = VALUE_OFFSET (array) + offset;
3328
    }
3329
  return slice;
3330
}
3331
 
3332
/* Assuming chill_varying_type (VARRAY) is true, return an equivalent
3333
   value as a fixed-length array. */
3334
 
3335
value_ptr
3336
varying_to_slice (value_ptr varray)
3337
{
3338
  struct type *vtype = check_typedef (VALUE_TYPE (varray));
3339
  LONGEST length = unpack_long (TYPE_FIELD_TYPE (vtype, 0),
3340
                                VALUE_CONTENTS (varray)
3341
                                + TYPE_FIELD_BITPOS (vtype, 0) / 8);
3342
  return value_slice (value_primitive_field (varray, 0, 1, vtype), 0, length);
3343
}
3344
 
3345
/* Create a value for a FORTRAN complex number.  Currently most of
3346
   the time values are coerced to COMPLEX*16 (i.e. a complex number
3347
   composed of 2 doubles.  This really should be a smarter routine
3348
   that figures out precision inteligently as opposed to assuming
3349
   doubles. FIXME: fmb */
3350
 
3351
value_ptr
3352
value_literal_complex (value_ptr arg1, value_ptr arg2, struct type *type)
3353
{
3354
  register value_ptr val;
3355
  struct type *real_type = TYPE_TARGET_TYPE (type);
3356
 
3357
  val = allocate_value (type);
3358
  arg1 = value_cast (real_type, arg1);
3359
  arg2 = value_cast (real_type, arg2);
3360
 
3361
  memcpy (VALUE_CONTENTS_RAW (val),
3362
          VALUE_CONTENTS (arg1), TYPE_LENGTH (real_type));
3363
  memcpy (VALUE_CONTENTS_RAW (val) + TYPE_LENGTH (real_type),
3364
          VALUE_CONTENTS (arg2), TYPE_LENGTH (real_type));
3365
  return val;
3366
}
3367
 
3368
/* Cast a value into the appropriate complex data type. */
3369
 
3370
static value_ptr
3371
cast_into_complex (struct type *type, register value_ptr val)
3372
{
3373
  struct type *real_type = TYPE_TARGET_TYPE (type);
3374
  if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
3375
    {
3376
      struct type *val_real_type = TYPE_TARGET_TYPE (VALUE_TYPE (val));
3377
      value_ptr re_val = allocate_value (val_real_type);
3378
      value_ptr im_val = allocate_value (val_real_type);
3379
 
3380
      memcpy (VALUE_CONTENTS_RAW (re_val),
3381
              VALUE_CONTENTS (val), TYPE_LENGTH (val_real_type));
3382
      memcpy (VALUE_CONTENTS_RAW (im_val),
3383
              VALUE_CONTENTS (val) + TYPE_LENGTH (val_real_type),
3384
              TYPE_LENGTH (val_real_type));
3385
 
3386
      return value_literal_complex (re_val, im_val, type);
3387
    }
3388
  else if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT
3389
           || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT)
3390
    return value_literal_complex (val, value_zero (real_type, not_lval), type);
3391
  else
3392
    error ("cannot cast non-number to complex");
3393
}
3394
 
3395
void
3396
_initialize_valops (void)
3397
{
3398
#if 0
3399
  add_show_from_set
3400
    (add_set_cmd ("abandon", class_support, var_boolean, (char *) &auto_abandon,
3401
                  "Set automatic abandonment of expressions upon failure.",
3402
                  &setlist),
3403
     &showlist);
3404
#endif
3405
 
3406
  add_show_from_set
3407
    (add_set_cmd ("overload-resolution", class_support, var_boolean, (char *) &overload_resolution,
3408
                  "Set overload resolution in evaluating C++ functions.",
3409
                  &setlist),
3410
     &showlist);
3411
  overload_resolution = 1;
3412
 
3413
  add_show_from_set (
3414
  add_set_cmd ("unwindonsignal", no_class, var_boolean,
3415
               (char *) &unwind_on_signal_p,
3416
"Set unwinding of stack if a signal is received while in a call dummy.\n\
3417
The unwindonsignal lets the user determine what gdb should do if a signal\n\
3418
is received while in a function called from gdb (call dummy).  If set, gdb\n\
3419
unwinds the stack and restore the context to what as it was before the call.\n\
3420
The default is to stop in the frame where the signal was received.", &setlist),
3421
                     &showlist);
3422
}

powered by: WebSVN 2.1.0

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