RISC-V: Don't allow unaligned breakpoints.
[external/binutils.git] / gdb / c-typeprint.c
1 /* Support for printing C and C++ types for GDB, the GNU debugger.
2    Copyright (C) 1986-2018 Free Software Foundation, Inc.
3
4    This file is part of GDB.
5
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.
10
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.
15
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/>.  */
18
19 #include "defs.h"
20 #include "gdb_obstack.h"
21 #include "bfd.h"                /* Binary File Description.  */
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "expression.h"
25 #include "value.h"
26 #include "gdbcore.h"
27 #include "target.h"
28 #include "language.h"
29 #include "demangle.h"
30 #include "c-lang.h"
31 #include "typeprint.h"
32 #include "cp-abi.h"
33 #include "cp-support.h"
34
35 /* A list of access specifiers used for printing.  */
36
37 enum access_specifier
38 {
39   s_none,
40   s_public,
41   s_private,
42   s_protected
43 };
44
45 static void c_type_print_varspec_suffix (struct type *, struct ui_file *, int,
46                                          int, int,
47                                          enum language,
48                                          const struct type_print_options *);
49
50 static void c_type_print_varspec_prefix (struct type *,
51                                          struct ui_file *,
52                                          int, int, int,
53                                          enum language,
54                                          const struct type_print_options *,
55                                          struct print_offset_data *);
56
57 /* Print "const", "volatile", or address space modifiers.  */
58 static void c_type_print_modifier (struct type *,
59                                    struct ui_file *,
60                                    int, int);
61
62 static void c_type_print_base_1 (struct type *type, struct ui_file *stream,
63                                  int show, int level, enum language language,
64                                  const struct type_print_options *flags,
65                                  struct print_offset_data *podata);
66 \f
67
68 /* A callback function for cp_canonicalize_string_full that uses
69    typedef_hash_table::find_typedef.  */
70
71 static const char *
72 find_typedef_for_canonicalize (struct type *t, void *data)
73 {
74   return typedef_hash_table::find_typedef
75     ((const struct type_print_options *) data, t);
76 }
77
78 /* Print NAME on STREAM.  If the 'raw' field of FLAGS is not set,
79    canonicalize NAME using the local typedefs first.  */
80
81 static void
82 print_name_maybe_canonical (const char *name,
83                             const struct type_print_options *flags,
84                             struct ui_file *stream)
85 {
86   std::string s;
87
88   if (!flags->raw)
89     s = cp_canonicalize_string_full (name,
90                                      find_typedef_for_canonicalize,
91                                      (void *) flags);
92
93   fputs_filtered (!s.empty () ? s.c_str () : name, stream);
94 }
95
96 \f
97
98 /* Helper function for c_print_type.  */
99
100 static void
101 c_print_type_1 (struct type *type,
102                 const char *varstring,
103                 struct ui_file *stream,
104                 int show, int level,
105                 enum language language,
106                 const struct type_print_options *flags,
107                 struct print_offset_data *podata)
108 {
109   enum type_code code;
110   int demangled_args;
111   int need_post_space;
112   const char *local_name;
113
114   if (show > 0)
115     type = check_typedef (type);
116
117   local_name = typedef_hash_table::find_typedef (flags, type);
118   if (local_name != NULL)
119     {
120       fputs_filtered (local_name, stream);
121       if (varstring != NULL && *varstring != '\0')
122         fputs_filtered (" ", stream);
123     }
124   else
125     {
126       c_type_print_base_1 (type, stream, show, level, language, flags, podata);
127       code = TYPE_CODE (type);
128       if ((varstring != NULL && *varstring != '\0')
129           /* Need a space if going to print stars or brackets;
130              but not if we will print just a type name.  */
131           || ((show > 0 || TYPE_NAME (type) == 0)
132               && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC
133                   || code == TYPE_CODE_METHOD
134                   || (code == TYPE_CODE_ARRAY
135                       && !TYPE_VECTOR (type))
136                   || code == TYPE_CODE_MEMBERPTR
137                   || code == TYPE_CODE_METHODPTR
138                   || TYPE_IS_REFERENCE (type))))
139         fputs_filtered (" ", stream);
140       need_post_space = (varstring != NULL && strcmp (varstring, "") != 0);
141       c_type_print_varspec_prefix (type, stream, show, 0, need_post_space,
142                                    language, flags, podata);
143     }
144
145   if (varstring != NULL)
146     {
147       fputs_filtered (varstring, stream);
148
149       /* For demangled function names, we have the arglist as part of
150          the name, so don't print an additional pair of ()'s.  */
151       if (local_name == NULL)
152         {
153           demangled_args = strchr (varstring, '(') != NULL;
154           c_type_print_varspec_suffix (type, stream, show,
155                                        0, demangled_args,
156                                        language, flags);
157         }
158     }
159 }
160
161 /* LEVEL is the depth to indent lines by.  */
162
163 void
164 c_print_type (struct type *type,
165               const char *varstring,
166               struct ui_file *stream,
167               int show, int level,
168               const struct type_print_options *flags)
169 {
170   struct print_offset_data podata;
171
172   c_print_type_1 (type, varstring, stream, show, level,
173                   current_language->la_language, flags, &podata);
174 }
175
176
177 /* See c-lang.h.  */
178
179 void
180 c_print_type (struct type *type,
181               const char *varstring,
182               struct ui_file *stream,
183               int show, int level,
184               enum language language,
185               const struct type_print_options *flags)
186 {
187   struct print_offset_data podata;
188
189   c_print_type_1 (type, varstring, stream, show, level, language, flags,
190                   &podata);
191 }
192
193 /* Print a typedef using C syntax.  TYPE is the underlying type.
194    NEW_SYMBOL is the symbol naming the type.  STREAM is the stream on
195    which to print.  */
196
197 void
198 c_print_typedef (struct type *type,
199                  struct symbol *new_symbol,
200                  struct ui_file *stream)
201 {
202   type = check_typedef (type);
203   fprintf_filtered (stream, "typedef ");
204   type_print (type, "", stream, 0);
205   if (TYPE_NAME ((SYMBOL_TYPE (new_symbol))) == 0
206       || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol))),
207                  SYMBOL_LINKAGE_NAME (new_symbol)) != 0
208       || TYPE_CODE (SYMBOL_TYPE (new_symbol)) == TYPE_CODE_TYPEDEF)
209     fprintf_filtered (stream, " %s", SYMBOL_PRINT_NAME (new_symbol));
210   fprintf_filtered (stream, ";\n");
211 }
212
213 /* If TYPE is a derived type, then print out derivation information.
214    Print only the actual base classes of this type, not the base
215    classes of the base classes.  I.e. for the derivation hierarchy:
216
217    class A { int a; };
218    class B : public A {int b; };
219    class C : public B {int c; };
220
221    Print the type of class C as:
222
223    class C : public B {
224    int c;
225    }
226
227    Not as the following (like gdb used to), which is not legal C++
228    syntax for derived types and may be confused with the multiple
229    inheritance form:
230
231    class C : public B : public A {
232    int c;
233    }
234
235    In general, gdb should try to print the types as closely as
236    possible to the form that they appear in the source code.  */
237
238 static void
239 cp_type_print_derivation_info (struct ui_file *stream,
240                                struct type *type,
241                                const struct type_print_options *flags)
242 {
243   const char *name;
244   int i;
245
246   for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
247     {
248       wrap_here ("        ");
249       fputs_filtered (i == 0 ? ": " : ", ", stream);
250       fprintf_filtered (stream, "%s%s ",
251                         BASETYPE_VIA_PUBLIC (type, i)
252                         ? "public" : (TYPE_FIELD_PROTECTED (type, i)
253                                       ? "protected" : "private"),
254                         BASETYPE_VIA_VIRTUAL (type, i) ? " virtual" : "");
255       name = TYPE_NAME (TYPE_BASECLASS (type, i));
256       if (name)
257         print_name_maybe_canonical (name, flags, stream);
258       else
259         fprintf_filtered (stream, "(null)");
260     }
261   if (i > 0)
262     {
263       fputs_filtered (" ", stream);
264     }
265 }
266
267 /* Print the C++ method arguments ARGS to the file STREAM.  */
268
269 static void
270 cp_type_print_method_args (struct type *mtype, const char *prefix,
271                            const char *varstring, int staticp,
272                            struct ui_file *stream,
273                            enum language language,
274                            const struct type_print_options *flags)
275 {
276   struct field *args = TYPE_FIELDS (mtype);
277   int nargs = TYPE_NFIELDS (mtype);
278   int varargs = TYPE_VARARGS (mtype);
279   int i;
280
281   fprintf_symbol_filtered (stream, prefix,
282                            language_cplus, DMGL_ANSI);
283   fprintf_symbol_filtered (stream, varstring,
284                            language_cplus, DMGL_ANSI);
285   fputs_filtered ("(", stream);
286
287   /* Skip the class variable.  We keep this here to accommodate older
288      compilers and debug formats which may not support artificial
289      parameters.  */
290   i = staticp ? 0 : 1;
291   if (nargs > i)
292     {
293       while (i < nargs)
294         {
295           struct field arg = args[i++];
296
297           /* Skip any artificial arguments.  */
298           if (FIELD_ARTIFICIAL (arg))
299             continue;
300
301           c_print_type (arg.type, "", stream, 0, 0, flags);
302
303           if (i == nargs && varargs)
304             fprintf_filtered (stream, ", ...");
305           else if (i < nargs)
306             {
307               fprintf_filtered (stream, ", ");
308               wrap_here ("        ");
309             }
310         }
311     }
312   else if (varargs)
313     fprintf_filtered (stream, "...");
314   else if (language == language_cplus)
315     fprintf_filtered (stream, "void");
316
317   fprintf_filtered (stream, ")");
318
319   /* For non-static methods, read qualifiers from the type of
320      THIS.  */
321   if (!staticp)
322     {
323       struct type *domain;
324
325       gdb_assert (nargs > 0);
326       gdb_assert (TYPE_CODE (args[0].type) == TYPE_CODE_PTR);
327       domain = TYPE_TARGET_TYPE (args[0].type);
328
329       if (TYPE_CONST (domain))
330         fprintf_filtered (stream, " const");
331
332       if (TYPE_VOLATILE (domain))
333         fprintf_filtered (stream, " volatile");
334
335       if (TYPE_RESTRICT (domain))
336         fprintf_filtered (stream, " restrict");
337
338       if (TYPE_ATOMIC (domain))
339         fprintf_filtered (stream, " _Atomic");
340     }
341 }
342
343
344 /* Print any asterisks or open-parentheses needed before the
345    variable name (to describe its type).
346
347    On outermost call, pass 0 for PASSED_A_PTR.
348    On outermost call, SHOW > 0 means should ignore
349    any typename for TYPE and show its details.
350    SHOW is always zero on recursive calls.
351    
352    NEED_POST_SPACE is non-zero when a space will be be needed
353    between a trailing qualifier and a field, variable, or function
354    name.  */
355
356 static void
357 c_type_print_varspec_prefix (struct type *type,
358                              struct ui_file *stream,
359                              int show, int passed_a_ptr,
360                              int need_post_space,
361                              enum language language,
362                              const struct type_print_options *flags,
363                              struct print_offset_data *podata)
364 {
365   const char *name;
366
367   if (type == 0)
368     return;
369
370   if (TYPE_NAME (type) && show <= 0)
371     return;
372
373   QUIT;
374
375   switch (TYPE_CODE (type))
376     {
377     case TYPE_CODE_PTR:
378       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
379                                    stream, show, 1, 1, language, flags,
380                                    podata);
381       fprintf_filtered (stream, "*");
382       c_type_print_modifier (type, stream, 1, need_post_space);
383       break;
384
385     case TYPE_CODE_MEMBERPTR:
386       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
387                                    stream, show, 0, 0, language, flags, podata);
388       name = TYPE_NAME (TYPE_SELF_TYPE (type));
389       if (name)
390         print_name_maybe_canonical (name, flags, stream);
391       else
392         c_type_print_base_1 (TYPE_SELF_TYPE (type),
393                              stream, -1, passed_a_ptr, language, flags,
394                              podata);
395       fprintf_filtered (stream, "::*");
396       break;
397
398     case TYPE_CODE_METHODPTR:
399       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
400                                    stream, show, 0, 0, language, flags,
401                                    podata);
402       fprintf_filtered (stream, "(");
403       name = TYPE_NAME (TYPE_SELF_TYPE (type));
404       if (name)
405         print_name_maybe_canonical (name, flags, stream);
406       else
407         c_type_print_base_1 (TYPE_SELF_TYPE (type),
408                              stream, -1, passed_a_ptr, language, flags,
409                              podata);
410       fprintf_filtered (stream, "::*");
411       break;
412
413     case TYPE_CODE_REF:
414     case TYPE_CODE_RVALUE_REF:
415       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
416                                    stream, show, 1, 0, language, flags,
417                                    podata);
418       fprintf_filtered (stream, TYPE_CODE(type) == TYPE_CODE_REF ? "&" : "&&");
419       c_type_print_modifier (type, stream, 1, need_post_space);
420       break;
421
422     case TYPE_CODE_METHOD:
423     case TYPE_CODE_FUNC:
424       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
425                                    stream, show, 0, 0, language, flags,
426                                    podata);
427       if (passed_a_ptr)
428         fprintf_filtered (stream, "(");
429       break;
430
431     case TYPE_CODE_ARRAY:
432       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
433                                    stream, show, 0, 0, language, flags,
434                                    podata);
435       if (passed_a_ptr)
436         fprintf_filtered (stream, "(");
437       break;
438
439     case TYPE_CODE_TYPEDEF:
440       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
441                                    stream, show, passed_a_ptr, 0,
442                                    language, flags, podata);
443       break;
444
445     case TYPE_CODE_UNDEF:
446     case TYPE_CODE_STRUCT:
447     case TYPE_CODE_UNION:
448     case TYPE_CODE_ENUM:
449     case TYPE_CODE_FLAGS:
450     case TYPE_CODE_INT:
451     case TYPE_CODE_FLT:
452     case TYPE_CODE_VOID:
453     case TYPE_CODE_ERROR:
454     case TYPE_CODE_CHAR:
455     case TYPE_CODE_BOOL:
456     case TYPE_CODE_SET:
457     case TYPE_CODE_RANGE:
458     case TYPE_CODE_STRING:
459     case TYPE_CODE_COMPLEX:
460     case TYPE_CODE_NAMESPACE:
461     case TYPE_CODE_DECFLOAT:
462       /* These types need no prefix.  They are listed here so that
463          gcc -Wall will reveal any types that haven't been handled.  */
464       break;
465     default:
466       error (_("type not handled in c_type_print_varspec_prefix()"));
467       break;
468     }
469 }
470
471 /* Print out "const" and "volatile" attributes,
472    and address space id if present.
473    TYPE is a pointer to the type being printed out.
474    STREAM is the output destination.
475    NEED_PRE_SPACE = 1 indicates an initial white space is needed.
476    NEED_POST_SPACE = 1 indicates a final white space is needed.  */
477
478 static void
479 c_type_print_modifier (struct type *type, struct ui_file *stream,
480                        int need_pre_space, int need_post_space)
481 {
482   int did_print_modifier = 0;
483   const char *address_space_id;
484
485   /* We don't print `const' qualifiers for references --- since all
486      operators affect the thing referenced, not the reference itself,
487      every reference is `const'.  */
488   if (TYPE_CONST (type) && !TYPE_IS_REFERENCE (type))
489     {
490       if (need_pre_space)
491         fprintf_filtered (stream, " ");
492       fprintf_filtered (stream, "const");
493       did_print_modifier = 1;
494     }
495
496   if (TYPE_VOLATILE (type))
497     {
498       if (did_print_modifier || need_pre_space)
499         fprintf_filtered (stream, " ");
500       fprintf_filtered (stream, "volatile");
501       did_print_modifier = 1;
502     }
503
504   if (TYPE_RESTRICT (type))
505     {
506       if (did_print_modifier || need_pre_space)
507         fprintf_filtered (stream, " ");
508       fprintf_filtered (stream, "restrict");
509       did_print_modifier = 1;
510     }
511
512   if (TYPE_ATOMIC (type))
513     {
514       if (did_print_modifier || need_pre_space)
515         fprintf_filtered (stream, " ");
516       fprintf_filtered (stream, "_Atomic");
517       did_print_modifier = 1;
518     }
519
520   address_space_id = address_space_int_to_name (get_type_arch (type),
521                                                 TYPE_INSTANCE_FLAGS (type));
522   if (address_space_id)
523     {
524       if (did_print_modifier || need_pre_space)
525         fprintf_filtered (stream, " ");
526       fprintf_filtered (stream, "@%s", address_space_id);
527       did_print_modifier = 1;
528     }
529
530   if (did_print_modifier && need_post_space)
531     fprintf_filtered (stream, " ");
532 }
533
534
535 /* Print out the arguments of TYPE, which should have TYPE_CODE_METHOD
536    or TYPE_CODE_FUNC, to STREAM.  Artificial arguments, such as "this"
537    in non-static methods, are displayed if LINKAGE_NAME is zero.  If
538    LINKAGE_NAME is non-zero and LANGUAGE is language_cplus the topmost
539    parameter types get removed their possible const and volatile qualifiers to
540    match demangled linkage name parameters part of such function type.
541    LANGUAGE is the language in which TYPE was defined.  This is a necessary
542    evil since this code is used by the C and C++.  */
543
544 void
545 c_type_print_args (struct type *type, struct ui_file *stream,
546                    int linkage_name, enum language language,
547                    const struct type_print_options *flags)
548 {
549   int i;
550   int printed_any = 0;
551
552   fprintf_filtered (stream, "(");
553
554   for (i = 0; i < TYPE_NFIELDS (type); i++)
555     {
556       struct type *param_type;
557
558       if (TYPE_FIELD_ARTIFICIAL (type, i) && linkage_name)
559         continue;
560
561       if (printed_any)
562         {
563           fprintf_filtered (stream, ", ");
564           wrap_here ("    ");
565         }
566
567       param_type = TYPE_FIELD_TYPE (type, i);
568
569       if (language == language_cplus && linkage_name)
570         {
571           /* C++ standard, 13.1 Overloadable declarations, point 3, item:
572              - Parameter declarations that differ only in the presence or
573                absence of const and/or volatile are equivalent.
574
575              And the const/volatile qualifiers are not present in the mangled
576              names as produced by GCC.  */
577
578           param_type = make_cv_type (0, 0, param_type, NULL);
579         }
580
581       c_print_type (param_type, "", stream, -1, 0, language, flags);
582       printed_any = 1;
583     }
584
585   if (printed_any && TYPE_VARARGS (type))
586     {
587       /* Print out a trailing ellipsis for varargs functions.  Ignore
588          TYPE_VARARGS if the function has no named arguments; that
589          represents unprototyped (K&R style) C functions.  */
590       if (printed_any && TYPE_VARARGS (type))
591         {
592           fprintf_filtered (stream, ", ");
593           wrap_here ("    ");
594           fprintf_filtered (stream, "...");
595         }
596     }
597   else if (!printed_any
598            && (TYPE_PROTOTYPED (type) || language == language_cplus))
599     fprintf_filtered (stream, "void");
600
601   fprintf_filtered (stream, ")");
602 }
603
604 /* Return true iff the j'th overloading of the i'th method of TYPE
605    is a type conversion operator, like `operator int () { ... }'.
606    When listing a class's methods, we don't print the return type of
607    such operators.  */
608
609 static int
610 is_type_conversion_operator (struct type *type, int i, int j)
611 {
612   /* I think the whole idea of recognizing type conversion operators
613      by their name is pretty terrible.  But I don't think our present
614      data structure gives us any other way to tell.  If you know of
615      some other way, feel free to rewrite this function.  */
616   const char *name = TYPE_FN_FIELDLIST_NAME (type, i);
617
618   if (!startswith (name, CP_OPERATOR_STR))
619     return 0;
620
621   name += 8;
622   if (! strchr (" \t\f\n\r", *name))
623     return 0;
624
625   while (strchr (" \t\f\n\r", *name))
626     name++;
627
628   if (!('a' <= *name && *name <= 'z')
629       && !('A' <= *name && *name <= 'Z')
630       && *name != '_')
631     /* If this doesn't look like the start of an identifier, then it
632        isn't a type conversion operator.  */
633     return 0;
634   else if (startswith (name, "new"))
635     name += 3;
636   else if (startswith (name, "delete"))
637     name += 6;
638   else
639     /* If it doesn't look like new or delete, it's a type conversion
640        operator.  */
641     return 1;
642
643   /* Is that really the end of the name?  */
644   if (('a' <= *name && *name <= 'z')
645       || ('A' <= *name && *name <= 'Z')
646       || ('0' <= *name && *name <= '9')
647       || *name == '_')
648     /* No, so the identifier following "operator" must be a type name,
649        and this is a type conversion operator.  */
650     return 1;
651
652   /* That was indeed the end of the name, so it was `operator new' or
653      `operator delete', neither of which are type conversion
654      operators.  */
655   return 0;
656 }
657
658 /* Given a C++ qualified identifier QID, strip off the qualifiers,
659    yielding the unqualified name.  The return value is a pointer into
660    the original string.
661
662    It's a pity we don't have this information in some more structured
663    form.  Even the author of this function feels that writing little
664    parsers like this everywhere is stupid.  */
665
666 static char *
667 remove_qualifiers (char *qid)
668 {
669   int quoted = 0;       /* Zero if we're not in quotes;
670                            '"' if we're in a double-quoted string;
671                            '\'' if we're in a single-quoted string.  */
672   int depth = 0;        /* Number of unclosed parens we've seen.  */
673   char *parenstack = (char *) alloca (strlen (qid));
674   char *scan;
675   char *last = 0;       /* The character after the rightmost
676                            `::' token we've seen so far.  */
677
678   for (scan = qid; *scan; scan++)
679     {
680       if (quoted)
681         {
682           if (*scan == quoted)
683             quoted = 0;
684           else if (*scan == '\\' && *(scan + 1))
685             scan++;
686         }
687       else if (scan[0] == ':' && scan[1] == ':')
688         {
689           /* If we're inside parenthesis (i.e., an argument list) or
690              angle brackets (i.e., a list of template arguments), then
691              we don't record the position of this :: token, since it's
692              not relevant to the top-level structure we're trying to
693              operate on.  */
694           if (depth == 0)
695             {
696               last = scan + 2;
697               scan++;
698             }
699         }
700       else if (*scan == '"' || *scan == '\'')
701         quoted = *scan;
702       else if (*scan == '(')
703         parenstack[depth++] = ')';
704       else if (*scan == '[')
705         parenstack[depth++] = ']';
706       /* We're going to treat <> as a pair of matching characters,
707          since we're more likely to see those in template id's than
708          real less-than characters.  What a crock.  */
709       else if (*scan == '<')
710         parenstack[depth++] = '>';
711       else if (*scan == ')' || *scan == ']' || *scan == '>')
712         {
713           if (depth > 0 && parenstack[depth - 1] == *scan)
714             depth--;
715           else
716             {
717               /* We're going to do a little error recovery here.  If
718                  we don't find a match for *scan on the paren stack,
719                  but there is something lower on the stack that does
720                  match, we pop the stack to that point.  */
721               int i;
722
723               for (i = depth - 1; i >= 0; i--)
724                 if (parenstack[i] == *scan)
725                   {
726                     depth = i;
727                     break;
728                   }
729             }
730         }
731     }
732
733   if (last)
734     return last;
735   else
736     /* We didn't find any :: tokens at the top level, so declare the
737        whole thing an unqualified identifier.  */
738     return qid;
739 }
740
741 /* Print any array sizes, function arguments or close parentheses
742    needed after the variable name (to describe its type).
743    Args work like c_type_print_varspec_prefix.  */
744
745 static void
746 c_type_print_varspec_suffix (struct type *type,
747                              struct ui_file *stream,
748                              int show, int passed_a_ptr,
749                              int demangled_args,
750                              enum language language,
751                              const struct type_print_options *flags)
752 {
753   if (type == 0)
754     return;
755
756   if (TYPE_NAME (type) && show <= 0)
757     return;
758
759   QUIT;
760
761   switch (TYPE_CODE (type))
762     {
763     case TYPE_CODE_ARRAY:
764       {
765         LONGEST low_bound, high_bound;
766         int is_vector = TYPE_VECTOR (type);
767
768         if (passed_a_ptr)
769           fprintf_filtered (stream, ")");
770
771         fprintf_filtered (stream, (is_vector ?
772                                    " __attribute__ ((vector_size(" : "["));
773         /* Bounds are not yet resolved, print a bounds placeholder instead.  */
774         if (TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type)) == PROP_LOCEXPR
775             || TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type)) == PROP_LOCLIST)
776           fprintf_filtered (stream, "variable length");
777         else if (get_array_bounds (type, &low_bound, &high_bound))
778           fprintf_filtered (stream, "%s", 
779                             plongest (high_bound - low_bound + 1));
780         fprintf_filtered (stream, (is_vector ? ")))" : "]"));
781
782         c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
783                                      show, 0, 0, language, flags);
784       }
785       break;
786
787     case TYPE_CODE_MEMBERPTR:
788       c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
789                                    show, 0, 0, language, flags);
790       break;
791
792     case TYPE_CODE_METHODPTR:
793       fprintf_filtered (stream, ")");
794       c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
795                                    show, 0, 0, language, flags);
796       break;
797
798     case TYPE_CODE_PTR:
799     case TYPE_CODE_REF:
800     case TYPE_CODE_RVALUE_REF:
801       c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
802                                    show, 1, 0, language, flags);
803       break;
804
805     case TYPE_CODE_METHOD:
806     case TYPE_CODE_FUNC:
807       if (passed_a_ptr)
808         fprintf_filtered (stream, ")");
809       if (!demangled_args)
810         c_type_print_args (type, stream, 0, language, flags);
811       c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
812                                    show, passed_a_ptr, 0, language, flags);
813       break;
814
815     case TYPE_CODE_TYPEDEF:
816       c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
817                                    show, passed_a_ptr, 0, language, flags);
818       break;
819
820     case TYPE_CODE_UNDEF:
821     case TYPE_CODE_STRUCT:
822     case TYPE_CODE_UNION:
823     case TYPE_CODE_FLAGS:
824     case TYPE_CODE_ENUM:
825     case TYPE_CODE_INT:
826     case TYPE_CODE_FLT:
827     case TYPE_CODE_VOID:
828     case TYPE_CODE_ERROR:
829     case TYPE_CODE_CHAR:
830     case TYPE_CODE_BOOL:
831     case TYPE_CODE_SET:
832     case TYPE_CODE_RANGE:
833     case TYPE_CODE_STRING:
834     case TYPE_CODE_COMPLEX:
835     case TYPE_CODE_NAMESPACE:
836     case TYPE_CODE_DECFLOAT:
837       /* These types do not need a suffix.  They are listed so that
838          gcc -Wall will report types that may not have been
839          considered.  */
840       break;
841     default:
842       error (_("type not handled in c_type_print_varspec_suffix()"));
843       break;
844     }
845 }
846
847 /* A helper for c_type_print_base that displays template
848    parameters and their bindings, if needed.
849
850    TABLE is the local bindings table to use.  If NULL, no printing is
851    done.  Note that, at this point, TABLE won't have any useful
852    information in it -- but it is also used as a flag to
853    print_name_maybe_canonical to activate searching the global typedef
854    table.
855
856    TYPE is the type whose template arguments are being displayed.
857
858    STREAM is the stream on which to print.  */
859
860 static void
861 c_type_print_template_args (const struct type_print_options *flags,
862                             struct type *type, struct ui_file *stream)
863 {
864   int first = 1, i;
865
866   if (flags->raw)
867     return;
868
869   for (i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
870     {
871       struct symbol *sym = TYPE_TEMPLATE_ARGUMENT (type, i);
872
873       if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
874         continue;
875
876       if (first)
877         {
878           wrap_here ("    ");
879           fprintf_filtered (stream, _("[with %s = "),
880                             SYMBOL_LINKAGE_NAME (sym));
881           first = 0;
882         }
883       else
884         {
885           fputs_filtered (", ", stream);
886           wrap_here ("         ");
887           fprintf_filtered (stream, "%s = ", SYMBOL_LINKAGE_NAME (sym));
888         }
889
890       c_print_type (SYMBOL_TYPE (sym), "", stream, -1, 0, flags);
891     }
892
893   if (!first)
894     fputs_filtered (_("] "), stream);
895 }
896
897 /* Use 'print_spaces_filtered', but take into consideration the
898    type_print_options FLAGS in order to determine how many whitespaces
899    will be printed.  */
900
901 static void
902 print_spaces_filtered_with_print_options
903   (int level, struct ui_file *stream, const struct type_print_options *flags)
904 {
905   if (!flags->print_offsets)
906     print_spaces_filtered (level, stream);
907   else
908     print_spaces_filtered (level + print_offset_data::indentation, stream);
909 }
910
911 /* Output an access specifier to STREAM, if needed.  LAST_ACCESS is the
912    last access specifier output (typically returned by this function).  */
913
914 static enum access_specifier
915 output_access_specifier (struct ui_file *stream,
916                          enum access_specifier last_access,
917                          int level, bool is_protected, bool is_private,
918                          const struct type_print_options *flags)
919 {
920   if (is_protected)
921     {
922       if (last_access != s_protected)
923         {
924           last_access = s_protected;
925           print_spaces_filtered_with_print_options (level + 2, stream, flags);
926           fprintf_filtered (stream, "protected:\n");
927         }
928     }
929   else if (is_private)
930     {
931       if (last_access != s_private)
932         {
933           last_access = s_private;
934           print_spaces_filtered_with_print_options (level + 2, stream, flags);
935           fprintf_filtered (stream, "private:\n");
936         }
937     }
938   else
939     {
940       if (last_access != s_public)
941         {
942           last_access = s_public;
943           print_spaces_filtered_with_print_options (level + 2, stream, flags);
944           fprintf_filtered (stream, "public:\n");
945         }
946     }
947
948   return last_access;
949 }
950
951 /* Return true if an access label (i.e., "public:", "private:",
952    "protected:") needs to be printed for TYPE.  */
953
954 static bool
955 need_access_label_p (struct type *type)
956 {
957   if (TYPE_DECLARED_CLASS (type))
958     {
959       QUIT;
960       for (int i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
961         if (!TYPE_FIELD_PRIVATE (type, i))
962           return true;
963       QUIT;
964       for (int j = 0; j < TYPE_NFN_FIELDS (type); j++)
965         for (int i = 0; i < TYPE_FN_FIELDLIST_LENGTH (type, j); i++)
966           if (!TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type,
967                                                           j), i))
968             return true;
969       QUIT;
970       for (int i = 0; i < TYPE_TYPEDEF_FIELD_COUNT (type); ++i)
971         if (!TYPE_TYPEDEF_FIELD_PRIVATE (type, i))
972           return true;
973     }
974   else
975     {
976       QUIT;
977       for (int i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
978         if (TYPE_FIELD_PRIVATE (type, i) || TYPE_FIELD_PROTECTED (type, i))
979           return true;
980       QUIT;
981       for (int j = 0; j < TYPE_NFN_FIELDS (type); j++)
982         {
983           QUIT;
984           for (int i = 0; i < TYPE_FN_FIELDLIST_LENGTH (type, j); i++)
985             if (TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type,
986                                                              j), i)
987                 || TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type,
988                                                               j),
989                                           i))
990               return true;
991         }
992       QUIT;
993       for (int i = 0; i < TYPE_TYPEDEF_FIELD_COUNT (type); ++i)
994         if (TYPE_TYPEDEF_FIELD_PROTECTED (type, i)
995             || TYPE_TYPEDEF_FIELD_PRIVATE (type, i))
996           return true;
997     }
998
999   return false;
1000 }
1001
1002 /* Helper function that temporarily disables FLAGS->PRINT_OFFSETS,
1003    calls 'c_print_type_1', and then reenables FLAGS->PRINT_OFFSETS if
1004    applicable.  */
1005
1006 static void
1007 c_print_type_no_offsets (struct type *type,
1008                          const char *varstring,
1009                          struct ui_file *stream,
1010                          int show, int level,
1011                          enum language language,
1012                          struct type_print_options *flags,
1013                          struct print_offset_data *podata)
1014 {
1015   unsigned int old_po = flags->print_offsets;
1016
1017   /* Temporarily disable print_offsets, because it would mess with
1018      indentation.  */
1019   flags->print_offsets = 0;
1020   c_print_type_1 (type, varstring, stream, show, level, language, flags,
1021                   podata);
1022   flags->print_offsets = old_po;
1023 }
1024
1025 /* Helper for 'c_type_print_base' that handles structs and unions.
1026    For a description of the arguments, see 'c_type_print_base'.  */
1027
1028 static void
1029 c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
1030                                 int show, int level,
1031                                 enum language language,
1032                                 const struct type_print_options *flags,
1033                                 struct print_offset_data *podata)
1034 {
1035   struct type_print_options local_flags = *flags;
1036   local_flags.local_typedefs = NULL;
1037
1038   std::unique_ptr<typedef_hash_table> hash_holder;
1039   if (!flags->raw)
1040     {
1041       if (flags->local_typedefs)
1042         local_flags.local_typedefs
1043           = new typedef_hash_table (*flags->local_typedefs);
1044       else
1045         local_flags.local_typedefs = new typedef_hash_table ();
1046
1047       hash_holder.reset (local_flags.local_typedefs);
1048     }
1049
1050   c_type_print_modifier (type, stream, 0, 1);
1051   if (TYPE_CODE (type) == TYPE_CODE_UNION)
1052     fprintf_filtered (stream, "union ");
1053   else if (TYPE_DECLARED_CLASS (type))
1054     fprintf_filtered (stream, "class ");
1055   else
1056     fprintf_filtered (stream, "struct ");
1057
1058   /* Print the tag if it exists.  The HP aCC compiler emits a
1059      spurious "{unnamed struct}"/"{unnamed union}"/"{unnamed
1060      enum}" tag for unnamed struct/union/enum's, which we don't
1061      want to print.  */
1062   if (TYPE_NAME (type) != NULL
1063       && !startswith (TYPE_NAME (type), "{unnamed"))
1064     {
1065       /* When printing the tag name, we are still effectively
1066          printing in the outer context, hence the use of FLAGS
1067          here.  */
1068       print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
1069       if (show > 0)
1070         fputs_filtered (" ", stream);
1071     }
1072
1073   if (show < 0)
1074     {
1075       /* If we just printed a tag name, no need to print anything
1076          else.  */
1077       if (TYPE_NAME (type) == NULL)
1078         fprintf_filtered (stream, "{...}");
1079     }
1080   else if (show > 0 || TYPE_NAME (type) == NULL)
1081     {
1082       struct type *basetype;
1083       int vptr_fieldno;
1084
1085       c_type_print_template_args (&local_flags, type, stream);
1086
1087       /* Add in template parameters when printing derivation info.  */
1088       if (local_flags.local_typedefs != NULL)
1089         local_flags.local_typedefs->add_template_parameters (type);
1090       cp_type_print_derivation_info (stream, type, &local_flags);
1091
1092       /* This holds just the global typedefs and the template
1093          parameters.  */
1094       struct type_print_options semi_local_flags = *flags;
1095       semi_local_flags.local_typedefs = NULL;
1096
1097       std::unique_ptr<typedef_hash_table> semi_holder;
1098       if (local_flags.local_typedefs != nullptr)
1099         {
1100           semi_local_flags.local_typedefs
1101             = new typedef_hash_table (*local_flags.local_typedefs);
1102           semi_holder.reset (semi_local_flags.local_typedefs);
1103
1104           /* Now add in the local typedefs.  */
1105           local_flags.local_typedefs->recursively_update (type);
1106         }
1107
1108       fprintf_filtered (stream, "{\n");
1109
1110       if (TYPE_NFIELDS (type) == 0 && TYPE_NFN_FIELDS (type) == 0
1111           && TYPE_TYPEDEF_FIELD_COUNT (type) == 0)
1112         {
1113           if (TYPE_STUB (type))
1114             fprintfi_filtered (level + 4, stream,
1115                                _("<incomplete type>\n"));
1116           else
1117             fprintfi_filtered (level + 4, stream,
1118                                _("<no data fields>\n"));
1119         }
1120
1121       /* Start off with no specific section type, so we can print
1122          one for the first field we find, and use that section type
1123          thereafter until we find another type.  */
1124
1125       enum access_specifier section_type = s_none;
1126
1127       /* For a class, if all members are private, there's no need
1128          for a "private:" label; similarly, for a struct or union
1129          masquerading as a class, if all members are public, there's
1130          no need for a "public:" label.  */
1131       bool need_access_label = need_access_label_p (type);
1132
1133       /* If there is a base class for this type,
1134          do not print the field that it occupies.  */
1135
1136       int len = TYPE_NFIELDS (type);
1137       vptr_fieldno = get_vptr_fieldno (type, &basetype);
1138
1139       struct print_offset_data local_podata;
1140
1141       for (int i = TYPE_N_BASECLASSES (type); i < len; i++)
1142         {
1143           QUIT;
1144
1145           /* If we have a virtual table pointer, omit it.  Even if
1146              virtual table pointers are not specifically marked in
1147              the debug info, they should be artificial.  */
1148           if ((i == vptr_fieldno && type == basetype)
1149               || TYPE_FIELD_ARTIFICIAL (type, i))
1150             continue;
1151
1152           if (need_access_label)
1153             {
1154               section_type = output_access_specifier
1155                 (stream, section_type, level,
1156                  TYPE_FIELD_PROTECTED (type, i),
1157                  TYPE_FIELD_PRIVATE (type, i), flags);
1158             }
1159
1160           bool is_static = field_is_static (&TYPE_FIELD (type, i));
1161
1162           if (flags->print_offsets)
1163             podata->update (type, i, stream);
1164
1165           print_spaces_filtered (level + 4, stream);
1166           if (is_static)
1167             fprintf_filtered (stream, "static ");
1168
1169           int newshow = show - 1;
1170
1171           if (!is_static && flags->print_offsets
1172               && (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_STRUCT
1173                   || TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_UNION))
1174             {
1175               /* If we're printing offsets and this field's type is
1176                  either a struct or an union, then we're interested in
1177                  expanding it.  */
1178               ++newshow;
1179
1180               /* Make sure we carry our offset when we expand the
1181                  struct/union.  */
1182               local_podata.offset_bitpos
1183                 = podata->offset_bitpos + TYPE_FIELD_BITPOS (type, i);
1184               /* We're entering a struct/union.  Right now,
1185                  PODATA->END_BITPOS points right *after* the
1186                  struct/union.  However, when printing the first field
1187                  of this inner struct/union, the end_bitpos we're
1188                  expecting is exactly at the beginning of the
1189                  struct/union.  Therefore, we subtract the length of
1190                  the whole struct/union.  */
1191               local_podata.end_bitpos
1192                 = podata->end_bitpos
1193                   - TYPE_LENGTH (TYPE_FIELD_TYPE (type, i)) * TARGET_CHAR_BIT;
1194             }
1195
1196           c_print_type_1 (TYPE_FIELD_TYPE (type, i),
1197                           TYPE_FIELD_NAME (type, i),
1198                           stream, newshow, level + 4,
1199                           language, &local_flags, &local_podata);
1200
1201           if (!is_static && TYPE_FIELD_PACKED (type, i))
1202             {
1203               /* It is a bitfield.  This code does not attempt
1204                  to look at the bitpos and reconstruct filler,
1205                  unnamed fields.  This would lead to misleading
1206                  results if the compiler does not put out fields
1207                  for such things (I don't know what it does).  */
1208               fprintf_filtered (stream, " : %d",
1209                                 TYPE_FIELD_BITSIZE (type, i));
1210             }
1211           fprintf_filtered (stream, ";\n");
1212         }
1213
1214       /* If there are both fields and methods, put a blank line
1215          between them.  Make sure to count only method that we
1216          will display; artificial methods will be hidden.  */
1217       len = TYPE_NFN_FIELDS (type);
1218       if (!flags->print_methods)
1219         len = 0;
1220       int real_len = 0;
1221       for (int i = 0; i < len; i++)
1222         {
1223           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1224           int len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
1225           int j;
1226
1227           for (j = 0; j < len2; j++)
1228             if (!TYPE_FN_FIELD_ARTIFICIAL (f, j))
1229               real_len++;
1230         }
1231       if (real_len > 0 && section_type != s_none)
1232         fprintf_filtered (stream, "\n");
1233
1234       /* C++: print out the methods.  */
1235       for (int i = 0; i < len; i++)
1236         {
1237           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1238           int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
1239           const char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
1240           const char *name = TYPE_NAME (type);
1241           int is_constructor = name && strcmp (method_name,
1242                                                name) == 0;
1243
1244           for (j = 0; j < len2; j++)
1245             {
1246               const char *mangled_name;
1247               gdb::unique_xmalloc_ptr<char> mangled_name_holder;
1248               char *demangled_name;
1249               const char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
1250               int is_full_physname_constructor =
1251                 TYPE_FN_FIELD_CONSTRUCTOR (f, j)
1252                 || is_constructor_name (physname)
1253                 || is_destructor_name (physname)
1254                 || method_name[0] == '~';
1255
1256               /* Do not print out artificial methods.  */
1257               if (TYPE_FN_FIELD_ARTIFICIAL (f, j))
1258                 continue;
1259
1260               QUIT;
1261               section_type = output_access_specifier
1262                 (stream, section_type, level,
1263                  TYPE_FN_FIELD_PROTECTED (f, j),
1264                  TYPE_FN_FIELD_PRIVATE (f, j), flags);
1265
1266               print_spaces_filtered_with_print_options (level + 4, stream,
1267                                                         flags);
1268               if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1269                 fprintf_filtered (stream, "virtual ");
1270               else if (TYPE_FN_FIELD_STATIC_P (f, j))
1271                 fprintf_filtered (stream, "static ");
1272               if (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)) == 0)
1273                 {
1274                   /* Keep GDB from crashing here.  */
1275                   fprintf_filtered (stream,
1276                                     _("<undefined type> %s;\n"),
1277                                     TYPE_FN_FIELD_PHYSNAME (f, j));
1278                   break;
1279                 }
1280               else if (!is_constructor  /* Constructors don't
1281                                            have declared
1282                                            types.  */
1283                        && !is_full_physname_constructor  /* " " */
1284                        && !is_type_conversion_operator (type, i, j))
1285                 {
1286                   c_print_type_no_offsets
1287                     (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)),
1288                      "", stream, -1, 0, language, &local_flags, podata);
1289
1290                   fputs_filtered (" ", stream);
1291                 }
1292               if (TYPE_FN_FIELD_STUB (f, j))
1293                 {
1294                   /* Build something we can demangle.  */
1295                   mangled_name_holder.reset (gdb_mangle_name (type, i, j));
1296                   mangled_name = mangled_name_holder.get ();
1297                 }
1298               else
1299                 mangled_name = TYPE_FN_FIELD_PHYSNAME (f, j);
1300
1301               demangled_name =
1302                 gdb_demangle (mangled_name,
1303                               DMGL_ANSI | DMGL_PARAMS);
1304               if (demangled_name == NULL)
1305                 {
1306                   /* In some cases (for instance with the HP
1307                      demangling), if a function has more than 10
1308                      arguments, the demangling will fail.
1309                      Let's try to reconstruct the function
1310                      signature from the symbol information.  */
1311                   if (!TYPE_FN_FIELD_STUB (f, j))
1312                     {
1313                       int staticp = TYPE_FN_FIELD_STATIC_P (f, j);
1314                       struct type *mtype = TYPE_FN_FIELD_TYPE (f, j);
1315
1316                       cp_type_print_method_args (mtype,
1317                                                  "",
1318                                                  method_name,
1319                                                  staticp,
1320                                                  stream, language,
1321                                                  &local_flags);
1322                     }
1323                   else
1324                     fprintf_filtered (stream,
1325                                       _("<badly mangled name '%s'>"),
1326                                       mangled_name);
1327                 }
1328               else
1329                 {
1330                   char *p;
1331                   char *demangled_no_class
1332                     = remove_qualifiers (demangled_name);
1333
1334                   /* Get rid of the `static' appended by the
1335                      demangler.  */
1336                   p = strstr (demangled_no_class, " static");
1337                   if (p != NULL)
1338                     {
1339                       int length = p - demangled_no_class;
1340                       char *demangled_no_static;
1341
1342                       demangled_no_static
1343                         = (char *) xmalloc (length + 1);
1344                       strncpy (demangled_no_static,
1345                                demangled_no_class, length);
1346                       *(demangled_no_static + length) = '\0';
1347                       fputs_filtered (demangled_no_static, stream);
1348                       xfree (demangled_no_static);
1349                     }
1350                   else
1351                     fputs_filtered (demangled_no_class, stream);
1352                   xfree (demangled_name);
1353                 }
1354
1355               fprintf_filtered (stream, ";\n");
1356             }
1357         }
1358
1359       /* Print out nested types.  */
1360       if (TYPE_NESTED_TYPES_COUNT (type) != 0
1361           && semi_local_flags.print_nested_type_limit != 0)
1362         {
1363           if (semi_local_flags.print_nested_type_limit > 0)
1364             --semi_local_flags.print_nested_type_limit;
1365
1366           if (TYPE_NFIELDS (type) != 0 || TYPE_NFN_FIELDS (type) != 0)
1367             fprintf_filtered (stream, "\n");
1368
1369           for (int i = 0; i < TYPE_NESTED_TYPES_COUNT (type); ++i)
1370             {
1371               print_spaces_filtered_with_print_options (level + 4, stream,
1372                                                         flags);
1373               c_print_type_no_offsets (TYPE_NESTED_TYPES_FIELD_TYPE (type, i),
1374                                        "", stream, show, level + 4,
1375                                        language, &semi_local_flags, podata);
1376               fprintf_filtered (stream, ";\n");
1377             }
1378         }
1379
1380       /* Print typedefs defined in this class.  */
1381
1382       if (TYPE_TYPEDEF_FIELD_COUNT (type) != 0 && flags->print_typedefs)
1383         {
1384           if (TYPE_NFIELDS (type) != 0 || TYPE_NFN_FIELDS (type) != 0
1385               || TYPE_NESTED_TYPES_COUNT (type) != 0)
1386             fprintf_filtered (stream, "\n");
1387
1388           for (int i = 0; i < TYPE_TYPEDEF_FIELD_COUNT (type); i++)
1389             {
1390               struct type *target = TYPE_TYPEDEF_FIELD_TYPE (type, i);
1391
1392               /* Dereference the typedef declaration itself.  */
1393               gdb_assert (TYPE_CODE (target) == TYPE_CODE_TYPEDEF);
1394               target = TYPE_TARGET_TYPE (target);
1395
1396               if (need_access_label)
1397                 {
1398                   section_type = output_access_specifier
1399                     (stream, section_type, level,
1400                      TYPE_TYPEDEF_FIELD_PROTECTED (type, i),
1401                      TYPE_TYPEDEF_FIELD_PRIVATE (type, i), flags);
1402                 }
1403               print_spaces_filtered_with_print_options (level + 4, stream,
1404                                                         flags);
1405               fprintf_filtered (stream, "typedef ");
1406
1407               /* We want to print typedefs with substitutions
1408                  from the template parameters or globally-known
1409                  typedefs but not local typedefs.  */
1410               c_print_type_no_offsets (target,
1411                                        TYPE_TYPEDEF_FIELD_NAME (type, i),
1412                                        stream, show - 1, level + 4,
1413                                        language, &semi_local_flags, podata);
1414               fprintf_filtered (stream, ";\n");
1415             }
1416         }
1417
1418       if (flags->print_offsets)
1419         {
1420           if (show > 0)
1421             podata->finish (type, level, stream);
1422
1423           print_spaces_filtered (print_offset_data::indentation, stream);
1424           if (level == 0)
1425             print_spaces_filtered (2, stream);
1426         }
1427
1428       fprintfi_filtered (level, stream, "}");
1429     }
1430 }
1431
1432 /* Print the name of the type (or the ultimate pointer target,
1433    function value or array element), or the description of a structure
1434    or union.
1435
1436    SHOW positive means print details about the type (e.g. enum
1437    values), and print structure elements passing SHOW - 1 for show.
1438
1439    SHOW negative means just print the type name or struct tag if there
1440    is one.  If there is no name, print something sensible but concise
1441    like "struct {...}".
1442
1443    SHOW zero means just print the type name or struct tag if there is
1444    one.  If there is no name, print something sensible but not as
1445    concise like "struct {int x; int y;}".
1446
1447    LEVEL is the number of spaces to indent by.
1448    We increase it for some recursive calls.  */
1449
1450 static void
1451 c_type_print_base_1 (struct type *type, struct ui_file *stream,
1452                      int show, int level,
1453                      enum language language,
1454                      const struct type_print_options *flags,
1455                      struct print_offset_data *podata)
1456 {
1457   int i;
1458   int len;
1459
1460   QUIT;
1461
1462   if (type == NULL)
1463     {
1464       fputs_filtered (_("<type unknown>"), stream);
1465       return;
1466     }
1467
1468   /* When SHOW is zero or less, and there is a valid type name, then
1469      always just print the type name directly from the type.  */
1470
1471   if (show <= 0
1472       && TYPE_NAME (type) != NULL)
1473     {
1474       c_type_print_modifier (type, stream, 0, 1);
1475
1476       /* If we have "typedef struct foo {. . .} bar;" do we want to
1477          print it as "struct foo" or as "bar"?  Pick the latter for
1478          C++, because C++ folk tend to expect things like "class5
1479          *foo" rather than "struct class5 *foo".  We rather
1480          arbitrarily choose to make language_minimal work in a C-like
1481          way. */
1482       if (language == language_c || language == language_minimal)
1483         {
1484           if (TYPE_CODE (type) == TYPE_CODE_UNION)
1485             fprintf_filtered (stream, "union ");
1486           else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1487             {
1488               if (TYPE_DECLARED_CLASS (type))
1489                 fprintf_filtered (stream, "class ");
1490               else
1491                 fprintf_filtered (stream, "struct ");
1492             }
1493           else if (TYPE_CODE (type) == TYPE_CODE_ENUM)
1494             fprintf_filtered (stream, "enum ");
1495         }
1496
1497       print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
1498       return;
1499     }
1500
1501   type = check_typedef (type);
1502
1503   switch (TYPE_CODE (type))
1504     {
1505     case TYPE_CODE_TYPEDEF:
1506       /* If we get here, the typedef doesn't have a name, and we
1507          couldn't resolve TYPE_TARGET_TYPE.  Not much we can do.  */
1508       gdb_assert (TYPE_NAME (type) == NULL);
1509       gdb_assert (TYPE_TARGET_TYPE (type) == NULL);
1510       fprintf_filtered (stream, _("<unnamed typedef>"));
1511       break;
1512
1513     case TYPE_CODE_FUNC:
1514     case TYPE_CODE_METHOD:
1515       if (TYPE_TARGET_TYPE (type) == NULL)
1516         type_print_unknown_return_type (stream);
1517       else
1518         c_type_print_base_1 (TYPE_TARGET_TYPE (type),
1519                              stream, show, level, language, flags, podata);
1520       break;
1521     case TYPE_CODE_ARRAY:
1522     case TYPE_CODE_PTR:
1523     case TYPE_CODE_MEMBERPTR:
1524     case TYPE_CODE_REF:
1525     case TYPE_CODE_RVALUE_REF:
1526     case TYPE_CODE_METHODPTR:
1527       c_type_print_base_1 (TYPE_TARGET_TYPE (type),
1528                            stream, show, level, language, flags, podata);
1529       break;
1530
1531     case TYPE_CODE_STRUCT:
1532     case TYPE_CODE_UNION:
1533       c_type_print_base_struct_union (type, stream, show, level,
1534                                       language, flags, podata);
1535       break;
1536
1537     case TYPE_CODE_ENUM:
1538       c_type_print_modifier (type, stream, 0, 1);
1539       fprintf_filtered (stream, "enum ");
1540       if (TYPE_DECLARED_CLASS (type))
1541         fprintf_filtered (stream, "class ");
1542       /* Print the tag name if it exists.
1543          The aCC compiler emits a spurious 
1544          "{unnamed struct}"/"{unnamed union}"/"{unnamed enum}"
1545          tag for unnamed struct/union/enum's, which we don't
1546          want to print.  */
1547       if (TYPE_NAME (type) != NULL
1548           && !startswith (TYPE_NAME (type), "{unnamed"))
1549         {
1550           print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
1551           if (show > 0)
1552             fputs_filtered (" ", stream);
1553         }
1554
1555       wrap_here ("    ");
1556       if (show < 0)
1557         {
1558           /* If we just printed a tag name, no need to print anything
1559              else.  */
1560           if (TYPE_NAME (type) == NULL)
1561             fprintf_filtered (stream, "{...}");
1562         }
1563       else if (show > 0 || TYPE_NAME (type) == NULL)
1564         {
1565           LONGEST lastval = 0;
1566
1567           /* We can't handle this case perfectly, as DWARF does not
1568              tell us whether or not the underlying type was specified
1569              in the source (and other debug formats don't provide this
1570              at all).  We choose to print the underlying type, if it
1571              has a name, when in C++ on the theory that it's better to
1572              print too much than too little; but conversely not to
1573              print something egregiously outside the current
1574              language's syntax.  */
1575           if (language == language_cplus && TYPE_TARGET_TYPE (type) != NULL)
1576             {
1577               struct type *underlying = check_typedef (TYPE_TARGET_TYPE (type));
1578
1579               if (TYPE_NAME (underlying) != NULL)
1580                 fprintf_filtered (stream, ": %s ", TYPE_NAME (underlying));
1581             }
1582
1583           fprintf_filtered (stream, "{");
1584           len = TYPE_NFIELDS (type);
1585           for (i = 0; i < len; i++)
1586             {
1587               QUIT;
1588               if (i)
1589                 fprintf_filtered (stream, ", ");
1590               wrap_here ("    ");
1591               fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
1592               if (lastval != TYPE_FIELD_ENUMVAL (type, i))
1593                 {
1594                   fprintf_filtered (stream, " = %s",
1595                                     plongest (TYPE_FIELD_ENUMVAL (type, i)));
1596                   lastval = TYPE_FIELD_ENUMVAL (type, i);
1597                 }
1598               lastval++;
1599             }
1600           fprintf_filtered (stream, "}");
1601         }
1602       break;
1603
1604     case TYPE_CODE_FLAGS:
1605       {
1606         struct type_print_options local_flags = *flags;
1607
1608         local_flags.local_typedefs = NULL;
1609
1610         c_type_print_modifier (type, stream, 0, 1);
1611         fprintf_filtered (stream, "flag ");
1612         print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
1613         if (show > 0)
1614           {
1615             fputs_filtered (" ", stream);
1616             fprintf_filtered (stream, "{\n");
1617             if (TYPE_NFIELDS (type) == 0)
1618               {
1619                 if (TYPE_STUB (type))
1620                   fprintfi_filtered (level + 4, stream,
1621                                      _("<incomplete type>\n"));
1622                 else
1623                   fprintfi_filtered (level + 4, stream,
1624                                      _("<no data fields>\n"));
1625               }
1626             len = TYPE_NFIELDS (type);
1627             for (i = 0; i < len; i++)
1628               {
1629                 QUIT;
1630                 print_spaces_filtered (level + 4, stream);
1631                 /* We pass "show" here and not "show - 1" to get enum types
1632                    printed.  There's no other way to see them.  */
1633                 c_print_type_1 (TYPE_FIELD_TYPE (type, i),
1634                                 TYPE_FIELD_NAME (type, i),
1635                                 stream, show, level + 4,
1636                                 language, &local_flags, podata);
1637                 fprintf_filtered (stream, " @%s",
1638                                   plongest (TYPE_FIELD_BITPOS (type, i)));
1639                 if (TYPE_FIELD_BITSIZE (type, i) > 1)
1640                   {
1641                     fprintf_filtered (stream, "-%s",
1642                                       plongest (TYPE_FIELD_BITPOS (type, i)
1643                                                 + TYPE_FIELD_BITSIZE (type, i)
1644                                                 - 1));
1645                   }
1646                 fprintf_filtered (stream, ";\n");
1647               }
1648             fprintfi_filtered (level, stream, "}");
1649           }
1650       }
1651       break;
1652
1653     case TYPE_CODE_VOID:
1654       fprintf_filtered (stream, "void");
1655       break;
1656
1657     case TYPE_CODE_UNDEF:
1658       fprintf_filtered (stream, _("struct <unknown>"));
1659       break;
1660
1661     case TYPE_CODE_ERROR:
1662       fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
1663       break;
1664
1665     case TYPE_CODE_RANGE:
1666       /* This should not occur.  */
1667       fprintf_filtered (stream, _("<range type>"));
1668       break;
1669
1670     case TYPE_CODE_NAMESPACE:
1671       fputs_filtered ("namespace ", stream);
1672       fputs_filtered (TYPE_NAME (type), stream);
1673       break;
1674
1675     default:
1676       /* Handle types not explicitly handled by the other cases, such
1677          as fundamental types.  For these, just print whatever the
1678          type name is, as recorded in the type itself.  If there is no
1679          type name, then complain.  */
1680       if (TYPE_NAME (type) != NULL)
1681         {
1682           c_type_print_modifier (type, stream, 0, 1);
1683           print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
1684         }
1685       else
1686         {
1687           /* At least for dump_symtab, it is important that this not
1688              be an error ().  */
1689           fprintf_filtered (stream, _("<invalid type code %d>"),
1690                             TYPE_CODE (type));
1691         }
1692       break;
1693     }
1694 }
1695
1696 /* See c_type_print_base_1.  */
1697
1698 void
1699 c_type_print_base (struct type *type, struct ui_file *stream,
1700                    int show, int level,
1701                    const struct type_print_options *flags)
1702 {
1703   struct print_offset_data podata;
1704
1705   c_type_print_base_1 (type, stream, show, level,
1706                        current_language->la_language, flags, &podata);
1707 }