xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/cp-support.c (revision 3117ece4fc4a4ca4489ba793710b60b0d26bab6c)
1 /* Helper routines for C++ support in GDB.
2    Copyright (C) 2002-2023 Free Software Foundation, Inc.
3 
4    Contributed by MontaVista Software.
5 
6    This file is part of GDB.
7 
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.
12 
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.
17 
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/>.  */
20 
21 #include "defs.h"
22 #include "cp-support.h"
23 #include "demangle.h"
24 #include "gdbcmd.h"
25 #include "dictionary.h"
26 #include "objfiles.h"
27 #include "frame.h"
28 #include "symtab.h"
29 #include "block.h"
30 #include "complaints.h"
31 #include "gdbtypes.h"
32 #include "expression.h"
33 #include "value.h"
34 #include "cp-abi.h"
35 #include "namespace.h"
36 #include <signal.h>
37 #include "gdbsupport/gdb_setjmp.h"
38 #include "safe-ctype.h"
39 #include "gdbsupport/selftest.h"
40 #include "gdbsupport/gdb-sigmask.h"
41 #include <atomic>
42 #include "event-top.h"
43 #include "run-on-main-thread.h"
44 #include "typeprint.h"
45 
46 #define d_left(dc) (dc)->u.s_binary.left
47 #define d_right(dc) (dc)->u.s_binary.right
48 
49 /* Functions related to demangled name parsing.  */
50 
51 static unsigned int cp_find_first_component_aux (const char *name,
52 						 int permissive);
53 
54 static void demangled_name_complaint (const char *name);
55 
56 /* Functions related to overload resolution.  */
57 
58 static void overload_list_add_symbol (struct symbol *sym,
59 				      const char *oload_name,
60 				      std::vector<symbol *> *overload_list);
61 
62 static void add_symbol_overload_list_using
63   (const char *func_name, const char *the_namespace,
64    std::vector<symbol *> *overload_list);
65 
66 static void add_symbol_overload_list_qualified
67   (const char *func_name,
68    std::vector<symbol *> *overload_list);
69 
70 /* The list of "maint cplus" commands.  */
71 
72 struct cmd_list_element *maint_cplus_cmd_list = NULL;
73 
74 static void
75   replace_typedefs (struct demangle_parse_info *info,
76 		    struct demangle_component *ret_comp,
77 		    canonicalization_ftype *finder,
78 		    void *data);
79 
80 static struct demangle_component *
81   gdb_cplus_demangle_v3_components (const char *mangled,
82 				    int options, void **mem);
83 
84 /* A convenience function to copy STRING into OBSTACK, returning a pointer
85    to the newly allocated string and saving the number of bytes saved in LEN.
86 
87    It does not copy the terminating '\0' byte!  */
88 
89 static char *
90 copy_string_to_obstack (struct obstack *obstack, const char *string,
91 			long *len)
92 {
93   *len = strlen (string);
94   return (char *) obstack_copy (obstack, string, *len);
95 }
96 
97 /* Return 1 if STRING is clearly already in canonical form.  This
98    function is conservative; things which it does not recognize are
99    assumed to be non-canonical, and the parser will sort them out
100    afterwards.  This speeds up the critical path for alphanumeric
101    identifiers.  */
102 
103 static int
104 cp_already_canonical (const char *string)
105 {
106   /* Identifier start character [a-zA-Z_].  */
107   if (!ISIDST (string[0]))
108     return 0;
109 
110   /* These are the only two identifiers which canonicalize to other
111      than themselves or an error: unsigned -> unsigned int and
112      signed -> int.  */
113   if (string[0] == 'u' && strcmp (&string[1], "nsigned") == 0)
114     return 0;
115   else if (string[0] == 's' && strcmp (&string[1], "igned") == 0)
116     return 0;
117 
118   /* Identifier character [a-zA-Z0-9_].  */
119   while (ISIDNUM (string[1]))
120     string++;
121 
122   if (string[1] == '\0')
123     return 1;
124   else
125     return 0;
126 }
127 
128 /* Inspect the given RET_COMP for its type.  If it is a typedef,
129    replace the node with the typedef's tree.
130 
131    Returns 1 if any typedef substitutions were made, 0 otherwise.  */
132 
133 static int
134 inspect_type (struct demangle_parse_info *info,
135 	      struct demangle_component *ret_comp,
136 	      canonicalization_ftype *finder,
137 	      void *data)
138 {
139   char *name;
140   struct symbol *sym;
141 
142   /* Copy the symbol's name from RET_COMP and look it up
143      in the symbol table.  */
144   name = (char *) alloca (ret_comp->u.s_name.len + 1);
145   memcpy (name, ret_comp->u.s_name.s, ret_comp->u.s_name.len);
146   name[ret_comp->u.s_name.len] = '\0';
147 
148   sym = NULL;
149 
150   try
151     {
152       sym = lookup_symbol (name, 0, VAR_DOMAIN, 0).symbol;
153     }
154   catch (const gdb_exception &except)
155     {
156       return 0;
157     }
158 
159   if (sym != NULL)
160     {
161       struct type *otype = sym->type ();
162 
163       if (finder != NULL)
164 	{
165 	  const char *new_name = (*finder) (otype, data);
166 
167 	  if (new_name != NULL)
168 	    {
169 	      ret_comp->u.s_name.s = new_name;
170 	      ret_comp->u.s_name.len = strlen (new_name);
171 	      return 1;
172 	    }
173 
174 	  return 0;
175 	}
176 
177       /* If the type is a typedef or namespace alias, replace it.  */
178       if (otype->code () == TYPE_CODE_TYPEDEF
179 	  || otype->code () == TYPE_CODE_NAMESPACE)
180 	{
181 	  long len;
182 	  int is_anon;
183 	  struct type *type;
184 	  std::unique_ptr<demangle_parse_info> i;
185 
186 	  /* Get the real type of the typedef.  */
187 	  type = check_typedef (otype);
188 
189 	  /* If the symbol name is the same as the original type name,
190 	     don't substitute.  That would cause infinite recursion in
191 	     symbol lookups, as the typedef symbol is often the first
192 	     found symbol in the symbol table.
193 
194 	     However, this can happen in a number of situations, such as:
195 
196 	     If the symbol is a namespace and its type name is no different
197 	     than the name we looked up, this symbol is not a namespace
198 	     alias and does not need to be substituted.
199 
200 	     If the symbol is typedef and its type name is the same
201 	     as the symbol's name, e.g., "typedef struct foo foo;".  */
202 	  if (type->name () != nullptr
203 	      && strcmp (type->name (), name) == 0)
204 	    return 0;
205 
206 	  is_anon = (type->name () == NULL
207 		     && (type->code () == TYPE_CODE_ENUM
208 			 || type->code () == TYPE_CODE_STRUCT
209 			 || type->code () == TYPE_CODE_UNION));
210 	  if (is_anon)
211 	    {
212 	      struct type *last = otype;
213 
214 	      /* Find the last typedef for the type.  */
215 	      while (last->target_type () != NULL
216 		     && (last->target_type ()->code ()
217 			 == TYPE_CODE_TYPEDEF))
218 		last = last->target_type ();
219 
220 	      /* If there is only one typedef for this anonymous type,
221 		 do not substitute it.  */
222 	      if (type == otype)
223 		return 0;
224 	      else
225 		/* Use the last typedef seen as the type for this
226 		   anonymous type.  */
227 		type = last;
228 	    }
229 
230 	  string_file buf;
231 	  try
232 	    {
233 	      /* Avoid using the current language.  If the language is
234 		 C, and TYPE is a struct/class, the printed type is
235 		 prefixed with "struct " or "class ", which we don't
236 		 want when we're expanding a C++ typedef.  Print using
237 		 the type symbol's language to expand a C++ typedef
238 		 the C++ way even if the current language is C.  */
239 	      const language_defn *lang = language_def (sym->language ());
240 	      lang->print_type (type, "", &buf, -1, 0, &type_print_raw_options);
241 	    }
242 	  /* If type_print threw an exception, there is little point
243 	     in continuing, so just bow out gracefully.  */
244 	  catch (const gdb_exception_error &except)
245 	    {
246 	      return 0;
247 	    }
248 
249 	  len = buf.size ();
250 	  name = obstack_strdup (&info->obstack, buf.string ());
251 
252 	  /* Turn the result into a new tree.  Note that this
253 	     tree will contain pointers into NAME, so NAME cannot
254 	     be free'd until all typedef conversion is done and
255 	     the final result is converted into a string.  */
256 	  i = cp_demangled_name_to_comp (name, NULL);
257 	  if (i != NULL)
258 	    {
259 	      /* Merge the two trees.  */
260 	      cp_merge_demangle_parse_infos (info, ret_comp, i.get ());
261 
262 	      /* Replace any newly introduced typedefs -- but not
263 		 if the type is anonymous (that would lead to infinite
264 		 looping).  */
265 	      if (!is_anon)
266 		replace_typedefs (info, ret_comp, finder, data);
267 	    }
268 	  else
269 	    {
270 	      /* This shouldn't happen unless the type printer has
271 		 output something that the name parser cannot grok.
272 		 Nonetheless, an ounce of prevention...
273 
274 		 Canonicalize the name again, and store it in the
275 		 current node (RET_COMP).  */
276 	      gdb::unique_xmalloc_ptr<char> canon
277 		= cp_canonicalize_string_no_typedefs (name);
278 
279 	      if (canon != nullptr)
280 		{
281 		  /* Copy the canonicalization into the obstack.  */
282 		  name = copy_string_to_obstack (&info->obstack, canon.get (), &len);
283 		}
284 
285 	      ret_comp->u.s_name.s = name;
286 	      ret_comp->u.s_name.len = len;
287 	    }
288 
289 	  return 1;
290 	}
291     }
292 
293   return 0;
294 }
295 
296 /* Helper for replace_typedefs_qualified_name to handle
297    DEMANGLE_COMPONENT_TEMPLATE.  TMPL is the template node.  BUF is
298    the buffer that holds the qualified name being built by
299    replace_typedefs_qualified_name.  REPL is the node that will be
300    rewritten as a DEMANGLE_COMPONENT_NAME node holding the 'template
301    plus template arguments' name with typedefs replaced.  */
302 
303 static bool
304 replace_typedefs_template (struct demangle_parse_info *info,
305 			   string_file &buf,
306 			   struct demangle_component *tmpl,
307 			   struct demangle_component *repl,
308 			   canonicalization_ftype *finder,
309 			   void *data)
310 {
311   demangle_component *tmpl_arglist = d_right (tmpl);
312 
313   /* Replace typedefs in the template argument list.  */
314   replace_typedefs (info, tmpl_arglist, finder, data);
315 
316   /* Convert 'template + replaced template argument list' to a string
317      and replace the REPL node.  */
318   gdb::unique_xmalloc_ptr<char> tmpl_str = cp_comp_to_string (tmpl, 100);
319   if (tmpl_str == nullptr)
320     {
321       /* If something went astray, abort typedef substitutions.  */
322       return false;
323     }
324   buf.puts (tmpl_str.get ());
325 
326   repl->type = DEMANGLE_COMPONENT_NAME;
327   repl->u.s_name.s = obstack_strdup (&info->obstack, buf.string ());
328   repl->u.s_name.len = buf.size ();
329   return true;
330 }
331 
332 /* Replace any typedefs appearing in the qualified name
333    (DEMANGLE_COMPONENT_QUAL_NAME) represented in RET_COMP for the name parse
334    given in INFO.  */
335 
336 static void
337 replace_typedefs_qualified_name (struct demangle_parse_info *info,
338 				 struct demangle_component *ret_comp,
339 				 canonicalization_ftype *finder,
340 				 void *data)
341 {
342   string_file buf;
343   struct demangle_component *comp = ret_comp;
344 
345   /* Walk each node of the qualified name, reconstructing the name of
346      this element.  With every node, check for any typedef substitutions.
347      If a substitution has occurred, replace the qualified name node
348      with a DEMANGLE_COMPONENT_NAME node representing the new, typedef-
349      substituted name.  */
350   while (comp->type == DEMANGLE_COMPONENT_QUAL_NAME)
351     {
352       if (d_left (comp)->type == DEMANGLE_COMPONENT_TEMPLATE)
353 	{
354 	  /* Convert 'template + replaced template argument list' to a
355 	     string and replace the top DEMANGLE_COMPONENT_QUAL_NAME
356 	     node.  */
357 	  if (!replace_typedefs_template (info, buf,
358 					  d_left (comp), d_left (ret_comp),
359 					  finder, data))
360 	    return;
361 
362 	  buf.clear ();
363 	  d_right (ret_comp) = d_right (comp);
364 	  comp = ret_comp;
365 
366 	  /* Fallback to DEMANGLE_COMPONENT_NAME processing.  We want
367 	     to call inspect_type for this template, in case we have a
368 	     template alias, like:
369 	       template<typename T> using alias = base<int, t>;
370 	     in which case we want inspect_type to do a replacement like:
371 	       alias<int> -> base<int, int>
372 	  */
373 	}
374 
375       if (d_left (comp)->type == DEMANGLE_COMPONENT_NAME)
376 	{
377 	  struct demangle_component newobj;
378 
379 	  buf.write (d_left (comp)->u.s_name.s, d_left (comp)->u.s_name.len);
380 	  newobj.type = DEMANGLE_COMPONENT_NAME;
381 	  newobj.u.s_name.s = obstack_strdup (&info->obstack, buf.string ());
382 	  newobj.u.s_name.len = buf.size ();
383 	  if (inspect_type (info, &newobj, finder, data))
384 	    {
385 	      char *s;
386 	      long slen;
387 
388 	      /* A typedef was substituted in NEW.  Convert it to a
389 		 string and replace the top DEMANGLE_COMPONENT_QUAL_NAME
390 		 node.  */
391 
392 	      buf.clear ();
393 	      gdb::unique_xmalloc_ptr<char> n
394 		= cp_comp_to_string (&newobj, 100);
395 	      if (n == NULL)
396 		{
397 		  /* If something went astray, abort typedef substitutions.  */
398 		  return;
399 		}
400 
401 	      s = copy_string_to_obstack (&info->obstack, n.get (), &slen);
402 
403 	      d_left (ret_comp)->type = DEMANGLE_COMPONENT_NAME;
404 	      d_left (ret_comp)->u.s_name.s = s;
405 	      d_left (ret_comp)->u.s_name.len = slen;
406 	      d_right (ret_comp) = d_right (comp);
407 	      comp = ret_comp;
408 	      continue;
409 	    }
410 	}
411       else
412 	{
413 	  /* The current node is not a name, so simply replace any
414 	     typedefs in it.  Then print it to the stream to continue
415 	     checking for more typedefs in the tree.  */
416 	  replace_typedefs (info, d_left (comp), finder, data);
417 	  gdb::unique_xmalloc_ptr<char> name
418 	    = cp_comp_to_string (d_left (comp), 100);
419 	  if (name == NULL)
420 	    {
421 	      /* If something went astray, abort typedef substitutions.  */
422 	      return;
423 	    }
424 	  buf.puts (name.get ());
425 	}
426 
427       buf.write ("::", 2);
428       comp = d_right (comp);
429     }
430 
431   /* If the next component is DEMANGLE_COMPONENT_TEMPLATE or
432      DEMANGLE_COMPONENT_NAME, save the qualified name assembled above
433      and append the name given by COMP.  Then use this reassembled
434      name to check for a typedef.  */
435 
436   if (comp->type == DEMANGLE_COMPONENT_TEMPLATE)
437     {
438       /* Replace the top (DEMANGLE_COMPONENT_QUAL_NAME) node with a
439 	 DEMANGLE_COMPONENT_NAME node containing the whole name.  */
440       if (!replace_typedefs_template (info, buf, comp, ret_comp, finder, data))
441 	return;
442       inspect_type (info, ret_comp, finder, data);
443     }
444   else if (comp->type == DEMANGLE_COMPONENT_NAME)
445     {
446       buf.write (comp->u.s_name.s, comp->u.s_name.len);
447 
448       /* Replace the top (DEMANGLE_COMPONENT_QUAL_NAME) node
449 	 with a DEMANGLE_COMPONENT_NAME node containing the whole
450 	 name.  */
451       ret_comp->type = DEMANGLE_COMPONENT_NAME;
452       ret_comp->u.s_name.s = obstack_strdup (&info->obstack, buf.string ());
453       ret_comp->u.s_name.len = buf.size ();
454       inspect_type (info, ret_comp, finder, data);
455     }
456   else
457     replace_typedefs (info, comp, finder, data);
458 }
459 
460 
461 /* A function to check const and volatile qualifiers for argument types.
462 
463    "Parameter declarations that differ only in the presence
464    or absence of `const' and/or `volatile' are equivalent."
465    C++ Standard N3290, clause 13.1.3 #4.  */
466 
467 static void
468 check_cv_qualifiers (struct demangle_component *ret_comp)
469 {
470   while (d_left (ret_comp) != NULL
471 	 && (d_left (ret_comp)->type == DEMANGLE_COMPONENT_CONST
472 	     || d_left (ret_comp)->type == DEMANGLE_COMPONENT_VOLATILE))
473     {
474       d_left (ret_comp) = d_left (d_left (ret_comp));
475     }
476 }
477 
478 /* Walk the parse tree given by RET_COMP, replacing any typedefs with
479    their basic types.  */
480 
481 static void
482 replace_typedefs (struct demangle_parse_info *info,
483 		  struct demangle_component *ret_comp,
484 		  canonicalization_ftype *finder,
485 		  void *data)
486 {
487   if (ret_comp)
488     {
489       if (finder != NULL
490 	  && (ret_comp->type == DEMANGLE_COMPONENT_NAME
491 	      || ret_comp->type == DEMANGLE_COMPONENT_QUAL_NAME
492 	      || ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE
493 	      || ret_comp->type == DEMANGLE_COMPONENT_BUILTIN_TYPE))
494 	{
495 	  gdb::unique_xmalloc_ptr<char> local_name
496 	    = cp_comp_to_string (ret_comp, 10);
497 
498 	  if (local_name != NULL)
499 	    {
500 	      struct symbol *sym = NULL;
501 
502 	      sym = NULL;
503 	      try
504 		{
505 		  sym = lookup_symbol (local_name.get (), 0,
506 				       VAR_DOMAIN, 0).symbol;
507 		}
508 	      catch (const gdb_exception &except)
509 		{
510 		}
511 
512 	      if (sym != NULL)
513 		{
514 		  struct type *otype = sym->type ();
515 		  const char *new_name = (*finder) (otype, data);
516 
517 		  if (new_name != NULL)
518 		    {
519 		      ret_comp->type = DEMANGLE_COMPONENT_NAME;
520 		      ret_comp->u.s_name.s = new_name;
521 		      ret_comp->u.s_name.len = strlen (new_name);
522 		      return;
523 		    }
524 		}
525 	    }
526 	}
527 
528       switch (ret_comp->type)
529 	{
530 	case DEMANGLE_COMPONENT_ARGLIST:
531 	  check_cv_qualifiers (ret_comp);
532 	  /* Fall through */
533 
534 	case DEMANGLE_COMPONENT_FUNCTION_TYPE:
535 	case DEMANGLE_COMPONENT_TEMPLATE:
536 	case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
537 	case DEMANGLE_COMPONENT_TYPED_NAME:
538 	  replace_typedefs (info, d_left (ret_comp), finder, data);
539 	  replace_typedefs (info, d_right (ret_comp), finder, data);
540 	  break;
541 
542 	case DEMANGLE_COMPONENT_NAME:
543 	  inspect_type (info, ret_comp, finder, data);
544 	  break;
545 
546 	case DEMANGLE_COMPONENT_QUAL_NAME:
547 	  replace_typedefs_qualified_name (info, ret_comp, finder, data);
548 	  break;
549 
550 	case DEMANGLE_COMPONENT_LOCAL_NAME:
551 	case DEMANGLE_COMPONENT_CTOR:
552 	case DEMANGLE_COMPONENT_ARRAY_TYPE:
553 	case DEMANGLE_COMPONENT_PTRMEM_TYPE:
554 	  replace_typedefs (info, d_right (ret_comp), finder, data);
555 	  break;
556 
557 	case DEMANGLE_COMPONENT_CONST:
558 	case DEMANGLE_COMPONENT_RESTRICT:
559 	case DEMANGLE_COMPONENT_VOLATILE:
560 	case DEMANGLE_COMPONENT_VOLATILE_THIS:
561 	case DEMANGLE_COMPONENT_CONST_THIS:
562 	case DEMANGLE_COMPONENT_RESTRICT_THIS:
563 	case DEMANGLE_COMPONENT_POINTER:
564 	case DEMANGLE_COMPONENT_REFERENCE:
565 	case DEMANGLE_COMPONENT_RVALUE_REFERENCE:
566 	  replace_typedefs (info, d_left (ret_comp), finder, data);
567 	  break;
568 
569 	default:
570 	  break;
571 	}
572     }
573 }
574 
575 /* Parse STRING and convert it to canonical form, resolving any
576    typedefs.  If parsing fails, or if STRING is already canonical,
577    return nullptr.  Otherwise return the canonical form.  If
578    FINDER is not NULL, then type components are passed to FINDER to be
579    looked up.  DATA is passed verbatim to FINDER.  */
580 
581 gdb::unique_xmalloc_ptr<char>
582 cp_canonicalize_string_full (const char *string,
583 			     canonicalization_ftype *finder,
584 			     void *data)
585 {
586   unsigned int estimated_len;
587   std::unique_ptr<demangle_parse_info> info;
588 
589   estimated_len = strlen (string) * 2;
590   info = cp_demangled_name_to_comp (string, NULL);
591   if (info != NULL)
592     {
593       /* Replace all the typedefs in the tree.  */
594       replace_typedefs (info.get (), info->tree, finder, data);
595 
596       /* Convert the tree back into a string.  */
597       gdb::unique_xmalloc_ptr<char> us = cp_comp_to_string (info->tree,
598 							    estimated_len);
599       gdb_assert (us);
600 
601       /* Finally, compare the original string with the computed
602 	 name, returning NULL if they are the same.  */
603       if (strcmp (us.get (), string) == 0)
604 	return nullptr;
605 
606       return us;
607     }
608 
609   return nullptr;
610 }
611 
612 /* Like cp_canonicalize_string_full, but always passes NULL for
613    FINDER.  */
614 
615 gdb::unique_xmalloc_ptr<char>
616 cp_canonicalize_string_no_typedefs (const char *string)
617 {
618   return cp_canonicalize_string_full (string, NULL, NULL);
619 }
620 
621 /* Parse STRING and convert it to canonical form.  If parsing fails,
622    or if STRING is already canonical, return nullptr.
623    Otherwise return the canonical form.  */
624 
625 gdb::unique_xmalloc_ptr<char>
626 cp_canonicalize_string (const char *string)
627 {
628   std::unique_ptr<demangle_parse_info> info;
629   unsigned int estimated_len;
630 
631   if (cp_already_canonical (string))
632     return nullptr;
633 
634   info = cp_demangled_name_to_comp (string, NULL);
635   if (info == NULL)
636     return nullptr;
637 
638   estimated_len = strlen (string) * 2;
639   gdb::unique_xmalloc_ptr<char> us (cp_comp_to_string (info->tree,
640 						       estimated_len));
641 
642   if (!us)
643     {
644       warning (_("internal error: string \"%s\" failed to be canonicalized"),
645 	       string);
646       return nullptr;
647     }
648 
649   if (strcmp (us.get (), string) == 0)
650     return nullptr;
651 
652   return us;
653 }
654 
655 /* Convert a mangled name to a demangle_component tree.  *MEMORY is
656    set to the block of used memory that should be freed when finished
657    with the tree.  DEMANGLED_P is set to the char * that should be
658    freed when finished with the tree, or NULL if none was needed.
659    OPTIONS will be passed to the demangler.  */
660 
661 static std::unique_ptr<demangle_parse_info>
662 mangled_name_to_comp (const char *mangled_name, int options,
663 		      void **memory,
664 		      gdb::unique_xmalloc_ptr<char> *demangled_p)
665 {
666   /* If it looks like a v3 mangled name, then try to go directly
667      to trees.  */
668   if (mangled_name[0] == '_' && mangled_name[1] == 'Z')
669     {
670       struct demangle_component *ret;
671 
672       ret = gdb_cplus_demangle_v3_components (mangled_name,
673 					      options, memory);
674       if (ret)
675 	{
676 	  std::unique_ptr<demangle_parse_info> info (new demangle_parse_info);
677 	  info->tree = ret;
678 	  *demangled_p = NULL;
679 	  return info;
680 	}
681     }
682 
683   /* If it doesn't, or if that failed, then try to demangle the
684      name.  */
685   gdb::unique_xmalloc_ptr<char> demangled_name = gdb_demangle (mangled_name,
686 							       options);
687   if (demangled_name == NULL)
688    return NULL;
689 
690   /* If we could demangle the name, parse it to build the component
691      tree.  */
692   std::unique_ptr<demangle_parse_info> info
693     = cp_demangled_name_to_comp (demangled_name.get (), NULL);
694 
695   if (info == NULL)
696     return NULL;
697 
698   *demangled_p = std::move (demangled_name);
699   return info;
700 }
701 
702 /* Return the name of the class containing method PHYSNAME.  */
703 
704 char *
705 cp_class_name_from_physname (const char *physname)
706 {
707   void *storage = NULL;
708   gdb::unique_xmalloc_ptr<char> demangled_name;
709   gdb::unique_xmalloc_ptr<char> ret;
710   struct demangle_component *ret_comp, *prev_comp, *cur_comp;
711   std::unique_ptr<demangle_parse_info> info;
712   int done;
713 
714   info = mangled_name_to_comp (physname, DMGL_ANSI,
715 			       &storage, &demangled_name);
716   if (info == NULL)
717     return NULL;
718 
719   done = 0;
720   ret_comp = info->tree;
721 
722   /* First strip off any qualifiers, if we have a function or
723      method.  */
724   while (!done)
725     switch (ret_comp->type)
726       {
727       case DEMANGLE_COMPONENT_CONST:
728       case DEMANGLE_COMPONENT_RESTRICT:
729       case DEMANGLE_COMPONENT_VOLATILE:
730       case DEMANGLE_COMPONENT_CONST_THIS:
731       case DEMANGLE_COMPONENT_RESTRICT_THIS:
732       case DEMANGLE_COMPONENT_VOLATILE_THIS:
733       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
734 	ret_comp = d_left (ret_comp);
735 	break;
736       default:
737 	done = 1;
738 	break;
739       }
740 
741   /* If what we have now is a function, discard the argument list.  */
742   if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
743     ret_comp = d_left (ret_comp);
744 
745   /* If what we have now is a template, strip off the template
746      arguments.  The left subtree may be a qualified name.  */
747   if (ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE)
748     ret_comp = d_left (ret_comp);
749 
750   /* What we have now should be a name, possibly qualified.
751      Additional qualifiers could live in the left subtree or the right
752      subtree.  Find the last piece.  */
753   done = 0;
754   prev_comp = NULL;
755   cur_comp = ret_comp;
756   while (!done)
757     switch (cur_comp->type)
758       {
759       case DEMANGLE_COMPONENT_QUAL_NAME:
760       case DEMANGLE_COMPONENT_LOCAL_NAME:
761 	prev_comp = cur_comp;
762 	cur_comp = d_right (cur_comp);
763 	break;
764       case DEMANGLE_COMPONENT_TEMPLATE:
765       case DEMANGLE_COMPONENT_NAME:
766       case DEMANGLE_COMPONENT_CTOR:
767       case DEMANGLE_COMPONENT_DTOR:
768       case DEMANGLE_COMPONENT_OPERATOR:
769       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
770 	done = 1;
771 	break;
772       default:
773 	done = 1;
774 	cur_comp = NULL;
775 	break;
776       }
777 
778   if (cur_comp != NULL && prev_comp != NULL)
779     {
780       /* We want to discard the rightmost child of PREV_COMP.  */
781       *prev_comp = *d_left (prev_comp);
782       /* The ten is completely arbitrary; we don't have a good
783 	 estimate.  */
784       ret = cp_comp_to_string (ret_comp, 10);
785     }
786 
787   xfree (storage);
788   return ret.release ();
789 }
790 
791 /* Return the child of COMP which is the basename of a method,
792    variable, et cetera.  All scope qualifiers are discarded, but
793    template arguments will be included.  The component tree may be
794    modified.  */
795 
796 static struct demangle_component *
797 unqualified_name_from_comp (struct demangle_component *comp)
798 {
799   struct demangle_component *ret_comp = comp, *last_template;
800   int done;
801 
802   done = 0;
803   last_template = NULL;
804   while (!done)
805     switch (ret_comp->type)
806       {
807       case DEMANGLE_COMPONENT_QUAL_NAME:
808       case DEMANGLE_COMPONENT_LOCAL_NAME:
809 	ret_comp = d_right (ret_comp);
810 	break;
811       case DEMANGLE_COMPONENT_TYPED_NAME:
812 	ret_comp = d_left (ret_comp);
813 	break;
814       case DEMANGLE_COMPONENT_TEMPLATE:
815 	gdb_assert (last_template == NULL);
816 	last_template = ret_comp;
817 	ret_comp = d_left (ret_comp);
818 	break;
819       case DEMANGLE_COMPONENT_CONST:
820       case DEMANGLE_COMPONENT_RESTRICT:
821       case DEMANGLE_COMPONENT_VOLATILE:
822       case DEMANGLE_COMPONENT_CONST_THIS:
823       case DEMANGLE_COMPONENT_RESTRICT_THIS:
824       case DEMANGLE_COMPONENT_VOLATILE_THIS:
825       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
826 	ret_comp = d_left (ret_comp);
827 	break;
828       case DEMANGLE_COMPONENT_NAME:
829       case DEMANGLE_COMPONENT_CTOR:
830       case DEMANGLE_COMPONENT_DTOR:
831       case DEMANGLE_COMPONENT_OPERATOR:
832       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
833 	done = 1;
834 	break;
835       default:
836 	return NULL;
837 	break;
838       }
839 
840   if (last_template)
841     {
842       d_left (last_template) = ret_comp;
843       return last_template;
844     }
845 
846   return ret_comp;
847 }
848 
849 /* Return the name of the method whose linkage name is PHYSNAME.  */
850 
851 char *
852 method_name_from_physname (const char *physname)
853 {
854   void *storage = NULL;
855   gdb::unique_xmalloc_ptr<char> demangled_name;
856   gdb::unique_xmalloc_ptr<char> ret;
857   struct demangle_component *ret_comp;
858   std::unique_ptr<demangle_parse_info> info;
859 
860   info = mangled_name_to_comp (physname, DMGL_ANSI,
861 			       &storage, &demangled_name);
862   if (info == NULL)
863     return NULL;
864 
865   ret_comp = unqualified_name_from_comp (info->tree);
866 
867   if (ret_comp != NULL)
868     /* The ten is completely arbitrary; we don't have a good
869        estimate.  */
870     ret = cp_comp_to_string (ret_comp, 10);
871 
872   xfree (storage);
873   return ret.release ();
874 }
875 
876 /* If FULL_NAME is the demangled name of a C++ function (including an
877    arg list, possibly including namespace/class qualifications),
878    return a new string containing only the function name (without the
879    arg list/class qualifications).  Otherwise, return NULL.  */
880 
881 gdb::unique_xmalloc_ptr<char>
882 cp_func_name (const char *full_name)
883 {
884   gdb::unique_xmalloc_ptr<char> ret;
885   struct demangle_component *ret_comp;
886   std::unique_ptr<demangle_parse_info> info;
887 
888   info = cp_demangled_name_to_comp (full_name, NULL);
889   if (!info)
890     return nullptr;
891 
892   ret_comp = unqualified_name_from_comp (info->tree);
893 
894   if (ret_comp != NULL)
895     ret = cp_comp_to_string (ret_comp, 10);
896 
897   return ret;
898 }
899 
900 /* Helper for cp_remove_params.  DEMANGLED_NAME is the name of a
901    function, including parameters and (optionally) a return type.
902    Return the name of the function without parameters or return type,
903    or NULL if we can not parse the name.  If REQUIRE_PARAMS is false,
904    then tolerate a non-existing or unbalanced parameter list.  */
905 
906 static gdb::unique_xmalloc_ptr<char>
907 cp_remove_params_1 (const char *demangled_name, bool require_params)
908 {
909   bool done = false;
910   struct demangle_component *ret_comp;
911   std::unique_ptr<demangle_parse_info> info;
912   gdb::unique_xmalloc_ptr<char> ret;
913 
914   if (demangled_name == NULL)
915     return NULL;
916 
917   info = cp_demangled_name_to_comp (demangled_name, NULL);
918   if (info == NULL)
919     return NULL;
920 
921   /* First strip off any qualifiers, if we have a function or method.  */
922   ret_comp = info->tree;
923   while (!done)
924     switch (ret_comp->type)
925       {
926       case DEMANGLE_COMPONENT_CONST:
927       case DEMANGLE_COMPONENT_RESTRICT:
928       case DEMANGLE_COMPONENT_VOLATILE:
929       case DEMANGLE_COMPONENT_CONST_THIS:
930       case DEMANGLE_COMPONENT_RESTRICT_THIS:
931       case DEMANGLE_COMPONENT_VOLATILE_THIS:
932       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
933 	ret_comp = d_left (ret_comp);
934 	break;
935       default:
936 	done = true;
937 	break;
938       }
939 
940   /* What we have now should be a function.  Return its name.  */
941   if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
942     ret = cp_comp_to_string (d_left (ret_comp), 10);
943   else if (!require_params
944 	   && (ret_comp->type == DEMANGLE_COMPONENT_NAME
945 	       || ret_comp->type == DEMANGLE_COMPONENT_QUAL_NAME
946 	       || ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE))
947     ret = cp_comp_to_string (ret_comp, 10);
948 
949   return ret;
950 }
951 
952 /* DEMANGLED_NAME is the name of a function, including parameters and
953    (optionally) a return type.  Return the name of the function
954    without parameters or return type, or NULL if we can not parse the
955    name.  */
956 
957 gdb::unique_xmalloc_ptr<char>
958 cp_remove_params (const char *demangled_name)
959 {
960   return cp_remove_params_1 (demangled_name, true);
961 }
962 
963 /* See cp-support.h.  */
964 
965 gdb::unique_xmalloc_ptr<char>
966 cp_remove_params_if_any (const char *demangled_name, bool completion_mode)
967 {
968   /* Trying to remove parameters from the empty string fails.  If
969      we're completing / matching everything, avoid returning NULL
970      which would make callers interpret the result as an error.  */
971   if (demangled_name[0] == '\0' && completion_mode)
972     return make_unique_xstrdup ("");
973 
974   gdb::unique_xmalloc_ptr<char> without_params
975     = cp_remove_params_1 (demangled_name, false);
976 
977   if (without_params == NULL && completion_mode)
978     {
979       std::string copy = demangled_name;
980 
981       while (!copy.empty ())
982 	{
983 	  copy.pop_back ();
984 	  without_params = cp_remove_params_1 (copy.c_str (), false);
985 	  if (without_params != NULL)
986 	    break;
987 	}
988     }
989 
990   return without_params;
991 }
992 
993 /* Here are some random pieces of trivia to keep in mind while trying
994    to take apart demangled names:
995 
996    - Names can contain function arguments or templates, so the process
997      has to be, to some extent recursive: maybe keep track of your
998      depth based on encountering <> and ().
999 
1000    - Parentheses don't just have to happen at the end of a name: they
1001      can occur even if the name in question isn't a function, because
1002      a template argument might be a type that's a function.
1003 
1004    - Conversely, even if you're trying to deal with a function, its
1005      demangled name might not end with ')': it could be a const or
1006      volatile class method, in which case it ends with "const" or
1007      "volatile".
1008 
1009    - Parentheses are also used in anonymous namespaces: a variable
1010      'foo' in an anonymous namespace gets demangled as "(anonymous
1011      namespace)::foo".
1012 
1013    - And operator names can contain parentheses or angle brackets.  */
1014 
1015 /* FIXME: carlton/2003-03-13: We have several functions here with
1016    overlapping functionality; can we combine them?  Also, do they
1017    handle all the above considerations correctly?  */
1018 
1019 
1020 /* This returns the length of first component of NAME, which should be
1021    the demangled name of a C++ variable/function/method/etc.
1022    Specifically, it returns the index of the first colon forming the
1023    boundary of the first component: so, given 'A::foo' or 'A::B::foo'
1024    it returns the 1, and given 'foo', it returns 0.  */
1025 
1026 /* The character in NAME indexed by the return value is guaranteed to
1027    always be either ':' or '\0'.  */
1028 
1029 /* NOTE: carlton/2003-03-13: This function is currently only intended
1030    for internal use: it's probably not entirely safe when called on
1031    user-generated input, because some of the 'index += 2' lines in
1032    cp_find_first_component_aux might go past the end of malformed
1033    input.  */
1034 
1035 unsigned int
1036 cp_find_first_component (const char *name)
1037 {
1038   return cp_find_first_component_aux (name, 0);
1039 }
1040 
1041 /* Helper function for cp_find_first_component.  Like that function,
1042    it returns the length of the first component of NAME, but to make
1043    the recursion easier, it also stops if it reaches an unexpected ')'
1044    or '>' if the value of PERMISSIVE is nonzero.  */
1045 
1046 static unsigned int
1047 cp_find_first_component_aux (const char *name, int permissive)
1048 {
1049   unsigned int index = 0;
1050   /* Operator names can show up in unexpected places.  Since these can
1051      contain parentheses or angle brackets, they can screw up the
1052      recursion.  But not every string 'operator' is part of an
1053      operator name: e.g. you could have a variable 'cooperator'.  So
1054      this variable tells us whether or not we should treat the string
1055      'operator' as starting an operator.  */
1056   int operator_possible = 1;
1057 
1058   for (;; ++index)
1059     {
1060       switch (name[index])
1061 	{
1062 	case '<':
1063 	  /* Template; eat it up.  The calls to cp_first_component
1064 	     should only return (I hope!) when they reach the '>'
1065 	     terminating the component or a '::' between two
1066 	     components.  (Hence the '+ 2'.)  */
1067 	  index += 1;
1068 	  for (index += cp_find_first_component_aux (name + index, 1);
1069 	       name[index] != '>';
1070 	       index += cp_find_first_component_aux (name + index, 1))
1071 	    {
1072 	      if (name[index] != ':')
1073 		{
1074 		  demangled_name_complaint (name);
1075 		  return strlen (name);
1076 		}
1077 	      index += 2;
1078 	    }
1079 	  operator_possible = 1;
1080 	  break;
1081 	case '(':
1082 	  /* Similar comment as to '<'.  */
1083 	  index += 1;
1084 	  for (index += cp_find_first_component_aux (name + index, 1);
1085 	       name[index] != ')';
1086 	       index += cp_find_first_component_aux (name + index, 1))
1087 	    {
1088 	      if (name[index] != ':')
1089 		{
1090 		  demangled_name_complaint (name);
1091 		  return strlen (name);
1092 		}
1093 	      index += 2;
1094 	    }
1095 	  operator_possible = 1;
1096 	  break;
1097 	case '>':
1098 	case ')':
1099 	  if (permissive)
1100 	    return index;
1101 	  else
1102 	    {
1103 	      demangled_name_complaint (name);
1104 	      return strlen (name);
1105 	    }
1106 	case '\0':
1107 	  return index;
1108 	case ':':
1109 	  /* ':' marks a component iff the next character is also a ':'.
1110 	     Otherwise it is probably malformed input.  */
1111 	  if (name[index + 1] == ':')
1112 	    return index;
1113 	  break;
1114 	case 'o':
1115 	  /* Operator names can screw up the recursion.  */
1116 	  if (operator_possible
1117 	      && startswith (name + index, CP_OPERATOR_STR))
1118 	    {
1119 	      index += CP_OPERATOR_LEN;
1120 	      while (ISSPACE(name[index]))
1121 		++index;
1122 	      switch (name[index])
1123 		{
1124 		case '\0':
1125 		  return index;
1126 		  /* Skip over one less than the appropriate number of
1127 		     characters: the for loop will skip over the last
1128 		     one.  */
1129 		case '<':
1130 		  if (name[index + 1] == '<')
1131 		    index += 1;
1132 		  else
1133 		    index += 0;
1134 		  break;
1135 		case '>':
1136 		case '-':
1137 		  if (name[index + 1] == '>')
1138 		    index += 1;
1139 		  else
1140 		    index += 0;
1141 		  break;
1142 		case '(':
1143 		  index += 1;
1144 		  break;
1145 		default:
1146 		  index += 0;
1147 		  break;
1148 		}
1149 	    }
1150 	  operator_possible = 0;
1151 	  break;
1152 	case ' ':
1153 	case ',':
1154 	case '.':
1155 	case '&':
1156 	case '*':
1157 	  /* NOTE: carlton/2003-04-18: I'm not sure what the precise
1158 	     set of relevant characters are here: it's necessary to
1159 	     include any character that can show up before 'operator'
1160 	     in a demangled name, and it's safe to include any
1161 	     character that can't be part of an identifier's name.  */
1162 	  operator_possible = 1;
1163 	  break;
1164 	default:
1165 	  operator_possible = 0;
1166 	  break;
1167 	}
1168     }
1169 }
1170 
1171 /* Complain about a demangled name that we don't know how to parse.
1172    NAME is the demangled name in question.  */
1173 
1174 static void
1175 demangled_name_complaint (const char *name)
1176 {
1177   complaint ("unexpected demangled name '%s'", name);
1178 }
1179 
1180 /* If NAME is the fully-qualified name of a C++
1181    function/variable/method/etc., this returns the length of its
1182    entire prefix: all of the namespaces and classes that make up its
1183    name.  Given 'A::foo', it returns 1, given 'A::B::foo', it returns
1184    4, given 'foo', it returns 0.  */
1185 
1186 unsigned int
1187 cp_entire_prefix_len (const char *name)
1188 {
1189   unsigned int current_len = cp_find_first_component (name);
1190   unsigned int previous_len = 0;
1191 
1192   while (name[current_len] != '\0')
1193     {
1194       gdb_assert (name[current_len] == ':');
1195       previous_len = current_len;
1196       /* Skip the '::'.  */
1197       current_len += 2;
1198       current_len += cp_find_first_component (name + current_len);
1199     }
1200 
1201   return previous_len;
1202 }
1203 
1204 /* Overload resolution functions.  */
1205 
1206 /* Test to see if SYM is a symbol that we haven't seen corresponding
1207    to a function named OLOAD_NAME.  If so, add it to
1208    OVERLOAD_LIST.  */
1209 
1210 static void
1211 overload_list_add_symbol (struct symbol *sym,
1212 			  const char *oload_name,
1213 			  std::vector<symbol *> *overload_list)
1214 {
1215   /* If there is no type information, we can't do anything, so
1216      skip.  */
1217   if (sym->type () == NULL)
1218     return;
1219 
1220   /* skip any symbols that we've already considered.  */
1221   for (symbol *listed_sym : *overload_list)
1222     if (strcmp (sym->linkage_name (), listed_sym->linkage_name ()) == 0)
1223       return;
1224 
1225   /* Get the demangled name without parameters */
1226   gdb::unique_xmalloc_ptr<char> sym_name
1227     = cp_remove_params (sym->natural_name ());
1228   if (!sym_name)
1229     return;
1230 
1231   /* skip symbols that cannot match */
1232   if (strcmp (sym_name.get (), oload_name) != 0)
1233     return;
1234 
1235   overload_list->push_back (sym);
1236 }
1237 
1238 /* Return a null-terminated list of pointers to function symbols that
1239    are named FUNC_NAME and are visible within NAMESPACE.  */
1240 
1241 struct std::vector<symbol *>
1242 make_symbol_overload_list (const char *func_name,
1243 			   const char *the_namespace)
1244 {
1245   const char *name;
1246   std::vector<symbol *> overload_list;
1247 
1248   overload_list.reserve (100);
1249 
1250   add_symbol_overload_list_using (func_name, the_namespace, &overload_list);
1251 
1252   if (the_namespace[0] == '\0')
1253     name = func_name;
1254   else
1255     {
1256       char *concatenated_name
1257 	= (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1258       strcpy (concatenated_name, the_namespace);
1259       strcat (concatenated_name, "::");
1260       strcat (concatenated_name, func_name);
1261       name = concatenated_name;
1262     }
1263 
1264   add_symbol_overload_list_qualified (name, &overload_list);
1265   return overload_list;
1266 }
1267 
1268 /* Add all symbols with a name matching NAME in BLOCK to the overload
1269    list.  */
1270 
1271 static void
1272 add_symbol_overload_list_block (const char *name,
1273 				const struct block *block,
1274 				std::vector<symbol *> *overload_list)
1275 {
1276   struct block_iterator iter;
1277   struct symbol *sym;
1278 
1279   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
1280 
1281   ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
1282     overload_list_add_symbol (sym, name, overload_list);
1283 }
1284 
1285 /* Adds the function FUNC_NAME from NAMESPACE to the overload set.  */
1286 
1287 static void
1288 add_symbol_overload_list_namespace (const char *func_name,
1289 				    const char *the_namespace,
1290 				    std::vector<symbol *> *overload_list)
1291 {
1292   const char *name;
1293   const struct block *block = NULL;
1294 
1295   if (the_namespace[0] == '\0')
1296     name = func_name;
1297   else
1298     {
1299       char *concatenated_name
1300 	= (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1301 
1302       strcpy (concatenated_name, the_namespace);
1303       strcat (concatenated_name, "::");
1304       strcat (concatenated_name, func_name);
1305       name = concatenated_name;
1306     }
1307 
1308   /* Look in the static block.  */
1309   block = block_static_block (get_selected_block (0));
1310   if (block)
1311     add_symbol_overload_list_block (name, block, overload_list);
1312 
1313   /* Look in the global block.  */
1314   block = block_global_block (block);
1315   if (block)
1316     add_symbol_overload_list_block (name, block, overload_list);
1317 
1318 }
1319 
1320 /* Search the namespace of the given type and namespace of and public
1321    base types.  */
1322 
1323 static void
1324 add_symbol_overload_list_adl_namespace (struct type *type,
1325 					const char *func_name,
1326 					std::vector<symbol *> *overload_list)
1327 {
1328   char *the_namespace;
1329   const char *type_name;
1330   int i, prefix_len;
1331 
1332   while (type->is_pointer_or_reference ()
1333 	 || type->code () == TYPE_CODE_ARRAY
1334 	 || type->code () == TYPE_CODE_TYPEDEF)
1335     {
1336       if (type->code () == TYPE_CODE_TYPEDEF)
1337 	type = check_typedef (type);
1338       else
1339 	type = type->target_type ();
1340     }
1341 
1342   type_name = type->name ();
1343 
1344   if (type_name == NULL)
1345     return;
1346 
1347   prefix_len = cp_entire_prefix_len (type_name);
1348 
1349   if (prefix_len != 0)
1350     {
1351       the_namespace = (char *) alloca (prefix_len + 1);
1352       strncpy (the_namespace, type_name, prefix_len);
1353       the_namespace[prefix_len] = '\0';
1354 
1355       add_symbol_overload_list_namespace (func_name, the_namespace,
1356 					  overload_list);
1357     }
1358 
1359   /* Check public base type */
1360   if (type->code () == TYPE_CODE_STRUCT)
1361     for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1362       {
1363 	if (BASETYPE_VIA_PUBLIC (type, i))
1364 	  add_symbol_overload_list_adl_namespace (TYPE_BASECLASS (type, i),
1365 						  func_name,
1366 						  overload_list);
1367       }
1368 }
1369 
1370 /* Adds to OVERLOAD_LIST the overload list overload candidates for
1371    FUNC_NAME found through argument dependent lookup.  */
1372 
1373 void
1374 add_symbol_overload_list_adl (gdb::array_view<type *> arg_types,
1375 			      const char *func_name,
1376 			      std::vector<symbol *> *overload_list)
1377 {
1378   for (type *arg_type : arg_types)
1379     add_symbol_overload_list_adl_namespace (arg_type, func_name,
1380 					    overload_list);
1381 }
1382 
1383 /* This applies the using directives to add namespaces to search in,
1384    and then searches for overloads in all of those namespaces.  It
1385    adds the symbols found to sym_return_val.  Arguments are as in
1386    make_symbol_overload_list.  */
1387 
1388 static void
1389 add_symbol_overload_list_using (const char *func_name,
1390 				const char *the_namespace,
1391 				std::vector<symbol *> *overload_list)
1392 {
1393   struct using_direct *current;
1394   const struct block *block;
1395 
1396   /* First, go through the using directives.  If any of them apply,
1397      look in the appropriate namespaces for new functions to match
1398      on.  */
1399 
1400   for (block = get_selected_block (0);
1401        block != NULL;
1402        block = block->superblock ())
1403     for (current = block_using (block);
1404 	current != NULL;
1405 	current = current->next)
1406       {
1407 	/* Prevent recursive calls.  */
1408 	if (current->searched)
1409 	  continue;
1410 
1411 	/* If this is a namespace alias or imported declaration ignore
1412 	   it.  */
1413 	if (current->alias != NULL || current->declaration != NULL)
1414 	  continue;
1415 
1416 	if (strcmp (the_namespace, current->import_dest) == 0)
1417 	  {
1418 	    /* Mark this import as searched so that the recursive call
1419 	       does not search it again.  */
1420 	    scoped_restore reset_directive_searched
1421 	      = make_scoped_restore (&current->searched, 1);
1422 
1423 	    add_symbol_overload_list_using (func_name,
1424 					    current->import_src,
1425 					    overload_list);
1426 	  }
1427       }
1428 
1429   /* Now, add names for this namespace.  */
1430   add_symbol_overload_list_namespace (func_name, the_namespace,
1431 				      overload_list);
1432 }
1433 
1434 /* This does the bulk of the work of finding overloaded symbols.
1435    FUNC_NAME is the name of the overloaded function we're looking for
1436    (possibly including namespace info).  */
1437 
1438 static void
1439 add_symbol_overload_list_qualified (const char *func_name,
1440 				    std::vector<symbol *> *overload_list)
1441 {
1442   const struct block *surrounding_static_block = 0;
1443 
1444   /* Look through the partial symtabs for all symbols which begin by
1445      matching FUNC_NAME.  Make sure we read that symbol table in.  */
1446 
1447   for (objfile *objf : current_program_space->objfiles ())
1448     objf->expand_symtabs_for_function (func_name);
1449 
1450   /* Search upwards from currently selected frame (so that we can
1451      complete on local vars.  */
1452 
1453   for (const block *b = get_selected_block (0);
1454        b != nullptr;
1455        b = b->superblock ())
1456     add_symbol_overload_list_block (func_name, b, overload_list);
1457 
1458   surrounding_static_block = block_static_block (get_selected_block (0));
1459 
1460   /* Go through the symtabs and check the externs and statics for
1461      symbols which match.  */
1462 
1463   const block *block = get_selected_block (0);
1464   struct objfile *current_objfile = block ? block_objfile (block) : nullptr;
1465 
1466   gdbarch_iterate_over_objfiles_in_search_order
1467     (current_objfile ? current_objfile->arch () : target_gdbarch (),
1468      [func_name, surrounding_static_block, &overload_list]
1469      (struct objfile *obj)
1470        {
1471 	 for (compunit_symtab *cust : obj->compunits ())
1472 	   {
1473 	     QUIT;
1474 	     const struct block *b = cust->blockvector ()->global_block ();
1475 	     add_symbol_overload_list_block (func_name, b, overload_list);
1476 
1477 	     b = cust->blockvector ()->static_block ();
1478 	     /* Don't do this block twice.  */
1479 	     if (b == surrounding_static_block)
1480 	       continue;
1481 
1482 	     add_symbol_overload_list_block (func_name, b, overload_list);
1483 	   }
1484 
1485 	 return 0;
1486        }, current_objfile);
1487 }
1488 
1489 /* Lookup the rtti type for a class name.  */
1490 
1491 struct type *
1492 cp_lookup_rtti_type (const char *name, const struct block *block)
1493 {
1494   struct symbol * rtti_sym;
1495   struct type * rtti_type;
1496 
1497   /* Use VAR_DOMAIN here as NAME may be a typedef.  PR 18141, 18417.
1498      Classes "live" in both STRUCT_DOMAIN and VAR_DOMAIN.  */
1499   rtti_sym = lookup_symbol (name, block, VAR_DOMAIN, NULL).symbol;
1500 
1501   if (rtti_sym == NULL)
1502     {
1503       warning (_("RTTI symbol not found for class '%s'"), name);
1504       return NULL;
1505     }
1506 
1507   if (rtti_sym->aclass () != LOC_TYPEDEF)
1508     {
1509       warning (_("RTTI symbol for class '%s' is not a type"), name);
1510       return NULL;
1511     }
1512 
1513   rtti_type = check_typedef (rtti_sym->type ());
1514 
1515   switch (rtti_type->code ())
1516     {
1517     case TYPE_CODE_STRUCT:
1518       break;
1519     case TYPE_CODE_NAMESPACE:
1520       /* chastain/2003-11-26: the symbol tables often contain fake
1521 	 symbols for namespaces with the same name as the struct.
1522 	 This warning is an indication of a bug in the lookup order
1523 	 or a bug in the way that the symbol tables are populated.  */
1524       warning (_("RTTI symbol for class '%s' is a namespace"), name);
1525       return NULL;
1526     default:
1527       warning (_("RTTI symbol for class '%s' has bad type"), name);
1528       return NULL;
1529     }
1530 
1531   return rtti_type;
1532 }
1533 
1534 #ifdef HAVE_WORKING_FORK
1535 
1536 /* If true, attempt to catch crashes in the demangler and print
1537    useful debugging information.  */
1538 
1539 static bool catch_demangler_crashes = true;
1540 
1541 /* Stack context and environment for demangler crash recovery.  */
1542 
1543 static thread_local SIGJMP_BUF *gdb_demangle_jmp_buf;
1544 
1545 /* If true, attempt to dump core from the signal handler.  */
1546 
1547 static std::atomic<bool> gdb_demangle_attempt_core_dump;
1548 
1549 /* Signal handler for gdb_demangle.  */
1550 
1551 static void
1552 gdb_demangle_signal_handler (int signo)
1553 {
1554   if (gdb_demangle_attempt_core_dump)
1555     {
1556       if (fork () == 0)
1557 	dump_core ();
1558 
1559       gdb_demangle_attempt_core_dump = false;
1560     }
1561 
1562   SIGLONGJMP (*gdb_demangle_jmp_buf, signo);
1563 }
1564 
1565 /* A helper for gdb_demangle that reports a demangling failure.  */
1566 
1567 static void
1568 report_failed_demangle (const char *name, bool core_dump_allowed,
1569 			int crash_signal)
1570 {
1571   static bool error_reported = false;
1572 
1573   if (!error_reported)
1574     {
1575       std::string short_msg
1576 	= string_printf (_("unable to demangle '%s' "
1577 			   "(demangler failed with signal %d)"),
1578 			 name, crash_signal);
1579 
1580       std::string long_msg
1581 	= string_printf ("%s:%d: %s: %s", __FILE__, __LINE__,
1582 			 "demangler-warning", short_msg.c_str ());
1583 
1584       target_terminal::scoped_restore_terminal_state term_state;
1585       target_terminal::ours_for_output ();
1586 
1587       begin_line ();
1588       if (core_dump_allowed)
1589 	gdb_printf (gdb_stderr,
1590 		    _("%s\nAttempting to dump core.\n"),
1591 		    long_msg.c_str ());
1592       else
1593 	warn_cant_dump_core (long_msg.c_str ());
1594 
1595       demangler_warning (__FILE__, __LINE__, "%s", short_msg.c_str ());
1596 
1597       error_reported = true;
1598     }
1599 }
1600 
1601 #endif
1602 
1603 /* A wrapper for bfd_demangle.  */
1604 
1605 gdb::unique_xmalloc_ptr<char>
1606 gdb_demangle (const char *name, int options)
1607 {
1608   gdb::unique_xmalloc_ptr<char> result;
1609   int crash_signal = 0;
1610 
1611 #ifdef HAVE_WORKING_FORK
1612   scoped_segv_handler_restore restore_segv
1613     (catch_demangler_crashes
1614      ? gdb_demangle_signal_handler
1615      : nullptr);
1616 
1617   bool core_dump_allowed = gdb_demangle_attempt_core_dump;
1618   SIGJMP_BUF jmp_buf;
1619   scoped_restore restore_jmp_buf
1620     = make_scoped_restore (&gdb_demangle_jmp_buf, &jmp_buf);
1621   if (catch_demangler_crashes)
1622     {
1623       /* The signal handler may keep the signal blocked when we longjmp out
1624 	 of it.  If we have sigprocmask, we can use it to unblock the signal
1625 	 afterwards and we can avoid the performance overhead of saving the
1626 	 signal mask just in case the signal gets triggered.  Otherwise, just
1627 	 tell sigsetjmp to save the mask.  */
1628 #ifdef HAVE_SIGPROCMASK
1629       crash_signal = SIGSETJMP (*gdb_demangle_jmp_buf, 0);
1630 #else
1631       crash_signal = SIGSETJMP (*gdb_demangle_jmp_buf, 1);
1632 #endif
1633     }
1634 #endif
1635 
1636   if (crash_signal == 0)
1637     result.reset (bfd_demangle (NULL, name, options | DMGL_VERBOSE));
1638 
1639 #ifdef HAVE_WORKING_FORK
1640   if (catch_demangler_crashes)
1641     {
1642       if (crash_signal != 0)
1643 	{
1644 #ifdef HAVE_SIGPROCMASK
1645 	  /* If we got the signal, SIGSEGV may still be blocked; restore it.  */
1646 	  sigset_t segv_sig_set;
1647 	  sigemptyset (&segv_sig_set);
1648 	  sigaddset (&segv_sig_set, SIGSEGV);
1649 	  gdb_sigmask (SIG_UNBLOCK, &segv_sig_set, NULL);
1650 #endif
1651 
1652 	  /* If there was a failure, we can't report it here, because
1653 	     we might be in a background thread.  Instead, arrange for
1654 	     the reporting to happen on the main thread.  */
1655 	  std::string copy = name;
1656 	  run_on_main_thread ([=] ()
1657 	    {
1658 	      report_failed_demangle (copy.c_str (), core_dump_allowed,
1659 				      crash_signal);
1660 	    });
1661 
1662 	  result = NULL;
1663 	}
1664     }
1665 #endif
1666 
1667   return result;
1668 }
1669 
1670 /* See cp-support.h.  */
1671 
1672 char *
1673 gdb_cplus_demangle_print (int options,
1674 			  struct demangle_component *tree,
1675 			  int estimated_length,
1676 			  size_t *p_allocated_size)
1677 {
1678   return cplus_demangle_print (options | DMGL_VERBOSE, tree,
1679 			       estimated_length, p_allocated_size);
1680 }
1681 
1682 /* A wrapper for cplus_demangle_v3_components that forces
1683    DMGL_VERBOSE.  */
1684 
1685 static struct demangle_component *
1686 gdb_cplus_demangle_v3_components (const char *mangled,
1687 				  int options, void **mem)
1688 {
1689   return cplus_demangle_v3_components (mangled, options | DMGL_VERBOSE, mem);
1690 }
1691 
1692 /* See cp-support.h.  */
1693 
1694 unsigned int
1695 cp_search_name_hash (const char *search_name)
1696 {
1697   /* cp_entire_prefix_len assumes a fully-qualified name with no
1698      leading "::".  */
1699   if (startswith (search_name, "::"))
1700     search_name += 2;
1701 
1702   unsigned int prefix_len = cp_entire_prefix_len (search_name);
1703   if (prefix_len != 0)
1704     search_name += prefix_len + 2;
1705 
1706   unsigned int hash = 0;
1707   for (const char *string = search_name; *string != '\0'; ++string)
1708     {
1709       string = skip_spaces (string);
1710 
1711       if (*string == '(')
1712 	break;
1713 
1714       /* Ignore ABI tags such as "[abi:cxx11].  */
1715       if (*string == '['
1716 	  && startswith (string + 1, "abi:")
1717 	  && string[5] != ':')
1718 	break;
1719 
1720       /* Ignore template parameter lists.  */
1721       if (string[0] == '<'
1722 	  && string[1] != '(' && string[1] != '<' && string[1] != '='
1723 	  && string[1] != ' ' && string[1] != '\0')
1724 	break;
1725 
1726       hash = SYMBOL_HASH_NEXT (hash, *string);
1727     }
1728   return hash;
1729 }
1730 
1731 /* Helper for cp_symbol_name_matches (i.e., symbol_name_matcher_ftype
1732    implementation for symbol_name_match_type::WILD matching).  Split
1733    to a separate function for unit-testing convenience.
1734 
1735    If SYMBOL_SEARCH_NAME has more scopes than LOOKUP_NAME, we try to
1736    match ignoring the extra leading scopes of SYMBOL_SEARCH_NAME.
1737    This allows conveniently setting breakpoints on functions/methods
1738    inside any namespace/class without specifying the fully-qualified
1739    name.
1740 
1741    E.g., these match:
1742 
1743     [symbol search name]   [lookup name]
1744     foo::bar::func         foo::bar::func
1745     foo::bar::func         bar::func
1746     foo::bar::func         func
1747 
1748    While these don't:
1749 
1750     [symbol search name]   [lookup name]
1751     foo::zbar::func        bar::func
1752     foo::bar::func         foo::func
1753 
1754    See more examples in the test_cp_symbol_name_matches selftest
1755    function below.
1756 
1757    See symbol_name_matcher_ftype for description of SYMBOL_SEARCH_NAME
1758    and COMP_MATCH_RES.
1759 
1760    LOOKUP_NAME/LOOKUP_NAME_LEN is the name we're looking up.
1761 
1762    See strncmp_iw_with_mode for description of MODE.
1763 */
1764 
1765 static bool
1766 cp_symbol_name_matches_1 (const char *symbol_search_name,
1767 			  const char *lookup_name,
1768 			  size_t lookup_name_len,
1769 			  strncmp_iw_mode mode,
1770 			  completion_match_result *comp_match_res)
1771 {
1772   const char *sname = symbol_search_name;
1773   completion_match_for_lcd *match_for_lcd
1774     = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
1775 
1776   while (true)
1777     {
1778       if (strncmp_iw_with_mode (sname, lookup_name, lookup_name_len,
1779 				mode, language_cplus, match_for_lcd, true) == 0)
1780 	{
1781 	  if (comp_match_res != NULL)
1782 	    {
1783 	      /* Note here we set different MATCH and MATCH_FOR_LCD
1784 		 strings.  This is because with
1785 
1786 		  (gdb) b push_bac[TAB]
1787 
1788 		 we want the completion matches to list
1789 
1790 		  std::vector<int>::push_back(...)
1791 		  std::vector<char>::push_back(...)
1792 
1793 		 etc., which are SYMBOL_SEARCH_NAMEs, while we want
1794 		 the input line to auto-complete to
1795 
1796 		  (gdb) push_back(...)
1797 
1798 		 which is SNAME, not to
1799 
1800 		  (gdb) std::vector<
1801 
1802 		 which would be the regular common prefix between all
1803 		 the matches otherwise.  */
1804 	      comp_match_res->set_match (symbol_search_name, sname);
1805 	    }
1806 	  return true;
1807 	}
1808 
1809       unsigned int len = cp_find_first_component (sname);
1810 
1811       if (sname[len] == '\0')
1812 	return false;
1813 
1814       gdb_assert (sname[len] == ':');
1815       /* Skip the '::'.  */
1816       sname += len + 2;
1817     }
1818 }
1819 
1820 /* C++ symbol_name_matcher_ftype implementation.  */
1821 
1822 static bool
1823 cp_fq_symbol_name_matches (const char *symbol_search_name,
1824 			   const lookup_name_info &lookup_name,
1825 			   completion_match_result *comp_match_res)
1826 {
1827   /* Get the demangled name.  */
1828   const std::string &name = lookup_name.cplus ().lookup_name ();
1829   completion_match_for_lcd *match_for_lcd
1830     = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
1831   strncmp_iw_mode mode = (lookup_name.completion_mode ()
1832 			  ? strncmp_iw_mode::NORMAL
1833 			  : strncmp_iw_mode::MATCH_PARAMS);
1834 
1835   if (strncmp_iw_with_mode (symbol_search_name,
1836 			    name.c_str (), name.size (),
1837 			    mode, language_cplus, match_for_lcd) == 0)
1838     {
1839       if (comp_match_res != NULL)
1840 	comp_match_res->set_match (symbol_search_name);
1841       return true;
1842     }
1843 
1844   return false;
1845 }
1846 
1847 /* C++ symbol_name_matcher_ftype implementation for wild matches.
1848    Defers work to cp_symbol_name_matches_1.  */
1849 
1850 static bool
1851 cp_symbol_name_matches (const char *symbol_search_name,
1852 			const lookup_name_info &lookup_name,
1853 			completion_match_result *comp_match_res)
1854 {
1855   /* Get the demangled name.  */
1856   const std::string &name = lookup_name.cplus ().lookup_name ();
1857 
1858   strncmp_iw_mode mode = (lookup_name.completion_mode ()
1859 			  ? strncmp_iw_mode::NORMAL
1860 			  : strncmp_iw_mode::MATCH_PARAMS);
1861 
1862   return cp_symbol_name_matches_1 (symbol_search_name,
1863 				   name.c_str (), name.size (),
1864 				   mode, comp_match_res);
1865 }
1866 
1867 /* See cp-support.h.  */
1868 
1869 symbol_name_matcher_ftype *
1870 cp_get_symbol_name_matcher (const lookup_name_info &lookup_name)
1871 {
1872   switch (lookup_name.match_type ())
1873     {
1874     case symbol_name_match_type::FULL:
1875     case symbol_name_match_type::EXPRESSION:
1876     case symbol_name_match_type::SEARCH_NAME:
1877       return cp_fq_symbol_name_matches;
1878     case symbol_name_match_type::WILD:
1879       return cp_symbol_name_matches;
1880     }
1881 
1882   gdb_assert_not_reached ("");
1883 }
1884 
1885 #if GDB_SELF_TEST
1886 
1887 namespace selftests {
1888 
1889 static void
1890 test_cp_symbol_name_matches ()
1891 {
1892 #define CHECK_MATCH(SYMBOL, INPUT)					\
1893   SELF_CHECK (cp_symbol_name_matches_1 (SYMBOL,				\
1894 					INPUT, sizeof (INPUT) - 1,	\
1895 					strncmp_iw_mode::MATCH_PARAMS,	\
1896 					NULL))
1897 
1898 #define CHECK_NOT_MATCH(SYMBOL, INPUT)					\
1899   SELF_CHECK (!cp_symbol_name_matches_1 (SYMBOL,			\
1900 					 INPUT, sizeof (INPUT) - 1,	\
1901 					 strncmp_iw_mode::MATCH_PARAMS,	\
1902 					 NULL))
1903 
1904   /* Like CHECK_MATCH, and also check that INPUT (and all substrings
1905      that start at index 0) completes to SYMBOL.  */
1906 #define CHECK_MATCH_C(SYMBOL, INPUT)					\
1907   do									\
1908     {									\
1909       CHECK_MATCH (SYMBOL, INPUT);					\
1910       for (size_t i = 0; i < sizeof (INPUT) - 1; i++)			\
1911 	SELF_CHECK (cp_symbol_name_matches_1 (SYMBOL, INPUT, i,		\
1912 					      strncmp_iw_mode::NORMAL,	\
1913 					      NULL));			\
1914     } while (0)
1915 
1916   /* Like CHECK_NOT_MATCH, and also check that INPUT does NOT complete
1917      to SYMBOL.  */
1918 #define CHECK_NOT_MATCH_C(SYMBOL, INPUT)				\
1919   do									\
1920     { 									\
1921       CHECK_NOT_MATCH (SYMBOL, INPUT);					\
1922       SELF_CHECK (!cp_symbol_name_matches_1 (SYMBOL, INPUT,		\
1923 					     sizeof (INPUT) - 1,	\
1924 					     strncmp_iw_mode::NORMAL,	\
1925 					     NULL));			\
1926     } while (0)
1927 
1928   /* Lookup name without parens matches all overloads.  */
1929   CHECK_MATCH_C ("function()", "function");
1930   CHECK_MATCH_C ("function(int)", "function");
1931 
1932   /* Check whitespace around parameters is ignored.  */
1933   CHECK_MATCH_C ("function()", "function ()");
1934   CHECK_MATCH_C ("function ( )", "function()");
1935   CHECK_MATCH_C ("function ()", "function( )");
1936   CHECK_MATCH_C ("func(int)", "func( int )");
1937   CHECK_MATCH_C ("func(int)", "func ( int ) ");
1938   CHECK_MATCH_C ("func ( int )", "func( int )");
1939   CHECK_MATCH_C ("func ( int )", "func ( int ) ");
1940 
1941   /* Check symbol name prefixes aren't incorrectly matched.  */
1942   CHECK_NOT_MATCH ("func", "function");
1943   CHECK_NOT_MATCH ("function", "func");
1944   CHECK_NOT_MATCH ("function()", "func");
1945 
1946   /* Check that if the lookup name includes parameters, only the right
1947      overload matches.  */
1948   CHECK_MATCH_C ("function(int)", "function(int)");
1949   CHECK_NOT_MATCH_C ("function(int)", "function()");
1950 
1951   /* Check that whitespace within symbol names is not ignored.  */
1952   CHECK_NOT_MATCH_C ("function", "func tion");
1953   CHECK_NOT_MATCH_C ("func__tion", "func_ _tion");
1954   CHECK_NOT_MATCH_C ("func11tion", "func1 1tion");
1955 
1956   /* Check the converse, which can happen with template function,
1957      where the return type is part of the demangled name.  */
1958   CHECK_NOT_MATCH_C ("func tion", "function");
1959   CHECK_NOT_MATCH_C ("func1 1tion", "func11tion");
1960   CHECK_NOT_MATCH_C ("func_ _tion", "func__tion");
1961 
1962   /* Within parameters too.  */
1963   CHECK_NOT_MATCH_C ("func(param)", "func(par am)");
1964 
1965   /* Check handling of whitespace around C++ operators.  */
1966   CHECK_NOT_MATCH_C ("operator<<", "opera tor<<");
1967   CHECK_NOT_MATCH_C ("operator<<", "operator< <");
1968   CHECK_NOT_MATCH_C ("operator<<", "operator < <");
1969   CHECK_NOT_MATCH_C ("operator==", "operator= =");
1970   CHECK_NOT_MATCH_C ("operator==", "operator = =");
1971   CHECK_MATCH_C ("operator<<", "operator <<");
1972   CHECK_MATCH_C ("operator<<()", "operator <<");
1973   CHECK_NOT_MATCH_C ("operator<<()", "operator<<(int)");
1974   CHECK_NOT_MATCH_C ("operator<<(int)", "operator<<()");
1975   CHECK_MATCH_C ("operator==", "operator ==");
1976   CHECK_MATCH_C ("operator==()", "operator ==");
1977   CHECK_MATCH_C ("operator <<", "operator<<");
1978   CHECK_MATCH_C ("operator ==", "operator==");
1979   CHECK_MATCH_C ("operator bool", "operator  bool");
1980   CHECK_MATCH_C ("operator bool ()", "operator  bool");
1981   CHECK_MATCH_C ("operatorX<<", "operatorX < <");
1982   CHECK_MATCH_C ("Xoperator<<", "Xoperator < <");
1983 
1984   CHECK_MATCH_C ("operator()(int)", "operator()(int)");
1985   CHECK_MATCH_C ("operator()(int)", "operator ( ) ( int )");
1986   CHECK_MATCH_C ("operator()<long>(int)", "operator ( ) < long > ( int )");
1987   /* The first "()" is not the parameter list.  */
1988   CHECK_NOT_MATCH ("operator()(int)", "operator");
1989 
1990   /* Misc user-defined operator tests.  */
1991 
1992   CHECK_NOT_MATCH_C ("operator/=()", "operator ^=");
1993   /* Same length at end of input.  */
1994   CHECK_NOT_MATCH_C ("operator>>", "operator[]");
1995   /* Same length but not at end of input.  */
1996   CHECK_NOT_MATCH_C ("operator>>()", "operator[]()");
1997 
1998   CHECK_MATCH_C ("base::operator char*()", "base::operator char*()");
1999   CHECK_MATCH_C ("base::operator char*()", "base::operator char * ()");
2000   CHECK_MATCH_C ("base::operator char**()", "base::operator char * * ()");
2001   CHECK_MATCH ("base::operator char**()", "base::operator char * *");
2002   CHECK_MATCH_C ("base::operator*()", "base::operator*()");
2003   CHECK_NOT_MATCH_C ("base::operator char*()", "base::operatorc");
2004   CHECK_NOT_MATCH ("base::operator char*()", "base::operator char");
2005   CHECK_NOT_MATCH ("base::operator char*()", "base::operat");
2006 
2007   /* Check handling of whitespace around C++ scope operators.  */
2008   CHECK_NOT_MATCH_C ("foo::bar", "foo: :bar");
2009   CHECK_MATCH_C ("foo::bar", "foo :: bar");
2010   CHECK_MATCH_C ("foo :: bar", "foo::bar");
2011 
2012   CHECK_MATCH_C ("abc::def::ghi()", "abc::def::ghi()");
2013   CHECK_MATCH_C ("abc::def::ghi ( )", "abc::def::ghi()");
2014   CHECK_MATCH_C ("abc::def::ghi()", "abc::def::ghi ( )");
2015   CHECK_MATCH_C ("function()", "function()");
2016   CHECK_MATCH_C ("bar::function()", "bar::function()");
2017 
2018   /* Wild matching tests follow.  */
2019 
2020   /* Tests matching symbols in some scope.  */
2021   CHECK_MATCH_C ("foo::function()", "function");
2022   CHECK_MATCH_C ("foo::function(int)", "function");
2023   CHECK_MATCH_C ("foo::bar::function()", "function");
2024   CHECK_MATCH_C ("bar::function()", "bar::function");
2025   CHECK_MATCH_C ("foo::bar::function()", "bar::function");
2026   CHECK_MATCH_C ("foo::bar::function(int)", "bar::function");
2027 
2028   /* Same, with parameters in the lookup name.  */
2029   CHECK_MATCH_C ("foo::function()", "function()");
2030   CHECK_MATCH_C ("foo::bar::function()", "function()");
2031   CHECK_MATCH_C ("foo::function(int)", "function(int)");
2032   CHECK_MATCH_C ("foo::function()", "foo::function()");
2033   CHECK_MATCH_C ("foo::bar::function()", "bar::function()");
2034   CHECK_MATCH_C ("foo::bar::function(int)", "bar::function(int)");
2035   CHECK_MATCH_C ("bar::function()", "bar::function()");
2036 
2037   CHECK_NOT_MATCH_C ("foo::bar::function(int)", "bar::function()");
2038 
2039   CHECK_MATCH_C ("(anonymous namespace)::bar::function(int)",
2040 		 "bar::function(int)");
2041   CHECK_MATCH_C ("foo::(anonymous namespace)::bar::function(int)",
2042 		 "function(int)");
2043 
2044   /* Lookup scope wider than symbol scope, should not match.  */
2045   CHECK_NOT_MATCH_C ("function()", "bar::function");
2046   CHECK_NOT_MATCH_C ("function()", "bar::function()");
2047 
2048   /* Explicit global scope doesn't match.  */
2049   CHECK_NOT_MATCH_C ("foo::function()", "::function");
2050   CHECK_NOT_MATCH_C ("foo::function()", "::function()");
2051   CHECK_NOT_MATCH_C ("foo::function(int)", "::function()");
2052   CHECK_NOT_MATCH_C ("foo::function(int)", "::function(int)");
2053 
2054   /* Test ABI tag matching/ignoring.  */
2055 
2056   /* If the symbol name has an ABI tag, but the lookup name doesn't,
2057      then the ABI tag in the symbol name is ignored.  */
2058   CHECK_MATCH_C ("function[abi:foo]()", "function");
2059   CHECK_MATCH_C ("function[abi:foo](int)", "function");
2060   CHECK_MATCH_C ("function[abi:foo]()", "function ()");
2061   CHECK_NOT_MATCH_C ("function[abi:foo]()", "function (int)");
2062 
2063   CHECK_MATCH_C ("function[abi:foo]()", "function[abi:foo]");
2064   CHECK_MATCH_C ("function[abi:foo](int)", "function[abi:foo]");
2065   CHECK_MATCH_C ("function[abi:foo]()", "function[abi:foo] ()");
2066   CHECK_MATCH_C ("function[abi:foo][abi:bar]()", "function");
2067   CHECK_MATCH_C ("function[abi:foo][abi:bar](int)", "function");
2068   CHECK_MATCH_C ("function[abi:foo][abi:bar]()", "function[abi:foo]");
2069   CHECK_MATCH_C ("function[abi:foo][abi:bar](int)", "function[abi:foo]");
2070   CHECK_MATCH_C ("function[abi:foo][abi:bar]()", "function[abi:foo] ()");
2071   CHECK_NOT_MATCH_C ("function[abi:foo][abi:bar]()", "function[abi:foo] (int)");
2072 
2073   CHECK_MATCH_C ("function  [abi:foo][abi:bar] ( )", "function [abi:foo]");
2074 
2075   /* If the symbol name does not have an ABI tag, while the lookup
2076      name has one, then there's no match.  */
2077   CHECK_NOT_MATCH_C ("function()", "function[abi:foo]()");
2078   CHECK_NOT_MATCH_C ("function()", "function[abi:foo]");
2079 }
2080 
2081 /* If non-NULL, return STR wrapped in quotes.  Otherwise, return a
2082    "<null>" string (with no quotes).  */
2083 
2084 static std::string
2085 quote (const char *str)
2086 {
2087   if (str != NULL)
2088     return std::string (1, '"') + str + '"';
2089   else
2090     return "<null>";
2091 }
2092 
2093 /* Check that removing parameter info out of NAME produces EXPECTED.
2094    COMPLETION_MODE indicates whether we're testing normal and
2095    completion mode.  FILE and LINE are used to provide better test
2096    location information in case ithe check fails.  */
2097 
2098 static void
2099 check_remove_params (const char *file, int line,
2100 		      const char *name, const char *expected,
2101 		      bool completion_mode)
2102 {
2103   gdb::unique_xmalloc_ptr<char> result
2104     = cp_remove_params_if_any (name, completion_mode);
2105 
2106   if ((expected == NULL) != (result == NULL)
2107       || (expected != NULL
2108 	  && strcmp (result.get (), expected) != 0))
2109     {
2110       error (_("%s:%d: make-paramless self-test failed: (completion=%d) "
2111 	       "\"%s\" -> %s, expected %s"),
2112 	     file, line, completion_mode, name,
2113 	     quote (result.get ()).c_str (), quote (expected).c_str ());
2114     }
2115 }
2116 
2117 /* Entry point for cp_remove_params unit tests.  */
2118 
2119 static void
2120 test_cp_remove_params ()
2121 {
2122   /* Check that removing parameter info out of NAME produces EXPECTED.
2123      Checks both normal and completion modes.  */
2124 #define CHECK(NAME, EXPECTED)						\
2125   do									\
2126     {									\
2127       check_remove_params (__FILE__, __LINE__, NAME, EXPECTED, false);	\
2128       check_remove_params (__FILE__, __LINE__, NAME, EXPECTED, true);	\
2129     }									\
2130   while (0)
2131 
2132   /* Similar, but used when NAME is incomplete -- i.e., is has
2133      unbalanced parentheses.  In this case, looking for the exact name
2134      should fail / return empty.  */
2135 #define CHECK_INCOMPL(NAME, EXPECTED)					\
2136   do									\
2137     {									\
2138       check_remove_params (__FILE__, __LINE__, NAME, NULL, false);	\
2139       check_remove_params (__FILE__, __LINE__, NAME, EXPECTED, true);	\
2140     }									\
2141   while (0)
2142 
2143   CHECK ("function()", "function");
2144   CHECK_INCOMPL ("function(", "function");
2145   CHECK ("function() const", "function");
2146 
2147   CHECK ("(anonymous namespace)::A::B::C",
2148 	 "(anonymous namespace)::A::B::C");
2149 
2150   CHECK ("A::(anonymous namespace)",
2151 	 "A::(anonymous namespace)");
2152 
2153   CHECK_INCOMPL ("A::(anonymou", "A");
2154 
2155   CHECK ("A::foo<int>()",
2156 	 "A::foo<int>");
2157 
2158   CHECK_INCOMPL ("A::foo<int>(",
2159 		 "A::foo<int>");
2160 
2161   CHECK ("A::foo<(anonymous namespace)::B>::func(int)",
2162 	 "A::foo<(anonymous namespace)::B>::func");
2163 
2164   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B>::func(in",
2165 		 "A::foo<(anonymous namespace)::B>::func");
2166 
2167   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B>::",
2168 		 "A::foo<(anonymous namespace)::B>");
2169 
2170   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B>:",
2171 		 "A::foo<(anonymous namespace)::B>");
2172 
2173   CHECK ("A::foo<(anonymous namespace)::B>",
2174 	 "A::foo<(anonymous namespace)::B>");
2175 
2176   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B",
2177 		 "A::foo");
2178 
2179   /* Shouldn't this parse?  Looks like a bug in
2180      cp_demangled_name_to_comp.  See PR c++/22411.  */
2181 #if 0
2182   CHECK ("A::foo<void(int)>::func(int)",
2183 	 "A::foo<void(int)>::func");
2184 #else
2185   CHECK_INCOMPL ("A::foo<void(int)>::func(int)",
2186 		 "A::foo");
2187 #endif
2188 
2189   CHECK_INCOMPL ("A::foo<void(int",
2190 		 "A::foo");
2191 
2192 #undef CHECK
2193 #undef CHECK_INCOMPL
2194 }
2195 
2196 } // namespace selftests
2197 
2198 #endif /* GDB_SELF_CHECK */
2199 
2200 /* This is a front end for cp_find_first_component, for unit testing.
2201    Be careful when using it: see the NOTE above
2202    cp_find_first_component.  */
2203 
2204 static void
2205 first_component_command (const char *arg, int from_tty)
2206 {
2207   int len;
2208   char *prefix;
2209 
2210   if (!arg)
2211     return;
2212 
2213   len = cp_find_first_component (arg);
2214   prefix = (char *) alloca (len + 1);
2215 
2216   memcpy (prefix, arg, len);
2217   prefix[len] = '\0';
2218 
2219   gdb_printf ("%s\n", prefix);
2220 }
2221 
2222 /* Implement "info vtbl".  */
2223 
2224 static void
2225 info_vtbl_command (const char *arg, int from_tty)
2226 {
2227   struct value *value;
2228 
2229   value = parse_and_eval (arg);
2230   cplus_print_vtable (value);
2231 }
2232 
2233 /* See description in cp-support.h.  */
2234 
2235 const char *
2236 find_toplevel_char (const char *s, char c)
2237 {
2238   int quoted = 0;		/* zero if we're not in quotes;
2239 				   '"' if we're in a double-quoted string;
2240 				   '\'' if we're in a single-quoted string.  */
2241   int depth = 0;		/* Number of unclosed parens we've seen.  */
2242   const char *scan;
2243 
2244   for (scan = s; *scan; scan++)
2245     {
2246       if (quoted)
2247 	{
2248 	  if (*scan == quoted)
2249 	    quoted = 0;
2250 	  else if (*scan == '\\' && *(scan + 1))
2251 	    scan++;
2252 	}
2253       else if (*scan == c && ! quoted && depth == 0)
2254 	return scan;
2255       else if (*scan == '"' || *scan == '\'')
2256 	quoted = *scan;
2257       else if (*scan == '(' || *scan == '<')
2258 	depth++;
2259       else if ((*scan == ')' || *scan == '>') && depth > 0)
2260 	depth--;
2261       else if (*scan == 'o' && !quoted && depth == 0)
2262 	{
2263 	  /* Handle C++ operator names.  */
2264 	  if (strncmp (scan, CP_OPERATOR_STR, CP_OPERATOR_LEN) == 0)
2265 	    {
2266 	      scan += CP_OPERATOR_LEN;
2267 	      if (*scan == c)
2268 		return scan;
2269 	      while (ISSPACE (*scan))
2270 		{
2271 		  ++scan;
2272 		  if (*scan == c)
2273 		    return scan;
2274 		}
2275 	      if (*scan == '\0')
2276 		break;
2277 
2278 	      switch (*scan)
2279 		{
2280 		  /* Skip over one less than the appropriate number of
2281 		     characters: the for loop will skip over the last
2282 		     one.  */
2283 		case '<':
2284 		  if (scan[1] == '<')
2285 		    {
2286 		      scan++;
2287 		      if (*scan == c)
2288 			return scan;
2289 		    }
2290 		  break;
2291 		case '>':
2292 		  if (scan[1] == '>')
2293 		    {
2294 		      scan++;
2295 		      if (*scan == c)
2296 			return scan;
2297 		    }
2298 		  break;
2299 		}
2300 	    }
2301 	}
2302     }
2303 
2304   return 0;
2305 }
2306 
2307 void _initialize_cp_support ();
2308 void
2309 _initialize_cp_support ()
2310 {
2311   cmd_list_element *maintenance_cplus
2312     = add_basic_prefix_cmd ("cplus", class_maintenance,
2313 			    _("C++ maintenance commands."),
2314 			    &maint_cplus_cmd_list,
2315 			    0, &maintenancelist);
2316   add_alias_cmd ("cp", maintenance_cplus, class_maintenance, 1,
2317 		 &maintenancelist);
2318 
2319   add_cmd ("first_component",
2320 	   class_maintenance,
2321 	   first_component_command,
2322 	   _("Print the first class/namespace component of NAME."),
2323 	   &maint_cplus_cmd_list);
2324 
2325   add_info ("vtbl", info_vtbl_command,
2326 	    _("Show the virtual function table for a C++ object.\n\
2327 Usage: info vtbl EXPRESSION\n\
2328 Evaluate EXPRESSION and display the virtual function table for the\n\
2329 resulting object."));
2330 
2331 #ifdef HAVE_WORKING_FORK
2332   add_setshow_boolean_cmd ("catch-demangler-crashes", class_maintenance,
2333 			   &catch_demangler_crashes, _("\
2334 Set whether to attempt to catch demangler crashes."), _("\
2335 Show whether to attempt to catch demangler crashes."), _("\
2336 If enabled GDB will attempt to catch demangler crashes and\n\
2337 display the offending symbol."),
2338 			   NULL,
2339 			   NULL,
2340 			   &maintenance_set_cmdlist,
2341 			   &maintenance_show_cmdlist);
2342 
2343   gdb_demangle_attempt_core_dump = can_dump_core (LIMIT_CUR);
2344 #endif
2345 
2346 #if GDB_SELF_TEST
2347   selftests::register_test ("cp_symbol_name_matches",
2348 			    selftests::test_cp_symbol_name_matches);
2349   selftests::register_test ("cp_remove_params",
2350 			    selftests::test_cp_remove_params);
2351 #endif
2352 }
2353