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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [stabsread.c] - Blame information for rev 825

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

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

powered by: WebSVN 2.1.0

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