Add ChangeLog entries
[deliverable/binutils-gdb.git] / gdb / cp-support.c
1 /* Helper routines for C++ support in GDB.
2 Copyright (C) 2002-2016 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 "gdb_setjmp.h"
38 #include "safe-ctype.h"
39
40 #define d_left(dc) (dc)->u.s_binary.left
41 #define d_right(dc) (dc)->u.s_binary.right
42
43 /* Functions related to demangled name parsing. */
44
45 static unsigned int cp_find_first_component_aux (const char *name,
46 int permissive);
47
48 static void demangled_name_complaint (const char *name);
49
50 /* Functions/variables related to overload resolution. */
51
52 static int sym_return_val_size = -1;
53 static int sym_return_val_index;
54 static struct symbol **sym_return_val;
55
56 static void overload_list_add_symbol (struct symbol *sym,
57 const char *oload_name);
58
59 static void make_symbol_overload_list_using (const char *func_name,
60 const char *the_namespace);
61
62 static void make_symbol_overload_list_qualified (const char *func_name);
63
64 /* The list of "maint cplus" commands. */
65
66 struct cmd_list_element *maint_cplus_cmd_list = NULL;
67
68 /* The actual commands. */
69
70 static void maint_cplus_command (char *arg, int from_tty);
71 static void first_component_command (char *arg, int from_tty);
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 /* A cleanup wrapper for cp_demangled_name_parse_free. */
99
100 static void
101 do_demangled_name_parse_free_cleanup (void *data)
102 {
103 struct demangle_parse_info *info = (struct demangle_parse_info *) data;
104
105 cp_demangled_name_parse_free (info);
106 }
107
108 /* Create a cleanup for C++ name parsing. */
109
110 struct cleanup *
111 make_cleanup_cp_demangled_name_parse_free (struct demangle_parse_info *info)
112 {
113 return make_cleanup (do_demangled_name_parse_free_cleanup, info);
114 }
115
116 /* Return 1 if STRING is clearly already in canonical form. This
117 function is conservative; things which it does not recognize are
118 assumed to be non-canonical, and the parser will sort them out
119 afterwards. This speeds up the critical path for alphanumeric
120 identifiers. */
121
122 static int
123 cp_already_canonical (const char *string)
124 {
125 /* Identifier start character [a-zA-Z_]. */
126 if (!ISIDST (string[0]))
127 return 0;
128
129 /* These are the only two identifiers which canonicalize to other
130 than themselves or an error: unsigned -> unsigned int and
131 signed -> int. */
132 if (string[0] == 'u' && strcmp (&string[1], "nsigned") == 0)
133 return 0;
134 else if (string[0] == 's' && strcmp (&string[1], "igned") == 0)
135 return 0;
136
137 /* Identifier character [a-zA-Z0-9_]. */
138 while (ISIDNUM (string[1]))
139 string++;
140
141 if (string[1] == '\0')
142 return 1;
143 else
144 return 0;
145 }
146
147 /* Inspect the given RET_COMP for its type. If it is a typedef,
148 replace the node with the typedef's tree.
149
150 Returns 1 if any typedef substitutions were made, 0 otherwise. */
151
152 static int
153 inspect_type (struct demangle_parse_info *info,
154 struct demangle_component *ret_comp,
155 canonicalization_ftype *finder,
156 void *data)
157 {
158 int i;
159 char *name;
160 struct symbol *sym;
161
162 /* Copy the symbol's name from RET_COMP and look it up
163 in the symbol table. */
164 name = (char *) alloca (ret_comp->u.s_name.len + 1);
165 memcpy (name, ret_comp->u.s_name.s, ret_comp->u.s_name.len);
166 name[ret_comp->u.s_name.len] = '\0';
167
168 /* Ignore any typedefs that should not be substituted. */
169 for (i = 0; i < ARRAY_SIZE (ignore_typedefs); ++i)
170 {
171 if (strcmp (name, ignore_typedefs[i]) == 0)
172 return 0;
173 }
174
175 sym = NULL;
176
177 TRY
178 {
179 sym = lookup_symbol (name, 0, VAR_DOMAIN, 0).symbol;
180 }
181 CATCH (except, RETURN_MASK_ALL)
182 {
183 return 0;
184 }
185 END_CATCH
186
187 if (sym != NULL)
188 {
189 struct type *otype = SYMBOL_TYPE (sym);
190
191 if (finder != NULL)
192 {
193 const char *new_name = (*finder) (otype, data);
194
195 if (new_name != NULL)
196 {
197 ret_comp->u.s_name.s = new_name;
198 ret_comp->u.s_name.len = strlen (new_name);
199 return 1;
200 }
201
202 return 0;
203 }
204
205 /* If the type is a typedef or namespace alias, replace it. */
206 if (TYPE_CODE (otype) == TYPE_CODE_TYPEDEF
207 || TYPE_CODE (otype) == TYPE_CODE_NAMESPACE)
208 {
209 long len;
210 int is_anon;
211 struct type *type;
212 struct demangle_parse_info *i;
213 struct ui_file *buf;
214
215 /* Get the real type of the typedef. */
216 type = check_typedef (otype);
217
218 /* If the symbol is a namespace and its type name is no different
219 than the name we looked up, this symbol is not a namespace
220 alias and does not need to be substituted. */
221 if (TYPE_CODE (otype) == TYPE_CODE_NAMESPACE
222 && strcmp (TYPE_NAME (type), name) == 0)
223 return 0;
224
225 is_anon = (TYPE_TAG_NAME (type) == NULL
226 && (TYPE_CODE (type) == TYPE_CODE_ENUM
227 || TYPE_CODE (type) == TYPE_CODE_STRUCT
228 || TYPE_CODE (type) == TYPE_CODE_UNION));
229 if (is_anon)
230 {
231 struct type *last = otype;
232
233 /* Find the last typedef for the type. */
234 while (TYPE_TARGET_TYPE (last) != NULL
235 && (TYPE_CODE (TYPE_TARGET_TYPE (last))
236 == TYPE_CODE_TYPEDEF))
237 last = TYPE_TARGET_TYPE (last);
238
239 /* If there is only one typedef for this anonymous type,
240 do not substitute it. */
241 if (type == otype)
242 return 0;
243 else
244 /* Use the last typedef seen as the type for this
245 anonymous type. */
246 type = last;
247 }
248
249 buf = mem_fileopen ();
250 TRY
251 {
252 type_print (type, "", buf, -1);
253 }
254
255 /* If type_print threw an exception, there is little point
256 in continuing, so just bow out gracefully. */
257 CATCH (except, RETURN_MASK_ERROR)
258 {
259 ui_file_delete (buf);
260 return 0;
261 }
262 END_CATCH
263
264 name = ui_file_obsavestring (buf, &info->obstack, &len);
265 ui_file_delete (buf);
266
267 /* Turn the result into a new tree. Note that this
268 tree will contain pointers into NAME, so NAME cannot
269 be free'd until all typedef conversion is done and
270 the final result is converted into a string. */
271 i = cp_demangled_name_to_comp (name, NULL);
272 if (i != NULL)
273 {
274 /* Merge the two trees. */
275 cp_merge_demangle_parse_infos (info, ret_comp, i);
276
277 /* Replace any newly introduced typedefs -- but not
278 if the type is anonymous (that would lead to infinite
279 looping). */
280 if (!is_anon)
281 replace_typedefs (info, ret_comp, finder, data);
282 }
283 else
284 {
285 /* This shouldn't happen unless the type printer has
286 output something that the name parser cannot grok.
287 Nonetheless, an ounce of prevention...
288
289 Canonicalize the name again, and store it in the
290 current node (RET_COMP). */
291 std::string canon = cp_canonicalize_string_no_typedefs (name);
292
293 if (!canon.empty ())
294 {
295 /* Copy the canonicalization into the obstack. */
296 name = copy_string_to_obstack (&info->obstack, canon.c_str (), &len);
297 }
298
299 ret_comp->u.s_name.s = name;
300 ret_comp->u.s_name.len = len;
301 }
302
303 return 1;
304 }
305 }
306
307 return 0;
308 }
309
310 /* Replace any typedefs appearing in the qualified name
311 (DEMANGLE_COMPONENT_QUAL_NAME) represented in RET_COMP for the name parse
312 given in INFO. */
313
314 static void
315 replace_typedefs_qualified_name (struct demangle_parse_info *info,
316 struct demangle_component *ret_comp,
317 canonicalization_ftype *finder,
318 void *data)
319 {
320 long len;
321 char *name;
322 struct ui_file *buf = mem_fileopen ();
323 struct demangle_component *comp = ret_comp;
324
325 /* Walk each node of the qualified name, reconstructing the name of
326 this element. With every node, check for any typedef substitutions.
327 If a substitution has occurred, replace the qualified name node
328 with a DEMANGLE_COMPONENT_NAME node representing the new, typedef-
329 substituted name. */
330 while (comp->type == DEMANGLE_COMPONENT_QUAL_NAME)
331 {
332 if (d_left (comp)->type == DEMANGLE_COMPONENT_NAME)
333 {
334 struct demangle_component newobj;
335
336 ui_file_write (buf, d_left (comp)->u.s_name.s,
337 d_left (comp)->u.s_name.len);
338 name = ui_file_obsavestring (buf, &info->obstack, &len);
339 newobj.type = DEMANGLE_COMPONENT_NAME;
340 newobj.u.s_name.s = name;
341 newobj.u.s_name.len = len;
342 if (inspect_type (info, &newobj, finder, data))
343 {
344 char *n, *s;
345 long slen;
346
347 /* A typedef was substituted in NEW. Convert it to a
348 string and replace the top DEMANGLE_COMPONENT_QUAL_NAME
349 node. */
350
351 ui_file_rewind (buf);
352 n = cp_comp_to_string (&newobj, 100);
353 if (n == NULL)
354 {
355 /* If something went astray, abort typedef substitutions. */
356 ui_file_delete (buf);
357 return;
358 }
359
360 s = copy_string_to_obstack (&info->obstack, n, &slen);
361 xfree (n);
362
363 d_left (ret_comp)->type = DEMANGLE_COMPONENT_NAME;
364 d_left (ret_comp)->u.s_name.s = s;
365 d_left (ret_comp)->u.s_name.len = slen;
366 d_right (ret_comp) = d_right (comp);
367 comp = ret_comp;
368 continue;
369 }
370 }
371 else
372 {
373 /* The current node is not a name, so simply replace any
374 typedefs in it. Then print it to the stream to continue
375 checking for more typedefs in the tree. */
376 replace_typedefs (info, d_left (comp), finder, data);
377 name = cp_comp_to_string (d_left (comp), 100);
378 if (name == NULL)
379 {
380 /* If something went astray, abort typedef substitutions. */
381 ui_file_delete (buf);
382 return;
383 }
384 fputs_unfiltered (name, buf);
385 xfree (name);
386 }
387
388 ui_file_write (buf, "::", 2);
389 comp = d_right (comp);
390 }
391
392 /* If the next component is DEMANGLE_COMPONENT_NAME, save the qualified
393 name assembled above and append the name given by COMP. Then use this
394 reassembled name to check for a typedef. */
395
396 if (comp->type == DEMANGLE_COMPONENT_NAME)
397 {
398 ui_file_write (buf, comp->u.s_name.s, comp->u.s_name.len);
399 name = ui_file_obsavestring (buf, &info->obstack, &len);
400
401 /* Replace the top (DEMANGLE_COMPONENT_QUAL_NAME) node
402 with a DEMANGLE_COMPONENT_NAME node containing the whole
403 name. */
404 ret_comp->type = DEMANGLE_COMPONENT_NAME;
405 ret_comp->u.s_name.s = name;
406 ret_comp->u.s_name.len = len;
407 inspect_type (info, ret_comp, finder, data);
408 }
409 else
410 replace_typedefs (info, comp, finder, data);
411
412 ui_file_delete (buf);
413 }
414
415
416 /* A function to check const and volatile qualifiers for argument types.
417
418 "Parameter declarations that differ only in the presence
419 or absence of `const' and/or `volatile' are equivalent."
420 C++ Standard N3290, clause 13.1.3 #4. */
421
422 static void
423 check_cv_qualifiers (struct demangle_component *ret_comp)
424 {
425 while (d_left (ret_comp) != NULL
426 && (d_left (ret_comp)->type == DEMANGLE_COMPONENT_CONST
427 || d_left (ret_comp)->type == DEMANGLE_COMPONENT_VOLATILE))
428 {
429 d_left (ret_comp) = d_left (d_left (ret_comp));
430 }
431 }
432
433 /* Walk the parse tree given by RET_COMP, replacing any typedefs with
434 their basic types. */
435
436 static void
437 replace_typedefs (struct demangle_parse_info *info,
438 struct demangle_component *ret_comp,
439 canonicalization_ftype *finder,
440 void *data)
441 {
442 if (ret_comp)
443 {
444 if (finder != NULL
445 && (ret_comp->type == DEMANGLE_COMPONENT_NAME
446 || ret_comp->type == DEMANGLE_COMPONENT_QUAL_NAME
447 || ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE
448 || ret_comp->type == DEMANGLE_COMPONENT_BUILTIN_TYPE))
449 {
450 char *local_name = cp_comp_to_string (ret_comp, 10);
451
452 if (local_name != NULL)
453 {
454 struct symbol *sym = NULL;
455
456 sym = NULL;
457 TRY
458 {
459 sym = lookup_symbol (local_name, 0, VAR_DOMAIN, 0).symbol;
460 }
461 CATCH (except, RETURN_MASK_ALL)
462 {
463 }
464 END_CATCH
465
466 xfree (local_name);
467
468 if (sym != NULL)
469 {
470 struct type *otype = SYMBOL_TYPE (sym);
471 const char *new_name = (*finder) (otype, data);
472
473 if (new_name != NULL)
474 {
475 ret_comp->type = DEMANGLE_COMPONENT_NAME;
476 ret_comp->u.s_name.s = new_name;
477 ret_comp->u.s_name.len = strlen (new_name);
478 return;
479 }
480 }
481 }
482 }
483
484 switch (ret_comp->type)
485 {
486 case DEMANGLE_COMPONENT_ARGLIST:
487 check_cv_qualifiers (ret_comp);
488 /* Fall through */
489
490 case DEMANGLE_COMPONENT_FUNCTION_TYPE:
491 case DEMANGLE_COMPONENT_TEMPLATE:
492 case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
493 case DEMANGLE_COMPONENT_TYPED_NAME:
494 replace_typedefs (info, d_left (ret_comp), finder, data);
495 replace_typedefs (info, d_right (ret_comp), finder, data);
496 break;
497
498 case DEMANGLE_COMPONENT_NAME:
499 inspect_type (info, ret_comp, finder, data);
500 break;
501
502 case DEMANGLE_COMPONENT_QUAL_NAME:
503 replace_typedefs_qualified_name (info, ret_comp, finder, data);
504 break;
505
506 case DEMANGLE_COMPONENT_LOCAL_NAME:
507 case DEMANGLE_COMPONENT_CTOR:
508 case DEMANGLE_COMPONENT_ARRAY_TYPE:
509 case DEMANGLE_COMPONENT_PTRMEM_TYPE:
510 replace_typedefs (info, d_right (ret_comp), finder, data);
511 break;
512
513 case DEMANGLE_COMPONENT_CONST:
514 case DEMANGLE_COMPONENT_RESTRICT:
515 case DEMANGLE_COMPONENT_VOLATILE:
516 case DEMANGLE_COMPONENT_VOLATILE_THIS:
517 case DEMANGLE_COMPONENT_CONST_THIS:
518 case DEMANGLE_COMPONENT_RESTRICT_THIS:
519 case DEMANGLE_COMPONENT_POINTER:
520 case DEMANGLE_COMPONENT_REFERENCE:
521 replace_typedefs (info, d_left (ret_comp), finder, data);
522 break;
523
524 default:
525 break;
526 }
527 }
528 }
529
530 /* Parse STRING and convert it to canonical form, resolving any
531 typedefs. If parsing fails, or if STRING is already canonical,
532 return the empty string. Otherwise return the canonical form. If
533 FINDER is not NULL, then type components are passed to FINDER to be
534 looked up. DATA is passed verbatim to FINDER. */
535
536 std::string
537 cp_canonicalize_string_full (const char *string,
538 canonicalization_ftype *finder,
539 void *data)
540 {
541 std::string ret;
542 unsigned int estimated_len;
543 struct demangle_parse_info *info;
544
545 estimated_len = strlen (string) * 2;
546 info = cp_demangled_name_to_comp (string, NULL);
547 if (info != NULL)
548 {
549 /* Replace all the typedefs in the tree. */
550 replace_typedefs (info, info->tree, finder, data);
551
552 /* Convert the tree back into a string. */
553 ret = cp_comp_to_string (info->tree, estimated_len);
554 gdb_assert (!ret.empty ());
555
556 /* Free the parse information. */
557 cp_demangled_name_parse_free (info);
558
559 /* Finally, compare the original string with the computed
560 name, returning NULL if they are the same. */
561 if (ret == string)
562 return std::string ();
563 }
564
565 return ret;
566 }
567
568 /* Like cp_canonicalize_string_full, but always passes NULL for
569 FINDER. */
570
571 std::string
572 cp_canonicalize_string_no_typedefs (const char *string)
573 {
574 return cp_canonicalize_string_full (string, NULL, NULL);
575 }
576
577 /* Parse STRING and convert it to canonical form. If parsing fails,
578 or if STRING is already canonical, return the empty string.
579 Otherwise return the canonical form. */
580
581 std::string
582 cp_canonicalize_string (const char *string)
583 {
584 struct demangle_parse_info *info;
585 unsigned int estimated_len;
586
587 if (cp_already_canonical (string))
588 return std::string ();
589
590 info = cp_demangled_name_to_comp (string, NULL);
591 if (info == NULL)
592 return std::string ();
593
594 estimated_len = strlen (string) * 2;
595 std::string ret = cp_comp_to_string (info->tree, estimated_len);
596 cp_demangled_name_parse_free (info);
597
598 if (ret.empty ())
599 {
600 warning (_("internal error: string \"%s\" failed to be canonicalized"),
601 string);
602 return std::string ();
603 }
604
605 if (ret == string)
606 return std::string ();
607
608 return ret;
609 }
610
611 /* Convert a mangled name to a demangle_component tree. *MEMORY is
612 set to the block of used memory that should be freed when finished
613 with the tree. DEMANGLED_P is set to the char * that should be
614 freed when finished with the tree, or NULL if none was needed.
615 OPTIONS will be passed to the demangler. */
616
617 static struct demangle_parse_info *
618 mangled_name_to_comp (const char *mangled_name, int options,
619 void **memory, char **demangled_p)
620 {
621 char *demangled_name;
622 struct demangle_parse_info *info;
623
624 /* If it looks like a v3 mangled name, then try to go directly
625 to trees. */
626 if (mangled_name[0] == '_' && mangled_name[1] == 'Z')
627 {
628 struct demangle_component *ret;
629
630 ret = cplus_demangle_v3_components (mangled_name,
631 options, memory);
632 if (ret)
633 {
634 info = cp_new_demangle_parse_info ();
635 info->tree = ret;
636 *demangled_p = NULL;
637 return info;
638 }
639 }
640
641 /* If it doesn't, or if that failed, then try to demangle the
642 name. */
643 demangled_name = gdb_demangle (mangled_name, options);
644 if (demangled_name == NULL)
645 return NULL;
646
647 /* If we could demangle the name, parse it to build the component
648 tree. */
649 info = cp_demangled_name_to_comp (demangled_name, NULL);
650
651 if (info == NULL)
652 {
653 xfree (demangled_name);
654 return NULL;
655 }
656
657 *demangled_p = demangled_name;
658 return info;
659 }
660
661 /* Return the name of the class containing method PHYSNAME. */
662
663 char *
664 cp_class_name_from_physname (const char *physname)
665 {
666 void *storage = NULL;
667 char *demangled_name = NULL, *ret;
668 struct demangle_component *ret_comp, *prev_comp, *cur_comp;
669 struct demangle_parse_info *info;
670 int done;
671
672 info = mangled_name_to_comp (physname, DMGL_ANSI,
673 &storage, &demangled_name);
674 if (info == NULL)
675 return NULL;
676
677 done = 0;
678 ret_comp = info->tree;
679
680 /* First strip off any qualifiers, if we have a function or
681 method. */
682 while (!done)
683 switch (ret_comp->type)
684 {
685 case DEMANGLE_COMPONENT_CONST:
686 case DEMANGLE_COMPONENT_RESTRICT:
687 case DEMANGLE_COMPONENT_VOLATILE:
688 case DEMANGLE_COMPONENT_CONST_THIS:
689 case DEMANGLE_COMPONENT_RESTRICT_THIS:
690 case DEMANGLE_COMPONENT_VOLATILE_THIS:
691 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
692 ret_comp = d_left (ret_comp);
693 break;
694 default:
695 done = 1;
696 break;
697 }
698
699 /* If what we have now is a function, discard the argument list. */
700 if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
701 ret_comp = d_left (ret_comp);
702
703 /* If what we have now is a template, strip off the template
704 arguments. The left subtree may be a qualified name. */
705 if (ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE)
706 ret_comp = d_left (ret_comp);
707
708 /* What we have now should be a name, possibly qualified.
709 Additional qualifiers could live in the left subtree or the right
710 subtree. Find the last piece. */
711 done = 0;
712 prev_comp = NULL;
713 cur_comp = ret_comp;
714 while (!done)
715 switch (cur_comp->type)
716 {
717 case DEMANGLE_COMPONENT_QUAL_NAME:
718 case DEMANGLE_COMPONENT_LOCAL_NAME:
719 prev_comp = cur_comp;
720 cur_comp = d_right (cur_comp);
721 break;
722 case DEMANGLE_COMPONENT_TEMPLATE:
723 case DEMANGLE_COMPONENT_NAME:
724 case DEMANGLE_COMPONENT_CTOR:
725 case DEMANGLE_COMPONENT_DTOR:
726 case DEMANGLE_COMPONENT_OPERATOR:
727 case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
728 done = 1;
729 break;
730 default:
731 done = 1;
732 cur_comp = NULL;
733 break;
734 }
735
736 ret = NULL;
737 if (cur_comp != NULL && prev_comp != NULL)
738 {
739 /* We want to discard the rightmost child of PREV_COMP. */
740 *prev_comp = *d_left (prev_comp);
741 /* The ten is completely arbitrary; we don't have a good
742 estimate. */
743 ret = cp_comp_to_string (ret_comp, 10);
744 }
745
746 xfree (storage);
747 xfree (demangled_name);
748 cp_demangled_name_parse_free (info);
749 return ret;
750 }
751
752 /* Return the child of COMP which is the basename of a method,
753 variable, et cetera. All scope qualifiers are discarded, but
754 template arguments will be included. The component tree may be
755 modified. */
756
757 static struct demangle_component *
758 unqualified_name_from_comp (struct demangle_component *comp)
759 {
760 struct demangle_component *ret_comp = comp, *last_template;
761 int done;
762
763 done = 0;
764 last_template = NULL;
765 while (!done)
766 switch (ret_comp->type)
767 {
768 case DEMANGLE_COMPONENT_QUAL_NAME:
769 case DEMANGLE_COMPONENT_LOCAL_NAME:
770 ret_comp = d_right (ret_comp);
771 break;
772 case DEMANGLE_COMPONENT_TYPED_NAME:
773 ret_comp = d_left (ret_comp);
774 break;
775 case DEMANGLE_COMPONENT_TEMPLATE:
776 gdb_assert (last_template == NULL);
777 last_template = ret_comp;
778 ret_comp = d_left (ret_comp);
779 break;
780 case DEMANGLE_COMPONENT_CONST:
781 case DEMANGLE_COMPONENT_RESTRICT:
782 case DEMANGLE_COMPONENT_VOLATILE:
783 case DEMANGLE_COMPONENT_CONST_THIS:
784 case DEMANGLE_COMPONENT_RESTRICT_THIS:
785 case DEMANGLE_COMPONENT_VOLATILE_THIS:
786 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
787 ret_comp = d_left (ret_comp);
788 break;
789 case DEMANGLE_COMPONENT_NAME:
790 case DEMANGLE_COMPONENT_CTOR:
791 case DEMANGLE_COMPONENT_DTOR:
792 case DEMANGLE_COMPONENT_OPERATOR:
793 case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
794 done = 1;
795 break;
796 default:
797 return NULL;
798 break;
799 }
800
801 if (last_template)
802 {
803 d_left (last_template) = ret_comp;
804 return last_template;
805 }
806
807 return ret_comp;
808 }
809
810 /* Return the name of the method whose linkage name is PHYSNAME. */
811
812 char *
813 method_name_from_physname (const char *physname)
814 {
815 void *storage = NULL;
816 char *demangled_name = NULL, *ret;
817 struct demangle_component *ret_comp;
818 struct demangle_parse_info *info;
819
820 info = mangled_name_to_comp (physname, DMGL_ANSI,
821 &storage, &demangled_name);
822 if (info == NULL)
823 return NULL;
824
825 ret_comp = unqualified_name_from_comp (info->tree);
826
827 ret = NULL;
828 if (ret_comp != NULL)
829 /* The ten is completely arbitrary; we don't have a good
830 estimate. */
831 ret = cp_comp_to_string (ret_comp, 10);
832
833 xfree (storage);
834 xfree (demangled_name);
835 cp_demangled_name_parse_free (info);
836 return ret;
837 }
838
839 /* If FULL_NAME is the demangled name of a C++ function (including an
840 arg list, possibly including namespace/class qualifications),
841 return a new string containing only the function name (without the
842 arg list/class qualifications). Otherwise, return NULL. The
843 caller is responsible for freeing the memory in question. */
844
845 char *
846 cp_func_name (const char *full_name)
847 {
848 char *ret;
849 struct demangle_component *ret_comp;
850 struct demangle_parse_info *info;
851
852 info = cp_demangled_name_to_comp (full_name, NULL);
853 if (!info)
854 return NULL;
855
856 ret_comp = unqualified_name_from_comp (info->tree);
857
858 ret = NULL;
859 if (ret_comp != NULL)
860 ret = cp_comp_to_string (ret_comp, 10);
861
862 cp_demangled_name_parse_free (info);
863 return ret;
864 }
865
866 /* DEMANGLED_NAME is the name of a function, including parameters and
867 (optionally) a return type. Return the name of the function without
868 parameters or return type, or NULL if we can not parse the name. */
869
870 char *
871 cp_remove_params (const char *demangled_name)
872 {
873 int done = 0;
874 struct demangle_component *ret_comp;
875 struct demangle_parse_info *info;
876 char *ret = NULL;
877
878 if (demangled_name == NULL)
879 return NULL;
880
881 info = cp_demangled_name_to_comp (demangled_name, NULL);
882 if (info == NULL)
883 return NULL;
884
885 /* First strip off any qualifiers, if we have a function or method. */
886 ret_comp = info->tree;
887 while (!done)
888 switch (ret_comp->type)
889 {
890 case DEMANGLE_COMPONENT_CONST:
891 case DEMANGLE_COMPONENT_RESTRICT:
892 case DEMANGLE_COMPONENT_VOLATILE:
893 case DEMANGLE_COMPONENT_CONST_THIS:
894 case DEMANGLE_COMPONENT_RESTRICT_THIS:
895 case DEMANGLE_COMPONENT_VOLATILE_THIS:
896 case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
897 ret_comp = d_left (ret_comp);
898 break;
899 default:
900 done = 1;
901 break;
902 }
903
904 /* What we have now should be a function. Return its name. */
905 if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
906 ret = cp_comp_to_string (d_left (ret_comp), 10);
907
908 cp_demangled_name_parse_free (info);
909 return ret;
910 }
911
912 /* Here are some random pieces of trivia to keep in mind while trying
913 to take apart demangled names:
914
915 - Names can contain function arguments or templates, so the process
916 has to be, to some extent recursive: maybe keep track of your
917 depth based on encountering <> and ().
918
919 - Parentheses don't just have to happen at the end of a name: they
920 can occur even if the name in question isn't a function, because
921 a template argument might be a type that's a function.
922
923 - Conversely, even if you're trying to deal with a function, its
924 demangled name might not end with ')': it could be a const or
925 volatile class method, in which case it ends with "const" or
926 "volatile".
927
928 - Parentheses are also used in anonymous namespaces: a variable
929 'foo' in an anonymous namespace gets demangled as "(anonymous
930 namespace)::foo".
931
932 - And operator names can contain parentheses or angle brackets. */
933
934 /* FIXME: carlton/2003-03-13: We have several functions here with
935 overlapping functionality; can we combine them? Also, do they
936 handle all the above considerations correctly? */
937
938
939 /* This returns the length of first component of NAME, which should be
940 the demangled name of a C++ variable/function/method/etc.
941 Specifically, it returns the index of the first colon forming the
942 boundary of the first component: so, given 'A::foo' or 'A::B::foo'
943 it returns the 1, and given 'foo', it returns 0. */
944
945 /* The character in NAME indexed by the return value is guaranteed to
946 always be either ':' or '\0'. */
947
948 /* NOTE: carlton/2003-03-13: This function is currently only intended
949 for internal use: it's probably not entirely safe when called on
950 user-generated input, because some of the 'index += 2' lines in
951 cp_find_first_component_aux might go past the end of malformed
952 input. */
953
954 unsigned int
955 cp_find_first_component (const char *name)
956 {
957 return cp_find_first_component_aux (name, 0);
958 }
959
960 /* Helper function for cp_find_first_component. Like that function,
961 it returns the length of the first component of NAME, but to make
962 the recursion easier, it also stops if it reaches an unexpected ')'
963 or '>' if the value of PERMISSIVE is nonzero. */
964
965 /* Let's optimize away calls to strlen("operator"). */
966
967 #define LENGTH_OF_OPERATOR 8
968
969 static unsigned int
970 cp_find_first_component_aux (const char *name, int permissive)
971 {
972 unsigned int index = 0;
973 /* Operator names can show up in unexpected places. Since these can
974 contain parentheses or angle brackets, they can screw up the
975 recursion. But not every string 'operator' is part of an
976 operater name: e.g. you could have a variable 'cooperator'. So
977 this variable tells us whether or not we should treat the string
978 'operator' as starting an operator. */
979 int operator_possible = 1;
980
981 for (;; ++index)
982 {
983 switch (name[index])
984 {
985 case '<':
986 /* Template; eat it up. The calls to cp_first_component
987 should only return (I hope!) when they reach the '>'
988 terminating the component or a '::' between two
989 components. (Hence the '+ 2'.) */
990 index += 1;
991 for (index += cp_find_first_component_aux (name + index, 1);
992 name[index] != '>';
993 index += cp_find_first_component_aux (name + index, 1))
994 {
995 if (name[index] != ':')
996 {
997 demangled_name_complaint (name);
998 return strlen (name);
999 }
1000 index += 2;
1001 }
1002 operator_possible = 1;
1003 break;
1004 case '(':
1005 /* Similar comment as to '<'. */
1006 index += 1;
1007 for (index += cp_find_first_component_aux (name + index, 1);
1008 name[index] != ')';
1009 index += cp_find_first_component_aux (name + index, 1))
1010 {
1011 if (name[index] != ':')
1012 {
1013 demangled_name_complaint (name);
1014 return strlen (name);
1015 }
1016 index += 2;
1017 }
1018 operator_possible = 1;
1019 break;
1020 case '>':
1021 case ')':
1022 if (permissive)
1023 return index;
1024 else
1025 {
1026 demangled_name_complaint (name);
1027 return strlen (name);
1028 }
1029 case '\0':
1030 return index;
1031 case ':':
1032 /* ':' marks a component iff the next character is also a ':'.
1033 Otherwise it is probably malformed input. */
1034 if (name[index + 1] == ':')
1035 return index;
1036 break;
1037 case 'o':
1038 /* Operator names can screw up the recursion. */
1039 if (operator_possible
1040 && strncmp (name + index, "operator",
1041 LENGTH_OF_OPERATOR) == 0)
1042 {
1043 index += LENGTH_OF_OPERATOR;
1044 while (ISSPACE(name[index]))
1045 ++index;
1046 switch (name[index])
1047 {
1048 /* Skip over one less than the appropriate number of
1049 characters: the for loop will skip over the last
1050 one. */
1051 case '<':
1052 if (name[index + 1] == '<')
1053 index += 1;
1054 else
1055 index += 0;
1056 break;
1057 case '>':
1058 case '-':
1059 if (name[index + 1] == '>')
1060 index += 1;
1061 else
1062 index += 0;
1063 break;
1064 case '(':
1065 index += 1;
1066 break;
1067 default:
1068 index += 0;
1069 break;
1070 }
1071 }
1072 operator_possible = 0;
1073 break;
1074 case ' ':
1075 case ',':
1076 case '.':
1077 case '&':
1078 case '*':
1079 /* NOTE: carlton/2003-04-18: I'm not sure what the precise
1080 set of relevant characters are here: it's necessary to
1081 include any character that can show up before 'operator'
1082 in a demangled name, and it's safe to include any
1083 character that can't be part of an identifier's name. */
1084 operator_possible = 1;
1085 break;
1086 default:
1087 operator_possible = 0;
1088 break;
1089 }
1090 }
1091 }
1092
1093 /* Complain about a demangled name that we don't know how to parse.
1094 NAME is the demangled name in question. */
1095
1096 static void
1097 demangled_name_complaint (const char *name)
1098 {
1099 complaint (&symfile_complaints,
1100 "unexpected demangled name '%s'", name);
1101 }
1102
1103 /* If NAME is the fully-qualified name of a C++
1104 function/variable/method/etc., this returns the length of its
1105 entire prefix: all of the namespaces and classes that make up its
1106 name. Given 'A::foo', it returns 1, given 'A::B::foo', it returns
1107 4, given 'foo', it returns 0. */
1108
1109 unsigned int
1110 cp_entire_prefix_len (const char *name)
1111 {
1112 unsigned int current_len = cp_find_first_component (name);
1113 unsigned int previous_len = 0;
1114
1115 while (name[current_len] != '\0')
1116 {
1117 gdb_assert (name[current_len] == ':');
1118 previous_len = current_len;
1119 /* Skip the '::'. */
1120 current_len += 2;
1121 current_len += cp_find_first_component (name + current_len);
1122 }
1123
1124 return previous_len;
1125 }
1126
1127 /* Overload resolution functions. */
1128
1129 /* Test to see if SYM is a symbol that we haven't seen corresponding
1130 to a function named OLOAD_NAME. If so, add it to the current
1131 completion list. */
1132
1133 static void
1134 overload_list_add_symbol (struct symbol *sym,
1135 const char *oload_name)
1136 {
1137 int newsize;
1138 int i;
1139 char *sym_name;
1140
1141 /* If there is no type information, we can't do anything, so
1142 skip. */
1143 if (SYMBOL_TYPE (sym) == NULL)
1144 return;
1145
1146 /* skip any symbols that we've already considered. */
1147 for (i = 0; i < sym_return_val_index; ++i)
1148 if (strcmp (SYMBOL_LINKAGE_NAME (sym),
1149 SYMBOL_LINKAGE_NAME (sym_return_val[i])) == 0)
1150 return;
1151
1152 /* Get the demangled name without parameters */
1153 sym_name = cp_remove_params (SYMBOL_NATURAL_NAME (sym));
1154 if (!sym_name)
1155 return;
1156
1157 /* skip symbols that cannot match */
1158 if (strcmp (sym_name, oload_name) != 0)
1159 {
1160 xfree (sym_name);
1161 return;
1162 }
1163
1164 xfree (sym_name);
1165
1166 /* We have a match for an overload instance, so add SYM to the
1167 current list of overload instances */
1168 if (sym_return_val_index + 3 > sym_return_val_size)
1169 {
1170 newsize = (sym_return_val_size *= 2) * sizeof (struct symbol *);
1171 sym_return_val = (struct symbol **)
1172 xrealloc ((char *) sym_return_val, newsize);
1173 }
1174 sym_return_val[sym_return_val_index++] = sym;
1175 sym_return_val[sym_return_val_index] = NULL;
1176 }
1177
1178 /* Return a null-terminated list of pointers to function symbols that
1179 are named FUNC_NAME and are visible within NAMESPACE. */
1180
1181 struct symbol **
1182 make_symbol_overload_list (const char *func_name,
1183 const char *the_namespace)
1184 {
1185 struct cleanup *old_cleanups;
1186 const char *name;
1187
1188 sym_return_val_size = 100;
1189 sym_return_val_index = 0;
1190 sym_return_val = XNEWVEC (struct symbol *, sym_return_val_size + 1);
1191 sym_return_val[0] = NULL;
1192
1193 old_cleanups = make_cleanup (xfree, sym_return_val);
1194
1195 make_symbol_overload_list_using (func_name, the_namespace);
1196
1197 if (the_namespace[0] == '\0')
1198 name = func_name;
1199 else
1200 {
1201 char *concatenated_name
1202 = (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1203 strcpy (concatenated_name, the_namespace);
1204 strcat (concatenated_name, "::");
1205 strcat (concatenated_name, func_name);
1206 name = concatenated_name;
1207 }
1208
1209 make_symbol_overload_list_qualified (name);
1210
1211 discard_cleanups (old_cleanups);
1212
1213 return sym_return_val;
1214 }
1215
1216 /* Add all symbols with a name matching NAME in BLOCK to the overload
1217 list. */
1218
1219 static void
1220 make_symbol_overload_list_block (const char *name,
1221 const struct block *block)
1222 {
1223 struct block_iterator iter;
1224 struct symbol *sym;
1225
1226 ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
1227 overload_list_add_symbol (sym, name);
1228 }
1229
1230 /* Adds the function FUNC_NAME from NAMESPACE to the overload set. */
1231
1232 static void
1233 make_symbol_overload_list_namespace (const char *func_name,
1234 const char *the_namespace)
1235 {
1236 const char *name;
1237 const struct block *block = NULL;
1238
1239 if (the_namespace[0] == '\0')
1240 name = func_name;
1241 else
1242 {
1243 char *concatenated_name
1244 = (char *) alloca (strlen (the_namespace) + 2 + strlen (func_name) + 1);
1245
1246 strcpy (concatenated_name, the_namespace);
1247 strcat (concatenated_name, "::");
1248 strcat (concatenated_name, func_name);
1249 name = concatenated_name;
1250 }
1251
1252 /* Look in the static block. */
1253 block = block_static_block (get_selected_block (0));
1254 if (block)
1255 make_symbol_overload_list_block (name, block);
1256
1257 /* Look in the global block. */
1258 block = block_global_block (block);
1259 if (block)
1260 make_symbol_overload_list_block (name, block);
1261
1262 }
1263
1264 /* Search the namespace of the given type and namespace of and public
1265 base types. */
1266
1267 static void
1268 make_symbol_overload_list_adl_namespace (struct type *type,
1269 const char *func_name)
1270 {
1271 char *the_namespace;
1272 const char *type_name;
1273 int i, prefix_len;
1274
1275 while (TYPE_CODE (type) == TYPE_CODE_PTR
1276 || TYPE_CODE (type) == TYPE_CODE_REF
1277 || TYPE_CODE (type) == TYPE_CODE_ARRAY
1278 || TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1279 {
1280 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1281 type = check_typedef(type);
1282 else
1283 type = TYPE_TARGET_TYPE (type);
1284 }
1285
1286 type_name = TYPE_NAME (type);
1287
1288 if (type_name == NULL)
1289 return;
1290
1291 prefix_len = cp_entire_prefix_len (type_name);
1292
1293 if (prefix_len != 0)
1294 {
1295 the_namespace = (char *) alloca (prefix_len + 1);
1296 strncpy (the_namespace, type_name, prefix_len);
1297 the_namespace[prefix_len] = '\0';
1298
1299 make_symbol_overload_list_namespace (func_name, the_namespace);
1300 }
1301
1302 /* Check public base type */
1303 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1304 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1305 {
1306 if (BASETYPE_VIA_PUBLIC (type, i))
1307 make_symbol_overload_list_adl_namespace (TYPE_BASECLASS (type,
1308 i),
1309 func_name);
1310 }
1311 }
1312
1313 /* Adds the overload list overload candidates for FUNC_NAME found
1314 through argument dependent lookup. */
1315
1316 struct symbol **
1317 make_symbol_overload_list_adl (struct type **arg_types, int nargs,
1318 const char *func_name)
1319 {
1320 int i;
1321
1322 gdb_assert (sym_return_val_size != -1);
1323
1324 for (i = 1; i <= nargs; i++)
1325 make_symbol_overload_list_adl_namespace (arg_types[i - 1],
1326 func_name);
1327
1328 return sym_return_val;
1329 }
1330
1331 /* Used for cleanups to reset the "searched" flag in case of an
1332 error. */
1333
1334 static void
1335 reset_directive_searched (void *data)
1336 {
1337 struct using_direct *direct = (struct using_direct *) data;
1338 direct->searched = 0;
1339 }
1340
1341 /* This applies the using directives to add namespaces to search in,
1342 and then searches for overloads in all of those namespaces. It
1343 adds the symbols found to sym_return_val. Arguments are as in
1344 make_symbol_overload_list. */
1345
1346 static void
1347 make_symbol_overload_list_using (const char *func_name,
1348 const char *the_namespace)
1349 {
1350 struct using_direct *current;
1351 const struct block *block;
1352
1353 /* First, go through the using directives. If any of them apply,
1354 look in the appropriate namespaces for new functions to match
1355 on. */
1356
1357 for (block = get_selected_block (0);
1358 block != NULL;
1359 block = BLOCK_SUPERBLOCK (block))
1360 for (current = block_using (block);
1361 current != NULL;
1362 current = current->next)
1363 {
1364 /* Prevent recursive calls. */
1365 if (current->searched)
1366 continue;
1367
1368 /* If this is a namespace alias or imported declaration ignore
1369 it. */
1370 if (current->alias != NULL || current->declaration != NULL)
1371 continue;
1372
1373 if (strcmp (the_namespace, current->import_dest) == 0)
1374 {
1375 /* Mark this import as searched so that the recursive call
1376 does not search it again. */
1377 struct cleanup *old_chain;
1378 current->searched = 1;
1379 old_chain = make_cleanup (reset_directive_searched,
1380 current);
1381
1382 make_symbol_overload_list_using (func_name,
1383 current->import_src);
1384
1385 current->searched = 0;
1386 discard_cleanups (old_chain);
1387 }
1388 }
1389
1390 /* Now, add names for this namespace. */
1391 make_symbol_overload_list_namespace (func_name, the_namespace);
1392 }
1393
1394 /* This does the bulk of the work of finding overloaded symbols.
1395 FUNC_NAME is the name of the overloaded function we're looking for
1396 (possibly including namespace info). */
1397
1398 static void
1399 make_symbol_overload_list_qualified (const char *func_name)
1400 {
1401 struct compunit_symtab *cust;
1402 struct objfile *objfile;
1403 const struct block *b, *surrounding_static_block = 0;
1404
1405 /* Look through the partial symtabs for all symbols which begin by
1406 matching FUNC_NAME. Make sure we read that symbol table in. */
1407
1408 ALL_OBJFILES (objfile)
1409 {
1410 if (objfile->sf)
1411 objfile->sf->qf->expand_symtabs_for_function (objfile, func_name);
1412 }
1413
1414 /* Search upwards from currently selected frame (so that we can
1415 complete on local vars. */
1416
1417 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
1418 make_symbol_overload_list_block (func_name, b);
1419
1420 surrounding_static_block = block_static_block (get_selected_block (0));
1421
1422 /* Go through the symtabs and check the externs and statics for
1423 symbols which match. */
1424
1425 ALL_COMPUNITS (objfile, cust)
1426 {
1427 QUIT;
1428 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), GLOBAL_BLOCK);
1429 make_symbol_overload_list_block (func_name, b);
1430 }
1431
1432 ALL_COMPUNITS (objfile, cust)
1433 {
1434 QUIT;
1435 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), STATIC_BLOCK);
1436 /* Don't do this block twice. */
1437 if (b == surrounding_static_block)
1438 continue;
1439 make_symbol_overload_list_block (func_name, b);
1440 }
1441 }
1442
1443 /* Lookup the rtti type for a class name. */
1444
1445 struct type *
1446 cp_lookup_rtti_type (const char *name, struct block *block)
1447 {
1448 struct symbol * rtti_sym;
1449 struct type * rtti_type;
1450
1451 /* Use VAR_DOMAIN here as NAME may be a typedef. PR 18141, 18417.
1452 Classes "live" in both STRUCT_DOMAIN and VAR_DOMAIN. */
1453 rtti_sym = lookup_symbol (name, block, VAR_DOMAIN, NULL).symbol;
1454
1455 if (rtti_sym == NULL)
1456 {
1457 warning (_("RTTI symbol not found for class '%s'"), name);
1458 return NULL;
1459 }
1460
1461 if (SYMBOL_CLASS (rtti_sym) != LOC_TYPEDEF)
1462 {
1463 warning (_("RTTI symbol for class '%s' is not a type"), name);
1464 return NULL;
1465 }
1466
1467 rtti_type = check_typedef (SYMBOL_TYPE (rtti_sym));
1468
1469 switch (TYPE_CODE (rtti_type))
1470 {
1471 case TYPE_CODE_STRUCT:
1472 break;
1473 case TYPE_CODE_NAMESPACE:
1474 /* chastain/2003-11-26: the symbol tables often contain fake
1475 symbols for namespaces with the same name as the struct.
1476 This warning is an indication of a bug in the lookup order
1477 or a bug in the way that the symbol tables are populated. */
1478 warning (_("RTTI symbol for class '%s' is a namespace"), name);
1479 return NULL;
1480 default:
1481 warning (_("RTTI symbol for class '%s' has bad type"), name);
1482 return NULL;
1483 }
1484
1485 return rtti_type;
1486 }
1487
1488 #ifdef HAVE_WORKING_FORK
1489
1490 /* If nonzero, attempt to catch crashes in the demangler and print
1491 useful debugging information. */
1492
1493 static int catch_demangler_crashes = 1;
1494
1495 /* Stack context and environment for demangler crash recovery. */
1496
1497 static SIGJMP_BUF gdb_demangle_jmp_buf;
1498
1499 /* If nonzero, attempt to dump core from the signal handler. */
1500
1501 static int gdb_demangle_attempt_core_dump = 1;
1502
1503 /* Signal handler for gdb_demangle. */
1504
1505 static void
1506 gdb_demangle_signal_handler (int signo)
1507 {
1508 if (gdb_demangle_attempt_core_dump)
1509 {
1510 if (fork () == 0)
1511 dump_core ();
1512
1513 gdb_demangle_attempt_core_dump = 0;
1514 }
1515
1516 SIGLONGJMP (gdb_demangle_jmp_buf, signo);
1517 }
1518
1519 #endif
1520
1521 /* A wrapper for bfd_demangle. */
1522
1523 char *
1524 gdb_demangle (const char *name, int options)
1525 {
1526 char *result = NULL;
1527 int crash_signal = 0;
1528
1529 #ifdef HAVE_WORKING_FORK
1530 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
1531 struct sigaction sa, old_sa;
1532 #else
1533 sighandler_t ofunc;
1534 #endif
1535 static int core_dump_allowed = -1;
1536
1537 if (core_dump_allowed == -1)
1538 {
1539 core_dump_allowed = can_dump_core (LIMIT_CUR);
1540
1541 if (!core_dump_allowed)
1542 gdb_demangle_attempt_core_dump = 0;
1543 }
1544
1545 if (catch_demangler_crashes)
1546 {
1547 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
1548 sa.sa_handler = gdb_demangle_signal_handler;
1549 sigemptyset (&sa.sa_mask);
1550 #ifdef HAVE_SIGALTSTACK
1551 sa.sa_flags = SA_ONSTACK;
1552 #else
1553 sa.sa_flags = 0;
1554 #endif
1555 sigaction (SIGSEGV, &sa, &old_sa);
1556 #else
1557 ofunc = signal (SIGSEGV, gdb_demangle_signal_handler);
1558 #endif
1559
1560 crash_signal = SIGSETJMP (gdb_demangle_jmp_buf);
1561 }
1562 #endif
1563
1564 if (crash_signal == 0)
1565 result = bfd_demangle (NULL, name, options);
1566
1567 #ifdef HAVE_WORKING_FORK
1568 if (catch_demangler_crashes)
1569 {
1570 #if defined (HAVE_SIGACTION) && defined (SA_RESTART)
1571 sigaction (SIGSEGV, &old_sa, NULL);
1572 #else
1573 signal (SIGSEGV, ofunc);
1574 #endif
1575
1576 if (crash_signal != 0)
1577 {
1578 static int error_reported = 0;
1579
1580 if (!error_reported)
1581 {
1582 char *short_msg, *long_msg;
1583 struct cleanup *back_to;
1584
1585 short_msg = xstrprintf (_("unable to demangle '%s' "
1586 "(demangler failed with signal %d)"),
1587 name, crash_signal);
1588 back_to = make_cleanup (xfree, short_msg);
1589
1590 long_msg = xstrprintf ("%s:%d: %s: %s", __FILE__, __LINE__,
1591 "demangler-warning", short_msg);
1592 make_cleanup (xfree, long_msg);
1593
1594 make_cleanup_restore_target_terminal ();
1595 target_terminal_ours_for_output ();
1596
1597 begin_line ();
1598 if (core_dump_allowed)
1599 fprintf_unfiltered (gdb_stderr,
1600 _("%s\nAttempting to dump core.\n"),
1601 long_msg);
1602 else
1603 warn_cant_dump_core (long_msg);
1604
1605 demangler_warning (__FILE__, __LINE__, "%s", short_msg);
1606
1607 do_cleanups (back_to);
1608
1609 error_reported = 1;
1610 }
1611
1612 result = NULL;
1613 }
1614 }
1615 #endif
1616
1617 return result;
1618 }
1619
1620 /* See cp-support.h. */
1621
1622 int
1623 gdb_sniff_from_mangled_name (const char *mangled, char **demangled)
1624 {
1625 *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
1626 return *demangled != NULL;
1627 }
1628
1629 /* Don't allow just "maintenance cplus". */
1630
1631 static void
1632 maint_cplus_command (char *arg, int from_tty)
1633 {
1634 printf_unfiltered (_("\"maintenance cplus\" must be followed "
1635 "by the name of a command.\n"));
1636 help_list (maint_cplus_cmd_list,
1637 "maintenance cplus ",
1638 all_commands, gdb_stdout);
1639 }
1640
1641 /* This is a front end for cp_find_first_component, for unit testing.
1642 Be careful when using it: see the NOTE above
1643 cp_find_first_component. */
1644
1645 static void
1646 first_component_command (char *arg, int from_tty)
1647 {
1648 int len;
1649 char *prefix;
1650
1651 if (!arg)
1652 return;
1653
1654 len = cp_find_first_component (arg);
1655 prefix = (char *) alloca (len + 1);
1656
1657 memcpy (prefix, arg, len);
1658 prefix[len] = '\0';
1659
1660 printf_unfiltered ("%s\n", prefix);
1661 }
1662
1663 extern initialize_file_ftype _initialize_cp_support; /* -Wmissing-prototypes */
1664
1665
1666 /* Implement "info vtbl". */
1667
1668 static void
1669 info_vtbl_command (char *arg, int from_tty)
1670 {
1671 struct value *value;
1672
1673 value = parse_and_eval (arg);
1674 cplus_print_vtable (value);
1675 }
1676
1677 void
1678 _initialize_cp_support (void)
1679 {
1680 add_prefix_cmd ("cplus", class_maintenance,
1681 maint_cplus_command,
1682 _("C++ maintenance commands."),
1683 &maint_cplus_cmd_list,
1684 "maintenance cplus ",
1685 0, &maintenancelist);
1686 add_alias_cmd ("cp", "cplus",
1687 class_maintenance, 1,
1688 &maintenancelist);
1689
1690 add_cmd ("first_component",
1691 class_maintenance,
1692 first_component_command,
1693 _("Print the first class/namespace component of NAME."),
1694 &maint_cplus_cmd_list);
1695
1696 add_info ("vtbl", info_vtbl_command,
1697 _("Show the virtual function table for a C++ object.\n\
1698 Usage: info vtbl EXPRESSION\n\
1699 Evaluate EXPRESSION and display the virtual function table for the\n\
1700 resulting object."));
1701
1702 #ifdef HAVE_WORKING_FORK
1703 add_setshow_boolean_cmd ("catch-demangler-crashes", class_maintenance,
1704 &catch_demangler_crashes, _("\
1705 Set whether to attempt to catch demangler crashes."), _("\
1706 Show whether to attempt to catch demangler crashes."), _("\
1707 If enabled GDB will attempt to catch demangler crashes and\n\
1708 display the offending symbol."),
1709 NULL,
1710 NULL,
1711 &maintenance_set_cmdlist,
1712 &maintenance_show_cmdlist);
1713 #endif
1714 }
This page took 0.074504 seconds and 4 git commands to generate.