1 /* stabs.c -- Parse stabs debugging information
2 Copyright (C) 1995-2018 Free Software Foundation, Inc.
3 Written by Ian Lance Taylor <ian@cygnus.com>.
5 This file is part of GNU Binutils.
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.
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., 51 Franklin Street - Fifth Floor, Boston, MA
22 /* This file contains code which parses stabs debugging information.
23 The organization of this code is based on the gdb stabs reading
24 code. The job it does is somewhat different, because it is not
25 trying to identify the correct address for anything. */
29 #include "libiberty.h"
30 #include "safe-ctype.h"
34 #include "filenames.h"
35 #include "aout/aout64.h"
36 #include "aout/stab_gnu.h"
38 /* The number of predefined XCOFF types. */
40 #define XCOFF_TYPE_COUNT 34
42 /* This structure is used as a handle so that the stab parsing doesn't
43 need to use any static variables. */
49 /* TRUE if this is stabs in sections. */
51 /* The symbol table. */
53 /* The number of symbols. */
55 /* The accumulated file name string. */
57 /* The value of the last N_SO symbol. */
59 /* The value of the start of the file, so that we can handle file
60 relative N_LBRAC and N_RBRAC symbols. */
61 bfd_vma file_start_offset;
62 /* The offset of the start of the function, so that we can handle
63 function relative N_LBRAC and N_RBRAC symbols. */
64 bfd_vma function_start_offset;
65 /* The version number of gcc which compiled the current compilation
66 unit, 0 if not compiled by gcc. */
68 /* Whether an N_OPT symbol was seen that was not generated by gcc,
69 so that we can detect the SunPRO compiler. */
70 bfd_boolean n_opt_found;
71 /* The main file name. */
73 /* A stack of unfinished N_BINCL files. */
74 struct bincl_file *bincl_stack;
75 /* A list of finished N_BINCL files. */
76 struct bincl_file *bincl_list;
77 /* Whether we are inside a function or not. */
78 bfd_boolean within_function;
79 /* The address of the end of the function, used if we have seen an
80 N_FUN symbol while in a function. This is -1 if we have not seen
81 an N_FUN (the normal case). */
83 /* The depth of block nesting. */
85 /* List of pending variable definitions. */
86 struct stab_pending_var *pending;
87 /* Number of files for which we have types. */
89 /* Lists of types per file. */
90 struct stab_types **file_types;
91 /* Predefined XCOFF types. */
92 debug_type xcoff_types[XCOFF_TYPE_COUNT];
94 struct stab_tag *tags;
95 /* Set by parse_stab_type if it sees a structure defined as a cross
96 reference to itself. Reset by parse_stab_type otherwise. */
97 bfd_boolean self_crossref;
100 /* A list of these structures is used to hold pending variable
101 definitions seen before the N_LBRAC of a block. */
103 struct stab_pending_var
105 /* Next pending variable definition. */
106 struct stab_pending_var *next;
112 enum debug_var_kind kind;
117 /* A list of these structures is used to hold the types for a single
122 /* Next set of slots for this file. */
123 struct stab_types *next;
124 /* Types indexed by type number. */
125 #define STAB_TYPES_SLOTS (16)
126 debug_type types[STAB_TYPES_SLOTS];
129 /* We keep a list of undefined tags that we encounter, so that we can
130 fill them in if the tag is later defined. */
134 /* Next undefined tag. */
135 struct stab_tag *next;
139 enum debug_type_kind kind;
140 /* Slot to hold real type when we discover it. If we don't, we fill
141 in an undefined tag type. */
143 /* Indirect type we have created to point at slot. */
147 static char *savestring (const char *, int);
149 static void bad_stab (const char *);
150 static void warn_stab (const char *, const char *);
151 static bfd_boolean parse_stab_string
152 (void *, struct stab_handle *, int, int, bfd_vma,
153 const char *, const char *);
154 static debug_type parse_stab_type
155 (void *, struct stab_handle *, const char *, const char **,
156 debug_type **, const char *);
157 static bfd_boolean parse_stab_type_number
158 (const char **, int *, const char *);
159 static debug_type parse_stab_range_type
160 (void *, struct stab_handle *, const char *, const char **,
161 const int *, const char *);
162 static debug_type parse_stab_sun_builtin_type
163 (void *, const char **, const char *);
164 static debug_type parse_stab_sun_floating_type
165 (void *, const char **, const char *);
166 static debug_type parse_stab_enum_type
167 (void *, const char **, const char *);
168 static debug_type parse_stab_struct_type
169 (void *, struct stab_handle *, const char *, const char **,
170 bfd_boolean, const int *, const char *);
171 static bfd_boolean parse_stab_baseclasses
172 (void *, struct stab_handle *, const char **, debug_baseclass **,
174 static bfd_boolean parse_stab_struct_fields
175 (void *, struct stab_handle *, const char **, debug_field **,
176 bfd_boolean *, const char *);
177 static bfd_boolean parse_stab_cpp_abbrev
178 (void *, struct stab_handle *, const char **, debug_field *, const char *);
179 static bfd_boolean parse_stab_one_struct_field
180 (void *, struct stab_handle *, const char **, const char *,
181 debug_field *, bfd_boolean *, const char *);
182 static bfd_boolean parse_stab_members
183 (void *, struct stab_handle *, const char *, const char **, const int *,
184 debug_method **, const char *);
185 static debug_type parse_stab_argtypes
186 (void *, struct stab_handle *, debug_type, const char *, const char *,
187 debug_type, const char *, bfd_boolean, bfd_boolean, const char **);
188 static bfd_boolean parse_stab_tilde_field
189 (void *, struct stab_handle *, const char **, const int *, debug_type *,
190 bfd_boolean *, const char *);
191 static debug_type parse_stab_array_type
192 (void *, struct stab_handle *, const char **, bfd_boolean, const char *);
193 static void push_bincl (struct stab_handle *, const char *, bfd_vma);
194 static const char *pop_bincl (struct stab_handle *);
195 static bfd_boolean find_excl (struct stab_handle *, const char *, bfd_vma);
196 static bfd_boolean stab_record_variable
197 (void *, struct stab_handle *, const char *, debug_type,
198 enum debug_var_kind, bfd_vma);
199 static bfd_boolean stab_emit_pending_vars (void *, struct stab_handle *);
200 static debug_type *stab_find_slot (struct stab_handle *, const int *);
201 static debug_type stab_find_type (void *, struct stab_handle *, const int *);
202 static bfd_boolean stab_record_type
203 (void *, struct stab_handle *, const int *, debug_type);
204 static debug_type stab_xcoff_builtin_type
205 (void *, struct stab_handle *, int);
206 static debug_type stab_find_tagged_type
207 (void *, struct stab_handle *, const char *, int, enum debug_type_kind);
208 static debug_type *stab_demangle_argtypes
209 (void *, struct stab_handle *, const char *, bfd_boolean *, unsigned int);
210 static debug_type *stab_demangle_v3_argtypes
211 (void *, struct stab_handle *, const char *, bfd_boolean *);
212 static debug_type *stab_demangle_v3_arglist
213 (void *, struct stab_handle *, struct demangle_component *, bfd_boolean *);
214 static debug_type stab_demangle_v3_arg
215 (void *, struct stab_handle *, struct demangle_component *, debug_type,
218 /* Save a string in memory. */
221 savestring (const char *start, int len)
225 ret = (char *) xmalloc (len + 1);
226 memcpy (ret, start, len);
231 /* Read a number from a string. */
234 parse_number (const char **pp, bfd_boolean *poverflow, const char *p_end)
239 if (poverflow != NULL)
246 /* Stop early if we are passed an empty string. */
251 ul = strtoul (*pp, (char **) pp, 0);
252 if (ul + 1 != 0 || errno == 0)
254 /* If bfd_vma is larger than unsigned long, and the number is
255 meant to be negative, we have to make sure that we sign
258 return (bfd_vma) (bfd_signed_vma) (long) ul;
262 /* Note that even though strtoul overflowed, it should have set *pp
263 to the end of the number, which is where we want it. */
264 if (sizeof (bfd_vma) > sizeof (unsigned long))
269 bfd_vma over, lastdig;
270 bfd_boolean overflow;
273 /* Our own version of strtoul, for a bfd_vma. */
288 if (p[1] == 'x' || p[1] == 'X')
300 over = ((bfd_vma) (bfd_signed_vma) -1) / (bfd_vma) base;
301 lastdig = ((bfd_vma) (bfd_signed_vma) -1) % (bfd_vma) base;
312 else if (ISUPPER (d))
314 else if (ISLOWER (d))
322 if (v > over || (v == over && (bfd_vma) d > lastdig))
337 /* If we get here, the number is too large to represent in a
339 if (poverflow != NULL)
342 warn_stab (orig, _("numeric overflow"));
347 /* Give an error for a bad stab string. */
350 bad_stab (const char *p)
352 fprintf (stderr, _("Bad stab: %s\n"), p);
355 /* Warn about something in a stab string. */
358 warn_stab (const char *p, const char *err)
360 fprintf (stderr, _("Warning: %s: %s\n"), err, p);
363 /* Create a handle to parse stabs symbols with. */
366 start_stab (void *dhandle ATTRIBUTE_UNUSED, bfd *abfd, bfd_boolean sections,
367 asymbol **syms, long symcount)
369 struct stab_handle *ret;
371 ret = (struct stab_handle *) xmalloc (sizeof *ret);
372 memset (ret, 0, sizeof *ret);
374 ret->sections = sections;
376 ret->symcount = symcount;
378 ret->file_types = (struct stab_types **) xmalloc (sizeof *ret->file_types);
379 ret->file_types[0] = NULL;
380 ret->function_end = (bfd_vma) -1;
384 /* When we have processed all the stabs information, we need to go
385 through and fill in all the undefined tags. */
388 finish_stab (void *dhandle, void *handle)
390 struct stab_handle *info = (struct stab_handle *) handle;
393 if (info->within_function)
395 if (! stab_emit_pending_vars (dhandle, info)
396 || ! debug_end_function (dhandle, info->function_end))
398 info->within_function = FALSE;
399 info->function_end = (bfd_vma) -1;
402 for (st = info->tags; st != NULL; st = st->next)
404 enum debug_type_kind kind;
407 if (kind == DEBUG_KIND_ILLEGAL)
408 kind = DEBUG_KIND_STRUCT;
409 st->slot = debug_make_undefined_tagged_type (dhandle, st->name, kind);
410 if (st->slot == DEBUG_TYPE_NULL)
417 /* Handle a single stabs symbol. */
420 parse_stab (void *dhandle, void *handle, int type, int desc, bfd_vma value,
423 const char * string_end;
424 struct stab_handle *info = (struct stab_handle *) handle;
426 /* gcc will emit two N_SO strings per compilation unit, one for the
427 directory name and one for the file name. We just collect N_SO
428 strings as we see them, and start the new compilation unit when
429 we see a non N_SO symbol. */
430 if (info->so_string != NULL
431 && (type != N_SO || *string == '\0' || value != info->so_value))
433 if (! debug_set_filename (dhandle, info->so_string))
435 info->main_filename = info->so_string;
437 info->gcc_compiled = 0;
438 info->n_opt_found = FALSE;
440 /* Generally, for stabs in the symbol table, the N_LBRAC and
441 N_RBRAC symbols are relative to the N_SO symbol value. */
442 if (! info->sections)
443 info->file_start_offset = info->so_value;
445 /* We need to reset the mapping from type numbers to types. We
446 can't free the old mapping, because of the use of
447 debug_make_indirect_type. */
449 info->file_types = ((struct stab_types **)
450 xmalloc (sizeof *info->file_types));
451 info->file_types[0] = NULL;
452 info->so_string = NULL;
454 /* Now process whatever type we just got. */
457 string_end = string + strlen (string);
466 /* Ignore extra outermost context from SunPRO cc and acc. */
467 if (info->n_opt_found && desc == 1)
470 if (! info->within_function)
472 fprintf (stderr, _("N_LBRAC not within function\n"));
476 /* Start an inner lexical block. */
477 if (! debug_start_block (dhandle,
479 + info->file_start_offset
480 + info->function_start_offset)))
483 /* Emit any pending variable definitions. */
484 if (! stab_emit_pending_vars (dhandle, info))
491 /* Ignore extra outermost context from SunPRO cc and acc. */
492 if (info->n_opt_found && desc == 1)
495 /* We shouldn't have any pending variable definitions here, but,
496 if we do, we probably need to emit them before closing the
498 if (! stab_emit_pending_vars (dhandle, info))
501 /* End an inner lexical block. */
502 if (! debug_end_block (dhandle,
504 + info->file_start_offset
505 + info->function_start_offset)))
509 if (info->block_depth < 0)
511 fprintf (stderr, _("Too many N_RBRACs\n"));
517 /* This always ends a function. */
518 if (info->within_function)
524 && info->function_end != (bfd_vma) -1
525 && info->function_end < endval)
526 endval = info->function_end;
527 if (! stab_emit_pending_vars (dhandle, info)
528 || ! debug_end_function (dhandle, endval))
530 info->within_function = FALSE;
531 info->function_end = (bfd_vma) -1;
534 /* An empty string is emitted by gcc at the end of a compilation
539 /* Just accumulate strings until we see a non N_SO symbol. If
540 the string starts with a directory separator or some other
541 form of absolute path specification, we discard the previously
542 accumulated strings. */
543 if (info->so_string == NULL)
544 info->so_string = xstrdup (string);
551 if (IS_ABSOLUTE_PATH (string))
552 info->so_string = xstrdup (string);
554 info->so_string = concat (info->so_string, string,
555 (const char *) NULL);
559 info->so_value = value;
564 /* Start an include file. */
565 if (! debug_start_source (dhandle, string))
570 /* Start an include file which may be replaced. */
571 push_bincl (info, string, value);
572 if (! debug_start_source (dhandle, string))
577 /* End an N_BINCL include. */
578 if (! debug_start_source (dhandle, pop_bincl (info)))
583 /* This is a duplicate of a header file named by N_BINCL which
584 was eliminated by the linker. */
585 if (! find_excl (info, string, value))
590 if (! debug_record_line (dhandle, desc,
591 value + (info->within_function
592 ? info->function_start_offset : 0)))
597 if (! debug_start_common_block (dhandle, string))
602 if (! debug_end_common_block (dhandle, string))
609 if (info->within_function)
611 /* This always marks the end of a function; we don't
612 need to worry about info->function_end. */
614 value += info->function_start_offset;
615 if (! stab_emit_pending_vars (dhandle, info)
616 || ! debug_end_function (dhandle, value))
618 info->within_function = FALSE;
619 info->function_end = (bfd_vma) -1;
624 /* A const static symbol in the .text section will have an N_FUN
625 entry. We need to use these to mark the end of the function,
626 in case we are looking at gcc output before it was changed to
627 always emit an empty N_FUN. We can't call debug_end_function
628 here, because it might be a local static symbol. */
629 if (info->within_function
630 && (info->function_end == (bfd_vma) -1
631 || value < info->function_end))
632 info->function_end = value;
635 /* FIXME: gdb checks the string for N_STSYM, N_LCSYM or N_ROSYM
636 symbols, and if it does not start with :S, gdb relocates the
637 value to the start of the section. gcc always seems to use
638 :S, so we don't worry about this. */
644 colon = strchr (string, ':');
646 && (colon[1] == 'f' || colon[1] == 'F'))
648 if (info->within_function)
653 if (info->function_end != (bfd_vma) -1
654 && info->function_end < endval)
655 endval = info->function_end;
656 if (! stab_emit_pending_vars (dhandle, info)
657 || ! debug_end_function (dhandle, endval))
659 info->function_end = (bfd_vma) -1;
661 /* For stabs in sections, line numbers and block addresses
662 are offsets from the start of the function. */
664 info->function_start_offset = value;
665 info->within_function = TRUE;
668 if (! parse_stab_string (dhandle, info, type, desc, value, string, string_end))
674 if (string != NULL && strcmp (string, "gcc2_compiled.") == 0)
675 info->gcc_compiled = 2;
676 else if (string != NULL && strcmp (string, "gcc_compiled.") == 0)
677 info->gcc_compiled = 1;
679 info->n_opt_found = TRUE;
692 /* Parse the stabs string. */
695 parse_stab_string (void *dhandle, struct stab_handle *info, int stabtype,
696 int desc ATTRIBUTE_UNUSED, bfd_vma value,
697 const char *string, const char * string_end)
704 bfd_boolean self_crossref;
707 p = strchr (string, ':');
722 /* FIXME: Sometimes the special C++ names start with '.'. */
724 if (string[0] == '$')
732 /* Was: name = "vptr"; */
738 /* This was an anonymous type that was never fixed up. */
741 /* SunPRO (3.0 at least) static variable encoding. */
744 warn_stab (string, _("unknown C++ encoded name"));
751 if (p == string || (string[0] == ' ' && p == string + 1))
754 name = savestring (string, p - string);
758 if (ISDIGIT (*p) || *p == '(' || *p == '-')
771 /* c is a special case, not followed by a type-number.
772 SYMBOL:c=iVALUE for an integer constant symbol.
773 SYMBOL:c=rVALUE for a floating constant symbol.
774 SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
775 e.g. "b:c=e6,0" for "const b = blob1"
776 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
786 /* Floating point constant. */
787 if (! debug_record_float_const (dhandle, name, atof (p)))
791 /* Integer constant. */
792 /* Defining integer constants this way is kind of silly,
793 since 'e' constants allows the compiler to give not only
794 the value, but the type as well. C has at least int,
795 long, unsigned int, and long long as constant types;
796 other languages probably should have at least unsigned as
797 well as signed constants. */
798 if (! debug_record_int_const (dhandle, name, atoi (p)))
802 /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
803 can be represented as integral.
804 e.g. "b:c=e6,0" for "const b = blob1"
805 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
806 dtype = parse_stab_type (dhandle, info, (const char *) NULL,
807 &p, (debug_type **) NULL, string_end);
808 if (dtype == DEBUG_TYPE_NULL)
815 if (! debug_record_typed_const (dhandle, name, dtype, atoi (p)))
826 /* The name of a caught exception. */
827 dtype = parse_stab_type (dhandle, info, (const char *) NULL,
828 &p, (debug_type **) NULL, string_end);
829 if (dtype == DEBUG_TYPE_NULL)
831 if (! debug_record_label (dhandle, name, dtype, value))
837 /* A function definition. */
838 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
839 (debug_type **) NULL, string_end);
840 if (dtype == DEBUG_TYPE_NULL)
842 if (! debug_record_function (dhandle, name, dtype, type == 'F', value))
845 /* Sun acc puts declared types of arguments here. We don't care
846 about their actual types (FIXME -- we should remember the whole
847 function prototype), but the list may define some new types
848 that we have to remember, so we must scan it now. */
852 if (parse_stab_type (dhandle, info, (const char *) NULL, &p,
853 (debug_type **) NULL, string_end)
864 /* A global symbol. The value must be extracted from the
866 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
867 (debug_type **) NULL, string_end);
868 if (dtype == DEBUG_TYPE_NULL)
875 leading = bfd_get_symbol_leading_char (info->abfd);
876 for (c = info->symcount, ps = info->syms; c > 0; --c, ++ps)
880 n = bfd_asymbol_name (*ps);
881 if (leading != '\0' && *n == leading)
883 if (*n == *name && strcmp (n, name) == 0)
888 value = bfd_asymbol_value (*ps);
891 if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_GLOBAL,
897 /* This case is faked by a conditional above, when there is no
898 code letter in the dbx data. Dbx data never actually
902 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
903 (debug_type **) NULL, string_end);
904 if (dtype == DEBUG_TYPE_NULL)
906 if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_LOCAL,
912 /* A function parameter. */
914 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
915 (debug_type **) NULL, string_end);
918 /* pF is a two-letter code that means a function parameter in
919 Fortran. The type-number specifies the type of the return
920 value. Translate it into a pointer-to-function type. */
922 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
923 (debug_type **) NULL, string_end);
924 if (dtype != DEBUG_TYPE_NULL)
928 ftype = debug_make_function_type (dhandle, dtype,
929 (debug_type *) NULL, FALSE);
930 dtype = debug_make_pointer_type (dhandle, ftype);
933 if (dtype == DEBUG_TYPE_NULL)
935 if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_STACK,
939 /* FIXME: At this point gdb considers rearranging the parameter
940 address on a big endian machine if it is smaller than an int.
941 We have no way to do that, since we don't really know much
946 if (stabtype == N_FUN)
948 /* Prototype of a function referenced by this file. */
952 if (parse_stab_type (dhandle, info, (const char *) NULL, &p,
953 (debug_type **) NULL, string_end)
961 /* Parameter which is in a register. */
962 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
963 (debug_type **) NULL, string_end);
964 if (dtype == DEBUG_TYPE_NULL)
966 if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_REG,
972 /* Register variable (either global or local). */
973 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
974 (debug_type **) NULL, string_end);
975 if (dtype == DEBUG_TYPE_NULL)
977 if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_REGISTER,
981 /* FIXME: At this point gdb checks to combine pairs of 'p' and
982 'r' stabs into a single 'P' stab. */
986 /* Static symbol at top level of file. */
987 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
988 (debug_type **) NULL, string_end);
989 if (dtype == DEBUG_TYPE_NULL)
991 if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_STATIC,
998 dtype = parse_stab_type (dhandle, info, name, &p, &slot, string_end);
999 if (dtype == DEBUG_TYPE_NULL)
1003 /* A nameless type. Nothing to do. */
1007 dtype = debug_name_type (dhandle, name, dtype);
1008 if (dtype == DEBUG_TYPE_NULL)
1017 /* Struct, union, or enum tag. For GNU C++, this can be followed
1018 by 't' which means we are typedef'ing it as well. */
1022 /* FIXME: gdb sets synonym to TRUE if the current language
1031 dtype = parse_stab_type (dhandle, info, name, &p, &slot, string_end);
1032 if (dtype == DEBUG_TYPE_NULL)
1037 /* INFO->SELF_CROSSREF is set by parse_stab_type if this type is
1038 a cross reference to itself. These are generated by some
1040 self_crossref = info->self_crossref;
1042 dtype = debug_tag_type (dhandle, name, dtype);
1043 if (dtype == DEBUG_TYPE_NULL)
1048 /* See if we have a cross reference to this tag which we can now
1049 fill in. Avoid filling in a cross reference to ourselves,
1050 because that would lead to circular debugging information. */
1051 if (! self_crossref)
1053 register struct stab_tag **pst;
1055 for (pst = &info->tags; *pst != NULL; pst = &(*pst)->next)
1057 if ((*pst)->name[0] == name[0]
1058 && strcmp ((*pst)->name, name) == 0)
1060 (*pst)->slot = dtype;
1061 *pst = (*pst)->next;
1069 dtype = debug_name_type (dhandle, name, dtype);
1070 if (dtype == DEBUG_TYPE_NULL)
1080 /* Static symbol of local scope */
1081 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
1082 (debug_type **) NULL, string_end);
1083 if (dtype == DEBUG_TYPE_NULL)
1085 /* FIXME: gdb checks os9k_stabs here. */
1086 if (! stab_record_variable (dhandle, info, name, dtype,
1087 DEBUG_LOCAL_STATIC, value))
1092 /* Reference parameter. */
1093 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
1094 (debug_type **) NULL, string_end);
1095 if (dtype == DEBUG_TYPE_NULL)
1097 if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_REFERENCE,
1103 /* Reference parameter which is in a register. */
1104 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
1105 (debug_type **) NULL, string_end);
1106 if (dtype == DEBUG_TYPE_NULL)
1108 if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_REF_REG,
1114 /* This is used by Sun FORTRAN for "function result value".
1115 Sun claims ("dbx and dbxtool interfaces", 2nd ed)
1116 that Pascal uses it too, but when I tried it Pascal used
1117 "x:3" (local symbol) instead. */
1118 dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
1119 (debug_type **) NULL, string_end);
1120 if (dtype == DEBUG_TYPE_NULL)
1122 if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_LOCAL,
1128 /* SUNPro C++ Namespace =Yn0. */
1129 /* Skip the namespace mapping, as it is not used now. */
1130 if (*(++p) == 'n' && *(++p) == '0')
1138 /* TODO SUNPro C++ support:
1139 Support default arguments after F,P parameters
1140 Ya = Anonymous unions
1141 YM,YD = Pointers to class members
1143 YR = Run-time type information (RTTI) */
1152 /* FIXME: gdb converts structure values to structure pointers in a
1153 couple of cases, depending upon the target. */
1158 /* Parse a stabs type. The typename argument is non-NULL if this is a
1159 typedef or a tag definition. The pp argument points to the stab
1160 string, and is updated. The slotp argument points to a place to
1161 store the slot used if the type is being defined. */
1164 parse_stab_type (void * dhandle,
1165 struct stab_handle * info,
1166 const char * type_name,
1168 debug_type ** slotp,
1174 bfd_boolean stringp;
1183 return DEBUG_TYPE_NULL;
1188 info->self_crossref = FALSE;
1190 /* Read type number if present. The type number may be omitted.
1191 for instance in a two-dimensional array declared with type
1192 "ar1;1;10;ar1;1;10;4". */
1193 if (! ISDIGIT (**pp) && **pp != '(' && **pp != '-')
1195 /* 'typenums=' not present, type is anonymous. Read and return
1196 the definition, but don't put it in the type vector. */
1197 typenums[0] = typenums[1] = -1;
1201 if (! parse_stab_type_number (pp, typenums, p_end))
1202 return DEBUG_TYPE_NULL;
1205 /* Type is not being defined here. Either it already
1206 exists, or this is a forward reference to it. */
1207 return stab_find_type (dhandle, info, typenums);
1209 /* Only set the slot if the type is being defined. This means
1210 that the mapping from type numbers to types will only record
1211 the name of the typedef which defines a type. If we don't do
1212 this, then something like
1215 will record that i is of type foo. Unfortunately, stabs
1216 information is ambiguous about variable types. For this code,
1220 the stabs information records both i and j as having the same
1221 type. This could be fixed by patching the compiler. */
1222 if (slotp != NULL && typenums[0] >= 0 && typenums[1] >= 0)
1223 *slotp = stab_find_slot (info, typenums);
1225 /* Type is being defined here. */
1231 const char *p = *pp + 1;
1234 if (ISDIGIT (*p) || *p == '(' || *p == '-')
1238 /* Type attributes. */
1241 for (; *p != ';'; ++p)
1246 return DEBUG_TYPE_NULL;
1254 size = atoi (attr + 1);
1255 size /= 8; /* Size is in bits. We store it in bytes. */
1266 return DEBUG_TYPE_NULL;
1269 /* Ignore unrecognized type attributes, so future
1270 compilers can invent new ones. */
1283 enum debug_type_kind code;
1284 const char *q1, *q2, *p;
1286 /* A cross reference to another type. */
1290 code = DEBUG_KIND_STRUCT;
1293 code = DEBUG_KIND_UNION;
1296 code = DEBUG_KIND_ENUM;
1300 return DEBUG_TYPE_NULL;
1303 /* Complain and keep going, so compilers can invent new
1304 cross-reference types. */
1305 warn_stab (orig, _("unrecognized cross reference type"));
1306 code = DEBUG_KIND_STRUCT;
1311 q1 = strchr (*pp, '<');
1312 p = strchr (*pp, ':');
1316 return DEBUG_TYPE_NULL;
1318 if (q1 != NULL && p > q1 && p[1] == ':')
1322 for (q2 = q1; *q2 != '\0'; ++q2)
1326 else if (*q2 == '>')
1328 else if (*q2 == ':' && nest == 0)
1335 return DEBUG_TYPE_NULL;
1339 /* Some versions of g++ can emit stabs like
1341 which define structures in terms of themselves. We need to
1342 tell the caller to avoid building a circular structure. */
1343 if (type_name != NULL
1344 && strncmp (type_name, *pp, p - *pp) == 0
1345 && type_name[p - *pp] == '\0')
1346 info->self_crossref = TRUE;
1348 dtype = stab_find_tagged_type (dhandle, info, *pp, p - *pp, code);
1370 /* This type is defined as another type. */
1374 /* Peek ahead at the number to detect void. */
1375 if (! parse_stab_type_number (pp, xtypenums, p_end))
1376 return DEBUG_TYPE_NULL;
1378 if (typenums[0] == xtypenums[0] && typenums[1] == xtypenums[1])
1380 /* This type is being defined as itself, which means that
1382 dtype = debug_make_void_type (dhandle);
1388 /* Go back to the number and have parse_stab_type get it.
1389 This means that we can deal with something like
1390 t(1,2)=(3,4)=... which the Lucid compiler uses. */
1391 dtype = parse_stab_type (dhandle, info, (const char *) NULL,
1392 pp, (debug_type **) NULL, p_end);
1393 if (dtype == DEBUG_TYPE_NULL)
1394 return DEBUG_TYPE_NULL;
1397 if (typenums[0] != -1)
1399 if (! stab_record_type (dhandle, info, typenums, dtype))
1400 return DEBUG_TYPE_NULL;
1407 dtype = debug_make_pointer_type (dhandle,
1408 parse_stab_type (dhandle, info,
1409 (const char *) NULL,
1411 (debug_type **) NULL,
1416 /* Reference to another type. */
1417 dtype = (debug_make_reference_type
1419 parse_stab_type (dhandle, info, (const char *) NULL, pp,
1420 (debug_type **) NULL, p_end)));
1424 /* Function returning another type. */
1425 /* FIXME: gdb checks os9k_stabs here. */
1426 dtype = (debug_make_function_type
1428 parse_stab_type (dhandle, info, (const char *) NULL, pp,
1429 (debug_type **) NULL, p_end),
1430 (debug_type *) NULL, FALSE));
1434 /* Const qualifier on some type (Sun). */
1435 /* FIXME: gdb accepts 'c' here if os9k_stabs. */
1436 dtype = debug_make_const_type (dhandle,
1437 parse_stab_type (dhandle, info,
1438 (const char *) NULL,
1440 (debug_type **) NULL,
1445 /* Volatile qual on some type (Sun). */
1446 /* FIXME: gdb accepts 'i' here if os9k_stabs. */
1447 dtype = (debug_make_volatile_type
1449 parse_stab_type (dhandle, info, (const char *) NULL, pp,
1450 (debug_type **) NULL, p_end)));
1454 /* Offset (class & variable) type. This is used for a pointer
1455 relative to an object. */
1462 domain = parse_stab_type (dhandle, info, (const char *) NULL, pp,
1463 (debug_type **) NULL, p_end);
1464 if (domain == DEBUG_TYPE_NULL)
1465 return DEBUG_TYPE_NULL;
1470 return DEBUG_TYPE_NULL;
1474 memtype = parse_stab_type (dhandle, info, (const char *) NULL, pp,
1475 (debug_type **) NULL, p_end);
1476 if (memtype == DEBUG_TYPE_NULL)
1477 return DEBUG_TYPE_NULL;
1479 dtype = debug_make_offset_type (dhandle, domain, memtype);
1484 /* Method (class & fn) type. */
1487 debug_type return_type;
1490 return_type = parse_stab_type (dhandle, info, (const char *) NULL,
1491 pp, (debug_type **) NULL, p_end);
1492 if (return_type == DEBUG_TYPE_NULL)
1493 return DEBUG_TYPE_NULL;
1497 return DEBUG_TYPE_NULL;
1500 dtype = debug_make_method_type (dhandle, return_type,
1502 (debug_type *) NULL, FALSE);
1507 debug_type return_type;
1511 bfd_boolean varargs;
1513 domain = parse_stab_type (dhandle, info, (const char *) NULL,
1514 pp, (debug_type **) NULL, p_end);
1515 if (domain == DEBUG_TYPE_NULL)
1516 return DEBUG_TYPE_NULL;
1521 return DEBUG_TYPE_NULL;
1525 return_type = parse_stab_type (dhandle, info, (const char *) NULL,
1526 pp, (debug_type **) NULL, p_end);
1527 if (return_type == DEBUG_TYPE_NULL)
1528 return DEBUG_TYPE_NULL;
1531 args = (debug_type *) xmalloc (alloc * sizeof *args);
1538 return DEBUG_TYPE_NULL;
1545 args = ((debug_type *)
1546 xrealloc (args, alloc * sizeof *args));
1549 args[n] = parse_stab_type (dhandle, info, (const char *) NULL,
1550 pp, (debug_type **) NULL, p_end);
1551 if (args[n] == DEBUG_TYPE_NULL)
1552 return DEBUG_TYPE_NULL;
1557 /* If the last type is not void, then this function takes a
1558 variable number of arguments. Otherwise, we must strip
1561 || debug_get_type_kind (dhandle, args[n - 1]) != DEBUG_KIND_VOID)
1569 args[n] = DEBUG_TYPE_NULL;
1571 dtype = debug_make_method_type (dhandle, return_type, domain, args,
1578 dtype = parse_stab_range_type (dhandle, info, type_name, pp, typenums, p_end);
1582 /* FIXME: gdb checks os9k_stabs here. */
1583 /* Sun ACC builtin int type. */
1584 dtype = parse_stab_sun_builtin_type (dhandle, pp, p_end);
1588 /* Sun ACC builtin float type. */
1589 dtype = parse_stab_sun_floating_type (dhandle, pp, p_end);
1593 /* Enumeration type. */
1594 dtype = parse_stab_enum_type (dhandle, pp, p_end);
1599 /* Struct or union type. */
1600 dtype = parse_stab_struct_type (dhandle, info, type_name, pp,
1601 descriptor == 's', typenums, p_end);
1609 return DEBUG_TYPE_NULL;
1613 dtype = parse_stab_array_type (dhandle, info, pp, stringp, p_end);
1617 dtype = debug_make_set_type (dhandle,
1618 parse_stab_type (dhandle, info,
1619 (const char *) NULL,
1621 (debug_type **) NULL,
1628 return DEBUG_TYPE_NULL;
1631 if (dtype == DEBUG_TYPE_NULL)
1632 return DEBUG_TYPE_NULL;
1634 if (typenums[0] != -1)
1636 if (! stab_record_type (dhandle, info, typenums, dtype))
1637 return DEBUG_TYPE_NULL;
1642 if (! debug_record_type_size (dhandle, dtype, (unsigned int) size))
1643 return DEBUG_TYPE_NULL;
1649 /* Read a number by which a type is referred to in dbx data, or
1650 perhaps read a pair (FILENUM, TYPENUM) in parentheses. Just a
1651 single number N is equivalent to (0,N). Return the two numbers by
1652 storing them in the vector TYPENUMS. */
1655 parse_stab_type_number (const char **pp, int *typenums, const char *p_end)
1664 typenums[1] = (int) parse_number (pp, (bfd_boolean *) NULL, p_end);
1669 typenums[0] = (int) parse_number (pp, (bfd_boolean *) NULL, p_end);
1677 typenums[1] = (int) parse_number (pp, (bfd_boolean *) NULL, p_end);
1688 /* Parse a range type. */
1691 parse_stab_range_type (void * dhandle,
1692 struct stab_handle * info,
1693 const char * type_name,
1695 const int * typenums,
1700 bfd_boolean self_subrange;
1701 debug_type index_type;
1702 const char *s2, *s3;
1703 bfd_signed_vma n2, n3;
1704 bfd_boolean ov2, ov3;
1708 return DEBUG_TYPE_NULL;
1710 index_type = DEBUG_TYPE_NULL;
1712 /* First comes a type we are a subrange of.
1713 In C it is usually 0, 1 or the type being defined. */
1714 if (! parse_stab_type_number (pp, rangenums, p_end))
1715 return DEBUG_TYPE_NULL;
1717 self_subrange = (rangenums[0] == typenums[0]
1718 && rangenums[1] == typenums[1]);
1723 index_type = parse_stab_type (dhandle, info, (const char *) NULL,
1724 pp, (debug_type **) NULL, p_end);
1725 if (index_type == DEBUG_TYPE_NULL)
1726 return DEBUG_TYPE_NULL;
1732 /* The remaining two operands are usually lower and upper bounds of
1733 the range. But in some special cases they mean something else. */
1735 n2 = parse_number (pp, &ov2, p_end);
1739 return DEBUG_TYPE_NULL;
1744 n3 = parse_number (pp, &ov3, p_end);
1748 return DEBUG_TYPE_NULL;
1754 /* gcc will emit range stabs for long long types. Handle this
1755 as a special case. FIXME: This needs to be more general. */
1756 #define LLLOW "01000000000000000000000;"
1757 #define LLHIGH "0777777777777777777777;"
1758 #define ULLHIGH "01777777777777777777777;"
1759 if (index_type == DEBUG_TYPE_NULL)
1761 if (CONST_STRNEQ (s2, LLLOW)
1762 && CONST_STRNEQ (s3, LLHIGH))
1763 return debug_make_int_type (dhandle, 8, FALSE);
1766 && CONST_STRNEQ (s3, ULLHIGH))
1767 return debug_make_int_type (dhandle, 8, TRUE);
1770 warn_stab (orig, _("numeric overflow"));
1773 if (index_type == DEBUG_TYPE_NULL)
1775 /* A type defined as a subrange of itself, with both bounds 0,
1777 if (self_subrange && n2 == 0 && n3 == 0)
1778 return debug_make_void_type (dhandle);
1780 /* A type defined as a subrange of itself, with n2 positive and
1781 n3 zero, is a complex type, and n2 is the number of bytes. */
1782 if (self_subrange && n3 == 0 && n2 > 0)
1783 return debug_make_complex_type (dhandle, n2);
1785 /* If n3 is zero and n2 is positive, this is a floating point
1786 type, and n2 is the number of bytes. */
1787 if (n3 == 0 && n2 > 0)
1788 return debug_make_float_type (dhandle, n2);
1790 /* If the upper bound is -1, this is an unsigned int. */
1791 if (n2 == 0 && n3 == -1)
1793 /* When gcc is used with -gstabs, but not -gstabs+, it will emit
1794 long long int:t6=r1;0;-1;
1795 long long unsigned int:t7=r1;0;-1;
1796 We hack here to handle this reasonably. */
1797 if (type_name != NULL)
1799 if (strcmp (type_name, "long long int") == 0)
1800 return debug_make_int_type (dhandle, 8, FALSE);
1801 else if (strcmp (type_name, "long long unsigned int") == 0)
1802 return debug_make_int_type (dhandle, 8, TRUE);
1804 /* FIXME: The size here really depends upon the target. */
1805 return debug_make_int_type (dhandle, 4, TRUE);
1808 /* A range of 0 to 127 is char. */
1809 if (self_subrange && n2 == 0 && n3 == 127)
1810 return debug_make_int_type (dhandle, 1, FALSE);
1812 /* FIXME: gdb checks for the language CHILL here. */
1817 return debug_make_int_type (dhandle, - n3, TRUE);
1818 else if (n3 == 0xff)
1819 return debug_make_int_type (dhandle, 1, TRUE);
1820 else if (n3 == 0xffff)
1821 return debug_make_int_type (dhandle, 2, TRUE);
1822 else if (n3 == (bfd_signed_vma) 0xffffffff)
1823 return debug_make_int_type (dhandle, 4, TRUE);
1825 else if (n3 == (bfd_signed_vma) 0xffffffffffffffffLL)
1826 return debug_make_int_type (dhandle, 8, TRUE);
1831 && (self_subrange || n2 == -8))
1832 return debug_make_int_type (dhandle, - n2, TRUE);
1833 else if (n2 == - n3 - 1 || n2 == n3 + 1)
1836 return debug_make_int_type (dhandle, 1, FALSE);
1837 else if (n3 == 0x7fff)
1838 return debug_make_int_type (dhandle, 2, FALSE);
1839 else if (n3 == 0x7fffffff)
1840 return debug_make_int_type (dhandle, 4, FALSE);
1842 else if (n3 == ((((bfd_vma) 0x7fffffff) << 32) | 0xffffffff))
1843 return debug_make_int_type (dhandle, 8, FALSE);
1848 /* At this point I don't have the faintest idea how to deal with a
1849 self_subrange type; I'm going to assume that this is used as an
1850 idiom, and that all of them are special cases. So . . . */
1854 return DEBUG_TYPE_NULL;
1857 index_type = stab_find_type (dhandle, info, rangenums);
1858 if (index_type == DEBUG_TYPE_NULL)
1860 /* Does this actually ever happen? Is that why we are worrying
1861 about dealing with it rather than just calling error_type? */
1862 warn_stab (orig, _("missing index type"));
1863 index_type = debug_make_int_type (dhandle, 4, FALSE);
1866 return debug_make_range_type (dhandle, index_type, n2, n3);
1869 /* Sun's ACC uses a somewhat saner method for specifying the builtin
1870 typedefs in every file (for int, long, etc):
1872 type = b <signed> <width>; <offset>; <nbits>
1873 signed = u or s. Possible c in addition to u or s (for char?).
1874 offset = offset from high order bit to start bit of type.
1875 width is # bytes in object of this type, nbits is # bits in type.
1877 The width/offset stuff appears to be for small objects stored in
1878 larger ones (e.g. `shorts' in `int' registers). We ignore it for now,
1882 parse_stab_sun_builtin_type (void *dhandle, const char **pp, const char * p_end)
1885 bfd_boolean unsignedp;
1890 return DEBUG_TYPE_NULL;
1902 return DEBUG_TYPE_NULL;
1906 /* OpenSolaris source code indicates that one of "cbv" characters
1907 can come next and specify the intrinsic 'iformat' encoding.
1908 'c' is character encoding, 'b' is boolean encoding, and 'v' is
1909 varargs encoding. This field can be safely ignored because
1910 the type of the field is determined from the bitwidth extracted
1912 if (**pp == 'c' || **pp == 'b' || **pp == 'v')
1915 /* The first number appears to be the number of bytes occupied
1916 by this type, except that unsigned short is 4 instead of 2.
1917 Since this information is redundant with the third number,
1918 we will ignore it. */
1919 (void) parse_number (pp, (bfd_boolean *) NULL, p_end);
1923 return DEBUG_TYPE_NULL;
1927 /* The second number is always 0, so ignore it too. */
1928 (void) parse_number (pp, (bfd_boolean *) NULL, p_end);
1932 return DEBUG_TYPE_NULL;
1936 /* The third number is the number of bits for this type. */
1937 bits = parse_number (pp, (bfd_boolean *) NULL, p_end);
1939 /* The type *should* end with a semicolon. If it are embedded
1940 in a larger type the semicolon may be the only way to know where
1941 the type ends. If this type is at the end of the stabstring we
1942 can deal with the omitted semicolon (but we don't have to like
1943 it). Don't bother to complain(), Sun's compiler omits the semicolon
1949 return debug_make_void_type (dhandle);
1951 return debug_make_int_type (dhandle, bits / 8, unsignedp);
1954 /* Parse a builtin floating type generated by the Sun compiler. */
1957 parse_stab_sun_floating_type (void *dhandle, const char **pp, const char *p_end)
1965 return DEBUG_TYPE_NULL;
1967 /* The first number has more details about the type, for example
1969 details = parse_number (pp, (bfd_boolean *) NULL, p_end);
1973 return DEBUG_TYPE_NULL;
1976 /* The second number is the number of bytes occupied by this type */
1977 bytes = parse_number (pp, (bfd_boolean *) NULL, p_end);
1981 return DEBUG_TYPE_NULL;
1984 if (details == NF_COMPLEX
1985 || details == NF_COMPLEX16
1986 || details == NF_COMPLEX32)
1987 return debug_make_complex_type (dhandle, bytes);
1989 return debug_make_float_type (dhandle, bytes);
1992 /* Handle an enum type. */
1995 parse_stab_enum_type (void *dhandle, const char **pp, const char * p_end)
1999 bfd_signed_vma *values;
2005 return DEBUG_TYPE_NULL;
2007 /* FIXME: gdb checks os9k_stabs here. */
2009 /* The aix4 compiler emits an extra field before the enum members;
2010 my guess is it's a type of some sort. Just ignore it. */
2013 while (**pp != ':' && **pp != 0)
2019 return DEBUG_TYPE_NULL;
2024 /* Read the value-names and their values.
2025 The input syntax is NAME:VALUE,NAME:VALUE, and so on.
2026 A semicolon or comma instead of a NAME means the end. */
2028 names = (const char **) xmalloc (alloc * sizeof *names);
2029 values = (bfd_signed_vma *) xmalloc (alloc * sizeof *values);
2031 while (**pp != '\0' && **pp != ';' && **pp != ',')
2038 while (*p != ':' && *p != 0)
2046 return DEBUG_TYPE_NULL;
2049 name = savestring (*pp, p - *pp);
2052 val = (bfd_signed_vma) parse_number (pp, (bfd_boolean *) NULL, p_end);
2059 return DEBUG_TYPE_NULL;
2066 names = ((const char **)
2067 xrealloc (names, alloc * sizeof *names));
2068 values = ((bfd_signed_vma *)
2069 xrealloc (values, alloc * sizeof *values));
2083 return debug_make_enum_type (dhandle, names, values);
2086 /* Read the description of a structure (or union type) and return an object
2087 describing the type.
2089 PP points to a character pointer that points to the next unconsumed token
2090 in the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;",
2091 *PP will point to "4a:1,0,32;;". */
2094 parse_stab_struct_type (void * dhandle,
2095 struct stab_handle * info,
2096 const char * tagname,
2098 bfd_boolean structp,
2099 const int * typenums,
2103 debug_baseclass *baseclasses;
2104 debug_field *fields = NULL;
2105 bfd_boolean statics;
2106 debug_method *methods;
2107 debug_type vptrbase;
2108 bfd_boolean ownvptr;
2111 size = parse_number (pp, (bfd_boolean *) NULL, p_end);
2113 /* Get the other information. */
2114 if (! parse_stab_baseclasses (dhandle, info, pp, &baseclasses, p_end)
2115 || ! parse_stab_struct_fields (dhandle, info, pp, &fields, &statics, p_end)
2116 || ! parse_stab_members (dhandle, info, tagname, pp, typenums, &methods, p_end)
2117 || ! parse_stab_tilde_field (dhandle, info, pp, typenums, &vptrbase,
2122 return DEBUG_TYPE_NULL;
2126 && baseclasses == NULL
2128 && vptrbase == DEBUG_TYPE_NULL
2130 return debug_make_struct_type (dhandle, structp, size, fields);
2132 return debug_make_object_type (dhandle, structp, size, fields, baseclasses,
2133 methods, vptrbase, ownvptr);
2136 /* The stabs for C++ derived classes contain baseclass information which
2137 is marked by a '!' character after the total size. This function is
2138 called when we encounter the baseclass marker, and slurps up all the
2139 baseclass information.
2141 Immediately following the '!' marker is the number of base classes that
2142 the class is derived from, followed by information for each base class.
2143 For each base class, there are two visibility specifiers, a bit offset
2144 to the base class information within the derived class, a reference to
2145 the type for the base class, and a terminating semicolon.
2147 A typical example, with two base classes, would be "!2,020,19;0264,21;".
2149 Baseclass information marker __________________|| | | | | | |
2150 Number of baseclasses __________________________| | | | | | |
2151 Visibility specifiers (2) ________________________| | | | | |
2152 Offset in bits from start of class _________________| | | | |
2153 Type number for base class ___________________________| | | |
2154 Visibility specifiers (2) _______________________________| | |
2155 Offset in bits from start of class ________________________| |
2156 Type number of base class ____________________________________|
2158 Return TRUE for success, FALSE for failure. */
2161 parse_stab_baseclasses (void * dhandle,
2162 struct stab_handle * info,
2164 debug_baseclass ** retp,
2169 debug_baseclass *classes;
2179 /* No base classes. */
2184 c = (unsigned int) parse_number (pp, (bfd_boolean *) NULL, p_end);
2193 classes = (debug_baseclass *) xmalloc ((c + 1) * sizeof (**retp));
2195 for (i = 0; i < c; i++)
2197 bfd_boolean is_virtual;
2198 enum debug_visibility visibility;
2214 warn_stab (orig, _("unknown virtual character for baseclass"));
2223 visibility = DEBUG_VISIBILITY_PRIVATE;
2226 visibility = DEBUG_VISIBILITY_PROTECTED;
2229 visibility = DEBUG_VISIBILITY_PUBLIC;
2235 warn_stab (orig, _("unknown visibility character for baseclass"));
2236 visibility = DEBUG_VISIBILITY_PUBLIC;
2241 /* The remaining value is the bit offset of the portion of the
2242 object corresponding to this baseclass. Always zero in the
2243 absence of multiple inheritance. */
2244 bitpos = parse_number (pp, (bfd_boolean *) NULL, p_end);
2252 type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
2253 (debug_type **) NULL, p_end);
2254 if (type == DEBUG_TYPE_NULL)
2257 classes[i] = debug_make_baseclass (dhandle, type, bitpos, is_virtual,
2259 if (classes[i] == DEBUG_BASECLASS_NULL)
2267 classes[i] = DEBUG_BASECLASS_NULL;
2274 /* Read struct or class data fields. They have the form:
2276 NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2278 At the end, we see a semicolon instead of a field.
2280 In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2283 The optional VISIBILITY is one of:
2285 '/0' (VISIBILITY_PRIVATE)
2286 '/1' (VISIBILITY_PROTECTED)
2287 '/2' (VISIBILITY_PUBLIC)
2288 '/9' (VISIBILITY_IGNORE)
2290 or nothing, for C style fields with public visibility.
2292 Returns 1 for success, 0 for failure. */
2295 parse_stab_struct_fields (void * dhandle,
2296 struct stab_handle * info,
2298 debug_field ** retp,
2299 bfd_boolean * staticsp,
2304 debug_field *fields;
2317 fields = (debug_field *) xmalloc (alloc * sizeof *fields);
2320 /* FIXME: gdb checks os9k_stabs here. */
2324 /* Add 1 to c to leave room for NULL pointer at end. */
2328 fields = ((debug_field *)
2329 xrealloc (fields, alloc * sizeof *fields));
2332 /* If it starts with CPLUS_MARKER it is a special abbreviation,
2333 unless the CPLUS_MARKER is followed by an underscore, in
2334 which case it is just the name of an anonymous type, which we
2335 should handle like any other type name. We accept either '$'
2336 or '.', because a field name can never contain one of these
2337 characters except as a CPLUS_MARKER. */
2339 if ((*p == '$' || *p == '.') && p[1] != '_')
2342 if (! parse_stab_cpp_abbrev (dhandle, info, pp, fields + c, p_end))
2351 /* Look for the ':' that separates the field name from the field
2352 values. Data members are delimited by a single ':', while member
2353 functions are delimited by a pair of ':'s. When we hit the member
2354 functions (if any), terminate scan loop and return. */
2356 p = strchr (p, ':');
2367 if (! parse_stab_one_struct_field (dhandle, info, pp, p, fields + c,
2374 fields[c] = DEBUG_FIELD_NULL;
2381 /* Special GNU C++ name. */
2384 parse_stab_cpp_abbrev (void * dhandle,
2385 struct stab_handle * info,
2394 const char *type_name;
2398 *retp = DEBUG_FIELD_NULL;
2412 if (cpp_abbrev == 0)
2419 /* At this point, *pp points to something like "22:23=*22...", where
2420 the type number before the ':' is the "context" and everything
2421 after is a regular type definition. Lookup the type, find it's
2422 name, and construct the field name. */
2424 context = parse_stab_type (dhandle, info, (const char *) NULL, pp,
2425 (debug_type **) NULL, p_end);
2426 if (context == DEBUG_TYPE_NULL)
2432 /* $vf -- a virtual function table pointer. */
2436 /* $vb -- a virtual bsomethingorother */
2437 type_name = debug_get_type_name (dhandle, context);
2438 if (type_name == NULL)
2440 warn_stab (orig, _("unnamed $vb type"));
2443 name = concat ("_vb$", type_name, (const char *) NULL);
2446 warn_stab (orig, _("unrecognized C++ abbreviation"));
2447 name = "INVALID_CPLUSPLUS_ABBREV";
2458 type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
2459 (debug_type **) NULL, p_end);
2467 bitpos = parse_number (pp, (bfd_boolean *) NULL, p_end);
2475 *retp = debug_make_field (dhandle, name, type, bitpos, 0,
2476 DEBUG_VISIBILITY_PRIVATE);
2477 if (*retp == DEBUG_FIELD_NULL)
2483 /* Parse a single field in a struct or union. */
2486 parse_stab_one_struct_field (void * dhandle,
2487 struct stab_handle * info,
2491 bfd_boolean * staticsp,
2496 enum debug_visibility visibility;
2505 /* FIXME: gdb checks ARM_DEMANGLING here. */
2507 name = savestring (*pp, p - *pp);
2512 visibility = DEBUG_VISIBILITY_PUBLIC;
2519 visibility = DEBUG_VISIBILITY_PRIVATE;
2522 visibility = DEBUG_VISIBILITY_PROTECTED;
2525 visibility = DEBUG_VISIBILITY_PUBLIC;
2531 warn_stab (orig, _("unknown visibility character for field"));
2532 visibility = DEBUG_VISIBILITY_PUBLIC;
2538 type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
2539 (debug_type **) NULL, p_end);
2540 if (type == DEBUG_TYPE_NULL)
2550 /* This is a static class member. */
2552 p = strchr (*pp, ';');
2560 varname = savestring (*pp, p - *pp);
2564 *retp = debug_make_static_member (dhandle, name, type, varname,
2579 bitpos = parse_number (pp, (bfd_boolean *) NULL, p_end);
2588 bitsize = parse_number (pp, (bfd_boolean *) NULL, p_end);
2597 if (bitpos == 0 && bitsize == 0)
2599 /* This can happen in two cases: (1) at least for gcc 2.4.5 or
2600 so, it is a field which has been optimized out. The correct
2601 stab for this case is to use VISIBILITY_IGNORE, but that is a
2602 recent invention. (2) It is a 0-size array. For example
2603 union { int num; char str[0]; } foo. Printing "<no value>"
2604 for str in "p foo" is OK, since foo.str (and thus foo.str[3])
2605 will continue to work, and a 0-size array as a whole doesn't
2606 have any contents to print.
2608 I suspect this probably could also happen with gcc -gstabs
2609 (not -gstabs+) for static fields, and perhaps other C++
2610 extensions. Hopefully few people use -gstabs with gdb, since
2611 it is intended for dbx compatibility. */
2612 visibility = DEBUG_VISIBILITY_IGNORE;
2615 /* FIXME: gdb does some stuff here to mark fields as unpacked. */
2617 *retp = debug_make_field (dhandle, name, type, bitpos, bitsize, visibility);
2622 /* Read member function stabs info for C++ classes. The form of each member
2625 NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
2627 An example with two member functions is:
2629 afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
2631 For the case of overloaded operators, the format is op$::*.funcs, where
2632 $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
2633 name (such as `+=') and `.' marks the end of the operator name. */
2636 parse_stab_members (void * dhandle,
2637 struct stab_handle * info,
2638 const char * tagname,
2640 const int * typenums,
2641 debug_method ** retp,
2645 debug_method *methods;
2649 debug_method_variant *variants = NULL;
2650 char *argtypes = NULL;
2666 unsigned int allocvars;
2667 debug_type look_ahead_type;
2669 p = strchr (*pp, ':');
2670 if (p == NULL || p[1] != ':')
2673 /* FIXME: Some systems use something other than '$' here. */
2674 if ((*pp)[0] != 'o' || (*pp)[1] != 'p' || (*pp)[2] != '$')
2676 name = savestring (*pp, p - *pp);
2681 /* This is a completely weird case. In order to stuff in the
2682 names that might contain colons (the usual name delimiter),
2683 Mike Tiemann defined a different name format which is
2684 signalled if the identifier is "op$". In that case, the
2685 format is "op$::XXXX." where XXXX is the name. This is
2686 used for names like "+" or "=". YUUUUUUUK! FIXME! */
2688 for (p = *pp; *p != '.' && *p != '\0'; p++)
2695 name = savestring (*pp, p - *pp);
2700 variants = ((debug_method_variant *)
2701 xmalloc (allocvars * sizeof *variants));
2704 look_ahead_type = DEBUG_TYPE_NULL;
2710 enum debug_visibility visibility;
2711 bfd_boolean constp, volatilep, staticp;
2714 const char *physname;
2715 bfd_boolean varargs;
2717 if (look_ahead_type != DEBUG_TYPE_NULL)
2719 /* g++ version 1 kludge */
2720 type = look_ahead_type;
2721 look_ahead_type = DEBUG_TYPE_NULL;
2725 type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
2726 (debug_type **) NULL, p_end);
2727 if (type == DEBUG_TYPE_NULL)
2738 p = strchr (*pp, ';');
2746 if (debug_get_type_kind (dhandle, type) == DEBUG_KIND_METHOD
2747 && debug_get_parameter_types (dhandle, type, &varargs) == NULL)
2750 argtypes = savestring (*pp, p - *pp);
2756 visibility = DEBUG_VISIBILITY_PRIVATE;
2759 visibility = DEBUG_VISIBILITY_PROTECTED;
2765 visibility = DEBUG_VISIBILITY_PUBLIC;
2775 /* Normal function. */
2779 /* const member function. */
2784 /* volatile member function. */
2789 /* const volatile member function. */
2797 /* File compiled with g++ version 1; no information. */
2800 warn_stab (orig, _("const/volatile indicator missing"));
2808 /* virtual member function, followed by index. The sign
2809 bit is supposedly set to distinguish
2810 pointers-to-methods from virtual function indices. */
2812 voffset = parse_number (pp, (bfd_boolean *) NULL, p_end);
2819 voffset &= 0x7fffffff;
2821 if (**pp == ';' || **pp == '\0')
2823 /* Must be g++ version 1. */
2824 context = DEBUG_TYPE_NULL;
2828 /* Figure out from whence this virtual function
2829 came. It may belong to virtual function table of
2830 one of its baseclasses. */
2831 look_ahead_type = parse_stab_type (dhandle, info,
2832 (const char *) NULL,
2834 (debug_type **) NULL,
2838 /* g++ version 1 overloaded methods. */
2839 context = DEBUG_TYPE_NULL;
2843 context = look_ahead_type;
2844 look_ahead_type = DEBUG_TYPE_NULL;
2856 /* static member function. */
2860 context = DEBUG_TYPE_NULL;
2861 if (strncmp (argtypes, name, strlen (name)) != 0)
2866 warn_stab (orig, "member function type missing");
2868 context = DEBUG_TYPE_NULL;
2874 context = DEBUG_TYPE_NULL;
2878 /* If the type is not a stub, then the argtypes string is
2879 the physical name of the function. Otherwise the
2880 argtypes string is the mangled form of the argument
2881 types, and the full type and the physical name must be
2882 extracted from them. */
2883 physname = argtypes;
2886 debug_type class_type, return_type;
2888 class_type = stab_find_type (dhandle, info, typenums);
2889 if (class_type == DEBUG_TYPE_NULL)
2891 return_type = debug_get_return_type (dhandle, type);
2892 if (return_type == DEBUG_TYPE_NULL)
2897 type = parse_stab_argtypes (dhandle, info, class_type, name,
2898 tagname, return_type, argtypes,
2899 constp, volatilep, &physname);
2900 if (type == DEBUG_TYPE_NULL)
2904 if (cvars + 1 >= allocvars)
2907 variants = ((debug_method_variant *)
2909 allocvars * sizeof *variants));
2913 variants[cvars] = debug_make_method_variant (dhandle, physname,
2918 variants[cvars] = debug_make_static_method_variant (dhandle,
2924 if (variants[cvars] == DEBUG_METHOD_VARIANT_NULL)
2929 while (**pp != ';' && **pp != '\0');
2931 variants[cvars] = DEBUG_METHOD_VARIANT_NULL;
2939 methods = ((debug_method *)
2940 xrealloc (methods, alloc * sizeof *methods));
2943 methods[c] = debug_make_method (dhandle, name, variants);
2948 if (methods != NULL)
2949 methods[c] = DEBUG_METHOD_NULL;
2958 if (variants != NULL)
2960 if (argtypes != NULL)
2965 /* Parse a string representing argument types for a method. Stabs
2966 tries to save space by packing argument types into a mangled
2967 string. This string should give us enough information to extract
2968 both argument types and the physical name of the function, given
2972 parse_stab_argtypes (void *dhandle, struct stab_handle *info,
2973 debug_type class_type, const char *fieldname,
2974 const char *tagname, debug_type return_type,
2975 const char *argtypes, bfd_boolean constp,
2976 bfd_boolean volatilep, const char **pphysname)
2978 bfd_boolean is_full_physname_constructor;
2979 bfd_boolean is_constructor;
2980 bfd_boolean is_destructor;
2983 bfd_boolean varargs;
2984 unsigned int physname_len = 0;
2986 /* Constructors are sometimes handled specially. */
2987 is_full_physname_constructor = ((argtypes[0] == '_'
2988 && argtypes[1] == '_'
2989 && (ISDIGIT (argtypes[2])
2990 || argtypes[2] == 'Q'
2991 || argtypes[2] == 't'))
2992 || CONST_STRNEQ (argtypes, "__ct"));
2994 is_constructor = (is_full_physname_constructor
2996 && strcmp (fieldname, tagname) == 0));
2997 is_destructor = ((argtypes[0] == '_'
2998 && (argtypes[1] == '$' || argtypes[1] == '.')
2999 && argtypes[2] == '_')
3000 || CONST_STRNEQ (argtypes, "__dt"));
3001 is_v3 = argtypes[0] == '_' && argtypes[1] == 'Z';
3003 if (!(is_destructor || is_full_physname_constructor || is_v3))
3006 const char *const_prefix;
3007 const char *volatile_prefix;
3009 unsigned int mangled_name_len;
3012 len = tagname == NULL ? 0 : strlen (tagname);
3013 const_prefix = constp ? "C" : "";
3014 volatile_prefix = volatilep ? "V" : "";
3017 sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
3018 else if (tagname != NULL && strchr (tagname, '<') != NULL)
3020 /* Template methods are fully mangled. */
3021 sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
3026 sprintf (buf, "__%s%s%d", const_prefix, volatile_prefix, len);
3028 mangled_name_len = ((is_constructor ? 0 : strlen (fieldname))
3034 if (fieldname[0] == 'o'
3035 && fieldname[1] == 'p'
3036 && (fieldname[2] == '$' || fieldname[2] == '.'))
3040 opname = cplus_mangle_opname (fieldname + 3, 0);
3043 fprintf (stderr, _("No mangling for \"%s\"\n"), fieldname);
3044 return DEBUG_TYPE_NULL;
3046 mangled_name_len += strlen (opname);
3047 physname = (char *) xmalloc (mangled_name_len);
3048 strncpy (physname, fieldname, 3);
3049 strcpy (physname + 3, opname);
3053 physname = (char *) xmalloc (mangled_name_len);
3057 strcpy (physname, fieldname);
3060 physname_len = strlen (physname);
3061 strcat (physname, buf);
3062 if (tagname != NULL)
3063 strcat (physname, tagname);
3064 strcat (physname, argtypes);
3066 *pphysname = physname;
3069 if (*argtypes == '\0' || is_destructor)
3071 args = (debug_type *) xmalloc (sizeof *args);
3073 return debug_make_method_type (dhandle, return_type, class_type, args,
3077 args = stab_demangle_argtypes (dhandle, info, *pphysname, &varargs, physname_len);
3079 return DEBUG_TYPE_NULL;
3081 return debug_make_method_type (dhandle, return_type, class_type, args,
3085 /* The tail end of stabs for C++ classes that contain a virtual function
3086 pointer contains a tilde, a %, and a type number.
3087 The type number refers to the base class (possibly this class itself) which
3088 contains the vtable pointer for the current class.
3090 This function is called when we have parsed all the method declarations,
3091 so we can look for the vptr base class info. */
3094 parse_stab_tilde_field (void * dhandle,
3095 struct stab_handle * info,
3097 const int * typenums,
3098 debug_type * retvptrbase,
3099 bfd_boolean * retownvptr,
3106 *retvptrbase = DEBUG_TYPE_NULL;
3107 *retownvptr = FALSE;
3113 /* If we are positioned at a ';', then skip it. */
3121 if (**pp == '=' || **pp == '+' || **pp == '-')
3123 /* Obsolete flags that used to indicate the presence of
3124 constructors and/or destructors. */
3134 /* The next number is the type number of the base class (possibly
3135 our own class) which supplies the vtable for this class. */
3136 if (! parse_stab_type_number (pp, vtypenums, p_end))
3139 if (vtypenums[0] == typenums[0]
3140 && vtypenums[1] == typenums[1])
3149 vtype = parse_stab_type (dhandle, info, (const char *) NULL, pp,
3150 (debug_type **) NULL, p_end);
3151 for (p = *pp; *p != ';' && *p != '\0'; p++)
3159 *retvptrbase = vtype;
3167 /* Read a definition of an array type. */
3170 parse_stab_array_type (void * dhandle,
3171 struct stab_handle * info,
3173 bfd_boolean stringp,
3179 debug_type index_type;
3180 bfd_boolean adjustable;
3181 bfd_signed_vma lower, upper;
3182 debug_type element_type;
3184 /* Format of an array type:
3185 "ar<index type>;lower;upper;<array_contents_type>".
3186 OS9000: "arlower,upper;<array_contents_type>".
3188 Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
3189 for these, produce a type like float[][]. */
3193 return DEBUG_TYPE_NULL;
3195 /* FIXME: gdb checks os9k_stabs here. */
3197 /* If the index type is type 0, we take it as int. */
3199 if (! parse_stab_type_number (&p, typenums, p_end))
3200 return DEBUG_TYPE_NULL;
3202 if (typenums[0] == 0 && typenums[1] == 0 && **pp != '=')
3204 index_type = debug_find_named_type (dhandle, "int");
3205 if (index_type == DEBUG_TYPE_NULL)
3207 index_type = debug_make_int_type (dhandle, 4, FALSE);
3208 if (index_type == DEBUG_TYPE_NULL)
3209 return DEBUG_TYPE_NULL;
3215 index_type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
3216 (debug_type **) NULL, p_end);
3222 return DEBUG_TYPE_NULL;
3228 if (! ISDIGIT (**pp) && **pp != '-' && **pp != 0)
3234 lower = (bfd_signed_vma) parse_number (pp, (bfd_boolean *) NULL, p_end);
3238 return DEBUG_TYPE_NULL;
3242 if (! ISDIGIT (**pp) && **pp != '-' && **pp != 0)
3248 upper = (bfd_signed_vma) parse_number (pp, (bfd_boolean *) NULL, p_end);
3252 return DEBUG_TYPE_NULL;
3256 element_type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
3257 (debug_type **) NULL, p_end);
3258 if (element_type == DEBUG_TYPE_NULL)
3259 return DEBUG_TYPE_NULL;
3267 return debug_make_array_type (dhandle, element_type, index_type, lower,
3271 /* This struct holds information about files we have seen using
3276 /* The next N_BINCL file. */
3277 struct bincl_file *next;
3278 /* The next N_BINCL on the stack. */
3279 struct bincl_file *next_stack;
3280 /* The file name. */
3282 /* The hash value. */
3284 /* The file index. */
3286 /* The list of types defined in this file. */
3287 struct stab_types *file_types;
3290 /* Start a new N_BINCL file, pushing it onto the stack. */
3293 push_bincl (struct stab_handle *info, const char *name, bfd_vma hash)
3295 struct bincl_file *n;
3297 n = (struct bincl_file *) xmalloc (sizeof *n);
3298 n->next = info->bincl_list;
3299 n->next_stack = info->bincl_stack;
3302 n->file = info->files;
3303 n->file_types = NULL;
3304 info->bincl_list = n;
3305 info->bincl_stack = n;
3308 info->file_types = ((struct stab_types **)
3309 xrealloc (info->file_types,
3311 * sizeof *info->file_types)));
3312 info->file_types[n->file] = NULL;
3315 /* Finish an N_BINCL file, at an N_EINCL, popping the name off the
3319 pop_bincl (struct stab_handle *info)
3321 struct bincl_file *o;
3323 o = info->bincl_stack;
3325 return info->main_filename;
3326 info->bincl_stack = o->next_stack;
3328 if (o->file >= info->files)
3329 return info->main_filename;
3331 o->file_types = info->file_types[o->file];
3333 if (info->bincl_stack == NULL)
3334 return info->main_filename;
3335 return info->bincl_stack->name;
3338 /* Handle an N_EXCL: get the types from the corresponding N_BINCL. */
3341 find_excl (struct stab_handle *info, const char *name, bfd_vma hash)
3343 struct bincl_file *l;
3346 info->file_types = ((struct stab_types **)
3347 xrealloc (info->file_types,
3349 * sizeof *info->file_types)));
3351 for (l = info->bincl_list; l != NULL; l = l->next)
3352 if (l->hash == hash && strcmp (l->name, name) == 0)
3356 warn_stab (name, _("Undefined N_EXCL"));
3357 info->file_types[info->files - 1] = NULL;
3361 info->file_types[info->files - 1] = l->file_types;
3366 /* Handle a variable definition. gcc emits variable definitions for a
3367 block before the N_LBRAC, so we must hold onto them until we see
3368 it. The SunPRO compiler emits variable definitions after the
3369 N_LBRAC, so we can call debug_record_variable immediately. */
3372 stab_record_variable (void *dhandle, struct stab_handle *info,
3373 const char *name, debug_type type,
3374 enum debug_var_kind kind, bfd_vma val)
3376 struct stab_pending_var *v;
3378 if ((kind == DEBUG_GLOBAL || kind == DEBUG_STATIC)
3379 || ! info->within_function
3380 || (info->gcc_compiled == 0 && info->n_opt_found))
3381 return debug_record_variable (dhandle, name, type, kind, val);
3383 v = (struct stab_pending_var *) xmalloc (sizeof *v);
3384 memset (v, 0, sizeof *v);
3386 v->next = info->pending;
3396 /* Emit pending variable definitions. This is called after we see the
3397 N_LBRAC that starts the block. */
3400 stab_emit_pending_vars (void *dhandle, struct stab_handle *info)
3402 struct stab_pending_var *v;
3407 struct stab_pending_var *next;
3409 if (! debug_record_variable (dhandle, v->name, v->type, v->kind, v->val))
3417 info->pending = NULL;
3422 /* Find the slot for a type in the database. */
3425 stab_find_slot (struct stab_handle *info, const int *typenums)
3429 struct stab_types **ps;
3431 filenum = typenums[0];
3432 tindex = typenums[1];
3434 if (filenum < 0 || (unsigned int) filenum >= info->files)
3436 fprintf (stderr, _("Type file number %d out of range\n"), filenum);
3441 fprintf (stderr, _("Type index number %d out of range\n"), tindex);
3445 ps = info->file_types + filenum;
3447 while (tindex >= STAB_TYPES_SLOTS)
3451 *ps = (struct stab_types *) xmalloc (sizeof **ps);
3452 memset (*ps, 0, sizeof **ps);
3455 tindex -= STAB_TYPES_SLOTS;
3459 *ps = (struct stab_types *) xmalloc (sizeof **ps);
3460 memset (*ps, 0, sizeof **ps);
3463 return (*ps)->types + tindex;
3466 /* Find a type given a type number. If the type has not been
3467 allocated yet, create an indirect type. */
3470 stab_find_type (void *dhandle, struct stab_handle *info, const int *typenums)
3474 if (typenums[0] == 0 && typenums[1] < 0)
3476 /* A negative type number indicates an XCOFF builtin type. */
3477 return stab_xcoff_builtin_type (dhandle, info, typenums[1]);
3480 slot = stab_find_slot (info, typenums);
3482 return DEBUG_TYPE_NULL;
3484 if (*slot == DEBUG_TYPE_NULL)
3485 return debug_make_indirect_type (dhandle, slot, (const char *) NULL);
3490 /* Record that a given type number refers to a given type. */
3493 stab_record_type (void *dhandle ATTRIBUTE_UNUSED, struct stab_handle *info,
3494 const int *typenums, debug_type type)
3498 slot = stab_find_slot (info, typenums);
3502 /* gdb appears to ignore type redefinitions, so we do as well. */
3509 /* Return an XCOFF builtin type. */
3512 stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info,
3518 if (typenum >= 0 || typenum < -XCOFF_TYPE_COUNT)
3520 fprintf (stderr, _("Unrecognized XCOFF type %d\n"), typenum);
3521 return DEBUG_TYPE_NULL;
3523 if (info->xcoff_types[-typenum] != NULL)
3524 return info->xcoff_types[-typenum];
3529 /* The size of this and all the other types are fixed, defined
3530 by the debugging format. */
3532 rettype = debug_make_int_type (dhandle, 4, FALSE);
3536 rettype = debug_make_int_type (dhandle, 1, FALSE);
3540 rettype = debug_make_int_type (dhandle, 2, FALSE);
3544 rettype = debug_make_int_type (dhandle, 4, FALSE);
3547 name = "unsigned char";
3548 rettype = debug_make_int_type (dhandle, 1, TRUE);
3551 name = "signed char";
3552 rettype = debug_make_int_type (dhandle, 1, FALSE);
3555 name = "unsigned short";
3556 rettype = debug_make_int_type (dhandle, 2, TRUE);
3559 name = "unsigned int";
3560 rettype = debug_make_int_type (dhandle, 4, TRUE);
3564 rettype = debug_make_int_type (dhandle, 4, TRUE);
3567 name = "unsigned long";
3568 rettype = debug_make_int_type (dhandle, 4, TRUE);
3572 rettype = debug_make_void_type (dhandle);
3575 /* IEEE single precision (32 bit). */
3577 rettype = debug_make_float_type (dhandle, 4);
3580 /* IEEE double precision (64 bit). */
3582 rettype = debug_make_float_type (dhandle, 8);
3585 /* This is an IEEE double on the RS/6000, and different machines
3586 with different sizes for "long double" should use different
3587 negative type numbers. See stabs.texinfo. */
3588 name = "long double";
3589 rettype = debug_make_float_type (dhandle, 8);
3593 rettype = debug_make_int_type (dhandle, 4, FALSE);
3597 rettype = debug_make_bool_type (dhandle, 4);
3600 name = "short real";
3601 rettype = debug_make_float_type (dhandle, 4);
3605 rettype = debug_make_float_type (dhandle, 8);
3615 rettype = debug_make_int_type (dhandle, 1, TRUE);
3619 rettype = debug_make_bool_type (dhandle, 1);
3623 rettype = debug_make_bool_type (dhandle, 2);
3627 rettype = debug_make_bool_type (dhandle, 4);
3631 rettype = debug_make_bool_type (dhandle, 4);
3634 /* Complex type consisting of two IEEE single precision values. */
3636 rettype = debug_make_complex_type (dhandle, 8);
3639 /* Complex type consisting of two IEEE double precision values. */
3640 name = "double complex";
3641 rettype = debug_make_complex_type (dhandle, 16);
3645 rettype = debug_make_int_type (dhandle, 1, FALSE);
3649 rettype = debug_make_int_type (dhandle, 2, FALSE);
3653 rettype = debug_make_int_type (dhandle, 4, FALSE);
3658 rettype = debug_make_int_type (dhandle, 2, FALSE);
3662 rettype = debug_make_int_type (dhandle, 8, FALSE);
3665 name = "unsigned long long";
3666 rettype = debug_make_int_type (dhandle, 8, TRUE);
3670 rettype = debug_make_bool_type (dhandle, 8);
3674 rettype = debug_make_int_type (dhandle, 8, FALSE);
3680 rettype = debug_name_type (dhandle, name, rettype);
3682 info->xcoff_types[-typenum] = rettype;
3687 /* Find or create a tagged type. */
3690 stab_find_tagged_type (void *dhandle, struct stab_handle *info,
3691 const char *p, int len, enum debug_type_kind kind)
3695 struct stab_tag *st;
3697 name = savestring (p, len);
3699 /* We pass DEBUG_KIND_ILLEGAL because we want all tags in the same
3700 namespace. This is right for C, and I don't know how to handle
3701 other languages. FIXME. */
3702 dtype = debug_find_tagged_type (dhandle, name, DEBUG_KIND_ILLEGAL);
3703 if (dtype != DEBUG_TYPE_NULL)
3709 /* We need to allocate an entry on the undefined tag list. */
3710 for (st = info->tags; st != NULL; st = st->next)
3712 if (st->name[0] == name[0]
3713 && strcmp (st->name, name) == 0)
3715 if (st->kind == DEBUG_KIND_ILLEGAL)
3723 st = (struct stab_tag *) xmalloc (sizeof *st);
3724 memset (st, 0, sizeof *st);
3726 st->next = info->tags;
3729 st->slot = DEBUG_TYPE_NULL;
3730 st->type = debug_make_indirect_type (dhandle, &st->slot, name);
3737 /* In order to get the correct argument types for a stubbed method, we
3738 need to extract the argument types from a C++ mangled string.
3739 Since the argument types can refer back to the return type, this
3740 means that we must demangle the entire physical name. In gdb this
3741 is done by calling cplus_demangle and running the results back
3742 through the C++ expression parser. Since we have no expression
3743 parser, we must duplicate much of the work of cplus_demangle here.
3745 We assume that GNU style demangling is used, since this is only
3746 done for method stubs, and only g++ should output that form of
3747 debugging information. */
3749 /* This structure is used to hold a pointer to type information which
3750 demangling a string. */
3752 struct stab_demangle_typestring
3754 /* The start of the type. This is not null terminated. */
3755 const char *typestring;
3756 /* The length of the type. */
3760 /* This structure is used to hold information while demangling a
3763 struct stab_demangle_info
3765 /* The debugging information handle. */
3767 /* The stab information handle. */
3768 struct stab_handle *info;
3769 /* The array of arguments we are building. */
3771 /* Whether the method takes a variable number of arguments. */
3772 bfd_boolean varargs;
3773 /* The array of types we have remembered. */
3774 struct stab_demangle_typestring *typestrings;
3775 /* The number of typestrings. */
3776 unsigned int typestring_count;
3777 /* The number of typestring slots we have allocated. */
3778 unsigned int typestring_alloc;
3781 static void stab_bad_demangle (const char *);
3782 static unsigned int stab_demangle_count (const char **);
3783 static bfd_boolean stab_demangle_get_count (const char **, unsigned int *);
3784 static bfd_boolean stab_demangle_prefix
3785 (struct stab_demangle_info *, const char **, unsigned int);
3786 static bfd_boolean stab_demangle_function_name
3787 (struct stab_demangle_info *, const char **, const char *);
3788 static bfd_boolean stab_demangle_signature
3789 (struct stab_demangle_info *, const char **);
3790 static bfd_boolean stab_demangle_qualified
3791 (struct stab_demangle_info *, const char **, debug_type *);
3792 static bfd_boolean stab_demangle_template
3793 (struct stab_demangle_info *, const char **, char **);
3794 static bfd_boolean stab_demangle_class
3795 (struct stab_demangle_info *, const char **, const char **);
3796 static bfd_boolean stab_demangle_args
3797 (struct stab_demangle_info *, const char **, debug_type **, bfd_boolean *);
3798 static bfd_boolean stab_demangle_arg
3799 (struct stab_demangle_info *, const char **, debug_type **,
3800 unsigned int *, unsigned int *);
3801 static bfd_boolean stab_demangle_type
3802 (struct stab_demangle_info *, const char **, debug_type *);
3803 static bfd_boolean stab_demangle_fund_type
3804 (struct stab_demangle_info *, const char **, debug_type *);
3805 static bfd_boolean stab_demangle_remember_type
3806 (struct stab_demangle_info *, const char *, int);
3808 /* Warn about a bad demangling. */
3811 stab_bad_demangle (const char *s)
3813 fprintf (stderr, _("bad mangled name `%s'\n"), s);
3816 /* Get a count from a stab string. */
3819 stab_demangle_count (const char **pp)
3824 while (ISDIGIT (**pp))
3827 count += **pp - '0';
3833 /* Require a count in a string. The count may be multiple digits, in
3834 which case it must end in an underscore. */
3837 stab_demangle_get_count (const char **pp, unsigned int *pi)
3839 if (! ISDIGIT (**pp))
3857 while (ISDIGIT (*p));
3868 /* This function demangles a physical name, returning a NULL
3869 terminated array of argument types. */
3872 stab_demangle_argtypes (void *dhandle, struct stab_handle *info,
3873 const char *physname, bfd_boolean *pvarargs,
3874 unsigned int physname_len)
3876 struct stab_demangle_info minfo;
3878 /* Check for the g++ V3 ABI. */
3879 if (physname[0] == '_' && physname[1] == 'Z')
3880 return stab_demangle_v3_argtypes (dhandle, info, physname, pvarargs);
3882 minfo.dhandle = dhandle;
3885 minfo.varargs = FALSE;
3886 minfo.typestring_alloc = 10;
3887 minfo.typestrings = ((struct stab_demangle_typestring *)
3888 xmalloc (minfo.typestring_alloc
3889 * sizeof *minfo.typestrings));
3890 minfo.typestring_count = 0;
3892 /* cplus_demangle checks for special GNU mangled forms, but we can't
3893 see any of them in mangled method argument types. */
3895 if (! stab_demangle_prefix (&minfo, &physname, physname_len))
3898 if (*physname != '\0')
3900 if (! stab_demangle_signature (&minfo, &physname))
3904 free (minfo.typestrings);
3905 minfo.typestrings = NULL;
3907 if (minfo.args == NULL)
3908 fprintf (stderr, _("no argument types in mangled string\n"));
3910 *pvarargs = minfo.varargs;
3914 if (minfo.typestrings != NULL)
3915 free (minfo.typestrings);
3919 /* Demangle the prefix of the mangled name. */
3922 stab_demangle_prefix (struct stab_demangle_info *minfo, const char **pp,
3923 unsigned int physname_len)
3928 /* cplus_demangle checks for global constructors and destructors,
3929 but we can't see them in mangled argument types. */
3932 scan = *pp + physname_len;
3935 /* Look for `__'. */
3938 scan = strchr (scan, '_');
3939 while (scan != NULL && *++scan != '_');
3943 stab_bad_demangle (*pp);
3949 /* We found `__'; move ahead to the last contiguous `__' pair. */
3950 i = strspn (scan, "_");
3956 && (ISDIGIT (scan[2])
3960 /* This is a GNU style constructor name. */
3964 else if (scan == *pp
3965 && ! ISDIGIT (scan[2])
3968 /* Look for the `__' that separates the prefix from the
3970 while (*scan == '_')
3972 scan = strstr (scan, "__");
3973 if (scan == NULL || scan[2] == '\0')
3975 stab_bad_demangle (*pp);
3979 return stab_demangle_function_name (minfo, pp, scan);
3981 else if (scan[2] != '\0')
3983 /* The name doesn't start with `__', but it does contain `__'. */
3984 return stab_demangle_function_name (minfo, pp, scan);
3988 stab_bad_demangle (*pp);
3994 /* Demangle a function name prefix. The scan argument points to the
3995 double underscore which separates the function name from the
3999 stab_demangle_function_name (struct stab_demangle_info *minfo,
4000 const char **pp, const char *scan)
4004 /* The string from *pp to scan is the name of the function. We
4005 don't care about the name, since we just looking for argument
4006 types. However, for conversion operators, the name may include a
4007 type which we must remember in order to handle backreferences. */
4013 && CONST_STRNEQ (name, "type")
4014 && (name[4] == '$' || name[4] == '.'))
4018 /* This is a type conversion operator. */
4020 if (! stab_demangle_type (minfo, &tem, (debug_type *) NULL))
4023 else if (name[0] == '_'
4030 /* This is a type conversion operator. */
4032 if (! stab_demangle_type (minfo, &tem, (debug_type *) NULL))
4039 /* Demangle the signature. This is where the argument types are
4043 stab_demangle_signature (struct stab_demangle_info *minfo, const char **pp)
4046 bfd_boolean expect_func, func_done;
4051 expect_func = FALSE;
4055 while (**pp != '\0')
4061 if (! stab_demangle_qualified (minfo, pp, (debug_type *) NULL)
4062 || ! stab_demangle_remember_type (minfo, hold, *pp - hold))
4069 /* Static member function. FIXME: Can this happen? */
4076 /* Const member function. */
4082 case '0': case '1': case '2': case '3': case '4':
4083 case '5': case '6': case '7': case '8': case '9':
4086 if (! stab_demangle_class (minfo, pp, (const char **) NULL)
4087 || ! stab_demangle_remember_type (minfo, hold, *pp - hold))
4094 /* Function. I don't know if this actually happens with g++
4099 if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
4107 if (! stab_demangle_template (minfo, pp, (char **) NULL)
4108 || ! stab_demangle_remember_type (minfo, hold, *pp - hold))
4115 /* At the outermost level, we cannot have a return type
4116 specified, so if we run into another '_' at this point we
4117 are dealing with a mangled name that is either bogus, or
4118 has been mangled by some algorithm we don't know how to
4119 deal with. So just reject the entire demangling. */
4120 stab_bad_demangle (orig);
4124 /* Assume we have stumbled onto the first outermost function
4125 argument token, and start processing args. */
4127 if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
4135 if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
4142 /* With GNU style demangling, bar__3foo is 'foo::bar(void)', and
4143 bar__3fooi is 'foo::bar(int)'. We get here when we find the
4144 first case, and need to ensure that the '(void)' gets added
4145 to the current declp. */
4146 if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
4153 /* Demangle a qualified name, such as "Q25Outer5Inner" which is the
4154 mangled form of "Outer::Inner". */
4157 stab_demangle_qualified (struct stab_demangle_info *minfo, const char **pp,
4162 unsigned int qualifiers;
4170 /* GNU mangled name with more than 9 classes. The count is
4171 preceded by an underscore (to distinguish it from the <= 9
4172 case) and followed by an underscore. */
4174 if (! ISDIGIT (*p) || *p == '0')
4176 stab_bad_demangle (orig);
4179 qualifiers = atoi (p);
4180 while (ISDIGIT (*p))
4184 stab_bad_demangle (orig);
4190 case '1': case '2': case '3': case '4': case '5':
4191 case '6': case '7': case '8': case '9':
4192 qualifiers = (*pp)[1] - '0';
4193 /* Skip an optional underscore after the count. */
4194 if ((*pp)[2] == '_')
4201 stab_bad_demangle (orig);
4205 context = DEBUG_TYPE_NULL;
4207 /* Pick off the names. */
4208 while (qualifiers-- > 0)
4216 if (! stab_demangle_template (minfo, pp,
4217 ptype != NULL ? &name : NULL))
4222 context = stab_find_tagged_type (minfo->dhandle, minfo->info,
4223 name, strlen (name),
4226 if (context == DEBUG_TYPE_NULL)
4234 len = stab_demangle_count (pp);
4235 if (strlen (*pp) < len)
4237 stab_bad_demangle (orig);
4243 const debug_field *fields;
4246 if (context != DEBUG_TYPE_NULL)
4247 fields = debug_get_fields (minfo->dhandle, context);
4249 context = DEBUG_TYPE_NULL;
4255 /* Try to find the type by looking through the
4256 fields of context until we find a field with the
4257 same type. This ought to work for a class
4258 defined within a class, but it won't work for,
4259 e.g., an enum defined within a class. stabs does
4260 not give us enough information to figure out the
4263 name = savestring (*pp, len);
4265 for (; *fields != DEBUG_FIELD_NULL; fields++)
4270 ft = debug_get_field_type (minfo->dhandle, *fields);
4276 dn = debug_get_type_name (minfo->dhandle, ft);
4277 if (dn != NULL && strcmp (dn, name) == 0)
4287 if (context == DEBUG_TYPE_NULL)
4289 /* We have to fall back on finding the type by name.
4290 If there are more types to come, then this must
4291 be a class. Otherwise, it could be anything. */
4293 if (qualifiers == 0)
4297 name = savestring (*pp, len);
4298 context = debug_find_named_type (minfo->dhandle,
4303 if (context == DEBUG_TYPE_NULL)
4305 context = stab_find_tagged_type (minfo->dhandle,
4309 ? DEBUG_KIND_ILLEGAL
4310 : DEBUG_KIND_CLASS));
4311 if (context == DEBUG_TYPE_NULL)
4327 /* Demangle a template. If PNAME is not NULL, this sets *PNAME to a
4328 string representation of the template. */
4331 stab_demangle_template (struct stab_demangle_info *minfo, const char **pp,
4341 /* Skip the template name. */
4342 r = stab_demangle_count (pp);
4343 if (r == 0 || strlen (*pp) < r)
4345 stab_bad_demangle (orig);
4350 /* Get the size of the parameter list. */
4351 if (stab_demangle_get_count (pp, &r) == 0)
4353 stab_bad_demangle (orig);
4357 for (i = 0; i < r; i++)
4361 /* This is a type parameter. */
4363 if (! stab_demangle_type (minfo, pp, (debug_type *) NULL))
4369 bfd_boolean pointerp, realp, integralp, charp, boolp;
4380 /* This is a value parameter. */
4382 if (! stab_demangle_type (minfo, pp, (debug_type *) NULL))
4385 while (*old_p != '\0' && ! done)
4395 case 'C': /* Const. */
4396 case 'S': /* Signed. */
4397 case 'U': /* Unsigned. */
4398 case 'V': /* Volatile. */
4399 case 'F': /* Function. */
4400 case 'M': /* Member function. */
4404 case 'Q': /* Qualified name. */
4408 case 'T': /* Remembered type. */
4410 case 'v': /* Void. */
4412 case 'x': /* Long long. */
4413 case 'l': /* Long. */
4414 case 'i': /* Int. */
4415 case 's': /* Short. */
4416 case 'w': /* Wchar_t. */
4420 case 'b': /* Bool. */
4424 case 'c': /* Char. */
4428 case 'r': /* Long double. */
4429 case 'd': /* Double. */
4430 case 'f': /* Float. */
4435 /* Assume it's a user defined integral type. */
4446 while (ISDIGIT (**pp))
4455 val = stab_demangle_count (pp);
4458 stab_bad_demangle (orig);
4466 val = stab_demangle_count (pp);
4467 if (val != 0 && val != 1)
4469 stab_bad_demangle (orig);
4477 while (ISDIGIT (**pp))
4482 while (ISDIGIT (**pp))
4488 while (ISDIGIT (**pp))
4496 len = stab_demangle_count (pp);
4499 stab_bad_demangle (orig);
4507 /* We can translate this to a string fairly easily by invoking the
4508 regular demangling routine. */
4511 char *s1, *s2, *s3, *s4 = NULL;
4514 s1 = savestring (orig, *pp - orig);
4516 s2 = concat ("NoSuchStrinG__", s1, (const char *) NULL);
4520 s3 = cplus_demangle (s2, DMGL_ANSI);
4525 s4 = strstr (s3, "::NoSuchStrinG");
4526 if (s3 == NULL || s4 == NULL)
4528 stab_bad_demangle (orig);
4534 /* Eliminating all spaces, except those between > characters,
4535 makes it more likely that the demangled name will match the
4536 name which g++ used as the structure name. */
4537 for (from = to = s3; from != s4; ++from)
4539 || (from[1] == '>' && from > s3 && from[-1] == '>'))
4542 *pname = savestring (s3, to - s3);
4550 /* Demangle a class name. */
4553 stab_demangle_class (struct stab_demangle_info *minfo ATTRIBUTE_UNUSED,
4554 const char **pp, const char **pstart)
4561 n = stab_demangle_count (pp);
4562 if (strlen (*pp) < n)
4564 stab_bad_demangle (orig);
4576 /* Demangle function arguments. If the pargs argument is not NULL, it
4577 is set to a NULL terminated array holding the arguments. */
4580 stab_demangle_args (struct stab_demangle_info *minfo, const char **pp,
4581 debug_type **pargs, bfd_boolean *pvarargs)
4584 unsigned int alloc, count;
4591 *pargs = (debug_type *) xmalloc (alloc * sizeof **pargs);
4596 while (**pp != '_' && **pp != '\0' && **pp != 'e')
4598 if (**pp == 'N' || **pp == 'T')
4606 if (temptype == 'T')
4610 if (! stab_demangle_get_count (pp, &r))
4612 stab_bad_demangle (orig);
4617 if (! stab_demangle_get_count (pp, &t))
4619 stab_bad_demangle (orig);
4623 if (t >= minfo->typestring_count)
4625 stab_bad_demangle (orig);
4632 tem = minfo->typestrings[t].typestring;
4633 if (! stab_demangle_arg (minfo, &tem, pargs, &count, &alloc))
4639 if (! stab_demangle_arg (minfo, pp, pargs, &count, &alloc))
4645 (*pargs)[count] = DEBUG_TYPE_NULL;
4657 /* Demangle a single argument. */
4660 stab_demangle_arg (struct stab_demangle_info *minfo, const char **pp,
4661 debug_type **pargs, unsigned int *pcount,
4662 unsigned int *palloc)
4668 if (! stab_demangle_type (minfo, pp,
4669 pargs == NULL ? (debug_type *) NULL : &type)
4670 || ! stab_demangle_remember_type (minfo, start, *pp - start))
4675 if (type == DEBUG_TYPE_NULL)
4678 if (*pcount + 1 >= *palloc)
4681 *pargs = ((debug_type *)
4682 xrealloc (*pargs, *palloc * sizeof **pargs));
4684 (*pargs)[*pcount] = type;
4691 /* Demangle a type. If the ptype argument is not NULL, *ptype is set
4692 to the newly allocated type. */
4695 stab_demangle_type (struct stab_demangle_info *minfo, const char **pp,
4706 /* A pointer type. */
4708 if (! stab_demangle_type (minfo, pp, ptype))
4711 *ptype = debug_make_pointer_type (minfo->dhandle, *ptype);
4715 /* A reference type. */
4717 if (! stab_demangle_type (minfo, pp, ptype))
4720 *ptype = debug_make_reference_type (minfo->dhandle, *ptype);
4730 while (**pp != '\0' && **pp != '_')
4732 if (! ISDIGIT (**pp))
4734 stab_bad_demangle (orig);
4743 stab_bad_demangle (orig);
4748 if (! stab_demangle_type (minfo, pp, ptype))
4752 debug_type int_type;
4754 int_type = debug_find_named_type (minfo->dhandle, "int");
4755 if (int_type == NULL)
4756 int_type = debug_make_int_type (minfo->dhandle, 4, FALSE);
4757 *ptype = debug_make_array_type (minfo->dhandle, *ptype, int_type,
4764 /* A back reference to a remembered type. */
4770 if (! stab_demangle_get_count (pp, &i))
4772 stab_bad_demangle (orig);
4775 if (i >= minfo->typestring_count)
4777 stab_bad_demangle (orig);
4780 p = minfo->typestrings[i].typestring;
4781 if (! stab_demangle_type (minfo, &p, ptype))
4790 bfd_boolean varargs;
4793 if (! stab_demangle_args (minfo, pp,
4795 ? (debug_type **) NULL
4798 ? (bfd_boolean *) NULL
4803 /* cplus_demangle will accept a function without a return
4804 type, but I don't know when that will happen, or what
4805 to do if it does. */
4806 stab_bad_demangle (orig);
4810 if (! stab_demangle_type (minfo, pp, ptype))
4813 *ptype = debug_make_function_type (minfo->dhandle, *ptype, args,
4822 bfd_boolean memberp;
4823 debug_type class_type = DEBUG_TYPE_NULL;
4825 bfd_boolean varargs;
4829 memberp = **pp == 'M';
4836 n = stab_demangle_count (pp);
4837 if (strlen (*pp) < n)
4839 stab_bad_demangle (orig);
4847 class_type = stab_find_tagged_type (minfo->dhandle,
4851 if (class_type == DEBUG_TYPE_NULL)
4855 else if (**pp == 'Q')
4857 if (! stab_demangle_qualified (minfo, pp,
4859 ? (debug_type *) NULL
4865 stab_bad_demangle (orig);
4875 else if (**pp == 'V')
4881 stab_bad_demangle (orig);
4885 if (! stab_demangle_args (minfo, pp,
4887 ? (debug_type **) NULL
4890 ? (bfd_boolean *) NULL
4897 stab_bad_demangle (orig);
4902 if (! stab_demangle_type (minfo, pp, ptype))
4908 *ptype = debug_make_offset_type (minfo->dhandle, class_type,
4912 /* FIXME: We have no way to record constp or
4914 *ptype = debug_make_method_type (minfo->dhandle, *ptype,
4915 class_type, args, varargs);
4923 if (! stab_demangle_type (minfo, pp, ptype))
4929 if (! stab_demangle_type (minfo, pp, ptype))
4932 *ptype = debug_make_const_type (minfo->dhandle, *ptype);
4937 if (! stab_demangle_qualified (minfo, pp, ptype))
4943 if (! stab_demangle_fund_type (minfo, pp, ptype))
4951 /* Demangle a fundamental type. If the ptype argument is not NULL,
4952 *ptype is set to the newly allocated type. */
4955 stab_demangle_fund_type (struct stab_demangle_info *minfo, const char **pp,
4959 bfd_boolean constp, volatilep, unsignedp, signedp;
5004 /* cplus_demangle permits this, but I don't know what it means. */
5005 stab_bad_demangle (orig);
5008 case 'v': /* void */
5011 *ptype = debug_find_named_type (minfo->dhandle, "void");
5012 if (*ptype == DEBUG_TYPE_NULL)
5013 *ptype = debug_make_void_type (minfo->dhandle);
5018 case 'x': /* long long */
5021 *ptype = debug_find_named_type (minfo->dhandle,
5023 ? "long long unsigned int"
5024 : "long long int"));
5025 if (*ptype == DEBUG_TYPE_NULL)
5026 *ptype = debug_make_int_type (minfo->dhandle, 8, unsignedp);
5031 case 'l': /* long */
5034 *ptype = debug_find_named_type (minfo->dhandle,
5036 ? "long unsigned int"
5038 if (*ptype == DEBUG_TYPE_NULL)
5039 *ptype = debug_make_int_type (minfo->dhandle, 4, unsignedp);
5047 *ptype = debug_find_named_type (minfo->dhandle,
5051 if (*ptype == DEBUG_TYPE_NULL)
5052 *ptype = debug_make_int_type (minfo->dhandle, 4, unsignedp);
5057 case 's': /* short */
5060 *ptype = debug_find_named_type (minfo->dhandle,
5062 ? "short unsigned int"
5064 if (*ptype == DEBUG_TYPE_NULL)
5065 *ptype = debug_make_int_type (minfo->dhandle, 2, unsignedp);
5070 case 'b': /* bool */
5073 *ptype = debug_find_named_type (minfo->dhandle, "bool");
5074 if (*ptype == DEBUG_TYPE_NULL)
5075 *ptype = debug_make_bool_type (minfo->dhandle, 4);
5080 case 'c': /* char */
5083 *ptype = debug_find_named_type (minfo->dhandle,
5089 if (*ptype == DEBUG_TYPE_NULL)
5090 *ptype = debug_make_int_type (minfo->dhandle, 1, unsignedp);
5095 case 'w': /* wchar_t */
5098 *ptype = debug_find_named_type (minfo->dhandle, "__wchar_t");
5099 if (*ptype == DEBUG_TYPE_NULL)
5100 *ptype = debug_make_int_type (minfo->dhandle, 2, TRUE);
5105 case 'r': /* long double */
5108 *ptype = debug_find_named_type (minfo->dhandle, "long double");
5109 if (*ptype == DEBUG_TYPE_NULL)
5110 *ptype = debug_make_float_type (minfo->dhandle, 8);
5115 case 'd': /* double */
5118 *ptype = debug_find_named_type (minfo->dhandle, "double");
5119 if (*ptype == DEBUG_TYPE_NULL)
5120 *ptype = debug_make_float_type (minfo->dhandle, 8);
5125 case 'f': /* float */
5128 *ptype = debug_find_named_type (minfo->dhandle, "float");
5129 if (*ptype == DEBUG_TYPE_NULL)
5130 *ptype = debug_make_float_type (minfo->dhandle, 4);
5137 if (! ISDIGIT (**pp))
5139 stab_bad_demangle (orig);
5143 case '0': case '1': case '2': case '3': case '4':
5144 case '5': case '6': case '7': case '8': case '9':
5148 if (! stab_demangle_class (minfo, pp, &hold))
5154 name = savestring (hold, *pp - hold);
5155 *ptype = debug_find_named_type (minfo->dhandle, name);
5157 if (*ptype == DEBUG_TYPE_NULL)
5159 /* FIXME: It is probably incorrect to assume that
5160 undefined types are tagged types. */
5161 *ptype = stab_find_tagged_type (minfo->dhandle, minfo->info,
5163 DEBUG_KIND_ILLEGAL);
5164 if (*ptype == DEBUG_TYPE_NULL)
5175 if (! stab_demangle_template (minfo, pp,
5176 ptype != NULL ? &name : NULL))
5180 *ptype = stab_find_tagged_type (minfo->dhandle, minfo->info,
5181 name, strlen (name),
5184 if (*ptype == DEBUG_TYPE_NULL)
5191 stab_bad_demangle (orig);
5198 *ptype = debug_make_const_type (minfo->dhandle, *ptype);
5200 *ptype = debug_make_volatile_type (minfo->dhandle, *ptype);
5206 /* Remember a type string in a demangled string. */
5209 stab_demangle_remember_type (struct stab_demangle_info *minfo,
5210 const char *p, int len)
5212 if (minfo->typestring_count >= minfo->typestring_alloc)
5214 minfo->typestring_alloc += 10;
5215 minfo->typestrings = ((struct stab_demangle_typestring *)
5216 xrealloc (minfo->typestrings,
5217 (minfo->typestring_alloc
5218 * sizeof *minfo->typestrings)));
5221 minfo->typestrings[minfo->typestring_count].typestring = p;
5222 minfo->typestrings[minfo->typestring_count].len = (unsigned int) len;
5223 ++minfo->typestring_count;
5228 /* Demangle names encoded using the g++ V3 ABI. The newer versions of
5229 g++ which use this ABI do not encode ordinary method argument types
5230 in a mangled name; they simply output the argument types. However,
5231 for a static method, g++ simply outputs the return type and the
5232 physical name. So in that case we need to demangle the name here.
5233 Here PHYSNAME is the physical name of the function, and we set the
5234 variable pointed at by PVARARGS to indicate whether this function
5235 is varargs. This returns NULL, or a NULL terminated array of
5239 stab_demangle_v3_argtypes (void *dhandle, struct stab_handle *info,
5240 const char *physname, bfd_boolean *pvarargs)
5242 struct demangle_component *dc;
5246 dc = cplus_demangle_v3_components (physname, DMGL_PARAMS | DMGL_ANSI, &mem);
5249 stab_bad_demangle (physname);
5253 /* We expect to see TYPED_NAME, and the right subtree describes the
5255 if (dc->type != DEMANGLE_COMPONENT_TYPED_NAME
5256 || dc->u.s_binary.right->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
5258 fprintf (stderr, _("Demangled name is not a function\n"));
5263 pargs = stab_demangle_v3_arglist (dhandle, info,
5264 dc->u.s_binary.right->u.s_binary.right,
5272 /* Demangle an argument list in a struct demangle_component tree.
5273 Returns a DEBUG_TYPE_NULL terminated array of argument types, and
5274 sets *PVARARGS to indicate whether this is a varargs function. */
5277 stab_demangle_v3_arglist (void *dhandle, struct stab_handle *info,
5278 struct demangle_component *arglist,
5279 bfd_boolean *pvarargs)
5281 struct demangle_component *dc;
5282 unsigned int alloc, count;
5286 pargs = (debug_type *) xmalloc (alloc * sizeof *pargs);
5293 dc = dc->u.s_binary.right)
5296 bfd_boolean varargs;
5298 if (dc->type != DEMANGLE_COMPONENT_ARGLIST)
5300 fprintf (stderr, _("Unexpected type in v3 arglist demangling\n"));
5305 /* PR 13925: Cope if the demangler returns an empty
5306 context for a function with no arguments. */
5307 if (dc->u.s_binary.left == NULL)
5310 arg = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left,
5323 if (count + 1 >= alloc)
5326 pargs = (debug_type *) xrealloc (pargs, alloc * sizeof *pargs);
5333 pargs[count] = DEBUG_TYPE_NULL;
5338 /* Convert a struct demangle_component tree describing an argument
5339 type into a debug_type. */
5342 stab_demangle_v3_arg (void *dhandle, struct stab_handle *info,
5343 struct demangle_component *dc, debug_type context,
5344 bfd_boolean *pvarargs)
5348 if (pvarargs != NULL)
5353 /* FIXME: These are demangle component types which we probably
5354 need to handle one way or another. */
5355 case DEMANGLE_COMPONENT_LOCAL_NAME:
5356 case DEMANGLE_COMPONENT_TYPED_NAME:
5357 case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
5358 case DEMANGLE_COMPONENT_CTOR:
5359 case DEMANGLE_COMPONENT_DTOR:
5360 case DEMANGLE_COMPONENT_JAVA_CLASS:
5361 case DEMANGLE_COMPONENT_RESTRICT_THIS:
5362 case DEMANGLE_COMPONENT_VOLATILE_THIS:
5363 case DEMANGLE_COMPONENT_CONST_THIS:
5364 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
5365 case DEMANGLE_COMPONENT_COMPLEX:
5366 case DEMANGLE_COMPONENT_IMAGINARY:
5367 case DEMANGLE_COMPONENT_VENDOR_TYPE:
5368 case DEMANGLE_COMPONENT_ARRAY_TYPE:
5369 case DEMANGLE_COMPONENT_PTRMEM_TYPE:
5370 case DEMANGLE_COMPONENT_ARGLIST:
5372 fprintf (stderr, _("Unrecognized demangle component %d\n"),
5376 case DEMANGLE_COMPONENT_NAME:
5377 if (context != NULL)
5379 const debug_field *fields;
5381 fields = debug_get_fields (dhandle, context);
5384 /* Try to find this type by looking through the context
5386 for (; *fields != DEBUG_FIELD_NULL; fields++)
5391 ft = debug_get_field_type (dhandle, *fields);
5394 dn = debug_get_type_name (dhandle, ft);
5396 && (int) strlen (dn) == dc->u.s_name.len
5397 && strncmp (dn, dc->u.s_name.s, dc->u.s_name.len) == 0)
5402 return stab_find_tagged_type (dhandle, info, dc->u.s_name.s,
5403 dc->u.s_name.len, DEBUG_KIND_ILLEGAL);
5405 case DEMANGLE_COMPONENT_QUAL_NAME:
5406 context = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left,
5408 if (context == NULL)
5410 return stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.right,
5413 case DEMANGLE_COMPONENT_TEMPLATE:
5418 /* We print this component to get a class name which we can
5419 use. FIXME: This probably won't work if the template uses
5420 template parameters which refer to an outer template. */
5421 p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc);
5424 fprintf (stderr, _("Failed to print demangled template\n"));
5427 dt = stab_find_tagged_type (dhandle, info, p, strlen (p),
5433 case DEMANGLE_COMPONENT_SUB_STD:
5434 return stab_find_tagged_type (dhandle, info, dc->u.s_string.string,
5435 dc->u.s_string.len, DEBUG_KIND_ILLEGAL);
5437 case DEMANGLE_COMPONENT_RESTRICT:
5438 case DEMANGLE_COMPONENT_VOLATILE:
5439 case DEMANGLE_COMPONENT_CONST:
5440 case DEMANGLE_COMPONENT_POINTER:
5441 case DEMANGLE_COMPONENT_REFERENCE:
5442 dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL,
5451 case DEMANGLE_COMPONENT_RESTRICT:
5452 /* FIXME: We have no way to represent restrict. */
5454 case DEMANGLE_COMPONENT_VOLATILE:
5455 return debug_make_volatile_type (dhandle, dt);
5456 case DEMANGLE_COMPONENT_CONST:
5457 return debug_make_const_type (dhandle, dt);
5458 case DEMANGLE_COMPONENT_POINTER:
5459 return debug_make_pointer_type (dhandle, dt);
5460 case DEMANGLE_COMPONENT_REFERENCE:
5461 return debug_make_reference_type (dhandle, dt);
5464 case DEMANGLE_COMPONENT_FUNCTION_TYPE:
5467 bfd_boolean varargs;
5469 if (dc->u.s_binary.left == NULL)
5471 /* In this case the return type is actually unknown.
5472 However, I'm not sure this will ever arise in practice;
5473 normally an unknown return type would only appear at
5474 the top level, which is handled above. */
5475 dt = debug_make_void_type (dhandle);
5478 dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL,
5483 pargs = stab_demangle_v3_arglist (dhandle, info,
5484 dc->u.s_binary.right,
5489 return debug_make_function_type (dhandle, dt, pargs, varargs);
5492 case DEMANGLE_COMPONENT_BUILTIN_TYPE:
5498 /* We print this component in order to find out the type name.
5499 FIXME: Should we instead expose the
5500 demangle_builtin_type_info structure? */
5501 p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc);
5504 fprintf (stderr, _("Couldn't get demangled builtin type\n"));
5508 /* The mangling is based on the type, but does not itself
5509 indicate what the sizes are. So we have to guess. */
5510 if (strcmp (p, "signed char") == 0)
5511 ret = debug_make_int_type (dhandle, 1, FALSE);
5512 else if (strcmp (p, "bool") == 0)
5513 ret = debug_make_bool_type (dhandle, 1);
5514 else if (strcmp (p, "char") == 0)
5515 ret = debug_make_int_type (dhandle, 1, FALSE);
5516 else if (strcmp (p, "double") == 0)
5517 ret = debug_make_float_type (dhandle, 8);
5518 else if (strcmp (p, "long double") == 0)
5519 ret = debug_make_float_type (dhandle, 8);
5520 else if (strcmp (p, "float") == 0)
5521 ret = debug_make_float_type (dhandle, 4);
5522 else if (strcmp (p, "__float128") == 0)
5523 ret = debug_make_float_type (dhandle, 16);
5524 else if (strcmp (p, "unsigned char") == 0)
5525 ret = debug_make_int_type (dhandle, 1, TRUE);
5526 else if (strcmp (p, "int") == 0)
5527 ret = debug_make_int_type (dhandle, 4, FALSE);
5528 else if (strcmp (p, "unsigned int") == 0)
5529 ret = debug_make_int_type (dhandle, 4, TRUE);
5530 else if (strcmp (p, "long") == 0)
5531 ret = debug_make_int_type (dhandle, 4, FALSE);
5532 else if (strcmp (p, "unsigned long") == 0)
5533 ret = debug_make_int_type (dhandle, 4, TRUE);
5534 else if (strcmp (p, "__int128") == 0)
5535 ret = debug_make_int_type (dhandle, 16, FALSE);
5536 else if (strcmp (p, "unsigned __int128") == 0)
5537 ret = debug_make_int_type (dhandle, 16, TRUE);
5538 else if (strcmp (p, "short") == 0)
5539 ret = debug_make_int_type (dhandle, 2, FALSE);
5540 else if (strcmp (p, "unsigned short") == 0)
5541 ret = debug_make_int_type (dhandle, 2, TRUE);
5542 else if (strcmp (p, "void") == 0)
5543 ret = debug_make_void_type (dhandle);
5544 else if (strcmp (p, "wchar_t") == 0)
5545 ret = debug_make_int_type (dhandle, 4, TRUE);
5546 else if (strcmp (p, "long long") == 0)
5547 ret = debug_make_int_type (dhandle, 8, FALSE);
5548 else if (strcmp (p, "unsigned long long") == 0)
5549 ret = debug_make_int_type (dhandle, 8, TRUE);
5550 else if (strcmp (p, "...") == 0)
5552 if (pvarargs == NULL)
5553 fprintf (stderr, _("Unexpected demangled varargs\n"));
5560 fprintf (stderr, _("Unrecognized demangled builtin type\n"));