1 /* Support for printing C and C++ types for GDB, the GNU debugger.
2 Copyright (C) 1986-2015 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 #include "gdb_obstack.h"
21 #include "bfd.h" /* Binary File Description. */
24 #include "expression.h"
31 #include "typeprint.h"
34 #include "cp-support.h"
36 static void c_type_print_varspec_prefix (struct type
*,
39 const struct type_print_options
*);
41 /* Print "const", "volatile", or address space modifiers. */
42 static void c_type_print_modifier (struct type
*,
47 /* A callback function for cp_canonicalize_string_full that uses
48 find_typedef_in_hash. */
51 find_typedef_for_canonicalize (struct type
*t
, void *data
)
53 return find_typedef_in_hash (data
, t
);
56 /* Print NAME on STREAM. If the 'raw' field of FLAGS is not set,
57 canonicalize NAME using the local typedefs first. */
60 print_name_maybe_canonical (const char *name
,
61 const struct type_print_options
*flags
,
62 struct ui_file
*stream
)
67 s
= cp_canonicalize_string_full (name
,
68 find_typedef_for_canonicalize
,
71 fputs_filtered (s
? s
: name
, stream
);
77 /* LEVEL is the depth to indent lines by. */
80 c_print_type (struct type
*type
,
81 const char *varstring
,
82 struct ui_file
*stream
,
84 const struct type_print_options
*flags
)
89 const char *local_name
;
94 local_name
= find_typedef_in_hash (flags
, type
);
95 if (local_name
!= NULL
)
97 fputs_filtered (local_name
, stream
);
98 if (varstring
!= NULL
&& *varstring
!= '\0')
99 fputs_filtered (" ", stream
);
103 c_type_print_base (type
, stream
, show
, level
, flags
);
104 code
= TYPE_CODE (type
);
105 if ((varstring
!= NULL
&& *varstring
!= '\0')
106 /* Need a space if going to print stars or brackets;
107 but not if we will print just a type name. */
108 || ((show
> 0 || TYPE_NAME (type
) == 0)
109 && (code
== TYPE_CODE_PTR
|| code
== TYPE_CODE_FUNC
110 || code
== TYPE_CODE_METHOD
111 || (code
== TYPE_CODE_ARRAY
112 && !TYPE_VECTOR (type
))
113 || code
== TYPE_CODE_MEMBERPTR
114 || code
== TYPE_CODE_METHODPTR
115 || code
== TYPE_CODE_REF
)))
116 fputs_filtered (" ", stream
);
117 need_post_space
= (varstring
!= NULL
&& strcmp (varstring
, "") != 0);
118 c_type_print_varspec_prefix (type
, stream
, show
, 0, need_post_space
,
122 if (varstring
!= NULL
)
124 fputs_filtered (varstring
, stream
);
126 /* For demangled function names, we have the arglist as part of
127 the name, so don't print an additional pair of ()'s. */
128 if (local_name
== NULL
)
130 demangled_args
= strchr (varstring
, '(') != NULL
;
131 c_type_print_varspec_suffix (type
, stream
, show
,
138 /* Print a typedef using C syntax. TYPE is the underlying type.
139 NEW_SYMBOL is the symbol naming the type. STREAM is the stream on
143 c_print_typedef (struct type
*type
,
144 struct symbol
*new_symbol
,
145 struct ui_file
*stream
)
147 CHECK_TYPEDEF (type
);
148 fprintf_filtered (stream
, "typedef ");
149 type_print (type
, "", stream
, 0);
150 if (TYPE_NAME ((SYMBOL_TYPE (new_symbol
))) == 0
151 || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol
))),
152 SYMBOL_LINKAGE_NAME (new_symbol
)) != 0
153 || TYPE_CODE (SYMBOL_TYPE (new_symbol
)) == TYPE_CODE_TYPEDEF
)
154 fprintf_filtered (stream
, " %s", SYMBOL_PRINT_NAME (new_symbol
));
155 fprintf_filtered (stream
, ";\n");
158 /* If TYPE is a derived type, then print out derivation information.
159 Print only the actual base classes of this type, not the base
160 classes of the base classes. I.e. for the derivation hierarchy:
163 class B : public A {int b; };
164 class C : public B {int c; };
166 Print the type of class C as:
172 Not as the following (like gdb used to), which is not legal C++
173 syntax for derived types and may be confused with the multiple
176 class C : public B : public A {
180 In general, gdb should try to print the types as closely as
181 possible to the form that they appear in the source code. */
184 cp_type_print_derivation_info (struct ui_file
*stream
,
186 const struct type_print_options
*flags
)
191 for (i
= 0; i
< TYPE_N_BASECLASSES (type
); i
++)
194 fputs_filtered (i
== 0 ? ": " : ", ", stream
);
195 fprintf_filtered (stream
, "%s%s ",
196 BASETYPE_VIA_PUBLIC (type
, i
)
197 ? "public" : (TYPE_FIELD_PROTECTED (type
, i
)
198 ? "protected" : "private"),
199 BASETYPE_VIA_VIRTUAL (type
, i
) ? " virtual" : "");
200 name
= type_name_no_tag (TYPE_BASECLASS (type
, i
));
202 print_name_maybe_canonical (name
, flags
, stream
);
204 fprintf_filtered (stream
, "(null)");
208 fputs_filtered (" ", stream
);
212 /* Print the C++ method arguments ARGS to the file STREAM. */
215 cp_type_print_method_args (struct type
*mtype
, const char *prefix
,
216 const char *varstring
, int staticp
,
217 struct ui_file
*stream
,
218 const struct type_print_options
*flags
)
220 struct field
*args
= TYPE_FIELDS (mtype
);
221 int nargs
= TYPE_NFIELDS (mtype
);
222 int varargs
= TYPE_VARARGS (mtype
);
225 fprintf_symbol_filtered (stream
, prefix
,
226 language_cplus
, DMGL_ANSI
);
227 fprintf_symbol_filtered (stream
, varstring
,
228 language_cplus
, DMGL_ANSI
);
229 fputs_filtered ("(", stream
);
231 /* Skip the class variable. */
237 c_print_type (args
[i
++].type
, "", stream
, 0, 0, flags
);
239 if (i
== nargs
&& varargs
)
240 fprintf_filtered (stream
, ", ...");
243 fprintf_filtered (stream
, ", ");
249 fprintf_filtered (stream
, "...");
250 else if (current_language
->la_language
== language_cplus
)
251 fprintf_filtered (stream
, "void");
253 fprintf_filtered (stream
, ")");
255 /* For non-static methods, read qualifiers from the type of
261 gdb_assert (nargs
> 0);
262 gdb_assert (TYPE_CODE (args
[0].type
) == TYPE_CODE_PTR
);
263 domain
= TYPE_TARGET_TYPE (args
[0].type
);
265 if (TYPE_CONST (domain
))
266 fprintf_filtered (stream
, " const");
268 if (TYPE_VOLATILE (domain
))
269 fprintf_filtered (stream
, " volatile");
271 if (TYPE_RESTRICT (domain
))
272 fprintf_filtered (stream
, " restrict");
274 if (TYPE_ATOMIC (domain
))
275 fprintf_filtered (stream
, " _Atomic");
280 /* Print any asterisks or open-parentheses needed before the
281 variable name (to describe its type).
283 On outermost call, pass 0 for PASSED_A_PTR.
284 On outermost call, SHOW > 0 means should ignore
285 any typename for TYPE and show its details.
286 SHOW is always zero on recursive calls.
288 NEED_POST_SPACE is non-zero when a space will be be needed
289 between a trailing qualifier and a field, variable, or function
293 c_type_print_varspec_prefix (struct type
*type
,
294 struct ui_file
*stream
,
295 int show
, int passed_a_ptr
,
297 const struct type_print_options
*flags
)
304 if (TYPE_NAME (type
) && show
<= 0)
309 switch (TYPE_CODE (type
))
312 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
313 stream
, show
, 1, 1, flags
);
314 fprintf_filtered (stream
, "*");
315 c_type_print_modifier (type
, stream
, 1, need_post_space
);
318 case TYPE_CODE_MEMBERPTR
:
319 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
320 stream
, show
, 0, 0, flags
);
321 name
= type_name_no_tag (TYPE_SELF_TYPE (type
));
323 print_name_maybe_canonical (name
, flags
, stream
);
325 c_type_print_base (TYPE_SELF_TYPE (type
),
326 stream
, -1, passed_a_ptr
, flags
);
327 fprintf_filtered (stream
, "::*");
330 case TYPE_CODE_METHODPTR
:
331 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
332 stream
, show
, 0, 0, flags
);
333 fprintf_filtered (stream
, "(");
334 name
= type_name_no_tag (TYPE_SELF_TYPE (type
));
336 print_name_maybe_canonical (name
, flags
, stream
);
338 c_type_print_base (TYPE_SELF_TYPE (type
),
339 stream
, -1, passed_a_ptr
, flags
);
340 fprintf_filtered (stream
, "::*");
344 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
345 stream
, show
, 1, 0, flags
);
346 fprintf_filtered (stream
, "&");
347 c_type_print_modifier (type
, stream
, 1, need_post_space
);
350 case TYPE_CODE_METHOD
:
352 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
353 stream
, show
, 0, 0, flags
);
355 fprintf_filtered (stream
, "(");
358 case TYPE_CODE_ARRAY
:
359 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
360 stream
, show
, 0, 0, flags
);
362 fprintf_filtered (stream
, "(");
365 case TYPE_CODE_TYPEDEF
:
366 c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type
),
367 stream
, show
, passed_a_ptr
, 0, flags
);
370 case TYPE_CODE_UNDEF
:
371 case TYPE_CODE_STRUCT
:
372 case TYPE_CODE_UNION
:
377 case TYPE_CODE_ERROR
:
381 case TYPE_CODE_RANGE
:
382 case TYPE_CODE_STRING
:
383 case TYPE_CODE_COMPLEX
:
384 case TYPE_CODE_NAMESPACE
:
385 case TYPE_CODE_DECFLOAT
:
386 /* These types need no prefix. They are listed here so that
387 gcc -Wall will reveal any types that haven't been handled. */
390 error (_("type not handled in c_type_print_varspec_prefix()"));
395 /* Print out "const" and "volatile" attributes,
396 and address space id if present.
397 TYPE is a pointer to the type being printed out.
398 STREAM is the output destination.
399 NEED_PRE_SPACE = 1 indicates an initial white space is needed.
400 NEED_POST_SPACE = 1 indicates a final white space is needed. */
403 c_type_print_modifier (struct type
*type
, struct ui_file
*stream
,
404 int need_pre_space
, int need_post_space
)
406 int did_print_modifier
= 0;
407 const char *address_space_id
;
409 /* We don't print `const' qualifiers for references --- since all
410 operators affect the thing referenced, not the reference itself,
411 every reference is `const'. */
412 if (TYPE_CONST (type
)
413 && TYPE_CODE (type
) != TYPE_CODE_REF
)
416 fprintf_filtered (stream
, " ");
417 fprintf_filtered (stream
, "const");
418 did_print_modifier
= 1;
421 if (TYPE_VOLATILE (type
))
423 if (did_print_modifier
|| need_pre_space
)
424 fprintf_filtered (stream
, " ");
425 fprintf_filtered (stream
, "volatile");
426 did_print_modifier
= 1;
429 if (TYPE_RESTRICT (type
))
431 if (did_print_modifier
|| need_pre_space
)
432 fprintf_filtered (stream
, " ");
433 fprintf_filtered (stream
, "restrict");
434 did_print_modifier
= 1;
437 if (TYPE_ATOMIC (type
))
439 if (did_print_modifier
|| need_pre_space
)
440 fprintf_filtered (stream
, " ");
441 fprintf_filtered (stream
, "_Atomic");
442 did_print_modifier
= 1;
445 address_space_id
= address_space_int_to_name (get_type_arch (type
),
446 TYPE_INSTANCE_FLAGS (type
));
447 if (address_space_id
)
449 if (did_print_modifier
|| need_pre_space
)
450 fprintf_filtered (stream
, " ");
451 fprintf_filtered (stream
, "@%s", address_space_id
);
452 did_print_modifier
= 1;
455 if (did_print_modifier
&& need_post_space
)
456 fprintf_filtered (stream
, " ");
460 /* Print out the arguments of TYPE, which should have TYPE_CODE_METHOD
461 or TYPE_CODE_FUNC, to STREAM. Artificial arguments, such as "this"
462 in non-static methods, are displayed if LINKAGE_NAME is zero. If
463 LINKAGE_NAME is non-zero and LANGUAGE is language_cplus the topmost
464 parameter types get removed their possible const and volatile qualifiers to
465 match demangled linkage name parameters part of such function type.
466 LANGUAGE is the language in which TYPE was defined. This is a necessary
467 evil since this code is used by the C, C++, and Java backends. */
470 c_type_print_args (struct type
*type
, struct ui_file
*stream
,
471 int linkage_name
, enum language language
,
472 const struct type_print_options
*flags
)
477 fprintf_filtered (stream
, "(");
479 for (i
= 0; i
< TYPE_NFIELDS (type
); i
++)
481 struct type
*param_type
;
483 if (TYPE_FIELD_ARTIFICIAL (type
, i
) && linkage_name
)
488 fprintf_filtered (stream
, ", ");
492 param_type
= TYPE_FIELD_TYPE (type
, i
);
494 if (language
== language_cplus
&& linkage_name
)
496 /* C++ standard, 13.1 Overloadable declarations, point 3, item:
497 - Parameter declarations that differ only in the presence or
498 absence of const and/or volatile are equivalent.
500 And the const/volatile qualifiers are not present in the mangled
501 names as produced by GCC. */
503 param_type
= make_cv_type (0, 0, param_type
, NULL
);
506 if (language
== language_java
)
507 java_print_type (param_type
, "", stream
, -1, 0, flags
);
509 c_print_type (param_type
, "", stream
, -1, 0, flags
);
513 if (printed_any
&& TYPE_VARARGS (type
))
515 /* Print out a trailing ellipsis for varargs functions. Ignore
516 TYPE_VARARGS if the function has no named arguments; that
517 represents unprototyped (K&R style) C functions. */
518 if (printed_any
&& TYPE_VARARGS (type
))
520 fprintf_filtered (stream
, ", ");
522 fprintf_filtered (stream
, "...");
525 else if (!printed_any
526 && ((TYPE_PROTOTYPED (type
) && language
!= language_java
)
527 || language
== language_cplus
))
528 fprintf_filtered (stream
, "void");
530 fprintf_filtered (stream
, ")");
533 /* Return true iff the j'th overloading of the i'th method of TYPE
534 is a type conversion operator, like `operator int () { ... }'.
535 When listing a class's methods, we don't print the return type of
539 is_type_conversion_operator (struct type
*type
, int i
, int j
)
541 /* I think the whole idea of recognizing type conversion operators
542 by their name is pretty terrible. But I don't think our present
543 data structure gives us any other way to tell. If you know of
544 some other way, feel free to rewrite this function. */
545 const char *name
= TYPE_FN_FIELDLIST_NAME (type
, i
);
547 if (!startswith (name
, "operator"))
551 if (! strchr (" \t\f\n\r", *name
))
554 while (strchr (" \t\f\n\r", *name
))
557 if (!('a' <= *name
&& *name
<= 'z')
558 && !('A' <= *name
&& *name
<= 'Z')
560 /* If this doesn't look like the start of an identifier, then it
561 isn't a type conversion operator. */
563 else if (startswith (name
, "new"))
565 else if (startswith (name
, "delete"))
568 /* If it doesn't look like new or delete, it's a type conversion
572 /* Is that really the end of the name? */
573 if (('a' <= *name
&& *name
<= 'z')
574 || ('A' <= *name
&& *name
<= 'Z')
575 || ('0' <= *name
&& *name
<= '9')
577 /* No, so the identifier following "operator" must be a type name,
578 and this is a type conversion operator. */
581 /* That was indeed the end of the name, so it was `operator new' or
582 `operator delete', neither of which are type conversion
587 /* Given a C++ qualified identifier QID, strip off the qualifiers,
588 yielding the unqualified name. The return value is a pointer into
591 It's a pity we don't have this information in some more structured
592 form. Even the author of this function feels that writing little
593 parsers like this everywhere is stupid. */
596 remove_qualifiers (char *qid
)
598 int quoted
= 0; /* Zero if we're not in quotes;
599 '"' if we're in a double-quoted string;
600 '\'' if we're in a single-quoted string. */
601 int depth
= 0; /* Number of unclosed parens we've seen. */
602 char *parenstack
= (char *) alloca (strlen (qid
));
604 char *last
= 0; /* The character after the rightmost
605 `::' token we've seen so far. */
607 for (scan
= qid
; *scan
; scan
++)
613 else if (*scan
== '\\' && *(scan
+ 1))
616 else if (scan
[0] == ':' && scan
[1] == ':')
618 /* If we're inside parenthesis (i.e., an argument list) or
619 angle brackets (i.e., a list of template arguments), then
620 we don't record the position of this :: token, since it's
621 not relevant to the top-level structure we're trying to
629 else if (*scan
== '"' || *scan
== '\'')
631 else if (*scan
== '(')
632 parenstack
[depth
++] = ')';
633 else if (*scan
== '[')
634 parenstack
[depth
++] = ']';
635 /* We're going to treat <> as a pair of matching characters,
636 since we're more likely to see those in template id's than
637 real less-than characters. What a crock. */
638 else if (*scan
== '<')
639 parenstack
[depth
++] = '>';
640 else if (*scan
== ')' || *scan
== ']' || *scan
== '>')
642 if (depth
> 0 && parenstack
[depth
- 1] == *scan
)
646 /* We're going to do a little error recovery here. If
647 we don't find a match for *scan on the paren stack,
648 but there is something lower on the stack that does
649 match, we pop the stack to that point. */
652 for (i
= depth
- 1; i
>= 0; i
--)
653 if (parenstack
[i
] == *scan
)
665 /* We didn't find any :: tokens at the top level, so declare the
666 whole thing an unqualified identifier. */
670 /* Print any array sizes, function arguments or close parentheses
671 needed after the variable name (to describe its type).
672 Args work like c_type_print_varspec_prefix. */
675 c_type_print_varspec_suffix (struct type
*type
,
676 struct ui_file
*stream
,
677 int show
, int passed_a_ptr
,
679 const struct type_print_options
*flags
)
684 if (TYPE_NAME (type
) && show
<= 0)
689 switch (TYPE_CODE (type
))
691 case TYPE_CODE_ARRAY
:
693 LONGEST low_bound
, high_bound
;
694 int is_vector
= TYPE_VECTOR (type
);
697 fprintf_filtered (stream
, ")");
699 fprintf_filtered (stream
, (is_vector
?
700 " __attribute__ ((vector_size(" : "["));
701 /* Bounds are not yet resolved, print a bounds placeholder instead. */
702 if (TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type
)) == PROP_LOCEXPR
703 || TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type
)) == PROP_LOCLIST
)
704 fprintf_filtered (stream
, "variable length");
705 else if (get_array_bounds (type
, &low_bound
, &high_bound
))
706 fprintf_filtered (stream
, "%s",
707 plongest (high_bound
- low_bound
+ 1));
708 fprintf_filtered (stream
, (is_vector
? ")))" : "]"));
710 c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type
), stream
,
715 case TYPE_CODE_MEMBERPTR
:
716 c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type
), stream
,
720 case TYPE_CODE_METHODPTR
:
721 fprintf_filtered (stream
, ")");
722 c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type
), stream
,
728 c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type
), stream
,
732 case TYPE_CODE_METHOD
:
735 fprintf_filtered (stream
, ")");
737 c_type_print_args (type
, stream
, 0, current_language
->la_language
,
739 c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type
), stream
,
740 show
, passed_a_ptr
, 0, flags
);
743 case TYPE_CODE_TYPEDEF
:
744 c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type
), stream
,
745 show
, passed_a_ptr
, 0, flags
);
748 case TYPE_CODE_UNDEF
:
749 case TYPE_CODE_STRUCT
:
750 case TYPE_CODE_UNION
:
755 case TYPE_CODE_ERROR
:
759 case TYPE_CODE_RANGE
:
760 case TYPE_CODE_STRING
:
761 case TYPE_CODE_COMPLEX
:
762 case TYPE_CODE_NAMESPACE
:
763 case TYPE_CODE_DECFLOAT
:
764 /* These types do not need a suffix. They are listed so that
765 gcc -Wall will report types that may not have been
769 error (_("type not handled in c_type_print_varspec_suffix()"));
774 /* A helper for c_type_print_base that displays template
775 parameters and their bindings, if needed.
777 TABLE is the local bindings table to use. If NULL, no printing is
778 done. Note that, at this point, TABLE won't have any useful
779 information in it -- but it is also used as a flag to
780 print_name_maybe_canonical to activate searching the global typedef
783 TYPE is the type whose template arguments are being displayed.
785 STREAM is the stream on which to print. */
788 c_type_print_template_args (const struct type_print_options
*flags
,
789 struct type
*type
, struct ui_file
*stream
)
796 for (i
= 0; i
< TYPE_N_TEMPLATE_ARGUMENTS (type
); ++i
)
798 struct symbol
*sym
= TYPE_TEMPLATE_ARGUMENT (type
, i
);
800 if (SYMBOL_CLASS (sym
) != LOC_TYPEDEF
)
806 fprintf_filtered (stream
, _("[with %s = "),
807 SYMBOL_LINKAGE_NAME (sym
));
812 fputs_filtered (", ", stream
);
814 fprintf_filtered (stream
, "%s = ", SYMBOL_LINKAGE_NAME (sym
));
817 c_print_type (SYMBOL_TYPE (sym
), "", stream
, -1, 0, flags
);
821 fputs_filtered (_("] "), stream
);
824 /* Print the name of the type (or the ultimate pointer target,
825 function value or array element), or the description of a structure
828 SHOW positive means print details about the type (e.g. enum
829 values), and print structure elements passing SHOW - 1 for show.
831 SHOW negative means just print the type name or struct tag if there
832 is one. If there is no name, print something sensible but concise
835 SHOW zero means just print the type name or struct tag if there is
836 one. If there is no name, print something sensible but not as
837 concise like "struct {int x; int y;}".
839 LEVEL is the number of spaces to indent by.
840 We increase it for some recursive calls. */
843 c_type_print_base (struct type
*type
, struct ui_file
*stream
,
844 int show
, int level
, const struct type_print_options
*flags
)
850 s_none
, s_public
, s_private
, s_protected
853 int need_access_label
= 0;
860 fputs_filtered (_("<type unknown>"), stream
);
864 /* When SHOW is zero or less, and there is a valid type name, then
865 always just print the type name directly from the type. */
866 /* If we have "typedef struct foo {. . .} bar;" do we want to print
867 it as "struct foo" or as "bar"? Pick the latter, because C++
868 folk tend to expect things like "class5 *foo" rather than "struct
872 && TYPE_NAME (type
) != NULL
)
874 c_type_print_modifier (type
, stream
, 0, 1);
875 print_name_maybe_canonical (TYPE_NAME (type
), flags
, stream
);
879 CHECK_TYPEDEF (type
);
881 switch (TYPE_CODE (type
))
883 case TYPE_CODE_TYPEDEF
:
884 /* If we get here, the typedef doesn't have a name, and we
885 couldn't resolve TYPE_TARGET_TYPE. Not much we can do. */
886 gdb_assert (TYPE_NAME (type
) == NULL
);
887 gdb_assert (TYPE_TARGET_TYPE (type
) == NULL
);
888 fprintf_filtered (stream
, _("<unnamed typedef>"));
891 case TYPE_CODE_ARRAY
:
893 case TYPE_CODE_MEMBERPTR
:
896 case TYPE_CODE_METHOD
:
897 case TYPE_CODE_METHODPTR
:
898 c_type_print_base (TYPE_TARGET_TYPE (type
),
899 stream
, show
, level
, flags
);
902 case TYPE_CODE_STRUCT
:
903 case TYPE_CODE_UNION
:
905 struct type_print_options local_flags
= *flags
;
906 struct type_print_options semi_local_flags
= *flags
;
907 struct cleanup
*local_cleanups
= make_cleanup (null_cleanup
, NULL
);
909 local_flags
.local_typedefs
= NULL
;
910 semi_local_flags
.local_typedefs
= NULL
;
914 if (flags
->local_typedefs
)
915 local_flags
.local_typedefs
916 = copy_typedef_hash (flags
->local_typedefs
);
918 local_flags
.local_typedefs
= create_typedef_hash ();
920 make_cleanup_free_typedef_hash (local_flags
.local_typedefs
);
923 c_type_print_modifier (type
, stream
, 0, 1);
924 if (TYPE_CODE (type
) == TYPE_CODE_UNION
)
925 fprintf_filtered (stream
, "union ");
926 else if (TYPE_DECLARED_CLASS (type
))
927 fprintf_filtered (stream
, "class ");
929 fprintf_filtered (stream
, "struct ");
931 /* Print the tag if it exists. The HP aCC compiler emits a
932 spurious "{unnamed struct}"/"{unnamed union}"/"{unnamed
933 enum}" tag for unnamed struct/union/enum's, which we don't
935 if (TYPE_TAG_NAME (type
) != NULL
936 && !startswith (TYPE_TAG_NAME (type
), "{unnamed"))
938 /* When printing the tag name, we are still effectively
939 printing in the outer context, hence the use of FLAGS
941 print_name_maybe_canonical (TYPE_TAG_NAME (type
), flags
, stream
);
943 fputs_filtered (" ", stream
);
948 /* If we just printed a tag name, no need to print anything
950 if (TYPE_TAG_NAME (type
) == NULL
)
951 fprintf_filtered (stream
, "{...}");
953 else if (show
> 0 || TYPE_TAG_NAME (type
) == NULL
)
955 struct type
*basetype
;
958 c_type_print_template_args (&local_flags
, type
, stream
);
960 /* Add in template parameters when printing derivation info. */
961 add_template_parameters (local_flags
.local_typedefs
, type
);
962 cp_type_print_derivation_info (stream
, type
, &local_flags
);
964 /* This holds just the global typedefs and the template
966 semi_local_flags
.local_typedefs
967 = copy_typedef_hash (local_flags
.local_typedefs
);
968 if (semi_local_flags
.local_typedefs
)
969 make_cleanup_free_typedef_hash (semi_local_flags
.local_typedefs
);
971 /* Now add in the local typedefs. */
972 recursively_update_typedef_hash (local_flags
.local_typedefs
, type
);
974 fprintf_filtered (stream
, "{\n");
975 if (TYPE_NFIELDS (type
) == 0 && TYPE_NFN_FIELDS (type
) == 0
976 && TYPE_TYPEDEF_FIELD_COUNT (type
) == 0)
978 if (TYPE_STUB (type
))
979 fprintfi_filtered (level
+ 4, stream
,
980 _("<incomplete type>\n"));
982 fprintfi_filtered (level
+ 4, stream
,
983 _("<no data fields>\n"));
986 /* Start off with no specific section type, so we can print
987 one for the first field we find, and use that section type
988 thereafter until we find another type. */
990 section_type
= s_none
;
992 /* For a class, if all members are private, there's no need
993 for a "private:" label; similarly, for a struct or union
994 masquerading as a class, if all members are public, there's
995 no need for a "public:" label. */
997 if (TYPE_DECLARED_CLASS (type
))
1000 len
= TYPE_NFIELDS (type
);
1001 for (i
= TYPE_N_BASECLASSES (type
); i
< len
; i
++)
1002 if (!TYPE_FIELD_PRIVATE (type
, i
))
1004 need_access_label
= 1;
1008 if (!need_access_label
)
1010 len2
= TYPE_NFN_FIELDS (type
);
1011 for (j
= 0; j
< len2
; j
++)
1013 len
= TYPE_FN_FIELDLIST_LENGTH (type
, j
);
1014 for (i
= 0; i
< len
; i
++)
1015 if (!TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type
,
1018 need_access_label
= 1;
1021 if (need_access_label
)
1029 len
= TYPE_NFIELDS (type
);
1030 for (i
= TYPE_N_BASECLASSES (type
); i
< len
; i
++)
1031 if (TYPE_FIELD_PRIVATE (type
, i
)
1032 || TYPE_FIELD_PROTECTED (type
, i
))
1034 need_access_label
= 1;
1038 if (!need_access_label
)
1040 len2
= TYPE_NFN_FIELDS (type
);
1041 for (j
= 0; j
< len2
; j
++)
1044 len
= TYPE_FN_FIELDLIST_LENGTH (type
, j
);
1045 for (i
= 0; i
< len
; i
++)
1046 if (TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type
,
1048 || TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type
,
1052 need_access_label
= 1;
1055 if (need_access_label
)
1061 /* If there is a base class for this type,
1062 do not print the field that it occupies. */
1064 len
= TYPE_NFIELDS (type
);
1065 vptr_fieldno
= get_vptr_fieldno (type
, &basetype
);
1066 for (i
= TYPE_N_BASECLASSES (type
); i
< len
; i
++)
1070 /* If we have a virtual table pointer, omit it. Even if
1071 virtual table pointers are not specifically marked in
1072 the debug info, they should be artificial. */
1073 if ((i
== vptr_fieldno
&& type
== basetype
)
1074 || TYPE_FIELD_ARTIFICIAL (type
, i
))
1077 if (need_access_label
)
1079 if (TYPE_FIELD_PROTECTED (type
, i
))
1081 if (section_type
!= s_protected
)
1083 section_type
= s_protected
;
1084 fprintfi_filtered (level
+ 2, stream
,
1088 else if (TYPE_FIELD_PRIVATE (type
, i
))
1090 if (section_type
!= s_private
)
1092 section_type
= s_private
;
1093 fprintfi_filtered (level
+ 2, stream
,
1099 if (section_type
!= s_public
)
1101 section_type
= s_public
;
1102 fprintfi_filtered (level
+ 2, stream
,
1108 print_spaces_filtered (level
+ 4, stream
);
1109 if (field_is_static (&TYPE_FIELD (type
, i
)))
1110 fprintf_filtered (stream
, "static ");
1111 c_print_type (TYPE_FIELD_TYPE (type
, i
),
1112 TYPE_FIELD_NAME (type
, i
),
1113 stream
, show
- 1, level
+ 4,
1115 if (!field_is_static (&TYPE_FIELD (type
, i
))
1116 && TYPE_FIELD_PACKED (type
, i
))
1118 /* It is a bitfield. This code does not attempt
1119 to look at the bitpos and reconstruct filler,
1120 unnamed fields. This would lead to misleading
1121 results if the compiler does not put out fields
1122 for such things (I don't know what it does). */
1123 fprintf_filtered (stream
, " : %d",
1124 TYPE_FIELD_BITSIZE (type
, i
));
1126 fprintf_filtered (stream
, ";\n");
1129 /* If there are both fields and methods, put a blank line
1130 between them. Make sure to count only method that we
1131 will display; artificial methods will be hidden. */
1132 len
= TYPE_NFN_FIELDS (type
);
1133 if (!flags
->print_methods
)
1136 for (i
= 0; i
< len
; i
++)
1138 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, i
);
1139 int len2
= TYPE_FN_FIELDLIST_LENGTH (type
, i
);
1142 for (j
= 0; j
< len2
; j
++)
1143 if (!TYPE_FN_FIELD_ARTIFICIAL (f
, j
))
1146 if (real_len
> 0 && section_type
!= s_none
)
1147 fprintf_filtered (stream
, "\n");
1149 /* C++: print out the methods. */
1150 for (i
= 0; i
< len
; i
++)
1152 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, i
);
1153 int j
, len2
= TYPE_FN_FIELDLIST_LENGTH (type
, i
);
1154 const char *method_name
= TYPE_FN_FIELDLIST_NAME (type
, i
);
1155 const char *name
= type_name_no_tag (type
);
1156 int is_constructor
= name
&& strcmp (method_name
,
1159 for (j
= 0; j
< len2
; j
++)
1161 const char *mangled_name
;
1162 char *demangled_name
;
1163 struct cleanup
*inner_cleanup
;
1164 const char *physname
= TYPE_FN_FIELD_PHYSNAME (f
, j
);
1165 int is_full_physname_constructor
=
1166 TYPE_FN_FIELD_CONSTRUCTOR (f
, j
)
1167 || is_constructor_name (physname
)
1168 || is_destructor_name (physname
)
1169 || method_name
[0] == '~';
1171 /* Do not print out artificial methods. */
1172 if (TYPE_FN_FIELD_ARTIFICIAL (f
, j
))
1175 inner_cleanup
= make_cleanup (null_cleanup
, NULL
);
1178 if (TYPE_FN_FIELD_PROTECTED (f
, j
))
1180 if (section_type
!= s_protected
)
1182 section_type
= s_protected
;
1183 fprintfi_filtered (level
+ 2, stream
,
1187 else if (TYPE_FN_FIELD_PRIVATE (f
, j
))
1189 if (section_type
!= s_private
)
1191 section_type
= s_private
;
1192 fprintfi_filtered (level
+ 2, stream
,
1198 if (section_type
!= s_public
)
1200 section_type
= s_public
;
1201 fprintfi_filtered (level
+ 2, stream
,
1206 print_spaces_filtered (level
+ 4, stream
);
1207 if (TYPE_FN_FIELD_VIRTUAL_P (f
, j
))
1208 fprintf_filtered (stream
, "virtual ");
1209 else if (TYPE_FN_FIELD_STATIC_P (f
, j
))
1210 fprintf_filtered (stream
, "static ");
1211 if (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f
, j
)) == 0)
1213 /* Keep GDB from crashing here. */
1214 fprintf_filtered (stream
,
1215 _("<undefined type> %s;\n"),
1216 TYPE_FN_FIELD_PHYSNAME (f
, j
));
1219 else if (!is_constructor
/* Constructors don't
1222 && !is_full_physname_constructor
/* " " */
1223 && !is_type_conversion_operator (type
, i
, j
))
1225 c_print_type (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f
, j
)),
1228 fputs_filtered (" ", stream
);
1230 if (TYPE_FN_FIELD_STUB (f
, j
))
1234 /* Build something we can demangle. */
1235 tem
= gdb_mangle_name (type
, i
, j
);
1236 make_cleanup (xfree
, tem
);
1240 mangled_name
= TYPE_FN_FIELD_PHYSNAME (f
, j
);
1243 gdb_demangle (mangled_name
,
1244 DMGL_ANSI
| DMGL_PARAMS
);
1245 if (demangled_name
== NULL
)
1247 /* In some cases (for instance with the HP
1248 demangling), if a function has more than 10
1249 arguments, the demangling will fail.
1250 Let's try to reconstruct the function
1251 signature from the symbol information. */
1252 if (!TYPE_FN_FIELD_STUB (f
, j
))
1254 int staticp
= TYPE_FN_FIELD_STATIC_P (f
, j
);
1255 struct type
*mtype
= TYPE_FN_FIELD_TYPE (f
, j
);
1257 cp_type_print_method_args (mtype
,
1261 stream
, &local_flags
);
1264 fprintf_filtered (stream
,
1265 _("<badly mangled name '%s'>"),
1271 char *demangled_no_class
1272 = remove_qualifiers (demangled_name
);
1274 /* Get rid of the `static' appended by the
1276 p
= strstr (demangled_no_class
, " static");
1279 int length
= p
- demangled_no_class
;
1280 char *demangled_no_static
;
1283 = (char *) xmalloc (length
+ 1);
1284 strncpy (demangled_no_static
,
1285 demangled_no_class
, length
);
1286 *(demangled_no_static
+ length
) = '\0';
1287 fputs_filtered (demangled_no_static
, stream
);
1288 xfree (demangled_no_static
);
1291 fputs_filtered (demangled_no_class
, stream
);
1292 xfree (demangled_name
);
1295 do_cleanups (inner_cleanup
);
1297 fprintf_filtered (stream
, ";\n");
1301 /* Print typedefs defined in this class. */
1303 if (TYPE_TYPEDEF_FIELD_COUNT (type
) != 0 && flags
->print_typedefs
)
1305 if (TYPE_NFIELDS (type
) != 0 || TYPE_NFN_FIELDS (type
) != 0)
1306 fprintf_filtered (stream
, "\n");
1308 for (i
= 0; i
< TYPE_TYPEDEF_FIELD_COUNT (type
); i
++)
1310 struct type
*target
= TYPE_TYPEDEF_FIELD_TYPE (type
, i
);
1312 /* Dereference the typedef declaration itself. */
1313 gdb_assert (TYPE_CODE (target
) == TYPE_CODE_TYPEDEF
);
1314 target
= TYPE_TARGET_TYPE (target
);
1316 print_spaces_filtered (level
+ 4, stream
);
1317 fprintf_filtered (stream
, "typedef ");
1319 /* We want to print typedefs with substitutions
1320 from the template parameters or globally-known
1321 typedefs but not local typedefs. */
1322 c_print_type (target
,
1323 TYPE_TYPEDEF_FIELD_NAME (type
, i
),
1324 stream
, show
- 1, level
+ 4,
1326 fprintf_filtered (stream
, ";\n");
1330 fprintfi_filtered (level
, stream
, "}");
1333 do_cleanups (local_cleanups
);
1337 case TYPE_CODE_ENUM
:
1338 c_type_print_modifier (type
, stream
, 0, 1);
1339 fprintf_filtered (stream
, "enum ");
1340 if (TYPE_DECLARED_CLASS (type
))
1341 fprintf_filtered (stream
, "class ");
1342 /* Print the tag name if it exists.
1343 The aCC compiler emits a spurious
1344 "{unnamed struct}"/"{unnamed union}"/"{unnamed enum}"
1345 tag for unnamed struct/union/enum's, which we don't
1347 if (TYPE_TAG_NAME (type
) != NULL
1348 && !startswith (TYPE_TAG_NAME (type
), "{unnamed"))
1350 print_name_maybe_canonical (TYPE_TAG_NAME (type
), flags
, stream
);
1352 fputs_filtered (" ", stream
);
1358 /* If we just printed a tag name, no need to print anything
1360 if (TYPE_TAG_NAME (type
) == NULL
)
1361 fprintf_filtered (stream
, "{...}");
1363 else if (show
> 0 || TYPE_TAG_NAME (type
) == NULL
)
1365 LONGEST lastval
= 0;
1367 /* We can't handle this case perfectly, as DWARF does not
1368 tell us whether or not the underlying type was specified
1369 in the source (and other debug formats don't provide this
1370 at all). We choose to print the underlying type, if it
1371 has a name, when in C++ on the theory that it's better to
1372 print too much than too little; but conversely not to
1373 print something egregiously outside the current
1374 language's syntax. */
1375 if (current_language
->la_language
== language_cplus
1376 && TYPE_TARGET_TYPE (type
) != NULL
)
1378 struct type
*underlying
= check_typedef (TYPE_TARGET_TYPE (type
));
1380 if (TYPE_NAME (underlying
) != NULL
)
1381 fprintf_filtered (stream
, ": %s ", TYPE_NAME (underlying
));
1384 fprintf_filtered (stream
, "{");
1385 len
= TYPE_NFIELDS (type
);
1386 for (i
= 0; i
< len
; i
++)
1390 fprintf_filtered (stream
, ", ");
1392 fputs_filtered (TYPE_FIELD_NAME (type
, i
), stream
);
1393 if (lastval
!= TYPE_FIELD_ENUMVAL (type
, i
))
1395 fprintf_filtered (stream
, " = %s",
1396 plongest (TYPE_FIELD_ENUMVAL (type
, i
)));
1397 lastval
= TYPE_FIELD_ENUMVAL (type
, i
);
1401 fprintf_filtered (stream
, "}");
1405 case TYPE_CODE_VOID
:
1406 fprintf_filtered (stream
, "void");
1409 case TYPE_CODE_UNDEF
:
1410 fprintf_filtered (stream
, _("struct <unknown>"));
1413 case TYPE_CODE_ERROR
:
1414 fprintf_filtered (stream
, "%s", TYPE_ERROR_NAME (type
));
1417 case TYPE_CODE_RANGE
:
1418 /* This should not occur. */
1419 fprintf_filtered (stream
, _("<range type>"));
1422 case TYPE_CODE_NAMESPACE
:
1423 fputs_filtered ("namespace ", stream
);
1424 fputs_filtered (TYPE_TAG_NAME (type
), stream
);
1428 /* Handle types not explicitly handled by the other cases, such
1429 as fundamental types. For these, just print whatever the
1430 type name is, as recorded in the type itself. If there is no
1431 type name, then complain. */
1432 if (TYPE_NAME (type
) != NULL
)
1434 c_type_print_modifier (type
, stream
, 0, 1);
1435 print_name_maybe_canonical (TYPE_NAME (type
), flags
, stream
);
1439 /* At least for dump_symtab, it is important that this not
1441 fprintf_filtered (stream
, _("<invalid type code %d>"),