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