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