]> Git Repo - binutils.git/blob - gdb/cp-support.c
gdb, gdbserver, gdbsupport: fix leading space vs tabs issues
[binutils.git] / gdb / cp-support.c
1 /* Helper routines for C++ support in GDB.
2    Copyright (C) 2002-2020 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
45 #define d_left(dc) (dc)->u.s_binary.left
46 #define d_right(dc) (dc)->u.s_binary.right
47
48 /* Functions related to demangled name parsing.  */
49
50 static unsigned int cp_find_first_component_aux (const char *name,
51                                                  int permissive);
52
53 static void demangled_name_complaint (const char *name);
54
55 /* Functions related to overload resolution.  */
56
57 static void overload_list_add_symbol (struct symbol *sym,
58                                       const char *oload_name,
59                                       std::vector<symbol *> *overload_list);
60
61 static void add_symbol_overload_list_using
62   (const char *func_name, const char *the_namespace,
63    std::vector<symbol *> *overload_list);
64
65 static void add_symbol_overload_list_qualified
66   (const char *func_name,
67    std::vector<symbol *> *overload_list);
68
69 /* The list of "maint cplus" commands.  */
70
71 struct cmd_list_element *maint_cplus_cmd_list = NULL;
72
73 /* A list of typedefs which should not be substituted by replace_typedefs.  */
74 static const char * const ignore_typedefs[] =
75   {
76     "std::istream", "std::iostream", "std::ostream", "std::string"
77   };
78
79 static void
80   replace_typedefs (struct demangle_parse_info *info,
81                     struct demangle_component *ret_comp,
82                     canonicalization_ftype *finder,
83                     void *data);
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   /* Ignore any typedefs that should not be substituted.  */
150   for (int i = 0; i < ARRAY_SIZE (ignore_typedefs); ++i)
151     {
152       if (strcmp (name, ignore_typedefs[i]) == 0)
153         return 0;
154     }
155
156   sym = NULL;
157
158   try
159     {
160       sym = lookup_symbol (name, 0, VAR_DOMAIN, 0).symbol;
161     }
162   catch (const gdb_exception &except)
163     {
164       return 0;
165     }
166
167   if (sym != NULL)
168     {
169       struct type *otype = SYMBOL_TYPE (sym);
170
171       if (finder != NULL)
172         {
173           const char *new_name = (*finder) (otype, data);
174
175           if (new_name != NULL)
176             {
177               ret_comp->u.s_name.s = new_name;
178               ret_comp->u.s_name.len = strlen (new_name);
179               return 1;
180             }
181
182           return 0;
183         }
184
185       /* If the type is a typedef or namespace alias, replace it.  */
186       if (otype->code () == TYPE_CODE_TYPEDEF
187           || otype->code () == TYPE_CODE_NAMESPACE)
188         {
189           long len;
190           int is_anon;
191           struct type *type;
192           std::unique_ptr<demangle_parse_info> i;
193
194           /* Get the real type of the typedef.  */
195           type = check_typedef (otype);
196
197           /* If the symbol name is the same as the original type name,
198              don't substitute.  That would cause infinite recursion in
199              symbol lookups, as the typedef symbol is often the first
200              found symbol in the symbol table.
201
202              However, this can happen in a number of situations, such as:
203
204              If the symbol is a namespace and its type name is no different
205              than the name we looked up, this symbol is not a namespace
206              alias and does not need to be substituted.
207
208              If the symbol is typedef and its type name is the same
209              as the symbol's name, e.g., "typedef struct foo foo;".  */
210           if (type->name () != nullptr
211               && strcmp (type->name (), name) == 0)
212             return 0;
213
214           is_anon = (type->name () == NULL
215                      && (type->code () == TYPE_CODE_ENUM
216                          || type->code () == TYPE_CODE_STRUCT
217                          || type->code () == TYPE_CODE_UNION));
218           if (is_anon)
219             {
220               struct type *last = otype;
221
222               /* Find the last typedef for the type.  */
223               while (TYPE_TARGET_TYPE (last) != NULL
224                      && (TYPE_TARGET_TYPE (last)->code ()
225                          == TYPE_CODE_TYPEDEF))
226                 last = TYPE_TARGET_TYPE (last);
227
228               /* If there is only one typedef for this anonymous type,
229                  do not substitute it.  */
230               if (type == otype)
231                 return 0;
232               else
233                 /* Use the last typedef seen as the type for this
234                    anonymous type.  */
235                 type = last;
236             }
237
238           string_file buf;
239           try
240             {
241               type_print (type, "", &buf, -1);
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, i.get ());
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                                        VAR_DOMAIN, 0).symbol;
508                 }
509               catch (const gdb_exception &except)
510                 {
511                 }
512
513               if (sym != NULL)
514                 {
515                   struct type *otype = SYMBOL_TYPE (sym);
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           /* Fall through */
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, char **demangled_p)
665 {
666   char *demangled_name;
667
668   /* If it looks like a v3 mangled name, then try to go directly
669      to trees.  */
670   if (mangled_name[0] == '_' && mangled_name[1] == 'Z')
671     {
672       struct demangle_component *ret;
673
674       ret = cplus_demangle_v3_components (mangled_name,
675                                           options, memory);
676       if (ret)
677         {
678           std::unique_ptr<demangle_parse_info> info (new demangle_parse_info);
679           info->tree = ret;
680           *demangled_p = NULL;
681           return info;
682         }
683     }
684
685   /* If it doesn't, or if that failed, then try to demangle the
686      name.  */
687   demangled_name = gdb_demangle (mangled_name, 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, NULL);
695
696   if (info == NULL)
697     {
698       xfree (demangled_name);
699       return NULL;
700     }
701
702   *demangled_p = demangled_name;
703   return info;
704 }
705
706 /* Return the name of the class containing method PHYSNAME.  */
707
708 char *
709 cp_class_name_from_physname (const char *physname)
710 {
711   void *storage = NULL;
712   char *demangled_name = NULL;
713   gdb::unique_xmalloc_ptr<char> ret;
714   struct demangle_component *ret_comp, *prev_comp, *cur_comp;
715   std::unique_ptr<demangle_parse_info> info;
716   int done;
717
718   info = mangled_name_to_comp (physname, DMGL_ANSI,
719                                &storage, &demangled_name);
720   if (info == NULL)
721     return NULL;
722
723   done = 0;
724   ret_comp = info->tree;
725
726   /* First strip off any qualifiers, if we have a function or
727      method.  */
728   while (!done)
729     switch (ret_comp->type)
730       {
731       case DEMANGLE_COMPONENT_CONST:
732       case DEMANGLE_COMPONENT_RESTRICT:
733       case DEMANGLE_COMPONENT_VOLATILE:
734       case DEMANGLE_COMPONENT_CONST_THIS:
735       case DEMANGLE_COMPONENT_RESTRICT_THIS:
736       case DEMANGLE_COMPONENT_VOLATILE_THIS:
737       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
738         ret_comp = d_left (ret_comp);
739         break;
740       default:
741         done = 1;
742         break;
743       }
744
745   /* If what we have now is a function, discard the argument list.  */
746   if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
747     ret_comp = d_left (ret_comp);
748
749   /* If what we have now is a template, strip off the template
750      arguments.  The left subtree may be a qualified name.  */
751   if (ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE)
752     ret_comp = d_left (ret_comp);
753
754   /* What we have now should be a name, possibly qualified.
755      Additional qualifiers could live in the left subtree or the right
756      subtree.  Find the last piece.  */
757   done = 0;
758   prev_comp = NULL;
759   cur_comp = ret_comp;
760   while (!done)
761     switch (cur_comp->type)
762       {
763       case DEMANGLE_COMPONENT_QUAL_NAME:
764       case DEMANGLE_COMPONENT_LOCAL_NAME:
765         prev_comp = cur_comp;
766         cur_comp = d_right (cur_comp);
767         break;
768       case DEMANGLE_COMPONENT_TEMPLATE:
769       case DEMANGLE_COMPONENT_NAME:
770       case DEMANGLE_COMPONENT_CTOR:
771       case DEMANGLE_COMPONENT_DTOR:
772       case DEMANGLE_COMPONENT_OPERATOR:
773       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
774         done = 1;
775         break;
776       default:
777         done = 1;
778         cur_comp = NULL;
779         break;
780       }
781
782   if (cur_comp != NULL && prev_comp != NULL)
783     {
784       /* We want to discard the rightmost child of PREV_COMP.  */
785       *prev_comp = *d_left (prev_comp);
786       /* The ten is completely arbitrary; we don't have a good
787          estimate.  */
788       ret = cp_comp_to_string (ret_comp, 10);
789     }
790
791   xfree (storage);
792   xfree (demangled_name);
793   return ret.release ();
794 }
795
796 /* Return the child of COMP which is the basename of a method,
797    variable, et cetera.  All scope qualifiers are discarded, but
798    template arguments will be included.  The component tree may be
799    modified.  */
800
801 static struct demangle_component *
802 unqualified_name_from_comp (struct demangle_component *comp)
803 {
804   struct demangle_component *ret_comp = comp, *last_template;
805   int done;
806
807   done = 0;
808   last_template = NULL;
809   while (!done)
810     switch (ret_comp->type)
811       {
812       case DEMANGLE_COMPONENT_QUAL_NAME:
813       case DEMANGLE_COMPONENT_LOCAL_NAME:
814         ret_comp = d_right (ret_comp);
815         break;
816       case DEMANGLE_COMPONENT_TYPED_NAME:
817         ret_comp = d_left (ret_comp);
818         break;
819       case DEMANGLE_COMPONENT_TEMPLATE:
820         gdb_assert (last_template == NULL);
821         last_template = ret_comp;
822         ret_comp = d_left (ret_comp);
823         break;
824       case DEMANGLE_COMPONENT_CONST:
825       case DEMANGLE_COMPONENT_RESTRICT:
826       case DEMANGLE_COMPONENT_VOLATILE:
827       case DEMANGLE_COMPONENT_CONST_THIS:
828       case DEMANGLE_COMPONENT_RESTRICT_THIS:
829       case DEMANGLE_COMPONENT_VOLATILE_THIS:
830       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
831         ret_comp = d_left (ret_comp);
832         break;
833       case DEMANGLE_COMPONENT_NAME:
834       case DEMANGLE_COMPONENT_CTOR:
835       case DEMANGLE_COMPONENT_DTOR:
836       case DEMANGLE_COMPONENT_OPERATOR:
837       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
838         done = 1;
839         break;
840       default:
841         return NULL;
842         break;
843       }
844
845   if (last_template)
846     {
847       d_left (last_template) = ret_comp;
848       return last_template;
849     }
850
851   return ret_comp;
852 }
853
854 /* Return the name of the method whose linkage name is PHYSNAME.  */
855
856 char *
857 method_name_from_physname (const char *physname)
858 {
859   void *storage = NULL;
860   char *demangled_name = NULL;
861   gdb::unique_xmalloc_ptr<char> ret;
862   struct demangle_component *ret_comp;
863   std::unique_ptr<demangle_parse_info> info;
864
865   info = mangled_name_to_comp (physname, DMGL_ANSI,
866                                &storage, &demangled_name);
867   if (info == NULL)
868     return NULL;
869
870   ret_comp = unqualified_name_from_comp (info->tree);
871
872   if (ret_comp != NULL)
873     /* The ten is completely arbitrary; we don't have a good
874        estimate.  */
875     ret = cp_comp_to_string (ret_comp, 10);
876
877   xfree (storage);
878   xfree (demangled_name);
879   return ret.release ();
880 }
881
882 /* If FULL_NAME is the demangled name of a C++ function (including an
883    arg list, possibly including namespace/class qualifications),
884    return a new string containing only the function name (without the
885    arg list/class qualifications).  Otherwise, return NULL.  */
886
887 gdb::unique_xmalloc_ptr<char>
888 cp_func_name (const char *full_name)
889 {
890   gdb::unique_xmalloc_ptr<char> ret;
891   struct demangle_component *ret_comp;
892   std::unique_ptr<demangle_parse_info> info;
893
894   info = cp_demangled_name_to_comp (full_name, NULL);
895   if (!info)
896     return nullptr;
897
898   ret_comp = unqualified_name_from_comp (info->tree);
899
900   if (ret_comp != NULL)
901     ret = cp_comp_to_string (ret_comp, 10);
902
903   return ret;
904 }
905
906 /* Helper for cp_remove_params.  DEMANGLED_NAME is the name of a
907    function, including parameters and (optionally) a return type.
908    Return the name of the function without parameters or return type,
909    or NULL if we can not parse the name.  If REQUIRE_PARAMS is false,
910    then tolerate a non-existing or unbalanced parameter list.  */
911
912 static gdb::unique_xmalloc_ptr<char>
913 cp_remove_params_1 (const char *demangled_name, bool require_params)
914 {
915   bool done = false;
916   struct demangle_component *ret_comp;
917   std::unique_ptr<demangle_parse_info> info;
918   gdb::unique_xmalloc_ptr<char> ret;
919
920   if (demangled_name == NULL)
921     return NULL;
922
923   info = cp_demangled_name_to_comp (demangled_name, NULL);
924   if (info == NULL)
925     return NULL;
926
927   /* First strip off any qualifiers, if we have a function or method.  */
928   ret_comp = info->tree;
929   while (!done)
930     switch (ret_comp->type)
931       {
932       case DEMANGLE_COMPONENT_CONST:
933       case DEMANGLE_COMPONENT_RESTRICT:
934       case DEMANGLE_COMPONENT_VOLATILE:
935       case DEMANGLE_COMPONENT_CONST_THIS:
936       case DEMANGLE_COMPONENT_RESTRICT_THIS:
937       case DEMANGLE_COMPONENT_VOLATILE_THIS:
938       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
939         ret_comp = d_left (ret_comp);
940         break;
941       default:
942         done = true;
943         break;
944       }
945
946   /* What we have now should be a function.  Return its name.  */
947   if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
948     ret = cp_comp_to_string (d_left (ret_comp), 10);
949   else if (!require_params
950            && (ret_comp->type == DEMANGLE_COMPONENT_NAME
951                || ret_comp->type == DEMANGLE_COMPONENT_QUAL_NAME
952                || ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE))
953     ret = cp_comp_to_string (ret_comp, 10);
954
955   return ret;
956 }
957
958 /* DEMANGLED_NAME is the name of a function, including parameters and
959    (optionally) a return type.  Return the name of the function
960    without parameters or return type, or NULL if we can not parse the
961    name.  */
962
963 gdb::unique_xmalloc_ptr<char>
964 cp_remove_params (const char *demangled_name)
965 {
966   return cp_remove_params_1 (demangled_name, true);
967 }
968
969 /* See cp-support.h.  */
970
971 gdb::unique_xmalloc_ptr<char>
972 cp_remove_params_if_any (const char *demangled_name, bool completion_mode)
973 {
974   /* Trying to remove parameters from the empty string fails.  If
975      we're completing / matching everything, avoid returning NULL
976      which would make callers interpret the result as an error.  */
977   if (demangled_name[0] == '\0' && completion_mode)
978     return make_unique_xstrdup ("");
979
980   gdb::unique_xmalloc_ptr<char> without_params
981     = cp_remove_params_1 (demangled_name, false);
982
983   if (without_params == NULL && completion_mode)
984     {
985       std::string copy = demangled_name;
986
987       while (!copy.empty ())
988         {
989           copy.pop_back ();
990           without_params = cp_remove_params_1 (copy.c_str (), false);
991           if (without_params != NULL)
992             break;
993         }
994     }
995
996   return without_params;
997 }
998
999 /* Here are some random pieces of trivia to keep in mind while trying
1000    to take apart demangled names:
1001
1002    - Names can contain function arguments or templates, so the process
1003      has to be, to some extent recursive: maybe keep track of your
1004      depth based on encountering <> and ().
1005
1006    - Parentheses don't just have to happen at the end of a name: they
1007      can occur even if the name in question isn't a function, because
1008      a template argument might be a type that's a function.
1009
1010    - Conversely, even if you're trying to deal with a function, its
1011      demangled name might not end with ')': it could be a const or
1012      volatile class method, in which case it ends with "const" or
1013      "volatile".
1014
1015    - Parentheses are also used in anonymous namespaces: a variable
1016      'foo' in an anonymous namespace gets demangled as "(anonymous
1017      namespace)::foo".
1018
1019    - And operator names can contain parentheses or angle brackets.  */
1020
1021 /* FIXME: carlton/2003-03-13: We have several functions here with
1022    overlapping functionality; can we combine them?  Also, do they
1023    handle all the above considerations correctly?  */
1024
1025
1026 /* This returns the length of first component of NAME, which should be
1027    the demangled name of a C++ variable/function/method/etc.
1028    Specifically, it returns the index of the first colon forming the
1029    boundary of the first component: so, given 'A::foo' or 'A::B::foo'
1030    it returns the 1, and given 'foo', it returns 0.  */
1031
1032 /* The character in NAME indexed by the return value is guaranteed to
1033    always be either ':' or '\0'.  */
1034
1035 /* NOTE: carlton/2003-03-13: This function is currently only intended
1036    for internal use: it's probably not entirely safe when called on
1037    user-generated input, because some of the 'index += 2' lines in
1038    cp_find_first_component_aux might go past the end of malformed
1039    input.  */
1040
1041 unsigned int
1042 cp_find_first_component (const char *name)
1043 {
1044   return cp_find_first_component_aux (name, 0);
1045 }
1046
1047 /* Helper function for cp_find_first_component.  Like that function,
1048    it returns the length of the first component of NAME, but to make
1049    the recursion easier, it also stops if it reaches an unexpected ')'
1050    or '>' if the value of PERMISSIVE is nonzero.  */
1051
1052 static unsigned int
1053 cp_find_first_component_aux (const char *name, int permissive)
1054 {
1055   unsigned int index = 0;
1056   /* Operator names can show up in unexpected places.  Since these can
1057      contain parentheses or angle brackets, they can screw up the
1058      recursion.  But not every string 'operator' is part of an
1059      operator name: e.g. you could have a variable 'cooperator'.  So
1060      this variable tells us whether or not we should treat the string
1061      'operator' as starting an operator.  */
1062   int operator_possible = 1;
1063
1064   for (;; ++index)
1065     {
1066       switch (name[index])
1067         {
1068         case '<':
1069           /* Template; eat it up.  The calls to cp_first_component
1070              should only return (I hope!) when they reach the '>'
1071              terminating the component or a '::' between two
1072              components.  (Hence the '+ 2'.)  */
1073           index += 1;
1074           for (index += cp_find_first_component_aux (name + index, 1);
1075                name[index] != '>';
1076                index += cp_find_first_component_aux (name + index, 1))
1077             {
1078               if (name[index] != ':')
1079                 {
1080                   demangled_name_complaint (name);
1081                   return strlen (name);
1082                 }
1083               index += 2;
1084             }
1085           operator_possible = 1;
1086           break;
1087         case '(':
1088           /* Similar comment as to '<'.  */
1089           index += 1;
1090           for (index += cp_find_first_component_aux (name + index, 1);
1091                name[index] != ')';
1092                index += cp_find_first_component_aux (name + index, 1))
1093             {
1094               if (name[index] != ':')
1095                 {
1096                   demangled_name_complaint (name);
1097                   return strlen (name);
1098                 }
1099               index += 2;
1100             }
1101           operator_possible = 1;
1102           break;
1103         case '>':
1104         case ')':
1105           if (permissive)
1106             return index;
1107           else
1108             {
1109               demangled_name_complaint (name);
1110               return strlen (name);
1111             }
1112         case '\0':
1113           return index;
1114         case ':':
1115           /* ':' marks a component iff the next character is also a ':'.
1116              Otherwise it is probably malformed input.  */
1117           if (name[index + 1] == ':')
1118             return index;
1119           break;
1120         case 'o':
1121           /* Operator names can screw up the recursion.  */
1122           if (operator_possible
1123               && startswith (name + index, CP_OPERATOR_STR))
1124             {
1125               index += CP_OPERATOR_LEN;
1126               while (ISSPACE(name[index]))
1127                 ++index;
1128               switch (name[index])
1129                 {
1130                 case '\0':
1131                   return index;
1132                   /* Skip over one less than the appropriate number of
1133                      characters: the for loop will skip over the last
1134                      one.  */
1135                 case '<':
1136                   if (name[index + 1] == '<')
1137                     index += 1;
1138                   else
1139                     index += 0;
1140                   break;
1141                 case '>':
1142                 case '-':
1143                   if (name[index + 1] == '>')
1144                     index += 1;
1145                   else
1146                     index += 0;
1147                   break;
1148                 case '(':
1149                   index += 1;
1150                   break;
1151                 default:
1152                   index += 0;
1153                   break;
1154                 }
1155             }
1156           operator_possible = 0;
1157           break;
1158         case ' ':
1159         case ',':
1160         case '.':
1161         case '&':
1162         case '*':
1163           /* NOTE: carlton/2003-04-18: I'm not sure what the precise
1164              set of relevant characters are here: it's necessary to
1165              include any character that can show up before 'operator'
1166              in a demangled name, and it's safe to include any
1167              character that can't be part of an identifier's name.  */
1168           operator_possible = 1;
1169           break;
1170         default:
1171           operator_possible = 0;
1172           break;
1173         }
1174     }
1175 }
1176
1177 /* Complain about a demangled name that we don't know how to parse.
1178    NAME is the demangled name in question.  */
1179
1180 static void
1181 demangled_name_complaint (const char *name)
1182 {
1183   complaint ("unexpected demangled name '%s'", name);
1184 }
1185
1186 /* If NAME is the fully-qualified name of a C++
1187    function/variable/method/etc., this returns the length of its
1188    entire prefix: all of the namespaces and classes that make up its
1189    name.  Given 'A::foo', it returns 1, given 'A::B::foo', it returns
1190    4, given 'foo', it returns 0.  */
1191
1192 unsigned int
1193 cp_entire_prefix_len (const char *name)
1194 {
1195   unsigned int current_len = cp_find_first_component (name);
1196   unsigned int previous_len = 0;
1197
1198   while (name[current_len] != '\0')
1199     {
1200       gdb_assert (name[current_len] == ':');
1201       previous_len = current_len;
1202       /* Skip the '::'.  */
1203       current_len += 2;
1204       current_len += cp_find_first_component (name + current_len);
1205     }
1206
1207   return previous_len;
1208 }
1209
1210 /* Overload resolution functions.  */
1211
1212 /* Test to see if SYM is a symbol that we haven't seen corresponding
1213    to a function named OLOAD_NAME.  If so, add it to
1214    OVERLOAD_LIST.  */
1215
1216 static void
1217 overload_list_add_symbol (struct symbol *sym,
1218                           const char *oload_name,
1219                           std::vector<symbol *> *overload_list)
1220 {
1221   /* If there is no type information, we can't do anything, so
1222      skip.  */
1223   if (SYMBOL_TYPE (sym) == NULL)
1224     return;
1225
1226   /* skip any symbols that we've already considered.  */
1227   for (symbol *listed_sym : *overload_list)
1228     if (strcmp (sym->linkage_name (), listed_sym->linkage_name ()) == 0)
1229       return;
1230
1231   /* Get the demangled name without parameters */
1232   gdb::unique_xmalloc_ptr<char> sym_name
1233     = cp_remove_params (sym->natural_name ());
1234   if (!sym_name)
1235     return;
1236
1237   /* skip symbols that cannot match */
1238   if (strcmp (sym_name.get (), oload_name) != 0)
1239     return;
1240
1241   overload_list->push_back (sym);
1242 }
1243
1244 /* Return a null-terminated list of pointers to function symbols that
1245    are named FUNC_NAME and are visible within NAMESPACE.  */
1246
1247 struct std::vector<symbol *>
1248 make_symbol_overload_list (const char *func_name,
1249                            const char *the_namespace)
1250 {
1251   const char *name;
1252   std::vector<symbol *> overload_list;
1253
1254   overload_list.reserve (100);
1255
1256   add_symbol_overload_list_using (func_name, the_namespace, &overload_list);
1257
1258   if (the_namespace[0] == '\0')
1259     name = func_name;
1260   else
1261     {
1262       char *concatenated_name
1263         = (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1264       strcpy (concatenated_name, the_namespace);
1265       strcat (concatenated_name, "::");
1266       strcat (concatenated_name, func_name);
1267       name = concatenated_name;
1268     }
1269
1270   add_symbol_overload_list_qualified (name, &overload_list);
1271   return overload_list;
1272 }
1273
1274 /* Add all symbols with a name matching NAME in BLOCK to the overload
1275    list.  */
1276
1277 static void
1278 add_symbol_overload_list_block (const char *name,
1279                                 const struct block *block,
1280                                 std::vector<symbol *> *overload_list)
1281 {
1282   struct block_iterator iter;
1283   struct symbol *sym;
1284
1285   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
1286
1287   ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
1288     overload_list_add_symbol (sym, name, overload_list);
1289 }
1290
1291 /* Adds the function FUNC_NAME from NAMESPACE to the overload set.  */
1292
1293 static void
1294 add_symbol_overload_list_namespace (const char *func_name,
1295                                     const char *the_namespace,
1296                                     std::vector<symbol *> *overload_list)
1297 {
1298   const char *name;
1299   const struct block *block = NULL;
1300
1301   if (the_namespace[0] == '\0')
1302     name = func_name;
1303   else
1304     {
1305       char *concatenated_name
1306         = (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1307
1308       strcpy (concatenated_name, the_namespace);
1309       strcat (concatenated_name, "::");
1310       strcat (concatenated_name, func_name);
1311       name = concatenated_name;
1312     }
1313
1314   /* Look in the static block.  */
1315   block = block_static_block (get_selected_block (0));
1316   if (block)
1317     add_symbol_overload_list_block (name, block, overload_list);
1318
1319   /* Look in the global block.  */
1320   block = block_global_block (block);
1321   if (block)
1322     add_symbol_overload_list_block (name, block, overload_list);
1323
1324 }
1325
1326 /* Search the namespace of the given type and namespace of and public
1327    base types.  */
1328
1329 static void
1330 add_symbol_overload_list_adl_namespace (struct type *type,
1331                                         const char *func_name,
1332                                         std::vector<symbol *> *overload_list)
1333 {
1334   char *the_namespace;
1335   const char *type_name;
1336   int i, prefix_len;
1337
1338   while (type->code () == TYPE_CODE_PTR
1339          || TYPE_IS_REFERENCE (type)
1340          || type->code () == TYPE_CODE_ARRAY
1341          || type->code () == TYPE_CODE_TYPEDEF)
1342     {
1343       if (type->code () == TYPE_CODE_TYPEDEF)
1344         type = check_typedef (type);
1345       else
1346         type = TYPE_TARGET_TYPE (type);
1347     }
1348
1349   type_name = type->name ();
1350
1351   if (type_name == NULL)
1352     return;
1353
1354   prefix_len = cp_entire_prefix_len (type_name);
1355
1356   if (prefix_len != 0)
1357     {
1358       the_namespace = (char *) alloca (prefix_len + 1);
1359       strncpy (the_namespace, type_name, prefix_len);
1360       the_namespace[prefix_len] = '\0';
1361
1362       add_symbol_overload_list_namespace (func_name, the_namespace,
1363                                           overload_list);
1364     }
1365
1366   /* Check public base type */
1367   if (type->code () == TYPE_CODE_STRUCT)
1368     for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1369       {
1370         if (BASETYPE_VIA_PUBLIC (type, i))
1371           add_symbol_overload_list_adl_namespace (TYPE_BASECLASS (type, i),
1372                                                   func_name,
1373                                                   overload_list);
1374       }
1375 }
1376
1377 /* Adds to OVERLOAD_LIST the overload list overload candidates for
1378    FUNC_NAME found through argument dependent lookup.  */
1379
1380 void
1381 add_symbol_overload_list_adl (gdb::array_view<type *> arg_types,
1382                               const char *func_name,
1383                               std::vector<symbol *> *overload_list)
1384 {
1385   for (type *arg_type : arg_types)
1386     add_symbol_overload_list_adl_namespace (arg_type, func_name,
1387                                             overload_list);
1388 }
1389
1390 /* This applies the using directives to add namespaces to search in,
1391    and then searches for overloads in all of those namespaces.  It
1392    adds the symbols found to sym_return_val.  Arguments are as in
1393    make_symbol_overload_list.  */
1394
1395 static void
1396 add_symbol_overload_list_using (const char *func_name,
1397                                 const char *the_namespace,
1398                                 std::vector<symbol *> *overload_list)
1399 {
1400   struct using_direct *current;
1401   const struct block *block;
1402
1403   /* First, go through the using directives.  If any of them apply,
1404      look in the appropriate namespaces for new functions to match
1405      on.  */
1406
1407   for (block = get_selected_block (0);
1408        block != NULL;
1409        block = BLOCK_SUPERBLOCK (block))
1410     for (current = block_using (block);
1411         current != NULL;
1412         current = current->next)
1413       {
1414         /* Prevent recursive calls.  */
1415         if (current->searched)
1416           continue;
1417
1418         /* If this is a namespace alias or imported declaration ignore
1419            it.  */
1420         if (current->alias != NULL || current->declaration != NULL)
1421           continue;
1422
1423         if (strcmp (the_namespace, current->import_dest) == 0)
1424           {
1425             /* Mark this import as searched so that the recursive call
1426                does not search it again.  */
1427             scoped_restore reset_directive_searched
1428               = make_scoped_restore (&current->searched, 1);
1429
1430             add_symbol_overload_list_using (func_name,
1431                                             current->import_src,
1432                                             overload_list);
1433           }
1434       }
1435
1436   /* Now, add names for this namespace.  */
1437   add_symbol_overload_list_namespace (func_name, the_namespace,
1438                                       overload_list);
1439 }
1440
1441 /* This does the bulk of the work of finding overloaded symbols.
1442    FUNC_NAME is the name of the overloaded function we're looking for
1443    (possibly including namespace info).  */
1444
1445 static void
1446 add_symbol_overload_list_qualified (const char *func_name,
1447                                     std::vector<symbol *> *overload_list)
1448 {
1449   const struct block *b, *surrounding_static_block = 0;
1450
1451   /* Look through the partial symtabs for all symbols which begin by
1452      matching FUNC_NAME.  Make sure we read that symbol table in.  */
1453
1454   for (objfile *objf : current_program_space->objfiles ())
1455     {
1456       if (objf->sf)
1457         objf->sf->qf->expand_symtabs_for_function (objf, func_name);
1458     }
1459
1460   /* Search upwards from currently selected frame (so that we can
1461      complete on local vars.  */
1462
1463   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
1464     add_symbol_overload_list_block (func_name, b, overload_list);
1465
1466   surrounding_static_block = block_static_block (get_selected_block (0));
1467
1468   /* Go through the symtabs and check the externs and statics for
1469      symbols which match.  */
1470
1471   for (objfile *objfile : current_program_space->objfiles ())
1472     {
1473       for (compunit_symtab *cust : objfile->compunits ())
1474         {
1475           QUIT;
1476           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), GLOBAL_BLOCK);
1477           add_symbol_overload_list_block (func_name, b, overload_list);
1478         }
1479     }
1480
1481   for (objfile *objfile : current_program_space->objfiles ())
1482     {
1483       for (compunit_symtab *cust : objfile->compunits ())
1484         {
1485           QUIT;
1486           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), STATIC_BLOCK);
1487           /* Don't do this block twice.  */
1488           if (b == surrounding_static_block)
1489             continue;
1490           add_symbol_overload_list_block (func_name, b, overload_list);
1491         }
1492     }
1493 }
1494
1495 /* Lookup the rtti type for a class name.  */
1496
1497 struct type *
1498 cp_lookup_rtti_type (const char *name, const struct block *block)
1499 {
1500   struct symbol * rtti_sym;
1501   struct type * rtti_type;
1502
1503   /* Use VAR_DOMAIN here as NAME may be a typedef.  PR 18141, 18417.
1504      Classes "live" in both STRUCT_DOMAIN and VAR_DOMAIN.  */
1505   rtti_sym = lookup_symbol (name, block, VAR_DOMAIN, NULL).symbol;
1506
1507   if (rtti_sym == NULL)
1508     {
1509       warning (_("RTTI symbol not found for class '%s'"), name);
1510       return NULL;
1511     }
1512
1513   if (SYMBOL_CLASS (rtti_sym) != LOC_TYPEDEF)
1514     {
1515       warning (_("RTTI symbol for class '%s' is not a type"), name);
1516       return NULL;
1517     }
1518
1519   rtti_type = check_typedef (SYMBOL_TYPE (rtti_sym));
1520
1521   switch (rtti_type->code ())
1522     {
1523     case TYPE_CODE_STRUCT:
1524       break;
1525     case TYPE_CODE_NAMESPACE:
1526       /* chastain/2003-11-26: the symbol tables often contain fake
1527          symbols for namespaces with the same name as the struct.
1528          This warning is an indication of a bug in the lookup order
1529          or a bug in the way that the symbol tables are populated.  */
1530       warning (_("RTTI symbol for class '%s' is a namespace"), name);
1531       return NULL;
1532     default:
1533       warning (_("RTTI symbol for class '%s' has bad type"), name);
1534       return NULL;
1535     }
1536
1537   return rtti_type;
1538 }
1539
1540 #ifdef HAVE_WORKING_FORK
1541
1542 /* If true, attempt to catch crashes in the demangler and print
1543    useful debugging information.  */
1544
1545 static bool catch_demangler_crashes = true;
1546
1547 /* Stack context and environment for demangler crash recovery.  */
1548
1549 static thread_local SIGJMP_BUF *gdb_demangle_jmp_buf;
1550
1551 /* If true, attempt to dump core from the signal handler.  */
1552
1553 static std::atomic<bool> gdb_demangle_attempt_core_dump;
1554
1555 /* Signal handler for gdb_demangle.  */
1556
1557 static void
1558 gdb_demangle_signal_handler (int signo)
1559 {
1560   if (gdb_demangle_attempt_core_dump)
1561     {
1562       if (fork () == 0)
1563         dump_core ();
1564
1565       gdb_demangle_attempt_core_dump = false;
1566     }
1567
1568   SIGLONGJMP (*gdb_demangle_jmp_buf, signo);
1569 }
1570
1571 /* A helper for gdb_demangle that reports a demangling failure.  */
1572
1573 static void
1574 report_failed_demangle (const char *name, bool core_dump_allowed,
1575                         int crash_signal)
1576 {
1577   static bool error_reported = false;
1578
1579   if (!error_reported)
1580     {
1581       std::string short_msg
1582         = string_printf (_("unable to demangle '%s' "
1583                            "(demangler failed with signal %d)"),
1584                          name, crash_signal);
1585
1586       std::string long_msg
1587         = string_printf ("%s:%d: %s: %s", __FILE__, __LINE__,
1588                          "demangler-warning", short_msg.c_str ());
1589
1590       target_terminal::scoped_restore_terminal_state term_state;
1591       target_terminal::ours_for_output ();
1592
1593       begin_line ();
1594       if (core_dump_allowed)
1595         fprintf_unfiltered (gdb_stderr,
1596                             _("%s\nAttempting to dump core.\n"),
1597                             long_msg.c_str ());
1598       else
1599         warn_cant_dump_core (long_msg.c_str ());
1600
1601       demangler_warning (__FILE__, __LINE__, "%s", short_msg.c_str ());
1602
1603       error_reported = true;
1604     }
1605 }
1606
1607 #endif
1608
1609 /* A wrapper for bfd_demangle.  */
1610
1611 char *
1612 gdb_demangle (const char *name, int options)
1613 {
1614   char *result = NULL;
1615   int crash_signal = 0;
1616
1617 #ifdef HAVE_WORKING_FORK
1618   scoped_restore restore_segv
1619     = make_scoped_restore (&thread_local_segv_handler,
1620                            catch_demangler_crashes
1621                            ? gdb_demangle_signal_handler
1622                            : nullptr);
1623
1624   bool core_dump_allowed = gdb_demangle_attempt_core_dump;
1625   SIGJMP_BUF jmp_buf;
1626   scoped_restore restore_jmp_buf
1627     = make_scoped_restore (&gdb_demangle_jmp_buf, &jmp_buf);
1628   if (catch_demangler_crashes)
1629     {
1630       /* The signal handler may keep the signal blocked when we longjmp out
1631          of it.  If we have sigprocmask, we can use it to unblock the signal
1632          afterwards and we can avoid the performance overhead of saving the
1633          signal mask just in case the signal gets triggered.  Otherwise, just
1634          tell sigsetjmp to save the mask.  */
1635 #ifdef HAVE_SIGPROCMASK
1636       crash_signal = SIGSETJMP (*gdb_demangle_jmp_buf, 0);
1637 #else
1638       crash_signal = SIGSETJMP (*gdb_demangle_jmp_buf, 1);
1639 #endif
1640     }
1641 #endif
1642
1643   if (crash_signal == 0)
1644     result = bfd_demangle (NULL, name, options);
1645
1646 #ifdef HAVE_WORKING_FORK
1647   if (catch_demangler_crashes)
1648     {
1649       if (crash_signal != 0)
1650         {
1651 #ifdef HAVE_SIGPROCMASK
1652           /* If we got the signal, SIGSEGV may still be blocked; restore it.  */
1653           sigset_t segv_sig_set;
1654           sigemptyset (&segv_sig_set);
1655           sigaddset (&segv_sig_set, SIGSEGV);
1656           gdb_sigmask (SIG_UNBLOCK, &segv_sig_set, NULL);
1657 #endif
1658
1659           /* If there was a failure, we can't report it here, because
1660              we might be in a background thread.  Instead, arrange for
1661              the reporting to happen on the main thread.  */
1662           std::string copy = name;
1663           run_on_main_thread ([=] ()
1664             {
1665               report_failed_demangle (copy.c_str (), core_dump_allowed,
1666                                       crash_signal);
1667             });
1668
1669           result = NULL;
1670         }
1671     }
1672 #endif
1673
1674   return result;
1675 }
1676
1677 /* See cp-support.h.  */
1678
1679 unsigned int
1680 cp_search_name_hash (const char *search_name)
1681 {
1682   /* cp_entire_prefix_len assumes a fully-qualified name with no
1683      leading "::".  */
1684   if (startswith (search_name, "::"))
1685     search_name += 2;
1686
1687   unsigned int prefix_len = cp_entire_prefix_len (search_name);
1688   if (prefix_len != 0)
1689     search_name += prefix_len + 2;
1690
1691   unsigned int hash = 0;
1692   for (const char *string = search_name; *string != '\0'; ++string)
1693     {
1694       string = skip_spaces (string);
1695
1696       if (*string == '(')
1697         break;
1698
1699       /* Ignore ABI tags such as "[abi:cxx11].  */
1700       if (*string == '['
1701           && startswith (string + 1, "abi:")
1702           && string[5] != ':')
1703         break;
1704
1705       hash = SYMBOL_HASH_NEXT (hash, *string);
1706     }
1707   return hash;
1708 }
1709
1710 /* Helper for cp_symbol_name_matches (i.e., symbol_name_matcher_ftype
1711    implementation for symbol_name_match_type::WILD matching).  Split
1712    to a separate function for unit-testing convenience.
1713
1714    If SYMBOL_SEARCH_NAME has more scopes than LOOKUP_NAME, we try to
1715    match ignoring the extra leading scopes of SYMBOL_SEARCH_NAME.
1716    This allows conveniently setting breakpoints on functions/methods
1717    inside any namespace/class without specifying the fully-qualified
1718    name.
1719
1720    E.g., these match:
1721
1722     [symbol search name]   [lookup name]
1723     foo::bar::func         foo::bar::func
1724     foo::bar::func         bar::func
1725     foo::bar::func         func
1726
1727    While these don't:
1728
1729     [symbol search name]   [lookup name]
1730     foo::zbar::func        bar::func
1731     foo::bar::func         foo::func
1732
1733    See more examples in the test_cp_symbol_name_matches selftest
1734    function below.
1735
1736    See symbol_name_matcher_ftype for description of SYMBOL_SEARCH_NAME
1737    and COMP_MATCH_RES.
1738
1739    LOOKUP_NAME/LOOKUP_NAME_LEN is the name we're looking up.
1740
1741    See strncmp_iw_with_mode for description of MODE.
1742 */
1743
1744 static bool
1745 cp_symbol_name_matches_1 (const char *symbol_search_name,
1746                           const char *lookup_name,
1747                           size_t lookup_name_len,
1748                           strncmp_iw_mode mode,
1749                           completion_match_result *comp_match_res)
1750 {
1751   const char *sname = symbol_search_name;
1752   completion_match_for_lcd *match_for_lcd
1753     = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
1754
1755   while (true)
1756     {
1757       if (strncmp_iw_with_mode (sname, lookup_name, lookup_name_len,
1758                                 mode, language_cplus, match_for_lcd) == 0)
1759         {
1760           if (comp_match_res != NULL)
1761             {
1762               /* Note here we set different MATCH and MATCH_FOR_LCD
1763                  strings.  This is because with
1764
1765                   (gdb) b push_bac[TAB]
1766
1767                  we want the completion matches to list
1768
1769                   std::vector<int>::push_back(...)
1770                   std::vector<char>::push_back(...)
1771
1772                  etc., which are SYMBOL_SEARCH_NAMEs, while we want
1773                  the input line to auto-complete to
1774
1775                   (gdb) push_back(...)
1776
1777                  which is SNAME, not to
1778
1779                   (gdb) std::vector<
1780
1781                  which would be the regular common prefix between all
1782                  the matches otherwise.  */
1783               comp_match_res->set_match (symbol_search_name, sname);
1784             }
1785           return true;
1786         }
1787
1788       unsigned int len = cp_find_first_component (sname);
1789
1790       if (sname[len] == '\0')
1791         return false;
1792
1793       gdb_assert (sname[len] == ':');
1794       /* Skip the '::'.  */
1795       sname += len + 2;
1796     }
1797 }
1798
1799 /* C++ symbol_name_matcher_ftype implementation.  */
1800
1801 static bool
1802 cp_fq_symbol_name_matches (const char *symbol_search_name,
1803                            const lookup_name_info &lookup_name,
1804                            completion_match_result *comp_match_res)
1805 {
1806   /* Get the demangled name.  */
1807   const std::string &name = lookup_name.cplus ().lookup_name ();
1808   completion_match_for_lcd *match_for_lcd
1809     = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
1810   strncmp_iw_mode mode = (lookup_name.completion_mode ()
1811                           ? strncmp_iw_mode::NORMAL
1812                           : strncmp_iw_mode::MATCH_PARAMS);
1813
1814   if (strncmp_iw_with_mode (symbol_search_name,
1815                             name.c_str (), name.size (),
1816                             mode, language_cplus, match_for_lcd) == 0)
1817     {
1818       if (comp_match_res != NULL)
1819         comp_match_res->set_match (symbol_search_name);
1820       return true;
1821     }
1822
1823   return false;
1824 }
1825
1826 /* C++ symbol_name_matcher_ftype implementation for wild matches.
1827    Defers work to cp_symbol_name_matches_1.  */
1828
1829 static bool
1830 cp_symbol_name_matches (const char *symbol_search_name,
1831                         const lookup_name_info &lookup_name,
1832                         completion_match_result *comp_match_res)
1833 {
1834   /* Get the demangled name.  */
1835   const std::string &name = lookup_name.cplus ().lookup_name ();
1836
1837   strncmp_iw_mode mode = (lookup_name.completion_mode ()
1838                           ? strncmp_iw_mode::NORMAL
1839                           : strncmp_iw_mode::MATCH_PARAMS);
1840
1841   return cp_symbol_name_matches_1 (symbol_search_name,
1842                                    name.c_str (), name.size (),
1843                                    mode, comp_match_res);
1844 }
1845
1846 /* See cp-support.h.  */
1847
1848 symbol_name_matcher_ftype *
1849 cp_get_symbol_name_matcher (const lookup_name_info &lookup_name)
1850 {
1851   switch (lookup_name.match_type ())
1852     {
1853     case symbol_name_match_type::FULL:
1854     case symbol_name_match_type::EXPRESSION:
1855     case symbol_name_match_type::SEARCH_NAME:
1856       return cp_fq_symbol_name_matches;
1857     case symbol_name_match_type::WILD:
1858       return cp_symbol_name_matches;
1859     }
1860
1861   gdb_assert_not_reached ("");
1862 }
1863
1864 #if GDB_SELF_TEST
1865
1866 namespace selftests {
1867
1868 static void
1869 test_cp_symbol_name_matches ()
1870 {
1871 #define CHECK_MATCH(SYMBOL, INPUT)                                      \
1872   SELF_CHECK (cp_symbol_name_matches_1 (SYMBOL,                         \
1873                                         INPUT, sizeof (INPUT) - 1,      \
1874                                         strncmp_iw_mode::MATCH_PARAMS,  \
1875                                         NULL))
1876
1877 #define CHECK_NOT_MATCH(SYMBOL, INPUT)                                  \
1878   SELF_CHECK (!cp_symbol_name_matches_1 (SYMBOL,                        \
1879                                          INPUT, sizeof (INPUT) - 1,     \
1880                                          strncmp_iw_mode::MATCH_PARAMS, \
1881                                          NULL))
1882
1883   /* Like CHECK_MATCH, and also check that INPUT (and all substrings
1884      that start at index 0) completes to SYMBOL.  */
1885 #define CHECK_MATCH_C(SYMBOL, INPUT)                                    \
1886   do                                                                    \
1887     {                                                                   \
1888       CHECK_MATCH (SYMBOL, INPUT);                                      \
1889       for (size_t i = 0; i < sizeof (INPUT) - 1; i++)                   \
1890         SELF_CHECK (cp_symbol_name_matches_1 (SYMBOL, INPUT, i,         \
1891                                               strncmp_iw_mode::NORMAL,  \
1892                                               NULL));                   \
1893     } while (0)
1894
1895   /* Like CHECK_NOT_MATCH, and also check that INPUT does NOT complete
1896      to SYMBOL.  */
1897 #define CHECK_NOT_MATCH_C(SYMBOL, INPUT)                                \
1898   do                                                                    \
1899     {                                                                   \
1900       CHECK_NOT_MATCH (SYMBOL, INPUT);                                  \
1901       SELF_CHECK (!cp_symbol_name_matches_1 (SYMBOL, INPUT,             \
1902                                              sizeof (INPUT) - 1,        \
1903                                              strncmp_iw_mode::NORMAL,   \
1904                                              NULL));                    \
1905     } while (0)
1906
1907   /* Lookup name without parens matches all overloads.  */
1908   CHECK_MATCH_C ("function()", "function");
1909   CHECK_MATCH_C ("function(int)", "function");
1910
1911   /* Check whitespace around parameters is ignored.  */
1912   CHECK_MATCH_C ("function()", "function ()");
1913   CHECK_MATCH_C ("function ( )", "function()");
1914   CHECK_MATCH_C ("function ()", "function( )");
1915   CHECK_MATCH_C ("func(int)", "func( int )");
1916   CHECK_MATCH_C ("func(int)", "func ( int ) ");
1917   CHECK_MATCH_C ("func ( int )", "func( int )");
1918   CHECK_MATCH_C ("func ( int )", "func ( int ) ");
1919
1920   /* Check symbol name prefixes aren't incorrectly matched.  */
1921   CHECK_NOT_MATCH ("func", "function");
1922   CHECK_NOT_MATCH ("function", "func");
1923   CHECK_NOT_MATCH ("function()", "func");
1924
1925   /* Check that if the lookup name includes parameters, only the right
1926      overload matches.  */
1927   CHECK_MATCH_C ("function(int)", "function(int)");
1928   CHECK_NOT_MATCH_C ("function(int)", "function()");
1929
1930   /* Check that whitespace within symbol names is not ignored.  */
1931   CHECK_NOT_MATCH_C ("function", "func tion");
1932   CHECK_NOT_MATCH_C ("func__tion", "func_ _tion");
1933   CHECK_NOT_MATCH_C ("func11tion", "func1 1tion");
1934
1935   /* Check the converse, which can happen with template function,
1936      where the return type is part of the demangled name.  */
1937   CHECK_NOT_MATCH_C ("func tion", "function");
1938   CHECK_NOT_MATCH_C ("func1 1tion", "func11tion");
1939   CHECK_NOT_MATCH_C ("func_ _tion", "func__tion");
1940
1941   /* Within parameters too.  */
1942   CHECK_NOT_MATCH_C ("func(param)", "func(par am)");
1943
1944   /* Check handling of whitespace around C++ operators.  */
1945   CHECK_NOT_MATCH_C ("operator<<", "opera tor<<");
1946   CHECK_NOT_MATCH_C ("operator<<", "operator< <");
1947   CHECK_NOT_MATCH_C ("operator<<", "operator < <");
1948   CHECK_NOT_MATCH_C ("operator==", "operator= =");
1949   CHECK_NOT_MATCH_C ("operator==", "operator = =");
1950   CHECK_MATCH_C ("operator<<", "operator <<");
1951   CHECK_MATCH_C ("operator<<()", "operator <<");
1952   CHECK_NOT_MATCH_C ("operator<<()", "operator<<(int)");
1953   CHECK_NOT_MATCH_C ("operator<<(int)", "operator<<()");
1954   CHECK_MATCH_C ("operator==", "operator ==");
1955   CHECK_MATCH_C ("operator==()", "operator ==");
1956   CHECK_MATCH_C ("operator <<", "operator<<");
1957   CHECK_MATCH_C ("operator ==", "operator==");
1958   CHECK_MATCH_C ("operator bool", "operator  bool");
1959   CHECK_MATCH_C ("operator bool ()", "operator  bool");
1960   CHECK_MATCH_C ("operatorX<<", "operatorX < <");
1961   CHECK_MATCH_C ("Xoperator<<", "Xoperator < <");
1962
1963   CHECK_MATCH_C ("operator()(int)", "operator()(int)");
1964   CHECK_MATCH_C ("operator()(int)", "operator ( ) ( int )");
1965   CHECK_MATCH_C ("operator()<long>(int)", "operator ( ) < long > ( int )");
1966   /* The first "()" is not the parameter list.  */
1967   CHECK_NOT_MATCH ("operator()(int)", "operator");
1968
1969   /* Misc user-defined operator tests.  */
1970
1971   CHECK_NOT_MATCH_C ("operator/=()", "operator ^=");
1972   /* Same length at end of input.  */
1973   CHECK_NOT_MATCH_C ("operator>>", "operator[]");
1974   /* Same length but not at end of input.  */
1975   CHECK_NOT_MATCH_C ("operator>>()", "operator[]()");
1976
1977   CHECK_MATCH_C ("base::operator char*()", "base::operator char*()");
1978   CHECK_MATCH_C ("base::operator char*()", "base::operator char * ()");
1979   CHECK_MATCH_C ("base::operator char**()", "base::operator char * * ()");
1980   CHECK_MATCH ("base::operator char**()", "base::operator char * *");
1981   CHECK_MATCH_C ("base::operator*()", "base::operator*()");
1982   CHECK_NOT_MATCH_C ("base::operator char*()", "base::operatorc");
1983   CHECK_NOT_MATCH ("base::operator char*()", "base::operator char");
1984   CHECK_NOT_MATCH ("base::operator char*()", "base::operat");
1985
1986   /* Check handling of whitespace around C++ scope operators.  */
1987   CHECK_NOT_MATCH_C ("foo::bar", "foo: :bar");
1988   CHECK_MATCH_C ("foo::bar", "foo :: bar");
1989   CHECK_MATCH_C ("foo :: bar", "foo::bar");
1990
1991   CHECK_MATCH_C ("abc::def::ghi()", "abc::def::ghi()");
1992   CHECK_MATCH_C ("abc::def::ghi ( )", "abc::def::ghi()");
1993   CHECK_MATCH_C ("abc::def::ghi()", "abc::def::ghi ( )");
1994   CHECK_MATCH_C ("function()", "function()");
1995   CHECK_MATCH_C ("bar::function()", "bar::function()");
1996
1997   /* Wild matching tests follow.  */
1998
1999   /* Tests matching symbols in some scope.  */
2000   CHECK_MATCH_C ("foo::function()", "function");
2001   CHECK_MATCH_C ("foo::function(int)", "function");
2002   CHECK_MATCH_C ("foo::bar::function()", "function");
2003   CHECK_MATCH_C ("bar::function()", "bar::function");
2004   CHECK_MATCH_C ("foo::bar::function()", "bar::function");
2005   CHECK_MATCH_C ("foo::bar::function(int)", "bar::function");
2006
2007   /* Same, with parameters in the lookup name.  */
2008   CHECK_MATCH_C ("foo::function()", "function()");
2009   CHECK_MATCH_C ("foo::bar::function()", "function()");
2010   CHECK_MATCH_C ("foo::function(int)", "function(int)");
2011   CHECK_MATCH_C ("foo::function()", "foo::function()");
2012   CHECK_MATCH_C ("foo::bar::function()", "bar::function()");
2013   CHECK_MATCH_C ("foo::bar::function(int)", "bar::function(int)");
2014   CHECK_MATCH_C ("bar::function()", "bar::function()");
2015
2016   CHECK_NOT_MATCH_C ("foo::bar::function(int)", "bar::function()");
2017
2018   CHECK_MATCH_C ("(anonymous namespace)::bar::function(int)",
2019                  "bar::function(int)");
2020   CHECK_MATCH_C ("foo::(anonymous namespace)::bar::function(int)",
2021                  "function(int)");
2022
2023   /* Lookup scope wider than symbol scope, should not match.  */
2024   CHECK_NOT_MATCH_C ("function()", "bar::function");
2025   CHECK_NOT_MATCH_C ("function()", "bar::function()");
2026
2027   /* Explicit global scope doesn't match.  */
2028   CHECK_NOT_MATCH_C ("foo::function()", "::function");
2029   CHECK_NOT_MATCH_C ("foo::function()", "::function()");
2030   CHECK_NOT_MATCH_C ("foo::function(int)", "::function()");
2031   CHECK_NOT_MATCH_C ("foo::function(int)", "::function(int)");
2032
2033   /* Test ABI tag matching/ignoring.  */
2034
2035   /* If the symbol name has an ABI tag, but the lookup name doesn't,
2036      then the ABI tag in the symbol name is ignored.  */
2037   CHECK_MATCH_C ("function[abi:foo]()", "function");
2038   CHECK_MATCH_C ("function[abi:foo](int)", "function");
2039   CHECK_MATCH_C ("function[abi:foo]()", "function ()");
2040   CHECK_NOT_MATCH_C ("function[abi:foo]()", "function (int)");
2041
2042   CHECK_MATCH_C ("function[abi:foo]()", "function[abi:foo]");
2043   CHECK_MATCH_C ("function[abi:foo](int)", "function[abi:foo]");
2044   CHECK_MATCH_C ("function[abi:foo]()", "function[abi:foo] ()");
2045   CHECK_MATCH_C ("function[abi:foo][abi:bar]()", "function");
2046   CHECK_MATCH_C ("function[abi:foo][abi:bar](int)", "function");
2047   CHECK_MATCH_C ("function[abi:foo][abi:bar]()", "function[abi:foo]");
2048   CHECK_MATCH_C ("function[abi:foo][abi:bar](int)", "function[abi:foo]");
2049   CHECK_MATCH_C ("function[abi:foo][abi:bar]()", "function[abi:foo] ()");
2050   CHECK_NOT_MATCH_C ("function[abi:foo][abi:bar]()", "function[abi:foo] (int)");
2051
2052   CHECK_MATCH_C ("function  [abi:foo][abi:bar] ( )", "function [abi:foo]");
2053
2054   /* If the symbol name does not have an ABI tag, while the lookup
2055      name has one, then there's no match.  */
2056   CHECK_NOT_MATCH_C ("function()", "function[abi:foo]()");
2057   CHECK_NOT_MATCH_C ("function()", "function[abi:foo]");
2058 }
2059
2060 /* If non-NULL, return STR wrapped in quotes.  Otherwise, return a
2061    "<null>" string (with no quotes).  */
2062
2063 static std::string
2064 quote (const char *str)
2065 {
2066   if (str != NULL)
2067     return std::string (1, '"') + str + '"';
2068   else
2069     return "<null>";
2070 }
2071
2072 /* Check that removing parameter info out of NAME produces EXPECTED.
2073    COMPLETION_MODE indicates whether we're testing normal and
2074    completion mode.  FILE and LINE are used to provide better test
2075    location information in case ithe check fails.  */
2076
2077 static void
2078 check_remove_params (const char *file, int line,
2079                       const char *name, const char *expected,
2080                       bool completion_mode)
2081 {
2082   gdb::unique_xmalloc_ptr<char> result
2083     = cp_remove_params_if_any (name, completion_mode);
2084
2085   if ((expected == NULL) != (result == NULL)
2086       || (expected != NULL
2087           && strcmp (result.get (), expected) != 0))
2088     {
2089       error (_("%s:%d: make-paramless self-test failed: (completion=%d) "
2090                "\"%s\" -> %s, expected %s"),
2091              file, line, completion_mode, name,
2092              quote (result.get ()).c_str (), quote (expected).c_str ());
2093     }
2094 }
2095
2096 /* Entry point for cp_remove_params unit tests.  */
2097
2098 static void
2099 test_cp_remove_params ()
2100 {
2101   /* Check that removing parameter info out of NAME produces EXPECTED.
2102      Checks both normal and completion modes.  */
2103 #define CHECK(NAME, EXPECTED)                                           \
2104   do                                                                    \
2105     {                                                                   \
2106       check_remove_params (__FILE__, __LINE__, NAME, EXPECTED, false);  \
2107       check_remove_params (__FILE__, __LINE__, NAME, EXPECTED, true);   \
2108     }                                                                   \
2109   while (0)
2110
2111   /* Similar, but used when NAME is incomplete -- i.e., is has
2112      unbalanced parentheses.  In this case, looking for the exact name
2113      should fail / return empty.  */
2114 #define CHECK_INCOMPL(NAME, EXPECTED)                                   \
2115   do                                                                    \
2116     {                                                                   \
2117       check_remove_params (__FILE__, __LINE__, NAME, NULL, false);      \
2118       check_remove_params (__FILE__, __LINE__, NAME, EXPECTED, true);   \
2119     }                                                                   \
2120   while (0)
2121
2122   CHECK ("function()", "function");
2123   CHECK_INCOMPL ("function(", "function");
2124   CHECK ("function() const", "function");
2125
2126   CHECK ("(anonymous namespace)::A::B::C",
2127          "(anonymous namespace)::A::B::C");
2128
2129   CHECK ("A::(anonymous namespace)",
2130          "A::(anonymous namespace)");
2131
2132   CHECK_INCOMPL ("A::(anonymou", "A");
2133
2134   CHECK ("A::foo<int>()",
2135          "A::foo<int>");
2136
2137   CHECK_INCOMPL ("A::foo<int>(",
2138                  "A::foo<int>");
2139
2140   CHECK ("A::foo<(anonymous namespace)::B>::func(int)",
2141          "A::foo<(anonymous namespace)::B>::func");
2142
2143   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B>::func(in",
2144                  "A::foo<(anonymous namespace)::B>::func");
2145
2146   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B>::",
2147                  "A::foo<(anonymous namespace)::B>");
2148
2149   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B>:",
2150                  "A::foo<(anonymous namespace)::B>");
2151
2152   CHECK ("A::foo<(anonymous namespace)::B>",
2153          "A::foo<(anonymous namespace)::B>");
2154
2155   CHECK_INCOMPL ("A::foo<(anonymous namespace)::B",
2156                  "A::foo");
2157
2158   /* Shouldn't this parse?  Looks like a bug in
2159      cp_demangled_name_to_comp.  See PR c++/22411.  */
2160 #if 0
2161   CHECK ("A::foo<void(int)>::func(int)",
2162          "A::foo<void(int)>::func");
2163 #else
2164   CHECK_INCOMPL ("A::foo<void(int)>::func(int)",
2165                  "A::foo");
2166 #endif
2167
2168   CHECK_INCOMPL ("A::foo<void(int",
2169                  "A::foo");
2170
2171 #undef CHECK
2172 #undef CHECK_INCOMPL
2173 }
2174
2175 } // namespace selftests
2176
2177 #endif /* GDB_SELF_CHECK */
2178
2179 /* This is a front end for cp_find_first_component, for unit testing.
2180    Be careful when using it: see the NOTE above
2181    cp_find_first_component.  */
2182
2183 static void
2184 first_component_command (const char *arg, int from_tty)
2185 {
2186   int len;  
2187   char *prefix; 
2188
2189   if (!arg)
2190     return;
2191
2192   len = cp_find_first_component (arg);
2193   prefix = (char *) alloca (len + 1);
2194
2195   memcpy (prefix, arg, len);
2196   prefix[len] = '\0';
2197
2198   printf_unfiltered ("%s\n", prefix);
2199 }
2200
2201 /* Implement "info vtbl".  */
2202
2203 static void
2204 info_vtbl_command (const char *arg, int from_tty)
2205 {
2206   struct value *value;
2207
2208   value = parse_and_eval (arg);
2209   cplus_print_vtable (value);
2210 }
2211
2212 void _initialize_cp_support ();
2213 void
2214 _initialize_cp_support ()
2215 {
2216   add_basic_prefix_cmd ("cplus", class_maintenance,
2217                         _("C++ maintenance commands."),
2218                         &maint_cplus_cmd_list,
2219                         "maintenance cplus ",
2220                         0, &maintenancelist);
2221   add_alias_cmd ("cp", "cplus",
2222                  class_maintenance, 1,
2223                  &maintenancelist);
2224
2225   add_cmd ("first_component",
2226            class_maintenance,
2227            first_component_command,
2228            _("Print the first class/namespace component of NAME."),
2229            &maint_cplus_cmd_list);
2230
2231   add_info ("vtbl", info_vtbl_command,
2232             _("Show the virtual function table for a C++ object.\n\
2233 Usage: info vtbl EXPRESSION\n\
2234 Evaluate EXPRESSION and display the virtual function table for the\n\
2235 resulting object."));
2236
2237 #ifdef HAVE_WORKING_FORK
2238   add_setshow_boolean_cmd ("catch-demangler-crashes", class_maintenance,
2239                            &catch_demangler_crashes, _("\
2240 Set whether to attempt to catch demangler crashes."), _("\
2241 Show whether to attempt to catch demangler crashes."), _("\
2242 If enabled GDB will attempt to catch demangler crashes and\n\
2243 display the offending symbol."),
2244                            NULL,
2245                            NULL,
2246                            &maintenance_set_cmdlist,
2247                            &maintenance_show_cmdlist);
2248
2249   gdb_demangle_attempt_core_dump = can_dump_core (LIMIT_CUR);
2250 #endif
2251
2252 #if GDB_SELF_TEST
2253   selftests::register_test ("cp_symbol_name_matches",
2254                             selftests::test_cp_symbol_name_matches);
2255   selftests::register_test ("cp_remove_params",
2256                             selftests::test_cp_remove_params);
2257 #endif
2258 }
This page took 0.154972 seconds and 4 git commands to generate.