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