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