1 /* stabs.c -- Parse stabs debugging information
2 Copyright (C) 1995-2024 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. */
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. */
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. */
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 /* Where the TYPES array starts. */
125 unsigned int base_index
;
126 /* Types indexed by type number. */
127 #define STAB_TYPES_SLOTS (16)
128 debug_type types
[STAB_TYPES_SLOTS
];
131 /* We keep a list of undefined tags that we encounter, so that we can
132 fill them in if the tag is later defined. */
136 /* Next undefined tag. */
137 struct stab_tag
*next
;
141 enum debug_type_kind kind
;
142 /* Slot to hold real type when we discover it. If we don't, we fill
143 in an undefined tag type. */
145 /* Indirect type we have created to point at slot. */
149 static void bad_stab (const char *);
150 static void warn_stab (const char *, const char *);
151 static bool 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 bool 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 bool, const int *, const char *);
171 static bool parse_stab_baseclasses
172 (void *, struct stab_handle
*, const char **, debug_baseclass
**,
174 static bool parse_stab_struct_fields
175 (void *, struct stab_handle
*, const char **, debug_field
**,
176 bool *, const char *);
177 static bool parse_stab_cpp_abbrev
178 (void *, struct stab_handle
*, const char **, debug_field
*, const char *);
179 static bool parse_stab_one_struct_field
180 (void *, struct stab_handle
*, const char **, const char *,
181 debug_field
*, bool *, const char *);
182 static bool 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 *, bool, bool, const char **);
188 static bool parse_stab_tilde_field
189 (void *, struct stab_handle
*, const char **, const int *, debug_type
*,
190 bool *, const char *);
191 static debug_type parse_stab_array_type
192 (void *, struct stab_handle
*, const char **, bool, const char *);
193 static void push_bincl (void *, struct stab_handle
*, const char *, bfd_vma
);
194 static const char *pop_bincl (struct stab_handle
*);
195 static bool find_excl (struct stab_handle
*, const char *, bfd_vma
);
196 static bool stab_record_variable
197 (void *, struct stab_handle
*, const char *, debug_type
,
198 enum debug_var_kind
, bfd_vma
);
199 static bool stab_emit_pending_vars (void *, struct stab_handle
*);
200 static debug_type
*stab_find_slot (void *, struct stab_handle
*, const int *);
201 static debug_type
stab_find_type (void *, struct stab_handle
*, const int *);
202 static bool 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
*, unsigned 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 *, bool *, unsigned int);
210 static debug_type
*stab_demangle_v3_argtypes
211 (void *, struct stab_handle
*, const char *, bool *);
212 static debug_type
*stab_demangle_v3_arglist
213 (void *, struct stab_handle
*, struct demangle_component
*, bool *);
214 static debug_type stab_demangle_v3_arg
215 (void *, struct stab_handle
*, struct demangle_component
*, debug_type
,
218 static int demangle_flags
= DMGL_ANSI
;
220 /* Save a string in memory. */
223 savestring (void *dhandle
, const char *start
, size_t len
)
227 ret
= debug_xalloc (dhandle
, len
+ 1);
228 memcpy (ret
, start
, len
);
233 /* Read a number from a string. */
236 parse_number (const char **pp
, bool *poverflow
, const char *p_end
)
241 if (poverflow
!= NULL
)
248 /* Stop early if we are passed an empty string. */
253 ul
= strtoul (*pp
, (char **) pp
, 0);
254 if (ul
+ 1 != 0 || errno
== 0)
256 /* If bfd_vma is larger than unsigned long, and the number is
257 meant to be negative, we have to make sure that we sign
260 return (bfd_vma
) (bfd_signed_vma
) (long) ul
;
264 /* Note that even though strtoul overflowed, it should have set *pp
265 to the end of the number, which is where we want it. */
266 if (sizeof (bfd_vma
) > sizeof (unsigned long))
271 bfd_vma over
, lastdig
;
275 /* Our own version of strtoul, for a bfd_vma. */
290 if (p
[1] == 'x' || p
[1] == 'X')
302 over
= ((bfd_vma
) (bfd_signed_vma
) -1) / (bfd_vma
) base
;
303 lastdig
= ((bfd_vma
) (bfd_signed_vma
) -1) % (bfd_vma
) base
;
314 else if (ISUPPER (d
))
316 else if (ISLOWER (d
))
324 if (v
> over
|| (v
== over
&& (bfd_vma
) d
> lastdig
))
339 /* If we get here, the number is too large to represent in a
341 if (poverflow
!= NULL
)
344 warn_stab (orig
, _("numeric overflow"));
349 /* Give an error for a bad stab string. */
352 bad_stab (const char *p
)
354 fprintf (stderr
, _("Bad stab: %s\n"), p
);
357 /* Warn about something in a stab string. */
360 warn_stab (const char *p
, const char *err
)
362 fprintf (stderr
, _("Warning: %s: %s\n"), err
, p
);
365 /* Create a handle to parse stabs symbols with. */
368 start_stab (void *dhandle ATTRIBUTE_UNUSED
, bfd
*abfd
, bool sections
,
369 asymbol
**syms
, long symcount
)
371 struct stab_handle
*ret
;
373 ret
= xmalloc (sizeof (*ret
));
374 memset (ret
, 0, sizeof (*ret
));
376 ret
->sections
= sections
;
378 ret
->symcount
= symcount
;
380 ret
->file_types
= xmalloc (sizeof (*ret
->file_types
));
381 ret
->file_types
[0] = NULL
;
382 ret
->function_end
= -1;
386 /* When we have processed all the stabs information, we need to go
387 through and fill in all the undefined tags. */
390 finish_stab (void *dhandle
, void *handle
, bool emit
)
392 struct stab_handle
*info
= (struct stab_handle
*) handle
;
396 if (emit
&& info
->within_function
)
398 if (! stab_emit_pending_vars (dhandle
, info
)
399 || ! debug_end_function (dhandle
, info
->function_end
))
404 for (st
= info
->tags
; st
!= NULL
; st
= st
->next
)
406 enum debug_type_kind kind
;
409 if (kind
== DEBUG_KIND_ILLEGAL
)
410 kind
= DEBUG_KIND_STRUCT
;
411 st
->slot
= debug_make_undefined_tagged_type (dhandle
, st
->name
, kind
);
412 if (st
->slot
== DEBUG_TYPE_NULL
)
419 free (info
->file_types
);
420 free (info
->so_string
);
425 /* Handle a single stabs symbol. */
428 parse_stab (void *dhandle
, void *handle
, int type
, int desc
, bfd_vma value
,
431 const char * string_end
;
432 struct stab_handle
*info
= (struct stab_handle
*) handle
;
436 /* gcc will emit two N_SO strings per compilation unit, one for the
437 directory name and one for the file name. We just collect N_SO
438 strings as we see them, and start the new compilation unit when
439 we see a non N_SO symbol. */
440 if (info
->so_string
!= NULL
441 && (type
!= N_SO
|| *string
== '\0' || value
!= info
->so_value
))
443 len
= strlen (info
->so_string
) + 1;
444 copy
= debug_xalloc (dhandle
, len
);
445 memcpy (copy
, info
->so_string
, len
);
446 if (! debug_set_filename (dhandle
, copy
))
448 info
->main_filename
= copy
;
450 free (info
->so_string
);
451 info
->so_string
= NULL
;
453 info
->gcc_compiled
= 0;
454 info
->n_opt_found
= false;
456 /* Generally, for stabs in the symbol table, the N_LBRAC and
457 N_RBRAC symbols are relative to the N_SO symbol value. */
458 if (! info
->sections
)
459 info
->file_start_offset
= info
->so_value
;
461 /* We need to reset the mapping from type numbers to types. We
462 can only free the file_types array, not the stab_types
463 list entries due to the use of debug_make_indirect_type. */
465 info
->file_types
= xrealloc (info
->file_types
, sizeof (*info
->file_types
));
466 info
->file_types
[0] = NULL
;
468 /* Now process whatever type we just got. */
471 string_end
= string
+ strlen (string
);
480 /* Ignore extra outermost context from SunPRO cc and acc. */
481 if (info
->n_opt_found
&& desc
== 1)
484 if (! info
->within_function
)
486 fprintf (stderr
, _("N_LBRAC not within function\n"));
490 /* Start an inner lexical block. */
491 if (! debug_start_block (dhandle
,
493 + info
->file_start_offset
494 + info
->function_start_offset
)))
497 /* Emit any pending variable definitions. */
498 if (! stab_emit_pending_vars (dhandle
, info
))
505 /* Ignore extra outermost context from SunPRO cc and acc. */
506 if (info
->n_opt_found
&& desc
== 1)
509 /* We shouldn't have any pending variable definitions here, but,
510 if we do, we probably need to emit them before closing the
512 if (! stab_emit_pending_vars (dhandle
, info
))
515 /* End an inner lexical block. */
516 if (! debug_end_block (dhandle
,
518 + info
->file_start_offset
519 + info
->function_start_offset
)))
523 if (info
->block_depth
< 0)
525 fprintf (stderr
, _("Too many N_RBRACs\n"));
531 /* This always ends a function. */
532 if (info
->within_function
)
538 && info
->function_end
!= (bfd_vma
) -1
539 && info
->function_end
< endval
)
540 endval
= info
->function_end
;
541 if (! stab_emit_pending_vars (dhandle
, info
)
542 || ! debug_end_function (dhandle
, endval
))
544 info
->within_function
= false;
545 info
->function_end
= (bfd_vma
) -1;
548 /* An empty string is emitted by gcc at the end of a compilation
553 /* Just accumulate strings until we see a non N_SO symbol. If
554 the string starts with a directory separator or some other
555 form of absolute path specification, we discard the previously
556 accumulated strings. */
557 if (info
->so_string
== NULL
)
558 info
->so_string
= xstrdup (string
);
565 if (IS_ABSOLUTE_PATH (string
))
566 info
->so_string
= xstrdup (string
);
568 info
->so_string
= concat (info
->so_string
, string
,
569 (const char *) NULL
);
573 info
->so_value
= value
;
578 /* Start an include file. */
579 len
= strlen (string
) + 1;
580 copy
= debug_xalloc (dhandle
, len
);
581 memcpy (copy
, string
, len
);
582 if (! debug_start_source (dhandle
, copy
))
587 /* Start an include file which may be replaced. */
588 len
= strlen (string
) + 1;
589 copy
= debug_xalloc (dhandle
, len
);
590 memcpy (copy
, string
, len
);
591 push_bincl (dhandle
, info
, copy
, value
);
592 if (! debug_start_source (dhandle
, copy
))
597 /* End an N_BINCL include. */
598 if (! debug_start_source (dhandle
, pop_bincl (info
)))
603 /* This is a duplicate of a header file named by N_BINCL which
604 was eliminated by the linker. */
605 if (! find_excl (info
, string
, value
))
610 if (! debug_record_line (dhandle
, desc
,
611 value
+ (info
->within_function
612 ? info
->function_start_offset
: 0)))
617 if (! debug_start_common_block (dhandle
, string
))
622 if (! debug_end_common_block (dhandle
, string
))
629 if (info
->within_function
)
631 /* This always marks the end of a function; we don't
632 need to worry about info->function_end. */
634 value
+= info
->function_start_offset
;
635 if (! stab_emit_pending_vars (dhandle
, info
)
636 || ! debug_end_function (dhandle
, value
))
638 info
->within_function
= false;
639 info
->function_end
= (bfd_vma
) -1;
644 /* A const static symbol in the .text section will have an N_FUN
645 entry. We need to use these to mark the end of the function,
646 in case we are looking at gcc output before it was changed to
647 always emit an empty N_FUN. We can't call debug_end_function
648 here, because it might be a local static symbol. */
649 if (info
->within_function
650 && (info
->function_end
== (bfd_vma
) -1
651 || value
< info
->function_end
))
652 info
->function_end
= value
;
655 /* FIXME: gdb checks the string for N_STSYM, N_LCSYM or N_ROSYM
656 symbols, and if it does not start with :S, gdb relocates the
657 value to the start of the section. gcc always seems to use
658 :S, so we don't worry about this. */
664 colon
= strchr (string
, ':');
666 && (colon
[1] == 'f' || colon
[1] == 'F'))
668 if (info
->within_function
)
673 if (info
->function_end
!= (bfd_vma
) -1
674 && info
->function_end
< endval
)
675 endval
= info
->function_end
;
676 if (! stab_emit_pending_vars (dhandle
, info
)
677 || ! debug_end_function (dhandle
, endval
))
679 info
->function_end
= (bfd_vma
) -1;
681 /* For stabs in sections, line numbers and block addresses
682 are offsets from the start of the function. */
684 info
->function_start_offset
= value
;
685 info
->within_function
= true;
688 if (! parse_stab_string (dhandle
, info
, type
, desc
, value
, string
, string_end
))
694 if (string
!= NULL
&& strcmp (string
, "gcc2_compiled.") == 0)
695 info
->gcc_compiled
= 2;
696 else if (string
!= NULL
&& strcmp (string
, "gcc_compiled.") == 0)
697 info
->gcc_compiled
= 1;
699 info
->n_opt_found
= true;
712 /* Parse the stabs string. */
715 parse_stab_string (void *dhandle
, struct stab_handle
*info
, int stabtype
,
716 int desc ATTRIBUTE_UNUSED
, bfd_vma value
,
717 const char *string
, const char * string_end
)
727 p
= strchr (string
, ':');
742 /* FIXME: Sometimes the special C++ names start with '.'. */
744 if (string
[0] == '$')
752 /* Was: name = "vptr"; */
758 /* This was an anonymous type that was never fixed up. */
761 /* SunPRO (3.0 at least) static variable encoding. */
764 warn_stab (string
, _("unknown C++ encoded name"));
771 if (p
== string
|| (string
[0] == ' ' && p
== string
+ 1))
774 name
= savestring (dhandle
, string
, p
- string
);
778 if (ISDIGIT (*p
) || *p
== '(' || *p
== '-')
791 /* c is a special case, not followed by a type-number.
792 SYMBOL:c=iVALUE for an integer constant symbol.
793 SYMBOL:c=rVALUE for a floating constant symbol.
794 SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
795 e.g. "b:c=e6,0" for "const b = blob1"
796 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
806 /* Floating point constant. */
807 if (! debug_record_float_const (dhandle
, name
, atof (p
)))
811 /* Integer constant. */
812 /* Defining integer constants this way is kind of silly,
813 since 'e' constants allows the compiler to give not only
814 the value, but the type as well. C has at least int,
815 long, unsigned int, and long long as constant types;
816 other languages probably should have at least unsigned as
817 well as signed constants. */
818 if (! debug_record_int_const (dhandle
, name
, atoi (p
)))
822 /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
823 can be represented as integral.
824 e.g. "b:c=e6,0" for "const b = blob1"
825 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
826 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
827 &p
, (debug_type
**) NULL
, string_end
);
828 if (dtype
== DEBUG_TYPE_NULL
)
835 if (! debug_record_typed_const (dhandle
, name
, dtype
, atoi (p
)))
846 /* The name of a caught exception. */
847 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
848 &p
, (debug_type
**) NULL
, string_end
);
849 if (dtype
== DEBUG_TYPE_NULL
)
851 if (! debug_record_label (dhandle
, name
, dtype
, value
))
857 /* A function definition. */
858 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
859 (debug_type
**) NULL
, string_end
);
860 if (dtype
== DEBUG_TYPE_NULL
)
862 if (! debug_record_function (dhandle
, name
, dtype
, type
== 'F', value
))
865 /* Sun acc puts declared types of arguments here. We don't care
866 about their actual types (FIXME -- we should remember the whole
867 function prototype), but the list may define some new types
868 that we have to remember, so we must scan it now. */
872 if (parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
873 (debug_type
**) NULL
, string_end
)
884 /* A global symbol. The value must be extracted from the
886 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
887 (debug_type
**) NULL
, string_end
);
888 if (dtype
== DEBUG_TYPE_NULL
)
895 leading
= bfd_get_symbol_leading_char (info
->abfd
);
896 for (c
= info
->symcount
, ps
= info
->syms
; c
> 0; --c
, ++ps
)
900 n
= bfd_asymbol_name (*ps
);
901 if (leading
!= '\0' && *n
== leading
)
903 if (*n
== *name
&& strcmp (n
, name
) == 0)
908 value
= bfd_asymbol_value (*ps
);
911 if (! stab_record_variable (dhandle
, info
, name
, dtype
, DEBUG_GLOBAL
,
917 /* This case is faked by a conditional above, when there is no
918 code letter in the dbx data. Dbx data never actually
922 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
923 (debug_type
**) NULL
, string_end
);
924 if (dtype
== DEBUG_TYPE_NULL
)
926 if (! stab_record_variable (dhandle
, info
, name
, dtype
, DEBUG_LOCAL
,
932 /* A function parameter. */
934 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
935 (debug_type
**) NULL
, string_end
);
938 /* pF is a two-letter code that means a function parameter in
939 Fortran. The type-number specifies the type of the return
940 value. Translate it into a pointer-to-function type. */
942 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
943 (debug_type
**) NULL
, string_end
);
944 if (dtype
!= DEBUG_TYPE_NULL
)
948 ftype
= debug_make_function_type (dhandle
, dtype
,
949 (debug_type
*) NULL
, false);
950 dtype
= debug_make_pointer_type (dhandle
, ftype
);
953 if (dtype
== DEBUG_TYPE_NULL
)
955 if (! debug_record_parameter (dhandle
, name
, dtype
, DEBUG_PARM_STACK
,
959 /* FIXME: At this point gdb considers rearranging the parameter
960 address on a big endian machine if it is smaller than an int.
961 We have no way to do that, since we don't really know much
966 if (stabtype
== N_FUN
)
968 /* Prototype of a function referenced by this file. */
972 if (parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
973 (debug_type
**) NULL
, string_end
)
981 /* Parameter which is in a register. */
982 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
983 (debug_type
**) NULL
, string_end
);
984 if (dtype
== DEBUG_TYPE_NULL
)
986 if (! debug_record_parameter (dhandle
, name
, dtype
, DEBUG_PARM_REG
,
992 /* Register variable (either global or local). */
993 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
994 (debug_type
**) NULL
, string_end
);
995 if (dtype
== DEBUG_TYPE_NULL
)
997 if (! stab_record_variable (dhandle
, info
, name
, dtype
, DEBUG_REGISTER
,
1001 /* FIXME: At this point gdb checks to combine pairs of 'p' and
1002 'r' stabs into a single 'P' stab. */
1006 /* Static symbol at top level of file. */
1007 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
1008 (debug_type
**) NULL
, string_end
);
1009 if (dtype
== DEBUG_TYPE_NULL
)
1011 if (! stab_record_variable (dhandle
, info
, name
, dtype
, DEBUG_STATIC
,
1018 dtype
= parse_stab_type (dhandle
, info
, name
, &p
, &slot
, string_end
);
1019 if (dtype
== DEBUG_TYPE_NULL
)
1023 /* A nameless type. Nothing to do. */
1027 dtype
= debug_name_type (dhandle
, name
, dtype
);
1028 if (dtype
== DEBUG_TYPE_NULL
)
1037 /* Struct, union, or enum tag. For GNU C++, this can be followed
1038 by 't' which means we are typedef'ing it as well. */
1042 /* FIXME: gdb sets synonym to TRUE if the current language
1051 dtype
= parse_stab_type (dhandle
, info
, name
, &p
, &slot
, string_end
);
1052 if (dtype
== DEBUG_TYPE_NULL
)
1057 /* INFO->SELF_CROSSREF is set by parse_stab_type if this type is
1058 a cross reference to itself. These are generated by some
1060 self_crossref
= info
->self_crossref
;
1062 dtype
= debug_tag_type (dhandle
, name
, dtype
);
1063 if (dtype
== DEBUG_TYPE_NULL
)
1068 /* See if we have a cross reference to this tag which we can now
1069 fill in. Avoid filling in a cross reference to ourselves,
1070 because that would lead to circular debugging information. */
1071 if (! self_crossref
)
1073 register struct stab_tag
**pst
;
1075 for (pst
= &info
->tags
; *pst
!= NULL
; pst
= &(*pst
)->next
)
1077 if ((*pst
)->name
[0] == name
[0]
1078 && strcmp ((*pst
)->name
, name
) == 0)
1080 (*pst
)->slot
= dtype
;
1081 *pst
= (*pst
)->next
;
1089 dtype
= debug_name_type (dhandle
, name
, dtype
);
1090 if (dtype
== DEBUG_TYPE_NULL
)
1100 /* Static symbol of local scope */
1101 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
1102 (debug_type
**) NULL
, string_end
);
1103 if (dtype
== DEBUG_TYPE_NULL
)
1105 /* FIXME: gdb checks os9k_stabs here. */
1106 if (! stab_record_variable (dhandle
, info
, name
, dtype
,
1107 DEBUG_LOCAL_STATIC
, value
))
1112 /* Reference parameter. */
1113 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
1114 (debug_type
**) NULL
, string_end
);
1115 if (dtype
== DEBUG_TYPE_NULL
)
1117 if (! debug_record_parameter (dhandle
, name
, dtype
, DEBUG_PARM_REFERENCE
,
1123 /* Reference parameter which is in a register. */
1124 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
1125 (debug_type
**) NULL
, string_end
);
1126 if (dtype
== DEBUG_TYPE_NULL
)
1128 if (! debug_record_parameter (dhandle
, name
, dtype
, DEBUG_PARM_REF_REG
,
1134 /* This is used by Sun FORTRAN for "function result value".
1135 Sun claims ("dbx and dbxtool interfaces", 2nd ed)
1136 that Pascal uses it too, but when I tried it Pascal used
1137 "x:3" (local symbol) instead. */
1138 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, &p
,
1139 (debug_type
**) NULL
, string_end
);
1140 if (dtype
== DEBUG_TYPE_NULL
)
1142 if (! stab_record_variable (dhandle
, info
, name
, dtype
, DEBUG_LOCAL
,
1148 /* SUNPro C++ Namespace =Yn0. */
1149 /* Skip the namespace mapping, as it is not used now. */
1150 if (*p
++ != 0 && *p
++ == 'n' && *p
++ == '0')
1153 while (*p
&& *p
!= ';')
1158 /* TODO SUNPro C++ support:
1159 Support default arguments after F,P parameters
1160 Ya = Anonymous unions
1161 YM,YD = Pointers to class members
1163 YR = Run-time type information (RTTI) */
1172 /* FIXME: gdb converts structure values to structure pointers in a
1173 couple of cases, depending upon the target. */
1178 /* Parse a stabs type. The typename argument is non-NULL if this is a
1179 typedef or a tag definition. The pp argument points to the stab
1180 string, and is updated. The slotp argument points to a place to
1181 store the slot used if the type is being defined. */
1184 parse_stab_type (void * dhandle
,
1185 struct stab_handle
* info
,
1186 const char * type_name
,
1188 debug_type
** slotp
,
1203 return DEBUG_TYPE_NULL
;
1208 info
->self_crossref
= false;
1210 /* Read type number if present. The type number may be omitted.
1211 for instance in a two-dimensional array declared with type
1212 "ar1;1;10;ar1;1;10;4". */
1213 if (! ISDIGIT (**pp
) && **pp
!= '(' && **pp
!= '-')
1215 /* 'typenums=' not present, type is anonymous. Read and return
1216 the definition, but don't put it in the type vector. */
1217 typenums
[0] = typenums
[1] = -1;
1221 if (! parse_stab_type_number (pp
, typenums
, p_end
))
1222 return DEBUG_TYPE_NULL
;
1225 /* Type is not being defined here. Either it already
1226 exists, or this is a forward reference to it. */
1227 return stab_find_type (dhandle
, info
, typenums
);
1229 /* Only set the slot if the type is being defined. This means
1230 that the mapping from type numbers to types will only record
1231 the name of the typedef which defines a type. If we don't do
1232 this, then something like
1235 will record that i is of type foo. Unfortunately, stabs
1236 information is ambiguous about variable types. For this code,
1240 the stabs information records both i and j as having the same
1241 type. This could be fixed by patching the compiler. */
1242 if (slotp
!= NULL
&& typenums
[0] >= 0 && typenums
[1] >= 0)
1243 *slotp
= stab_find_slot (dhandle
, info
, typenums
);
1245 /* Type is being defined here. */
1251 const char *p
= *pp
+ 1;
1254 if (ISDIGIT (*p
) || *p
== '(' || *p
== '-')
1258 /* Type attributes. */
1261 for (; *p
!= ';'; ++p
)
1266 return DEBUG_TYPE_NULL
;
1274 size
= atoi (attr
+ 1);
1275 size
/= 8; /* Size is in bits. We store it in bytes. */
1286 return DEBUG_TYPE_NULL
;
1289 /* Ignore unrecognized type attributes, so future
1290 compilers can invent new ones. */
1303 enum debug_type_kind code
;
1304 const char *q1
, *q2
, *p
;
1306 /* A cross reference to another type. */
1310 code
= DEBUG_KIND_STRUCT
;
1313 code
= DEBUG_KIND_UNION
;
1316 code
= DEBUG_KIND_ENUM
;
1320 return DEBUG_TYPE_NULL
;
1323 /* Complain and keep going, so compilers can invent new
1324 cross-reference types. */
1325 warn_stab (orig
, _("unrecognized cross reference type"));
1326 code
= DEBUG_KIND_STRUCT
;
1331 q1
= strchr (*pp
, '<');
1332 p
= strchr (*pp
, ':');
1336 return DEBUG_TYPE_NULL
;
1338 if (q1
!= NULL
&& p
> q1
&& p
[1] == ':')
1342 for (q2
= q1
; *q2
!= '\0'; ++q2
)
1346 else if (*q2
== '>')
1348 else if (*q2
== ':' && nest
== 0)
1355 return DEBUG_TYPE_NULL
;
1359 /* Some versions of g++ can emit stabs like
1361 which define structures in terms of themselves. We need to
1362 tell the caller to avoid building a circular structure. */
1363 if (type_name
!= NULL
1364 && strncmp (type_name
, *pp
, p
- *pp
) == 0
1365 && type_name
[p
- *pp
] == '\0')
1366 info
->self_crossref
= true;
1368 dtype
= stab_find_tagged_type (dhandle
, info
, *pp
, p
- *pp
, code
);
1390 /* This type is defined as another type. */
1394 /* Peek ahead at the number to detect void. */
1395 if (! parse_stab_type_number (pp
, xtypenums
, p_end
))
1396 return DEBUG_TYPE_NULL
;
1398 if (typenums
[0] == xtypenums
[0] && typenums
[1] == xtypenums
[1])
1400 /* This type is being defined as itself, which means that
1402 dtype
= debug_make_void_type (dhandle
);
1408 /* Go back to the number and have parse_stab_type get it.
1409 This means that we can deal with something like
1410 t(1,2)=(3,4)=... which the Lucid compiler uses. */
1411 dtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
1412 pp
, (debug_type
**) NULL
, p_end
);
1413 if (dtype
== DEBUG_TYPE_NULL
)
1414 return DEBUG_TYPE_NULL
;
1417 if (typenums
[0] != -1)
1419 if (! stab_record_type (dhandle
, info
, typenums
, dtype
))
1420 return DEBUG_TYPE_NULL
;
1427 dtype
= debug_make_pointer_type (dhandle
,
1428 parse_stab_type (dhandle
, info
,
1429 (const char *) NULL
,
1431 (debug_type
**) NULL
,
1436 /* Reference to another type. */
1437 dtype
= (debug_make_reference_type
1439 parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
1440 (debug_type
**) NULL
, p_end
)));
1444 /* Function returning another type. */
1445 /* FIXME: gdb checks os9k_stabs here. */
1446 dtype
= (debug_make_function_type
1448 parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
1449 (debug_type
**) NULL
, p_end
),
1450 (debug_type
*) NULL
, false));
1454 /* Const qualifier on some type (Sun). */
1455 /* FIXME: gdb accepts 'c' here if os9k_stabs. */
1456 dtype
= debug_make_const_type (dhandle
,
1457 parse_stab_type (dhandle
, info
,
1458 (const char *) NULL
,
1460 (debug_type
**) NULL
,
1465 /* Volatile qual on some type (Sun). */
1466 /* FIXME: gdb accepts 'i' here if os9k_stabs. */
1467 dtype
= (debug_make_volatile_type
1469 parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
1470 (debug_type
**) NULL
, p_end
)));
1474 /* Offset (class & variable) type. This is used for a pointer
1475 relative to an object. */
1482 domain
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
1483 (debug_type
**) NULL
, p_end
);
1484 if (domain
== DEBUG_TYPE_NULL
)
1485 return DEBUG_TYPE_NULL
;
1490 return DEBUG_TYPE_NULL
;
1494 memtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
1495 (debug_type
**) NULL
, p_end
);
1496 if (memtype
== DEBUG_TYPE_NULL
)
1497 return DEBUG_TYPE_NULL
;
1499 dtype
= debug_make_offset_type (dhandle
, domain
, memtype
);
1504 /* Method (class & fn) type. */
1507 debug_type return_type
;
1510 return_type
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
1511 pp
, (debug_type
**) NULL
, p_end
);
1512 if (return_type
== DEBUG_TYPE_NULL
)
1513 return DEBUG_TYPE_NULL
;
1517 return DEBUG_TYPE_NULL
;
1520 dtype
= debug_make_method_type (dhandle
, return_type
,
1522 (debug_type
*) NULL
, false);
1527 debug_type return_type
;
1528 debug_type
*args
, *xargs
;
1533 domain
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
1534 pp
, (debug_type
**) NULL
, p_end
);
1535 if (domain
== DEBUG_TYPE_NULL
)
1536 return DEBUG_TYPE_NULL
;
1541 return DEBUG_TYPE_NULL
;
1545 return_type
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
1546 pp
, (debug_type
**) NULL
, p_end
);
1547 if (return_type
== DEBUG_TYPE_NULL
)
1548 return DEBUG_TYPE_NULL
;
1551 args
= xmalloc (alloc
* sizeof (*args
));
1559 return DEBUG_TYPE_NULL
;
1566 args
= xrealloc (args
, alloc
* sizeof (*args
));
1569 args
[n
] = parse_stab_type (dhandle
, info
, (const char *) NULL
,
1570 pp
, (debug_type
**) NULL
, p_end
);
1571 if (args
[n
] == DEBUG_TYPE_NULL
)
1574 return DEBUG_TYPE_NULL
;
1580 /* If the last type is not void, then this function takes a
1581 variable number of arguments. Otherwise, we must strip
1584 || debug_get_type_kind (dhandle
, args
[n
- 1]) != DEBUG_KIND_VOID
)
1592 args
[n
] = DEBUG_TYPE_NULL
;
1593 xargs
= debug_xalloc (dhandle
, (n
+ 1) * sizeof (*args
));
1594 memcpy (xargs
, args
, (n
+ 1) * sizeof (*args
));
1597 dtype
= debug_make_method_type (dhandle
, return_type
, domain
, xargs
,
1604 dtype
= parse_stab_range_type (dhandle
, info
, type_name
, pp
, typenums
, p_end
);
1608 /* FIXME: gdb checks os9k_stabs here. */
1609 /* Sun ACC builtin int type. */
1610 dtype
= parse_stab_sun_builtin_type (dhandle
, pp
, p_end
);
1614 /* Sun ACC builtin float type. */
1615 dtype
= parse_stab_sun_floating_type (dhandle
, pp
, p_end
);
1619 /* Enumeration type. */
1620 dtype
= parse_stab_enum_type (dhandle
, pp
, p_end
);
1625 /* Struct or union type. */
1626 dtype
= parse_stab_struct_type (dhandle
, info
, type_name
, pp
,
1627 descriptor
== 's', typenums
, p_end
);
1635 return DEBUG_TYPE_NULL
;
1639 dtype
= parse_stab_array_type (dhandle
, info
, pp
, stringp
, p_end
);
1643 dtype
= debug_make_set_type (dhandle
,
1644 parse_stab_type (dhandle
, info
,
1645 (const char *) NULL
,
1647 (debug_type
**) NULL
,
1654 return DEBUG_TYPE_NULL
;
1657 if (dtype
== DEBUG_TYPE_NULL
)
1658 return DEBUG_TYPE_NULL
;
1660 if (typenums
[0] != -1)
1662 if (! stab_record_type (dhandle
, info
, typenums
, dtype
))
1663 return DEBUG_TYPE_NULL
;
1668 if (! debug_record_type_size (dhandle
, dtype
, (unsigned int) size
))
1669 return DEBUG_TYPE_NULL
;
1675 /* Read a number by which a type is referred to in dbx data, or
1676 perhaps read a pair (FILENUM, TYPENUM) in parentheses. Just a
1677 single number N is equivalent to (0,N). Return the two numbers by
1678 storing them in the vector TYPENUMS. */
1681 parse_stab_type_number (const char **pp
, int *typenums
, const char *p_end
)
1690 typenums
[1] = (int) parse_number (pp
, (bool *) NULL
, p_end
);
1695 typenums
[0] = (int) parse_number (pp
, (bool *) NULL
, p_end
);
1703 typenums
[1] = (int) parse_number (pp
, (bool *) NULL
, p_end
);
1714 /* Parse a range type. */
1717 parse_stab_range_type (void * dhandle
,
1718 struct stab_handle
* info
,
1719 const char * type_name
,
1721 const int * typenums
,
1727 debug_type index_type
;
1728 const char *s2
, *s3
;
1729 bfd_signed_vma n2
, n3
;
1734 return DEBUG_TYPE_NULL
;
1736 index_type
= DEBUG_TYPE_NULL
;
1738 /* First comes a type we are a subrange of.
1739 In C it is usually 0, 1 or the type being defined. */
1740 if (! parse_stab_type_number (pp
, rangenums
, p_end
))
1741 return DEBUG_TYPE_NULL
;
1743 self_subrange
= (rangenums
[0] == typenums
[0]
1744 && rangenums
[1] == typenums
[1]);
1749 index_type
= parse_stab_type (dhandle
, info
, (const char *) NULL
,
1750 pp
, (debug_type
**) NULL
, p_end
);
1751 if (index_type
== DEBUG_TYPE_NULL
)
1752 return DEBUG_TYPE_NULL
;
1758 /* The remaining two operands are usually lower and upper bounds of
1759 the range. But in some special cases they mean something else. */
1761 n2
= parse_number (pp
, &ov2
, p_end
);
1765 return DEBUG_TYPE_NULL
;
1770 n3
= parse_number (pp
, &ov3
, p_end
);
1774 return DEBUG_TYPE_NULL
;
1780 /* gcc will emit range stabs for long long types. Handle this
1781 as a special case. FIXME: This needs to be more general. */
1782 #define LLLOW "01000000000000000000000;"
1783 #define LLHIGH "0777777777777777777777;"
1784 #define ULLHIGH "01777777777777777777777;"
1785 if (index_type
== DEBUG_TYPE_NULL
)
1787 if (startswith (s2
, LLLOW
)
1788 && startswith (s3
, LLHIGH
))
1789 return debug_make_int_type (dhandle
, 8, false);
1792 && startswith (s3
, ULLHIGH
))
1793 return debug_make_int_type (dhandle
, 8, true);
1796 warn_stab (orig
, _("numeric overflow"));
1799 if (index_type
== DEBUG_TYPE_NULL
)
1801 /* A type defined as a subrange of itself, with both bounds 0,
1803 if (self_subrange
&& n2
== 0 && n3
== 0)
1804 return debug_make_void_type (dhandle
);
1806 /* A type defined as a subrange of itself, with n2 positive and
1807 n3 zero, is a complex type, and n2 is the number of bytes. */
1808 if (self_subrange
&& n3
== 0 && n2
> 0)
1809 return debug_make_complex_type (dhandle
, n2
);
1811 /* If n3 is zero and n2 is positive, this is a floating point
1812 type, and n2 is the number of bytes. */
1813 if (n3
== 0 && n2
> 0)
1814 return debug_make_float_type (dhandle
, n2
);
1816 /* If the upper bound is -1, this is an unsigned int. */
1817 if (n2
== 0 && n3
== -1)
1819 /* When gcc is used with -gstabs, but not -gstabs+, it will emit
1820 long long int:t6=r1;0;-1;
1821 long long unsigned int:t7=r1;0;-1;
1822 We hack here to handle this reasonably. */
1823 if (type_name
!= NULL
)
1825 if (strcmp (type_name
, "long long int") == 0)
1826 return debug_make_int_type (dhandle
, 8, false);
1827 else if (strcmp (type_name
, "long long unsigned int") == 0)
1828 return debug_make_int_type (dhandle
, 8, true);
1830 /* FIXME: The size here really depends upon the target. */
1831 return debug_make_int_type (dhandle
, 4, true);
1834 /* A range of 0 to 127 is char. */
1835 if (self_subrange
&& n2
== 0 && n3
== 127)
1836 return debug_make_int_type (dhandle
, 1, false);
1838 /* FIXME: gdb checks for the language CHILL here. */
1843 return debug_make_int_type (dhandle
, - n3
, true);
1844 else if (n3
== 0xff)
1845 return debug_make_int_type (dhandle
, 1, true);
1846 else if (n3
== 0xffff)
1847 return debug_make_int_type (dhandle
, 2, true);
1848 else if (n3
== (bfd_signed_vma
) 0xffffffff)
1849 return debug_make_int_type (dhandle
, 4, true);
1851 else if (n3
== (bfd_signed_vma
) 0xffffffffffffffffLL
)
1852 return debug_make_int_type (dhandle
, 8, true);
1857 && (self_subrange
|| n2
== -8))
1858 return debug_make_int_type (dhandle
, - n2
, true);
1859 else if (n2
== - n3
- 1 || n2
== n3
+ 1)
1862 return debug_make_int_type (dhandle
, 1, false);
1863 else if (n3
== 0x7fff)
1864 return debug_make_int_type (dhandle
, 2, false);
1865 else if (n3
== 0x7fffffff)
1866 return debug_make_int_type (dhandle
, 4, false);
1868 else if (n3
== ((((bfd_vma
) 0x7fffffff) << 32) | 0xffffffff))
1869 return debug_make_int_type (dhandle
, 8, false);
1874 /* At this point I don't have the faintest idea how to deal with a
1875 self_subrange type; I'm going to assume that this is used as an
1876 idiom, and that all of them are special cases. So . . . */
1880 return DEBUG_TYPE_NULL
;
1883 index_type
= stab_find_type (dhandle
, info
, rangenums
);
1884 if (index_type
== DEBUG_TYPE_NULL
)
1886 /* Does this actually ever happen? Is that why we are worrying
1887 about dealing with it rather than just calling error_type? */
1888 warn_stab (orig
, _("missing index type"));
1889 index_type
= debug_make_int_type (dhandle
, 4, false);
1892 return debug_make_range_type (dhandle
, index_type
, n2
, n3
);
1895 /* Sun's ACC uses a somewhat saner method for specifying the builtin
1896 typedefs in every file (for int, long, etc):
1898 type = b <signed> <width>; <offset>; <nbits>
1899 signed = u or s. Possible c in addition to u or s (for char?).
1900 offset = offset from high order bit to start bit of type.
1901 width is # bytes in object of this type, nbits is # bits in type.
1903 The width/offset stuff appears to be for small objects stored in
1904 larger ones (e.g. `shorts' in `int' registers). We ignore it for now,
1908 parse_stab_sun_builtin_type (void *dhandle
, const char **pp
, const char * p_end
)
1916 return DEBUG_TYPE_NULL
;
1928 return DEBUG_TYPE_NULL
;
1932 /* OpenSolaris source code indicates that one of "cbv" characters
1933 can come next and specify the intrinsic 'iformat' encoding.
1934 'c' is character encoding, 'b' is boolean encoding, and 'v' is
1935 varargs encoding. This field can be safely ignored because
1936 the type of the field is determined from the bitwidth extracted
1938 if (**pp
== 'c' || **pp
== 'b' || **pp
== 'v')
1941 /* The first number appears to be the number of bytes occupied
1942 by this type, except that unsigned short is 4 instead of 2.
1943 Since this information is redundant with the third number,
1944 we will ignore it. */
1945 (void) parse_number (pp
, (bool *) NULL
, p_end
);
1949 return DEBUG_TYPE_NULL
;
1953 /* The second number is always 0, so ignore it too. */
1954 (void) parse_number (pp
, (bool *) NULL
, p_end
);
1958 return DEBUG_TYPE_NULL
;
1962 /* The third number is the number of bits for this type. */
1963 bits
= parse_number (pp
, (bool *) NULL
, p_end
);
1965 /* The type *should* end with a semicolon. If it are embedded
1966 in a larger type the semicolon may be the only way to know where
1967 the type ends. If this type is at the end of the stabstring we
1968 can deal with the omitted semicolon (but we don't have to like
1969 it). Don't bother to complain(), Sun's compiler omits the semicolon
1975 return debug_make_void_type (dhandle
);
1977 return debug_make_int_type (dhandle
, bits
/ 8, unsignedp
);
1980 /* Parse a builtin floating type generated by the Sun compiler. */
1983 parse_stab_sun_floating_type (void *dhandle
, const char **pp
, const char *p_end
)
1991 return DEBUG_TYPE_NULL
;
1993 /* The first number has more details about the type, for example
1995 details
= parse_number (pp
, (bool *) NULL
, p_end
);
1999 return DEBUG_TYPE_NULL
;
2002 /* The second number is the number of bytes occupied by this type */
2003 bytes
= parse_number (pp
, (bool *) NULL
, p_end
);
2007 return DEBUG_TYPE_NULL
;
2010 if (details
== NF_COMPLEX
2011 || details
== NF_COMPLEX16
2012 || details
== NF_COMPLEX32
)
2013 return debug_make_complex_type (dhandle
, bytes
);
2015 return debug_make_float_type (dhandle
, bytes
);
2018 /* Handle an enum type. */
2021 parse_stab_enum_type (void *dhandle
, const char **pp
, const char * p_end
)
2024 const char **names
, **xnames
;
2025 bfd_signed_vma
*values
, *xvalues
;
2031 return DEBUG_TYPE_NULL
;
2033 /* FIXME: gdb checks os9k_stabs here. */
2035 /* The aix4 compiler emits an extra field before the enum members;
2036 my guess is it's a type of some sort. Just ignore it. */
2039 while (**pp
!= ':' && **pp
!= 0)
2045 return DEBUG_TYPE_NULL
;
2050 /* Read the value-names and their values.
2051 The input syntax is NAME:VALUE,NAME:VALUE, and so on.
2052 A semicolon or comma instead of a NAME means the end. */
2054 names
= xmalloc (alloc
* sizeof (*names
));
2055 values
= xmalloc (alloc
* sizeof (*values
));
2057 while (**pp
!= '\0' && **pp
!= ';' && **pp
!= ',')
2064 while (*p
!= ':' && *p
!= 0)
2072 return DEBUG_TYPE_NULL
;
2075 name
= savestring (dhandle
, *pp
, p
- *pp
);
2078 val
= (bfd_signed_vma
) parse_number (pp
, (bool *) NULL
, p_end
);
2084 return DEBUG_TYPE_NULL
;
2091 names
= xrealloc (names
, alloc
* sizeof (*names
));
2092 values
= xrealloc (values
, alloc
* sizeof (*values
));
2102 xnames
= debug_xalloc (dhandle
, (n
+ 1) * sizeof (*names
));
2103 memcpy (xnames
, names
, (n
+ 1) * sizeof (*names
));
2105 xvalues
= debug_xalloc (dhandle
, (n
+ 1) * sizeof (*names
));
2106 memcpy (xvalues
, values
, (n
+ 1) * sizeof (*names
));
2112 return debug_make_enum_type (dhandle
, xnames
, xvalues
);
2115 /* Read the description of a structure (or union type) and return an object
2116 describing the type.
2118 PP points to a character pointer that points to the next unconsumed token
2119 in the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;",
2120 *PP will point to "4a:1,0,32;;". */
2123 parse_stab_struct_type (void *dhandle
,
2124 struct stab_handle
*info
,
2125 const char *tagname
,
2128 const int *typenums
,
2132 debug_baseclass
*baseclasses
;
2133 debug_field
*fields
= NULL
;
2135 debug_method
*methods
;
2136 debug_type vptrbase
;
2140 size
= parse_number (pp
, (bool *) NULL
, p_end
);
2142 /* Get the other information. */
2143 if (! parse_stab_baseclasses (dhandle
, info
, pp
, &baseclasses
, p_end
)
2144 || ! parse_stab_struct_fields (dhandle
, info
, pp
, &fields
, &statics
, p_end
)
2145 || ! parse_stab_members (dhandle
, info
, tagname
, pp
, typenums
, &methods
, p_end
)
2146 || ! parse_stab_tilde_field (dhandle
, info
, pp
, typenums
, &vptrbase
,
2148 return DEBUG_TYPE_NULL
;
2151 && baseclasses
== NULL
2153 && vptrbase
== DEBUG_TYPE_NULL
2155 return debug_make_struct_type (dhandle
, structp
, size
, fields
);
2157 return debug_make_object_type (dhandle
, structp
, size
, fields
, baseclasses
,
2158 methods
, vptrbase
, ownvptr
);
2161 /* The stabs for C++ derived classes contain baseclass information which
2162 is marked by a '!' character after the total size. This function is
2163 called when we encounter the baseclass marker, and slurps up all the
2164 baseclass information.
2166 Immediately following the '!' marker is the number of base classes that
2167 the class is derived from, followed by information for each base class.
2168 For each base class, there are two visibility specifiers, a bit offset
2169 to the base class information within the derived class, a reference to
2170 the type for the base class, and a terminating semicolon.
2172 A typical example, with two base classes, would be "!2,020,19;0264,21;".
2174 Baseclass information marker __________________|| | | | | | |
2175 Number of baseclasses __________________________| | | | | | |
2176 Visibility specifiers (2) ________________________| | | | | |
2177 Offset in bits from start of class _________________| | | | |
2178 Type number for base class ___________________________| | | |
2179 Visibility specifiers (2) _______________________________| | |
2180 Offset in bits from start of class ________________________| |
2181 Type number of base class ____________________________________|
2183 Return TRUE for success, FALSE for failure. */
2186 parse_stab_baseclasses (void * dhandle
,
2187 struct stab_handle
* info
,
2189 debug_baseclass
** retp
,
2194 debug_baseclass
*classes
;
2204 /* No base classes. */
2209 c
= (unsigned int) parse_number (pp
, (bool *) NULL
, p_end
);
2218 classes
= debug_xalloc (dhandle
, (c
+ 1) * sizeof (*classes
));
2220 for (i
= 0; i
< c
; i
++)
2223 enum debug_visibility visibility
;
2239 warn_stab (orig
, _("unknown virtual character for baseclass"));
2248 visibility
= DEBUG_VISIBILITY_PRIVATE
;
2251 visibility
= DEBUG_VISIBILITY_PROTECTED
;
2254 visibility
= DEBUG_VISIBILITY_PUBLIC
;
2260 warn_stab (orig
, _("unknown visibility character for baseclass"));
2261 visibility
= DEBUG_VISIBILITY_PUBLIC
;
2266 /* The remaining value is the bit offset of the portion of the
2267 object corresponding to this baseclass. Always zero in the
2268 absence of multiple inheritance. */
2269 bitpos
= parse_number (pp
, (bool *) NULL
, p_end
);
2277 type
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
2278 (debug_type
**) NULL
, p_end
);
2279 if (type
== DEBUG_TYPE_NULL
)
2282 classes
[i
] = debug_make_baseclass (dhandle
, type
, bitpos
, is_virtual
,
2284 if (classes
[i
] == DEBUG_BASECLASS_NULL
)
2292 classes
[i
] = DEBUG_BASECLASS_NULL
;
2299 /* Read struct or class data fields. They have the form:
2301 NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2303 At the end, we see a semicolon instead of a field.
2305 In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2308 The optional VISIBILITY is one of:
2310 '/0' (VISIBILITY_PRIVATE)
2311 '/1' (VISIBILITY_PROTECTED)
2312 '/2' (VISIBILITY_PUBLIC)
2313 '/9' (VISIBILITY_IGNORE)
2315 or nothing, for C style fields with public visibility.
2317 Returns 1 for success, 0 for failure. */
2320 parse_stab_struct_fields (void *dhandle
,
2321 struct stab_handle
*info
,
2329 debug_field
*fields
, *xfields
;
2342 fields
= xmalloc (alloc
* sizeof (*fields
));
2345 /* FIXME: gdb checks os9k_stabs here. */
2349 /* Add 1 to c to leave room for NULL pointer at end. */
2353 fields
= xrealloc (fields
, alloc
* sizeof (*fields
));
2356 /* If it starts with CPLUS_MARKER it is a special abbreviation,
2357 unless the CPLUS_MARKER is followed by an underscore, in
2358 which case it is just the name of an anonymous type, which we
2359 should handle like any other type name. We accept either '$'
2360 or '.', because a field name can never contain one of these
2361 characters except as a CPLUS_MARKER. */
2363 if ((*p
== '$' || *p
== '.') && p
[1] != '_')
2366 if (! parse_stab_cpp_abbrev (dhandle
, info
, pp
, fields
+ c
, p_end
))
2375 /* Look for the ':' that separates the field name from the field
2376 values. Data members are delimited by a single ':', while member
2377 functions are delimited by a pair of ':'s. When we hit the member
2378 functions (if any), terminate scan loop and return. */
2380 p
= strchr (p
, ':');
2391 if (! parse_stab_one_struct_field (dhandle
, info
, pp
, p
, fields
+ c
,
2401 fields
[c
] = DEBUG_FIELD_NULL
;
2402 xfields
= debug_xalloc (dhandle
, (c
+ 1) * sizeof (*fields
));
2403 memcpy (xfields
, fields
, (c
+ 1) * sizeof (*fields
));
2411 /* Special GNU C++ name. */
2414 parse_stab_cpp_abbrev (void * dhandle
,
2415 struct stab_handle
* info
,
2424 const char *type_name
;
2429 *retp
= DEBUG_FIELD_NULL
;
2443 if (cpp_abbrev
== 0)
2450 /* At this point, *pp points to something like "22:23=*22...", where
2451 the type number before the ':' is the "context" and everything
2452 after is a regular type definition. Lookup the type, find it's
2453 name, and construct the field name. */
2455 context
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
2456 (debug_type
**) NULL
, p_end
);
2457 if (context
== DEBUG_TYPE_NULL
)
2463 /* $vf -- a virtual function table pointer. */
2467 /* $vb -- a virtual bsomethingorother */
2468 type_name
= debug_get_type_name (dhandle
, context
);
2469 if (type_name
== NULL
)
2471 warn_stab (orig
, _("unnamed $vb type"));
2474 len
= strlen (type_name
);
2475 name
= debug_xalloc (dhandle
, len
+ sizeof ("_vb$"));
2476 memcpy ((char *) name
, "_vb$", sizeof ("_vb$") - 1);
2477 memcpy ((char *) name
+ sizeof ("_vb$") - 1, type_name
, len
+ 1);
2480 warn_stab (orig
, _("unrecognized C++ abbreviation"));
2481 name
= "INVALID_CPLUSPLUS_ABBREV";
2492 type
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
2493 (debug_type
**) NULL
, p_end
);
2501 bitpos
= parse_number (pp
, (bool *) NULL
, p_end
);
2509 *retp
= debug_make_field (dhandle
, name
, type
, bitpos
, 0,
2510 DEBUG_VISIBILITY_PRIVATE
);
2511 if (*retp
== DEBUG_FIELD_NULL
)
2517 /* Parse a single field in a struct or union. */
2520 parse_stab_one_struct_field (void *dhandle
,
2521 struct stab_handle
*info
,
2530 enum debug_visibility visibility
;
2539 /* FIXME: gdb checks ARM_DEMANGLING here. */
2541 name
= savestring (dhandle
, *pp
, p
- *pp
);
2546 visibility
= DEBUG_VISIBILITY_PUBLIC
;
2553 visibility
= DEBUG_VISIBILITY_PRIVATE
;
2556 visibility
= DEBUG_VISIBILITY_PROTECTED
;
2559 visibility
= DEBUG_VISIBILITY_PUBLIC
;
2565 warn_stab (orig
, _("unknown visibility character for field"));
2566 visibility
= DEBUG_VISIBILITY_PUBLIC
;
2572 type
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
2573 (debug_type
**) NULL
, p_end
);
2574 if (type
== DEBUG_TYPE_NULL
)
2581 /* This is a static class member. */
2583 p
= strchr (*pp
, ';');
2590 varname
= savestring (dhandle
, *pp
, p
- *pp
);
2594 *retp
= debug_make_static_member (dhandle
, name
, type
, varname
,
2608 bitpos
= parse_number (pp
, (bool *) NULL
, p_end
);
2616 bitsize
= parse_number (pp
, (bool *) NULL
, p_end
);
2624 if (bitpos
== 0 && bitsize
== 0)
2626 /* This can happen in two cases: (1) at least for gcc 2.4.5 or
2627 so, it is a field which has been optimized out. The correct
2628 stab for this case is to use VISIBILITY_IGNORE, but that is a
2629 recent invention. (2) It is a 0-size array. For example
2630 union { int num; char str[0]; } foo. Printing "<no value>"
2631 for str in "p foo" is OK, since foo.str (and thus foo.str[3])
2632 will continue to work, and a 0-size array as a whole doesn't
2633 have any contents to print.
2635 I suspect this probably could also happen with gcc -gstabs
2636 (not -gstabs+) for static fields, and perhaps other C++
2637 extensions. Hopefully few people use -gstabs with gdb, since
2638 it is intended for dbx compatibility. */
2639 visibility
= DEBUG_VISIBILITY_IGNORE
;
2642 /* FIXME: gdb does some stuff here to mark fields as unpacked. */
2644 *retp
= debug_make_field (dhandle
, name
, type
, bitpos
, bitsize
, visibility
);
2649 /* Read member function stabs info for C++ classes. The form of each member
2652 NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
2654 An example with two member functions is:
2656 afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
2658 For the case of overloaded operators, the format is op$::*.funcs, where
2659 $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
2660 name (such as `+=') and `.' marks the end of the operator name. */
2663 parse_stab_members (void * dhandle
,
2664 struct stab_handle
* info
,
2665 const char * tagname
,
2667 const int * typenums
,
2668 debug_method
** retp
,
2672 debug_method
*methods
, *xmethods
;
2676 debug_method_variant
*variants
= NULL
, *xvariants
;
2677 char *argtypes
= NULL
;
2693 unsigned int allocvars
;
2694 debug_type look_ahead_type
;
2696 p
= strchr (*pp
, ':');
2697 if (p
== NULL
|| p
[1] != ':')
2700 /* FIXME: Some systems use something other than '$' here. */
2701 if ((*pp
)[0] != 'o' || (*pp
)[1] != 'p' || (*pp
)[2] != '$')
2703 name
= savestring (dhandle
, *pp
, p
- *pp
);
2708 /* This is a completely weird case. In order to stuff in the
2709 names that might contain colons (the usual name delimiter),
2710 Mike Tiemann defined a different name format which is
2711 signalled if the identifier is "op$". In that case, the
2712 format is "op$::XXXX." where XXXX is the name. This is
2713 used for names like "+" or "=". YUUUUUUUK! FIXME! */
2715 for (p
= *pp
; *p
!= '.' && *p
!= '\0'; p
++)
2722 name
= savestring (dhandle
, *pp
, p
- *pp
);
2727 variants
= xmalloc (allocvars
* sizeof (*variants
));
2730 look_ahead_type
= DEBUG_TYPE_NULL
;
2736 enum debug_visibility visibility
;
2737 bool constp
, volatilep
, staticp
;
2740 const char *physname
;
2743 if (look_ahead_type
!= DEBUG_TYPE_NULL
)
2745 /* g++ version 1 kludge */
2746 type
= look_ahead_type
;
2747 look_ahead_type
= DEBUG_TYPE_NULL
;
2751 type
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
2752 (debug_type
**) NULL
, p_end
);
2753 if (type
== DEBUG_TYPE_NULL
)
2764 p
= strchr (*pp
, ';');
2772 if (debug_get_type_kind (dhandle
, type
) == DEBUG_KIND_METHOD
2773 && debug_get_parameter_types (dhandle
, type
, &varargs
) == NULL
)
2776 argtypes
= savestring (dhandle
, *pp
, p
- *pp
);
2782 visibility
= DEBUG_VISIBILITY_PRIVATE
;
2785 visibility
= DEBUG_VISIBILITY_PROTECTED
;
2791 visibility
= DEBUG_VISIBILITY_PUBLIC
;
2801 /* Normal function. */
2805 /* const member function. */
2810 /* volatile member function. */
2815 /* const volatile member function. */
2823 /* File compiled with g++ version 1; no information. */
2826 warn_stab (orig
, _("const/volatile indicator missing"));
2834 /* virtual member function, followed by index. The sign
2835 bit is supposedly set to distinguish
2836 pointers-to-methods from virtual function indices. */
2838 voffset
= parse_number (pp
, (bool *) NULL
, p_end
);
2845 voffset
&= 0x7fffffff;
2847 if (**pp
== ';' || **pp
== '\0')
2849 /* Must be g++ version 1. */
2850 context
= DEBUG_TYPE_NULL
;
2854 /* Figure out from whence this virtual function
2855 came. It may belong to virtual function table of
2856 one of its baseclasses. */
2857 look_ahead_type
= parse_stab_type (dhandle
, info
,
2858 (const char *) NULL
,
2860 (debug_type
**) NULL
,
2864 /* g++ version 1 overloaded methods. */
2865 context
= DEBUG_TYPE_NULL
;
2869 context
= look_ahead_type
;
2870 look_ahead_type
= DEBUG_TYPE_NULL
;
2882 /* static member function. */
2886 context
= DEBUG_TYPE_NULL
;
2887 if (strncmp (argtypes
, name
, strlen (name
)) != 0)
2892 warn_stab (orig
, "member function type missing");
2894 context
= DEBUG_TYPE_NULL
;
2900 context
= DEBUG_TYPE_NULL
;
2904 /* If the type is not a stub, then the argtypes string is
2905 the physical name of the function. Otherwise the
2906 argtypes string is the mangled form of the argument
2907 types, and the full type and the physical name must be
2908 extracted from them. */
2909 physname
= argtypes
;
2912 debug_type class_type
, return_type
;
2914 class_type
= stab_find_type (dhandle
, info
, typenums
);
2915 if (class_type
== DEBUG_TYPE_NULL
)
2917 return_type
= debug_get_return_type (dhandle
, type
);
2918 if (return_type
== DEBUG_TYPE_NULL
)
2923 type
= parse_stab_argtypes (dhandle
, info
, class_type
, name
,
2924 tagname
, return_type
, argtypes
,
2925 constp
, volatilep
, &physname
);
2926 if (type
== DEBUG_TYPE_NULL
)
2930 if (cvars
+ 1 >= allocvars
)
2933 variants
= xrealloc (variants
, allocvars
* sizeof (*variants
));
2937 variants
[cvars
] = debug_make_method_variant (dhandle
, physname
,
2942 variants
[cvars
] = debug_make_static_method_variant (dhandle
,
2948 if (variants
[cvars
] == DEBUG_METHOD_VARIANT_NULL
)
2953 while (**pp
!= ';' && **pp
!= '\0');
2955 variants
[cvars
] = DEBUG_METHOD_VARIANT_NULL
;
2956 xvariants
= debug_xalloc (dhandle
, (cvars
+ 1) * sizeof (*variants
));
2957 memcpy (xvariants
, variants
, (cvars
+ 1) * sizeof (*variants
));
2966 methods
= xrealloc (methods
, alloc
* sizeof (*methods
));
2969 methods
[c
] = debug_make_method (dhandle
, name
, xvariants
);
2975 if (methods
!= NULL
)
2977 methods
[c
] = DEBUG_METHOD_NULL
;
2978 xmethods
= debug_xalloc (dhandle
, (c
+ 1) * sizeof (*methods
));
2979 memcpy (xmethods
, methods
, (c
+ 1) * sizeof (*methods
));
2993 /* Parse a string representing argument types for a method. Stabs
2994 tries to save space by packing argument types into a mangled
2995 string. This string should give us enough information to extract
2996 both argument types and the physical name of the function, given
3000 parse_stab_argtypes (void *dhandle
, struct stab_handle
*info
,
3001 debug_type class_type
, const char *fieldname
,
3002 const char *tagname
, debug_type return_type
,
3003 const char *argtypes
, bool constp
,
3004 bool volatilep
, const char **pphysname
)
3006 bool is_full_physname_constructor
;
3007 bool is_constructor
;
3012 unsigned int physname_len
= 0;
3014 /* Constructors are sometimes handled specially. */
3015 is_full_physname_constructor
= ((argtypes
[0] == '_'
3016 && argtypes
[1] == '_'
3017 && (ISDIGIT (argtypes
[2])
3018 || argtypes
[2] == 'Q'
3019 || argtypes
[2] == 't'))
3020 || startswith (argtypes
, "__ct"));
3022 is_constructor
= (is_full_physname_constructor
3024 && strcmp (fieldname
, tagname
) == 0));
3025 is_destructor
= ((argtypes
[0] == '_'
3026 && (argtypes
[1] == '$' || argtypes
[1] == '.')
3027 && argtypes
[2] == '_')
3028 || startswith (argtypes
, "__dt"));
3029 is_v3
= argtypes
[0] == '_' && argtypes
[1] == 'Z';
3031 if (!(is_destructor
|| is_full_physname_constructor
|| is_v3
))
3033 unsigned int len
, buf_len
;
3034 const char *const_prefix
;
3035 const char *volatile_prefix
;
3037 unsigned int mangled_name_len
;
3040 len
= tagname
== NULL
? 0 : strlen (tagname
);
3041 const_prefix
= constp
? "C" : "";
3042 volatile_prefix
= volatilep
? "V" : "";
3045 buf_len
= sprintf (buf
, "__%s%s", const_prefix
, volatile_prefix
);
3046 else if (tagname
!= NULL
&& strchr (tagname
, '<') != NULL
)
3048 /* Template methods are fully mangled. */
3049 buf_len
= sprintf (buf
, "__%s%s", const_prefix
, volatile_prefix
);
3054 buf_len
= sprintf (buf
, "__%s%s%d", const_prefix
, volatile_prefix
, len
);
3056 mangled_name_len
= ((is_constructor
? 0 : strlen (fieldname
))
3062 if (fieldname
[0] == 'o'
3063 && fieldname
[1] == 'p'
3064 && (fieldname
[2] == '$' || fieldname
[2] == '.'))
3066 /* Opname selection is no longer supported by libiberty's demangler. */
3067 return DEBUG_TYPE_NULL
;
3070 physname
= debug_xalloc (dhandle
, mangled_name_len
);
3074 strcpy (physname
, fieldname
);
3076 physname_len
= strlen (physname
);
3077 strcat (physname
, buf
);
3078 if (tagname
!= NULL
)
3079 strcat (physname
, tagname
);
3080 strcat (physname
, argtypes
);
3082 *pphysname
= physname
;
3085 if (*argtypes
== '\0' || is_destructor
)
3087 args
= debug_xalloc (dhandle
, sizeof (*args
));
3089 return debug_make_method_type (dhandle
, return_type
, class_type
, args
,
3093 args
= stab_demangle_argtypes (dhandle
, info
, *pphysname
, &varargs
, physname_len
);
3095 return DEBUG_TYPE_NULL
;
3097 return debug_make_method_type (dhandle
, return_type
, class_type
, args
,
3101 /* The tail end of stabs for C++ classes that contain a virtual function
3102 pointer contains a tilde, a %, and a type number.
3103 The type number refers to the base class (possibly this class itself) which
3104 contains the vtable pointer for the current class.
3106 This function is called when we have parsed all the method declarations,
3107 so we can look for the vptr base class info. */
3110 parse_stab_tilde_field (void *dhandle
,
3111 struct stab_handle
*info
,
3113 const int *typenums
,
3114 debug_type
*retvptrbase
,
3122 *retvptrbase
= DEBUG_TYPE_NULL
;
3123 *retownvptr
= false;
3129 /* If we are positioned at a ';', then skip it. */
3137 if (**pp
== '=' || **pp
== '+' || **pp
== '-')
3139 /* Obsolete flags that used to indicate the presence of
3140 constructors and/or destructors. */
3150 /* The next number is the type number of the base class (possibly
3151 our own class) which supplies the vtable for this class. */
3152 if (! parse_stab_type_number (pp
, vtypenums
, p_end
))
3155 if (vtypenums
[0] == typenums
[0]
3156 && vtypenums
[1] == typenums
[1])
3165 vtype
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
3166 (debug_type
**) NULL
, p_end
);
3167 for (p
= *pp
; *p
!= ';' && *p
!= '\0'; p
++)
3175 *retvptrbase
= vtype
;
3183 /* Read a definition of an array type. */
3186 parse_stab_array_type (void *dhandle
,
3187 struct stab_handle
*info
,
3195 debug_type index_type
;
3197 bfd_signed_vma lower
, upper
;
3198 debug_type element_type
;
3200 /* Format of an array type:
3201 "ar<index type>;lower;upper;<array_contents_type>".
3202 OS9000: "arlower,upper;<array_contents_type>".
3204 Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
3205 for these, produce a type like float[][]. */
3209 return DEBUG_TYPE_NULL
;
3211 /* FIXME: gdb checks os9k_stabs here. */
3213 /* If the index type is type 0, we take it as int. */
3215 if (! parse_stab_type_number (&p
, typenums
, p_end
))
3216 return DEBUG_TYPE_NULL
;
3218 if (typenums
[0] == 0 && typenums
[1] == 0 && **pp
!= '=')
3220 index_type
= debug_find_named_type (dhandle
, "int");
3221 if (index_type
== DEBUG_TYPE_NULL
)
3223 index_type
= debug_make_int_type (dhandle
, 4, false);
3224 if (index_type
== DEBUG_TYPE_NULL
)
3225 return DEBUG_TYPE_NULL
;
3231 index_type
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
3232 (debug_type
**) NULL
, p_end
);
3238 return DEBUG_TYPE_NULL
;
3244 if (! ISDIGIT (**pp
) && **pp
!= '-' && **pp
!= 0)
3250 lower
= (bfd_signed_vma
) parse_number (pp
, (bool *) NULL
, p_end
);
3254 return DEBUG_TYPE_NULL
;
3258 if (! ISDIGIT (**pp
) && **pp
!= '-' && **pp
!= 0)
3264 upper
= (bfd_signed_vma
) parse_number (pp
, (bool *) NULL
, p_end
);
3268 return DEBUG_TYPE_NULL
;
3272 element_type
= parse_stab_type (dhandle
, info
, (const char *) NULL
, pp
,
3273 (debug_type
**) NULL
, p_end
);
3274 if (element_type
== DEBUG_TYPE_NULL
)
3275 return DEBUG_TYPE_NULL
;
3283 return debug_make_array_type (dhandle
, element_type
, index_type
, lower
,
3287 /* This struct holds information about files we have seen using
3292 /* The next N_BINCL file. */
3293 struct bincl_file
*next
;
3294 /* The next N_BINCL on the stack. */
3295 struct bincl_file
*next_stack
;
3296 /* The file name. */
3298 /* The hash value. */
3300 /* The file index. */
3302 /* The list of types defined in this file. */
3303 struct stab_types
*file_types
;
3306 /* Start a new N_BINCL file, pushing it onto the stack. */
3309 push_bincl (void *dhandle
, struct stab_handle
*info
, const char *name
,
3312 struct bincl_file
*n
;
3314 n
= debug_xalloc (dhandle
, sizeof *n
);
3315 n
->next
= info
->bincl_list
;
3316 n
->next_stack
= info
->bincl_stack
;
3319 n
->file
= info
->files
;
3320 n
->file_types
= NULL
;
3321 info
->bincl_list
= n
;
3322 info
->bincl_stack
= n
;
3325 info
->file_types
= xrealloc (info
->file_types
,
3326 info
->files
* sizeof (*info
->file_types
));
3327 info
->file_types
[n
->file
] = NULL
;
3330 /* Finish an N_BINCL file, at an N_EINCL, popping the name off the
3334 pop_bincl (struct stab_handle
*info
)
3336 struct bincl_file
*o
;
3338 o
= info
->bincl_stack
;
3340 return info
->main_filename
;
3341 info
->bincl_stack
= o
->next_stack
;
3343 if (o
->file
>= info
->files
)
3344 return info
->main_filename
;
3346 o
->file_types
= info
->file_types
[o
->file
];
3348 if (info
->bincl_stack
== NULL
)
3349 return info
->main_filename
;
3350 return info
->bincl_stack
->name
;
3353 /* Handle an N_EXCL: get the types from the corresponding N_BINCL. */
3356 find_excl (struct stab_handle
*info
, const char *name
, bfd_vma hash
)
3358 struct bincl_file
*l
;
3361 info
->file_types
= xrealloc (info
->file_types
,
3362 info
->files
* sizeof (*info
->file_types
));
3364 for (l
= info
->bincl_list
; l
!= NULL
; l
= l
->next
)
3365 if (l
->hash
== hash
&& strcmp (l
->name
, name
) == 0)
3369 warn_stab (name
, _("Undefined N_EXCL"));
3370 info
->file_types
[info
->files
- 1] = NULL
;
3374 info
->file_types
[info
->files
- 1] = l
->file_types
;
3379 /* Handle a variable definition. gcc emits variable definitions for a
3380 block before the N_LBRAC, so we must hold onto them until we see
3381 it. The SunPRO compiler emits variable definitions after the
3382 N_LBRAC, so we can call debug_record_variable immediately. */
3385 stab_record_variable (void *dhandle
, struct stab_handle
*info
,
3386 const char *name
, debug_type type
,
3387 enum debug_var_kind kind
, bfd_vma val
)
3389 struct stab_pending_var
*v
;
3391 if ((kind
== DEBUG_GLOBAL
|| kind
== DEBUG_STATIC
)
3392 || ! info
->within_function
3393 || (info
->gcc_compiled
== 0 && info
->n_opt_found
))
3394 return debug_record_variable (dhandle
, name
, type
, kind
, val
);
3396 v
= debug_xzalloc (dhandle
, sizeof (*v
));
3398 v
->next
= info
->pending
;
3408 /* Emit pending variable definitions. This is called after we see the
3409 N_LBRAC that starts the block. */
3412 stab_emit_pending_vars (void *dhandle
, struct stab_handle
*info
)
3414 struct stab_pending_var
*v
;
3419 if (! debug_record_variable (dhandle
, v
->name
, v
->type
, v
->kind
, v
->val
))
3425 info
->pending
= NULL
;
3430 /* Find the slot for a type in the database. */
3433 stab_find_slot (void *dhandle
, struct stab_handle
*info
, const int *typenums
)
3435 unsigned int filenum
;
3436 unsigned int tindex
;
3437 unsigned int base_index
;
3438 struct stab_types
**ps
;
3440 filenum
= typenums
[0];
3441 tindex
= typenums
[1];
3443 if (filenum
>= info
->files
)
3445 fprintf (stderr
, _("Type file number %d out of range\n"), filenum
);
3449 ps
= info
->file_types
+ filenum
;
3450 base_index
= tindex
/ STAB_TYPES_SLOTS
* STAB_TYPES_SLOTS
;
3451 tindex
-= base_index
;
3452 while (*ps
&& (*ps
)->base_index
< base_index
)
3455 if (*ps
== NULL
|| (*ps
)->base_index
!= base_index
)
3457 struct stab_types
*n
= debug_xzalloc (dhandle
, sizeof (*n
));
3459 n
->base_index
= base_index
;
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 (dhandle
, 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
, struct stab_handle
*info
,
3494 const int *typenums
, debug_type type
)
3498 slot
= stab_find_slot (dhandle
, 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
,
3513 unsigned int typenum
)
3518 typenum
= -typenum
- 1;
3519 if (typenum
>= XCOFF_TYPE_COUNT
)
3521 fprintf (stderr
, _("Unrecognized XCOFF type %d\n"), -typenum
- 1);
3522 return DEBUG_TYPE_NULL
;
3524 if (info
->xcoff_types
[typenum
] != NULL
)
3525 return info
->xcoff_types
[typenum
];
3530 /* The size of this and all the other types are fixed, defined
3531 by the debugging format. */
3533 rettype
= debug_make_int_type (dhandle
, 4, false);
3537 rettype
= debug_make_int_type (dhandle
, 1, false);
3541 rettype
= debug_make_int_type (dhandle
, 2, false);
3545 rettype
= debug_make_int_type (dhandle
, 4, false);
3548 name
= "unsigned char";
3549 rettype
= debug_make_int_type (dhandle
, 1, true);
3552 name
= "signed char";
3553 rettype
= debug_make_int_type (dhandle
, 1, false);
3556 name
= "unsigned short";
3557 rettype
= debug_make_int_type (dhandle
, 2, true);
3560 name
= "unsigned int";
3561 rettype
= debug_make_int_type (dhandle
, 4, true);
3565 rettype
= debug_make_int_type (dhandle
, 4, true);
3568 name
= "unsigned long";
3569 rettype
= debug_make_int_type (dhandle
, 4, true);
3573 rettype
= debug_make_void_type (dhandle
);
3576 /* IEEE single precision (32 bit). */
3578 rettype
= debug_make_float_type (dhandle
, 4);
3581 /* IEEE double precision (64 bit). */
3583 rettype
= debug_make_float_type (dhandle
, 8);
3586 /* This is an IEEE double on the RS/6000, and different machines
3587 with different sizes for "long double" should use different
3588 negative type numbers. See stabs.texinfo. */
3589 name
= "long double";
3590 rettype
= debug_make_float_type (dhandle
, 8);
3594 rettype
= debug_make_int_type (dhandle
, 4, false);
3598 rettype
= debug_make_bool_type (dhandle
, 4);
3601 name
= "short real";
3602 rettype
= debug_make_float_type (dhandle
, 4);
3606 rettype
= debug_make_float_type (dhandle
, 8);
3616 rettype
= debug_make_int_type (dhandle
, 1, true);
3620 rettype
= debug_make_bool_type (dhandle
, 1);
3624 rettype
= debug_make_bool_type (dhandle
, 2);
3628 rettype
= debug_make_bool_type (dhandle
, 4);
3632 rettype
= debug_make_bool_type (dhandle
, 4);
3635 /* Complex type consisting of two IEEE single precision values. */
3637 rettype
= debug_make_complex_type (dhandle
, 8);
3640 /* Complex type consisting of two IEEE double precision values. */
3641 name
= "double complex";
3642 rettype
= debug_make_complex_type (dhandle
, 16);
3646 rettype
= debug_make_int_type (dhandle
, 1, false);
3650 rettype
= debug_make_int_type (dhandle
, 2, false);
3654 rettype
= debug_make_int_type (dhandle
, 4, false);
3659 rettype
= debug_make_int_type (dhandle
, 2, false);
3663 rettype
= debug_make_int_type (dhandle
, 8, false);
3666 name
= "unsigned long long";
3667 rettype
= debug_make_int_type (dhandle
, 8, true);
3671 rettype
= debug_make_bool_type (dhandle
, 8);
3675 rettype
= debug_make_int_type (dhandle
, 8, false);
3681 rettype
= debug_name_type (dhandle
, name
, rettype
);
3682 info
->xcoff_types
[typenum
] = rettype
;
3686 /* Find or create a tagged type. */
3689 stab_find_tagged_type (void *dhandle
, struct stab_handle
*info
,
3690 const char *p
, int len
, enum debug_type_kind kind
)
3694 struct stab_tag
*st
;
3696 name
= savestring (dhandle
, p
, len
);
3698 /* We pass DEBUG_KIND_ILLEGAL because we want all tags in the same
3699 namespace. This is right for C, and I don't know how to handle
3700 other languages. FIXME. */
3701 dtype
= debug_find_tagged_type (dhandle
, name
, DEBUG_KIND_ILLEGAL
);
3702 if (dtype
!= DEBUG_TYPE_NULL
)
3705 /* We need to allocate an entry on the undefined tag list. */
3706 for (st
= info
->tags
; st
!= NULL
; st
= st
->next
)
3708 if (st
->name
[0] == name
[0]
3709 && strcmp (st
->name
, name
) == 0)
3711 if (st
->kind
== DEBUG_KIND_ILLEGAL
)
3718 st
= debug_xzalloc (dhandle
, sizeof (*st
));
3720 st
->next
= info
->tags
;
3723 st
->slot
= DEBUG_TYPE_NULL
;
3724 st
->type
= debug_make_indirect_type (dhandle
, &st
->slot
, name
);
3731 /* In order to get the correct argument types for a stubbed method, we
3732 need to extract the argument types from a C++ mangled string.
3733 Since the argument types can refer back to the return type, this
3734 means that we must demangle the entire physical name. In gdb this
3735 is done by calling cplus_demangle and running the results back
3736 through the C++ expression parser. Since we have no expression
3737 parser, we must duplicate much of the work of cplus_demangle here.
3739 We assume that GNU style demangling is used, since this is only
3740 done for method stubs, and only g++ should output that form of
3741 debugging information. */
3743 /* This structure is used to hold a pointer to type information which
3744 demangling a string. */
3746 struct stab_demangle_typestring
3748 /* The start of the type. This is not null terminated. */
3749 const char *typestring
;
3750 /* The length of the type. */
3754 /* This structure is used to hold information while demangling a
3757 struct stab_demangle_info
3759 /* The debugging information handle. */
3761 /* The stab information handle. */
3762 struct stab_handle
*info
;
3763 /* The array of arguments we are building. */
3765 /* Whether the method takes a variable number of arguments. */
3767 /* The array of types we have remembered. */
3768 struct stab_demangle_typestring
*typestrings
;
3769 /* The number of typestrings. */
3770 unsigned int typestring_count
;
3771 /* The number of typestring slots we have allocated. */
3772 unsigned int typestring_alloc
;
3775 static void stab_bad_demangle (const char *);
3776 static unsigned int stab_demangle_count (const char **);
3777 static bool stab_demangle_get_count (const char **, unsigned int *);
3778 static bool stab_demangle_prefix
3779 (struct stab_demangle_info
*, const char **, unsigned int);
3780 static bool stab_demangle_function_name
3781 (struct stab_demangle_info
*, const char **, const char *);
3782 static bool stab_demangle_signature
3783 (struct stab_demangle_info
*, const char **);
3784 static bool stab_demangle_qualified
3785 (struct stab_demangle_info
*, const char **, debug_type
*);
3786 static bool stab_demangle_template
3787 (struct stab_demangle_info
*, const char **, char **);
3788 static bool stab_demangle_class
3789 (struct stab_demangle_info
*, const char **, const char **);
3790 static bool stab_demangle_args
3791 (struct stab_demangle_info
*, const char **, debug_type
**, bool *);
3792 static bool stab_demangle_arg
3793 (struct stab_demangle_info
*, const char **, debug_type
**,
3794 unsigned int *, unsigned int *);
3795 static bool stab_demangle_type
3796 (struct stab_demangle_info
*, const char **, debug_type
*);
3797 static bool stab_demangle_fund_type
3798 (struct stab_demangle_info
*, const char **, debug_type
*);
3799 static bool stab_demangle_remember_type
3800 (struct stab_demangle_info
*, const char *, int);
3802 /* Warn about a bad demangling. */
3805 stab_bad_demangle (const char *s
)
3807 fprintf (stderr
, _("bad mangled name `%s'\n"), s
);
3810 /* Get a count from a stab string. */
3813 stab_demangle_count (const char **pp
)
3818 while (ISDIGIT (**pp
))
3821 count
+= **pp
- '0';
3827 /* Require a count in a string. The count may be multiple digits, in
3828 which case it must end in an underscore. */
3831 stab_demangle_get_count (const char **pp
, unsigned int *pi
)
3833 if (! ISDIGIT (**pp
))
3851 while (ISDIGIT (*p
));
3862 /* This function demangles a physical name, returning a NULL
3863 terminated array of argument types. */
3866 stab_demangle_argtypes (void *dhandle
, struct stab_handle
*info
,
3867 const char *physname
, bool *pvarargs
,
3868 unsigned int physname_len
)
3870 struct stab_demangle_info minfo
;
3872 /* Check for the g++ V3 ABI. */
3873 if (physname
[0] == '_' && physname
[1] == 'Z')
3874 return stab_demangle_v3_argtypes (dhandle
, info
, physname
, pvarargs
);
3876 minfo
.dhandle
= dhandle
;
3879 minfo
.varargs
= false;
3880 minfo
.typestring_alloc
= 10;
3882 = xmalloc (minfo
.typestring_alloc
* sizeof (*minfo
.typestrings
));
3883 minfo
.typestring_count
= 0;
3885 /* cplus_demangle checks for special GNU mangled forms, but we can't
3886 see any of them in mangled method argument types. */
3888 if (! stab_demangle_prefix (&minfo
, &physname
, physname_len
))
3891 if (*physname
!= '\0')
3893 if (! stab_demangle_signature (&minfo
, &physname
))
3897 free (minfo
.typestrings
);
3899 if (minfo
.args
== NULL
)
3900 fprintf (stderr
, _("no argument types in mangled string\n"));
3902 *pvarargs
= minfo
.varargs
;
3906 free (minfo
.typestrings
);
3910 /* Demangle the prefix of the mangled name. */
3913 stab_demangle_prefix (struct stab_demangle_info
*minfo
, const char **pp
,
3914 unsigned int physname_len
)
3919 /* cplus_demangle checks for global constructors and destructors,
3920 but we can't see them in mangled argument types. */
3923 scan
= *pp
+ physname_len
;
3926 /* Look for `__'. */
3929 scan
= strchr (scan
, '_');
3930 while (scan
!= NULL
&& *++scan
!= '_');
3934 stab_bad_demangle (*pp
);
3940 /* We found `__'; move ahead to the last contiguous `__' pair. */
3941 i
= strspn (scan
, "_");
3947 && (ISDIGIT (scan
[2])
3951 /* This is a GNU style constructor name. */
3955 else if (scan
== *pp
3956 && ! ISDIGIT (scan
[2])
3959 /* Look for the `__' that separates the prefix from the
3961 while (*scan
== '_')
3963 scan
= strstr (scan
, "__");
3964 if (scan
== NULL
|| scan
[2] == '\0')
3966 stab_bad_demangle (*pp
);
3970 return stab_demangle_function_name (minfo
, pp
, scan
);
3972 else if (scan
[2] != '\0')
3974 /* The name doesn't start with `__', but it does contain `__'. */
3975 return stab_demangle_function_name (minfo
, pp
, scan
);
3979 stab_bad_demangle (*pp
);
3985 /* Demangle a function name prefix. The scan argument points to the
3986 double underscore which separates the function name from the
3990 stab_demangle_function_name (struct stab_demangle_info
*minfo
,
3991 const char **pp
, const char *scan
)
3995 /* The string from *pp to scan is the name of the function. We
3996 don't care about the name, since we just looking for argument
3997 types. However, for conversion operators, the name may include a
3998 type which we must remember in order to handle backreferences. */
4004 && startswith (name
, "type")
4005 && (name
[4] == '$' || name
[4] == '.'))
4009 /* This is a type conversion operator. */
4011 if (! stab_demangle_type (minfo
, &tem
, (debug_type
*) NULL
))
4014 else if (name
[0] == '_'
4021 /* This is a type conversion operator. */
4023 if (! stab_demangle_type (minfo
, &tem
, (debug_type
*) NULL
))
4030 /* Demangle the signature. This is where the argument types are
4034 stab_demangle_signature (struct stab_demangle_info
*minfo
, const char **pp
)
4037 bool expect_func
, func_done
;
4042 expect_func
= false;
4046 while (**pp
!= '\0')
4052 if (! stab_demangle_qualified (minfo
, pp
, (debug_type
*) NULL
)
4053 || ! stab_demangle_remember_type (minfo
, hold
, *pp
- hold
))
4060 /* Static member function. FIXME: Can this happen? */
4067 /* Const member function. */
4073 case '0': case '1': case '2': case '3': case '4':
4074 case '5': case '6': case '7': case '8': case '9':
4077 if (! stab_demangle_class (minfo
, pp
, (const char **) NULL
)
4078 || ! stab_demangle_remember_type (minfo
, hold
, *pp
- hold
))
4085 /* Function. I don't know if this actually happens with g++
4090 if (! stab_demangle_args (minfo
, pp
, &minfo
->args
, &minfo
->varargs
))
4098 if (! stab_demangle_template (minfo
, pp
, (char **) NULL
)
4099 || ! stab_demangle_remember_type (minfo
, hold
, *pp
- hold
))
4106 /* At the outermost level, we cannot have a return type
4107 specified, so if we run into another '_' at this point we
4108 are dealing with a mangled name that is either bogus, or
4109 has been mangled by some algorithm we don't know how to
4110 deal with. So just reject the entire demangling. */
4111 stab_bad_demangle (orig
);
4115 /* Assume we have stumbled onto the first outermost function
4116 argument token, and start processing args. */
4118 if (! stab_demangle_args (minfo
, pp
, &minfo
->args
, &minfo
->varargs
))
4126 if (! stab_demangle_args (minfo
, pp
, &minfo
->args
, &minfo
->varargs
))
4133 /* With GNU style demangling, bar__3foo is 'foo::bar(void)', and
4134 bar__3fooi is 'foo::bar(int)'. We get here when we find the
4135 first case, and need to ensure that the '(void)' gets added
4136 to the current declp. */
4137 if (! stab_demangle_args (minfo
, pp
, &minfo
->args
, &minfo
->varargs
))
4144 /* Demangle a qualified name, such as "Q25Outer5Inner" which is the
4145 mangled form of "Outer::Inner". */
4148 stab_demangle_qualified (struct stab_demangle_info
*minfo
, const char **pp
,
4153 unsigned int qualifiers
;
4161 /* GNU mangled name with more than 9 classes. The count is
4162 preceded by an underscore (to distinguish it from the <= 9
4163 case) and followed by an underscore. */
4165 if (! ISDIGIT (*p
) || *p
== '0')
4167 stab_bad_demangle (orig
);
4170 qualifiers
= atoi (p
);
4171 while (ISDIGIT (*p
))
4175 stab_bad_demangle (orig
);
4181 case '1': case '2': case '3': case '4': case '5':
4182 case '6': case '7': case '8': case '9':
4183 qualifiers
= (*pp
)[1] - '0';
4184 /* Skip an optional underscore after the count. */
4185 if ((*pp
)[2] == '_')
4192 stab_bad_demangle (orig
);
4196 context
= DEBUG_TYPE_NULL
;
4198 /* Pick off the names. */
4199 while (qualifiers
-- > 0)
4207 if (! stab_demangle_template (minfo
, pp
,
4208 ptype
!= NULL
? &name
: NULL
))
4213 context
= stab_find_tagged_type (minfo
->dhandle
, minfo
->info
,
4214 name
, strlen (name
),
4216 if (context
== DEBUG_TYPE_NULL
)
4224 len
= stab_demangle_count (pp
);
4225 if (strlen (*pp
) < len
)
4227 stab_bad_demangle (orig
);
4233 const debug_field
*fields
;
4236 if (context
!= DEBUG_TYPE_NULL
)
4237 fields
= debug_get_fields (minfo
->dhandle
, context
);
4239 context
= DEBUG_TYPE_NULL
;
4245 /* Try to find the type by looking through the
4246 fields of context until we find a field with the
4247 same type. This ought to work for a class
4248 defined within a class, but it won't work for,
4249 e.g., an enum defined within a class. stabs does
4250 not give us enough information to figure out the
4253 name
= savestring (minfo
->dhandle
, *pp
, len
);
4255 for (; *fields
!= DEBUG_FIELD_NULL
; fields
++)
4260 ft
= debug_get_field_type (minfo
->dhandle
, *fields
);
4263 dn
= debug_get_type_name (minfo
->dhandle
, ft
);
4264 if (dn
!= NULL
&& strcmp (dn
, name
) == 0)
4272 if (context
== DEBUG_TYPE_NULL
)
4274 /* We have to fall back on finding the type by name.
4275 If there are more types to come, then this must
4276 be a class. Otherwise, it could be anything. */
4278 if (qualifiers
== 0)
4282 name
= savestring (minfo
->dhandle
, *pp
, len
);
4283 context
= debug_find_named_type (minfo
->dhandle
,
4287 if (context
== DEBUG_TYPE_NULL
)
4289 context
= stab_find_tagged_type (minfo
->dhandle
,
4293 ? DEBUG_KIND_ILLEGAL
4294 : DEBUG_KIND_CLASS
));
4295 if (context
== DEBUG_TYPE_NULL
)
4311 /* Demangle a template. If PNAME is not NULL, this sets *PNAME to a
4312 string representation of the template. */
4315 stab_demangle_template (struct stab_demangle_info
*minfo
, const char **pp
,
4325 /* Skip the template name. */
4326 r
= stab_demangle_count (pp
);
4327 if (r
== 0 || strlen (*pp
) < r
)
4329 stab_bad_demangle (orig
);
4334 /* Get the size of the parameter list. */
4335 if (stab_demangle_get_count (pp
, &r
) == 0)
4337 stab_bad_demangle (orig
);
4341 for (i
= 0; i
< r
; i
++)
4345 /* This is a type parameter. */
4347 if (! stab_demangle_type (minfo
, pp
, (debug_type
*) NULL
))
4353 bool pointerp
, realp
, integralp
, charp
, boolp
;
4364 /* This is a value parameter. */
4366 if (! stab_demangle_type (minfo
, pp
, (debug_type
*) NULL
))
4369 while (*old_p
!= '\0' && ! done
)
4379 case 'C': /* Const. */
4380 case 'S': /* Signed. */
4381 case 'U': /* Unsigned. */
4382 case 'V': /* Volatile. */
4383 case 'F': /* Function. */
4384 case 'M': /* Member function. */
4388 case 'Q': /* Qualified name. */
4392 case 'T': /* Remembered type. */
4394 case 'v': /* Void. */
4396 case 'x': /* Long long. */
4397 case 'l': /* Long. */
4398 case 'i': /* Int. */
4399 case 's': /* Short. */
4400 case 'w': /* Wchar_t. */
4404 case 'b': /* Bool. */
4408 case 'c': /* Char. */
4412 case 'r': /* Long double. */
4413 case 'd': /* Double. */
4414 case 'f': /* Float. */
4419 /* Assume it's a user defined integral type. */
4430 while (ISDIGIT (**pp
))
4439 val
= stab_demangle_count (pp
);
4442 stab_bad_demangle (orig
);
4450 val
= stab_demangle_count (pp
);
4451 if (val
!= 0 && val
!= 1)
4453 stab_bad_demangle (orig
);
4461 while (ISDIGIT (**pp
))
4466 while (ISDIGIT (**pp
))
4472 while (ISDIGIT (**pp
))
4480 len
= stab_demangle_count (pp
);
4483 stab_bad_demangle (orig
);
4491 /* We can translate this to a string fairly easily by invoking the
4492 regular demangling routine. */
4495 char *s1
, *s2
, *s3
, *s4
= NULL
;
4498 s1
= savestring (minfo
->dhandle
, orig
, *pp
- orig
);
4500 s2
= concat ("NoSuchStrinG__", s1
, (const char *) NULL
);
4502 s3
= cplus_demangle (s2
, demangle_flags
);
4507 s4
= strstr (s3
, "::NoSuchStrinG");
4508 if (s3
== NULL
|| s4
== NULL
)
4510 stab_bad_demangle (orig
);
4515 /* Eliminating all spaces, except those between > characters,
4516 makes it more likely that the demangled name will match the
4517 name which g++ used as the structure name. */
4518 for (from
= to
= s3
; from
!= s4
; ++from
)
4520 || (from
[1] == '>' && from
> s3
&& from
[-1] == '>'))
4523 *pname
= savestring (minfo
->dhandle
, s3
, to
- s3
);
4531 /* Demangle a class name. */
4534 stab_demangle_class (struct stab_demangle_info
*minfo ATTRIBUTE_UNUSED
,
4535 const char **pp
, const char **pstart
)
4542 n
= stab_demangle_count (pp
);
4543 if (strlen (*pp
) < n
)
4545 stab_bad_demangle (orig
);
4557 /* Demangle function arguments. If the pargs argument is not NULL, it
4558 is set to a NULL terminated array holding the arguments. */
4561 stab_demangle_args (struct stab_demangle_info
*minfo
, const char **pp
,
4562 debug_type
**pargs
, bool *pvarargs
)
4565 unsigned int alloc
, count
;
4571 *pargs
= xmalloc (alloc
* sizeof (**pargs
));
4572 if (pvarargs
!= NULL
)
4576 while (**pp
!= '_' && **pp
!= '\0' && **pp
!= 'e')
4578 if (**pp
== 'N' || **pp
== 'T')
4586 if (temptype
== 'T')
4590 if (! stab_demangle_get_count (pp
, &r
))
4594 if (!stab_demangle_get_count (pp
, &t
)
4595 || t
>= minfo
->typestring_count
)
4602 tem
= minfo
->typestrings
[t
].typestring
;
4603 if (! stab_demangle_arg (minfo
, &tem
, pargs
, &count
, &alloc
))
4609 if (! stab_demangle_arg (minfo
, pp
, pargs
, &count
, &alloc
))
4617 (*pargs
)[count
] = DEBUG_TYPE_NULL
;
4618 xargs
= debug_xalloc (minfo
->dhandle
, (count
+ 1) * sizeof (*xargs
));
4619 memcpy (xargs
, *pargs
, (count
+ 1) * sizeof (*xargs
));
4626 if (pvarargs
!= NULL
)
4633 stab_bad_demangle (orig
);
4643 /* Demangle a single argument. */
4646 stab_demangle_arg (struct stab_demangle_info
*minfo
, const char **pp
,
4647 debug_type
**pargs
, unsigned int *pcount
,
4648 unsigned int *palloc
)
4654 if (! stab_demangle_type (minfo
, pp
,
4655 pargs
== NULL
? (debug_type
*) NULL
: &type
)
4656 || ! stab_demangle_remember_type (minfo
, start
, *pp
- start
))
4661 if (type
== DEBUG_TYPE_NULL
)
4664 if (*pcount
+ 1 >= *palloc
)
4667 *pargs
= xrealloc (*pargs
, *palloc
* sizeof (**pargs
));
4669 (*pargs
)[*pcount
] = type
;
4676 /* Demangle a type. If the ptype argument is not NULL, *ptype is set
4677 to the newly allocated type. */
4680 stab_demangle_type (struct stab_demangle_info
*minfo
, const char **pp
,
4691 /* A pointer type. */
4693 if (! stab_demangle_type (minfo
, pp
, ptype
))
4696 *ptype
= debug_make_pointer_type (minfo
->dhandle
, *ptype
);
4700 /* A reference type. */
4702 if (! stab_demangle_type (minfo
, pp
, ptype
))
4705 *ptype
= debug_make_reference_type (minfo
->dhandle
, *ptype
);
4715 while (**pp
!= '\0' && **pp
!= '_')
4717 if (! ISDIGIT (**pp
))
4719 stab_bad_demangle (orig
);
4728 stab_bad_demangle (orig
);
4733 if (! stab_demangle_type (minfo
, pp
, ptype
))
4737 debug_type int_type
;
4739 int_type
= debug_find_named_type (minfo
->dhandle
, "int");
4740 if (int_type
== NULL
)
4741 int_type
= debug_make_int_type (minfo
->dhandle
, 4, false);
4742 *ptype
= debug_make_array_type (minfo
->dhandle
, *ptype
, int_type
,
4749 /* A back reference to a remembered type. */
4755 if (! stab_demangle_get_count (pp
, &i
))
4757 stab_bad_demangle (orig
);
4760 if (i
>= minfo
->typestring_count
)
4762 stab_bad_demangle (orig
);
4765 p
= minfo
->typestrings
[i
].typestring
;
4766 if (! stab_demangle_type (minfo
, &p
, ptype
))
4778 if (! stab_demangle_args (minfo
, pp
,
4780 ? (debug_type
**) NULL
4788 /* cplus_demangle will accept a function without a return
4789 type, but I don't know when that will happen, or what
4790 to do if it does. */
4791 stab_bad_demangle (orig
);
4795 if (! stab_demangle_type (minfo
, pp
, ptype
))
4798 *ptype
= debug_make_function_type (minfo
->dhandle
, *ptype
, args
,
4808 debug_type class_type
= DEBUG_TYPE_NULL
;
4814 memberp
= **pp
== 'M';
4821 n
= stab_demangle_count (pp
);
4822 if (strlen (*pp
) < n
)
4824 stab_bad_demangle (orig
);
4832 class_type
= stab_find_tagged_type (minfo
->dhandle
,
4836 if (class_type
== DEBUG_TYPE_NULL
)
4840 else if (**pp
== 'Q')
4842 if (! stab_demangle_qualified (minfo
, pp
,
4844 ? (debug_type
*) NULL
4850 stab_bad_demangle (orig
);
4860 else if (**pp
== 'V')
4866 stab_bad_demangle (orig
);
4870 if (! stab_demangle_args (minfo
, pp
,
4872 ? (debug_type
**) NULL
4882 stab_bad_demangle (orig
);
4887 if (! stab_demangle_type (minfo
, pp
, ptype
))
4893 *ptype
= debug_make_offset_type (minfo
->dhandle
, class_type
,
4897 /* FIXME: We have no way to record constp or
4899 *ptype
= debug_make_method_type (minfo
->dhandle
, *ptype
,
4900 class_type
, args
, varargs
);
4908 if (! stab_demangle_type (minfo
, pp
, ptype
))
4914 if (! stab_demangle_type (minfo
, pp
, ptype
))
4917 *ptype
= debug_make_const_type (minfo
->dhandle
, *ptype
);
4922 if (! stab_demangle_qualified (minfo
, pp
, ptype
))
4928 if (! stab_demangle_fund_type (minfo
, pp
, ptype
))
4936 /* Demangle a fundamental type. If the ptype argument is not NULL,
4937 *ptype is set to the newly allocated type. */
4940 stab_demangle_fund_type (struct stab_demangle_info
*minfo
, const char **pp
,
4944 bool constp
, volatilep
, unsignedp
, signedp
;
4989 /* cplus_demangle permits this, but I don't know what it means. */
4990 stab_bad_demangle (orig
);
4993 case 'v': /* void */
4996 *ptype
= debug_find_named_type (minfo
->dhandle
, "void");
4997 if (*ptype
== DEBUG_TYPE_NULL
)
4998 *ptype
= debug_make_void_type (minfo
->dhandle
);
5003 case 'x': /* long long */
5006 *ptype
= debug_find_named_type (minfo
->dhandle
,
5008 ? "long long unsigned int"
5009 : "long long int"));
5010 if (*ptype
== DEBUG_TYPE_NULL
)
5011 *ptype
= debug_make_int_type (minfo
->dhandle
, 8, unsignedp
);
5016 case 'l': /* long */
5019 *ptype
= debug_find_named_type (minfo
->dhandle
,
5021 ? "long unsigned int"
5023 if (*ptype
== DEBUG_TYPE_NULL
)
5024 *ptype
= debug_make_int_type (minfo
->dhandle
, 4, unsignedp
);
5032 *ptype
= debug_find_named_type (minfo
->dhandle
,
5036 if (*ptype
== DEBUG_TYPE_NULL
)
5037 *ptype
= debug_make_int_type (minfo
->dhandle
, 4, unsignedp
);
5042 case 's': /* short */
5045 *ptype
= debug_find_named_type (minfo
->dhandle
,
5047 ? "short unsigned int"
5049 if (*ptype
== DEBUG_TYPE_NULL
)
5050 *ptype
= debug_make_int_type (minfo
->dhandle
, 2, unsignedp
);
5055 case 'b': /* bool */
5058 *ptype
= debug_find_named_type (minfo
->dhandle
, "bool");
5059 if (*ptype
== DEBUG_TYPE_NULL
)
5060 *ptype
= debug_make_bool_type (minfo
->dhandle
, 4);
5065 case 'c': /* char */
5068 *ptype
= debug_find_named_type (minfo
->dhandle
,
5074 if (*ptype
== DEBUG_TYPE_NULL
)
5075 *ptype
= debug_make_int_type (minfo
->dhandle
, 1, unsignedp
);
5080 case 'w': /* wchar_t */
5083 *ptype
= debug_find_named_type (minfo
->dhandle
, "__wchar_t");
5084 if (*ptype
== DEBUG_TYPE_NULL
)
5085 *ptype
= debug_make_int_type (minfo
->dhandle
, 2, true);
5090 case 'r': /* long double */
5093 *ptype
= debug_find_named_type (minfo
->dhandle
, "long double");
5094 if (*ptype
== DEBUG_TYPE_NULL
)
5095 *ptype
= debug_make_float_type (minfo
->dhandle
, 8);
5100 case 'd': /* double */
5103 *ptype
= debug_find_named_type (minfo
->dhandle
, "double");
5104 if (*ptype
== DEBUG_TYPE_NULL
)
5105 *ptype
= debug_make_float_type (minfo
->dhandle
, 8);
5110 case 'f': /* float */
5113 *ptype
= debug_find_named_type (minfo
->dhandle
, "float");
5114 if (*ptype
== DEBUG_TYPE_NULL
)
5115 *ptype
= debug_make_float_type (minfo
->dhandle
, 4);
5122 if (! ISDIGIT (**pp
))
5124 stab_bad_demangle (orig
);
5128 case '0': case '1': case '2': case '3': case '4':
5129 case '5': case '6': case '7': case '8': case '9':
5133 if (! stab_demangle_class (minfo
, pp
, &hold
))
5139 name
= savestring (minfo
->dhandle
, hold
, *pp
- hold
);
5140 *ptype
= debug_find_named_type (minfo
->dhandle
, name
);
5141 if (*ptype
== DEBUG_TYPE_NULL
)
5143 /* FIXME: It is probably incorrect to assume that
5144 undefined types are tagged types. */
5145 *ptype
= stab_find_tagged_type (minfo
->dhandle
, minfo
->info
,
5147 DEBUG_KIND_ILLEGAL
);
5148 if (*ptype
== DEBUG_TYPE_NULL
)
5159 if (! stab_demangle_template (minfo
, pp
,
5160 ptype
!= NULL
? &name
: NULL
))
5164 *ptype
= stab_find_tagged_type (minfo
->dhandle
, minfo
->info
,
5165 name
, strlen (name
),
5167 if (*ptype
== DEBUG_TYPE_NULL
)
5174 stab_bad_demangle (orig
);
5181 *ptype
= debug_make_const_type (minfo
->dhandle
, *ptype
);
5183 *ptype
= debug_make_volatile_type (minfo
->dhandle
, *ptype
);
5189 /* Remember a type string in a demangled string. */
5192 stab_demangle_remember_type (struct stab_demangle_info
*minfo
,
5193 const char *p
, int len
)
5195 if (minfo
->typestring_count
>= minfo
->typestring_alloc
)
5197 minfo
->typestring_alloc
+= 10;
5199 = xrealloc (minfo
->typestrings
,
5200 minfo
->typestring_alloc
* sizeof (*minfo
->typestrings
));
5203 minfo
->typestrings
[minfo
->typestring_count
].typestring
= p
;
5204 minfo
->typestrings
[minfo
->typestring_count
].len
= (unsigned int) len
;
5205 ++minfo
->typestring_count
;
5210 /* Demangle names encoded using the g++ V3 ABI. The newer versions of
5211 g++ which use this ABI do not encode ordinary method argument types
5212 in a mangled name; they simply output the argument types. However,
5213 for a static method, g++ simply outputs the return type and the
5214 physical name. So in that case we need to demangle the name here.
5215 Here PHYSNAME is the physical name of the function, and we set the
5216 variable pointed at by PVARARGS to indicate whether this function
5217 is varargs. This returns NULL, or a NULL terminated array of
5221 stab_demangle_v3_argtypes (void *dhandle
, struct stab_handle
*info
,
5222 const char *physname
, bool *pvarargs
)
5224 struct demangle_component
*dc
;
5228 dc
= cplus_demangle_v3_components (physname
, DMGL_PARAMS
| demangle_flags
, &mem
);
5231 stab_bad_demangle (physname
);
5235 /* We expect to see TYPED_NAME, and the right subtree describes the
5237 if (dc
->type
!= DEMANGLE_COMPONENT_TYPED_NAME
5238 || dc
->u
.s_binary
.right
->type
!= DEMANGLE_COMPONENT_FUNCTION_TYPE
)
5240 fprintf (stderr
, _("Demangled name is not a function\n"));
5245 pargs
= stab_demangle_v3_arglist (dhandle
, info
,
5246 dc
->u
.s_binary
.right
->u
.s_binary
.right
,
5254 /* Demangle an argument list in a struct demangle_component tree.
5255 Returns a DEBUG_TYPE_NULL terminated array of argument types, and
5256 sets *PVARARGS to indicate whether this is a varargs function. */
5259 stab_demangle_v3_arglist (void *dhandle
, struct stab_handle
*info
,
5260 struct demangle_component
*arglist
,
5263 struct demangle_component
*dc
;
5264 unsigned int alloc
, count
;
5265 debug_type
*pargs
, *xargs
;
5268 pargs
= xmalloc (alloc
* sizeof (*pargs
));
5275 dc
= dc
->u
.s_binary
.right
)
5280 if (dc
->type
!= DEMANGLE_COMPONENT_ARGLIST
)
5282 fprintf (stderr
, _("Unexpected type in v3 arglist demangling\n"));
5287 /* PR 13925: Cope if the demangler returns an empty
5288 context for a function with no arguments. */
5289 if (dc
->u
.s_binary
.left
== NULL
)
5292 arg
= stab_demangle_v3_arg (dhandle
, info
, dc
->u
.s_binary
.left
,
5305 if (count
+ 1 >= alloc
)
5308 pargs
= xrealloc (pargs
, alloc
* sizeof (*pargs
));
5315 pargs
[count
] = DEBUG_TYPE_NULL
;
5316 xargs
= debug_xalloc (dhandle
, (count
+ 1) * sizeof (*pargs
));
5317 memcpy (xargs
, pargs
, (count
+ 1) * sizeof (*pargs
));
5323 /* Convert a struct demangle_component tree describing an argument
5324 type into a debug_type. */
5327 stab_demangle_v3_arg (void *dhandle
, struct stab_handle
*info
,
5328 struct demangle_component
*dc
, debug_type context
,
5333 if (pvarargs
!= NULL
)
5338 /* FIXME: These are demangle component types which we probably
5339 need to handle one way or another. */
5340 case DEMANGLE_COMPONENT_LOCAL_NAME
:
5341 case DEMANGLE_COMPONENT_TYPED_NAME
:
5342 case DEMANGLE_COMPONENT_TEMPLATE_PARAM
:
5343 case DEMANGLE_COMPONENT_CTOR
:
5344 case DEMANGLE_COMPONENT_DTOR
:
5345 case DEMANGLE_COMPONENT_JAVA_CLASS
:
5346 case DEMANGLE_COMPONENT_RESTRICT_THIS
:
5347 case DEMANGLE_COMPONENT_VOLATILE_THIS
:
5348 case DEMANGLE_COMPONENT_CONST_THIS
:
5349 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL
:
5350 case DEMANGLE_COMPONENT_COMPLEX
:
5351 case DEMANGLE_COMPONENT_IMAGINARY
:
5352 case DEMANGLE_COMPONENT_VENDOR_TYPE
:
5353 case DEMANGLE_COMPONENT_ARRAY_TYPE
:
5354 case DEMANGLE_COMPONENT_PTRMEM_TYPE
:
5355 case DEMANGLE_COMPONENT_ARGLIST
:
5357 fprintf (stderr
, _("Unrecognized demangle component %d\n"),
5361 case DEMANGLE_COMPONENT_NAME
:
5362 if (context
!= NULL
)
5364 const debug_field
*fields
;
5366 fields
= debug_get_fields (dhandle
, context
);
5369 /* Try to find this type by looking through the context
5371 for (; *fields
!= DEBUG_FIELD_NULL
; fields
++)
5376 ft
= debug_get_field_type (dhandle
, *fields
);
5379 dn
= debug_get_type_name (dhandle
, ft
);
5381 && (int) strlen (dn
) == dc
->u
.s_name
.len
5382 && strncmp (dn
, dc
->u
.s_name
.s
, dc
->u
.s_name
.len
) == 0)
5387 return stab_find_tagged_type (dhandle
, info
, dc
->u
.s_name
.s
,
5388 dc
->u
.s_name
.len
, DEBUG_KIND_ILLEGAL
);
5390 case DEMANGLE_COMPONENT_QUAL_NAME
:
5391 context
= stab_demangle_v3_arg (dhandle
, info
, dc
->u
.s_binary
.left
,
5393 if (context
== NULL
)
5395 return stab_demangle_v3_arg (dhandle
, info
, dc
->u
.s_binary
.right
,
5398 case DEMANGLE_COMPONENT_TEMPLATE
:
5403 /* We print this component to get a class name which we can
5404 use. FIXME: This probably won't work if the template uses
5405 template parameters which refer to an outer template. */
5406 p
= cplus_demangle_print (DMGL_PARAMS
| demangle_flags
, dc
, 20, &alc
);
5409 fprintf (stderr
, _("Failed to print demangled template\n"));
5412 dt
= stab_find_tagged_type (dhandle
, info
, p
, strlen (p
),
5418 case DEMANGLE_COMPONENT_SUB_STD
:
5419 return stab_find_tagged_type (dhandle
, info
, dc
->u
.s_string
.string
,
5420 dc
->u
.s_string
.len
, DEBUG_KIND_ILLEGAL
);
5422 case DEMANGLE_COMPONENT_RESTRICT
:
5423 case DEMANGLE_COMPONENT_VOLATILE
:
5424 case DEMANGLE_COMPONENT_CONST
:
5425 case DEMANGLE_COMPONENT_POINTER
:
5426 case DEMANGLE_COMPONENT_REFERENCE
:
5427 dt
= stab_demangle_v3_arg (dhandle
, info
, dc
->u
.s_binary
.left
, NULL
,
5436 case DEMANGLE_COMPONENT_RESTRICT
:
5437 /* FIXME: We have no way to represent restrict. */
5439 case DEMANGLE_COMPONENT_VOLATILE
:
5440 return debug_make_volatile_type (dhandle
, dt
);
5441 case DEMANGLE_COMPONENT_CONST
:
5442 return debug_make_const_type (dhandle
, dt
);
5443 case DEMANGLE_COMPONENT_POINTER
:
5444 return debug_make_pointer_type (dhandle
, dt
);
5445 case DEMANGLE_COMPONENT_REFERENCE
:
5446 return debug_make_reference_type (dhandle
, dt
);
5449 case DEMANGLE_COMPONENT_FUNCTION_TYPE
:
5454 if (dc
->u
.s_binary
.left
== NULL
)
5456 /* In this case the return type is actually unknown.
5457 However, I'm not sure this will ever arise in practice;
5458 normally an unknown return type would only appear at
5459 the top level, which is handled above. */
5460 dt
= debug_make_void_type (dhandle
);
5463 dt
= stab_demangle_v3_arg (dhandle
, info
, dc
->u
.s_binary
.left
, NULL
,
5468 pargs
= stab_demangle_v3_arglist (dhandle
, info
,
5469 dc
->u
.s_binary
.right
,
5474 return debug_make_function_type (dhandle
, dt
, pargs
, varargs
);
5477 case DEMANGLE_COMPONENT_BUILTIN_TYPE
:
5483 /* We print this component in order to find out the type name.
5484 FIXME: Should we instead expose the
5485 demangle_builtin_type_info structure? */
5486 p
= cplus_demangle_print (DMGL_PARAMS
| demangle_flags
, dc
, 20, &alc
);
5489 fprintf (stderr
, _("Couldn't get demangled builtin type\n"));
5493 /* The mangling is based on the type, but does not itself
5494 indicate what the sizes are. So we have to guess. */
5495 if (strcmp (p
, "signed char") == 0)
5496 ret
= debug_make_int_type (dhandle
, 1, false);
5497 else if (strcmp (p
, "bool") == 0)
5498 ret
= debug_make_bool_type (dhandle
, 1);
5499 else if (strcmp (p
, "char") == 0)
5500 ret
= debug_make_int_type (dhandle
, 1, false);
5501 else if (strcmp (p
, "double") == 0)
5502 ret
= debug_make_float_type (dhandle
, 8);
5503 else if (strcmp (p
, "long double") == 0)
5504 ret
= debug_make_float_type (dhandle
, 8);
5505 else if (strcmp (p
, "float") == 0)
5506 ret
= debug_make_float_type (dhandle
, 4);
5507 else if (strcmp (p
, "__float128") == 0)
5508 ret
= debug_make_float_type (dhandle
, 16);
5509 else if (strcmp (p
, "unsigned char") == 0)
5510 ret
= debug_make_int_type (dhandle
, 1, true);
5511 else if (strcmp (p
, "int") == 0)
5512 ret
= debug_make_int_type (dhandle
, 4, false);
5513 else if (strcmp (p
, "unsigned int") == 0)
5514 ret
= debug_make_int_type (dhandle
, 4, true);
5515 else if (strcmp (p
, "long") == 0)
5516 ret
= debug_make_int_type (dhandle
, 4, false);
5517 else if (strcmp (p
, "unsigned long") == 0)
5518 ret
= debug_make_int_type (dhandle
, 4, true);
5519 else if (strcmp (p
, "__int128") == 0)
5520 ret
= debug_make_int_type (dhandle
, 16, false);
5521 else if (strcmp (p
, "unsigned __int128") == 0)
5522 ret
= debug_make_int_type (dhandle
, 16, true);
5523 else if (strcmp (p
, "short") == 0)
5524 ret
= debug_make_int_type (dhandle
, 2, false);
5525 else if (strcmp (p
, "unsigned short") == 0)
5526 ret
= debug_make_int_type (dhandle
, 2, true);
5527 else if (strcmp (p
, "void") == 0)
5528 ret
= debug_make_void_type (dhandle
);
5529 else if (strcmp (p
, "wchar_t") == 0)
5530 ret
= debug_make_int_type (dhandle
, 4, true);
5531 else if (strcmp (p
, "long long") == 0)
5532 ret
= debug_make_int_type (dhandle
, 8, false);
5533 else if (strcmp (p
, "unsigned long long") == 0)
5534 ret
= debug_make_int_type (dhandle
, 8, true);
5535 else if (strcmp (p
, "...") == 0)
5537 if (pvarargs
== NULL
)
5538 fprintf (stderr
, _("Unexpected demangled varargs\n"));
5545 fprintf (stderr
, _("Unrecognized demangled builtin type\n"));