1 /* Support routines for decoding "stabs" debugging information format.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993
3 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
21 /* Support routines for reading and decoding debugging information in
22 the "stabs" format. This format is used with many systems that use
23 the a.out object file format, as well as some systems that use
24 COFF or ELF where the stabs data is placed in a special section.
25 Avoid placing any object file format specific code in this file. */
34 #include "aout/stab_gnu.h" /* We always use GNU stabs, not native */
36 #include "complaints.h"
39 /* Ask stabsread.h to define the vars it normally declares `extern'. */
41 #include "stabsread.h" /* Our own declarations */
44 /* The routines that read and process a complete stabs for a C struct or
45 C++ class pass lists of data member fields and lists of member function
46 fields in an instance of a field_info structure, as defined below.
47 This is part of some reorganization of low level C++ support and is
48 expected to eventually go away... (FIXME) */
54 struct nextfield *next;
58 struct next_fnfieldlist
60 struct next_fnfieldlist *next;
61 struct fn_fieldlist fn_fieldlist;
66 dbx_alloc_type PARAMS ((int [2], struct objfile *));
69 read_huge_number PARAMS ((char **, int, long *, int *));
72 patch_block_stabs PARAMS ((struct pending *, struct pending_stabs *,
76 fix_common_block PARAMS ((struct symbol *, int));
79 read_range_type PARAMS ((char **, int [2], struct objfile *));
82 read_sun_builtin_type PARAMS ((char **, int [2], struct objfile *));
85 read_sun_floating_type PARAMS ((char **, int [2], struct objfile *));
88 read_enum_type PARAMS ((char **, struct type *, struct objfile *));
91 rs6000_builtin_type PARAMS ((int));
94 read_member_functions PARAMS ((struct field_info *, char **, struct type *,
98 read_struct_fields PARAMS ((struct field_info *, char **, struct type *,
102 read_baseclasses PARAMS ((struct field_info *, char **, struct type *,
106 read_tilde_fields PARAMS ((struct field_info *, char **, struct type *,
110 attach_fn_fields_to_type PARAMS ((struct field_info *, struct type *));
113 attach_fields_to_type PARAMS ((struct field_info *, struct type *,
117 read_struct_type PARAMS ((char **, struct type *, struct objfile *));
120 read_array_type PARAMS ((char **, struct type *, struct objfile *));
122 static struct type **
123 read_args PARAMS ((char **, int, struct objfile *));
126 read_cpp_abbrev PARAMS ((struct field_info *, char **, struct type *,
129 static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER,'\0' };
130 static const char vb_name[] = { '_','v','b',CPLUS_MARKER,'\0' };
132 /* Define this as 1 if a pcc declaration of a char or short argument
133 gives the correct address. Otherwise assume pcc gives the
134 address of the corresponding int, which is not the same on a
135 big-endian machine. */
137 #ifndef BELIEVE_PCC_PROMOTION
138 #define BELIEVE_PCC_PROMOTION 0
141 /* During some calls to read_type (and thus to read_range_type), this
142 contains the name of the type being defined. Range types are only
143 used in C as basic types. We use the name to distinguish the otherwise
144 identical basic types "int" and "long" and their unsigned versions.
145 FIXME, this should disappear with better type management. */
147 static char *long_kludge_name;
150 struct complaint dbx_class_complaint =
152 "encountered DBX-style class variable debugging information.\n\
153 You seem to have compiled your program with \
154 \"g++ -g0\" instead of \"g++ -g\".\n\
155 Therefore GDB will not know about your class variables", 0, 0
159 struct complaint invalid_cpp_abbrev_complaint =
160 {"invalid C++ abbreviation `%s'", 0, 0};
162 struct complaint invalid_cpp_type_complaint =
163 {"C++ abbreviated type name unknown at symtab pos %d", 0, 0};
165 struct complaint member_fn_complaint =
166 {"member function type missing, got '%c'", 0, 0};
168 struct complaint const_vol_complaint =
169 {"const/volatile indicator missing, got '%c'", 0, 0};
171 struct complaint error_type_complaint =
172 {"debug info mismatch between compiler and debugger", 0, 0};
174 struct complaint invalid_member_complaint =
175 {"invalid (minimal) member type data format at symtab pos %d.", 0, 0};
177 struct complaint range_type_base_complaint =
178 {"base type %d of range type is not defined", 0, 0};
180 struct complaint reg_value_complaint =
181 {"register number too large in symbol %s", 0, 0};
183 struct complaint vtbl_notfound_complaint =
184 {"virtual function table pointer not found when defining class `%s'", 0, 0};
186 struct complaint unrecognized_cplus_name_complaint =
187 {"Unknown C++ symbol name `%s'", 0, 0};
189 struct complaint rs6000_builtin_complaint =
190 {"Unknown builtin type %d", 0, 0};
192 struct complaint stabs_general_complaint =
195 /* Make a list of forward references which haven't been defined. */
197 static struct type **undef_types;
198 static int undef_types_allocated;
199 static int undef_types_length;
201 /* Check for and handle cretinous stabs symbol name continuation! */
202 #define STABS_CONTINUE(pp) \
204 if (**(pp) == '\\') *(pp) = next_symbol_text (); \
212 register char *p = name;
213 register int total = p[0];
228 /* Ensure result is positive. */
231 total += (1000 << 6);
233 return (total % HASHSIZE);
237 /* Look up a dbx type-number pair. Return the address of the slot
238 where the type for that number-pair is stored.
239 The number-pair is in TYPENUMS.
241 This can be used for finding the type associated with that pair
242 or for associating a new type with the pair. */
245 dbx_lookup_type (typenums)
248 register int filenum = typenums[0];
249 register int index = typenums[1];
251 register int real_filenum;
252 register struct header_file *f;
255 if (filenum == -1) /* -1,-1 is for temporary types. */
258 if (filenum < 0 || filenum >= n_this_object_header_files)
259 error ("Invalid symbol data: type number (%d,%d) out of range at symtab pos %d.",
260 filenum, index, symnum);
266 /* Caller wants address of address of type. We think
267 that negative (rs6k builtin) types will never appear as
268 "lvalues", (nor should they), so we stuff the real type
269 pointer into a temp, and return its address. If referenced,
270 this will do the right thing. */
271 static struct type *temp_type;
273 temp_type = rs6000_builtin_type(index);
277 /* Type is defined outside of header files.
278 Find it in this object file's type vector. */
279 if (index >= type_vector_length)
281 old_len = type_vector_length;
284 type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
285 type_vector = (struct type **)
286 malloc (type_vector_length * sizeof (struct type *));
288 while (index >= type_vector_length)
290 type_vector_length *= 2;
292 type_vector = (struct type **)
293 xrealloc ((char *) type_vector,
294 (type_vector_length * sizeof (struct type *)));
295 memset (&type_vector[old_len], 0,
296 (type_vector_length - old_len) * sizeof (struct type *));
298 return (&type_vector[index]);
302 real_filenum = this_object_header_files[filenum];
304 if (real_filenum >= n_header_files)
309 f = &header_files[real_filenum];
311 f_orig_length = f->length;
312 if (index >= f_orig_length)
314 while (index >= f->length)
318 f->vector = (struct type **)
319 xrealloc ((char *) f->vector, f->length * sizeof (struct type *));
320 memset (&f->vector[f_orig_length], 0,
321 (f->length - f_orig_length) * sizeof (struct type *));
323 return (&f->vector[index]);
327 /* Make sure there is a type allocated for type numbers TYPENUMS
328 and return the type object.
329 This can create an empty (zeroed) type object.
330 TYPENUMS may be (-1, -1) to return a new type object that is not
331 put into the type vector, and so may not be referred to by number. */
334 dbx_alloc_type (typenums, objfile)
336 struct objfile *objfile;
338 register struct type **type_addr;
340 if (typenums[0] == -1)
342 return (alloc_type (objfile));
345 type_addr = dbx_lookup_type (typenums);
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. */
352 *type_addr = alloc_type (objfile);
358 /* for all the stabs in a given stab vector, build appropriate types
359 and fix their symbols in given symbol vector. */
362 patch_block_stabs (symbols, stabs, objfile)
363 struct pending *symbols;
364 struct pending_stabs *stabs;
365 struct objfile *objfile;
375 /* for all the stab entries, find their corresponding symbols and
376 patch their types! */
378 for (ii = 0; ii < stabs->count; ++ii)
380 name = stabs->stab[ii];
381 pp = (char*) strchr (name, ':');
382 sym = find_symbol_in_list (symbols, name, pp-name);
385 #ifndef IBM6000_TARGET
386 printf ("ERROR! stab symbol not found!\n"); /* FIXME */
392 if (*(pp-1) == 'F' || *(pp-1) == 'f')
395 lookup_function_type (read_type (&pp, objfile));
399 SYMBOL_TYPE (sym) = read_type (&pp, objfile);
407 /* Read a number by which a type is referred to in dbx data,
408 or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
409 Just a single number N is equivalent to (0,N).
410 Return the two numbers by storing them in the vector TYPENUMS.
411 TYPENUMS will then be used as an argument to dbx_lookup_type. */
414 read_type_number (pp, typenums)
416 register int *typenums;
421 typenums[0] = read_number (pp, ',');
422 typenums[1] = read_number (pp, ')');
427 typenums[1] = read_number (pp, 0);
432 /* To handle GNU C++ typename abbreviation, we need to be able to
433 fill in a type's name as soon as space for that type is allocated.
434 `type_synonym_name' is the name of the type being allocated.
435 It is cleared as soon as it is used (lest all allocated types
438 static char *type_synonym_name;
442 define_symbol (valu, string, desc, type, objfile)
447 struct objfile *objfile;
449 register struct symbol *sym;
450 char *p = (char *) strchr (string, ':');
454 struct type *temptype;
456 /* We would like to eliminate nameless symbols, but keep their types.
457 E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
458 to type 2, but, should not create a symbol to address that type. Since
459 the symbol will be nameless, there is no way any user can refer to it. */
463 /* Ignore syms with empty names. */
467 /* Ignore old-style symbols from cc -go */
471 /* If a nameless stab entry, all we need is the type, not the symbol.
472 e.g. ":t10=*2" or a nameless enum like " :T16=ered:0,green:1,blue:2,;" */
473 nameless = (p == string || ((string[0] == ' ') && (string[1] == ':')));
475 sym = (struct symbol *)
476 obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
477 memset (sym, 0, sizeof (struct symbol));
479 if (processing_gcc_compilation)
481 /* GCC 2.x puts the line number in desc. SunOS apparently puts in the
482 number of bytes occupied by a type or object, which we ignore. */
483 SYMBOL_LINE(sym) = desc;
487 SYMBOL_LINE(sym) = 0; /* unknown */
490 if (string[0] == CPLUS_MARKER)
492 /* Special GNU C++ names. */
496 SYMBOL_NAME (sym) = obsavestring ("this", strlen ("this"),
497 &objfile -> symbol_obstack);
500 case 'v': /* $vtbl_ptr_type */
501 /* Was: SYMBOL_NAME (sym) = "vptr"; */
505 SYMBOL_NAME (sym) = obsavestring ("eh_throw", strlen ("eh_throw"),
506 &objfile -> symbol_obstack);
510 /* This was an anonymous type that was never fixed up. */
514 complain (unrecognized_cplus_name_complaint, string);
515 goto normal; /* Do *something* with it */
521 SYMBOL_LANGUAGE (sym) = current_subfile -> language;
522 SYMBOL_NAME (sym) = (char *)
523 obstack_alloc (&objfile -> symbol_obstack, ((p - string) + 1));
524 /* Open-coded bcopy--saves function call time. */
525 /* FIXME: Does it really? Try replacing with simple strcpy and
526 try it on an executable with a large symbol table. */
528 register char *p1 = string;
529 register char *p2 = SYMBOL_NAME (sym);
537 /* If this symbol is from a C++ compilation, then attempt to cache the
538 demangled form for future reference. This is a typical time versus
539 space tradeoff, that was decided in favor of time because it sped up
540 C++ symbol lookups by a factor of about 20. */
542 SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack);
546 /* Determine the type of name being defined. */
547 /* The Acorn RISC machine's compiler can put out locals that don't
548 start with "234=" or "(3,4)=", so assume anything other than the
549 deftypes we know how to handle is a local. */
550 if (!strchr ("cfFGpPrStTvVXCR", *p))
555 /* c is a special case, not followed by a type-number.
556 SYMBOL:c=iVALUE for an integer constant symbol.
557 SYMBOL:c=rVALUE for a floating constant symbol.
558 SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
559 e.g. "b:c=e6,0" for "const b = blob1"
560 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
564 error ("Invalid symbol data at symtab pos %d.", symnum);
572 SYMBOL_TYPE (sym) = lookup_fundamental_type (objfile,
575 obstack_alloc (&objfile -> symbol_obstack, sizeof (double));
576 memcpy (dbl_valu, &d, sizeof (double));
577 SWAP_TARGET_AND_HOST (dbl_valu, sizeof (double));
578 SYMBOL_VALUE_BYTES (sym) = dbl_valu;
579 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
584 SYMBOL_TYPE (sym) = lookup_fundamental_type (objfile,
586 SYMBOL_VALUE (sym) = atoi (p);
587 SYMBOL_CLASS (sym) = LOC_CONST;
591 /* SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
592 e.g. "b:c=e6,0" for "const b = blob1"
593 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
597 read_type_number (&p, typenums);
599 error ("Invalid symbol data: no comma in enum const symbol");
601 SYMBOL_TYPE (sym) = *dbx_lookup_type (typenums);
602 SYMBOL_VALUE (sym) = atoi (p);
603 SYMBOL_CLASS (sym) = LOC_CONST;
607 error ("Invalid symbol data at symtab pos %d.", symnum);
609 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
610 add_symbol_to_list (sym, &file_symbols);
614 /* Now usually comes a number that says which data type,
615 and possibly more stuff to define the type
616 (all of which is handled by read_type) */
618 if (deftype == 'p' && *p == 'F')
619 /* pF is a two-letter code that means a function parameter in Fortran.
620 The type-number specifies the type of the return value.
621 Translate it into a pointer-to-function type. */
625 = lookup_pointer_type (lookup_function_type (read_type (&p, objfile)));
629 /* The symbol class letter is followed by a type (typically the
630 type of the symbol, or its return-type, or etc). Read it. */
637 type_synonym_name = obsavestring (SYMBOL_NAME (sym),
638 strlen (SYMBOL_NAME (sym)),
639 &objfile -> symbol_obstack);
642 /* Here we save the name of the symbol for read_range_type, which
643 ends up reading in the basic types. In stabs, unfortunately there
644 is no distinction between "int" and "long" types except their
645 names. Until we work out a saner type policy (eliminating most
646 builtin types and using the names specified in the files), we
647 save away the name so that far away from here in read_range_type,
648 we can examine it to decide between "int" and "long". FIXME. */
649 long_kludge_name = SYMBOL_NAME (sym);
651 SYMBOL_TYPE (sym) = read_type (&p, objfile);
657 /* The name of a caught exception. */
658 SYMBOL_CLASS (sym) = LOC_LABEL;
659 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
660 SYMBOL_VALUE_ADDRESS (sym) = valu;
661 add_symbol_to_list (sym, &local_symbols);
665 /* A static function definition. */
666 SYMBOL_CLASS (sym) = LOC_BLOCK;
667 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
668 add_symbol_to_list (sym, &file_symbols);
669 /* fall into process_function_types. */
671 process_function_types:
672 /* Function result types are described as the result type in stabs.
673 We need to convert this to the function-returning-type-X type
674 in GDB. E.g. "int" is converted to "function returning int". */
675 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
678 /* This code doesn't work -- it needs to realloc and can't. */
679 /* Attempt to set up to record a function prototype... */
680 struct type *new = alloc_type (objfile);
682 /* Generate a template for the type of this function. The
683 types of the arguments will be added as we read the symbol
685 *new = *lookup_function_type (SYMBOL_TYPE(sym));
686 SYMBOL_TYPE(sym) = new;
687 TYPE_OBJFILE (new) = objfile;
688 in_function_type = new;
690 SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
693 /* fall into process_prototype_types */
695 process_prototype_types:
696 /* Sun acc puts declared types of arguments here. We don't care
697 about their actual types (FIXME -- we should remember the whole
698 function prototype), but the list may define some new types
699 that we have to remember, so we must scan it now. */
702 read_type (&p, objfile);
707 /* A global function definition. */
708 SYMBOL_CLASS (sym) = LOC_BLOCK;
709 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
710 add_symbol_to_list (sym, &global_symbols);
711 goto process_function_types;
714 /* For a class G (global) symbol, it appears that the
715 value is not correct. It is necessary to search for the
716 corresponding linker definition to find the value.
717 These definitions appear at the end of the namelist. */
718 i = hashname (SYMBOL_NAME (sym));
719 SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
720 global_sym_chain[i] = sym;
721 SYMBOL_CLASS (sym) = LOC_STATIC;
722 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
723 add_symbol_to_list (sym, &global_symbols);
726 /* This case is faked by a conditional above,
727 when there is no code letter in the dbx data.
728 Dbx data never actually contains 'l'. */
730 SYMBOL_CLASS (sym) = LOC_LOCAL;
731 SYMBOL_VALUE (sym) = valu;
732 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
733 add_symbol_to_list (sym, &local_symbols);
737 /* Normally this is a parameter, a LOC_ARG. On the i960, it
738 can also be a LOC_LOCAL_ARG depending on symbol type. */
739 #ifndef DBX_PARM_SYMBOL_CLASS
740 #define DBX_PARM_SYMBOL_CLASS(type) LOC_ARG
742 SYMBOL_CLASS (sym) = DBX_PARM_SYMBOL_CLASS (type);
743 SYMBOL_VALUE (sym) = valu;
744 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
746 /* This doesn't work yet. */
747 add_param_to_type (&in_function_type, sym);
749 add_symbol_to_list (sym, &local_symbols);
751 /* If it's gcc-compiled, if it says `short', believe it. */
752 if (processing_gcc_compilation || BELIEVE_PCC_PROMOTION)
755 #if defined(BELIEVE_PCC_PROMOTION_TYPE)
756 /* This macro is defined on machines (e.g. sparc) where
757 we should believe the type of a PCC 'short' argument,
758 but shouldn't believe the address (the address is
759 the address of the corresponding int). Note that
760 this is only different from the BELIEVE_PCC_PROMOTION
761 case on big-endian machines.
763 My guess is that this correction, as opposed to changing
764 the parameter to an 'int' (as done below, for PCC
765 on most machines), is the right thing to do
766 on all machines, but I don't want to risk breaking
767 something that already works. On most PCC machines,
768 the sparc problem doesn't come up because the calling
769 function has to zero the top bytes (not knowing whether
770 the called function wants an int or a short), so there
771 is no practical difference between an int and a short
772 (except perhaps what happens when the GDB user types
773 "print short_arg = 0x10000;").
776 actually produces the correct address (we don't need to fix it
777 up). I made this code adapt so that it will offset the symbol
778 if it was pointing at an int-aligned location and not
779 otherwise. This way you can use the same gdb for 4.0.x and
782 If the parameter is shorter than an int, and is integral
783 (e.g. char, short, or unsigned equivalent), and is claimed to
784 be passed on an integer boundary, don't believe it! Offset the
785 parameter's address to the tail-end of that integer. */
787 temptype = lookup_fundamental_type (objfile, FT_INTEGER);
788 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (temptype)
789 && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT
790 && 0 == SYMBOL_VALUE (sym) % TYPE_LENGTH (temptype))
792 SYMBOL_VALUE (sym) += TYPE_LENGTH (temptype)
793 - TYPE_LENGTH (SYMBOL_TYPE (sym));
797 #else /* no BELIEVE_PCC_PROMOTION_TYPE. */
799 /* If PCC says a parameter is a short or a char,
800 it is really an int. */
801 temptype = lookup_fundamental_type (objfile, FT_INTEGER);
802 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (temptype)
803 && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
805 SYMBOL_TYPE (sym) = TYPE_UNSIGNED (SYMBOL_TYPE (sym))
806 ? lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER)
811 #endif /* no BELIEVE_PCC_PROMOTION_TYPE. */
814 /* acc seems to use P to delare the prototypes of functions that
815 are referenced by this file. gdb is not prepared to deal
816 with this extra information. FIXME, it ought to. */
818 goto process_prototype_types;
820 /* Parameter which is in a register. */
821 SYMBOL_CLASS (sym) = LOC_REGPARM;
822 SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (valu);
823 if (SYMBOL_VALUE (sym) >= NUM_REGS)
825 complain (®_value_complaint, SYMBOL_SOURCE_NAME (sym));
826 SYMBOL_VALUE (sym) = SP_REGNUM; /* Known safe, though useless */
828 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
829 add_symbol_to_list (sym, &local_symbols);
834 /* Register variable (either global or local). */
835 SYMBOL_CLASS (sym) = LOC_REGISTER;
836 SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (valu);
837 if (SYMBOL_VALUE (sym) >= NUM_REGS)
839 complain (®_value_complaint, SYMBOL_SOURCE_NAME (sym));
840 SYMBOL_VALUE (sym) = SP_REGNUM; /* Known safe, though useless */
842 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
844 add_symbol_to_list (sym, &local_symbols);
846 add_symbol_to_list (sym, &file_symbols);
850 /* Static symbol at top level of file */
851 SYMBOL_CLASS (sym) = LOC_STATIC;
852 SYMBOL_VALUE_ADDRESS (sym) = valu;
853 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
854 add_symbol_to_list (sym, &file_symbols);
858 /* For a nameless type, we don't want a create a symbol, thus we
859 did not use `sym'. Return without further processing. */
860 if (nameless) return NULL;
862 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
863 SYMBOL_VALUE (sym) = valu;
864 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
865 /* C++ vagaries: we may have a type which is derived from
866 a base type which did not have its name defined when the
867 derived class was output. We fill in the derived class's
868 base part member's name here in that case. */
869 if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
870 if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
871 || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
872 && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
875 for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
876 if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
877 TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
878 type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
881 add_symbol_to_list (sym, &file_symbols);
885 /* For a nameless type, we don't want a create a symbol, thus we
886 did not use `sym'. Return without further processing. */
887 if (nameless) return NULL;
889 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
890 SYMBOL_VALUE (sym) = valu;
891 SYMBOL_NAMESPACE (sym) = STRUCT_NAMESPACE;
892 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
893 TYPE_NAME (SYMBOL_TYPE (sym))
894 = obconcat (&objfile -> type_obstack, "",
895 (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_ENUM
897 : (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
898 ? "struct " : "union ")),
900 add_symbol_to_list (sym, &file_symbols);
904 /* Clone the sym and then modify it. */
905 register struct symbol *typedef_sym = (struct symbol *)
906 obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
908 SYMBOL_CLASS (typedef_sym) = LOC_TYPEDEF;
909 SYMBOL_VALUE (typedef_sym) = valu;
910 SYMBOL_NAMESPACE (typedef_sym) = VAR_NAMESPACE;
911 add_symbol_to_list (typedef_sym, &file_symbols);
916 /* Static symbol of local scope */
917 SYMBOL_CLASS (sym) = LOC_STATIC;
918 SYMBOL_VALUE_ADDRESS (sym) = valu;
919 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
920 add_symbol_to_list (sym, &local_symbols);
924 /* Reference parameter */
925 SYMBOL_CLASS (sym) = LOC_REF_ARG;
926 SYMBOL_VALUE (sym) = valu;
927 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
928 add_symbol_to_list (sym, &local_symbols);
932 /* This is used by Sun FORTRAN for "function result value".
933 Sun claims ("dbx and dbxtool interfaces", 2nd ed)
934 that Pascal uses it too, but when I tried it Pascal used
935 "x:3" (local symbol) instead. */
936 SYMBOL_CLASS (sym) = LOC_LOCAL;
937 SYMBOL_VALUE (sym) = valu;
938 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
939 add_symbol_to_list (sym, &local_symbols);
943 error ("Invalid symbol data: unknown symbol-type code `%c' at symtab pos %d.", deftype, symnum);
949 /* Skip rest of this symbol and return an error type.
951 General notes on error recovery: error_type always skips to the
952 end of the symbol (modulo cretinous dbx symbol name continuation).
956 return error_type (pp);
958 is wrong because if *pp starts out pointing at '\0' (typically as the
959 result of an earlier error), it will be incremented to point to the
960 start of the next symbol, which might produce strange results, at least
961 if you run off the end of the string table. Instead use
964 return error_type (pp);
970 foo = error_type (pp);
974 And in case it isn't obvious, the point of all this hair is so the compiler
975 can define new types and new syntaxes, and old versions of the
976 debugger will be able to read the new symbol tables. */
982 complain (&error_type_complaint);
985 /* Skip to end of symbol. */
991 /* Check for and handle cretinous dbx symbol name continuation! */
992 if ((*pp)[-1] == '\\')
994 *pp = next_symbol_text ();
1001 return (builtin_type_error);
1005 /* Read a dbx type reference or definition;
1006 return the type that is meant.
1007 This can be just a number, in which case it references
1008 a type already defined and placed in type_vector.
1009 Or the number can be followed by an =, in which case
1010 it means to define a new type according to the text that
1014 read_type (pp, objfile)
1016 struct objfile *objfile;
1018 register struct type *type = 0;
1022 char type_descriptor;
1024 /* Read type number if present. The type number may be omitted.
1025 for instance in a two-dimensional array declared with type
1026 "ar1;1;10;ar1;1;10;4". */
1027 if ((**pp >= '0' && **pp <= '9')
1030 read_type_number (pp, typenums);
1032 /* Type is not being defined here. Either it already exists,
1033 or this is a forward reference to it. dbx_alloc_type handles
1036 return dbx_alloc_type (typenums, objfile);
1038 /* Type is being defined here. */
1039 #if 0 /* Callers aren't prepared for a NULL result! FIXME -- metin! */
1043 /* if such a type already exists, this is an unnecessary duplication
1044 of the stab string, which is common in (RS/6000) xlc generated
1045 objects. In that case, simply return NULL and let the caller take
1048 tt = *dbx_lookup_type (typenums);
1049 if (tt && tt->length && tt->code)
1058 /* 'typenums=' not present, type is anonymous. Read and return
1059 the definition, but don't put it in the type vector. */
1060 typenums[0] = typenums[1] = -1;
1064 type_descriptor = (*pp)[-1];
1065 switch (type_descriptor)
1069 enum type_code code;
1071 /* Used to index through file_symbols. */
1072 struct pending *ppt;
1075 /* Name including "struct", etc. */
1078 /* Name without "struct", etc. */
1079 char *type_name_only;
1085 /* Set the type code according to the following letter. */
1089 code = TYPE_CODE_STRUCT;
1093 code = TYPE_CODE_UNION;
1097 code = TYPE_CODE_ENUM;
1101 return error_type (pp);
1104 to = type_name = (char *)
1105 obstack_alloc (&objfile -> type_obstack,
1107 ((char *) strchr (*pp, ':') - (*pp)) + 1));
1109 /* Copy the prefix. */
1111 while ((*to++ = *from++) != '\0')
1115 type_name_only = to;
1117 /* Copy the name. */
1119 while ((*to++ = *from++) != ':')
1123 /* Set the pointer ahead of the name which we just read. */
1127 /* The following hack is clearly wrong, because it doesn't
1128 check whether we are in a baseclass. I tried to reproduce
1129 the case that it is trying to fix, but I couldn't get
1130 g++ to put out a cross reference to a basetype. Perhaps
1131 it doesn't do it anymore. */
1132 /* Note: for C++, the cross reference may be to a base type which
1133 has not yet been seen. In this case, we skip to the comma,
1134 which will mark the end of the base class name. (The ':'
1135 at the end of the base class name will be skipped as well.)
1136 But sometimes (ie. when the cross ref is the last thing on
1137 the line) there will be no ','. */
1138 from = (char *) strchr (*pp, ',');
1144 /* Now check to see whether the type has already been declared. */
1145 /* This is necessary at least in the case where the
1146 program says something like
1148 The compiler puts out a cross-reference; we better find
1149 set the length of the structure correctly so we can
1150 set the length of the array. */
1151 for (ppt = file_symbols; ppt; ppt = ppt->next)
1152 for (i = 0; i < ppt->nsyms; i++)
1154 struct symbol *sym = ppt->symbol[i];
1156 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
1157 && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
1158 && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
1159 && STREQ (SYMBOL_NAME (sym), type_name_only))
1161 obstack_free (&objfile -> type_obstack, type_name);
1162 type = SYMBOL_TYPE (sym);
1167 /* Didn't find the type to which this refers, so we must
1168 be dealing with a forward reference. Allocate a type
1169 structure for it, and keep track of it so we can
1170 fill in the rest of the fields when we get the full
1172 type = dbx_alloc_type (typenums, objfile);
1173 TYPE_CODE (type) = code;
1174 TYPE_NAME (type) = type_name;
1175 INIT_CPLUS_SPECIFIC(type);
1176 TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
1178 add_undefined_type (type);
1182 case '-': /* RS/6000 built-in type */
1195 read_type_number (pp, xtypenums);
1196 type = *dbx_lookup_type (xtypenums);
1198 type = lookup_fundamental_type (objfile, FT_VOID);
1199 if (typenums[0] != -1)
1200 *dbx_lookup_type (typenums) = type;
1203 /* In the following types, we must be sure to overwrite any existing
1204 type that the typenums refer to, rather than allocating a new one
1205 and making the typenums point to the new one. This is because there
1206 may already be pointers to the existing type (if it had been
1207 forward-referenced), and we must change it to a pointer, function,
1208 reference, or whatever, *in-place*. */
1211 type1 = read_type (pp, objfile);
1212 type = make_pointer_type (type1, dbx_lookup_type (typenums));
1215 case '&': /* Reference to another type */
1216 type1 = read_type (pp, objfile);
1217 type = make_reference_type (type1, dbx_lookup_type (typenums));
1220 case 'f': /* Function returning another type */
1221 type1 = read_type (pp, objfile);
1222 type = make_function_type (type1, dbx_lookup_type (typenums));
1225 case 'k': /* Const qualifier on some type (Sun) */
1226 type = read_type (pp, objfile);
1227 /* FIXME! For now, we ignore const and volatile qualifiers. */
1230 case 'B': /* Volatile qual on some type (Sun) */
1231 type = read_type (pp, objfile);
1232 /* FIXME! For now, we ignore const and volatile qualifiers. */
1235 /* FIXME -- we should be doing smash_to_XXX types here. */
1236 case '@': /* Member (class & variable) type */
1238 struct type *domain = read_type (pp, objfile);
1239 struct type *memtype;
1242 /* Invalid member type data format. */
1243 return error_type (pp);
1246 memtype = read_type (pp, objfile);
1247 type = dbx_alloc_type (typenums, objfile);
1248 smash_to_member_type (type, domain, memtype);
1252 case '#': /* Method (class & fn) type */
1253 if ((*pp)[0] == '#')
1255 /* We'll get the parameter types from the name. */
1256 struct type *return_type;
1259 return_type = read_type (pp, objfile);
1260 if (*(*pp)++ != ';')
1261 complain (&invalid_member_complaint, symnum);
1262 type = allocate_stub_method (return_type);
1263 if (typenums[0] != -1)
1264 *dbx_lookup_type (typenums) = type;
1268 struct type *domain = read_type (pp, objfile);
1269 struct type *return_type;
1272 if (*(*pp)++ != ',')
1273 error ("invalid member type data format, at symtab pos %d.",
1276 return_type = read_type (pp, objfile);
1277 args = read_args (pp, ';', objfile);
1278 type = dbx_alloc_type (typenums, objfile);
1279 smash_to_method_type (type, domain, return_type, args);
1283 case 'r': /* Range type */
1284 type = read_range_type (pp, typenums, objfile);
1285 if (typenums[0] != -1)
1286 *dbx_lookup_type (typenums) = type;
1289 case 'b': /* Sun ACC builtin int type */
1290 type = read_sun_builtin_type (pp, typenums, objfile);
1291 if (typenums[0] != -1)
1292 *dbx_lookup_type (typenums) = type;
1295 case 'R': /* Sun ACC builtin float type */
1296 type = read_sun_floating_type (pp, typenums, objfile);
1297 if (typenums[0] != -1)
1298 *dbx_lookup_type (typenums) = type;
1301 case 'e': /* Enumeration type */
1302 type = dbx_alloc_type (typenums, objfile);
1303 type = read_enum_type (pp, type, objfile);
1304 *dbx_lookup_type (typenums) = type;
1307 case 's': /* Struct type */
1308 case 'u': /* Union type */
1309 type = dbx_alloc_type (typenums, objfile);
1310 if (!TYPE_NAME (type))
1312 TYPE_NAME (type) = type_synonym_name;
1314 type_synonym_name = NULL;
1315 switch (type_descriptor)
1318 TYPE_CODE (type) = TYPE_CODE_STRUCT;
1321 TYPE_CODE (type) = TYPE_CODE_UNION;
1324 type = read_struct_type (pp, type, objfile);
1327 case 'a': /* Array type */
1329 return error_type (pp);
1332 type = dbx_alloc_type (typenums, objfile);
1333 type = read_array_type (pp, type, objfile);
1337 --*pp; /* Go back to the symbol in error */
1338 /* Particularly important if it was \0! */
1339 return error_type (pp);
1348 /* RS/6000 xlc/dbx combination uses a set of builtin types, starting from -1.
1349 Return the proper type node for a given builtin type number. */
1351 static struct type *
1352 rs6000_builtin_type (typenum)
1355 /* default types are defined in dbxstclass.h. */
1358 return lookup_fundamental_type (current_objfile, FT_INTEGER);
1360 return lookup_fundamental_type (current_objfile, FT_CHAR);
1362 return lookup_fundamental_type (current_objfile, FT_SHORT);
1364 return lookup_fundamental_type (current_objfile, FT_LONG);
1366 return lookup_fundamental_type (current_objfile, FT_UNSIGNED_CHAR);
1368 return lookup_fundamental_type (current_objfile, FT_SIGNED_CHAR);
1370 return lookup_fundamental_type (current_objfile, FT_UNSIGNED_SHORT);
1372 return lookup_fundamental_type (current_objfile, FT_UNSIGNED_INTEGER);
1374 return lookup_fundamental_type (current_objfile, FT_UNSIGNED_INTEGER);
1376 return lookup_fundamental_type (current_objfile, FT_UNSIGNED_LONG);
1378 return lookup_fundamental_type (current_objfile, FT_VOID);
1380 return lookup_fundamental_type (current_objfile, FT_FLOAT);
1382 return lookup_fundamental_type (current_objfile, FT_DBL_PREC_FLOAT);
1384 return lookup_fundamental_type (current_objfile, FT_EXT_PREC_FLOAT);
1386 /* requires a builtin `integer' */
1387 return lookup_fundamental_type (current_objfile, FT_INTEGER);
1389 return lookup_fundamental_type (current_objfile, FT_BOOLEAN);
1391 /* requires builtin `short real' */
1392 return lookup_fundamental_type (current_objfile, FT_FLOAT);
1394 /* requires builtin `real' */
1395 return lookup_fundamental_type (current_objfile, FT_FLOAT);
1397 complain (rs6000_builtin_complaint, typenum);
1402 /* This page contains subroutines of read_type. */
1404 #define VISIBILITY_PRIVATE '0' /* Stabs character for private field */
1405 #define VISIBILITY_PROTECTED '1' /* Stabs character for protected fld */
1406 #define VISIBILITY_PUBLIC '2' /* Stabs character for public field */
1408 /* Read member function stabs info for C++ classes. The form of each member
1411 NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
1413 An example with two member functions is:
1415 afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
1417 For the case of overloaded operators, the format is op$::*.funcs, where
1418 $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
1419 name (such as `+=') and `.' marks the end of the operator name. */
1422 read_member_functions (fip, pp, type, objfile)
1423 struct field_info *fip;
1426 struct objfile *objfile;
1430 /* Total number of member functions defined in this class. If the class
1431 defines two `f' functions, and one `g' function, then this will have
1433 int total_length = 0;
1437 struct next_fnfield *next;
1438 struct fn_field fn_field;
1440 struct type *look_ahead_type;
1441 struct next_fnfieldlist *new_fnlist;
1442 struct next_fnfield *new_sublist;
1446 /* Process each list until we find something that is not a member function
1447 or find the end of the functions. */
1451 /* We should be positioned at the start of the function name.
1452 Scan forward to find the first ':' and if it is not the
1453 first of a "::" delimiter, then this is not a member function. */
1465 look_ahead_type = NULL;
1468 new_fnlist = (struct next_fnfieldlist *)
1469 xmalloc (sizeof (struct next_fnfieldlist));
1470 make_cleanup (free, new_fnlist);
1471 memset (new_fnlist, 0, sizeof (struct next_fnfieldlist));
1473 if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && (*pp)[2] == CPLUS_MARKER)
1475 /* This is a completely wierd case. In order to stuff in the
1476 names that might contain colons (the usual name delimiter),
1477 Mike Tiemann defined a different name format which is
1478 signalled if the identifier is "op$". In that case, the
1479 format is "op$::XXXX." where XXXX is the name. This is
1480 used for names like "+" or "=". YUUUUUUUK! FIXME! */
1481 /* This lets the user type "break operator+".
1482 We could just put in "+" as the name, but that wouldn't
1484 static char opname[32] = {'o', 'p', CPLUS_MARKER};
1485 char *o = opname + 3;
1487 /* Skip past '::'. */
1490 STABS_CONTINUE (pp);
1496 main_fn_name = savestring (opname, o - opname);
1502 main_fn_name = savestring (*pp, p - *pp);
1503 /* Skip past '::'. */
1506 new_fnlist -> fn_fieldlist.name = main_fn_name;
1511 (struct next_fnfield *) xmalloc (sizeof (struct next_fnfield));
1512 make_cleanup (free, new_sublist);
1513 memset (new_sublist, 0, sizeof (struct next_fnfield));
1515 /* Check for and handle cretinous dbx symbol name continuation! */
1516 if (look_ahead_type == NULL)
1519 STABS_CONTINUE (pp);
1521 new_sublist -> fn_field.type = read_type (pp, objfile);
1524 /* Invalid symtab info for member function. */
1530 /* g++ version 1 kludge */
1531 new_sublist -> fn_field.type = look_ahead_type;
1532 look_ahead_type = NULL;
1542 /* If this is just a stub, then we don't have the real name here. */
1544 if (TYPE_FLAGS (new_sublist -> fn_field.type) & TYPE_FLAG_STUB)
1546 new_sublist -> fn_field.is_stub = 1;
1548 new_sublist -> fn_field.physname = savestring (*pp, p - *pp);
1551 /* Set this member function's visibility fields. */
1554 case VISIBILITY_PRIVATE:
1555 new_sublist -> fn_field.is_private = 1;
1557 case VISIBILITY_PROTECTED:
1558 new_sublist -> fn_field.is_protected = 1;
1562 STABS_CONTINUE (pp);
1565 case 'A': /* Normal functions. */
1566 new_sublist -> fn_field.is_const = 0;
1567 new_sublist -> fn_field.is_volatile = 0;
1570 case 'B': /* `const' member functions. */
1571 new_sublist -> fn_field.is_const = 1;
1572 new_sublist -> fn_field.is_volatile = 0;
1575 case 'C': /* `volatile' member function. */
1576 new_sublist -> fn_field.is_const = 0;
1577 new_sublist -> fn_field.is_volatile = 1;
1580 case 'D': /* `const volatile' member function. */
1581 new_sublist -> fn_field.is_const = 1;
1582 new_sublist -> fn_field.is_volatile = 1;
1585 case '*': /* File compiled with g++ version 1 -- no info */
1590 complain (&const_vol_complaint, **pp);
1597 /* virtual member function, followed by index.
1598 The sign bit is set to distinguish pointers-to-methods
1599 from virtual function indicies. Since the array is
1600 in words, the quantity must be shifted left by 1
1601 on 16 bit machine, and by 2 on 32 bit machine, forcing
1602 the sign bit out, and usable as a valid index into
1603 the array. Remove the sign bit here. */
1604 new_sublist -> fn_field.voffset =
1605 (0x7fffffff & read_number (pp, ';')) + 2;
1607 STABS_CONTINUE (pp);
1608 if (**pp == ';' || **pp == '\0')
1610 /* Must be g++ version 1. */
1611 new_sublist -> fn_field.fcontext = 0;
1615 /* Figure out from whence this virtual function came.
1616 It may belong to virtual function table of
1617 one of its baseclasses. */
1618 look_ahead_type = read_type (pp, objfile);
1621 /* g++ version 1 overloaded methods. */
1625 new_sublist -> fn_field.fcontext = look_ahead_type;
1634 look_ahead_type = NULL;
1640 /* static member function. */
1641 new_sublist -> fn_field.voffset = VOFFSET_STATIC;
1642 if (strncmp (new_sublist -> fn_field.physname,
1643 main_fn_name, strlen (main_fn_name)))
1645 new_sublist -> fn_field.is_stub = 1;
1651 complain (&member_fn_complaint, (*pp)[-1]);
1652 /* Fall through into normal member function. */
1655 /* normal member function. */
1656 new_sublist -> fn_field.voffset = 0;
1657 new_sublist -> fn_field.fcontext = 0;
1661 new_sublist -> next = sublist;
1662 sublist = new_sublist;
1664 STABS_CONTINUE (pp);
1666 while (**pp != ';' && **pp != '\0');
1670 new_fnlist -> fn_fieldlist.fn_fields = (struct fn_field *)
1671 obstack_alloc (&objfile -> type_obstack,
1672 sizeof (struct fn_field) * length);
1673 memset (new_fnlist -> fn_fieldlist.fn_fields, 0,
1674 sizeof (struct fn_field) * length);
1675 for (i = length; (i--, sublist); sublist = sublist -> next)
1677 new_fnlist -> fn_fieldlist.fn_fields[i] = sublist -> fn_field;
1680 new_fnlist -> fn_fieldlist.length = length;
1681 new_fnlist -> next = fip -> fnlist;
1682 fip -> fnlist = new_fnlist;
1684 total_length += length;
1685 STABS_CONTINUE (pp);
1690 ALLOCATE_CPLUS_STRUCT_TYPE (type);
1691 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
1692 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
1693 memset (TYPE_FN_FIELDLISTS (type), 0,
1694 sizeof (struct fn_fieldlist) * nfn_fields);
1695 TYPE_NFN_FIELDS (type) = nfn_fields;
1696 TYPE_NFN_FIELDS_TOTAL (type) = total_length;
1702 /* Special GNU C++ name.
1703 FIXME: Still need to properly handle parse error conditions. */
1706 read_cpp_abbrev (fip, pp, type, objfile)
1707 struct field_info *fip;
1710 struct objfile *objfile;
1716 struct type *context;
1726 /* At this point, *pp points to something like "22:23=*22...",
1727 where the type number before the ':' is the "context" and
1728 everything after is a regular type definition. Lookup the
1729 type, find it's name, and construct the field name. */
1731 context = read_type (pp, objfile);
1735 case 'f': /* $vf -- a virtual function table pointer */
1736 fip->list->field.name =
1737 obconcat (&objfile->type_obstack, vptr_name, "", "");
1740 case 'b': /* $vb -- a virtual bsomethingorother */
1741 name = type_name_no_tag (context);
1744 complain (&invalid_cpp_type_complaint, symnum);
1747 fip->list->field.name =
1748 obconcat (&objfile->type_obstack, vb_name, name, "");
1752 complain (&invalid_cpp_abbrev_complaint, *pp);
1753 fip->list->field.name =
1754 obconcat (&objfile->type_obstack,
1755 "INVALID_CPLUSPLUS_ABBREV", "", "");
1759 /* At this point, *pp points to the ':'. Skip it and read the
1765 complain (&invalid_cpp_abbrev_complaint, *pp);
1767 fip->list->field.type = read_type (pp, objfile);
1768 (*pp)++; /* Skip the comma. */
1769 fip->list->field.bitpos = read_number (pp, ';');
1770 /* This field is unpacked. */
1771 fip->list->field.bitsize = 0;
1772 fip->list->visibility = VISIBILITY_PRIVATE;
1776 /* GNU C++ anonymous type. */
1777 complain (&stabs_general_complaint, "g++ anonymous type $_ not handled");
1781 complain (&invalid_cpp_abbrev_complaint, *pp);
1786 read_one_struct_field (fip, pp, p, type, objfile)
1787 struct field_info *fip;
1791 struct objfile *objfile;
1793 fip -> list -> field.name =
1794 obsavestring (*pp, p - *pp, &objfile -> type_obstack);
1797 /* This means we have a visibility for a field coming. */
1801 fip -> list -> visibility = *(*pp)++;
1802 switch (fip -> list -> visibility)
1804 case VISIBILITY_PRIVATE:
1805 case VISIBILITY_PROTECTED:
1808 case VISIBILITY_PUBLIC:
1813 /* Unknown visibility specifier. */
1814 complain (&stabs_general_complaint,
1815 "unknown visibility specifier");
1822 /* normal dbx-style format, no explicit visibility */
1823 fip -> list -> visibility = VISIBILITY_PUBLIC;
1826 fip -> list -> field.type = read_type (pp, objfile);
1831 /* Possible future hook for nested types. */
1834 fip -> list -> field.bitpos = (long)-2; /* nested type */
1840 /* Static class member. */
1841 fip -> list -> field.bitpos = (long) -1;
1847 fip -> list -> field.bitsize = (long) savestring (*pp, p - *pp);
1851 else if (**pp != ',')
1853 /* Bad structure-type format. */
1854 complain (&stabs_general_complaint, "bad structure-type format");
1858 (*pp)++; /* Skip the comma. */
1859 fip -> list -> field.bitpos = read_number (pp, ',');
1860 fip -> list -> field.bitsize = read_number (pp, ';');
1863 /* FIXME-tiemann: Can't the compiler put out something which
1864 lets us distinguish these? (or maybe just not put out anything
1865 for the field). What is the story here? What does the compiler
1866 really do? Also, patch gdb.texinfo for this case; I document
1867 it as a possible problem there. Search for "DBX-style". */
1869 /* This is wrong because this is identical to the symbols
1870 produced for GCC 0-size arrays. For example:
1875 The code which dumped core in such circumstances should be
1876 fixed not to dump core. */
1878 /* g++ -g0 can put out bitpos & bitsize zero for a static
1879 field. This does not give us any way of getting its
1880 class, so we can't know its name. But we can just
1881 ignore the field so we don't dump core and other nasty
1883 if (fip -> list -> field.bitpos == 0 && fip -> list -> field.bitsize == 0)
1885 complain (&dbx_class_complaint);
1886 /* Ignore this field. */
1887 fip -> list = fip -> list -> next;
1892 /* Detect an unpacked field and mark it as such.
1893 dbx gives a bit size for all fields.
1894 Note that forward refs cannot be packed,
1895 and treat enums as if they had the width of ints. */
1897 if (TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_INT
1898 && TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_ENUM)
1900 fip -> list -> field.bitsize = 0;
1902 if ((fip -> list -> field.bitsize
1903 == 8 * TYPE_LENGTH (fip -> list -> field.type)
1904 || (TYPE_CODE (fip -> list -> field.type) == TYPE_CODE_ENUM
1905 && (fip -> list -> field.bitsize
1906 == 8 * TYPE_LENGTH (lookup_fundamental_type (objfile, FT_INTEGER)))
1910 fip -> list -> field.bitpos % 8 == 0)
1912 fip -> list -> field.bitsize = 0;
1918 /* Read struct or class data fields. They have the form:
1920 NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
1922 At the end, we see a semicolon instead of a field.
1924 In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
1927 The optional VISIBILITY is one of:
1929 '/0' (VISIBILITY_PRIVATE)
1930 '/1' (VISIBILITY_PROTECTED)
1931 '/2' (VISIBILITY_PUBLIC)
1933 or nothing, for C style fields with public visibility. */
1936 read_struct_fields (fip, pp, type, objfile)
1937 struct field_info *fip;
1940 struct objfile *objfile;
1943 struct nextfield *new;
1945 /* We better set p right now, in case there are no fields at all... */
1949 /* Read each data member type until we find the terminating ';' at the end of
1950 the data member list, or break for some other reason such as finding the
1951 start of the member function list. */
1955 STABS_CONTINUE (pp);
1956 /* Get space to record the next field's data. */
1957 new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
1958 make_cleanup (free, new);
1959 memset (new, 0, sizeof (struct nextfield));
1960 new -> next = fip -> list;
1963 /* Get the field name. */
1965 if (*p == CPLUS_MARKER)
1967 read_cpp_abbrev (fip, pp, type, objfile);
1971 /* Look for the ':' that separates the field name from the field
1972 values. Data members are delimited by a single ':', while member
1973 functions are delimited by a pair of ':'s. When we hit the member
1974 functions (if any), terminate scan loop and return. */
1981 /* Check to see if we have hit the member functions yet. */
1986 read_one_struct_field (fip, pp, p, type, objfile);
1990 /* chill the list of fields: the last entry (at the head) is a
1991 partially constructed entry which we now scrub. */
1992 fip -> list = fip -> list -> next;
1997 /* The stabs for C++ derived classes contain baseclass information which
1998 is marked by a '!' character after the total size. This function is
1999 called when we encounter the baseclass marker, and slurps up all the
2000 baseclass information.
2002 Immediately following the '!' marker is the number of base classes that
2003 the class is derived from, followed by information for each base class.
2004 For each base class, there are two visibility specifiers, a bit offset
2005 to the base class information within the derived class, a reference to
2006 the type for the base class, and a terminating semicolon.
2008 A typical example, with two base classes, would be "!2,020,19;0264,21;".
2010 Baseclass information marker __________________|| | | | | | |
2011 Number of baseclasses __________________________| | | | | | |
2012 Visibility specifiers (2) ________________________| | | | | |
2013 Offset in bits from start of class _________________| | | | |
2014 Type number for base class ___________________________| | | |
2015 Visibility specifiers (2) _______________________________| | |
2016 Offset in bits from start of class ________________________| |
2017 Type number of base class ____________________________________|
2021 read_baseclasses (fip, pp, type, objfile)
2022 struct field_info *fip;
2025 struct objfile *objfile;
2028 struct nextfield *new;
2036 /* Skip the '!' baseclass information marker. */
2040 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2041 TYPE_N_BASECLASSES (type) = read_number (pp, ',');
2044 /* Some stupid compilers have trouble with the following, so break
2045 it up into simpler expressions. */
2046 TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
2047 TYPE_ALLOC (type, B_BYTES (TYPE_N_BASECLASSES (type)));
2050 int num_bytes = B_BYTES (TYPE_N_BASECLASSES (type));
2053 pointer = (char *) TYPE_ALLOC (type, num_bytes);
2054 TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
2058 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), TYPE_N_BASECLASSES (type));
2060 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
2062 new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2063 make_cleanup (free, new);
2064 memset (new, 0, sizeof (struct nextfield));
2065 new -> next = fip -> list;
2067 new -> field.bitsize = 0; /* this should be an unpacked field! */
2069 STABS_CONTINUE (pp);
2073 /* Nothing to do. */
2076 SET_TYPE_FIELD_VIRTUAL (type, i);
2079 /* Bad visibility format. */
2083 new -> visibility = *(*pp)++;
2084 switch (new -> visibility)
2086 case VISIBILITY_PRIVATE:
2087 case VISIBILITY_PROTECTED:
2088 case VISIBILITY_PUBLIC:
2091 /* Bad visibility format. */
2095 /* The remaining value is the bit offset of the portion of the object
2096 corresponding to this baseclass. Always zero in the absence of
2097 multiple inheritance. */
2099 new -> field.bitpos = read_number (pp, ',');
2101 /* The last piece of baseclass information is the type of the base
2102 class. Read it, and remember it's type name as this field's name. */
2104 new -> field.type = read_type (pp, objfile);
2105 new -> field.name = type_name_no_tag (new -> field.type);
2107 /* skip trailing ';' and bump count of number of fields seen */
2113 /* The tail end of stabs for C++ classes that contain a virtual function
2114 pointer contains a tilde, a %, and a type number.
2115 The type number refers to the base class (possibly this class itself) which
2116 contains the vtable pointer for the current class.
2118 This function is called when we have parsed all the method declarations,
2119 so we can look for the vptr base class info. */
2122 read_tilde_fields (fip, pp, type, objfile)
2123 struct field_info *fip;
2126 struct objfile *objfile;
2130 STABS_CONTINUE (pp);
2132 /* If we are positioned at a ';', then skip it. */
2142 if (**pp == '=' || **pp == '+' || **pp == '-')
2144 /* Obsolete flags that used to indicate the presence
2145 of constructors and/or destructors. */
2149 /* Read either a '%' or the final ';'. */
2150 if (*(*pp)++ == '%')
2152 /* The next number is the type number of the base class
2153 (possibly our own class) which supplies the vtable for
2154 this class. Parse it out, and search that class to find
2155 its vtable pointer, and install those into TYPE_VPTR_BASETYPE
2156 and TYPE_VPTR_FIELDNO. */
2161 t = read_type (pp, objfile);
2163 while (*p != '\0' && *p != ';')
2169 /* Premature end of symbol. */
2173 TYPE_VPTR_BASETYPE (type) = t;
2174 if (type == t) /* Our own class provides vtbl ptr */
2176 for (i = TYPE_NFIELDS (t) - 1;
2177 i >= TYPE_N_BASECLASSES (t);
2180 if (! strncmp (TYPE_FIELD_NAME (t, i), vptr_name,
2181 sizeof (vptr_name) - 1))
2183 TYPE_VPTR_FIELDNO (type) = i;
2187 /* Virtual function table field not found. */
2188 complain (vtbl_notfound_complaint, TYPE_NAME (type));
2193 TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
2204 attach_fn_fields_to_type (fip, type)
2205 struct field_info *fip;
2206 register struct type *type;
2210 for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
2212 if (TYPE_CODE (TYPE_BASECLASS (type, n)) == TYPE_CODE_UNDEF)
2214 /* @@ Memory leak on objfile -> type_obstack? */
2217 TYPE_NFN_FIELDS_TOTAL (type) +=
2218 TYPE_NFN_FIELDS_TOTAL (TYPE_BASECLASS (type, n));
2221 for (n = TYPE_NFN_FIELDS (type);
2222 fip -> fnlist != NULL;
2223 fip -> fnlist = fip -> fnlist -> next)
2225 --n; /* Circumvent Sun3 compiler bug */
2226 TYPE_FN_FIELDLISTS (type)[n] = fip -> fnlist -> fn_fieldlist;
2231 /* Create the vector of fields, and record how big it is.
2232 We need this info to record proper virtual function table information
2233 for this class's virtual functions. */
2236 attach_fields_to_type (fip, type, objfile)
2237 struct field_info *fip;
2238 register struct type *type;
2239 struct objfile *objfile;
2241 register int nfields = 0;
2242 register int non_public_fields = 0;
2243 register struct nextfield *scan;
2245 /* Count up the number of fields that we have, as well as taking note of
2246 whether or not there are any non-public fields, which requires us to
2247 allocate and build the private_field_bits and protected_field_bits
2250 for (scan = fip -> list; scan != NULL; scan = scan -> next)
2253 if (scan -> visibility != VISIBILITY_PUBLIC)
2255 non_public_fields++;
2259 /* Now we know how many fields there are, and whether or not there are any
2260 non-public fields. Record the field count, allocate space for the
2261 array of fields, and create blank visibility bitfields if necessary. */
2263 TYPE_NFIELDS (type) = nfields;
2264 TYPE_FIELDS (type) = (struct field *)
2265 TYPE_ALLOC (type, sizeof (struct field) * nfields);
2266 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
2268 if (non_public_fields)
2270 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2272 TYPE_FIELD_PRIVATE_BITS (type) =
2273 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2274 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
2276 TYPE_FIELD_PROTECTED_BITS (type) =
2277 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2278 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
2281 /* Copy the saved-up fields into the field vector. Start from the head
2282 of the list, adding to the tail of the field array, so that they end
2283 up in the same order in the array in which they were added to the list. */
2285 while (nfields-- > 0)
2287 TYPE_FIELD (type, nfields) = fip -> list -> field;
2288 switch (fip -> list -> visibility)
2290 case VISIBILITY_PRIVATE:
2291 SET_TYPE_FIELD_PRIVATE (type, nfields);
2294 case VISIBILITY_PROTECTED:
2295 SET_TYPE_FIELD_PROTECTED (type, nfields);
2298 case VISIBILITY_PUBLIC:
2302 /* Should warn about this unknown visibility? */
2305 fip -> list = fip -> list -> next;
2310 /* Read the description of a structure (or union type) and return an object
2311 describing the type.
2313 PP points to a character pointer that points to the next unconsumed token
2314 in the the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;",
2315 *PP will point to "4a:1,0,32;;".
2317 TYPE points to an incomplete type that needs to be filled in.
2319 OBJFILE points to the current objfile from which the stabs information is
2320 being read. (Note that it is redundant in that TYPE also contains a pointer
2321 to this same objfile, so it might be a good idea to eliminate it. FIXME).
2324 static struct type *
2325 read_struct_type (pp, type, objfile)
2328 struct objfile *objfile;
2330 struct cleanup *back_to;
2331 struct field_info fi;
2336 back_to = make_cleanup (null_cleanup, 0);
2338 INIT_CPLUS_SPECIFIC (type);
2339 TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2341 /* First comes the total size in bytes. */
2343 TYPE_LENGTH (type) = read_number (pp, 0);
2345 /* Now read the baseclasses, if any, read the regular C struct or C++
2346 class member fields, attach the fields to the type, read the C++
2347 member functions, attach them to the type, and then read any tilde
2348 field (baseclass specifier for the class holding the main vtable). */
2350 if (!read_baseclasses (&fi, pp, type, objfile))
2352 do_cleanups (back_to);
2353 return (error_type (pp));
2355 if (!read_struct_fields (&fi, pp, type, objfile))
2357 do_cleanups (back_to);
2358 return (error_type (pp));
2360 if (!attach_fields_to_type (&fi, type, objfile))
2362 do_cleanups (back_to);
2363 return (error_type (pp));
2365 if (!read_member_functions (&fi, pp, type, objfile))
2367 do_cleanups (back_to);
2368 return (error_type (pp));
2370 if (!attach_fn_fields_to_type (&fi, type))
2372 do_cleanups (back_to);
2373 return (error_type (pp));
2375 if (!read_tilde_fields (&fi, pp, type, objfile))
2377 do_cleanups (back_to);
2378 return (error_type (pp));
2381 do_cleanups (back_to);
2385 /* Read a definition of an array type,
2386 and create and return a suitable type object.
2387 Also creates a range type which represents the bounds of that
2390 static struct type *
2391 read_array_type (pp, type, objfile)
2393 register struct type *type;
2394 struct objfile *objfile;
2396 struct type *index_type, *element_type, *range_type;
2400 /* Format of an array type:
2401 "ar<index type>;lower;upper;<array_contents_type>". Put code in
2404 Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
2405 for these, produce a type like float[][]. */
2407 index_type = read_type (pp, objfile);
2409 /* Improper format of array type decl. */
2410 return error_type (pp);
2413 if (!(**pp >= '0' && **pp <= '9'))
2418 lower = read_number (pp, ';');
2420 if (!(**pp >= '0' && **pp <= '9'))
2425 upper = read_number (pp, ';');
2427 element_type = read_type (pp, objfile);
2436 create_range_type ((struct type *) NULL, index_type, lower, upper);
2437 type = create_array_type (type, element_type, range_type);
2439 /* If we have an array whose element type is not yet known, but whose
2440 bounds *are* known, record it to be adjusted at the end of the file. */
2442 if (TYPE_LENGTH (element_type) == 0 && !adjustable)
2444 add_undefined_type (type);
2451 /* Read a definition of an enumeration type,
2452 and create and return a suitable type object.
2453 Also defines the symbols that represent the values of the type. */
2455 static struct type *
2456 read_enum_type (pp, type, objfile)
2458 register struct type *type;
2459 struct objfile *objfile;
2464 register struct symbol *sym;
2466 struct pending **symlist;
2467 struct pending *osyms, *syms;
2471 /* FIXME! The stabs produced by Sun CC merrily define things that ought
2472 to be file-scope, between N_FN entries, using N_LSYM. What's a mother
2473 to do? For now, force all enum values to file scope. */
2474 if (within_function)
2475 symlist = &local_symbols;
2478 symlist = &file_symbols;
2480 o_nsyms = osyms ? osyms->nsyms : 0;
2482 /* Read the value-names and their values.
2483 The input syntax is NAME:VALUE,NAME:VALUE, and so on.
2484 A semicolon or comma instead of a NAME means the end. */
2485 while (**pp && **pp != ';' && **pp != ',')
2487 STABS_CONTINUE (pp);
2489 while (*p != ':') p++;
2490 name = obsavestring (*pp, p - *pp, &objfile -> symbol_obstack);
2492 n = read_number (pp, ',');
2494 sym = (struct symbol *)
2495 obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
2496 memset (sym, 0, sizeof (struct symbol));
2497 SYMBOL_NAME (sym) = name;
2498 SYMBOL_LANGUAGE (sym) = current_subfile -> language;
2499 SYMBOL_CLASS (sym) = LOC_CONST;
2500 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
2501 SYMBOL_VALUE (sym) = n;
2502 add_symbol_to_list (sym, symlist);
2507 (*pp)++; /* Skip the semicolon. */
2509 /* Now fill in the fields of the type-structure. */
2511 TYPE_LENGTH (type) = sizeof (int);
2512 TYPE_CODE (type) = TYPE_CODE_ENUM;
2513 TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2514 TYPE_NFIELDS (type) = nsyms;
2515 TYPE_FIELDS (type) = (struct field *)
2516 TYPE_ALLOC (type, sizeof (struct field) * nsyms);
2517 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
2519 /* Find the symbols for the values and put them into the type.
2520 The symbols can be found in the symlist that we put them on
2521 to cause them to be defined. osyms contains the old value
2522 of that symlist; everything up to there was defined by us. */
2523 /* Note that we preserve the order of the enum constants, so
2524 that in something like "enum {FOO, LAST_THING=FOO}" we print
2525 FOO, not LAST_THING. */
2527 for (syms = *symlist, n = 0; syms; syms = syms->next)
2532 for (; j < syms->nsyms; j++,n++)
2534 struct symbol *xsym = syms->symbol[j];
2535 SYMBOL_TYPE (xsym) = type;
2536 TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (xsym);
2537 TYPE_FIELD_VALUE (type, n) = 0;
2538 TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
2539 TYPE_FIELD_BITSIZE (type, n) = 0;
2546 /* This screws up perfectly good C programs with enums. FIXME. */
2547 /* Is this Modula-2's BOOLEAN type? Flag it as such if so. */
2548 if(TYPE_NFIELDS(type) == 2 &&
2549 ((STREQ(TYPE_FIELD_NAME(type,0),"TRUE") &&
2550 STREQ(TYPE_FIELD_NAME(type,1),"FALSE")) ||
2551 (STREQ(TYPE_FIELD_NAME(type,1),"TRUE") &&
2552 STREQ(TYPE_FIELD_NAME(type,0),"FALSE"))))
2553 TYPE_CODE(type) = TYPE_CODE_BOOL;
2559 /* Sun's ACC uses a somewhat saner method for specifying the builtin
2560 typedefs in every file (for int, long, etc):
2562 type = b <signed> <width>; <offset>; <nbits>
2563 signed = u or s. Possible c in addition to u or s (for char?).
2564 offset = offset from high order bit to start bit of type.
2565 width is # bytes in object of this type, nbits is # bits in type.
2567 The width/offset stuff appears to be for small objects stored in
2568 larger ones (e.g. `shorts' in `int' registers). We ignore it for now,
2571 static struct type *
2572 read_sun_builtin_type (pp, typenums, objfile)
2575 struct objfile *objfile;
2589 return error_type (pp);
2593 /* For some odd reason, all forms of char put a c here. This is strange
2594 because no other type has this honor. We can safely ignore this because
2595 we actually determine 'char'acterness by the number of bits specified in
2601 /* The first number appears to be the number of bytes occupied
2602 by this type, except that unsigned short is 4 instead of 2.
2603 Since this information is redundant with the third number,
2604 we will ignore it. */
2605 read_number (pp, ';');
2607 /* The second number is always 0, so ignore it too. */
2608 read_number (pp, ';');
2610 /* The third number is the number of bits for this type. */
2611 nbits = read_number (pp, 0);
2613 /* FIXME. Here we should just be able to make a type of the right
2614 number of bits and signedness. FIXME. */
2616 if (nbits == TARGET_LONG_LONG_BIT)
2617 return (lookup_fundamental_type (objfile,
2618 signed_type? FT_LONG_LONG: FT_UNSIGNED_LONG_LONG));
2620 if (nbits == TARGET_INT_BIT)
2622 /* FIXME -- the only way to distinguish `int' from `long'
2623 is to look at its name! */
2626 if (long_kludge_name && long_kludge_name[0] == 'l' /* long */)
2627 return lookup_fundamental_type (objfile, FT_LONG);
2629 return lookup_fundamental_type (objfile, FT_INTEGER);
2633 if (long_kludge_name
2634 && ((long_kludge_name[0] == 'u' /* unsigned */ &&
2635 long_kludge_name[9] == 'l' /* long */)
2636 || (long_kludge_name[0] == 'l' /* long unsigned */)))
2637 return lookup_fundamental_type (objfile, FT_UNSIGNED_LONG);
2639 return lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER);
2643 if (nbits == TARGET_SHORT_BIT)
2644 return (lookup_fundamental_type (objfile,
2645 signed_type? FT_SHORT: FT_UNSIGNED_SHORT));
2647 if (nbits == TARGET_CHAR_BIT)
2648 return (lookup_fundamental_type (objfile,
2649 signed_type? FT_CHAR: FT_UNSIGNED_CHAR));
2652 return lookup_fundamental_type (objfile, FT_VOID);
2654 return error_type (pp);
2657 static struct type *
2658 read_sun_floating_type (pp, typenums, objfile)
2661 struct objfile *objfile;
2665 /* The first number has more details about the type, for example
2666 FN_COMPLEX. See the sun stab.h. */
2667 read_number (pp, ';');
2669 /* The second number is the number of bytes occupied by this type */
2670 nbytes = read_number (pp, ';');
2673 return error_type (pp);
2675 if (nbytes == TARGET_FLOAT_BIT / TARGET_CHAR_BIT)
2676 return lookup_fundamental_type (objfile, FT_FLOAT);
2678 if (nbytes == TARGET_DOUBLE_BIT / TARGET_CHAR_BIT)
2679 return lookup_fundamental_type (objfile, FT_DBL_PREC_FLOAT);
2681 if (nbytes == TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT)
2682 return lookup_fundamental_type (objfile, FT_EXT_PREC_FLOAT);
2684 return error_type (pp);
2687 /* Read a number from the string pointed to by *PP.
2688 The value of *PP is advanced over the number.
2689 If END is nonzero, the character that ends the
2690 number must match END, or an error happens;
2691 and that character is skipped if it does match.
2692 If END is zero, *PP is left pointing to that character.
2694 If the number fits in a long, set *VALUE and set *BITS to 0.
2695 If not, set *BITS to be the number of bits in the number.
2697 If encounter garbage, set *BITS to -1. */
2700 read_huge_number (pp, end, valu, bits)
2721 /* Leading zero means octal. GCC uses this to output values larger
2722 than an int (because that would be hard in decimal). */
2729 upper_limit = LONG_MAX / radix;
2730 while ((c = *p++) >= '0' && c <= ('0' + radix))
2732 if (n <= upper_limit)
2735 n += c - '0'; /* FIXME this overflows anyway */
2740 /* This depends on large values being output in octal, which is
2747 /* Ignore leading zeroes. */
2751 else if (c == '2' || c == '3')
2777 /* Large decimal constants are an error (because it is hard to
2778 count how many bits are in them). */
2784 /* -0x7f is the same as 0x80. So deal with it by adding one to
2785 the number of bits. */
2800 static struct type *
2801 read_range_type (pp, typenums, objfile)
2804 struct objfile *objfile;
2810 struct type *result_type;
2811 struct type *index_type;
2813 /* First comes a type we are a subrange of.
2814 In C it is usually 0, 1 or the type being defined. */
2815 read_type_number (pp, rangenums);
2816 self_subrange = (rangenums[0] == typenums[0] &&
2817 rangenums[1] == typenums[1]);
2819 /* A semicolon should now follow; skip it. */
2823 /* The remaining two operands are usually lower and upper bounds
2824 of the range. But in some special cases they mean something else. */
2825 read_huge_number (pp, ';', &n2, &n2bits);
2826 read_huge_number (pp, ';', &n3, &n3bits);
2828 if (n2bits == -1 || n3bits == -1)
2829 return error_type (pp);
2831 /* If limits are huge, must be large integral type. */
2832 if (n2bits != 0 || n3bits != 0)
2834 char got_signed = 0;
2835 char got_unsigned = 0;
2836 /* Number of bits in the type. */
2839 /* Range from 0 to <large number> is an unsigned large integral type. */
2840 if ((n2bits == 0 && n2 == 0) && n3bits != 0)
2845 /* Range from <large number> to <large number>-1 is a large signed
2847 else if (n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
2853 /* Check for "long long". */
2854 if (got_signed && nbits == TARGET_LONG_LONG_BIT)
2855 return (lookup_fundamental_type (objfile, FT_LONG_LONG));
2856 if (got_unsigned && nbits == TARGET_LONG_LONG_BIT)
2857 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG_LONG));
2859 if (got_signed || got_unsigned)
2861 result_type = alloc_type (objfile);
2862 TYPE_LENGTH (result_type) = nbits / TARGET_CHAR_BIT;
2863 TYPE_CODE (result_type) = TYPE_CODE_INT;
2865 TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED;
2869 return error_type (pp);
2872 /* A type defined as a subrange of itself, with bounds both 0, is void. */
2873 if (self_subrange && n2 == 0 && n3 == 0)
2874 return (lookup_fundamental_type (objfile, FT_VOID));
2876 /* If n3 is zero and n2 is not, we want a floating type,
2877 and n2 is the width in bytes.
2879 Fortran programs appear to use this for complex types also,
2880 and they give no way to distinguish between double and single-complex!
2881 We don't have complex types, so we would lose on all fortran files!
2882 So return type `double' for all of those. It won't work right
2883 for the complex values, but at least it makes the file loadable.
2885 FIXME, we may be able to distinguish these by their names. FIXME. */
2887 if (n3 == 0 && n2 > 0)
2889 if (n2 == sizeof (float))
2890 return (lookup_fundamental_type (objfile, FT_FLOAT));
2891 return (lookup_fundamental_type (objfile, FT_DBL_PREC_FLOAT));
2894 /* If the upper bound is -1, it must really be an unsigned int. */
2896 else if (n2 == 0 && n3 == -1)
2898 /* FIXME -- the only way to distinguish `unsigned int' from `unsigned
2899 long' is to look at its name! */
2901 long_kludge_name && ((long_kludge_name[0] == 'u' /* unsigned */ &&
2902 long_kludge_name[9] == 'l' /* long */)
2903 || (long_kludge_name[0] == 'l' /* long unsigned */)))
2904 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG));
2906 return (lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER));
2909 /* Special case: char is defined (Who knows why) as a subrange of
2910 itself with range 0-127. */
2911 else if (self_subrange && n2 == 0 && n3 == 127)
2912 return (lookup_fundamental_type (objfile, FT_CHAR));
2914 /* Assumptions made here: Subrange of self is equivalent to subrange
2915 of int. FIXME: Host and target type-sizes assumed the same. */
2916 /* FIXME: This is the *only* place in GDB that depends on comparing
2917 some type to a builtin type with ==. Fix it! */
2919 && (self_subrange ||
2920 *dbx_lookup_type (rangenums) == lookup_fundamental_type (objfile, FT_INTEGER)))
2922 /* an unsigned type */
2924 if (n3 == - sizeof (long long))
2925 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG_LONG));
2927 /* FIXME -- the only way to distinguish `unsigned int' from `unsigned
2928 long' is to look at its name! */
2929 if (n3 == (unsigned long)~0L &&
2930 long_kludge_name && ((long_kludge_name[0] == 'u' /* unsigned */ &&
2931 long_kludge_name[9] == 'l' /* long */)
2932 || (long_kludge_name[0] == 'l' /* long unsigned */)))
2933 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG));
2934 if (n3 == (unsigned int)~0L)
2935 return (lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER));
2936 if (n3 == (unsigned short)~0L)
2937 return (lookup_fundamental_type (objfile, FT_UNSIGNED_SHORT));
2938 if (n3 == (unsigned char)~0L)
2939 return (lookup_fundamental_type (objfile, FT_UNSIGNED_CHAR));
2942 else if (n3 == 0 && n2 == -sizeof (long long))
2943 return (lookup_fundamental_type (objfile, FT_LONG_LONG));
2945 else if (n2 == -n3 -1)
2948 /* FIXME -- the only way to distinguish `int' from `long' is to look
2950 if ((n3 ==(long)(((unsigned long)1 << (8 * sizeof (long) - 1)) - 1)) &&
2951 long_kludge_name && long_kludge_name[0] == 'l' /* long */)
2952 return (lookup_fundamental_type (objfile, FT_LONG));
2953 if (n3 == (long)(((unsigned long)1 << (8 * sizeof (int) - 1)) - 1))
2954 return (lookup_fundamental_type (objfile, FT_INTEGER));
2955 if (n3 == ( 1 << (8 * sizeof (short) - 1)) - 1)
2956 return (lookup_fundamental_type (objfile, FT_SHORT));
2957 if (n3 == ( 1 << (8 * sizeof (char) - 1)) - 1)
2958 return (lookup_fundamental_type (objfile, FT_SIGNED_CHAR));
2961 /* We have a real range type on our hands. Allocate space and
2962 return a real pointer. */
2964 /* At this point I don't have the faintest idea how to deal with
2965 a self_subrange type; I'm going to assume that this is used
2966 as an idiom, and that all of them are special cases. So . . . */
2968 return error_type (pp);
2970 index_type = *dbx_lookup_type (rangenums);
2971 if (index_type == NULL)
2973 complain (&range_type_base_complaint, rangenums[1]);
2974 index_type = lookup_fundamental_type (objfile, FT_INTEGER);
2977 result_type = create_range_type ((struct type *) NULL, index_type, n2, n3);
2978 return (result_type);
2981 /* Read a number from the string pointed to by *PP.
2982 The value of *PP is advanced over the number.
2983 If END is nonzero, the character that ends the
2984 number must match END, or an error happens;
2985 and that character is skipped if it does match.
2986 If END is zero, *PP is left pointing to that character. */
2989 read_number (pp, end)
2993 register char *p = *pp;
2994 register long n = 0;
2998 /* Handle an optional leading minus sign. */
3006 /* Read the digits, as far as they go. */
3008 while ((c = *p++) >= '0' && c <= '9')
3016 error ("Invalid symbol data: invalid character \\%03o at symbol pos %d.", c, symnum);
3025 /* Read in an argument list. This is a list of types, separated by commas
3026 and terminated with END. Return the list of types read in, or (struct type
3027 **)-1 if there is an error. */
3029 static struct type **
3030 read_args (pp, end, objfile)
3033 struct objfile *objfile;
3035 /* FIXME! Remove this arbitrary limit! */
3036 struct type *types[1024], **rval; /* allow for fns of 1023 parameters */
3042 /* Invalid argument list: no ','. */
3043 return (struct type **)-1;
3045 STABS_CONTINUE (pp);
3046 types[n++] = read_type (pp, objfile);
3048 (*pp)++; /* get past `end' (the ':' character) */
3052 rval = (struct type **) xmalloc (2 * sizeof (struct type *));
3054 else if (TYPE_CODE (types[n-1]) != TYPE_CODE_VOID)
3056 rval = (struct type **) xmalloc ((n + 1) * sizeof (struct type *));
3057 memset (rval + n, 0, sizeof (struct type *));
3061 rval = (struct type **) xmalloc (n * sizeof (struct type *));
3063 memcpy (rval, types, n * sizeof (struct type *));
3067 /* Add a common block's start address to the offset of each symbol
3068 declared to be in it (by being between a BCOMM/ECOMM pair that uses
3069 the common block name). */
3072 fix_common_block (sym, valu)
3076 struct pending *next = (struct pending *) SYMBOL_NAMESPACE (sym);
3077 for ( ; next; next = next->next)
3080 for (j = next->nsyms - 1; j >= 0; j--)
3081 SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
3087 /* What about types defined as forward references inside of a small lexical
3089 /* Add a type to the list of undefined types to be checked through
3090 once this file has been read in. */
3093 add_undefined_type (type)
3096 if (undef_types_length == undef_types_allocated)
3098 undef_types_allocated *= 2;
3099 undef_types = (struct type **)
3100 xrealloc ((char *) undef_types,
3101 undef_types_allocated * sizeof (struct type *));
3103 undef_types[undef_types_length++] = type;
3106 /* Go through each undefined type, see if it's still undefined, and fix it
3107 up if possible. We have two kinds of undefined types:
3109 TYPE_CODE_ARRAY: Array whose target type wasn't defined yet.
3110 Fix: update array length using the element bounds
3111 and the target type's length.
3112 TYPE_CODE_STRUCT, TYPE_CODE_UNION: Structure whose fields were not
3113 yet defined at the time a pointer to it was made.
3114 Fix: Do a full lookup on the struct/union tag. */
3116 cleanup_undefined_types ()
3120 for (type = undef_types; type < undef_types + undef_types_length; type++)
3122 switch (TYPE_CODE (*type))
3125 case TYPE_CODE_STRUCT:
3126 case TYPE_CODE_UNION:
3127 case TYPE_CODE_ENUM:
3129 /* Check if it has been defined since. */
3130 if (TYPE_FLAGS (*type) & TYPE_FLAG_STUB)
3132 struct pending *ppt;
3134 /* Name of the type, without "struct" or "union" */
3135 char *typename = TYPE_NAME (*type);
3137 if (!strncmp (typename, "struct ", 7))
3139 if (!strncmp (typename, "union ", 6))
3141 if (!strncmp (typename, "enum ", 5))
3144 for (ppt = file_symbols; ppt; ppt = ppt->next)
3146 for (i = 0; i < ppt->nsyms; i++)
3148 struct symbol *sym = ppt->symbol[i];
3150 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3151 && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
3152 && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
3154 && STREQ (SYMBOL_NAME (sym), typename))
3156 memcpy (*type, SYMBOL_TYPE (sym),
3157 sizeof (struct type));
3165 case TYPE_CODE_ARRAY:
3167 struct type *range_type;
3170 if (TYPE_LENGTH (*type) != 0) /* Better be unknown */
3172 if (TYPE_NFIELDS (*type) != 1)
3174 range_type = TYPE_FIELD_TYPE (*type, 0);
3175 if (TYPE_CODE (range_type) != TYPE_CODE_RANGE)
3178 /* Now recompute the length of the array type, based on its
3179 number of elements and the target type's length. */
3180 lower = TYPE_FIELD_BITPOS (range_type, 0);
3181 upper = TYPE_FIELD_BITPOS (range_type, 1);
3182 TYPE_LENGTH (*type) = (upper - lower + 1)
3183 * TYPE_LENGTH (TYPE_TARGET_TYPE (*type));
3189 error ("GDB internal error. cleanup_undefined_types with bad type %d.", TYPE_CODE (*type));
3193 undef_types_length = 0;
3196 /* Scan through all of the global symbols defined in the object file,
3197 assigning values to the debugging symbols that need to be assigned
3198 to. Get these symbols from the minimal symbol table. */
3201 scan_file_globals (objfile)
3202 struct objfile *objfile;
3205 struct minimal_symbol *msymbol;
3206 struct symbol *sym, *prev;
3208 if (objfile->msymbols == 0) /* Beware the null file. */
3211 for (msymbol = objfile -> msymbols; SYMBOL_NAME (msymbol) != NULL; msymbol++)
3217 /* Get the hash index and check all the symbols
3218 under that hash index. */
3220 hash = hashname (SYMBOL_NAME (msymbol));
3222 for (sym = global_sym_chain[hash]; sym;)
3224 if (SYMBOL_NAME (msymbol)[0] == SYMBOL_NAME (sym)[0] &&
3225 STREQ(SYMBOL_NAME (msymbol) + 1, SYMBOL_NAME (sym) + 1))
3227 /* Splice this symbol out of the hash chain and
3228 assign the value we have to it. */
3231 SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
3235 global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
3238 /* Check to see whether we need to fix up a common block. */
3239 /* Note: this code might be executed several times for
3240 the same symbol if there are multiple references. */
3242 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
3244 fix_common_block (sym, SYMBOL_VALUE_ADDRESS (msymbol));
3248 SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msymbol);
3253 sym = SYMBOL_VALUE_CHAIN (prev);
3257 sym = global_sym_chain[hash];
3263 sym = SYMBOL_VALUE_CHAIN (sym);
3269 /* Initialize anything that needs initializing when starting to read
3270 a fresh piece of a symbol file, e.g. reading in the stuff corresponding
3278 /* Initialize anything that needs initializing when a completely new
3279 symbol file is specified (not just adding some symbols from another
3280 file, e.g. a shared library). */
3283 stabsread_new_init ()
3285 /* Empty the hash table of global syms looking for values. */
3286 memset (global_sym_chain, 0, sizeof (global_sym_chain));
3289 /* Initialize anything that needs initializing at the same time as
3290 start_symtab() is called. */
3294 global_stabs = NULL; /* AIX COFF */
3295 /* Leave FILENUM of 0 free for builtin types and this file's types. */
3296 n_this_object_header_files = 1;
3297 type_vector_length = 0;
3298 type_vector = (struct type **) 0;
3301 /* Call after end_symtab() */
3307 free ((char *) type_vector);
3310 type_vector_length = 0;
3311 previous_stab_code = 0;
3315 finish_global_stabs (objfile)
3316 struct objfile *objfile;
3320 patch_block_stabs (global_symbols, global_stabs, objfile);
3321 free ((PTR) global_stabs);
3322 global_stabs = NULL;
3326 /* Initializer for this module */
3329 _initialize_stabsread ()
3331 undef_types_allocated = 20;
3332 undef_types_length = 0;
3333 undef_types = (struct type **)
3334 xmalloc (undef_types_allocated * sizeof (struct type *));