Home | History | Annotate | Line # | Download | only in gdb
cp-support.c revision 1.1.1.8
      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