1 /* Helper routines for C++ support in GDB.
2 Copyright (C) 2002-2017 Free Software Foundation, Inc.
4 Contributed by MontaVista Software.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 #include "cp-support.h"
25 #include "dictionary.h"
30 #include "complaints.h"
32 #include "expression.h"
35 #include "namespace.h"
37 #include "gdb_setjmp.h"
38 #include "safe-ctype.h"
40 #define d_left(dc) (dc)->u.s_binary.left
41 #define d_right(dc) (dc)->u.s_binary.right
43 /* Functions related to demangled name parsing. */
45 static unsigned int cp_find_first_component_aux (const char *name,
48 static void demangled_name_complaint (const char *name);
50 /* Functions/variables related to overload resolution. */
52 static int sym_return_val_size = -1;
53 static int sym_return_val_index;
54 static struct symbol **sym_return_val;
56 static void overload_list_add_symbol (struct symbol *sym,
57 const char *oload_name);
59 static void make_symbol_overload_list_using (const char *func_name,
60 const char *the_namespace);
62 static void make_symbol_overload_list_qualified (const char *func_name);
64 /* The list of "maint cplus" commands. */
66 struct cmd_list_element *maint_cplus_cmd_list = NULL;
68 /* The actual commands. */
70 static void maint_cplus_command (char *arg, int from_tty);
71 static void first_component_command (char *arg, int from_tty);
73 /* A list of typedefs which should not be substituted by replace_typedefs. */
74 static const char * const ignore_typedefs[] =
76 "std::istream", "std::iostream", "std::ostream", "std::string"
80 replace_typedefs (struct demangle_parse_info *info,
81 struct demangle_component *ret_comp,
82 canonicalization_ftype *finder,
85 /* A convenience function to copy STRING into OBSTACK, returning a pointer
86 to the newly allocated string and saving the number of bytes saved in LEN.
88 It does not copy the terminating '\0' byte! */
91 copy_string_to_obstack (struct obstack *obstack, const char *string,
94 *len = strlen (string);
95 return (char *) obstack_copy (obstack, string, *len);
98 /* A cleanup wrapper for cp_demangled_name_parse_free. */
101 do_demangled_name_parse_free_cleanup (void *data)
103 struct demangle_parse_info *info = (struct demangle_parse_info *) data;
105 cp_demangled_name_parse_free (info);
108 /* Create a cleanup for C++ name parsing. */
111 make_cleanup_cp_demangled_name_parse_free (struct demangle_parse_info *info)
113 return make_cleanup (do_demangled_name_parse_free_cleanup, info);
116 /* Return 1 if STRING is clearly already in canonical form. This
117 function is conservative; things which it does not recognize are
118 assumed to be non-canonical, and the parser will sort them out
119 afterwards. This speeds up the critical path for alphanumeric
123 cp_already_canonical (const char *string)
125 /* Identifier start character [a-zA-Z_]. */
126 if (!ISIDST (string[0]))
129 /* These are the only two identifiers which canonicalize to other
130 than themselves or an error: unsigned -> unsigned int and
132 if (string[0] == 'u' && strcmp (&string[1], "nsigned") == 0)
134 else if (string[0] == 's' && strcmp (&string[1], "igned") == 0)
137 /* Identifier character [a-zA-Z0-9_]. */
138 while (ISIDNUM (string[1]))
141 if (string[1] == '\0')
147 /* Inspect the given RET_COMP for its type. If it is a typedef,
148 replace the node with the typedef's tree.
150 Returns 1 if any typedef substitutions were made, 0 otherwise. */
153 inspect_type (struct demangle_parse_info *info,
154 struct demangle_component *ret_comp,
155 canonicalization_ftype *finder,
162 /* Copy the symbol's name from RET_COMP and look it up
163 in the symbol table. */
164 name = (char *) alloca (ret_comp->u.s_name.len + 1);
165 memcpy (name, ret_comp->u.s_name.s, ret_comp->u.s_name.len);
166 name[ret_comp->u.s_name.len] = '\0';
168 /* Ignore any typedefs that should not be substituted. */
169 for (i = 0; i < ARRAY_SIZE (ignore_typedefs); ++i)
171 if (strcmp (name, ignore_typedefs[i]) == 0)
179 sym = lookup_symbol (name, 0, VAR_DOMAIN, 0).symbol;
181 CATCH (except, RETURN_MASK_ALL)
189 struct type *otype = SYMBOL_TYPE (sym);
193 const char *new_name = (*finder) (otype, data);
195 if (new_name != NULL)
197 ret_comp->u.s_name.s = new_name;
198 ret_comp->u.s_name.len = strlen (new_name);
205 /* If the type is a typedef or namespace alias, replace it. */
206 if (TYPE_CODE (otype) == TYPE_CODE_TYPEDEF
207 || TYPE_CODE (otype) == TYPE_CODE_NAMESPACE)
212 struct demangle_parse_info *i;
215 /* Get the real type of the typedef. */
216 type = check_typedef (otype);
218 /* If the symbol is a namespace and its type name is no different
219 than the name we looked up, this symbol is not a namespace
220 alias and does not need to be substituted. */
221 if (TYPE_CODE (otype) == TYPE_CODE_NAMESPACE
222 && strcmp (TYPE_NAME (type), name) == 0)
225 is_anon = (TYPE_TAG_NAME (type) == NULL
226 && (TYPE_CODE (type) == TYPE_CODE_ENUM
227 || TYPE_CODE (type) == TYPE_CODE_STRUCT
228 || TYPE_CODE (type) == TYPE_CODE_UNION));
231 struct type *last = otype;
233 /* Find the last typedef for the type. */
234 while (TYPE_TARGET_TYPE (last) != NULL
235 && (TYPE_CODE (TYPE_TARGET_TYPE (last))
236 == TYPE_CODE_TYPEDEF))
237 last = TYPE_TARGET_TYPE (last);
239 /* If there is only one typedef for this anonymous type,
240 do not substitute it. */
244 /* Use the last typedef seen as the type for this
249 buf = mem_fileopen ();
252 type_print (type, "", buf, -1);
255 /* If type_print threw an exception, there is little point
256 in continuing, so just bow out gracefully. */
257 CATCH (except, RETURN_MASK_ERROR)
259 ui_file_delete (buf);
264 name = ui_file_obsavestring (buf, &info->obstack, &len);
265 ui_file_delete (buf);
267 /* Turn the result into a new tree. Note that this
268 tree will contain pointers into NAME, so NAME cannot
269 be free'd until all typedef conversion is done and
270 the final result is converted into a string. */
271 i = cp_demangled_name_to_comp (name, NULL);
274 /* Merge the two trees. */
275 cp_merge_demangle_parse_infos (info, ret_comp, i);
277 /* Replace any newly introduced typedefs -- but not
278 if the type is anonymous (that would lead to infinite
281 replace_typedefs (info, ret_comp, finder, data);
285 /* This shouldn't happen unless the type printer has
286 output something that the name parser cannot grok.
287 Nonetheless, an ounce of prevention...
289 Canonicalize the name again, and store it in the
290 current node (RET_COMP). */
291 std::string canon = cp_canonicalize_string_no_typedefs (name);
295 /* Copy the canonicalization into the obstack. */
296 name = copy_string_to_obstack (&info->obstack, canon.c_str (), &len);
299 ret_comp->u.s_name.s = name;
300 ret_comp->u.s_name.len = len;
310 /* Replace any typedefs appearing in the qualified name
311 (DEMANGLE_COMPONENT_QUAL_NAME) represented in RET_COMP for the name parse
315 replace_typedefs_qualified_name (struct demangle_parse_info *info,
316 struct demangle_component *ret_comp,
317 canonicalization_ftype *finder,
322 struct ui_file *buf = mem_fileopen ();
323 struct demangle_component *comp = ret_comp;
325 /* Walk each node of the qualified name, reconstructing the name of
326 this element. With every node, check for any typedef substitutions.
327 If a substitution has occurred, replace the qualified name node
328 with a DEMANGLE_COMPONENT_NAME node representing the new, typedef-
330 while (comp->type == DEMANGLE_COMPONENT_QUAL_NAME)
332 if (d_left (comp)->type == DEMANGLE_COMPONENT_NAME)
334 struct demangle_component newobj;
336 ui_file_write (buf, d_left (comp)->u.s_name.s,
337 d_left (comp)->u.s_name.len);
338 name = ui_file_obsavestring (buf, &info->obstack, &len);
339 newobj.type = DEMANGLE_COMPONENT_NAME;
340 newobj.u.s_name.s = name;
341 newobj.u.s_name.len = len;
342 if (inspect_type (info, &newobj, finder, data))
347 /* A typedef was substituted in NEW. Convert it to a
348 string and replace the top DEMANGLE_COMPONENT_QUAL_NAME
351 ui_file_rewind (buf);
352 n = cp_comp_to_string (&newobj, 100);
355 /* If something went astray, abort typedef substitutions. */
356 ui_file_delete (buf);
360 s = copy_string_to_obstack (&info->obstack, n, &slen);
363 d_left (ret_comp)->type = DEMANGLE_COMPONENT_NAME;
364 d_left (ret_comp)->u.s_name.s = s;
365 d_left (ret_comp)->u.s_name.len = slen;
366 d_right (ret_comp) = d_right (comp);
373 /* The current node is not a name, so simply replace any
374 typedefs in it. Then print it to the stream to continue
375 checking for more typedefs in the tree. */
376 replace_typedefs (info, d_left (comp), finder, data);
377 name = cp_comp_to_string (d_left (comp), 100);
380 /* If something went astray, abort typedef substitutions. */
381 ui_file_delete (buf);
384 fputs_unfiltered (name, buf);
388 ui_file_write (buf, "::", 2);
389 comp = d_right (comp);
392 /* If the next component is DEMANGLE_COMPONENT_NAME, save the qualified
393 name assembled above and append the name given by COMP. Then use this
394 reassembled name to check for a typedef. */
396 if (comp->type == DEMANGLE_COMPONENT_NAME)
398 ui_file_write (buf, comp->u.s_name.s, comp->u.s_name.len);
399 name = ui_file_obsavestring (buf, &info->obstack, &len);
401 /* Replace the top (DEMANGLE_COMPONENT_QUAL_NAME) node
402 with a DEMANGLE_COMPONENT_NAME node containing the whole
404 ret_comp->type = DEMANGLE_COMPONENT_NAME;
405 ret_comp->u.s_name.s = name;
406 ret_comp->u.s_name.len = len;
407 inspect_type (info, ret_comp, finder, data);
410 replace_typedefs (info, comp, finder, data);
412 ui_file_delete (buf);
416 /* A function to check const and volatile qualifiers for argument types.
418 "Parameter declarations that differ only in the presence
419 or absence of `const' and/or `volatile' are equivalent."
420 C++ Standard N3290, clause 13.1.3 #4. */
423 check_cv_qualifiers (struct demangle_component *ret_comp)
425 while (d_left (ret_comp) != NULL
426 && (d_left (ret_comp)->type == DEMANGLE_COMPONENT_CONST
427 || d_left (ret_comp)->type == DEMANGLE_COMPONENT_VOLATILE))
429 d_left (ret_comp) = d_left (d_left (ret_comp));
433 /* Walk the parse tree given by RET_COMP, replacing any typedefs with
434 their basic types. */
437 replace_typedefs (struct demangle_parse_info *info,
438 struct demangle_component *ret_comp,
439 canonicalization_ftype *finder,
445 && (ret_comp->type == DEMANGLE_COMPONENT_NAME
446 || ret_comp->type == DEMANGLE_COMPONENT_QUAL_NAME
447 || ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE
448 || ret_comp->type == DEMANGLE_COMPONENT_BUILTIN_TYPE))
450 char *local_name = cp_comp_to_string (ret_comp, 10);
452 if (local_name != NULL)
454 struct symbol *sym = NULL;
459 sym = lookup_symbol (local_name, 0, VAR_DOMAIN, 0).symbol;
461 CATCH (except, RETURN_MASK_ALL)
470 struct type *otype = SYMBOL_TYPE (sym);
471 const char *new_name = (*finder) (otype, data);
473 if (new_name != NULL)
475 ret_comp->type = DEMANGLE_COMPONENT_NAME;
476 ret_comp->u.s_name.s = new_name;
477 ret_comp->u.s_name.len = strlen (new_name);
484 switch (ret_comp->type)
486 case DEMANGLE_COMPONENT_ARGLIST:
487 check_cv_qualifiers (ret_comp);
490 case DEMANGLE_COMPONENT_FUNCTION_TYPE:
491 case DEMANGLE_COMPONENT_TEMPLATE:
492 case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
493 case DEMANGLE_COMPONENT_TYPED_NAME:
494 replace_typedefs (info, d_left (ret_comp), finder, data);
495 replace_typedefs (info, d_right (ret_comp), finder, data);
498 case DEMANGLE_COMPONENT_NAME:
499 inspect_type (info, ret_comp, finder, data);
502 case DEMANGLE_COMPONENT_QUAL_NAME:
503 replace_typedefs_qualified_name (info, ret_comp, finder, data);
506 case DEMANGLE_COMPONENT_LOCAL_NAME:
507 case DEMANGLE_COMPONENT_CTOR:
508 case DEMANGLE_COMPONENT_ARRAY_TYPE:
509 case DEMANGLE_COMPONENT_PTRMEM_TYPE:
510 replace_typedefs (info, d_right (ret_comp), finder, data);
513 case DEMANGLE_COMPONENT_CONST:
514 case DEMANGLE_COMPONENT_RESTRICT:
515 case DEMANGLE_COMPONENT_VOLATILE:
516 case DEMANGLE_COMPONENT_VOLATILE_THIS:
517 case DEMANGLE_COMPONENT_CONST_THIS:
518 case DEMANGLE_COMPONENT_RESTRICT_THIS:
519 case DEMANGLE_COMPONENT_POINTER:
520 case DEMANGLE_COMPONENT_REFERENCE:
521 replace_typedefs (info, d_left (ret_comp), finder, data);
530 /* Parse STRING and convert it to canonical form, resolving any
531 typedefs. If parsing fails, or if STRING is already canonical,
532 return the empty string. Otherwise return the canonical form. If
533 FINDER is not NULL, then type components are passed to FINDER to be
534 looked up. DATA is passed verbatim to FINDER. */
537 cp_canonicalize_string_full (const char *string,
538 canonicalization_ftype *finder,
542 unsigned int estimated_len;
543 struct demangle_parse_info *info;
545 estimated_len = strlen (string) * 2;
546 info = cp_demangled_name_to_comp (string, NULL);
549 /* Replace all the typedefs in the tree. */
550 replace_typedefs (info, info->tree, finder, data);
552 /* Convert the tree back into a string. */
553 ret = cp_comp_to_string (info->tree, estimated_len);
554 gdb_assert (!ret.empty ());
556 /* Free the parse information. */
557 cp_demangled_name_parse_free (info);
559 /* Finally, compare the original string with the computed
560 name, returning NULL if they are the same. */
562 return std::string ();
568 /* Like cp_canonicalize_string_full, but always passes NULL for
572 cp_canonicalize_string_no_typedefs (const char *string)
574 return cp_canonicalize_string_full (string, NULL, NULL);
577 /* Parse STRING and convert it to canonical form. If parsing fails,
578 or if STRING is already canonical, return the empty string.
579 Otherwise return the canonical form. */
582 cp_canonicalize_string (const char *string)
584 struct demangle_parse_info *info;
585 unsigned int estimated_len;
587 if (cp_already_canonical (string))
588 return std::string ();
590 info = cp_demangled_name_to_comp (string, NULL);
592 return std::string ();
594 estimated_len = strlen (string) * 2;
595 std::string ret = cp_comp_to_string (info->tree, estimated_len);
596 cp_demangled_name_parse_free (info);
600 warning (_("internal error: string \"%s\" failed to be canonicalized"),
602 return std::string ();
606 return std::string ();
611 /* Convert a mangled name to a demangle_component tree. *MEMORY is
612 set to the block of used memory that should be freed when finished
613 with the tree. DEMANGLED_P is set to the char * that should be
614 freed when finished with the tree, or NULL if none was needed.
615 OPTIONS will be passed to the demangler. */
617 static struct demangle_parse_info *
618 mangled_name_to_comp (const char *mangled_name, int options,
619 void **memory, char **demangled_p)
621 char *demangled_name;
622 struct demangle_parse_info *info;
624 /* If it looks like a v3 mangled name, then try to go directly
626 if (mangled_name[0] == '_' && mangled_name[1] == 'Z')
628 struct demangle_component *ret;
630 ret = cplus_demangle_v3_components (mangled_name,
634 info = cp_new_demangle_parse_info ();
641 /* If it doesn't, or if that failed, then try to demangle the
643 demangled_name = gdb_demangle (mangled_name, options);
644 if (demangled_name == NULL)
647 /* If we could demangle the name, parse it to build the component
649 info = cp_demangled_name_to_comp (demangled_name, NULL);
653 xfree (demangled_name);
657 *demangled_p = demangled_name;
661 /* Return the name of the class containing method PHYSNAME. */
664 cp_class_name_from_physname (const char *physname)
666 void *storage = NULL;
667 char *demangled_name = NULL, *ret;
668 struct demangle_component *ret_comp, *prev_comp, *cur_comp;
669 struct demangle_parse_info *info;
672 info = mangled_name_to_comp (physname, DMGL_ANSI,
673 &storage, &demangled_name);
678 ret_comp = info->tree;
680 /* First strip off any qualifiers, if we have a function or
683 switch (ret_comp->type)
685 case DEMANGLE_COMPONENT_CONST:
686 case DEMANGLE_COMPONENT_RESTRICT:
687 case DEMANGLE_COMPONENT_VOLATILE:
688 case DEMANGLE_COMPONENT_CONST_THIS:
689 case DEMANGLE_COMPONENT_RESTRICT_THIS:
690 case DEMANGLE_COMPONENT_VOLATILE_THIS:
691 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
692 ret_comp = d_left (ret_comp);
699 /* If what we have now is a function, discard the argument list. */
700 if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
701 ret_comp = d_left (ret_comp);
703 /* If what we have now is a template, strip off the template
704 arguments. The left subtree may be a qualified name. */
705 if (ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE)
706 ret_comp = d_left (ret_comp);
708 /* What we have now should be a name, possibly qualified.
709 Additional qualifiers could live in the left subtree or the right
710 subtree. Find the last piece. */
715 switch (cur_comp->type)
717 case DEMANGLE_COMPONENT_QUAL_NAME:
718 case DEMANGLE_COMPONENT_LOCAL_NAME:
719 prev_comp = cur_comp;
720 cur_comp = d_right (cur_comp);
722 case DEMANGLE_COMPONENT_TEMPLATE:
723 case DEMANGLE_COMPONENT_NAME:
724 case DEMANGLE_COMPONENT_CTOR:
725 case DEMANGLE_COMPONENT_DTOR:
726 case DEMANGLE_COMPONENT_OPERATOR:
727 case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
737 if (cur_comp != NULL && prev_comp != NULL)
739 /* We want to discard the rightmost child of PREV_COMP. */
740 *prev_comp = *d_left (prev_comp);
741 /* The ten is completely arbitrary; we don't have a good
743 ret = cp_comp_to_string (ret_comp, 10);
747 xfree (demangled_name);
748 cp_demangled_name_parse_free (info);
752 /* Return the child of COMP which is the basename of a method,
753 variable, et cetera. All scope qualifiers are discarded, but
754 template arguments will be included. The component tree may be
757 static struct demangle_component *
758 unqualified_name_from_comp (struct demangle_component *comp)
760 struct demangle_component *ret_comp = comp, *last_template;
764 last_template = NULL;
766 switch (ret_comp->type)
768 case DEMANGLE_COMPONENT_QUAL_NAME:
769 case DEMANGLE_COMPONENT_LOCAL_NAME:
770 ret_comp = d_right (ret_comp);
772 case DEMANGLE_COMPONENT_TYPED_NAME:
773 ret_comp = d_left (ret_comp);
775 case DEMANGLE_COMPONENT_TEMPLATE:
776 gdb_assert (last_template == NULL);
777 last_template = ret_comp;
778 ret_comp = d_left (ret_comp);
780 case DEMANGLE_COMPONENT_CONST:
781 case DEMANGLE_COMPONENT_RESTRICT:
782 case DEMANGLE_COMPONENT_VOLATILE:
783 case DEMANGLE_COMPONENT_CONST_THIS:
784 case DEMANGLE_COMPONENT_RESTRICT_THIS:
785 case DEMANGLE_COMPONENT_VOLATILE_THIS:
786 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
787 ret_comp = d_left (ret_comp);
789 case DEMANGLE_COMPONENT_NAME:
790 case DEMANGLE_COMPONENT_CTOR:
791 case DEMANGLE_COMPONENT_DTOR:
792 case DEMANGLE_COMPONENT_OPERATOR:
793 case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
803 d_left (last_template) = ret_comp;
804 return last_template;
810 /* Return the name of the method whose linkage name is PHYSNAME. */
813 method_name_from_physname (const char *physname)
815 void *storage = NULL;
816 char *demangled_name = NULL, *ret;
817 struct demangle_component *ret_comp;
818 struct demangle_parse_info *info;
820 info = mangled_name_to_comp (physname, DMGL_ANSI,
821 &storage, &demangled_name);
825 ret_comp = unqualified_name_from_comp (info->tree);
828 if (ret_comp != NULL)
829 /* The ten is completely arbitrary; we don't have a good
831 ret = cp_comp_to_string (ret_comp, 10);
834 xfree (demangled_name);
835 cp_demangled_name_parse_free (info);
839 /* If FULL_NAME is the demangled name of a C++ function (including an
840 arg list, possibly including namespace/class qualifications),
841 return a new string containing only the function name (without the
842 arg list/class qualifications). Otherwise, return NULL. The
843 caller is responsible for freeing the memory in question. */
846 cp_func_name (const char *full_name)
849 struct demangle_component *ret_comp;
850 struct demangle_parse_info *info;
852 info = cp_demangled_name_to_comp (full_name, NULL);
856 ret_comp = unqualified_name_from_comp (info->tree);
859 if (ret_comp != NULL)
860 ret = cp_comp_to_string (ret_comp, 10);
862 cp_demangled_name_parse_free (info);
866 /* DEMANGLED_NAME is the name of a function, including parameters and
867 (optionally) a return type. Return the name of the function without
868 parameters or return type, or NULL if we can not parse the name. */
871 cp_remove_params (const char *demangled_name)
874 struct demangle_component *ret_comp;
875 struct demangle_parse_info *info;
878 if (demangled_name == NULL)
881 info = cp_demangled_name_to_comp (demangled_name, NULL);
885 /* First strip off any qualifiers, if we have a function or method. */
886 ret_comp = info->tree;
888 switch (ret_comp->type)
890 case DEMANGLE_COMPONENT_CONST:
891 case DEMANGLE_COMPONENT_RESTRICT:
892 case DEMANGLE_COMPONENT_VOLATILE:
893 case DEMANGLE_COMPONENT_CONST_THIS:
894 case DEMANGLE_COMPONENT_RESTRICT_THIS:
895 case DEMANGLE_COMPONENT_VOLATILE_THIS:
896 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
897 ret_comp = d_left (ret_comp);
904 /* What we have now should be a function. Return its name. */
905 if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
906 ret = cp_comp_to_string (d_left (ret_comp), 10);
908 cp_demangled_name_parse_free (info);
912 /* Here are some random pieces of trivia to keep in mind while trying
913 to take apart demangled names:
915 - Names can contain function arguments or templates, so the process
916 has to be, to some extent recursive: maybe keep track of your
917 depth based on encountering <> and ().
919 - Parentheses don't just have to happen at the end of a name: they
920 can occur even if the name in question isn't a function, because
921 a template argument might be a type that's a function.
923 - Conversely, even if you're trying to deal with a function, its
924 demangled name might not end with ')': it could be a const or
925 volatile class method, in which case it ends with "const" or
928 - Parentheses are also used in anonymous namespaces: a variable
929 'foo' in an anonymous namespace gets demangled as "(anonymous
932 - And operator names can contain parentheses or angle brackets. */
934 /* FIXME: carlton/2003-03-13: We have several functions here with
935 overlapping functionality; can we combine them? Also, do they
936 handle all the above considerations correctly? */
939 /* This returns the length of first component of NAME, which should be
940 the demangled name of a C++ variable/function/method/etc.
941 Specifically, it returns the index of the first colon forming the
942 boundary of the first component: so, given 'A::foo' or 'A::B::foo'
943 it returns the 1, and given 'foo', it returns 0. */
945 /* The character in NAME indexed by the return value is guaranteed to
946 always be either ':' or '\0'. */
948 /* NOTE: carlton/2003-03-13: This function is currently only intended
949 for internal use: it's probably not entirely safe when called on
950 user-generated input, because some of the 'index += 2' lines in
951 cp_find_first_component_aux might go past the end of malformed
955 cp_find_first_component (const char *name)
957 return cp_find_first_component_aux (name, 0);
960 /* Helper function for cp_find_first_component. Like that function,
961 it returns the length of the first component of NAME, but to make
962 the recursion easier, it also stops if it reaches an unexpected ')'
963 or '>' if the value of PERMISSIVE is nonzero. */
965 /* Let's optimize away calls to strlen("operator"). */
967 #define LENGTH_OF_OPERATOR 8
970 cp_find_first_component_aux (const char *name, int permissive)
972 unsigned int index = 0;
973 /* Operator names can show up in unexpected places. Since these can
974 contain parentheses or angle brackets, they can screw up the
975 recursion. But not every string 'operator' is part of an
976 operater name: e.g. you could have a variable 'cooperator'. So
977 this variable tells us whether or not we should treat the string
978 'operator' as starting an operator. */
979 int operator_possible = 1;
986 /* Template; eat it up. The calls to cp_first_component
987 should only return (I hope!) when they reach the '>'
988 terminating the component or a '::' between two
989 components. (Hence the '+ 2'.) */
991 for (index += cp_find_first_component_aux (name + index, 1);
993 index += cp_find_first_component_aux (name + index, 1))
995 if (name[index] != ':')
997 demangled_name_complaint (name);
998 return strlen (name);
1002 operator_possible = 1;
1005 /* Similar comment as to '<'. */
1007 for (index += cp_find_first_component_aux (name + index, 1);
1009 index += cp_find_first_component_aux (name + index, 1))
1011 if (name[index] != ':')
1013 demangled_name_complaint (name);
1014 return strlen (name);
1018 operator_possible = 1;
1026 demangled_name_complaint (name);
1027 return strlen (name);
1032 /* ':' marks a component iff the next character is also a ':'.
1033 Otherwise it is probably malformed input. */
1034 if (name[index + 1] == ':')
1038 /* Operator names can screw up the recursion. */
1039 if (operator_possible
1040 && strncmp (name + index, "operator",
1041 LENGTH_OF_OPERATOR) == 0)
1043 index += LENGTH_OF_OPERATOR;
1044 while (ISSPACE(name[index]))
1046 switch (name[index])
1048 /* Skip over one less than the appropriate number of
1049 characters: the for loop will skip over the last
1052 if (name[index + 1] == '<')
1059 if (name[index + 1] == '>')
1072 operator_possible = 0;
1079 /* NOTE: carlton/2003-04-18: I'm not sure what the precise
1080 set of relevant characters are here: it's necessary to
1081 include any character that can show up before 'operator'
1082 in a demangled name, and it's safe to include any
1083 character that can't be part of an identifier's name. */
1084 operator_possible = 1;
1087 operator_possible = 0;
1093 /* Complain about a demangled name that we don't know how to parse.
1094 NAME is the demangled name in question. */
1097 demangled_name_complaint (const char *name)
1099 complaint (&symfile_complaints,
1100 "unexpected demangled name '%s'", name);
1103 /* If NAME is the fully-qualified name of a C++
1104 function/variable/method/etc., this returns the length of its
1105 entire prefix: all of the namespaces and classes that make up its
1106 name. Given 'A::foo', it returns 1, given 'A::B::foo', it returns
1107 4, given 'foo', it returns 0. */
1110 cp_entire_prefix_len (const char *name)
1112 unsigned int current_len = cp_find_first_component (name);
1113 unsigned int previous_len = 0;
1115 while (name[current_len] != '\0')
1117 gdb_assert (name[current_len] == ':');
1118 previous_len = current_len;
1119 /* Skip the '::'. */
1121 current_len += cp_find_first_component (name + current_len);
1124 return previous_len;
1127 /* Overload resolution functions. */
1129 /* Test to see if SYM is a symbol that we haven't seen corresponding
1130 to a function named OLOAD_NAME. If so, add it to the current
1134 overload_list_add_symbol (struct symbol *sym,
1135 const char *oload_name)
1141 /* If there is no type information, we can't do anything, so
1143 if (SYMBOL_TYPE (sym) == NULL)
1146 /* skip any symbols that we've already considered. */
1147 for (i = 0; i < sym_return_val_index; ++i)
1148 if (strcmp (SYMBOL_LINKAGE_NAME (sym),
1149 SYMBOL_LINKAGE_NAME (sym_return_val[i])) == 0)
1152 /* Get the demangled name without parameters */
1153 sym_name = cp_remove_params (SYMBOL_NATURAL_NAME (sym));
1157 /* skip symbols that cannot match */
1158 if (strcmp (sym_name, oload_name) != 0)
1166 /* We have a match for an overload instance, so add SYM to the
1167 current list of overload instances */
1168 if (sym_return_val_index + 3 > sym_return_val_size)
1170 newsize = (sym_return_val_size *= 2) * sizeof (struct symbol *);
1171 sym_return_val = (struct symbol **)
1172 xrealloc ((char *) sym_return_val, newsize);
1174 sym_return_val[sym_return_val_index++] = sym;
1175 sym_return_val[sym_return_val_index] = NULL;
1178 /* Return a null-terminated list of pointers to function symbols that
1179 are named FUNC_NAME and are visible within NAMESPACE. */
1182 make_symbol_overload_list (const char *func_name,
1183 const char *the_namespace)
1185 struct cleanup *old_cleanups;
1188 sym_return_val_size = 100;
1189 sym_return_val_index = 0;
1190 sym_return_val = XNEWVEC (struct symbol *, sym_return_val_size + 1);
1191 sym_return_val[0] = NULL;
1193 old_cleanups = make_cleanup (xfree, sym_return_val);
1195 make_symbol_overload_list_using (func_name, the_namespace);
1197 if (the_namespace[0] == '\0')
1201 char *concatenated_name
1202 = (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1203 strcpy (concatenated_name, the_namespace);
1204 strcat (concatenated_name, "::");
1205 strcat (concatenated_name, func_name);
1206 name = concatenated_name;
1209 make_symbol_overload_list_qualified (name);
1211 discard_cleanups (old_cleanups);
1213 return sym_return_val;
1216 /* Add all symbols with a name matching NAME in BLOCK to the overload
1220 make_symbol_overload_list_block (const char *name,
1221 const struct block *block)
1223 struct block_iterator iter;
1226 ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
1227 overload_list_add_symbol (sym, name);
1230 /* Adds the function FUNC_NAME from NAMESPACE to the overload set. */
1233 make_symbol_overload_list_namespace (const char *func_name,
1234 const char *the_namespace)
1237 const struct block *block = NULL;
1239 if (the_namespace[0] == '\0')
1243 char *concatenated_name
1244 = (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1246 strcpy (concatenated_name, the_namespace);
1247 strcat (concatenated_name, "::");
1248 strcat (concatenated_name, func_name);
1249 name = concatenated_name;
1252 /* Look in the static block. */
1253 block = block_static_block (get_selected_block (0));
1255 make_symbol_overload_list_block (name, block);
1257 /* Look in the global block. */
1258 block = block_global_block (block);
1260 make_symbol_overload_list_block (name, block);
1264 /* Search the namespace of the given type and namespace of and public
1268 make_symbol_overload_list_adl_namespace (struct type *type,
1269 const char *func_name)
1271 char *the_namespace;
1272 const char *type_name;
1275 while (TYPE_CODE (type) == TYPE_CODE_PTR
1276 || TYPE_CODE (type) == TYPE_CODE_REF
1277 || TYPE_CODE (type) == TYPE_CODE_ARRAY
1278 || TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1280 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1281 type = check_typedef(type);
1283 type = TYPE_TARGET_TYPE (type);
1286 type_name = TYPE_NAME (type);
1288 if (type_name == NULL)
1291 prefix_len = cp_entire_prefix_len (type_name);
1293 if (prefix_len != 0)
1295 the_namespace = (char *) alloca (prefix_len + 1);
1296 strncpy (the_namespace, type_name, prefix_len);
1297 the_namespace[prefix_len] = '\0';
1299 make_symbol_overload_list_namespace (func_name, the_namespace);
1302 /* Check public base type */
1303 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1304 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1306 if (BASETYPE_VIA_PUBLIC (type, i))
1307 make_symbol_overload_list_adl_namespace (TYPE_BASECLASS (type,
1313 /* Adds the overload list overload candidates for FUNC_NAME found
1314 through argument dependent lookup. */
1317 make_symbol_overload_list_adl (struct type **arg_types, int nargs,
1318 const char *func_name)
1322 gdb_assert (sym_return_val_size != -1);
1324 for (i = 1; i <= nargs; i++)
1325 make_symbol_overload_list_adl_namespace (arg_types[i - 1],
1328 return sym_return_val;
1331 /* Used for cleanups to reset the "searched" flag in case of an
1335 reset_directive_searched (void *data)
1337 struct using_direct *direct = (struct using_direct *) data;
1338 direct->searched = 0;
1341 /* This applies the using directives to add namespaces to search in,
1342 and then searches for overloads in all of those namespaces. It
1343 adds the symbols found to sym_return_val. Arguments are as in
1344 make_symbol_overload_list. */
1347 make_symbol_overload_list_using (const char *func_name,
1348 const char *the_namespace)
1350 struct using_direct *current;
1351 const struct block *block;
1353 /* First, go through the using directives. If any of them apply,
1354 look in the appropriate namespaces for new functions to match
1357 for (block = get_selected_block (0);
1359 block = BLOCK_SUPERBLOCK (block))
1360 for (current = block_using (block);
1362 current = current->next)
1364 /* Prevent recursive calls. */
1365 if (current->searched)
1368 /* If this is a namespace alias or imported declaration ignore
1370 if (current->alias != NULL || current->declaration != NULL)
1373 if (strcmp (the_namespace, current->import_dest) == 0)
1375 /* Mark this import as searched so that the recursive call
1376 does not search it again. */
1377 struct cleanup *old_chain;
1378 current->searched = 1;
1379 old_chain = make_cleanup (reset_directive_searched,
1382 make_symbol_overload_list_using (func_name,
1383 current->import_src);
1385 current->searched = 0;
1386 discard_cleanups (old_chain);
1390 /* Now, add names for this namespace. */
1391 make_symbol_overload_list_namespace (func_name, the_namespace);
1394 /* This does the bulk of the work of finding overloaded symbols.
1395 FUNC_NAME is the name of the overloaded function we're looking for
1396 (possibly including namespace info). */
1399 make_symbol_overload_list_qualified (const char *func_name)
1401 struct compunit_symtab *cust;
1402 struct objfile *objfile;
1403 const struct block *b, *surrounding_static_block = 0;
1405 /* Look through the partial symtabs for all symbols which begin by
1406 matching FUNC_NAME. Make sure we read that symbol table in. */
1408 ALL_OBJFILES (objfile)
1411 objfile->sf->qf->expand_symtabs_for_function (objfile, func_name);
1414 /* Search upwards from currently selected frame (so that we can
1415 complete on local vars. */
1417 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
1418 make_symbol_overload_list_block (func_name, b);
1420 surrounding_static_block = block_static_block (get_selected_block (0));
1422 /* Go through the symtabs and check the externs and statics for
1423 symbols which match. */
1425 ALL_COMPUNITS (objfile, cust)
1428 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), GLOBAL_BLOCK);
1429 make_symbol_overload_list_block (func_name, b);
1432 ALL_COMPUNITS (objfile, cust)
1435 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), STATIC_BLOCK);
1436 /* Don't do this block twice. */
1437 if (b == surrounding_static_block)
1439 make_symbol_overload_list_block (func_name, b);
1443 /* Lookup the rtti type for a class name. */
1446 cp_lookup_rtti_type (const char *name, struct block *block)
1448 struct symbol * rtti_sym;
1449 struct type * rtti_type;
1451 /* Use VAR_DOMAIN here as NAME may be a typedef. PR 18141, 18417.
1452 Classes "live" in both STRUCT_DOMAIN and VAR_DOMAIN. */
1453 rtti_sym = lookup_symbol (name, block, VAR_DOMAIN, NULL).symbol;
1455 if (rtti_sym == NULL)
1457 warning (_("RTTI symbol not found for class '%s'"), name);
1461 if (SYMBOL_CLASS (rtti_sym) != LOC_TYPEDEF)
1463 warning (_("RTTI symbol for class '%s' is not a type"), name);
1467 rtti_type = check_typedef (SYMBOL_TYPE (rtti_sym));
1469 switch (TYPE_CODE (rtti_type))
1471 case TYPE_CODE_STRUCT:
1473 case TYPE_CODE_NAMESPACE:
1474 /* chastain/2003-11-26: the symbol tables often contain fake
1475 symbols for namespaces with the same name as the struct.
1476 This warning is an indication of a bug in the lookup order
1477 or a bug in the way that the symbol tables are populated. */
1478 warning (_("RTTI symbol for class '%s' is a namespace"), name);
1481 warning (_("RTTI symbol for class '%s' has bad type"), name);
1488 #ifdef HAVE_WORKING_FORK
1490 /* If nonzero, attempt to catch crashes in the demangler and print
1491 useful debugging information. */
1493 static int catch_demangler_crashes = 1;
1495 /* Stack context and environment for demangler crash recovery. */
1497 static SIGJMP_BUF gdb_demangle_jmp_buf;
1499 /* If nonzero, attempt to dump core from the signal handler. */
1501 static int gdb_demangle_attempt_core_dump = 1;
1503 /* Signal handler for gdb_demangle. */
1506 gdb_demangle_signal_handler (int signo)
1508 if (gdb_demangle_attempt_core_dump)
1513 gdb_demangle_attempt_core_dump = 0;
1516 SIGLONGJMP (gdb_demangle_jmp_buf, signo);
1521 /* A wrapper for bfd_demangle. */
1524 gdb_demangle (const char *name, int options)
1526 char *result = NULL;
1527 int crash_signal = 0;
1529 #ifdef HAVE_WORKING_FORK
1530 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
1531 struct sigaction sa, old_sa;
1535 static int core_dump_allowed = -1;
1537 if (core_dump_allowed == -1)
1539 core_dump_allowed = can_dump_core (LIMIT_CUR);
1541 if (!core_dump_allowed)
1542 gdb_demangle_attempt_core_dump = 0;
1545 if (catch_demangler_crashes)
1547 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
1548 sa.sa_handler = gdb_demangle_signal_handler;
1549 sigemptyset (&sa.sa_mask);
1550 #ifdef HAVE_SIGALTSTACK
1551 sa.sa_flags = SA_ONSTACK;
1555 sigaction (SIGSEGV, &sa, &old_sa);
1557 ofunc = signal (SIGSEGV, gdb_demangle_signal_handler);
1560 crash_signal = SIGSETJMP (gdb_demangle_jmp_buf);
1564 if (crash_signal == 0)
1565 result = bfd_demangle (NULL, name, options);
1567 #ifdef HAVE_WORKING_FORK
1568 if (catch_demangler_crashes)
1570 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
1571 sigaction (SIGSEGV, &old_sa, NULL);
1573 signal (SIGSEGV, ofunc);
1576 if (crash_signal != 0)
1578 static int error_reported = 0;
1580 if (!error_reported)
1582 char *short_msg, *long_msg;
1583 struct cleanup *back_to;
1585 short_msg = xstrprintf (_("unable to demangle '%s' "
1586 "(demangler failed with signal %d)"),
1587 name, crash_signal);
1588 back_to = make_cleanup (xfree, short_msg);
1590 long_msg = xstrprintf ("%s:%d: %s: %s", __FILE__, __LINE__,
1591 "demangler-warning", short_msg);
1592 make_cleanup (xfree, long_msg);
1594 make_cleanup_restore_target_terminal ();
1595 target_terminal_ours_for_output ();
1598 if (core_dump_allowed)
1599 fprintf_unfiltered (gdb_stderr,
1600 _("%s\nAttempting to dump core.\n"),
1603 warn_cant_dump_core (long_msg);
1605 demangler_warning (__FILE__, __LINE__, "%s", short_msg);
1607 do_cleanups (back_to);
1620 /* See cp-support.h. */
1623 gdb_sniff_from_mangled_name (const char *mangled, char **demangled)
1625 *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
1626 return *demangled != NULL;
1629 /* Don't allow just "maintenance cplus". */
1632 maint_cplus_command (char *arg, int from_tty)
1634 printf_unfiltered (_("\"maintenance cplus\" must be followed "
1635 "by the name of a command.\n"));
1636 help_list (maint_cplus_cmd_list,
1637 "maintenance cplus ",
1638 all_commands, gdb_stdout);
1641 /* This is a front end for cp_find_first_component, for unit testing.
1642 Be careful when using it: see the NOTE above
1643 cp_find_first_component. */
1646 first_component_command (char *arg, int from_tty)
1654 len = cp_find_first_component (arg);
1655 prefix = (char *) alloca (len + 1);
1657 memcpy (prefix, arg, len);
1660 printf_unfiltered ("%s\n", prefix);
1663 extern initialize_file_ftype _initialize_cp_support; /* -Wmissing-prototypes */
1666 /* Implement "info vtbl". */
1669 info_vtbl_command (char *arg, int from_tty)
1671 struct value *value;
1673 value = parse_and_eval (arg);
1674 cplus_print_vtable (value);
1678 _initialize_cp_support (void)
1680 add_prefix_cmd ("cplus", class_maintenance,
1681 maint_cplus_command,
1682 _("C++ maintenance commands."),
1683 &maint_cplus_cmd_list,
1684 "maintenance cplus ",
1685 0, &maintenancelist);
1686 add_alias_cmd ("cp", "cplus",
1687 class_maintenance, 1,
1690 add_cmd ("first_component",
1692 first_component_command,
1693 _("Print the first class/namespace component of NAME."),
1694 &maint_cplus_cmd_list);
1696 add_info ("vtbl", info_vtbl_command,
1697 _("Show the virtual function table for a C++ object.\n\
1698 Usage: info vtbl EXPRESSION\n\
1699 Evaluate EXPRESSION and display the virtual function table for the\n\
1700 resulting object."));
1702 #ifdef HAVE_WORKING_FORK
1703 add_setshow_boolean_cmd ("catch-demangler-crashes", class_maintenance,
1704 &catch_demangler_crashes, _("\
1705 Set whether to attempt to catch demangler crashes."), _("\
1706 Show whether to attempt to catch demangler crashes."), _("\
1707 If enabled GDB will attempt to catch demangler crashes and\n\
1708 display the offending symbol."),
1711 &maintenance_set_cmdlist,
1712 &maintenance_show_cmdlist);