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

Subversion Repositories openrisc_me

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 330 jeremybenn
/* Support routines for decoding "stabs" debugging information format.
2
 
3
   Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4
   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5
   2008, 2009, 2010 Free Software Foundation, Inc.
6
 
7
   This file is part of GDB.
8
 
9
   This program is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 3 of the License, or
12
   (at your option) any later version.
13
 
14
   This program is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
 
22
/* Support routines for reading and decoding debugging information in
23
   the "stabs" format.  This format is used with many systems that use
24
   the a.out object file format, as well as some systems that use
25
   COFF or ELF where the stabs data is placed in a special section.
26
   Avoid placing any object file format specific code in this file. */
27
 
28
#include "defs.h"
29
#include "gdb_string.h"
30
#include "bfd.h"
31
#include "gdb_obstack.h"
32
#include "symtab.h"
33
#include "gdbtypes.h"
34
#include "expression.h"
35
#include "symfile.h"
36
#include "objfiles.h"
37
#include "aout/stab_gnu.h"      /* We always use GNU stabs, not native */
38
#include "libaout.h"
39
#include "aout/aout64.h"
40
#include "gdb-stabs.h"
41
#include "buildsym.h"
42
#include "complaints.h"
43
#include "demangle.h"
44
#include "language.h"
45
#include "doublest.h"
46
#include "cp-abi.h"
47
#include "cp-support.h"
48
#include "gdb_assert.h"
49
 
50
#include <ctype.h>
51
 
52
/* Ask stabsread.h to define the vars it normally declares `extern'.  */
53
#define EXTERN
54
/**/
55
#include "stabsread.h"          /* Our own declarations */
56
#undef  EXTERN
57
 
58
extern void _initialize_stabsread (void);
59
 
60
/* The routines that read and process a complete stabs for a C struct or
61
   C++ class pass lists of data member fields and lists of member function
62
   fields in an instance of a field_info structure, as defined below.
63
   This is part of some reorganization of low level C++ support and is
64
   expected to eventually go away... (FIXME) */
65
 
66
struct field_info
67
  {
68
    struct nextfield
69
      {
70
        struct nextfield *next;
71
 
72
        /* This is the raw visibility from the stab.  It is not checked
73
           for being one of the visibilities we recognize, so code which
74
           examines this field better be able to deal.  */
75
        int visibility;
76
 
77
        struct field field;
78
      }
79
     *list;
80
    struct next_fnfieldlist
81
      {
82
        struct next_fnfieldlist *next;
83
        struct fn_fieldlist fn_fieldlist;
84
      }
85
     *fnlist;
86
  };
87
 
88
static void
89
read_one_struct_field (struct field_info *, char **, char *,
90
                       struct type *, struct objfile *);
91
 
92
static struct type *dbx_alloc_type (int[2], struct objfile *);
93
 
94
static long read_huge_number (char **, int, int *, int);
95
 
96
static struct type *error_type (char **, struct objfile *);
97
 
98
static void
99
patch_block_stabs (struct pending *, struct pending_stabs *,
100
                   struct objfile *);
101
 
102
static void fix_common_block (struct symbol *, int);
103
 
104
static int read_type_number (char **, int *);
105
 
106
static struct type *read_type (char **, struct objfile *);
107
 
108
static struct type *read_range_type (char **, int[2], int, struct objfile *);
109
 
110
static struct type *read_sun_builtin_type (char **, int[2], struct objfile *);
111
 
112
static struct type *read_sun_floating_type (char **, int[2],
113
                                            struct objfile *);
114
 
115
static struct type *read_enum_type (char **, struct type *, struct objfile *);
116
 
117
static struct type *rs6000_builtin_type (int, struct objfile *);
118
 
119
static int
120
read_member_functions (struct field_info *, char **, struct type *,
121
                       struct objfile *);
122
 
123
static int
124
read_struct_fields (struct field_info *, char **, struct type *,
125
                    struct objfile *);
126
 
127
static int
128
read_baseclasses (struct field_info *, char **, struct type *,
129
                  struct objfile *);
130
 
131
static int
132
read_tilde_fields (struct field_info *, char **, struct type *,
133
                   struct objfile *);
134
 
135
static int attach_fn_fields_to_type (struct field_info *, struct type *);
136
 
137
static int attach_fields_to_type (struct field_info *, struct type *,
138
                                  struct objfile *);
139
 
140
static struct type *read_struct_type (char **, struct type *,
141
                                      enum type_code,
142
                                      struct objfile *);
143
 
144
static struct type *read_array_type (char **, struct type *,
145
                                     struct objfile *);
146
 
147
static struct field *read_args (char **, int, struct objfile *, int *, int *);
148
 
149
static void add_undefined_type (struct type *, int[2]);
150
 
151
static int
152
read_cpp_abbrev (struct field_info *, char **, struct type *,
153
                 struct objfile *);
154
 
155
static char *find_name_end (char *name);
156
 
157
static int process_reference (char **string);
158
 
159
void stabsread_clear_cache (void);
160
 
161
static const char vptr_name[] = "_vptr$";
162
static const char vb_name[] = "_vb$";
163
 
164
static void
165
invalid_cpp_abbrev_complaint (const char *arg1)
166
{
167
  complaint (&symfile_complaints, _("invalid C++ abbreviation `%s'"), arg1);
168
}
169
 
170
static void
171
reg_value_complaint (int regnum, int num_regs, const char *sym)
172
{
173
  complaint (&symfile_complaints,
174
             _("register number %d too large (max %d) in symbol %s"),
175
             regnum, num_regs - 1, sym);
176
}
177
 
178
static void
179
stabs_general_complaint (const char *arg1)
180
{
181
  complaint (&symfile_complaints, "%s", arg1);
182
}
183
 
184
/* Make a list of forward references which haven't been defined.  */
185
 
186
static struct type **undef_types;
187
static int undef_types_allocated;
188
static int undef_types_length;
189
static struct symbol *current_symbol = NULL;
190
 
191
/* Make a list of nameless types that are undefined.
192
   This happens when another type is referenced by its number
193
   before this type is actually defined. For instance "t(0,1)=k(0,2)"
194
   and type (0,2) is defined only later.  */
195
 
196
struct nat
197
{
198
  int typenums[2];
199
  struct type *type;
200
};
201
static struct nat *noname_undefs;
202
static int noname_undefs_allocated;
203
static int noname_undefs_length;
204
 
205
/* Check for and handle cretinous stabs symbol name continuation!  */
206
#define STABS_CONTINUE(pp,objfile)                              \
207
  do {                                                  \
208
    if (**(pp) == '\\' || (**(pp) == '?' && (*(pp))[1] == '\0')) \
209
      *(pp) = next_symbol_text (objfile);       \
210
  } while (0)
211
 
212
 
213
/* Look up a dbx type-number pair.  Return the address of the slot
214
   where the type for that number-pair is stored.
215
   The number-pair is in TYPENUMS.
216
 
217
   This can be used for finding the type associated with that pair
218
   or for associating a new type with the pair.  */
219
 
220
static struct type **
221
dbx_lookup_type (int typenums[2], struct objfile *objfile)
222
{
223
  int filenum = typenums[0];
224
  int index = typenums[1];
225
  unsigned old_len;
226
  int real_filenum;
227
  struct header_file *f;
228
  int f_orig_length;
229
 
230
  if (filenum == -1)            /* -1,-1 is for temporary types.  */
231
    return 0;
232
 
233
  if (filenum < 0 || filenum >= n_this_object_header_files)
234
    {
235
      complaint (&symfile_complaints,
236
                 _("Invalid symbol data: type number (%d,%d) out of range at symtab pos %d."),
237
                 filenum, index, symnum);
238
      goto error_return;
239
    }
240
 
241
  if (filenum == 0)
242
    {
243
      if (index < 0)
244
        {
245
          /* Caller wants address of address of type.  We think
246
             that negative (rs6k builtin) types will never appear as
247
             "lvalues", (nor should they), so we stuff the real type
248
             pointer into a temp, and return its address.  If referenced,
249
             this will do the right thing.  */
250
          static struct type *temp_type;
251
 
252
          temp_type = rs6000_builtin_type (index, objfile);
253
          return &temp_type;
254
        }
255
 
256
      /* Type is defined outside of header files.
257
         Find it in this object file's type vector.  */
258
      if (index >= type_vector_length)
259
        {
260
          old_len = type_vector_length;
261
          if (old_len == 0)
262
            {
263
              type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
264
              type_vector = (struct type **)
265
                xmalloc (type_vector_length * sizeof (struct type *));
266
            }
267
          while (index >= type_vector_length)
268
            {
269
              type_vector_length *= 2;
270
            }
271
          type_vector = (struct type **)
272
            xrealloc ((char *) type_vector,
273
                      (type_vector_length * sizeof (struct type *)));
274
          memset (&type_vector[old_len], 0,
275
                  (type_vector_length - old_len) * sizeof (struct type *));
276
        }
277
      return (&type_vector[index]);
278
    }
279
  else
280
    {
281
      real_filenum = this_object_header_files[filenum];
282
 
283
      if (real_filenum >= N_HEADER_FILES (objfile))
284
        {
285
          static struct type *temp_type;
286
 
287
          warning (_("GDB internal error: bad real_filenum"));
288
 
289
        error_return:
290
          temp_type = objfile_type (objfile)->builtin_error;
291
          return &temp_type;
292
        }
293
 
294
      f = HEADER_FILES (objfile) + real_filenum;
295
 
296
      f_orig_length = f->length;
297
      if (index >= f_orig_length)
298
        {
299
          while (index >= f->length)
300
            {
301
              f->length *= 2;
302
            }
303
          f->vector = (struct type **)
304
            xrealloc ((char *) f->vector, f->length * sizeof (struct type *));
305
          memset (&f->vector[f_orig_length], 0,
306
                  (f->length - f_orig_length) * sizeof (struct type *));
307
        }
308
      return (&f->vector[index]);
309
    }
310
}
311
 
312
/* Make sure there is a type allocated for type numbers TYPENUMS
313
   and return the type object.
314
   This can create an empty (zeroed) type object.
315
   TYPENUMS may be (-1, -1) to return a new type object that is not
316
   put into the type vector, and so may not be referred to by number. */
317
 
318
static struct type *
319
dbx_alloc_type (int typenums[2], struct objfile *objfile)
320
{
321
  struct type **type_addr;
322
 
323
  if (typenums[0] == -1)
324
    {
325
      return (alloc_type (objfile));
326
    }
327
 
328
  type_addr = dbx_lookup_type (typenums, objfile);
329
 
330
  /* If we are referring to a type not known at all yet,
331
     allocate an empty type for it.
332
     We will fill it in later if we find out how.  */
333
  if (*type_addr == 0)
334
    {
335
      *type_addr = alloc_type (objfile);
336
    }
337
 
338
  return (*type_addr);
339
}
340
 
341
/* for all the stabs in a given stab vector, build appropriate types
342
   and fix their symbols in given symbol vector. */
343
 
344
static void
345
patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs,
346
                   struct objfile *objfile)
347
{
348
  int ii;
349
  char *name;
350
  char *pp;
351
  struct symbol *sym;
352
 
353
  if (stabs)
354
    {
355
      /* for all the stab entries, find their corresponding symbols and
356
         patch their types! */
357
 
358
      for (ii = 0; ii < stabs->count; ++ii)
359
        {
360
          name = stabs->stab[ii];
361
          pp = (char *) strchr (name, ':');
362
          gdb_assert (pp);      /* Must find a ':' or game's over.  */
363
          while (pp[1] == ':')
364
            {
365
              pp += 2;
366
              pp = (char *) strchr (pp, ':');
367
            }
368
          sym = find_symbol_in_list (symbols, name, pp - name);
369
          if (!sym)
370
            {
371
              /* FIXME-maybe: it would be nice if we noticed whether
372
                 the variable was defined *anywhere*, not just whether
373
                 it is defined in this compilation unit.  But neither
374
                 xlc or GCC seem to need such a definition, and until
375
                 we do psymtabs (so that the minimal symbols from all
376
                 compilation units are available now), I'm not sure
377
                 how to get the information.  */
378
 
379
              /* On xcoff, if a global is defined and never referenced,
380
                 ld will remove it from the executable.  There is then
381
                 a N_GSYM stab for it, but no regular (C_EXT) symbol.  */
382
              sym = (struct symbol *)
383
                obstack_alloc (&objfile->objfile_obstack,
384
                               sizeof (struct symbol));
385
 
386
              memset (sym, 0, sizeof (struct symbol));
387
              SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
388
              SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
389
              SYMBOL_SET_LINKAGE_NAME
390
                (sym, obsavestring (name, pp - name,
391
                                    &objfile->objfile_obstack));
392
              pp += 2;
393
              if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
394
                {
395
                  /* I don't think the linker does this with functions,
396
                     so as far as I know this is never executed.
397
                     But it doesn't hurt to check.  */
398
                  SYMBOL_TYPE (sym) =
399
                    lookup_function_type (read_type (&pp, objfile));
400
                }
401
              else
402
                {
403
                  SYMBOL_TYPE (sym) = read_type (&pp, objfile);
404
                }
405
              add_symbol_to_list (sym, &global_symbols);
406
            }
407
          else
408
            {
409
              pp += 2;
410
              if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
411
                {
412
                  SYMBOL_TYPE (sym) =
413
                    lookup_function_type (read_type (&pp, objfile));
414
                }
415
              else
416
                {
417
                  SYMBOL_TYPE (sym) = read_type (&pp, objfile);
418
                }
419
            }
420
        }
421
    }
422
}
423
 
424
 
425
/* Read a number by which a type is referred to in dbx data,
426
   or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
427
   Just a single number N is equivalent to (0,N).
428
   Return the two numbers by storing them in the vector TYPENUMS.
429
   TYPENUMS will then be used as an argument to dbx_lookup_type.
430
 
431
   Returns 0 for success, -1 for error.  */
432
 
433
static int
434
read_type_number (char **pp, int *typenums)
435
{
436
  int nbits;
437
 
438
  if (**pp == '(')
439
    {
440
      (*pp)++;
441
      typenums[0] = read_huge_number (pp, ',', &nbits, 0);
442
      if (nbits != 0)
443
        return -1;
444
      typenums[1] = read_huge_number (pp, ')', &nbits, 0);
445
      if (nbits != 0)
446
        return -1;
447
    }
448
  else
449
    {
450
      typenums[0] = 0;
451
      typenums[1] = read_huge_number (pp, 0, &nbits, 0);
452
      if (nbits != 0)
453
        return -1;
454
    }
455
  return 0;
456
}
457
 
458
 
459
#define VISIBILITY_PRIVATE      '0'     /* Stabs character for private field */
460
#define VISIBILITY_PROTECTED    '1'     /* Stabs character for protected fld */
461
#define VISIBILITY_PUBLIC       '2'     /* Stabs character for public field */
462
#define VISIBILITY_IGNORE       '9'     /* Optimized out or zero length */
463
 
464
/* Structure for storing pointers to reference definitions for fast lookup
465
   during "process_later". */
466
 
467
struct ref_map
468
{
469
  char *stabs;
470
  CORE_ADDR value;
471
  struct symbol *sym;
472
};
473
 
474
#define MAX_CHUNK_REFS 100
475
#define REF_CHUNK_SIZE (MAX_CHUNK_REFS * sizeof (struct ref_map))
476
#define REF_MAP_SIZE(ref_chunk) ((ref_chunk) * REF_CHUNK_SIZE)
477
 
478
static struct ref_map *ref_map;
479
 
480
/* Ptr to free cell in chunk's linked list. */
481
static int ref_count = 0;
482
 
483
/* Number of chunks malloced. */
484
static int ref_chunk = 0;
485
 
486
/* This file maintains a cache of stabs aliases found in the symbol
487
   table. If the symbol table changes, this cache must be cleared
488
   or we are left holding onto data in invalid obstacks. */
489
void
490
stabsread_clear_cache (void)
491
{
492
  ref_count = 0;
493
  ref_chunk = 0;
494
}
495
 
496
/* Create array of pointers mapping refids to symbols and stab strings.
497
   Add pointers to reference definition symbols and/or their values as we
498
   find them, using their reference numbers as our index.
499
   These will be used later when we resolve references. */
500
void
501
ref_add (int refnum, struct symbol *sym, char *stabs, CORE_ADDR value)
502
{
503
  if (ref_count == 0)
504
    ref_chunk = 0;
505
  if (refnum >= ref_count)
506
    ref_count = refnum + 1;
507
  if (ref_count > ref_chunk * MAX_CHUNK_REFS)
508
    {
509
      int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS;
510
      int new_chunks = new_slots / MAX_CHUNK_REFS + 1;
511
 
512
      ref_map = (struct ref_map *)
513
        xrealloc (ref_map, REF_MAP_SIZE (ref_chunk + new_chunks));
514
      memset (ref_map + ref_chunk * MAX_CHUNK_REFS, 0,
515
              new_chunks * REF_CHUNK_SIZE);
516
      ref_chunk += new_chunks;
517
    }
518
  ref_map[refnum].stabs = stabs;
519
  ref_map[refnum].sym = sym;
520
  ref_map[refnum].value = value;
521
}
522
 
523
/* Return defined sym for the reference REFNUM.  */
524
struct symbol *
525
ref_search (int refnum)
526
{
527
  if (refnum < 0 || refnum > ref_count)
528
    return 0;
529
  return ref_map[refnum].sym;
530
}
531
 
532
/* Parse a reference id in STRING and return the resulting
533
   reference number.  Move STRING beyond the reference id.  */
534
 
535
static int
536
process_reference (char **string)
537
{
538
  char *p;
539
  int refnum = 0;
540
 
541
  if (**string != '#')
542
    return 0;
543
 
544
  /* Advance beyond the initial '#'.  */
545
  p = *string + 1;
546
 
547
  /* Read number as reference id. */
548
  while (*p && isdigit (*p))
549
    {
550
      refnum = refnum * 10 + *p - '0';
551
      p++;
552
    }
553
  *string = p;
554
  return refnum;
555
}
556
 
557
/* If STRING defines a reference, store away a pointer to the reference
558
   definition for later use.  Return the reference number.  */
559
 
560
int
561
symbol_reference_defined (char **string)
562
{
563
  char *p = *string;
564
  int refnum = 0;
565
 
566
  refnum = process_reference (&p);
567
 
568
  /* Defining symbols end in '=' */
569
  if (*p == '=')
570
    {
571
      /* Symbol is being defined here. */
572
      *string = p + 1;
573
      return refnum;
574
    }
575
  else
576
    {
577
      /* Must be a reference.   Either the symbol has already been defined,
578
         or this is a forward reference to it.  */
579
      *string = p;
580
      return -1;
581
    }
582
}
583
 
584
static int
585
stab_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
586
{
587
  int regno = gdbarch_stab_reg_to_regnum (gdbarch, SYMBOL_VALUE (sym));
588
 
589
  if (regno >= gdbarch_num_regs (gdbarch)
590
                + gdbarch_num_pseudo_regs (gdbarch))
591
    {
592
      reg_value_complaint (regno,
593
                           gdbarch_num_regs (gdbarch)
594
                             + gdbarch_num_pseudo_regs (gdbarch),
595
                           SYMBOL_PRINT_NAME (sym));
596
 
597
      regno = gdbarch_sp_regnum (gdbarch); /* Known safe, though useless */
598
    }
599
 
600
  return regno;
601
}
602
 
603
static const struct symbol_register_ops stab_register_funcs = {
604
  stab_reg_to_regnum
605
};
606
 
607
struct symbol *
608
define_symbol (CORE_ADDR valu, char *string, int desc, int type,
609
               struct objfile *objfile)
610
{
611
  struct gdbarch *gdbarch = get_objfile_arch (objfile);
612
  struct symbol *sym;
613
  char *p = (char *) find_name_end (string);
614
  int deftype;
615
  int synonym = 0;
616
  int i;
617
  char *new_name = NULL;
618
 
619
  /* We would like to eliminate nameless symbols, but keep their types.
620
     E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
621
     to type 2, but, should not create a symbol to address that type. Since
622
     the symbol will be nameless, there is no way any user can refer to it. */
623
 
624
  int nameless;
625
 
626
  /* Ignore syms with empty names.  */
627
  if (string[0] == 0)
628
    return 0;
629
 
630
  /* Ignore old-style symbols from cc -go  */
631
  if (p == 0)
632
    return 0;
633
 
634
  while (p[1] == ':')
635
    {
636
      p += 2;
637
      p = strchr (p, ':');
638
    }
639
 
640
  /* If a nameless stab entry, all we need is the type, not the symbol.
641
     e.g. ":t10=*2" or a nameless enum like " :T16=ered:0,green:1,blue:2,;" */
642
  nameless = (p == string || ((string[0] == ' ') && (string[1] == ':')));
643
 
644
  current_symbol = sym = (struct symbol *)
645
    obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
646
  memset (sym, 0, sizeof (struct symbol));
647
 
648
  switch (type & N_TYPE)
649
    {
650
    case N_TEXT:
651
      SYMBOL_SECTION (sym) = SECT_OFF_TEXT (objfile);
652
      break;
653
    case N_DATA:
654
      SYMBOL_SECTION (sym) = SECT_OFF_DATA (objfile);
655
      break;
656
    case N_BSS:
657
      SYMBOL_SECTION (sym) = SECT_OFF_BSS (objfile);
658
      break;
659
    }
660
 
661
  if (processing_gcc_compilation)
662
    {
663
      /* GCC 2.x puts the line number in desc.  SunOS apparently puts in the
664
         number of bytes occupied by a type or object, which we ignore.  */
665
      SYMBOL_LINE (sym) = desc;
666
    }
667
  else
668
    {
669
      SYMBOL_LINE (sym) = 0;     /* unknown */
670
    }
671
 
672
  if (is_cplus_marker (string[0]))
673
    {
674
      /* Special GNU C++ names.  */
675
      switch (string[1])
676
        {
677
        case 't':
678
          SYMBOL_SET_LINKAGE_NAME (sym, "this");
679
          break;
680
 
681
        case 'v':               /* $vtbl_ptr_type */
682
          goto normal;
683
 
684
        case 'e':
685
          SYMBOL_SET_LINKAGE_NAME (sym, "eh_throw");
686
          break;
687
 
688
        case '_':
689
          /* This was an anonymous type that was never fixed up.  */
690
          goto normal;
691
 
692
        case 'X':
693
          /* SunPRO (3.0 at least) static variable encoding.  */
694
          if (gdbarch_static_transform_name_p (gdbarch))
695
            goto normal;
696
          /* ... fall through ... */
697
 
698
        default:
699
          complaint (&symfile_complaints, _("Unknown C++ symbol name `%s'"),
700
                     string);
701
          goto normal;          /* Do *something* with it */
702
        }
703
    }
704
  else
705
    {
706
    normal:
707
      SYMBOL_LANGUAGE (sym) = current_subfile->language;
708
      if (SYMBOL_LANGUAGE (sym) == language_cplus)
709
        {
710
          char *name = alloca (p - string + 1);
711
 
712
          memcpy (name, string, p - string);
713
          name[p - string] = '\0';
714
          new_name = cp_canonicalize_string (name);
715
          cp_scan_for_anonymous_namespaces (sym);
716
        }
717
      if (new_name != NULL)
718
        {
719
          SYMBOL_SET_NAMES (sym, new_name, strlen (new_name), 1, objfile);
720
          xfree (new_name);
721
        }
722
      else
723
        SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
724
    }
725
  p++;
726
 
727
  /* Determine the type of name being defined.  */
728
#if 0
729
  /* Getting GDB to correctly skip the symbol on an undefined symbol
730
     descriptor and not ever dump core is a very dodgy proposition if
731
     we do things this way.  I say the acorn RISC machine can just
732
     fix their compiler.  */
733
  /* The Acorn RISC machine's compiler can put out locals that don't
734
     start with "234=" or "(3,4)=", so assume anything other than the
735
     deftypes we know how to handle is a local.  */
736
  if (!strchr ("cfFGpPrStTvVXCR", *p))
737
#else
738
  if (isdigit (*p) || *p == '(' || *p == '-')
739
#endif
740
    deftype = 'l';
741
  else
742
    deftype = *p++;
743
 
744
  switch (deftype)
745
    {
746
    case 'c':
747
      /* c is a special case, not followed by a type-number.
748
         SYMBOL:c=iVALUE for an integer constant symbol.
749
         SYMBOL:c=rVALUE for a floating constant symbol.
750
         SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
751
         e.g. "b:c=e6,0" for "const b = blob1"
752
         (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;").  */
753
      if (*p != '=')
754
        {
755
          SYMBOL_CLASS (sym) = LOC_CONST;
756
          SYMBOL_TYPE (sym) = error_type (&p, objfile);
757
          SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
758
          add_symbol_to_list (sym, &file_symbols);
759
          return sym;
760
        }
761
      ++p;
762
      switch (*p++)
763
        {
764
        case 'r':
765
          {
766
            double d = atof (p);
767
            gdb_byte *dbl_valu;
768
            struct type *dbl_type;
769
 
770
            /* FIXME-if-picky-about-floating-accuracy: Should be using
771
               target arithmetic to get the value.  real.c in GCC
772
               probably has the necessary code.  */
773
 
774
            dbl_type = objfile_type (objfile)->builtin_double;
775
            dbl_valu =
776
              obstack_alloc (&objfile->objfile_obstack,
777
                             TYPE_LENGTH (dbl_type));
778
            store_typed_floating (dbl_valu, dbl_type, d);
779
 
780
            SYMBOL_TYPE (sym) = dbl_type;
781
            SYMBOL_VALUE_BYTES (sym) = dbl_valu;
782
            SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
783
          }
784
          break;
785
        case 'i':
786
          {
787
            /* Defining integer constants this way is kind of silly,
788
               since 'e' constants allows the compiler to give not
789
               only the value, but the type as well.  C has at least
790
               int, long, unsigned int, and long long as constant
791
               types; other languages probably should have at least
792
               unsigned as well as signed constants.  */
793
 
794
            SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_long;
795
            SYMBOL_VALUE (sym) = atoi (p);
796
            SYMBOL_CLASS (sym) = LOC_CONST;
797
          }
798
          break;
799
 
800
        case 'c':
801
          {
802
            SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_char;
803
            SYMBOL_VALUE (sym) = atoi (p);
804
            SYMBOL_CLASS (sym) = LOC_CONST;
805
          }
806
          break;
807
 
808
        case 's':
809
          {
810
            struct type *range_type;
811
            int ind = 0;
812
            char quote = *p++;
813
            gdb_byte *string_local = (gdb_byte *) alloca (strlen (p));
814
            gdb_byte *string_value;
815
 
816
            if (quote != '\'' && quote != '"')
817
              {
818
                SYMBOL_CLASS (sym) = LOC_CONST;
819
                SYMBOL_TYPE (sym) = error_type (&p, objfile);
820
                SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
821
                add_symbol_to_list (sym, &file_symbols);
822
                return sym;
823
              }
824
 
825
            /* Find matching quote, rejecting escaped quotes.  */
826
            while (*p && *p != quote)
827
              {
828
                if (*p == '\\' && p[1] == quote)
829
                  {
830
                    string_local[ind] = (gdb_byte) quote;
831
                    ind++;
832
                    p += 2;
833
                  }
834
                else if (*p)
835
                  {
836
                    string_local[ind] = (gdb_byte) (*p);
837
                    ind++;
838
                    p++;
839
                  }
840
              }
841
            if (*p != quote)
842
              {
843
                SYMBOL_CLASS (sym) = LOC_CONST;
844
                SYMBOL_TYPE (sym) = error_type (&p, objfile);
845
                SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
846
                add_symbol_to_list (sym, &file_symbols);
847
                return sym;
848
              }
849
 
850
            /* NULL terminate the string.  */
851
            string_local[ind] = 0;
852
            range_type = create_range_type (NULL,
853
                                            objfile_type (objfile)->builtin_int,
854
                                            0, ind);
855
            SYMBOL_TYPE (sym) = create_array_type (NULL,
856
                                  objfile_type (objfile)->builtin_char,
857
                                  range_type);
858
            string_value = obstack_alloc (&objfile->objfile_obstack, ind + 1);
859
            memcpy (string_value, string_local, ind + 1);
860
            p++;
861
 
862
            SYMBOL_VALUE_BYTES (sym) = string_value;
863
            SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
864
          }
865
          break;
866
 
867
        case 'e':
868
          /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
869
             can be represented as integral.
870
             e.g. "b:c=e6,0" for "const b = blob1"
871
             (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;").  */
872
          {
873
            SYMBOL_CLASS (sym) = LOC_CONST;
874
            SYMBOL_TYPE (sym) = read_type (&p, objfile);
875
 
876
            if (*p != ',')
877
              {
878
                SYMBOL_TYPE (sym) = error_type (&p, objfile);
879
                break;
880
              }
881
            ++p;
882
 
883
            /* If the value is too big to fit in an int (perhaps because
884
               it is unsigned), or something like that, we silently get
885
               a bogus value.  The type and everything else about it is
886
               correct.  Ideally, we should be using whatever we have
887
               available for parsing unsigned and long long values,
888
               however.  */
889
            SYMBOL_VALUE (sym) = atoi (p);
890
          }
891
          break;
892
        default:
893
          {
894
            SYMBOL_CLASS (sym) = LOC_CONST;
895
            SYMBOL_TYPE (sym) = error_type (&p, objfile);
896
          }
897
        }
898
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
899
      add_symbol_to_list (sym, &file_symbols);
900
      return sym;
901
 
902
    case 'C':
903
      /* The name of a caught exception.  */
904
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
905
      SYMBOL_CLASS (sym) = LOC_LABEL;
906
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
907
      SYMBOL_VALUE_ADDRESS (sym) = valu;
908
      add_symbol_to_list (sym, &local_symbols);
909
      break;
910
 
911
    case 'f':
912
      /* A static function definition.  */
913
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
914
      SYMBOL_CLASS (sym) = LOC_BLOCK;
915
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
916
      add_symbol_to_list (sym, &file_symbols);
917
      /* fall into process_function_types.  */
918
 
919
    process_function_types:
920
      /* Function result types are described as the result type in stabs.
921
         We need to convert this to the function-returning-type-X type
922
         in GDB.  E.g. "int" is converted to "function returning int".  */
923
      if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
924
        SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
925
 
926
      /* All functions in C++ have prototypes.  Stabs does not offer an
927
         explicit way to identify prototyped or unprototyped functions,
928
         but both GCC and Sun CC emit stabs for the "call-as" type rather
929
         than the "declared-as" type for unprototyped functions, so
930
         we treat all functions as if they were prototyped.  This is used
931
         primarily for promotion when calling the function from GDB.  */
932
      TYPE_PROTOTYPED (SYMBOL_TYPE (sym)) = 1;
933
 
934
      /* fall into process_prototype_types */
935
 
936
    process_prototype_types:
937
      /* Sun acc puts declared types of arguments here.  */
938
      if (*p == ';')
939
        {
940
          struct type *ftype = SYMBOL_TYPE (sym);
941
          int nsemi = 0;
942
          int nparams = 0;
943
          char *p1 = p;
944
 
945
          /* Obtain a worst case guess for the number of arguments
946
             by counting the semicolons.  */
947
          while (*p1)
948
            {
949
              if (*p1++ == ';')
950
                nsemi++;
951
            }
952
 
953
          /* Allocate parameter information fields and fill them in. */
954
          TYPE_FIELDS (ftype) = (struct field *)
955
            TYPE_ALLOC (ftype, nsemi * sizeof (struct field));
956
          while (*p++ == ';')
957
            {
958
              struct type *ptype;
959
 
960
              /* A type number of zero indicates the start of varargs.
961
                 FIXME: GDB currently ignores vararg functions.  */
962
              if (p[0] == '0' && p[1] == '\0')
963
                break;
964
              ptype = read_type (&p, objfile);
965
 
966
              /* The Sun compilers mark integer arguments, which should
967
                 be promoted to the width of the calling conventions, with
968
                 a type which references itself. This type is turned into
969
                 a TYPE_CODE_VOID type by read_type, and we have to turn
970
                 it back into builtin_int here.
971
                 FIXME: Do we need a new builtin_promoted_int_arg ?  */
972
              if (TYPE_CODE (ptype) == TYPE_CODE_VOID)
973
                ptype = objfile_type (objfile)->builtin_int;
974
              TYPE_FIELD_TYPE (ftype, nparams) = ptype;
975
              TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0;
976
            }
977
          TYPE_NFIELDS (ftype) = nparams;
978
          TYPE_PROTOTYPED (ftype) = 1;
979
        }
980
      break;
981
 
982
    case 'F':
983
      /* A global function definition.  */
984
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
985
      SYMBOL_CLASS (sym) = LOC_BLOCK;
986
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
987
      add_symbol_to_list (sym, &global_symbols);
988
      goto process_function_types;
989
 
990
    case 'G':
991
      /* For a class G (global) symbol, it appears that the
992
         value is not correct.  It is necessary to search for the
993
         corresponding linker definition to find the value.
994
         These definitions appear at the end of the namelist.  */
995
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
996
      SYMBOL_CLASS (sym) = LOC_STATIC;
997
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
998
      /* Don't add symbol references to global_sym_chain.
999
         Symbol references don't have valid names and wont't match up with
1000
         minimal symbols when the global_sym_chain is relocated.
1001
         We'll fixup symbol references when we fixup the defining symbol.  */
1002
      if (SYMBOL_LINKAGE_NAME (sym) && SYMBOL_LINKAGE_NAME (sym)[0] != '#')
1003
        {
1004
          i = hashname (SYMBOL_LINKAGE_NAME (sym));
1005
          SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
1006
          global_sym_chain[i] = sym;
1007
        }
1008
      add_symbol_to_list (sym, &global_symbols);
1009
      break;
1010
 
1011
      /* This case is faked by a conditional above,
1012
         when there is no code letter in the dbx data.
1013
         Dbx data never actually contains 'l'.  */
1014
    case 's':
1015
    case 'l':
1016
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1017
      SYMBOL_CLASS (sym) = LOC_LOCAL;
1018
      SYMBOL_VALUE (sym) = valu;
1019
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1020
      add_symbol_to_list (sym, &local_symbols);
1021
      break;
1022
 
1023
    case 'p':
1024
      if (*p == 'F')
1025
        /* pF is a two-letter code that means a function parameter in Fortran.
1026
           The type-number specifies the type of the return value.
1027
           Translate it into a pointer-to-function type.  */
1028
        {
1029
          p++;
1030
          SYMBOL_TYPE (sym)
1031
            = lookup_pointer_type
1032
            (lookup_function_type (read_type (&p, objfile)));
1033
        }
1034
      else
1035
        SYMBOL_TYPE (sym) = read_type (&p, objfile);
1036
 
1037
      SYMBOL_CLASS (sym) = LOC_ARG;
1038
      SYMBOL_VALUE (sym) = valu;
1039
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1040
      SYMBOL_IS_ARGUMENT (sym) = 1;
1041
      add_symbol_to_list (sym, &local_symbols);
1042
 
1043
      if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_BIG)
1044
        {
1045
          /* On little-endian machines, this crud is never necessary,
1046
             and, if the extra bytes contain garbage, is harmful.  */
1047
          break;
1048
        }
1049
 
1050
      /* If it's gcc-compiled, if it says `short', believe it.  */
1051
      if (processing_gcc_compilation
1052
          || gdbarch_believe_pcc_promotion (gdbarch))
1053
        break;
1054
 
1055
      if (!gdbarch_believe_pcc_promotion (gdbarch))
1056
        {
1057
          /* If PCC says a parameter is a short or a char, it is
1058
             really an int.  */
1059
          if (TYPE_LENGTH (SYMBOL_TYPE (sym))
1060
              < gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT
1061
              && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
1062
            {
1063
              SYMBOL_TYPE (sym) =
1064
                TYPE_UNSIGNED (SYMBOL_TYPE (sym))
1065
                ? objfile_type (objfile)->builtin_unsigned_int
1066
                : objfile_type (objfile)->builtin_int;
1067
            }
1068
          break;
1069
        }
1070
 
1071
    case 'P':
1072
      /* acc seems to use P to declare the prototypes of functions that
1073
         are referenced by this file.  gdb is not prepared to deal
1074
         with this extra information.  FIXME, it ought to.  */
1075
      if (type == N_FUN)
1076
        {
1077
          SYMBOL_TYPE (sym) = read_type (&p, objfile);
1078
          goto process_prototype_types;
1079
        }
1080
      /*FALLTHROUGH */
1081
 
1082
    case 'R':
1083
      /* Parameter which is in a register.  */
1084
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1085
      SYMBOL_CLASS (sym) = LOC_REGISTER;
1086
      SYMBOL_REGISTER_OPS (sym) = &stab_register_funcs;
1087
      SYMBOL_IS_ARGUMENT (sym) = 1;
1088
      SYMBOL_VALUE (sym) = valu;
1089
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1090
      add_symbol_to_list (sym, &local_symbols);
1091
      break;
1092
 
1093
    case 'r':
1094
      /* Register variable (either global or local).  */
1095
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1096
      SYMBOL_CLASS (sym) = LOC_REGISTER;
1097
      SYMBOL_REGISTER_OPS (sym) = &stab_register_funcs;
1098
      SYMBOL_VALUE (sym) = valu;
1099
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1100
      if (within_function)
1101
        {
1102
          /* Sun cc uses a pair of symbols, one 'p' and one 'r', with
1103
             the same name to represent an argument passed in a
1104
             register.  GCC uses 'P' for the same case.  So if we find
1105
             such a symbol pair we combine it into one 'P' symbol.
1106
             For Sun cc we need to do this regardless of
1107
             stabs_argument_has_addr, because the compiler puts out
1108
             the 'p' symbol even if it never saves the argument onto
1109
             the stack.
1110
 
1111
             On most machines, we want to preserve both symbols, so
1112
             that we can still get information about what is going on
1113
             with the stack (VAX for computing args_printed, using
1114
             stack slots instead of saved registers in backtraces,
1115
             etc.).
1116
 
1117
             Note that this code illegally combines
1118
             main(argc) struct foo argc; { register struct foo argc; }
1119
             but this case is considered pathological and causes a warning
1120
             from a decent compiler.  */
1121
 
1122
          if (local_symbols
1123
              && local_symbols->nsyms > 0
1124
              && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym)))
1125
            {
1126
              struct symbol *prev_sym;
1127
 
1128
              prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
1129
              if ((SYMBOL_CLASS (prev_sym) == LOC_REF_ARG
1130
                   || SYMBOL_CLASS (prev_sym) == LOC_ARG)
1131
                  && strcmp (SYMBOL_LINKAGE_NAME (prev_sym),
1132
                             SYMBOL_LINKAGE_NAME (sym)) == 0)
1133
                {
1134
                  SYMBOL_CLASS (prev_sym) = LOC_REGISTER;
1135
                  SYMBOL_REGISTER_OPS (prev_sym) = &stab_register_funcs;
1136
                  /* Use the type from the LOC_REGISTER; that is the type
1137
                     that is actually in that register.  */
1138
                  SYMBOL_TYPE (prev_sym) = SYMBOL_TYPE (sym);
1139
                  SYMBOL_VALUE (prev_sym) = SYMBOL_VALUE (sym);
1140
                  sym = prev_sym;
1141
                  break;
1142
                }
1143
            }
1144
          add_symbol_to_list (sym, &local_symbols);
1145
        }
1146
      else
1147
        add_symbol_to_list (sym, &file_symbols);
1148
      break;
1149
 
1150
    case 'S':
1151
      /* Static symbol at top level of file */
1152
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1153
      SYMBOL_CLASS (sym) = LOC_STATIC;
1154
      SYMBOL_VALUE_ADDRESS (sym) = valu;
1155
      if (gdbarch_static_transform_name_p (gdbarch)
1156
          && gdbarch_static_transform_name (gdbarch,
1157
                                            SYMBOL_LINKAGE_NAME (sym))
1158
             != SYMBOL_LINKAGE_NAME (sym))
1159
        {
1160
          struct minimal_symbol *msym;
1161
 
1162
          msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile);
1163
          if (msym != NULL)
1164
            {
1165
              char *new_name = gdbarch_static_transform_name
1166
                (gdbarch, SYMBOL_LINKAGE_NAME (sym));
1167
 
1168
              SYMBOL_SET_LINKAGE_NAME (sym, new_name);
1169
              SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
1170
            }
1171
        }
1172
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1173
      add_symbol_to_list (sym, &file_symbols);
1174
      break;
1175
 
1176
    case 't':
1177
      /* In Ada, there is no distinction between typedef and non-typedef;
1178
         any type declaration implicitly has the equivalent of a typedef,
1179
         and thus 't' is in fact equivalent to 'Tt'.
1180
 
1181
         Therefore, for Ada units, we check the character immediately
1182
         before the 't', and if we do not find a 'T', then make sure to
1183
         create the associated symbol in the STRUCT_DOMAIN ('t' definitions
1184
         will be stored in the VAR_DOMAIN).  If the symbol was indeed
1185
         defined as 'Tt' then the STRUCT_DOMAIN symbol will be created
1186
         elsewhere, so we don't need to take care of that.
1187
 
1188
         This is important to do, because of forward references:
1189
         The cleanup of undefined types stored in undef_types only uses
1190
         STRUCT_DOMAIN symbols to perform the replacement.  */
1191
      synonym = (SYMBOL_LANGUAGE (sym) == language_ada && p[-2] != 'T');
1192
 
1193
      /* Typedef */
1194
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1195
 
1196
      /* For a nameless type, we don't want a create a symbol, thus we
1197
         did not use `sym'. Return without further processing. */
1198
      if (nameless)
1199
        return NULL;
1200
 
1201
      SYMBOL_CLASS (sym) = LOC_TYPEDEF;
1202
      SYMBOL_VALUE (sym) = valu;
1203
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1204
      /* C++ vagaries: we may have a type which is derived from
1205
         a base type which did not have its name defined when the
1206
         derived class was output.  We fill in the derived class's
1207
         base part member's name here in that case.  */
1208
      if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
1209
        if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
1210
             || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
1211
            && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
1212
          {
1213
            int j;
1214
 
1215
            for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
1216
              if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
1217
                TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
1218
                  type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
1219
          }
1220
 
1221
      if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
1222
        {
1223
          /* gcc-2.6 or later (when using -fvtable-thunks)
1224
             emits a unique named type for a vtable entry.
1225
             Some gdb code depends on that specific name. */
1226
          extern const char vtbl_ptr_name[];
1227
 
1228
          if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
1229
               && strcmp (SYMBOL_LINKAGE_NAME (sym), vtbl_ptr_name))
1230
              || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
1231
            {
1232
              /* If we are giving a name to a type such as "pointer to
1233
                 foo" or "function returning foo", we better not set
1234
                 the TYPE_NAME.  If the program contains "typedef char
1235
                 *caddr_t;", we don't want all variables of type char
1236
                 * to print as caddr_t.  This is not just a
1237
                 consequence of GDB's type management; PCC and GCC (at
1238
                 least through version 2.4) both output variables of
1239
                 either type char * or caddr_t with the type number
1240
                 defined in the 't' symbol for caddr_t.  If a future
1241
                 compiler cleans this up it GDB is not ready for it
1242
                 yet, but if it becomes ready we somehow need to
1243
                 disable this check (without breaking the PCC/GCC2.4
1244
                 case).
1245
 
1246
                 Sigh.
1247
 
1248
                 Fortunately, this check seems not to be necessary
1249
                 for anything except pointers or functions.  */
1250
              /* ezannoni: 2000-10-26. This seems to apply for
1251
                 versions of gcc older than 2.8. This was the original
1252
                 problem: with the following code gdb would tell that
1253
                 the type for name1 is caddr_t, and func is char()
1254
                 typedef char *caddr_t;
1255
                 char *name2;
1256
                 struct x
1257
                 {
1258
                 char *name1;
1259
                 } xx;
1260
                 char *func()
1261
                 {
1262
                 }
1263
                 main () {}
1264
                 */
1265
 
1266
              /* Pascal accepts names for pointer types. */
1267
              if (current_subfile->language == language_pascal)
1268
                {
1269
                  TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_LINKAGE_NAME (sym);
1270
                }
1271
            }
1272
          else
1273
            TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_LINKAGE_NAME (sym);
1274
        }
1275
 
1276
      add_symbol_to_list (sym, &file_symbols);
1277
 
1278
      if (synonym)
1279
        {
1280
          /* Create the STRUCT_DOMAIN clone.  */
1281
          struct symbol *struct_sym = (struct symbol *)
1282
            obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
1283
 
1284
          *struct_sym = *sym;
1285
          SYMBOL_CLASS (struct_sym) = LOC_TYPEDEF;
1286
          SYMBOL_VALUE (struct_sym) = valu;
1287
          SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
1288
          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1289
            TYPE_NAME (SYMBOL_TYPE (sym)) = obconcat (&objfile->objfile_obstack,
1290
                                                      SYMBOL_LINKAGE_NAME (sym),
1291
                                                      (char *) NULL);
1292
          add_symbol_to_list (struct_sym, &file_symbols);
1293
        }
1294
 
1295
      break;
1296
 
1297
    case 'T':
1298
      /* Struct, union, or enum tag.  For GNU C++, this can be be followed
1299
         by 't' which means we are typedef'ing it as well.  */
1300
      synonym = *p == 't';
1301
 
1302
      if (synonym)
1303
        p++;
1304
 
1305
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1306
 
1307
      /* For a nameless type, we don't want a create a symbol, thus we
1308
         did not use `sym'. Return without further processing. */
1309
      if (nameless)
1310
        return NULL;
1311
 
1312
      SYMBOL_CLASS (sym) = LOC_TYPEDEF;
1313
      SYMBOL_VALUE (sym) = valu;
1314
      SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
1315
      if (TYPE_TAG_NAME (SYMBOL_TYPE (sym)) == 0)
1316
        TYPE_TAG_NAME (SYMBOL_TYPE (sym)) = obconcat (&objfile->objfile_obstack,
1317
                                                      SYMBOL_LINKAGE_NAME (sym),
1318
                                                      (char *) NULL);
1319
      add_symbol_to_list (sym, &file_symbols);
1320
 
1321
      if (synonym)
1322
        {
1323
          /* Clone the sym and then modify it. */
1324
          struct symbol *typedef_sym = (struct symbol *)
1325
            obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
1326
 
1327
          *typedef_sym = *sym;
1328
          SYMBOL_CLASS (typedef_sym) = LOC_TYPEDEF;
1329
          SYMBOL_VALUE (typedef_sym) = valu;
1330
          SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
1331
          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1332
            TYPE_NAME (SYMBOL_TYPE (sym)) = obconcat (&objfile->objfile_obstack,
1333
                                                      SYMBOL_LINKAGE_NAME (sym),
1334
                                                      (char *) NULL);
1335
          add_symbol_to_list (typedef_sym, &file_symbols);
1336
        }
1337
      break;
1338
 
1339
    case 'V':
1340
      /* Static symbol of local scope */
1341
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1342
      SYMBOL_CLASS (sym) = LOC_STATIC;
1343
      SYMBOL_VALUE_ADDRESS (sym) = valu;
1344
      if (gdbarch_static_transform_name_p (gdbarch)
1345
          && gdbarch_static_transform_name (gdbarch,
1346
                                            SYMBOL_LINKAGE_NAME (sym))
1347
             != SYMBOL_LINKAGE_NAME (sym))
1348
        {
1349
          struct minimal_symbol *msym;
1350
 
1351
          msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym),
1352
                                        NULL, objfile);
1353
          if (msym != NULL)
1354
            {
1355
              char *new_name = gdbarch_static_transform_name
1356
                (gdbarch, SYMBOL_LINKAGE_NAME (sym));
1357
 
1358
              SYMBOL_SET_LINKAGE_NAME (sym, new_name);
1359
              SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
1360
            }
1361
        }
1362
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1363
        add_symbol_to_list (sym, &local_symbols);
1364
      break;
1365
 
1366
    case 'v':
1367
      /* Reference parameter */
1368
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1369
      SYMBOL_CLASS (sym) = LOC_REF_ARG;
1370
      SYMBOL_IS_ARGUMENT (sym) = 1;
1371
      SYMBOL_VALUE (sym) = valu;
1372
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1373
      add_symbol_to_list (sym, &local_symbols);
1374
      break;
1375
 
1376
    case 'a':
1377
      /* Reference parameter which is in a register.  */
1378
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1379
      SYMBOL_CLASS (sym) = LOC_REGPARM_ADDR;
1380
      SYMBOL_REGISTER_OPS (sym) = &stab_register_funcs;
1381
      SYMBOL_IS_ARGUMENT (sym) = 1;
1382
      SYMBOL_VALUE (sym) = valu;
1383
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1384
      add_symbol_to_list (sym, &local_symbols);
1385
      break;
1386
 
1387
    case 'X':
1388
      /* This is used by Sun FORTRAN for "function result value".
1389
         Sun claims ("dbx and dbxtool interfaces", 2nd ed)
1390
         that Pascal uses it too, but when I tried it Pascal used
1391
         "x:3" (local symbol) instead.  */
1392
      SYMBOL_TYPE (sym) = read_type (&p, objfile);
1393
      SYMBOL_CLASS (sym) = LOC_LOCAL;
1394
      SYMBOL_VALUE (sym) = valu;
1395
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1396
      add_symbol_to_list (sym, &local_symbols);
1397
      break;
1398
 
1399
    default:
1400
      SYMBOL_TYPE (sym) = error_type (&p, objfile);
1401
      SYMBOL_CLASS (sym) = LOC_CONST;
1402
      SYMBOL_VALUE (sym) = 0;
1403
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1404
      add_symbol_to_list (sym, &file_symbols);
1405
      break;
1406
    }
1407
 
1408
  /* Some systems pass variables of certain types by reference instead
1409
     of by value, i.e. they will pass the address of a structure (in a
1410
     register or on the stack) instead of the structure itself.  */
1411
 
1412
  if (gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym))
1413
      && SYMBOL_IS_ARGUMENT (sym))
1414
    {
1415
      /* We have to convert LOC_REGISTER to LOC_REGPARM_ADDR (for
1416
         variables passed in a register).  */
1417
      if (SYMBOL_CLASS (sym) == LOC_REGISTER)
1418
        SYMBOL_CLASS (sym) = LOC_REGPARM_ADDR;
1419
      /* Likewise for converting LOC_ARG to LOC_REF_ARG (for the 7th
1420
         and subsequent arguments on SPARC, for example).  */
1421
      else if (SYMBOL_CLASS (sym) == LOC_ARG)
1422
        SYMBOL_CLASS (sym) = LOC_REF_ARG;
1423
    }
1424
 
1425
  return sym;
1426
}
1427
 
1428
/* Skip rest of this symbol and return an error type.
1429
 
1430
   General notes on error recovery:  error_type always skips to the
1431
   end of the symbol (modulo cretinous dbx symbol name continuation).
1432
   Thus code like this:
1433
 
1434
   if (*(*pp)++ != ';')
1435
   return error_type (pp, objfile);
1436
 
1437
   is wrong because if *pp starts out pointing at '\0' (typically as the
1438
   result of an earlier error), it will be incremented to point to the
1439
   start of the next symbol, which might produce strange results, at least
1440
   if you run off the end of the string table.  Instead use
1441
 
1442
   if (**pp != ';')
1443
   return error_type (pp, objfile);
1444
   ++*pp;
1445
 
1446
   or
1447
 
1448
   if (**pp != ';')
1449
   foo = error_type (pp, objfile);
1450
   else
1451
   ++*pp;
1452
 
1453
   And in case it isn't obvious, the point of all this hair is so the compiler
1454
   can define new types and new syntaxes, and old versions of the
1455
   debugger will be able to read the new symbol tables.  */
1456
 
1457
static struct type *
1458
error_type (char **pp, struct objfile *objfile)
1459
{
1460
  complaint (&symfile_complaints, _("couldn't parse type; debugger out of date?"));
1461
  while (1)
1462
    {
1463
      /* Skip to end of symbol.  */
1464
      while (**pp != '\0')
1465
        {
1466
          (*pp)++;
1467
        }
1468
 
1469
      /* Check for and handle cretinous dbx symbol name continuation!  */
1470
      if ((*pp)[-1] == '\\' || (*pp)[-1] == '?')
1471
        {
1472
          *pp = next_symbol_text (objfile);
1473
        }
1474
      else
1475
        {
1476
          break;
1477
        }
1478
    }
1479
  return objfile_type (objfile)->builtin_error;
1480
}
1481
 
1482
 
1483
/* Read type information or a type definition; return the type.  Even
1484
   though this routine accepts either type information or a type
1485
   definition, the distinction is relevant--some parts of stabsread.c
1486
   assume that type information starts with a digit, '-', or '(' in
1487
   deciding whether to call read_type.  */
1488
 
1489
static struct type *
1490
read_type (char **pp, struct objfile *objfile)
1491
{
1492
  struct type *type = 0;
1493
  struct type *type1;
1494
  int typenums[2];
1495
  char type_descriptor;
1496
 
1497
  /* Size in bits of type if specified by a type attribute, or -1 if
1498
     there is no size attribute.  */
1499
  int type_size = -1;
1500
 
1501
  /* Used to distinguish string and bitstring from char-array and set. */
1502
  int is_string = 0;
1503
 
1504
  /* Used to distinguish vector from array. */
1505
  int is_vector = 0;
1506
 
1507
  /* Read type number if present.  The type number may be omitted.
1508
     for instance in a two-dimensional array declared with type
1509
     "ar1;1;10;ar1;1;10;4".  */
1510
  if ((**pp >= '0' && **pp <= '9')
1511
      || **pp == '('
1512
      || **pp == '-')
1513
    {
1514
      if (read_type_number (pp, typenums) != 0)
1515
        return error_type (pp, objfile);
1516
 
1517
      if (**pp != '=')
1518
        {
1519
          /* Type is not being defined here.  Either it already
1520
             exists, or this is a forward reference to it.
1521
             dbx_alloc_type handles both cases.  */
1522
          type = dbx_alloc_type (typenums, objfile);
1523
 
1524
          /* If this is a forward reference, arrange to complain if it
1525
             doesn't get patched up by the time we're done
1526
             reading.  */
1527
          if (TYPE_CODE (type) == TYPE_CODE_UNDEF)
1528
            add_undefined_type (type, typenums);
1529
 
1530
          return type;
1531
        }
1532
 
1533
      /* Type is being defined here.  */
1534
      /* Skip the '='.
1535
         Also skip the type descriptor - we get it below with (*pp)[-1].  */
1536
      (*pp) += 2;
1537
    }
1538
  else
1539
    {
1540
      /* 'typenums=' not present, type is anonymous.  Read and return
1541
         the definition, but don't put it in the type vector.  */
1542
      typenums[0] = typenums[1] = -1;
1543
      (*pp)++;
1544
    }
1545
 
1546
again:
1547
  type_descriptor = (*pp)[-1];
1548
  switch (type_descriptor)
1549
    {
1550
    case 'x':
1551
      {
1552
        enum type_code code;
1553
 
1554
        /* Used to index through file_symbols.  */
1555
        struct pending *ppt;
1556
        int i;
1557
 
1558
        /* Name including "struct", etc.  */
1559
        char *type_name;
1560
 
1561
        {
1562
          char *from, *to, *p, *q1, *q2;
1563
 
1564
          /* Set the type code according to the following letter.  */
1565
          switch ((*pp)[0])
1566
            {
1567
            case 's':
1568
              code = TYPE_CODE_STRUCT;
1569
              break;
1570
            case 'u':
1571
              code = TYPE_CODE_UNION;
1572
              break;
1573
            case 'e':
1574
              code = TYPE_CODE_ENUM;
1575
              break;
1576
            default:
1577
              {
1578
                /* Complain and keep going, so compilers can invent new
1579
                   cross-reference types.  */
1580
                complaint (&symfile_complaints,
1581
                           _("Unrecognized cross-reference type `%c'"), (*pp)[0]);
1582
                code = TYPE_CODE_STRUCT;
1583
                break;
1584
              }
1585
            }
1586
 
1587
          q1 = strchr (*pp, '<');
1588
          p = strchr (*pp, ':');
1589
          if (p == NULL)
1590
            return error_type (pp, objfile);
1591
          if (q1 && p > q1 && p[1] == ':')
1592
            {
1593
              int nesting_level = 0;
1594
 
1595
              for (q2 = q1; *q2; q2++)
1596
                {
1597
                  if (*q2 == '<')
1598
                    nesting_level++;
1599
                  else if (*q2 == '>')
1600
                    nesting_level--;
1601
                  else if (*q2 == ':' && nesting_level == 0)
1602
                    break;
1603
                }
1604
              p = q2;
1605
              if (*p != ':')
1606
                return error_type (pp, objfile);
1607
            }
1608
          type_name = NULL;
1609
          if (current_subfile->language == language_cplus)
1610
            {
1611
              char *new_name, *name = alloca (p - *pp + 1);
1612
 
1613
              memcpy (name, *pp, p - *pp);
1614
              name[p - *pp] = '\0';
1615
              new_name = cp_canonicalize_string (name);
1616
              if (new_name != NULL)
1617
                {
1618
                  type_name = obsavestring (new_name, strlen (new_name),
1619
                                            &objfile->objfile_obstack);
1620
                  xfree (new_name);
1621
                }
1622
            }
1623
          if (type_name == NULL)
1624
            {
1625
              to = type_name =
1626
                (char *) obstack_alloc (&objfile->objfile_obstack, p - *pp + 1);
1627
 
1628
              /* Copy the name.  */
1629
              from = *pp + 1;
1630
              while (from < p)
1631
                *to++ = *from++;
1632
              *to = '\0';
1633
            }
1634
 
1635
          /* Set the pointer ahead of the name which we just read, and
1636
             the colon.  */
1637
          *pp = p + 1;
1638
        }
1639
 
1640
        /* If this type has already been declared, then reuse the same
1641
           type, rather than allocating a new one.  This saves some
1642
           memory.  */
1643
 
1644
        for (ppt = file_symbols; ppt; ppt = ppt->next)
1645
          for (i = 0; i < ppt->nsyms; i++)
1646
            {
1647
              struct symbol *sym = ppt->symbol[i];
1648
 
1649
              if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
1650
                  && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
1651
                  && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
1652
                  && strcmp (SYMBOL_LINKAGE_NAME (sym), type_name) == 0)
1653
                {
1654
                  obstack_free (&objfile->objfile_obstack, type_name);
1655
                  type = SYMBOL_TYPE (sym);
1656
                  if (typenums[0] != -1)
1657
                    *dbx_lookup_type (typenums, objfile) = type;
1658
                  return type;
1659
                }
1660
            }
1661
 
1662
        /* Didn't find the type to which this refers, so we must
1663
           be dealing with a forward reference.  Allocate a type
1664
           structure for it, and keep track of it so we can
1665
           fill in the rest of the fields when we get the full
1666
           type.  */
1667
        type = dbx_alloc_type (typenums, objfile);
1668
        TYPE_CODE (type) = code;
1669
        TYPE_TAG_NAME (type) = type_name;
1670
        INIT_CPLUS_SPECIFIC (type);
1671
        TYPE_STUB (type) = 1;
1672
 
1673
        add_undefined_type (type, typenums);
1674
        return type;
1675
      }
1676
 
1677
    case '-':                   /* RS/6000 built-in type */
1678
    case '0':
1679
    case '1':
1680
    case '2':
1681
    case '3':
1682
    case '4':
1683
    case '5':
1684
    case '6':
1685
    case '7':
1686
    case '8':
1687
    case '9':
1688
    case '(':
1689
      (*pp)--;
1690
 
1691
      /* We deal with something like t(1,2)=(3,4)=... which
1692
         the Lucid compiler and recent gcc versions (post 2.7.3) use. */
1693
 
1694
      /* Allocate and enter the typedef type first.
1695
         This handles recursive types. */
1696
      type = dbx_alloc_type (typenums, objfile);
1697
      TYPE_CODE (type) = TYPE_CODE_TYPEDEF;
1698
      {
1699
        struct type *xtype = read_type (pp, objfile);
1700
 
1701
        if (type == xtype)
1702
          {
1703
            /* It's being defined as itself.  That means it is "void".  */
1704
            TYPE_CODE (type) = TYPE_CODE_VOID;
1705
            TYPE_LENGTH (type) = 1;
1706
          }
1707
        else if (type_size >= 0 || is_string)
1708
          {
1709
            /* This is the absolute wrong way to construct types.  Every
1710
               other debug format has found a way around this problem and
1711
               the related problems with unnecessarily stubbed types;
1712
               someone motivated should attempt to clean up the issue
1713
               here as well.  Once a type pointed to has been created it
1714
               should not be modified.
1715
 
1716
               Well, it's not *absolutely* wrong.  Constructing recursive
1717
               types (trees, linked lists) necessarily entails modifying
1718
               types after creating them.  Constructing any loop structure
1719
               entails side effects.  The Dwarf 2 reader does handle this
1720
               more gracefully (it never constructs more than once
1721
               instance of a type object, so it doesn't have to copy type
1722
               objects wholesale), but it still mutates type objects after
1723
               other folks have references to them.
1724
 
1725
               Keep in mind that this circularity/mutation issue shows up
1726
               at the source language level, too: C's "incomplete types",
1727
               for example.  So the proper cleanup, I think, would be to
1728
               limit GDB's type smashing to match exactly those required
1729
               by the source language.  So GDB could have a
1730
               "complete_this_type" function, but never create unnecessary
1731
               copies of a type otherwise.  */
1732
            replace_type (type, xtype);
1733
            TYPE_NAME (type) = NULL;
1734
            TYPE_TAG_NAME (type) = NULL;
1735
          }
1736
        else
1737
          {
1738
            TYPE_TARGET_STUB (type) = 1;
1739
            TYPE_TARGET_TYPE (type) = xtype;
1740
          }
1741
      }
1742
      break;
1743
 
1744
      /* In the following types, we must be sure to overwrite any existing
1745
         type that the typenums refer to, rather than allocating a new one
1746
         and making the typenums point to the new one.  This is because there
1747
         may already be pointers to the existing type (if it had been
1748
         forward-referenced), and we must change it to a pointer, function,
1749
         reference, or whatever, *in-place*.  */
1750
 
1751
    case '*':                   /* Pointer to another type */
1752
      type1 = read_type (pp, objfile);
1753
      type = make_pointer_type (type1, dbx_lookup_type (typenums, objfile));
1754
      break;
1755
 
1756
    case '&':                   /* Reference to another type */
1757
      type1 = read_type (pp, objfile);
1758
      type = make_reference_type (type1, dbx_lookup_type (typenums, objfile));
1759
      break;
1760
 
1761
    case 'f':                   /* Function returning another type */
1762
      type1 = read_type (pp, objfile);
1763
      type = make_function_type (type1, dbx_lookup_type (typenums, objfile));
1764
      break;
1765
 
1766
    case 'g':                   /* Prototyped function.  (Sun)  */
1767
      {
1768
        /* Unresolved questions:
1769
 
1770
           - According to Sun's ``STABS Interface Manual'', for 'f'
1771
           and 'F' symbol descriptors, a `0' in the argument type list
1772
           indicates a varargs function.  But it doesn't say how 'g'
1773
           type descriptors represent that info.  Someone with access
1774
           to Sun's toolchain should try it out.
1775
 
1776
           - According to the comment in define_symbol (search for
1777
           `process_prototype_types:'), Sun emits integer arguments as
1778
           types which ref themselves --- like `void' types.  Do we
1779
           have to deal with that here, too?  Again, someone with
1780
           access to Sun's toolchain should try it out and let us
1781
           know.  */
1782
 
1783
        const char *type_start = (*pp) - 1;
1784
        struct type *return_type = read_type (pp, objfile);
1785
        struct type *func_type
1786
          = make_function_type (return_type,
1787
                                dbx_lookup_type (typenums, objfile));
1788
        struct type_list {
1789
          struct type *type;
1790
          struct type_list *next;
1791
        } *arg_types = 0;
1792
        int num_args = 0;
1793
 
1794
        while (**pp && **pp != '#')
1795
          {
1796
            struct type *arg_type = read_type (pp, objfile);
1797
            struct type_list *new = alloca (sizeof (*new));
1798
            new->type = arg_type;
1799
            new->next = arg_types;
1800
            arg_types = new;
1801
            num_args++;
1802
          }
1803
        if (**pp == '#')
1804
          ++*pp;
1805
        else
1806
          {
1807
            complaint (&symfile_complaints,
1808
                       _("Prototyped function type didn't end arguments with `#':\n%s"),
1809
                       type_start);
1810
          }
1811
 
1812
        /* If there is just one argument whose type is `void', then
1813
           that's just an empty argument list.  */
1814
        if (arg_types
1815
            && ! arg_types->next
1816
            && TYPE_CODE (arg_types->type) == TYPE_CODE_VOID)
1817
          num_args = 0;
1818
 
1819
        TYPE_FIELDS (func_type)
1820
          = (struct field *) TYPE_ALLOC (func_type,
1821
                                         num_args * sizeof (struct field));
1822
        memset (TYPE_FIELDS (func_type), 0, num_args * sizeof (struct field));
1823
        {
1824
          int i;
1825
          struct type_list *t;
1826
 
1827
          /* We stuck each argument type onto the front of the list
1828
             when we read it, so the list is reversed.  Build the
1829
             fields array right-to-left.  */
1830
          for (t = arg_types, i = num_args - 1; t; t = t->next, i--)
1831
            TYPE_FIELD_TYPE (func_type, i) = t->type;
1832
        }
1833
        TYPE_NFIELDS (func_type) = num_args;
1834
        TYPE_PROTOTYPED (func_type) = 1;
1835
 
1836
        type = func_type;
1837
        break;
1838
      }
1839
 
1840
    case 'k':                   /* Const qualifier on some type (Sun) */
1841
      type = read_type (pp, objfile);
1842
      type = make_cv_type (1, TYPE_VOLATILE (type), type,
1843
                           dbx_lookup_type (typenums, objfile));
1844
      break;
1845
 
1846
    case 'B':                   /* Volatile qual on some type (Sun) */
1847
      type = read_type (pp, objfile);
1848
      type = make_cv_type (TYPE_CONST (type), 1, type,
1849
                           dbx_lookup_type (typenums, objfile));
1850
      break;
1851
 
1852
    case '@':
1853
      if (isdigit (**pp) || **pp == '(' || **pp == '-')
1854
        {                       /* Member (class & variable) type */
1855
          /* FIXME -- we should be doing smash_to_XXX types here.  */
1856
 
1857
          struct type *domain = read_type (pp, objfile);
1858
          struct type *memtype;
1859
 
1860
          if (**pp != ',')
1861
            /* Invalid member type data format.  */
1862
            return error_type (pp, objfile);
1863
          ++*pp;
1864
 
1865
          memtype = read_type (pp, objfile);
1866
          type = dbx_alloc_type (typenums, objfile);
1867
          smash_to_memberptr_type (type, domain, memtype);
1868
        }
1869
      else
1870
        /* type attribute */
1871
        {
1872
          char *attr = *pp;
1873
 
1874
          /* Skip to the semicolon.  */
1875
          while (**pp != ';' && **pp != '\0')
1876
            ++(*pp);
1877
          if (**pp == '\0')
1878
            return error_type (pp, objfile);
1879
          else
1880
            ++ * pp;            /* Skip the semicolon.  */
1881
 
1882
          switch (*attr)
1883
            {
1884
            case 's':           /* Size attribute */
1885
              type_size = atoi (attr + 1);
1886
              if (type_size <= 0)
1887
                type_size = -1;
1888
              break;
1889
 
1890
            case 'S':           /* String attribute */
1891
              /* FIXME: check to see if following type is array? */
1892
              is_string = 1;
1893
              break;
1894
 
1895
            case 'V':           /* Vector attribute */
1896
              /* FIXME: check to see if following type is array? */
1897
              is_vector = 1;
1898
              break;
1899
 
1900
            default:
1901
              /* Ignore unrecognized type attributes, so future compilers
1902
                 can invent new ones.  */
1903
              break;
1904
            }
1905
          ++*pp;
1906
          goto again;
1907
        }
1908
      break;
1909
 
1910
    case '#':                   /* Method (class & fn) type */
1911
      if ((*pp)[0] == '#')
1912
        {
1913
          /* We'll get the parameter types from the name.  */
1914
          struct type *return_type;
1915
 
1916
          (*pp)++;
1917
          return_type = read_type (pp, objfile);
1918
          if (*(*pp)++ != ';')
1919
            complaint (&symfile_complaints,
1920
                       _("invalid (minimal) member type data format at symtab pos %d."),
1921
                       symnum);
1922
          type = allocate_stub_method (return_type);
1923
          if (typenums[0] != -1)
1924
            *dbx_lookup_type (typenums, objfile) = type;
1925
        }
1926
      else
1927
        {
1928
          struct type *domain = read_type (pp, objfile);
1929
          struct type *return_type;
1930
          struct field *args;
1931
          int nargs, varargs;
1932
 
1933
          if (**pp != ',')
1934
            /* Invalid member type data format.  */
1935
            return error_type (pp, objfile);
1936
          else
1937
            ++(*pp);
1938
 
1939
          return_type = read_type (pp, objfile);
1940
          args = read_args (pp, ';', objfile, &nargs, &varargs);
1941
          if (args == NULL)
1942
            return error_type (pp, objfile);
1943
          type = dbx_alloc_type (typenums, objfile);
1944
          smash_to_method_type (type, domain, return_type, args,
1945
                                nargs, varargs);
1946
        }
1947
      break;
1948
 
1949
    case 'r':                   /* Range type */
1950
      type = read_range_type (pp, typenums, type_size, objfile);
1951
      if (typenums[0] != -1)
1952
        *dbx_lookup_type (typenums, objfile) = type;
1953
      break;
1954
 
1955
    case 'b':
1956
        {
1957
          /* Sun ACC builtin int type */
1958
          type = read_sun_builtin_type (pp, typenums, objfile);
1959
          if (typenums[0] != -1)
1960
            *dbx_lookup_type (typenums, objfile) = type;
1961
        }
1962
      break;
1963
 
1964
    case 'R':                   /* Sun ACC builtin float type */
1965
      type = read_sun_floating_type (pp, typenums, objfile);
1966
      if (typenums[0] != -1)
1967
        *dbx_lookup_type (typenums, objfile) = type;
1968
      break;
1969
 
1970
    case 'e':                   /* Enumeration type */
1971
      type = dbx_alloc_type (typenums, objfile);
1972
      type = read_enum_type (pp, type, objfile);
1973
      if (typenums[0] != -1)
1974
        *dbx_lookup_type (typenums, objfile) = type;
1975
      break;
1976
 
1977
    case 's':                   /* Struct type */
1978
    case 'u':                   /* Union type */
1979
      {
1980
        enum type_code type_code = TYPE_CODE_UNDEF;
1981
        type = dbx_alloc_type (typenums, objfile);
1982
        switch (type_descriptor)
1983
          {
1984
          case 's':
1985
            type_code = TYPE_CODE_STRUCT;
1986
            break;
1987
          case 'u':
1988
            type_code = TYPE_CODE_UNION;
1989
            break;
1990
          }
1991
        type = read_struct_type (pp, type, type_code, objfile);
1992
        break;
1993
      }
1994
 
1995
    case 'a':                   /* Array type */
1996
      if (**pp != 'r')
1997
        return error_type (pp, objfile);
1998
      ++*pp;
1999
 
2000
      type = dbx_alloc_type (typenums, objfile);
2001
      type = read_array_type (pp, type, objfile);
2002
      if (is_string)
2003
        TYPE_CODE (type) = TYPE_CODE_STRING;
2004
      if (is_vector)
2005
        make_vector_type (type);
2006
      break;
2007
 
2008
    case 'S':                   /* Set or bitstring  type */
2009
      type1 = read_type (pp, objfile);
2010
      type = create_set_type ((struct type *) NULL, type1);
2011
      if (is_string)
2012
        TYPE_CODE (type) = TYPE_CODE_BITSTRING;
2013
      if (typenums[0] != -1)
2014
        *dbx_lookup_type (typenums, objfile) = type;
2015
      break;
2016
 
2017
    default:
2018
      --*pp;                    /* Go back to the symbol in error */
2019
      /* Particularly important if it was \0! */
2020
      return error_type (pp, objfile);
2021
    }
2022
 
2023
  if (type == 0)
2024
    {
2025
      warning (_("GDB internal error, type is NULL in stabsread.c."));
2026
      return error_type (pp, objfile);
2027
    }
2028
 
2029
  /* Size specified in a type attribute overrides any other size.  */
2030
  if (type_size != -1)
2031
    TYPE_LENGTH (type) = (type_size + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
2032
 
2033
  return type;
2034
}
2035
 
2036
/* RS/6000 xlc/dbx combination uses a set of builtin types, starting from -1.
2037
   Return the proper type node for a given builtin type number. */
2038
 
2039
static const struct objfile_data *rs6000_builtin_type_data;
2040
 
2041
static struct type *
2042
rs6000_builtin_type (int typenum, struct objfile *objfile)
2043
{
2044
  struct type **negative_types = objfile_data (objfile, rs6000_builtin_type_data);
2045
 
2046
  /* We recognize types numbered from -NUMBER_RECOGNIZED to -1.  */
2047
#define NUMBER_RECOGNIZED 34
2048
  struct type *rettype = NULL;
2049
 
2050
  if (typenum >= 0 || typenum < -NUMBER_RECOGNIZED)
2051
    {
2052
      complaint (&symfile_complaints, _("Unknown builtin type %d"), typenum);
2053
      return objfile_type (objfile)->builtin_error;
2054
    }
2055
 
2056
  if (!negative_types)
2057
    {
2058
      /* This includes an empty slot for type number -0.  */
2059
      negative_types = OBSTACK_CALLOC (&objfile->objfile_obstack,
2060
                                       NUMBER_RECOGNIZED + 1, struct type *);
2061
      set_objfile_data (objfile, rs6000_builtin_type_data, negative_types);
2062
    }
2063
 
2064
  if (negative_types[-typenum] != NULL)
2065
    return negative_types[-typenum];
2066
 
2067
#if TARGET_CHAR_BIT != 8
2068
#error This code wrong for TARGET_CHAR_BIT not 8
2069
  /* These definitions all assume that TARGET_CHAR_BIT is 8.  I think
2070
     that if that ever becomes not true, the correct fix will be to
2071
     make the size in the struct type to be in bits, not in units of
2072
     TARGET_CHAR_BIT.  */
2073
#endif
2074
 
2075
  switch (-typenum)
2076
    {
2077
    case 1:
2078
      /* The size of this and all the other types are fixed, defined
2079
         by the debugging format.  If there is a type called "int" which
2080
         is other than 32 bits, then it should use a new negative type
2081
         number (or avoid negative type numbers for that case).
2082
         See stabs.texinfo.  */
2083
      rettype = init_type (TYPE_CODE_INT, 4, 0, "int", objfile);
2084
      break;
2085
    case 2:
2086
      rettype = init_type (TYPE_CODE_INT, 1, 0, "char", objfile);
2087
      break;
2088
    case 3:
2089
      rettype = init_type (TYPE_CODE_INT, 2, 0, "short", objfile);
2090
      break;
2091
    case 4:
2092
      rettype = init_type (TYPE_CODE_INT, 4, 0, "long", objfile);
2093
      break;
2094
    case 5:
2095
      rettype = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
2096
                           "unsigned char", objfile);
2097
      break;
2098
    case 6:
2099
      rettype = init_type (TYPE_CODE_INT, 1, 0, "signed char", objfile);
2100
      break;
2101
    case 7:
2102
      rettype = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
2103
                           "unsigned short", objfile);
2104
      break;
2105
    case 8:
2106
      rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
2107
                           "unsigned int", objfile);
2108
      break;
2109
    case 9:
2110
      rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
2111
                           "unsigned", objfile);
2112
    case 10:
2113
      rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
2114
                           "unsigned long", objfile);
2115
      break;
2116
    case 11:
2117
      rettype = init_type (TYPE_CODE_VOID, 1, 0, "void", objfile);
2118
      break;
2119
    case 12:
2120
      /* IEEE single precision (32 bit).  */
2121
      rettype = init_type (TYPE_CODE_FLT, 4, 0, "float", objfile);
2122
      break;
2123
    case 13:
2124
      /* IEEE double precision (64 bit).  */
2125
      rettype = init_type (TYPE_CODE_FLT, 8, 0, "double", objfile);
2126
      break;
2127
    case 14:
2128
      /* This is an IEEE double on the RS/6000, and different machines with
2129
         different sizes for "long double" should use different negative
2130
         type numbers.  See stabs.texinfo.  */
2131
      rettype = init_type (TYPE_CODE_FLT, 8, 0, "long double", objfile);
2132
      break;
2133
    case 15:
2134
      rettype = init_type (TYPE_CODE_INT, 4, 0, "integer", objfile);
2135
      break;
2136
    case 16:
2137
      rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
2138
                           "boolean", objfile);
2139
      break;
2140
    case 17:
2141
      rettype = init_type (TYPE_CODE_FLT, 4, 0, "short real", objfile);
2142
      break;
2143
    case 18:
2144
      rettype = init_type (TYPE_CODE_FLT, 8, 0, "real", objfile);
2145
      break;
2146
    case 19:
2147
      rettype = init_type (TYPE_CODE_ERROR, 0, 0, "stringptr", objfile);
2148
      break;
2149
    case 20:
2150
      rettype = init_type (TYPE_CODE_CHAR, 1, TYPE_FLAG_UNSIGNED,
2151
                           "character", objfile);
2152
      break;
2153
    case 21:
2154
      rettype = init_type (TYPE_CODE_BOOL, 1, TYPE_FLAG_UNSIGNED,
2155
                           "logical*1", objfile);
2156
      break;
2157
    case 22:
2158
      rettype = init_type (TYPE_CODE_BOOL, 2, TYPE_FLAG_UNSIGNED,
2159
                           "logical*2", objfile);
2160
      break;
2161
    case 23:
2162
      rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
2163
                           "logical*4", objfile);
2164
      break;
2165
    case 24:
2166
      rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
2167
                           "logical", objfile);
2168
      break;
2169
    case 25:
2170
      /* Complex type consisting of two IEEE single precision values.  */
2171
      rettype = init_type (TYPE_CODE_COMPLEX, 8, 0, "complex", objfile);
2172
      TYPE_TARGET_TYPE (rettype) = init_type (TYPE_CODE_FLT, 4, 0, "float",
2173
                                              objfile);
2174
      break;
2175
    case 26:
2176
      /* Complex type consisting of two IEEE double precision values.  */
2177
      rettype = init_type (TYPE_CODE_COMPLEX, 16, 0, "double complex", NULL);
2178
      TYPE_TARGET_TYPE (rettype) = init_type (TYPE_CODE_FLT, 8, 0, "double",
2179
                                              objfile);
2180
      break;
2181
    case 27:
2182
      rettype = init_type (TYPE_CODE_INT, 1, 0, "integer*1", objfile);
2183
      break;
2184
    case 28:
2185
      rettype = init_type (TYPE_CODE_INT, 2, 0, "integer*2", objfile);
2186
      break;
2187
    case 29:
2188
      rettype = init_type (TYPE_CODE_INT, 4, 0, "integer*4", objfile);
2189
      break;
2190
    case 30:
2191
      rettype = init_type (TYPE_CODE_CHAR, 2, 0, "wchar", objfile);
2192
      break;
2193
    case 31:
2194
      rettype = init_type (TYPE_CODE_INT, 8, 0, "long long", objfile);
2195
      break;
2196
    case 32:
2197
      rettype = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
2198
                           "unsigned long long", objfile);
2199
      break;
2200
    case 33:
2201
      rettype = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
2202
                           "logical*8", objfile);
2203
      break;
2204
    case 34:
2205
      rettype = init_type (TYPE_CODE_INT, 8, 0, "integer*8", objfile);
2206
      break;
2207
    }
2208
  negative_types[-typenum] = rettype;
2209
  return rettype;
2210
}
2211
 
2212
/* This page contains subroutines of read_type.  */
2213
 
2214
/* Replace *OLD_NAME with the method name portion of PHYSNAME.  */
2215
 
2216
static void
2217
update_method_name_from_physname (char **old_name, char *physname)
2218
{
2219
  char *method_name;
2220
 
2221
  method_name = method_name_from_physname (physname);
2222
 
2223
  if (method_name == NULL)
2224
    {
2225
      complaint (&symfile_complaints,
2226
                 _("Method has bad physname %s\n"), physname);
2227
      return;
2228
    }
2229
 
2230
  if (strcmp (*old_name, method_name) != 0)
2231
    {
2232
      xfree (*old_name);
2233
      *old_name = method_name;
2234
    }
2235
  else
2236
    xfree (method_name);
2237
}
2238
 
2239
/* Read member function stabs info for C++ classes.  The form of each member
2240
   function data is:
2241
 
2242
   NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
2243
 
2244
   An example with two member functions is:
2245
 
2246
   afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
2247
 
2248
   For the case of overloaded operators, the format is op$::*.funcs, where
2249
   $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
2250
   name (such as `+=') and `.' marks the end of the operator name.
2251
 
2252
   Returns 1 for success, 0 for failure.  */
2253
 
2254
static int
2255
read_member_functions (struct field_info *fip, char **pp, struct type *type,
2256
                       struct objfile *objfile)
2257
{
2258
  int nfn_fields = 0;
2259
  int length = 0;
2260
  /* Total number of member functions defined in this class.  If the class
2261
     defines two `f' functions, and one `g' function, then this will have
2262
     the value 3.  */
2263
  int total_length = 0;
2264
  int i;
2265
  struct next_fnfield
2266
    {
2267
      struct next_fnfield *next;
2268
      struct fn_field fn_field;
2269
    }
2270
   *sublist;
2271
  struct type *look_ahead_type;
2272
  struct next_fnfieldlist *new_fnlist;
2273
  struct next_fnfield *new_sublist;
2274
  char *main_fn_name;
2275
  char *p;
2276
 
2277
  /* Process each list until we find something that is not a member function
2278
     or find the end of the functions. */
2279
 
2280
  while (**pp != ';')
2281
    {
2282
      /* We should be positioned at the start of the function name.
2283
         Scan forward to find the first ':' and if it is not the
2284
         first of a "::" delimiter, then this is not a member function. */
2285
      p = *pp;
2286
      while (*p != ':')
2287
        {
2288
          p++;
2289
        }
2290
      if (p[1] != ':')
2291
        {
2292
          break;
2293
        }
2294
 
2295
      sublist = NULL;
2296
      look_ahead_type = NULL;
2297
      length = 0;
2298
 
2299
      new_fnlist = (struct next_fnfieldlist *)
2300
        xmalloc (sizeof (struct next_fnfieldlist));
2301
      make_cleanup (xfree, new_fnlist);
2302
      memset (new_fnlist, 0, sizeof (struct next_fnfieldlist));
2303
 
2304
      if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && is_cplus_marker ((*pp)[2]))
2305
        {
2306
          /* This is a completely wierd case.  In order to stuff in the
2307
             names that might contain colons (the usual name delimiter),
2308
             Mike Tiemann defined a different name format which is
2309
             signalled if the identifier is "op$".  In that case, the
2310
             format is "op$::XXXX." where XXXX is the name.  This is
2311
             used for names like "+" or "=".  YUUUUUUUK!  FIXME!  */
2312
          /* This lets the user type "break operator+".
2313
             We could just put in "+" as the name, but that wouldn't
2314
             work for "*".  */
2315
          static char opname[32] = "op$";
2316
          char *o = opname + 3;
2317
 
2318
          /* Skip past '::'.  */
2319
          *pp = p + 2;
2320
 
2321
          STABS_CONTINUE (pp, objfile);
2322
          p = *pp;
2323
          while (*p != '.')
2324
            {
2325
              *o++ = *p++;
2326
            }
2327
          main_fn_name = savestring (opname, o - opname);
2328
          /* Skip past '.'  */
2329
          *pp = p + 1;
2330
        }
2331
      else
2332
        {
2333
          main_fn_name = savestring (*pp, p - *pp);
2334
          /* Skip past '::'.  */
2335
          *pp = p + 2;
2336
        }
2337
      new_fnlist->fn_fieldlist.name = main_fn_name;
2338
 
2339
      do
2340
        {
2341
          new_sublist =
2342
            (struct next_fnfield *) xmalloc (sizeof (struct next_fnfield));
2343
          make_cleanup (xfree, new_sublist);
2344
          memset (new_sublist, 0, sizeof (struct next_fnfield));
2345
 
2346
          /* Check for and handle cretinous dbx symbol name continuation!  */
2347
          if (look_ahead_type == NULL)
2348
            {
2349
              /* Normal case. */
2350
              STABS_CONTINUE (pp, objfile);
2351
 
2352
              new_sublist->fn_field.type = read_type (pp, objfile);
2353
              if (**pp != ':')
2354
                {
2355
                  /* Invalid symtab info for member function.  */
2356
                  return 0;
2357
                }
2358
            }
2359
          else
2360
            {
2361
              /* g++ version 1 kludge */
2362
              new_sublist->fn_field.type = look_ahead_type;
2363
              look_ahead_type = NULL;
2364
            }
2365
 
2366
          (*pp)++;
2367
          p = *pp;
2368
          while (*p != ';')
2369
            {
2370
              p++;
2371
            }
2372
 
2373
          /* If this is just a stub, then we don't have the real name here. */
2374
 
2375
          if (TYPE_STUB (new_sublist->fn_field.type))
2376
            {
2377
              if (!TYPE_DOMAIN_TYPE (new_sublist->fn_field.type))
2378
                TYPE_DOMAIN_TYPE (new_sublist->fn_field.type) = type;
2379
              new_sublist->fn_field.is_stub = 1;
2380
            }
2381
          new_sublist->fn_field.physname = savestring (*pp, p - *pp);
2382
          *pp = p + 1;
2383
 
2384
          /* Set this member function's visibility fields.  */
2385
          switch (*(*pp)++)
2386
            {
2387
            case VISIBILITY_PRIVATE:
2388
              new_sublist->fn_field.is_private = 1;
2389
              break;
2390
            case VISIBILITY_PROTECTED:
2391
              new_sublist->fn_field.is_protected = 1;
2392
              break;
2393
            }
2394
 
2395
          STABS_CONTINUE (pp, objfile);
2396
          switch (**pp)
2397
            {
2398
            case 'A':           /* Normal functions. */
2399
              new_sublist->fn_field.is_const = 0;
2400
              new_sublist->fn_field.is_volatile = 0;
2401
              (*pp)++;
2402
              break;
2403
            case 'B':           /* `const' member functions. */
2404
              new_sublist->fn_field.is_const = 1;
2405
              new_sublist->fn_field.is_volatile = 0;
2406
              (*pp)++;
2407
              break;
2408
            case 'C':           /* `volatile' member function. */
2409
              new_sublist->fn_field.is_const = 0;
2410
              new_sublist->fn_field.is_volatile = 1;
2411
              (*pp)++;
2412
              break;
2413
            case 'D':           /* `const volatile' member function. */
2414
              new_sublist->fn_field.is_const = 1;
2415
              new_sublist->fn_field.is_volatile = 1;
2416
              (*pp)++;
2417
              break;
2418
            case '*':           /* File compiled with g++ version 1 -- no info */
2419
            case '?':
2420
            case '.':
2421
              break;
2422
            default:
2423
              complaint (&symfile_complaints,
2424
                         _("const/volatile indicator missing, got '%c'"), **pp);
2425
              break;
2426
            }
2427
 
2428
          switch (*(*pp)++)
2429
            {
2430
            case '*':
2431
              {
2432
                int nbits;
2433
                /* virtual member function, followed by index.
2434
                   The sign bit is set to distinguish pointers-to-methods
2435
                   from virtual function indicies.  Since the array is
2436
                   in words, the quantity must be shifted left by 1
2437
                   on 16 bit machine, and by 2 on 32 bit machine, forcing
2438
                   the sign bit out, and usable as a valid index into
2439
                   the array.  Remove the sign bit here.  */
2440
                new_sublist->fn_field.voffset =
2441
                  (0x7fffffff & read_huge_number (pp, ';', &nbits, 0)) + 2;
2442
                if (nbits != 0)
2443
                  return 0;
2444
 
2445
                STABS_CONTINUE (pp, objfile);
2446
                if (**pp == ';' || **pp == '\0')
2447
                  {
2448
                    /* Must be g++ version 1.  */
2449
                    new_sublist->fn_field.fcontext = 0;
2450
                  }
2451
                else
2452
                  {
2453
                    /* Figure out from whence this virtual function came.
2454
                       It may belong to virtual function table of
2455
                       one of its baseclasses.  */
2456
                    look_ahead_type = read_type (pp, objfile);
2457
                    if (**pp == ':')
2458
                      {
2459
                        /* g++ version 1 overloaded methods. */
2460
                      }
2461
                    else
2462
                      {
2463
                        new_sublist->fn_field.fcontext = look_ahead_type;
2464
                        if (**pp != ';')
2465
                          {
2466
                            return 0;
2467
                          }
2468
                        else
2469
                          {
2470
                            ++*pp;
2471
                          }
2472
                        look_ahead_type = NULL;
2473
                      }
2474
                  }
2475
                break;
2476
              }
2477
            case '?':
2478
              /* static member function.  */
2479
              {
2480
                int slen = strlen (main_fn_name);
2481
 
2482
                new_sublist->fn_field.voffset = VOFFSET_STATIC;
2483
 
2484
                /* For static member functions, we can't tell if they
2485
                   are stubbed, as they are put out as functions, and not as
2486
                   methods.
2487
                   GCC v2 emits the fully mangled name if
2488
                   dbxout.c:flag_minimal_debug is not set, so we have to
2489
                   detect a fully mangled physname here and set is_stub
2490
                   accordingly.  Fully mangled physnames in v2 start with
2491
                   the member function name, followed by two underscores.
2492
                   GCC v3 currently always emits stubbed member functions,
2493
                   but with fully mangled physnames, which start with _Z.  */
2494
                if (!(strncmp (new_sublist->fn_field.physname,
2495
                               main_fn_name, slen) == 0
2496
                      && new_sublist->fn_field.physname[slen] == '_'
2497
                      && new_sublist->fn_field.physname[slen + 1] == '_'))
2498
                  {
2499
                    new_sublist->fn_field.is_stub = 1;
2500
                  }
2501
                break;
2502
              }
2503
 
2504
            default:
2505
              /* error */
2506
              complaint (&symfile_complaints,
2507
                         _("member function type missing, got '%c'"), (*pp)[-1]);
2508
              /* Fall through into normal member function.  */
2509
 
2510
            case '.':
2511
              /* normal member function.  */
2512
              new_sublist->fn_field.voffset = 0;
2513
              new_sublist->fn_field.fcontext = 0;
2514
              break;
2515
            }
2516
 
2517
          new_sublist->next = sublist;
2518
          sublist = new_sublist;
2519
          length++;
2520
          STABS_CONTINUE (pp, objfile);
2521
        }
2522
      while (**pp != ';' && **pp != '\0');
2523
 
2524
      (*pp)++;
2525
      STABS_CONTINUE (pp, objfile);
2526
 
2527
      /* Skip GCC 3.X member functions which are duplicates of the callable
2528
         constructor/destructor.  */
2529
      if (strcmp_iw (main_fn_name, "__base_ctor ") == 0
2530
          || strcmp_iw (main_fn_name, "__base_dtor ") == 0
2531
          || strcmp (main_fn_name, "__deleting_dtor") == 0)
2532
        {
2533
          xfree (main_fn_name);
2534
        }
2535
      else
2536
        {
2537
          int has_stub = 0;
2538
          int has_destructor = 0, has_other = 0;
2539
          int is_v3 = 0;
2540
          struct next_fnfield *tmp_sublist;
2541
 
2542
          /* Various versions of GCC emit various mostly-useless
2543
             strings in the name field for special member functions.
2544
 
2545
             For stub methods, we need to defer correcting the name
2546
             until we are ready to unstub the method, because the current
2547
             name string is used by gdb_mangle_name.  The only stub methods
2548
             of concern here are GNU v2 operators; other methods have their
2549
             names correct (see caveat below).
2550
 
2551
             For non-stub methods, in GNU v3, we have a complete physname.
2552
             Therefore we can safely correct the name now.  This primarily
2553
             affects constructors and destructors, whose name will be
2554
             __comp_ctor or __comp_dtor instead of Foo or ~Foo.  Cast
2555
             operators will also have incorrect names; for instance,
2556
             "operator int" will be named "operator i" (i.e. the type is
2557
             mangled).
2558
 
2559
             For non-stub methods in GNU v2, we have no easy way to
2560
             know if we have a complete physname or not.  For most
2561
             methods the result depends on the platform (if CPLUS_MARKER
2562
             can be `$' or `.', it will use minimal debug information, or
2563
             otherwise the full physname will be included).
2564
 
2565
             Rather than dealing with this, we take a different approach.
2566
             For v3 mangled names, we can use the full physname; for v2,
2567
             we use cplus_demangle_opname (which is actually v2 specific),
2568
             because the only interesting names are all operators - once again
2569
             barring the caveat below.  Skip this process if any method in the
2570
             group is a stub, to prevent our fouling up the workings of
2571
             gdb_mangle_name.
2572
 
2573
             The caveat: GCC 2.95.x (and earlier?) put constructors and
2574
             destructors in the same method group.  We need to split this
2575
             into two groups, because they should have different names.
2576
             So for each method group we check whether it contains both
2577
             routines whose physname appears to be a destructor (the physnames
2578
             for and destructors are always provided, due to quirks in v2
2579
             mangling) and routines whose physname does not appear to be a
2580
             destructor.  If so then we break up the list into two halves.
2581
             Even if the constructors and destructors aren't in the same group
2582
             the destructor will still lack the leading tilde, so that also
2583
             needs to be fixed.
2584
 
2585
             So, to summarize what we expect and handle here:
2586
 
2587
                Given         Given          Real         Real       Action
2588
             method name     physname      physname   method name
2589
 
2590
             __opi            [none]     __opi__3Foo  operator int    opname
2591
                                                                   [now or later]
2592
             Foo              _._3Foo       _._3Foo      ~Foo       separate and
2593
                                                                       rename
2594
             operator i     _ZN3FoocviEv _ZN3FoocviEv operator int    demangle
2595
             __comp_ctor  _ZN3FooC1ERKS_ _ZN3FooC1ERKS_   Foo         demangle
2596
          */
2597
 
2598
          tmp_sublist = sublist;
2599
          while (tmp_sublist != NULL)
2600
            {
2601
              if (tmp_sublist->fn_field.is_stub)
2602
                has_stub = 1;
2603
              if (tmp_sublist->fn_field.physname[0] == '_'
2604
                  && tmp_sublist->fn_field.physname[1] == 'Z')
2605
                is_v3 = 1;
2606
 
2607
              if (is_destructor_name (tmp_sublist->fn_field.physname))
2608
                has_destructor++;
2609
              else
2610
                has_other++;
2611
 
2612
              tmp_sublist = tmp_sublist->next;
2613
            }
2614
 
2615
          if (has_destructor && has_other)
2616
            {
2617
              struct next_fnfieldlist *destr_fnlist;
2618
              struct next_fnfield *last_sublist;
2619
 
2620
              /* Create a new fn_fieldlist for the destructors.  */
2621
 
2622
              destr_fnlist = (struct next_fnfieldlist *)
2623
                xmalloc (sizeof (struct next_fnfieldlist));
2624
              make_cleanup (xfree, destr_fnlist);
2625
              memset (destr_fnlist, 0, sizeof (struct next_fnfieldlist));
2626
              destr_fnlist->fn_fieldlist.name
2627
                = obconcat (&objfile->objfile_obstack, "~",
2628
                            new_fnlist->fn_fieldlist.name, (char *) NULL);
2629
 
2630
              destr_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
2631
                obstack_alloc (&objfile->objfile_obstack,
2632
                               sizeof (struct fn_field) * has_destructor);
2633
              memset (destr_fnlist->fn_fieldlist.fn_fields, 0,
2634
                  sizeof (struct fn_field) * has_destructor);
2635
              tmp_sublist = sublist;
2636
              last_sublist = NULL;
2637
              i = 0;
2638
              while (tmp_sublist != NULL)
2639
                {
2640
                  if (!is_destructor_name (tmp_sublist->fn_field.physname))
2641
                    {
2642
                      tmp_sublist = tmp_sublist->next;
2643
                      continue;
2644
                    }
2645
 
2646
                  destr_fnlist->fn_fieldlist.fn_fields[i++]
2647
                    = tmp_sublist->fn_field;
2648
                  if (last_sublist)
2649
                    last_sublist->next = tmp_sublist->next;
2650
                  else
2651
                    sublist = tmp_sublist->next;
2652
                  last_sublist = tmp_sublist;
2653
                  tmp_sublist = tmp_sublist->next;
2654
                }
2655
 
2656
              destr_fnlist->fn_fieldlist.length = has_destructor;
2657
              destr_fnlist->next = fip->fnlist;
2658
              fip->fnlist = destr_fnlist;
2659
              nfn_fields++;
2660
              total_length += has_destructor;
2661
              length -= has_destructor;
2662
            }
2663
          else if (is_v3)
2664
            {
2665
              /* v3 mangling prevents the use of abbreviated physnames,
2666
                 so we can do this here.  There are stubbed methods in v3
2667
                 only:
2668
                 - in -gstabs instead of -gstabs+
2669
                 - or for static methods, which are output as a function type
2670
                   instead of a method type.  */
2671
 
2672
              update_method_name_from_physname (&new_fnlist->fn_fieldlist.name,
2673
                                                sublist->fn_field.physname);
2674
            }
2675
          else if (has_destructor && new_fnlist->fn_fieldlist.name[0] != '~')
2676
            {
2677
              new_fnlist->fn_fieldlist.name =
2678
                concat ("~", main_fn_name, (char *)NULL);
2679
              xfree (main_fn_name);
2680
            }
2681
          else if (!has_stub)
2682
            {
2683
              char dem_opname[256];
2684
              int ret;
2685
 
2686
              ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
2687
                                              dem_opname, DMGL_ANSI);
2688
              if (!ret)
2689
                ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
2690
                                             dem_opname, 0);
2691
              if (ret)
2692
                new_fnlist->fn_fieldlist.name
2693
                  = obsavestring (dem_opname, strlen (dem_opname),
2694
                                  &objfile->objfile_obstack);
2695
            }
2696
 
2697
          new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
2698
            obstack_alloc (&objfile->objfile_obstack,
2699
                           sizeof (struct fn_field) * length);
2700
          memset (new_fnlist->fn_fieldlist.fn_fields, 0,
2701
                  sizeof (struct fn_field) * length);
2702
          for (i = length; (i--, sublist); sublist = sublist->next)
2703
            {
2704
              new_fnlist->fn_fieldlist.fn_fields[i] = sublist->fn_field;
2705
            }
2706
 
2707
          new_fnlist->fn_fieldlist.length = length;
2708
          new_fnlist->next = fip->fnlist;
2709
          fip->fnlist = new_fnlist;
2710
          nfn_fields++;
2711
          total_length += length;
2712
        }
2713
    }
2714
 
2715
  if (nfn_fields)
2716
    {
2717
      ALLOCATE_CPLUS_STRUCT_TYPE (type);
2718
      TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
2719
        TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
2720
      memset (TYPE_FN_FIELDLISTS (type), 0,
2721
              sizeof (struct fn_fieldlist) * nfn_fields);
2722
      TYPE_NFN_FIELDS (type) = nfn_fields;
2723
      TYPE_NFN_FIELDS_TOTAL (type) = total_length;
2724
    }
2725
 
2726
  return 1;
2727
}
2728
 
2729
/* Special GNU C++ name.
2730
 
2731
   Returns 1 for success, 0 for failure.  "failure" means that we can't
2732
   keep parsing and it's time for error_type().  */
2733
 
2734
static int
2735
read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
2736
                 struct objfile *objfile)
2737
{
2738
  char *p;
2739
  char *name;
2740
  char cpp_abbrev;
2741
  struct type *context;
2742
 
2743
  p = *pp;
2744
  if (*++p == 'v')
2745
    {
2746
      name = NULL;
2747
      cpp_abbrev = *++p;
2748
 
2749
      *pp = p + 1;
2750
 
2751
      /* At this point, *pp points to something like "22:23=*22...",
2752
         where the type number before the ':' is the "context" and
2753
         everything after is a regular type definition.  Lookup the
2754
         type, find it's name, and construct the field name. */
2755
 
2756
      context = read_type (pp, objfile);
2757
 
2758
      switch (cpp_abbrev)
2759
        {
2760
        case 'f':               /* $vf -- a virtual function table pointer */
2761
          name = type_name_no_tag (context);
2762
          if (name == NULL)
2763
            {
2764
              name = "";
2765
            }
2766
          fip->list->field.name = obconcat (&objfile->objfile_obstack,
2767
                                            vptr_name, name, (char *) NULL);
2768
          break;
2769
 
2770
        case 'b':               /* $vb -- a virtual bsomethingorother */
2771
          name = type_name_no_tag (context);
2772
          if (name == NULL)
2773
            {
2774
              complaint (&symfile_complaints,
2775
                         _("C++ abbreviated type name unknown at symtab pos %d"),
2776
                         symnum);
2777
              name = "FOO";
2778
            }
2779
          fip->list->field.name = obconcat (&objfile->objfile_obstack, vb_name,
2780
                                            name, (char *) NULL);
2781
          break;
2782
 
2783
        default:
2784
          invalid_cpp_abbrev_complaint (*pp);
2785
          fip->list->field.name = obconcat (&objfile->objfile_obstack,
2786
                                            "INVALID_CPLUSPLUS_ABBREV",
2787
                                            (char *) NULL);
2788
          break;
2789
        }
2790
 
2791
      /* At this point, *pp points to the ':'.  Skip it and read the
2792
         field type. */
2793
 
2794
      p = ++(*pp);
2795
      if (p[-1] != ':')
2796
        {
2797
          invalid_cpp_abbrev_complaint (*pp);
2798
          return 0;
2799
        }
2800
      fip->list->field.type = read_type (pp, objfile);
2801
      if (**pp == ',')
2802
        (*pp)++;                /* Skip the comma.  */
2803
      else
2804
        return 0;
2805
 
2806
      {
2807
        int nbits;
2808
 
2809
        FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits,
2810
                                                            0);
2811
        if (nbits != 0)
2812
          return 0;
2813
      }
2814
      /* This field is unpacked.  */
2815
      FIELD_BITSIZE (fip->list->field) = 0;
2816
      fip->list->visibility = VISIBILITY_PRIVATE;
2817
    }
2818
  else
2819
    {
2820
      invalid_cpp_abbrev_complaint (*pp);
2821
      /* We have no idea what syntax an unrecognized abbrev would have, so
2822
         better return 0.  If we returned 1, we would need to at least advance
2823
         *pp to avoid an infinite loop.  */
2824
      return 0;
2825
    }
2826
  return 1;
2827
}
2828
 
2829
static void
2830
read_one_struct_field (struct field_info *fip, char **pp, char *p,
2831
                       struct type *type, struct objfile *objfile)
2832
{
2833
  struct gdbarch *gdbarch = get_objfile_arch (objfile);
2834
 
2835
  fip->list->field.name =
2836
    obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
2837
  *pp = p + 1;
2838
 
2839
  /* This means we have a visibility for a field coming. */
2840
  if (**pp == '/')
2841
    {
2842
      (*pp)++;
2843
      fip->list->visibility = *(*pp)++;
2844
    }
2845
  else
2846
    {
2847
      /* normal dbx-style format, no explicit visibility */
2848
      fip->list->visibility = VISIBILITY_PUBLIC;
2849
    }
2850
 
2851
  fip->list->field.type = read_type (pp, objfile);
2852
  if (**pp == ':')
2853
    {
2854
      p = ++(*pp);
2855
#if 0
2856
      /* Possible future hook for nested types. */
2857
      if (**pp == '!')
2858
        {
2859
          fip->list->field.bitpos = (long) -2;  /* nested type */
2860
          p = ++(*pp);
2861
        }
2862
      else
2863
        ...;
2864
#endif
2865
      while (*p != ';')
2866
        {
2867
          p++;
2868
        }
2869
      /* Static class member.  */
2870
      SET_FIELD_PHYSNAME (fip->list->field, savestring (*pp, p - *pp));
2871
      *pp = p + 1;
2872
      return;
2873
    }
2874
  else if (**pp != ',')
2875
    {
2876
      /* Bad structure-type format.  */
2877
      stabs_general_complaint ("bad structure-type format");
2878
      return;
2879
    }
2880
 
2881
  (*pp)++;                      /* Skip the comma.  */
2882
 
2883
  {
2884
    int nbits;
2885
 
2886
    FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits, 0);
2887
    if (nbits != 0)
2888
      {
2889
        stabs_general_complaint ("bad structure-type format");
2890
        return;
2891
      }
2892
    FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits, 0);
2893
    if (nbits != 0)
2894
      {
2895
        stabs_general_complaint ("bad structure-type format");
2896
        return;
2897
      }
2898
  }
2899
 
2900
  if (FIELD_BITPOS (fip->list->field) == 0
2901
      && FIELD_BITSIZE (fip->list->field) == 0)
2902
    {
2903
      /* This can happen in two cases: (1) at least for gcc 2.4.5 or so,
2904
         it is a field which has been optimized out.  The correct stab for
2905
         this case is to use VISIBILITY_IGNORE, but that is a recent
2906
         invention.  (2) It is a 0-size array.  For example
2907
         union { int num; char str[0]; } foo.  Printing _("<no value>" for
2908
         str in "p foo" is OK, since foo.str (and thus foo.str[3])
2909
         will continue to work, and a 0-size array as a whole doesn't
2910
         have any contents to print.
2911
 
2912
         I suspect this probably could also happen with gcc -gstabs (not
2913
         -gstabs+) for static fields, and perhaps other C++ extensions.
2914
         Hopefully few people use -gstabs with gdb, since it is intended
2915
         for dbx compatibility.  */
2916
 
2917
      /* Ignore this field.  */
2918
      fip->list->visibility = VISIBILITY_IGNORE;
2919
    }
2920
  else
2921
    {
2922
      /* Detect an unpacked field and mark it as such.
2923
         dbx gives a bit size for all fields.
2924
         Note that forward refs cannot be packed,
2925
         and treat enums as if they had the width of ints.  */
2926
 
2927
      struct type *field_type = check_typedef (FIELD_TYPE (fip->list->field));
2928
 
2929
      if (TYPE_CODE (field_type) != TYPE_CODE_INT
2930
          && TYPE_CODE (field_type) != TYPE_CODE_RANGE
2931
          && TYPE_CODE (field_type) != TYPE_CODE_BOOL
2932
          && TYPE_CODE (field_type) != TYPE_CODE_ENUM)
2933
        {
2934
          FIELD_BITSIZE (fip->list->field) = 0;
2935
        }
2936
      if ((FIELD_BITSIZE (fip->list->field)
2937
           == TARGET_CHAR_BIT * TYPE_LENGTH (field_type)
2938
           || (TYPE_CODE (field_type) == TYPE_CODE_ENUM
2939
               && FIELD_BITSIZE (fip->list->field)
2940
                  == gdbarch_int_bit (gdbarch))
2941
          )
2942
          &&
2943
          FIELD_BITPOS (fip->list->field) % 8 == 0)
2944
        {
2945
          FIELD_BITSIZE (fip->list->field) = 0;
2946
        }
2947
    }
2948
}
2949
 
2950
 
2951
/* Read struct or class data fields.  They have the form:
2952
 
2953
   NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2954
 
2955
   At the end, we see a semicolon instead of a field.
2956
 
2957
   In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2958
   a static field.
2959
 
2960
   The optional VISIBILITY is one of:
2961
 
2962
   '/0' (VISIBILITY_PRIVATE)
2963
   '/1' (VISIBILITY_PROTECTED)
2964
   '/2' (VISIBILITY_PUBLIC)
2965
   '/9' (VISIBILITY_IGNORE)
2966
 
2967
   or nothing, for C style fields with public visibility.
2968
 
2969
   Returns 1 for success, 0 for failure.  */
2970
 
2971
static int
2972
read_struct_fields (struct field_info *fip, char **pp, struct type *type,
2973
                    struct objfile *objfile)
2974
{
2975
  char *p;
2976
  struct nextfield *new;
2977
 
2978
  /* We better set p right now, in case there are no fields at all...    */
2979
 
2980
  p = *pp;
2981
 
2982
  /* Read each data member type until we find the terminating ';' at the end of
2983
     the data member list, or break for some other reason such as finding the
2984
     start of the member function list. */
2985
  /* Stab string for structure/union does not end with two ';' in
2986
     SUN C compiler 5.3 i.e. F6U2, hence check for end of string. */
2987
 
2988
  while (**pp != ';' && **pp != '\0')
2989
    {
2990
      STABS_CONTINUE (pp, objfile);
2991
      /* Get space to record the next field's data.  */
2992
      new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2993
      make_cleanup (xfree, new);
2994
      memset (new, 0, sizeof (struct nextfield));
2995
      new->next = fip->list;
2996
      fip->list = new;
2997
 
2998
      /* Get the field name.  */
2999
      p = *pp;
3000
 
3001
      /* If is starts with CPLUS_MARKER it is a special abbreviation,
3002
         unless the CPLUS_MARKER is followed by an underscore, in
3003
         which case it is just the name of an anonymous type, which we
3004
         should handle like any other type name.  */
3005
 
3006
      if (is_cplus_marker (p[0]) && p[1] != '_')
3007
        {
3008
          if (!read_cpp_abbrev (fip, pp, type, objfile))
3009
            return 0;
3010
          continue;
3011
        }
3012
 
3013
      /* Look for the ':' that separates the field name from the field
3014
         values.  Data members are delimited by a single ':', while member
3015
         functions are delimited by a pair of ':'s.  When we hit the member
3016
         functions (if any), terminate scan loop and return. */
3017
 
3018
      while (*p != ':' && *p != '\0')
3019
        {
3020
          p++;
3021
        }
3022
      if (*p == '\0')
3023
        return 0;
3024
 
3025
      /* Check to see if we have hit the member functions yet.  */
3026
      if (p[1] == ':')
3027
        {
3028
          break;
3029
        }
3030
      read_one_struct_field (fip, pp, p, type, objfile);
3031
    }
3032
  if (p[0] == ':' && p[1] == ':')
3033
    {
3034
      /* (the deleted) chill the list of fields: the last entry (at
3035
         the head) is a partially constructed entry which we now
3036
         scrub. */
3037
      fip->list = fip->list->next;
3038
    }
3039
  return 1;
3040
}
3041
/* *INDENT-OFF* */
3042
/* The stabs for C++ derived classes contain baseclass information which
3043
   is marked by a '!' character after the total size.  This function is
3044
   called when we encounter the baseclass marker, and slurps up all the
3045
   baseclass information.
3046
 
3047
   Immediately following the '!' marker is the number of base classes that
3048
   the class is derived from, followed by information for each base class.
3049
   For each base class, there are two visibility specifiers, a bit offset
3050
   to the base class information within the derived class, a reference to
3051
   the type for the base class, and a terminating semicolon.
3052
 
3053
   A typical example, with two base classes, would be "!2,020,19;0264,21;".
3054
                                                       ^^ ^ ^ ^  ^ ^  ^
3055
        Baseclass information marker __________________|| | | |  | |  |
3056
        Number of baseclasses __________________________| | | |  | |  |
3057
        Visibility specifiers (2) ________________________| | |  | |  |
3058
        Offset in bits from start of class _________________| |  | |  |
3059
        Type number for base class ___________________________|  | |  |
3060
        Visibility specifiers (2) _______________________________| |  |
3061
        Offset in bits from start of class ________________________|  |
3062
        Type number of base class ____________________________________|
3063
 
3064
  Return 1 for success, 0 for (error-type-inducing) failure.  */
3065
/* *INDENT-ON* */
3066
 
3067
 
3068
 
3069
static int
3070
read_baseclasses (struct field_info *fip, char **pp, struct type *type,
3071
                  struct objfile *objfile)
3072
{
3073
  int i;
3074
  struct nextfield *new;
3075
 
3076
  if (**pp != '!')
3077
    {
3078
      return 1;
3079
    }
3080
  else
3081
    {
3082
      /* Skip the '!' baseclass information marker. */
3083
      (*pp)++;
3084
    }
3085
 
3086
  ALLOCATE_CPLUS_STRUCT_TYPE (type);
3087
  {
3088
    int nbits;
3089
 
3090
    TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits, 0);
3091
    if (nbits != 0)
3092
      return 0;
3093
  }
3094
 
3095
#if 0
3096
  /* Some stupid compilers have trouble with the following, so break
3097
     it up into simpler expressions.  */
3098
  TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
3099
    TYPE_ALLOC (type, B_BYTES (TYPE_N_BASECLASSES (type)));
3100
#else
3101
  {
3102
    int num_bytes = B_BYTES (TYPE_N_BASECLASSES (type));
3103
    char *pointer;
3104
 
3105
    pointer = (char *) TYPE_ALLOC (type, num_bytes);
3106
    TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
3107
  }
3108
#endif /* 0 */
3109
 
3110
  B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), TYPE_N_BASECLASSES (type));
3111
 
3112
  for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
3113
    {
3114
      new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
3115
      make_cleanup (xfree, new);
3116
      memset (new, 0, sizeof (struct nextfield));
3117
      new->next = fip->list;
3118
      fip->list = new;
3119
      FIELD_BITSIZE (new->field) = 0;    /* this should be an unpacked field! */
3120
 
3121
      STABS_CONTINUE (pp, objfile);
3122
      switch (**pp)
3123
        {
3124
        case '0':
3125
          /* Nothing to do. */
3126
          break;
3127
        case '1':
3128
          SET_TYPE_FIELD_VIRTUAL (type, i);
3129
          break;
3130
        default:
3131
          /* Unknown character.  Complain and treat it as non-virtual.  */
3132
          {
3133
            complaint (&symfile_complaints,
3134
                       _("Unknown virtual character `%c' for baseclass"), **pp);
3135
          }
3136
        }
3137
      ++(*pp);
3138
 
3139
      new->visibility = *(*pp)++;
3140
      switch (new->visibility)
3141
        {
3142
        case VISIBILITY_PRIVATE:
3143
        case VISIBILITY_PROTECTED:
3144
        case VISIBILITY_PUBLIC:
3145
          break;
3146
        default:
3147
          /* Bad visibility format.  Complain and treat it as
3148
             public.  */
3149
          {
3150
            complaint (&symfile_complaints,
3151
                       _("Unknown visibility `%c' for baseclass"),
3152
                       new->visibility);
3153
            new->visibility = VISIBILITY_PUBLIC;
3154
          }
3155
        }
3156
 
3157
      {
3158
        int nbits;
3159
 
3160
        /* The remaining value is the bit offset of the portion of the object
3161
           corresponding to this baseclass.  Always zero in the absence of
3162
           multiple inheritance.  */
3163
 
3164
        FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits, 0);
3165
        if (nbits != 0)
3166
          return 0;
3167
      }
3168
 
3169
      /* The last piece of baseclass information is the type of the
3170
         base class.  Read it, and remember it's type name as this
3171
         field's name. */
3172
 
3173
      new->field.type = read_type (pp, objfile);
3174
      new->field.name = type_name_no_tag (new->field.type);
3175
 
3176
      /* skip trailing ';' and bump count of number of fields seen */
3177
      if (**pp == ';')
3178
        (*pp)++;
3179
      else
3180
        return 0;
3181
    }
3182
  return 1;
3183
}
3184
 
3185
/* The tail end of stabs for C++ classes that contain a virtual function
3186
   pointer contains a tilde, a %, and a type number.
3187
   The type number refers to the base class (possibly this class itself) which
3188
   contains the vtable pointer for the current class.
3189
 
3190
   This function is called when we have parsed all the method declarations,
3191
   so we can look for the vptr base class info.  */
3192
 
3193
static int
3194
read_tilde_fields (struct field_info *fip, char **pp, struct type *type,
3195
                   struct objfile *objfile)
3196
{
3197
  char *p;
3198
 
3199
  STABS_CONTINUE (pp, objfile);
3200
 
3201
  /* If we are positioned at a ';', then skip it. */
3202
  if (**pp == ';')
3203
    {
3204
      (*pp)++;
3205
    }
3206
 
3207
  if (**pp == '~')
3208
    {
3209
      (*pp)++;
3210
 
3211
      if (**pp == '=' || **pp == '+' || **pp == '-')
3212
        {
3213
          /* Obsolete flags that used to indicate the presence
3214
             of constructors and/or destructors. */
3215
          (*pp)++;
3216
        }
3217
 
3218
      /* Read either a '%' or the final ';'.  */
3219
      if (*(*pp)++ == '%')
3220
        {
3221
          /* The next number is the type number of the base class
3222
             (possibly our own class) which supplies the vtable for
3223
             this class.  Parse it out, and search that class to find
3224
             its vtable pointer, and install those into TYPE_VPTR_BASETYPE
3225
             and TYPE_VPTR_FIELDNO.  */
3226
 
3227
          struct type *t;
3228
          int i;
3229
 
3230
          t = read_type (pp, objfile);
3231
          p = (*pp)++;
3232
          while (*p != '\0' && *p != ';')
3233
            {
3234
              p++;
3235
            }
3236
          if (*p == '\0')
3237
            {
3238
              /* Premature end of symbol.  */
3239
              return 0;
3240
            }
3241
 
3242
          TYPE_VPTR_BASETYPE (type) = t;
3243
          if (type == t)        /* Our own class provides vtbl ptr */
3244
            {
3245
              for (i = TYPE_NFIELDS (t) - 1;
3246
                   i >= TYPE_N_BASECLASSES (t);
3247
                   --i)
3248
                {
3249
                  char *name = TYPE_FIELD_NAME (t, i);
3250
 
3251
                  if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2)
3252
                      && is_cplus_marker (name[sizeof (vptr_name) - 2]))
3253
                    {
3254
                      TYPE_VPTR_FIELDNO (type) = i;
3255
                      goto gotit;
3256
                    }
3257
                }
3258
              /* Virtual function table field not found.  */
3259
              complaint (&symfile_complaints,
3260
                         _("virtual function table pointer not found when defining class `%s'"),
3261
                         TYPE_NAME (type));
3262
              return 0;
3263
            }
3264
          else
3265
            {
3266
              TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
3267
            }
3268
 
3269
        gotit:
3270
          *pp = p + 1;
3271
        }
3272
    }
3273
  return 1;
3274
}
3275
 
3276
static int
3277
attach_fn_fields_to_type (struct field_info *fip, struct type *type)
3278
{
3279
  int n;
3280
 
3281
  for (n = TYPE_NFN_FIELDS (type);
3282
       fip->fnlist != NULL;
3283
       fip->fnlist = fip->fnlist->next)
3284
    {
3285
      --n;                      /* Circumvent Sun3 compiler bug */
3286
      TYPE_FN_FIELDLISTS (type)[n] = fip->fnlist->fn_fieldlist;
3287
    }
3288
  return 1;
3289
}
3290
 
3291
/* Create the vector of fields, and record how big it is.
3292
   We need this info to record proper virtual function table information
3293
   for this class's virtual functions.  */
3294
 
3295
static int
3296
attach_fields_to_type (struct field_info *fip, struct type *type,
3297
                       struct objfile *objfile)
3298
{
3299
  int nfields = 0;
3300
  int non_public_fields = 0;
3301
  struct nextfield *scan;
3302
 
3303
  /* Count up the number of fields that we have, as well as taking note of
3304
     whether or not there are any non-public fields, which requires us to
3305
     allocate and build the private_field_bits and protected_field_bits
3306
     bitfields. */
3307
 
3308
  for (scan = fip->list; scan != NULL; scan = scan->next)
3309
    {
3310
      nfields++;
3311
      if (scan->visibility != VISIBILITY_PUBLIC)
3312
        {
3313
          non_public_fields++;
3314
        }
3315
    }
3316
 
3317
  /* Now we know how many fields there are, and whether or not there are any
3318
     non-public fields.  Record the field count, allocate space for the
3319
     array of fields, and create blank visibility bitfields if necessary. */
3320
 
3321
  TYPE_NFIELDS (type) = nfields;
3322
  TYPE_FIELDS (type) = (struct field *)
3323
    TYPE_ALLOC (type, sizeof (struct field) * nfields);
3324
  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
3325
 
3326
  if (non_public_fields)
3327
    {
3328
      ALLOCATE_CPLUS_STRUCT_TYPE (type);
3329
 
3330
      TYPE_FIELD_PRIVATE_BITS (type) =
3331
        (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3332
      B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
3333
 
3334
      TYPE_FIELD_PROTECTED_BITS (type) =
3335
        (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3336
      B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
3337
 
3338
      TYPE_FIELD_IGNORE_BITS (type) =
3339
        (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3340
      B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
3341
    }
3342
 
3343
  /* Copy the saved-up fields into the field vector.  Start from the head
3344
     of the list, adding to the tail of the field array, so that they end
3345
     up in the same order in the array in which they were added to the list. */
3346
 
3347
  while (nfields-- > 0)
3348
    {
3349
      TYPE_FIELD (type, nfields) = fip->list->field;
3350
      switch (fip->list->visibility)
3351
        {
3352
        case VISIBILITY_PRIVATE:
3353
          SET_TYPE_FIELD_PRIVATE (type, nfields);
3354
          break;
3355
 
3356
        case VISIBILITY_PROTECTED:
3357
          SET_TYPE_FIELD_PROTECTED (type, nfields);
3358
          break;
3359
 
3360
        case VISIBILITY_IGNORE:
3361
          SET_TYPE_FIELD_IGNORE (type, nfields);
3362
          break;
3363
 
3364
        case VISIBILITY_PUBLIC:
3365
          break;
3366
 
3367
        default:
3368
          /* Unknown visibility.  Complain and treat it as public.  */
3369
          {
3370
            complaint (&symfile_complaints, _("Unknown visibility `%c' for field"),
3371
                       fip->list->visibility);
3372
          }
3373
          break;
3374
        }
3375
      fip->list = fip->list->next;
3376
    }
3377
  return 1;
3378
}
3379
 
3380
 
3381
/* Complain that the compiler has emitted more than one definition for the
3382
   structure type TYPE.  */
3383
static void
3384
complain_about_struct_wipeout (struct type *type)
3385
{
3386
  char *name = "";
3387
  char *kind = "";
3388
 
3389
  if (TYPE_TAG_NAME (type))
3390
    {
3391
      name = TYPE_TAG_NAME (type);
3392
      switch (TYPE_CODE (type))
3393
        {
3394
        case TYPE_CODE_STRUCT: kind = "struct "; break;
3395
        case TYPE_CODE_UNION:  kind = "union ";  break;
3396
        case TYPE_CODE_ENUM:   kind = "enum ";   break;
3397
        default: kind = "";
3398
        }
3399
    }
3400
  else if (TYPE_NAME (type))
3401
    {
3402
      name = TYPE_NAME (type);
3403
      kind = "";
3404
    }
3405
  else
3406
    {
3407
      name = "<unknown>";
3408
      kind = "";
3409
    }
3410
 
3411
  complaint (&symfile_complaints,
3412
             _("struct/union type gets multiply defined: %s%s"), kind, name);
3413
}
3414
 
3415
/* Set the length for all variants of a same main_type, which are
3416
   connected in the closed chain.
3417
 
3418
   This is something that needs to be done when a type is defined *after*
3419
   some cross references to this type have already been read.  Consider
3420
   for instance the following scenario where we have the following two
3421
   stabs entries:
3422
 
3423
        .stabs  "t:p(0,21)=*(0,22)=k(0,23)=xsdummy:",160,0,28,-24
3424
        .stabs  "dummy:T(0,23)=s16x:(0,1),0,3[...]"
3425
 
3426
   A stubbed version of type dummy is created while processing the first
3427
   stabs entry.  The length of that type is initially set to zero, since
3428
   it is unknown at this point.  Also, a "constant" variation of type
3429
   "dummy" is created as well (this is the "(0,22)=k(0,23)" section of
3430
   the stabs line).
3431
 
3432
   The second stabs entry allows us to replace the stubbed definition
3433
   with the real definition.  However, we still need to adjust the length
3434
   of the "constant" variation of that type, as its length was left
3435
   untouched during the main type replacement...  */
3436
 
3437
static void
3438
set_length_in_type_chain (struct type *type)
3439
{
3440
  struct type *ntype = TYPE_CHAIN (type);
3441
 
3442
  while (ntype != type)
3443
    {
3444
      if (TYPE_LENGTH(ntype) == 0)
3445
        TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
3446
      else
3447
        complain_about_struct_wipeout (ntype);
3448
      ntype = TYPE_CHAIN (ntype);
3449
    }
3450
}
3451
 
3452
/* Read the description of a structure (or union type) and return an object
3453
   describing the type.
3454
 
3455
   PP points to a character pointer that points to the next unconsumed token
3456
   in the the stabs string.  For example, given stabs "A:T4=s4a:1,0,32;;",
3457
   *PP will point to "4a:1,0,32;;".
3458
 
3459
   TYPE points to an incomplete type that needs to be filled in.
3460
 
3461
   OBJFILE points to the current objfile from which the stabs information is
3462
   being read.  (Note that it is redundant in that TYPE also contains a pointer
3463
   to this same objfile, so it might be a good idea to eliminate it.  FIXME).
3464
 */
3465
 
3466
static struct type *
3467
read_struct_type (char **pp, struct type *type, enum type_code type_code,
3468
                  struct objfile *objfile)
3469
{
3470
  struct cleanup *back_to;
3471
  struct field_info fi;
3472
 
3473
  fi.list = NULL;
3474
  fi.fnlist = NULL;
3475
 
3476
  /* When describing struct/union/class types in stabs, G++ always drops
3477
     all qualifications from the name.  So if you've got:
3478
       struct A { ... struct B { ... }; ... };
3479
     then G++ will emit stabs for `struct A::B' that call it simply
3480
     `struct B'.  Obviously, if you've got a real top-level definition for
3481
     `struct B', or other nested definitions, this is going to cause
3482
     problems.
3483
 
3484
     Obviously, GDB can't fix this by itself, but it can at least avoid
3485
     scribbling on existing structure type objects when new definitions
3486
     appear.  */
3487
  if (! (TYPE_CODE (type) == TYPE_CODE_UNDEF
3488
         || TYPE_STUB (type)))
3489
    {
3490
      complain_about_struct_wipeout (type);
3491
 
3492
      /* It's probably best to return the type unchanged.  */
3493
      return type;
3494
    }
3495
 
3496
  back_to = make_cleanup (null_cleanup, 0);
3497
 
3498
  INIT_CPLUS_SPECIFIC (type);
3499
  TYPE_CODE (type) = type_code;
3500
  TYPE_STUB (type) = 0;
3501
 
3502
  /* First comes the total size in bytes.  */
3503
 
3504
  {
3505
    int nbits;
3506
 
3507
    TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits, 0);
3508
    if (nbits != 0)
3509
      return error_type (pp, objfile);
3510
    set_length_in_type_chain (type);
3511
  }
3512
 
3513
  /* Now read the baseclasses, if any, read the regular C struct or C++
3514
     class member fields, attach the fields to the type, read the C++
3515
     member functions, attach them to the type, and then read any tilde
3516
     field (baseclass specifier for the class holding the main vtable). */
3517
 
3518
  if (!read_baseclasses (&fi, pp, type, objfile)
3519
      || !read_struct_fields (&fi, pp, type, objfile)
3520
      || !attach_fields_to_type (&fi, type, objfile)
3521
      || !read_member_functions (&fi, pp, type, objfile)
3522
      || !attach_fn_fields_to_type (&fi, type)
3523
      || !read_tilde_fields (&fi, pp, type, objfile))
3524
    {
3525
      type = error_type (pp, objfile);
3526
    }
3527
 
3528
  do_cleanups (back_to);
3529
  return (type);
3530
}
3531
 
3532
/* Read a definition of an array type,
3533
   and create and return a suitable type object.
3534
   Also creates a range type which represents the bounds of that
3535
   array.  */
3536
 
3537
static struct type *
3538
read_array_type (char **pp, struct type *type,
3539
                 struct objfile *objfile)
3540
{
3541
  struct type *index_type, *element_type, *range_type;
3542
  int lower, upper;
3543
  int adjustable = 0;
3544
  int nbits;
3545
 
3546
  /* Format of an array type:
3547
     "ar<index type>;lower;upper;<array_contents_type>".
3548
     OS9000: "arlower,upper;<array_contents_type>".
3549
 
3550
     Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
3551
     for these, produce a type like float[][].  */
3552
 
3553
    {
3554
      index_type = read_type (pp, objfile);
3555
      if (**pp != ';')
3556
        /* Improper format of array type decl.  */
3557
        return error_type (pp, objfile);
3558
      ++*pp;
3559
    }
3560
 
3561
  if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
3562
    {
3563
      (*pp)++;
3564
      adjustable = 1;
3565
    }
3566
  lower = read_huge_number (pp, ';', &nbits, 0);
3567
 
3568
  if (nbits != 0)
3569
    return error_type (pp, objfile);
3570
 
3571
  if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
3572
    {
3573
      (*pp)++;
3574
      adjustable = 1;
3575
    }
3576
  upper = read_huge_number (pp, ';', &nbits, 0);
3577
  if (nbits != 0)
3578
    return error_type (pp, objfile);
3579
 
3580
  element_type = read_type (pp, objfile);
3581
 
3582
  if (adjustable)
3583
    {
3584
      lower = 0;
3585
      upper = -1;
3586
    }
3587
 
3588
  range_type =
3589
    create_range_type ((struct type *) NULL, index_type, lower, upper);
3590
  type = create_array_type (type, element_type, range_type);
3591
 
3592
  return type;
3593
}
3594
 
3595
 
3596
/* Read a definition of an enumeration type,
3597
   and create and return a suitable type object.
3598
   Also defines the symbols that represent the values of the type.  */
3599
 
3600
static struct type *
3601
read_enum_type (char **pp, struct type *type,
3602
                struct objfile *objfile)
3603
{
3604
  struct gdbarch *gdbarch = get_objfile_arch (objfile);
3605
  char *p;
3606
  char *name;
3607
  long n;
3608
  struct symbol *sym;
3609
  int nsyms = 0;
3610
  struct pending **symlist;
3611
  struct pending *osyms, *syms;
3612
  int o_nsyms;
3613
  int nbits;
3614
  int unsigned_enum = 1;
3615
 
3616
#if 0
3617
  /* FIXME!  The stabs produced by Sun CC merrily define things that ought
3618
     to be file-scope, between N_FN entries, using N_LSYM.  What's a mother
3619
     to do?  For now, force all enum values to file scope.  */
3620
  if (within_function)
3621
    symlist = &local_symbols;
3622
  else
3623
#endif
3624
    symlist = &file_symbols;
3625
  osyms = *symlist;
3626
  o_nsyms = osyms ? osyms->nsyms : 0;
3627
 
3628
  /* The aix4 compiler emits an extra field before the enum members;
3629
     my guess is it's a type of some sort.  Just ignore it.  */
3630
  if (**pp == '-')
3631
    {
3632
      /* Skip over the type.  */
3633
      while (**pp != ':')
3634
        (*pp)++;
3635
 
3636
      /* Skip over the colon.  */
3637
      (*pp)++;
3638
    }
3639
 
3640
  /* Read the value-names and their values.
3641
     The input syntax is NAME:VALUE,NAME:VALUE, and so on.
3642
     A semicolon or comma instead of a NAME means the end.  */
3643
  while (**pp && **pp != ';' && **pp != ',')
3644
    {
3645
      STABS_CONTINUE (pp, objfile);
3646
      p = *pp;
3647
      while (*p != ':')
3648
        p++;
3649
      name = obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
3650
      *pp = p + 1;
3651
      n = read_huge_number (pp, ',', &nbits, 0);
3652
      if (nbits != 0)
3653
        return error_type (pp, objfile);
3654
 
3655
      sym = (struct symbol *)
3656
        obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
3657
      memset (sym, 0, sizeof (struct symbol));
3658
      SYMBOL_SET_LINKAGE_NAME (sym, name);
3659
      SYMBOL_LANGUAGE (sym) = current_subfile->language;
3660
      SYMBOL_CLASS (sym) = LOC_CONST;
3661
      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
3662
      SYMBOL_VALUE (sym) = n;
3663
      if (n < 0)
3664
        unsigned_enum = 0;
3665
      add_symbol_to_list (sym, symlist);
3666
      nsyms++;
3667
    }
3668
 
3669
  if (**pp == ';')
3670
    (*pp)++;                    /* Skip the semicolon.  */
3671
 
3672
  /* Now fill in the fields of the type-structure.  */
3673
 
3674
  TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
3675
  set_length_in_type_chain (type);
3676
  TYPE_CODE (type) = TYPE_CODE_ENUM;
3677
  TYPE_STUB (type) = 0;
3678
  if (unsigned_enum)
3679
    TYPE_UNSIGNED (type) = 1;
3680
  TYPE_NFIELDS (type) = nsyms;
3681
  TYPE_FIELDS (type) = (struct field *)
3682
    TYPE_ALLOC (type, sizeof (struct field) * nsyms);
3683
  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
3684
 
3685
  /* Find the symbols for the values and put them into the type.
3686
     The symbols can be found in the symlist that we put them on
3687
     to cause them to be defined.  osyms contains the old value
3688
     of that symlist; everything up to there was defined by us.  */
3689
  /* Note that we preserve the order of the enum constants, so
3690
     that in something like "enum {FOO, LAST_THING=FOO}" we print
3691
     FOO, not LAST_THING.  */
3692
 
3693
  for (syms = *symlist, n = nsyms - 1; syms; syms = syms->next)
3694
    {
3695
      int last = syms == osyms ? o_nsyms : 0;
3696
      int j = syms->nsyms;
3697
 
3698
      for (; --j >= last; --n)
3699
        {
3700
          struct symbol *xsym = syms->symbol[j];
3701
 
3702
          SYMBOL_TYPE (xsym) = type;
3703
          TYPE_FIELD_NAME (type, n) = SYMBOL_LINKAGE_NAME (xsym);
3704
          TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
3705
          TYPE_FIELD_BITSIZE (type, n) = 0;
3706
        }
3707
      if (syms == osyms)
3708
        break;
3709
    }
3710
 
3711
  return type;
3712
}
3713
 
3714
/* Sun's ACC uses a somewhat saner method for specifying the builtin
3715
   typedefs in every file (for int, long, etc):
3716
 
3717
   type = b <signed> <width> <format type>; <offset>; <nbits>
3718
   signed = u or s.
3719
   optional format type = c or b for char or boolean.
3720
   offset = offset from high order bit to start bit of type.
3721
   width is # bytes in object of this type, nbits is # bits in type.
3722
 
3723
   The width/offset stuff appears to be for small objects stored in
3724
   larger ones (e.g. `shorts' in `int' registers).  We ignore it for now,
3725
   FIXME.  */
3726
 
3727
static struct type *
3728
read_sun_builtin_type (char **pp, int typenums[2], struct objfile *objfile)
3729
{
3730
  int type_bits;
3731
  int nbits;
3732
  int signed_type;
3733
  enum type_code code = TYPE_CODE_INT;
3734
 
3735
  switch (**pp)
3736
    {
3737
    case 's':
3738
      signed_type = 1;
3739
      break;
3740
    case 'u':
3741
      signed_type = 0;
3742
      break;
3743
    default:
3744
      return error_type (pp, objfile);
3745
    }
3746
  (*pp)++;
3747
 
3748
  /* For some odd reason, all forms of char put a c here.  This is strange
3749
     because no other type has this honor.  We can safely ignore this because
3750
     we actually determine 'char'acterness by the number of bits specified in
3751
     the descriptor.
3752
     Boolean forms, e.g Fortran logical*X, put a b here.  */
3753
 
3754
  if (**pp == 'c')
3755
    (*pp)++;
3756
  else if (**pp == 'b')
3757
    {
3758
      code = TYPE_CODE_BOOL;
3759
      (*pp)++;
3760
    }
3761
 
3762
  /* The first number appears to be the number of bytes occupied
3763
     by this type, except that unsigned short is 4 instead of 2.
3764
     Since this information is redundant with the third number,
3765
     we will ignore it.  */
3766
  read_huge_number (pp, ';', &nbits, 0);
3767
  if (nbits != 0)
3768
    return error_type (pp, objfile);
3769
 
3770
  /* The second number is always 0, so ignore it too. */
3771
  read_huge_number (pp, ';', &nbits, 0);
3772
  if (nbits != 0)
3773
    return error_type (pp, objfile);
3774
 
3775
  /* The third number is the number of bits for this type. */
3776
  type_bits = read_huge_number (pp, 0, &nbits, 0);
3777
  if (nbits != 0)
3778
    return error_type (pp, objfile);
3779
  /* The type *should* end with a semicolon.  If it are embedded
3780
     in a larger type the semicolon may be the only way to know where
3781
     the type ends.  If this type is at the end of the stabstring we
3782
     can deal with the omitted semicolon (but we don't have to like
3783
     it).  Don't bother to complain(), Sun's compiler omits the semicolon
3784
     for "void".  */
3785
  if (**pp == ';')
3786
    ++(*pp);
3787
 
3788
  if (type_bits == 0)
3789
    return init_type (TYPE_CODE_VOID, 1,
3790
                      signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *) NULL,
3791
                      objfile);
3792
  else
3793
    return init_type (code,
3794
                      type_bits / TARGET_CHAR_BIT,
3795
                      signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *) NULL,
3796
                      objfile);
3797
}
3798
 
3799
static struct type *
3800
read_sun_floating_type (char **pp, int typenums[2], struct objfile *objfile)
3801
{
3802
  int nbits;
3803
  int details;
3804
  int nbytes;
3805
  struct type *rettype;
3806
 
3807
  /* The first number has more details about the type, for example
3808
     FN_COMPLEX.  */
3809
  details = read_huge_number (pp, ';', &nbits, 0);
3810
  if (nbits != 0)
3811
    return error_type (pp, objfile);
3812
 
3813
  /* The second number is the number of bytes occupied by this type */
3814
  nbytes = read_huge_number (pp, ';', &nbits, 0);
3815
  if (nbits != 0)
3816
    return error_type (pp, objfile);
3817
 
3818
  if (details == NF_COMPLEX || details == NF_COMPLEX16
3819
      || details == NF_COMPLEX32)
3820
    {
3821
      rettype = init_type (TYPE_CODE_COMPLEX, nbytes, 0, NULL, objfile);
3822
      TYPE_TARGET_TYPE (rettype)
3823
        = init_type (TYPE_CODE_FLT, nbytes / 2, 0, NULL, objfile);
3824
      return rettype;
3825
    }
3826
 
3827
  return init_type (TYPE_CODE_FLT, nbytes, 0, NULL, objfile);
3828
}
3829
 
3830
/* Read a number from the string pointed to by *PP.
3831
   The value of *PP is advanced over the number.
3832
   If END is nonzero, the character that ends the
3833
   number must match END, or an error happens;
3834
   and that character is skipped if it does match.
3835
   If END is zero, *PP is left pointing to that character.
3836
 
3837
   If TWOS_COMPLEMENT_BITS is set to a strictly positive value and if
3838
   the number is represented in an octal representation, assume that
3839
   it is represented in a 2's complement representation with a size of
3840
   TWOS_COMPLEMENT_BITS.
3841
 
3842
   If the number fits in a long, set *BITS to 0 and return the value.
3843
   If not, set *BITS to be the number of bits in the number and return 0.
3844
 
3845
   If encounter garbage, set *BITS to -1 and return 0.  */
3846
 
3847
static long
3848
read_huge_number (char **pp, int end, int *bits, int twos_complement_bits)
3849
{
3850
  char *p = *pp;
3851
  int sign = 1;
3852
  int sign_bit = 0;
3853
  long n = 0;
3854
  int radix = 10;
3855
  char overflow = 0;
3856
  int nbits = 0;
3857
  int c;
3858
  long upper_limit;
3859
  int twos_complement_representation = 0;
3860
 
3861
  if (*p == '-')
3862
    {
3863
      sign = -1;
3864
      p++;
3865
    }
3866
 
3867
  /* Leading zero means octal.  GCC uses this to output values larger
3868
     than an int (because that would be hard in decimal).  */
3869
  if (*p == '0')
3870
    {
3871
      radix = 8;
3872
      p++;
3873
    }
3874
 
3875
  /* Skip extra zeros.  */
3876
  while (*p == '0')
3877
    p++;
3878
 
3879
  if (sign > 0 && radix == 8 && twos_complement_bits > 0)
3880
    {
3881
      /* Octal, possibly signed.  Check if we have enough chars for a
3882
         negative number.  */
3883
 
3884
      size_t len;
3885
      char *p1 = p;
3886
 
3887
      while ((c = *p1) >= '0' && c < '8')
3888
        p1++;
3889
 
3890
      len = p1 - p;
3891
      if (len > twos_complement_bits / 3
3892
          || (twos_complement_bits % 3 == 0 && len == twos_complement_bits / 3))
3893
        {
3894
          /* Ok, we have enough characters for a signed value, check
3895
             for signness by testing if the sign bit is set.  */
3896
          sign_bit = (twos_complement_bits % 3 + 2) % 3;
3897
          c = *p - '0';
3898
          if (c & (1 << sign_bit))
3899
            {
3900
              /* Definitely signed.  */
3901
              twos_complement_representation = 1;
3902
              sign = -1;
3903
            }
3904
        }
3905
    }
3906
 
3907
  upper_limit = LONG_MAX / radix;
3908
 
3909
  while ((c = *p++) >= '0' && c < ('0' + radix))
3910
    {
3911
      if (n <= upper_limit)
3912
        {
3913
          if (twos_complement_representation)
3914
            {
3915
              /* Octal, signed, twos complement representation.  In
3916
                 this case, n is the corresponding absolute value.  */
3917
              if (n == 0)
3918
                {
3919
                  long sn = c - '0' - ((2 * (c - '0')) | (2 << sign_bit));
3920
 
3921
                  n = -sn;
3922
                }
3923
              else
3924
                {
3925
                  n *= radix;
3926
                  n -= c - '0';
3927
                }
3928
            }
3929
          else
3930
            {
3931
              /* unsigned representation */
3932
              n *= radix;
3933
              n += c - '0';             /* FIXME this overflows anyway */
3934
            }
3935
        }
3936
      else
3937
        overflow = 1;
3938
 
3939
      /* This depends on large values being output in octal, which is
3940
         what GCC does. */
3941
      if (radix == 8)
3942
        {
3943
          if (nbits == 0)
3944
            {
3945
              if (c == '0')
3946
                /* Ignore leading zeroes.  */
3947
                ;
3948
              else if (c == '1')
3949
                nbits = 1;
3950
              else if (c == '2' || c == '3')
3951
                nbits = 2;
3952
              else
3953
                nbits = 3;
3954
            }
3955
          else
3956
            nbits += 3;
3957
        }
3958
    }
3959
  if (end)
3960
    {
3961
      if (c && c != end)
3962
        {
3963
          if (bits != NULL)
3964
            *bits = -1;
3965
          return 0;
3966
        }
3967
    }
3968
  else
3969
    --p;
3970
 
3971
  if (radix == 8 && twos_complement_bits > 0 && nbits > twos_complement_bits)
3972
    {
3973
      /* We were supposed to parse a number with maximum
3974
         TWOS_COMPLEMENT_BITS bits, but something went wrong.  */
3975
      if (bits != NULL)
3976
        *bits = -1;
3977
      return 0;
3978
    }
3979
 
3980
  *pp = p;
3981
  if (overflow)
3982
    {
3983
      if (nbits == 0)
3984
        {
3985
          /* Large decimal constants are an error (because it is hard to
3986
             count how many bits are in them).  */
3987
          if (bits != NULL)
3988
            *bits = -1;
3989
          return 0;
3990
        }
3991
 
3992
      /* -0x7f is the same as 0x80.  So deal with it by adding one to
3993
         the number of bits.  Two's complement represention octals
3994
         can't have a '-' in front.  */
3995
      if (sign == -1 && !twos_complement_representation)
3996
        ++nbits;
3997
      if (bits)
3998
        *bits = nbits;
3999
    }
4000
  else
4001
    {
4002
      if (bits)
4003
        *bits = 0;
4004
      return n * sign;
4005
    }
4006
  /* It's *BITS which has the interesting information.  */
4007
  return 0;
4008
}
4009
 
4010
static struct type *
4011
read_range_type (char **pp, int typenums[2], int type_size,
4012
                 struct objfile *objfile)
4013
{
4014
  struct gdbarch *gdbarch = get_objfile_arch (objfile);
4015
  char *orig_pp = *pp;
4016
  int rangenums[2];
4017
  long n2, n3;
4018
  int n2bits, n3bits;
4019
  int self_subrange;
4020
  struct type *result_type;
4021
  struct type *index_type = NULL;
4022
 
4023
  /* First comes a type we are a subrange of.
4024
     In C it is usually 0, 1 or the type being defined.  */
4025
  if (read_type_number (pp, rangenums) != 0)
4026
    return error_type (pp, objfile);
4027
  self_subrange = (rangenums[0] == typenums[0] &&
4028
                   rangenums[1] == typenums[1]);
4029
 
4030
  if (**pp == '=')
4031
    {
4032
      *pp = orig_pp;
4033
      index_type = read_type (pp, objfile);
4034
    }
4035
 
4036
  /* A semicolon should now follow; skip it.  */
4037
  if (**pp == ';')
4038
    (*pp)++;
4039
 
4040
  /* The remaining two operands are usually lower and upper bounds
4041
     of the range.  But in some special cases they mean something else.  */
4042
  n2 = read_huge_number (pp, ';', &n2bits, type_size);
4043
  n3 = read_huge_number (pp, ';', &n3bits, type_size);
4044
 
4045
  if (n2bits == -1 || n3bits == -1)
4046
    return error_type (pp, objfile);
4047
 
4048
  if (index_type)
4049
    goto handle_true_range;
4050
 
4051
  /* If limits are huge, must be large integral type.  */
4052
  if (n2bits != 0 || n3bits != 0)
4053
    {
4054
      char got_signed = 0;
4055
      char got_unsigned = 0;
4056
      /* Number of bits in the type.  */
4057
      int nbits = 0;
4058
 
4059
      /* If a type size attribute has been specified, the bounds of
4060
         the range should fit in this size. If the lower bounds needs
4061
         more bits than the upper bound, then the type is signed.  */
4062
      if (n2bits <= type_size && n3bits <= type_size)
4063
        {
4064
          if (n2bits == type_size && n2bits > n3bits)
4065
            got_signed = 1;
4066
          else
4067
            got_unsigned = 1;
4068
          nbits = type_size;
4069
        }
4070
      /* Range from 0 to <large number> is an unsigned large integral type.  */
4071
      else if ((n2bits == 0 && n2 == 0) && n3bits != 0)
4072
        {
4073
          got_unsigned = 1;
4074
          nbits = n3bits;
4075
        }
4076
      /* Range from <large number> to <large number>-1 is a large signed
4077
         integral type.  Take care of the case where <large number> doesn't
4078
         fit in a long but <large number>-1 does.  */
4079
      else if ((n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
4080
               || (n2bits != 0 && n3bits == 0
4081
                   && (n2bits == sizeof (long) * HOST_CHAR_BIT)
4082
                   && n3 == LONG_MAX))
4083
        {
4084
          got_signed = 1;
4085
          nbits = n2bits;
4086
        }
4087
 
4088
      if (got_signed || got_unsigned)
4089
        {
4090
          return init_type (TYPE_CODE_INT, nbits / TARGET_CHAR_BIT,
4091
                            got_unsigned ? TYPE_FLAG_UNSIGNED : 0, NULL,
4092
                            objfile);
4093
        }
4094
      else
4095
        return error_type (pp, objfile);
4096
    }
4097
 
4098
  /* A type defined as a subrange of itself, with bounds both 0, is void.  */
4099
  if (self_subrange && n2 == 0 && n3 == 0)
4100
    return init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
4101
 
4102
  /* If n3 is zero and n2 is positive, we want a floating type, and n2
4103
     is the width in bytes.
4104
 
4105
     Fortran programs appear to use this for complex types also.  To
4106
     distinguish between floats and complex, g77 (and others?)  seem
4107
     to use self-subranges for the complexes, and subranges of int for
4108
     the floats.
4109
 
4110
     Also note that for complexes, g77 sets n2 to the size of one of
4111
     the member floats, not the whole complex beast.  My guess is that
4112
     this was to work well with pre-COMPLEX versions of gdb. */
4113
 
4114
  if (n3 == 0 && n2 > 0)
4115
    {
4116
      struct type *float_type
4117
        = init_type (TYPE_CODE_FLT, n2, 0, NULL, objfile);
4118
 
4119
      if (self_subrange)
4120
        {
4121
          struct type *complex_type =
4122
            init_type (TYPE_CODE_COMPLEX, 2 * n2, 0, NULL, objfile);
4123
 
4124
          TYPE_TARGET_TYPE (complex_type) = float_type;
4125
          return complex_type;
4126
        }
4127
      else
4128
        return float_type;
4129
    }
4130
 
4131
  /* If the upper bound is -1, it must really be an unsigned integral.  */
4132
 
4133
  else if (n2 == 0 && n3 == -1)
4134
    {
4135
      int bits = type_size;
4136
 
4137
      if (bits <= 0)
4138
        {
4139
          /* We don't know its size.  It is unsigned int or unsigned
4140
             long.  GCC 2.3.3 uses this for long long too, but that is
4141
             just a GDB 3.5 compatibility hack.  */
4142
          bits = gdbarch_int_bit (gdbarch);
4143
        }
4144
 
4145
      return init_type (TYPE_CODE_INT, bits / TARGET_CHAR_BIT,
4146
                        TYPE_FLAG_UNSIGNED, NULL, objfile);
4147
    }
4148
 
4149
  /* Special case: char is defined (Who knows why) as a subrange of
4150
     itself with range 0-127.  */
4151
  else if (self_subrange && n2 == 0 && n3 == 127)
4152
    return init_type (TYPE_CODE_INT, 1, TYPE_FLAG_NOSIGN, NULL, objfile);
4153
 
4154
  /* We used to do this only for subrange of self or subrange of int.  */
4155
  else if (n2 == 0)
4156
    {
4157
      /* -1 is used for the upper bound of (4 byte) "unsigned int" and
4158
         "unsigned long", and we already checked for that,
4159
         so don't need to test for it here.  */
4160
 
4161
      if (n3 < 0)
4162
        /* n3 actually gives the size.  */
4163
        return init_type (TYPE_CODE_INT, -n3, TYPE_FLAG_UNSIGNED,
4164
                          NULL, objfile);
4165
 
4166
      /* Is n3 == 2**(8n)-1 for some integer n?  Then it's an
4167
         unsigned n-byte integer.  But do require n to be a power of
4168
         two; we don't want 3- and 5-byte integers flying around.  */
4169
      {
4170
        int bytes;
4171
        unsigned long bits;
4172
 
4173
        bits = n3;
4174
        for (bytes = 0; (bits & 0xff) == 0xff; bytes++)
4175
          bits >>= 8;
4176
        if (bits == 0
4177
            && ((bytes - 1) & bytes) == 0) /* "bytes is a power of two" */
4178
          return init_type (TYPE_CODE_INT, bytes, TYPE_FLAG_UNSIGNED, NULL,
4179
                            objfile);
4180
      }
4181
    }
4182
  /* I think this is for Convex "long long".  Since I don't know whether
4183
     Convex sets self_subrange, I also accept that particular size regardless
4184
     of self_subrange.  */
4185
  else if (n3 == 0 && n2 < 0
4186
           && (self_subrange
4187
               || n2 == -gdbarch_long_long_bit
4188
                          (gdbarch) / TARGET_CHAR_BIT))
4189
    return init_type (TYPE_CODE_INT, -n2, 0, NULL, objfile);
4190
  else if (n2 == -n3 - 1)
4191
    {
4192
      if (n3 == 0x7f)
4193
        return init_type (TYPE_CODE_INT, 1, 0, NULL, objfile);
4194
      if (n3 == 0x7fff)
4195
        return init_type (TYPE_CODE_INT, 2, 0, NULL, objfile);
4196
      if (n3 == 0x7fffffff)
4197
        return init_type (TYPE_CODE_INT, 4, 0, NULL, objfile);
4198
    }
4199
 
4200
  /* We have a real range type on our hands.  Allocate space and
4201
     return a real pointer.  */
4202
handle_true_range:
4203
 
4204
  if (self_subrange)
4205
    index_type = objfile_type (objfile)->builtin_int;
4206
  else
4207
    index_type = *dbx_lookup_type (rangenums, objfile);
4208
  if (index_type == NULL)
4209
    {
4210
      /* Does this actually ever happen?  Is that why we are worrying
4211
         about dealing with it rather than just calling error_type?  */
4212
 
4213
      complaint (&symfile_complaints,
4214
                 _("base type %d of range type is not defined"), rangenums[1]);
4215
 
4216
      index_type = objfile_type (objfile)->builtin_int;
4217
    }
4218
 
4219
  result_type = create_range_type ((struct type *) NULL, index_type, n2, n3);
4220
  return (result_type);
4221
}
4222
 
4223
/* Read in an argument list.  This is a list of types, separated by commas
4224
   and terminated with END.  Return the list of types read in, or NULL
4225
   if there is an error.  */
4226
 
4227
static struct field *
4228
read_args (char **pp, int end, struct objfile *objfile, int *nargsp,
4229
           int *varargsp)
4230
{
4231
  /* FIXME!  Remove this arbitrary limit!  */
4232
  struct type *types[1024];     /* allow for fns of 1023 parameters */
4233
  int n = 0, i;
4234
  struct field *rval;
4235
 
4236
  while (**pp != end)
4237
    {
4238
      if (**pp != ',')
4239
        /* Invalid argument list: no ','.  */
4240
        return NULL;
4241
      (*pp)++;
4242
      STABS_CONTINUE (pp, objfile);
4243
      types[n++] = read_type (pp, objfile);
4244
    }
4245
  (*pp)++;                      /* get past `end' (the ':' character) */
4246
 
4247
  if (n == 0)
4248
    {
4249
      /* We should read at least the THIS parameter here.  Some broken stabs
4250
         output contained `(0,41),(0,42)=@s8;-16;,(0,43),(0,1);' where should
4251
         have been present ";-16,(0,43)" reference instead.  This way the
4252
         excessive ";" marker prematurely stops the parameters parsing.  */
4253
 
4254
      complaint (&symfile_complaints, _("Invalid (empty) method arguments"));
4255
      *varargsp = 0;
4256
    }
4257
  else if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID)
4258
    *varargsp = 1;
4259
  else
4260
    {
4261
      n--;
4262
      *varargsp = 0;
4263
    }
4264
 
4265
  rval = (struct field *) xmalloc (n * sizeof (struct field));
4266
  memset (rval, 0, n * sizeof (struct field));
4267
  for (i = 0; i < n; i++)
4268
    rval[i].type = types[i];
4269
  *nargsp = n;
4270
  return rval;
4271
}
4272
 
4273
/* Common block handling.  */
4274
 
4275
/* List of symbols declared since the last BCOMM.  This list is a tail
4276
   of local_symbols.  When ECOMM is seen, the symbols on the list
4277
   are noted so their proper addresses can be filled in later,
4278
   using the common block base address gotten from the assembler
4279
   stabs.  */
4280
 
4281
static struct pending *common_block;
4282
static int common_block_i;
4283
 
4284
/* Name of the current common block.  We get it from the BCOMM instead of the
4285
   ECOMM to match IBM documentation (even though IBM puts the name both places
4286
   like everyone else).  */
4287
static char *common_block_name;
4288
 
4289
/* Process a N_BCOMM symbol.  The storage for NAME is not guaranteed
4290
   to remain after this function returns.  */
4291
 
4292
void
4293
common_block_start (char *name, struct objfile *objfile)
4294
{
4295
  if (common_block_name != NULL)
4296
    {
4297
      complaint (&symfile_complaints,
4298
                 _("Invalid symbol data: common block within common block"));
4299
    }
4300
  common_block = local_symbols;
4301
  common_block_i = local_symbols ? local_symbols->nsyms : 0;
4302
  common_block_name = obsavestring (name, strlen (name),
4303
                                    &objfile->objfile_obstack);
4304
}
4305
 
4306
/* Process a N_ECOMM symbol.  */
4307
 
4308
void
4309
common_block_end (struct objfile *objfile)
4310
{
4311
  /* Symbols declared since the BCOMM are to have the common block
4312
     start address added in when we know it.  common_block and
4313
     common_block_i point to the first symbol after the BCOMM in
4314
     the local_symbols list; copy the list and hang it off the
4315
     symbol for the common block name for later fixup.  */
4316
  int i;
4317
  struct symbol *sym;
4318
  struct pending *new = 0;
4319
  struct pending *next;
4320
  int j;
4321
 
4322
  if (common_block_name == NULL)
4323
    {
4324
      complaint (&symfile_complaints, _("ECOMM symbol unmatched by BCOMM"));
4325
      return;
4326
    }
4327
 
4328
  sym = (struct symbol *)
4329
    obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
4330
  memset (sym, 0, sizeof (struct symbol));
4331
  /* Note: common_block_name already saved on objfile_obstack */
4332
  SYMBOL_SET_LINKAGE_NAME (sym, common_block_name);
4333
  SYMBOL_CLASS (sym) = LOC_BLOCK;
4334
 
4335
  /* Now we copy all the symbols which have been defined since the BCOMM.  */
4336
 
4337
  /* Copy all the struct pendings before common_block.  */
4338
  for (next = local_symbols;
4339
       next != NULL && next != common_block;
4340
       next = next->next)
4341
    {
4342
      for (j = 0; j < next->nsyms; j++)
4343
        add_symbol_to_list (next->symbol[j], &new);
4344
    }
4345
 
4346
  /* Copy however much of COMMON_BLOCK we need.  If COMMON_BLOCK is
4347
     NULL, it means copy all the local symbols (which we already did
4348
     above).  */
4349
 
4350
  if (common_block != NULL)
4351
    for (j = common_block_i; j < common_block->nsyms; j++)
4352
      add_symbol_to_list (common_block->symbol[j], &new);
4353
 
4354
  SYMBOL_TYPE (sym) = (struct type *) new;
4355
 
4356
  /* Should we be putting local_symbols back to what it was?
4357
     Does it matter?  */
4358
 
4359
  i = hashname (SYMBOL_LINKAGE_NAME (sym));
4360
  SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
4361
  global_sym_chain[i] = sym;
4362
  common_block_name = NULL;
4363
}
4364
 
4365
/* Add a common block's start address to the offset of each symbol
4366
   declared to be in it (by being between a BCOMM/ECOMM pair that uses
4367
   the common block name).  */
4368
 
4369
static void
4370
fix_common_block (struct symbol *sym, int valu)
4371
{
4372
  struct pending *next = (struct pending *) SYMBOL_TYPE (sym);
4373
 
4374
  for (; next; next = next->next)
4375
    {
4376
      int j;
4377
 
4378
      for (j = next->nsyms - 1; j >= 0; j--)
4379
        SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
4380
    }
4381
}
4382
 
4383
 
4384
 
4385
/* Add {TYPE, TYPENUMS} to the NONAME_UNDEFS vector.
4386
   See add_undefined_type for more details.  */
4387
 
4388
static void
4389
add_undefined_type_noname (struct type *type, int typenums[2])
4390
{
4391
  struct nat nat;
4392
 
4393
  nat.typenums[0] = typenums [0];
4394
  nat.typenums[1] = typenums [1];
4395
  nat.type = type;
4396
 
4397
  if (noname_undefs_length == noname_undefs_allocated)
4398
    {
4399
      noname_undefs_allocated *= 2;
4400
      noname_undefs = (struct nat *)
4401
        xrealloc ((char *) noname_undefs,
4402
                  noname_undefs_allocated * sizeof (struct nat));
4403
    }
4404
  noname_undefs[noname_undefs_length++] = nat;
4405
}
4406
 
4407
/* Add TYPE to the UNDEF_TYPES vector.
4408
   See add_undefined_type for more details.  */
4409
 
4410
static void
4411
add_undefined_type_1 (struct type *type)
4412
{
4413
  if (undef_types_length == undef_types_allocated)
4414
    {
4415
      undef_types_allocated *= 2;
4416
      undef_types = (struct type **)
4417
        xrealloc ((char *) undef_types,
4418
                  undef_types_allocated * sizeof (struct type *));
4419
    }
4420
  undef_types[undef_types_length++] = type;
4421
}
4422
 
4423
/* What about types defined as forward references inside of a small lexical
4424
   scope?  */
4425
/* Add a type to the list of undefined types to be checked through
4426
   once this file has been read in.
4427
 
4428
   In practice, we actually maintain two such lists: The first list
4429
   (UNDEF_TYPES) is used for types whose name has been provided, and
4430
   concerns forward references (eg 'xs' or 'xu' forward references);
4431
   the second list (NONAME_UNDEFS) is used for types whose name is
4432
   unknown at creation time, because they were referenced through
4433
   their type number before the actual type was declared.
4434
   This function actually adds the given type to the proper list.  */
4435
 
4436
static void
4437
add_undefined_type (struct type *type, int typenums[2])
4438
{
4439
  if (TYPE_TAG_NAME (type) == NULL)
4440
    add_undefined_type_noname (type, typenums);
4441
  else
4442
    add_undefined_type_1 (type);
4443
}
4444
 
4445
/* Try to fix all undefined types pushed on the UNDEF_TYPES vector.  */
4446
 
4447
static void
4448
cleanup_undefined_types_noname (struct objfile *objfile)
4449
{
4450
  int i;
4451
 
4452
  for (i = 0; i < noname_undefs_length; i++)
4453
    {
4454
      struct nat nat = noname_undefs[i];
4455
      struct type **type;
4456
 
4457
      type = dbx_lookup_type (nat.typenums, objfile);
4458
      if (nat.type != *type && TYPE_CODE (*type) != TYPE_CODE_UNDEF)
4459
        {
4460
          /* The instance flags of the undefined type are still unset,
4461
             and needs to be copied over from the reference type.
4462
             Since replace_type expects them to be identical, we need
4463
             to set these flags manually before hand.  */
4464
          TYPE_INSTANCE_FLAGS (nat.type) = TYPE_INSTANCE_FLAGS (*type);
4465
          replace_type (nat.type, *type);
4466
        }
4467
    }
4468
 
4469
  noname_undefs_length = 0;
4470
}
4471
 
4472
/* Go through each undefined type, see if it's still undefined, and fix it
4473
   up if possible.  We have two kinds of undefined types:
4474
 
4475
   TYPE_CODE_ARRAY:  Array whose target type wasn't defined yet.
4476
   Fix:  update array length using the element bounds
4477
   and the target type's length.
4478
   TYPE_CODE_STRUCT, TYPE_CODE_UNION:  Structure whose fields were not
4479
   yet defined at the time a pointer to it was made.
4480
   Fix:  Do a full lookup on the struct/union tag.  */
4481
 
4482
static void
4483
cleanup_undefined_types_1 (void)
4484
{
4485
  struct type **type;
4486
 
4487
  /* Iterate over every undefined type, and look for a symbol whose type
4488
     matches our undefined type.  The symbol matches if:
4489
       1. It is a typedef in the STRUCT domain;
4490
       2. It has the same name, and same type code;
4491
       3. The instance flags are identical.
4492
 
4493
     It is important to check the instance flags, because we have seen
4494
     examples where the debug info contained definitions such as:
4495
 
4496
         "foo_t:t30=B31=xefoo_t:"
4497
 
4498
     In this case, we have created an undefined type named "foo_t" whose
4499
     instance flags is null (when processing "xefoo_t"), and then created
4500
     another type with the same name, but with different instance flags
4501
     ('B' means volatile).  I think that the definition above is wrong,
4502
     since the same type cannot be volatile and non-volatile at the same
4503
     time, but we need to be able to cope with it when it happens.  The
4504
     approach taken here is to treat these two types as different.  */
4505
 
4506
  for (type = undef_types; type < undef_types + undef_types_length; type++)
4507
    {
4508
      switch (TYPE_CODE (*type))
4509
        {
4510
 
4511
        case TYPE_CODE_STRUCT:
4512
        case TYPE_CODE_UNION:
4513
        case TYPE_CODE_ENUM:
4514
          {
4515
            /* Check if it has been defined since.  Need to do this here
4516
               as well as in check_typedef to deal with the (legitimate in
4517
               C though not C++) case of several types with the same name
4518
               in different source files.  */
4519
            if (TYPE_STUB (*type))
4520
              {
4521
                struct pending *ppt;
4522
                int i;
4523
                /* Name of the type, without "struct" or "union" */
4524
                char *typename = TYPE_TAG_NAME (*type);
4525
 
4526
                if (typename == NULL)
4527
                  {
4528
                    complaint (&symfile_complaints, _("need a type name"));
4529
                    break;
4530
                  }
4531
                for (ppt = file_symbols; ppt; ppt = ppt->next)
4532
                  {
4533
                    for (i = 0; i < ppt->nsyms; i++)
4534
                      {
4535
                        struct symbol *sym = ppt->symbol[i];
4536
 
4537
                        if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4538
                            && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
4539
                            && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
4540
                                TYPE_CODE (*type))
4541
                            && (TYPE_INSTANCE_FLAGS (*type) ==
4542
                                TYPE_INSTANCE_FLAGS (SYMBOL_TYPE (sym)))
4543
                            && strcmp (SYMBOL_LINKAGE_NAME (sym),
4544
                                       typename) == 0)
4545
                          replace_type (*type, SYMBOL_TYPE (sym));
4546
                      }
4547
                  }
4548
              }
4549
          }
4550
          break;
4551
 
4552
        default:
4553
          {
4554
            complaint (&symfile_complaints,
4555
                       _("forward-referenced types left unresolved, "
4556
                       "type code %d."),
4557
                       TYPE_CODE (*type));
4558
          }
4559
          break;
4560
        }
4561
    }
4562
 
4563
  undef_types_length = 0;
4564
}
4565
 
4566
/* Try to fix all the undefined types we ecountered while processing
4567
   this unit.  */
4568
 
4569
void
4570
cleanup_undefined_types (struct objfile *objfile)
4571
{
4572
  cleanup_undefined_types_1 ();
4573
  cleanup_undefined_types_noname (objfile);
4574
}
4575
 
4576
/* Scan through all of the global symbols defined in the object file,
4577
   assigning values to the debugging symbols that need to be assigned
4578
   to.  Get these symbols from the minimal symbol table.  */
4579
 
4580
void
4581
scan_file_globals (struct objfile *objfile)
4582
{
4583
  int hash;
4584
  struct minimal_symbol *msymbol;
4585
  struct symbol *sym, *prev;
4586
  struct objfile *resolve_objfile;
4587
 
4588
  /* SVR4 based linkers copy referenced global symbols from shared
4589
     libraries to the main executable.
4590
     If we are scanning the symbols for a shared library, try to resolve
4591
     them from the minimal symbols of the main executable first.  */
4592
 
4593
  if (symfile_objfile && objfile != symfile_objfile)
4594
    resolve_objfile = symfile_objfile;
4595
  else
4596
    resolve_objfile = objfile;
4597
 
4598
  while (1)
4599
    {
4600
      /* Avoid expensive loop through all minimal symbols if there are
4601
         no unresolved symbols.  */
4602
      for (hash = 0; hash < HASHSIZE; hash++)
4603
        {
4604
          if (global_sym_chain[hash])
4605
            break;
4606
        }
4607
      if (hash >= HASHSIZE)
4608
        return;
4609
 
4610
      ALL_OBJFILE_MSYMBOLS (resolve_objfile, msymbol)
4611
        {
4612
          QUIT;
4613
 
4614
          /* Skip static symbols.  */
4615
          switch (MSYMBOL_TYPE (msymbol))
4616
            {
4617
            case mst_file_text:
4618
            case mst_file_data:
4619
            case mst_file_bss:
4620
              continue;
4621
            default:
4622
              break;
4623
            }
4624
 
4625
          prev = NULL;
4626
 
4627
          /* Get the hash index and check all the symbols
4628
             under that hash index. */
4629
 
4630
          hash = hashname (SYMBOL_LINKAGE_NAME (msymbol));
4631
 
4632
          for (sym = global_sym_chain[hash]; sym;)
4633
            {
4634
              if (strcmp (SYMBOL_LINKAGE_NAME (msymbol),
4635
                          SYMBOL_LINKAGE_NAME (sym)) == 0)
4636
                {
4637
                  /* Splice this symbol out of the hash chain and
4638
                     assign the value we have to it. */
4639
                  if (prev)
4640
                    {
4641
                      SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
4642
                    }
4643
                  else
4644
                    {
4645
                      global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
4646
                    }
4647
 
4648
                  /* Check to see whether we need to fix up a common block.  */
4649
                  /* Note: this code might be executed several times for
4650
                     the same symbol if there are multiple references.  */
4651
                  if (sym)
4652
                    {
4653
                      if (SYMBOL_CLASS (sym) == LOC_BLOCK)
4654
                        {
4655
                          fix_common_block (sym,
4656
                                            SYMBOL_VALUE_ADDRESS (msymbol));
4657
                        }
4658
                      else
4659
                        {
4660
                          SYMBOL_VALUE_ADDRESS (sym)
4661
                            = SYMBOL_VALUE_ADDRESS (msymbol);
4662
                        }
4663
                      SYMBOL_SECTION (sym) = SYMBOL_SECTION (msymbol);
4664
                    }
4665
 
4666
                  if (prev)
4667
                    {
4668
                      sym = SYMBOL_VALUE_CHAIN (prev);
4669
                    }
4670
                  else
4671
                    {
4672
                      sym = global_sym_chain[hash];
4673
                    }
4674
                }
4675
              else
4676
                {
4677
                  prev = sym;
4678
                  sym = SYMBOL_VALUE_CHAIN (sym);
4679
                }
4680
            }
4681
        }
4682
      if (resolve_objfile == objfile)
4683
        break;
4684
      resolve_objfile = objfile;
4685
    }
4686
 
4687
  /* Change the storage class of any remaining unresolved globals to
4688
     LOC_UNRESOLVED and remove them from the chain.  */
4689
  for (hash = 0; hash < HASHSIZE; hash++)
4690
    {
4691
      sym = global_sym_chain[hash];
4692
      while (sym)
4693
        {
4694
          prev = sym;
4695
          sym = SYMBOL_VALUE_CHAIN (sym);
4696
 
4697
          /* Change the symbol address from the misleading chain value
4698
             to address zero.  */
4699
          SYMBOL_VALUE_ADDRESS (prev) = 0;
4700
 
4701
          /* Complain about unresolved common block symbols.  */
4702
          if (SYMBOL_CLASS (prev) == LOC_STATIC)
4703
            SYMBOL_CLASS (prev) = LOC_UNRESOLVED;
4704
          else
4705
            complaint (&symfile_complaints,
4706
                       _("%s: common block `%s' from global_sym_chain unresolved"),
4707
                       objfile->name, SYMBOL_PRINT_NAME (prev));
4708
        }
4709
    }
4710
  memset (global_sym_chain, 0, sizeof (global_sym_chain));
4711
}
4712
 
4713
/* Initialize anything that needs initializing when starting to read
4714
   a fresh piece of a symbol file, e.g. reading in the stuff corresponding
4715
   to a psymtab.  */
4716
 
4717
void
4718
stabsread_init (void)
4719
{
4720
}
4721
 
4722
/* Initialize anything that needs initializing when a completely new
4723
   symbol file is specified (not just adding some symbols from another
4724
   file, e.g. a shared library).  */
4725
 
4726
void
4727
stabsread_new_init (void)
4728
{
4729
  /* Empty the hash table of global syms looking for values.  */
4730
  memset (global_sym_chain, 0, sizeof (global_sym_chain));
4731
}
4732
 
4733
/* Initialize anything that needs initializing at the same time as
4734
   start_symtab() is called. */
4735
 
4736
void
4737
start_stabs (void)
4738
{
4739
  global_stabs = NULL;          /* AIX COFF */
4740
  /* Leave FILENUM of 0 free for builtin types and this file's types.  */
4741
  n_this_object_header_files = 1;
4742
  type_vector_length = 0;
4743
  type_vector = (struct type **) 0;
4744
 
4745
  /* FIXME: If common_block_name is not already NULL, we should complain().  */
4746
  common_block_name = NULL;
4747
}
4748
 
4749
/* Call after end_symtab() */
4750
 
4751
void
4752
end_stabs (void)
4753
{
4754
  if (type_vector)
4755
    {
4756
      xfree (type_vector);
4757
    }
4758
  type_vector = 0;
4759
  type_vector_length = 0;
4760
  previous_stab_code = 0;
4761
}
4762
 
4763
void
4764
finish_global_stabs (struct objfile *objfile)
4765
{
4766
  if (global_stabs)
4767
    {
4768
      patch_block_stabs (global_symbols, global_stabs, objfile);
4769
      xfree (global_stabs);
4770
      global_stabs = NULL;
4771
    }
4772
}
4773
 
4774
/* Find the end of the name, delimited by a ':', but don't match
4775
   ObjC symbols which look like -[Foo bar::]:bla.  */
4776
static char *
4777
find_name_end (char *name)
4778
{
4779
  char *s = name;
4780
 
4781
  if (s[0] == '-' || *s == '+')
4782
    {
4783
      /* Must be an ObjC method symbol.  */
4784
      if (s[1] != '[')
4785
        {
4786
          error (_("invalid symbol name \"%s\""), name);
4787
        }
4788
      s = strchr (s, ']');
4789
      if (s == NULL)
4790
        {
4791
          error (_("invalid symbol name \"%s\""), name);
4792
        }
4793
      return strchr (s, ':');
4794
    }
4795
  else
4796
    {
4797
      return strchr (s, ':');
4798
    }
4799
}
4800
 
4801
/* Initializer for this module */
4802
 
4803
void
4804
_initialize_stabsread (void)
4805
{
4806
  rs6000_builtin_type_data = register_objfile_data ();
4807
 
4808
  undef_types_allocated = 20;
4809
  undef_types_length = 0;
4810
  undef_types = (struct type **)
4811
    xmalloc (undef_types_allocated * sizeof (struct type *));
4812
 
4813
  noname_undefs_allocated = 20;
4814
  noname_undefs_length = 0;
4815
  noname_undefs = (struct nat *)
4816
    xmalloc (noname_undefs_allocated * sizeof (struct nat));
4817
}

powered by: WebSVN 2.1.0

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