OSDN Git Service

2009-12-16 Michael Snyder <msnyder@vmware.com>
[pf3gnuchains/pf3gnuchains3x.git] / gdb / cp-support.c
1 /* Helper routines for C++ support in GDB.
2    Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009
3    Free Software Foundation, Inc.
4
5    Contributed by MontaVista Software.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "cp-support.h"
24 #include "gdb_string.h"
25 #include "demangle.h"
26 #include "gdb_assert.h"
27 #include "gdbcmd.h"
28 #include "dictionary.h"
29 #include "objfiles.h"
30 #include "frame.h"
31 #include "symtab.h"
32 #include "block.h"
33 #include "complaints.h"
34 #include "gdbtypes.h"
35 #include "exceptions.h"
36 #include "expression.h"
37 #include "value.h"
38
39 #include "safe-ctype.h"
40
41 #define d_left(dc) (dc)->u.s_binary.left
42 #define d_right(dc) (dc)->u.s_binary.right
43
44 /* Functions related to demangled name parsing.  */
45
46 static unsigned int cp_find_first_component_aux (const char *name,
47                                                  int permissive);
48
49 static void demangled_name_complaint (const char *name);
50
51 /* Functions/variables related to overload resolution.  */
52
53 static int sym_return_val_size;
54 static int sym_return_val_index;
55 static struct symbol **sym_return_val;
56
57 static void overload_list_add_symbol (struct symbol *sym,
58                                       const char *oload_name);
59
60 static void make_symbol_overload_list_using (const char *func_name,
61                                              const char *namespace);
62
63 static void make_symbol_overload_list_qualified (const char *func_name);
64
65 static void read_in_psymtabs (const char *oload_name);
66
67 /* The list of "maint cplus" commands.  */
68
69 struct cmd_list_element *maint_cplus_cmd_list = NULL;
70
71 /* The actual commands.  */
72
73 static void maint_cplus_command (char *arg, int from_tty);
74 static void first_component_command (char *arg, int from_tty);
75
76 /* Operator validation.
77    NOTE: Multi-byte operators (usually the assignment variety operator)
78    must appear before the single byte version, i.e., "+=" before "+".  */
79 static const char *operator_tokens[] =
80   {
81     "++", "+=", "+", "->*", "->", "--", "-=", "-", "*=", "*", "/=", "/",
82     "%=", "%", "!=", "==", "!", "&&", "<<=", "<<", ">>=", ">>",
83     "<=", "<", ">=", ">", "~", "&=", "&", "|=", "||", "|", "^=", "^",
84     "=", "()", "[]", ",", "new", "delete"
85     /* new[] and delete[] require special whitespace handling */
86   };
87
88 /* Return 1 if STRING is clearly already in canonical form.  This
89    function is conservative; things which it does not recognize are
90    assumed to be non-canonical, and the parser will sort them out
91    afterwards.  This speeds up the critical path for alphanumeric
92    identifiers.  */
93
94 static int
95 cp_already_canonical (const char *string)
96 {
97   /* Identifier start character [a-zA-Z_].  */
98   if (!ISIDST (string[0]))
99     return 0;
100
101   /* These are the only two identifiers which canonicalize to other
102      than themselves or an error: unsigned -> unsigned int and
103      signed -> int.  */
104   if (string[0] == 'u' && strcmp (&string[1], "nsigned") == 0)
105     return 0;
106   else if (string[0] == 's' && strcmp (&string[1], "igned") == 0)
107     return 0;
108
109   /* Identifier character [a-zA-Z0-9_].  */
110   while (ISIDNUM (string[1]))
111     string++;
112
113   if (string[1] == '\0')
114     return 1;
115   else
116     return 0;
117 }
118
119 /* Parse STRING and convert it to canonical form.  If parsing fails,
120    or if STRING is already canonical, return NULL.  Otherwise return
121    the canonical form.  The return value is allocated via xmalloc.  */
122
123 char *
124 cp_canonicalize_string (const char *string)
125 {
126   struct demangle_component *ret_comp;
127   unsigned int estimated_len;
128   char *ret;
129
130   if (cp_already_canonical (string))
131     return NULL;
132
133   ret_comp = cp_demangled_name_to_comp (string, NULL);
134   if (ret_comp == NULL)
135     return NULL;
136
137   estimated_len = strlen (string) * 2;
138   ret = cp_comp_to_string (ret_comp, estimated_len);
139
140   if (strcmp (string, ret) == 0)
141     {
142       xfree (ret);
143       return NULL;
144     }
145
146   return ret;
147 }
148
149 /* Convert a mangled name to a demangle_component tree.  *MEMORY is set to the
150    block of used memory that should be freed when finished with the tree. 
151    DEMANGLED_P is set to the char * that should be freed when finished with
152    the tree, or NULL if none was needed.  OPTIONS will be passed to the
153    demangler.  */
154
155 static struct demangle_component *
156 mangled_name_to_comp (const char *mangled_name, int options,
157                       void **memory, char **demangled_p)
158 {
159   struct demangle_component *ret;
160   char *demangled_name;
161   int len;
162
163   /* If it looks like a v3 mangled name, then try to go directly
164      to trees.  */
165   if (mangled_name[0] == '_' && mangled_name[1] == 'Z')
166     {
167       ret = cplus_demangle_v3_components (mangled_name, options, memory);
168       if (ret)
169         {
170           *demangled_p = NULL;
171           return ret;
172         }
173     }
174
175   /* If it doesn't, or if that failed, then try to demangle the name.  */
176   demangled_name = cplus_demangle (mangled_name, options);
177   if (demangled_name == NULL)
178    return NULL;
179   
180   /* If we could demangle the name, parse it to build the component tree.  */
181   ret = cp_demangled_name_to_comp (demangled_name, NULL);
182
183   if (ret == NULL)
184     {
185       xfree (demangled_name);
186       return NULL;
187     }
188
189   *demangled_p = demangled_name;
190   return ret;
191 }
192
193 /* Return the name of the class containing method PHYSNAME.  */
194
195 char *
196 cp_class_name_from_physname (const char *physname)
197 {
198   void *storage = NULL;
199   char *demangled_name = NULL, *ret;
200   struct demangle_component *ret_comp, *prev_comp, *cur_comp;
201   int done;
202
203   ret_comp = mangled_name_to_comp (physname, DMGL_ANSI, &storage,
204                                    &demangled_name);
205   if (ret_comp == NULL)
206     return NULL;
207
208   done = 0;
209
210   /* First strip off any qualifiers, if we have a function or method.  */
211   while (!done)
212     switch (ret_comp->type)
213       {
214       case DEMANGLE_COMPONENT_CONST:
215       case DEMANGLE_COMPONENT_RESTRICT:
216       case DEMANGLE_COMPONENT_VOLATILE:
217       case DEMANGLE_COMPONENT_CONST_THIS:
218       case DEMANGLE_COMPONENT_RESTRICT_THIS:
219       case DEMANGLE_COMPONENT_VOLATILE_THIS:
220       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
221         ret_comp = d_left (ret_comp);
222         break;
223       default:
224         done = 1;
225         break;
226       }
227
228   /* If what we have now is a function, discard the argument list.  */
229   if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
230     ret_comp = d_left (ret_comp);
231
232   /* If what we have now is a template, strip off the template
233      arguments.  The left subtree may be a qualified name.  */
234   if (ret_comp->type == DEMANGLE_COMPONENT_TEMPLATE)
235     ret_comp = d_left (ret_comp);
236
237   /* What we have now should be a name, possibly qualified.  Additional
238      qualifiers could live in the left subtree or the right subtree.  Find
239      the last piece.  */
240   done = 0;
241   prev_comp = NULL;
242   cur_comp = ret_comp;
243   while (!done)
244     switch (cur_comp->type)
245       {
246       case DEMANGLE_COMPONENT_QUAL_NAME:
247       case DEMANGLE_COMPONENT_LOCAL_NAME:
248         prev_comp = cur_comp;
249         cur_comp = d_right (cur_comp);
250         break;
251       case DEMANGLE_COMPONENT_TEMPLATE:
252       case DEMANGLE_COMPONENT_NAME:
253       case DEMANGLE_COMPONENT_CTOR:
254       case DEMANGLE_COMPONENT_DTOR:
255       case DEMANGLE_COMPONENT_OPERATOR:
256       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
257         done = 1;
258         break;
259       default:
260         done = 1;
261         cur_comp = NULL;
262         break;
263       }
264
265   ret = NULL;
266   if (cur_comp != NULL && prev_comp != NULL)
267     {
268       /* We want to discard the rightmost child of PREV_COMP.  */
269       *prev_comp = *d_left (prev_comp);
270       /* The ten is completely arbitrary; we don't have a good estimate.  */
271       ret = cp_comp_to_string (ret_comp, 10);
272     }
273
274   xfree (storage);
275   if (demangled_name)
276     xfree (demangled_name);
277   return ret;
278 }
279
280 /* Return the child of COMP which is the basename of a method, variable,
281    et cetera.  All scope qualifiers are discarded, but template arguments
282    will be included.  The component tree may be modified.  */
283
284 static struct demangle_component *
285 unqualified_name_from_comp (struct demangle_component *comp)
286 {
287   struct demangle_component *ret_comp = comp, *last_template;
288   int done;
289
290   done = 0;
291   last_template = NULL;
292   while (!done)
293     switch (ret_comp->type)
294       {
295       case DEMANGLE_COMPONENT_QUAL_NAME:
296       case DEMANGLE_COMPONENT_LOCAL_NAME:
297         ret_comp = d_right (ret_comp);
298         break;
299       case DEMANGLE_COMPONENT_TYPED_NAME:
300         ret_comp = d_left (ret_comp);
301         break;
302       case DEMANGLE_COMPONENT_TEMPLATE:
303         gdb_assert (last_template == NULL);
304         last_template = ret_comp;
305         ret_comp = d_left (ret_comp);
306         break;
307       case DEMANGLE_COMPONENT_CONST:
308       case DEMANGLE_COMPONENT_RESTRICT:
309       case DEMANGLE_COMPONENT_VOLATILE:
310       case DEMANGLE_COMPONENT_CONST_THIS:
311       case DEMANGLE_COMPONENT_RESTRICT_THIS:
312       case DEMANGLE_COMPONENT_VOLATILE_THIS:
313       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
314         ret_comp = d_left (ret_comp);
315         break;
316       case DEMANGLE_COMPONENT_NAME:
317       case DEMANGLE_COMPONENT_CTOR:
318       case DEMANGLE_COMPONENT_DTOR:
319       case DEMANGLE_COMPONENT_OPERATOR:
320       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
321         done = 1;
322         break;
323       default:
324         return NULL;
325         break;
326       }
327
328   if (last_template)
329     {
330       d_left (last_template) = ret_comp;
331       return last_template;
332     }
333
334   return ret_comp;
335 }
336
337 /* Return the name of the method whose linkage name is PHYSNAME.  */
338
339 char *
340 method_name_from_physname (const char *physname)
341 {
342   void *storage = NULL;
343   char *demangled_name = NULL, *ret;
344   struct demangle_component *ret_comp;
345   int done;
346
347   ret_comp = mangled_name_to_comp (physname, DMGL_ANSI, &storage,
348                                    &demangled_name);
349   if (ret_comp == NULL)
350     return NULL;
351
352   ret_comp = unqualified_name_from_comp (ret_comp);
353
354   ret = NULL;
355   if (ret_comp != NULL)
356     /* The ten is completely arbitrary; we don't have a good estimate.  */
357     ret = cp_comp_to_string (ret_comp, 10);
358
359   xfree (storage);
360   if (demangled_name)
361     xfree (demangled_name);
362   return ret;
363 }
364
365 /* If FULL_NAME is the demangled name of a C++ function (including an
366    arg list, possibly including namespace/class qualifications),
367    return a new string containing only the function name (without the
368    arg list/class qualifications).  Otherwise, return NULL.  The
369    caller is responsible for freeing the memory in question.  */
370
371 char *
372 cp_func_name (const char *full_name)
373 {
374   char *ret;
375   struct demangle_component *ret_comp;
376   int done;
377
378   ret_comp = cp_demangled_name_to_comp (full_name, NULL);
379   if (!ret_comp)
380     return NULL;
381
382   ret_comp = unqualified_name_from_comp (ret_comp);
383
384   ret = NULL;
385   if (ret_comp != NULL)
386     ret = cp_comp_to_string (ret_comp, 10);
387
388   return ret;
389 }
390
391 /* DEMANGLED_NAME is the name of a function, including parameters and
392    (optionally) a return type.  Return the name of the function without
393    parameters or return type, or NULL if we can not parse the name.  */
394
395 char *
396 cp_remove_params (const char *demangled_name)
397 {
398   int done = 0;
399   struct demangle_component *ret_comp;
400   char *ret = NULL;
401
402   if (demangled_name == NULL)
403     return NULL;
404
405   ret_comp = cp_demangled_name_to_comp (demangled_name, NULL);
406   if (ret_comp == NULL)
407     return NULL;
408
409   /* First strip off any qualifiers, if we have a function or method.  */
410   while (!done)
411     switch (ret_comp->type)
412       {
413       case DEMANGLE_COMPONENT_CONST:
414       case DEMANGLE_COMPONENT_RESTRICT:
415       case DEMANGLE_COMPONENT_VOLATILE:
416       case DEMANGLE_COMPONENT_CONST_THIS:
417       case DEMANGLE_COMPONENT_RESTRICT_THIS:
418       case DEMANGLE_COMPONENT_VOLATILE_THIS:
419       case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
420         ret_comp = d_left (ret_comp);
421         break;
422       default:
423         done = 1;
424         break;
425       }
426
427   /* What we have now should be a function.  Return its name.  */
428   if (ret_comp->type == DEMANGLE_COMPONENT_TYPED_NAME)
429     ret = cp_comp_to_string (d_left (ret_comp), 10);
430
431   return ret;
432 }
433
434 /* Here are some random pieces of trivia to keep in mind while trying
435    to take apart demangled names:
436
437    - Names can contain function arguments or templates, so the process
438      has to be, to some extent recursive: maybe keep track of your
439      depth based on encountering <> and ().
440
441    - Parentheses don't just have to happen at the end of a name: they
442      can occur even if the name in question isn't a function, because
443      a template argument might be a type that's a function.
444
445    - Conversely, even if you're trying to deal with a function, its
446      demangled name might not end with ')': it could be a const or
447      volatile class method, in which case it ends with "const" or
448      "volatile".
449
450    - Parentheses are also used in anonymous namespaces: a variable
451      'foo' in an anonymous namespace gets demangled as "(anonymous
452      namespace)::foo".
453
454    - And operator names can contain parentheses or angle brackets.  */
455
456 /* FIXME: carlton/2003-03-13: We have several functions here with
457    overlapping functionality; can we combine them?  Also, do they
458    handle all the above considerations correctly?  */
459
460
461 /* This returns the length of first component of NAME, which should be
462    the demangled name of a C++ variable/function/method/etc.
463    Specifically, it returns the index of the first colon forming the
464    boundary of the first component: so, given 'A::foo' or 'A::B::foo'
465    it returns the 1, and given 'foo', it returns 0.  */
466
467 /* The character in NAME indexed by the return value is guaranteed to
468    always be either ':' or '\0'.  */
469
470 /* NOTE: carlton/2003-03-13: This function is currently only intended
471    for internal use: it's probably not entirely safe when called on
472    user-generated input, because some of the 'index += 2' lines in
473    cp_find_first_component_aux might go past the end of malformed
474    input.  */
475
476 unsigned int
477 cp_find_first_component (const char *name)
478 {
479   return cp_find_first_component_aux (name, 0);
480 }
481
482 /* Helper function for cp_find_first_component.  Like that function,
483    it returns the length of the first component of NAME, but to make
484    the recursion easier, it also stops if it reaches an unexpected ')'
485    or '>' if the value of PERMISSIVE is nonzero.  */
486
487 /* Let's optimize away calls to strlen("operator").  */
488
489 #define LENGTH_OF_OPERATOR 8
490
491 static unsigned int
492 cp_find_first_component_aux (const char *name, int permissive)
493 {
494   unsigned int index = 0;
495   /* Operator names can show up in unexpected places.  Since these can
496      contain parentheses or angle brackets, they can screw up the
497      recursion.  But not every string 'operator' is part of an
498      operater name: e.g. you could have a variable 'cooperator'.  So
499      this variable tells us whether or not we should treat the string
500      'operator' as starting an operator.  */
501   int operator_possible = 1;
502
503   for (;; ++index)
504     {
505       switch (name[index])
506         {
507         case '<':
508           /* Template; eat it up.  The calls to cp_first_component
509              should only return (I hope!) when they reach the '>'
510              terminating the component or a '::' between two
511              components.  (Hence the '+ 2'.)  */
512           index += 1;
513           for (index += cp_find_first_component_aux (name + index, 1);
514                name[index] != '>';
515                index += cp_find_first_component_aux (name + index, 1))
516             {
517               if (name[index] != ':')
518                 {
519                   demangled_name_complaint (name);
520                   return strlen (name);
521                 }
522               index += 2;
523             }
524           operator_possible = 1;
525           break;
526         case '(':
527           /* Similar comment as to '<'.  */
528           index += 1;
529           for (index += cp_find_first_component_aux (name + index, 1);
530                name[index] != ')';
531                index += cp_find_first_component_aux (name + index, 1))
532             {
533               if (name[index] != ':')
534                 {
535                   demangled_name_complaint (name);
536                   return strlen (name);
537                 }
538               index += 2;
539             }
540           operator_possible = 1;
541           break;
542         case '>':
543         case ')':
544           if (permissive)
545             return index;
546           else
547             {
548               demangled_name_complaint (name);
549               return strlen (name);
550             }
551         case '\0':
552         case ':':
553           return index;
554         case 'o':
555           /* Operator names can screw up the recursion.  */
556           if (operator_possible
557               && strncmp (name + index, "operator", LENGTH_OF_OPERATOR) == 0)
558             {
559               index += LENGTH_OF_OPERATOR;
560               while (ISSPACE(name[index]))
561                 ++index;
562               switch (name[index])
563                 {
564                   /* Skip over one less than the appropriate number of
565                      characters: the for loop will skip over the last
566                      one.  */
567                 case '<':
568                   if (name[index + 1] == '<')
569                     index += 1;
570                   else
571                     index += 0;
572                   break;
573                 case '>':
574                 case '-':
575                   if (name[index + 1] == '>')
576                     index += 1;
577                   else
578                     index += 0;
579                   break;
580                 case '(':
581                   index += 1;
582                   break;
583                 default:
584                   index += 0;
585                   break;
586                 }
587             }
588           operator_possible = 0;
589           break;
590         case ' ':
591         case ',':
592         case '.':
593         case '&':
594         case '*':
595           /* NOTE: carlton/2003-04-18: I'm not sure what the precise
596              set of relevant characters are here: it's necessary to
597              include any character that can show up before 'operator'
598              in a demangled name, and it's safe to include any
599              character that can't be part of an identifier's name.  */
600           operator_possible = 1;
601           break;
602         default:
603           operator_possible = 0;
604           break;
605         }
606     }
607 }
608
609 /* Complain about a demangled name that we don't know how to parse.
610    NAME is the demangled name in question.  */
611
612 static void
613 demangled_name_complaint (const char *name)
614 {
615   complaint (&symfile_complaints,
616              "unexpected demangled name '%s'", name);
617 }
618
619 /* If NAME is the fully-qualified name of a C++
620    function/variable/method/etc., this returns the length of its
621    entire prefix: all of the namespaces and classes that make up its
622    name.  Given 'A::foo', it returns 1, given 'A::B::foo', it returns
623    4, given 'foo', it returns 0.  */
624
625 unsigned int
626 cp_entire_prefix_len (const char *name)
627 {
628   unsigned int current_len = cp_find_first_component (name);
629   unsigned int previous_len = 0;
630
631   while (name[current_len] != '\0')
632     {
633       gdb_assert (name[current_len] == ':');
634       previous_len = current_len;
635       /* Skip the '::'.  */
636       current_len += 2;
637       current_len += cp_find_first_component (name + current_len);
638     }
639
640   return previous_len;
641 }
642
643 /* Overload resolution functions.  */
644
645 /* Test to see if SYM is a symbol that we haven't seen corresponding
646    to a function named OLOAD_NAME.  If so, add it to the current
647    completion list. */
648
649 static void
650 overload_list_add_symbol (struct symbol *sym, const char *oload_name)
651 {
652   int newsize;
653   int i;
654   char *sym_name;
655
656   /* If there is no type information, we can't do anything, so skip */
657   if (SYMBOL_TYPE (sym) == NULL)
658     return;
659
660   /* skip any symbols that we've already considered. */
661   for (i = 0; i < sym_return_val_index; ++i)
662     if (strcmp (SYMBOL_LINKAGE_NAME (sym),
663                 SYMBOL_LINKAGE_NAME (sym_return_val[i])) == 0)
664       return;
665
666   /* Get the demangled name without parameters */
667   sym_name = cp_remove_params (SYMBOL_NATURAL_NAME (sym));
668   if (!sym_name)
669     return;
670
671   /* skip symbols that cannot match */
672   if (strcmp (sym_name, oload_name) != 0)
673     {
674       xfree (sym_name);
675       return;
676     }
677
678   xfree (sym_name);
679
680   /* We have a match for an overload instance, so add SYM to the current list
681    * of overload instances */
682   if (sym_return_val_index + 3 > sym_return_val_size)
683     {
684       newsize = (sym_return_val_size *= 2) * sizeof (struct symbol *);
685       sym_return_val = (struct symbol **) xrealloc ((char *) sym_return_val, newsize);
686     }
687   sym_return_val[sym_return_val_index++] = sym;
688   sym_return_val[sym_return_val_index] = NULL;
689 }
690
691 /* Return a null-terminated list of pointers to function symbols that
692    are named FUNC_NAME and are visible within NAMESPACE.  */
693
694 struct symbol **
695 make_symbol_overload_list (const char *func_name,
696                            const char *namespace)
697 {
698   struct cleanup *old_cleanups;
699
700   sym_return_val_size = 100;
701   sym_return_val_index = 0;
702   sym_return_val = xmalloc ((sym_return_val_size + 1) *
703                             sizeof (struct symbol *));
704   sym_return_val[0] = NULL;
705
706   old_cleanups = make_cleanup (xfree, sym_return_val);
707
708   make_symbol_overload_list_using (func_name, namespace);
709
710   discard_cleanups (old_cleanups);
711
712   return sym_return_val;
713 }
714
715 /* This applies the using directives to add namespaces to search in,
716    and then searches for overloads in all of those namespaces.  It
717    adds the symbols found to sym_return_val.  Arguments are as in
718    make_symbol_overload_list.  */
719
720 static void
721 make_symbol_overload_list_using (const char *func_name,
722                                  const char *namespace)
723 {
724   const struct using_direct *current;
725
726   /* First, go through the using directives.  If any of them apply,
727      look in the appropriate namespaces for new functions to match
728      on.  */
729
730   for (current = block_using (get_selected_block (0));
731        current != NULL;
732        current = current->next)
733     {
734       if (strcmp (namespace, current->import_dest) == 0)
735         {
736           make_symbol_overload_list_using (func_name,
737                                            current->import_src);
738         }
739     }
740
741   /* Now, add names for this namespace.  */
742   
743   if (namespace[0] == '\0')
744     {
745       make_symbol_overload_list_qualified (func_name);
746     }
747   else
748     {
749       char *concatenated_name
750         = alloca (strlen (namespace) + 2 + strlen (func_name) + 1);
751       strcpy (concatenated_name, namespace);
752       strcat (concatenated_name, "::");
753       strcat (concatenated_name, func_name);
754       make_symbol_overload_list_qualified (concatenated_name);
755     }
756 }
757
758 /* This does the bulk of the work of finding overloaded symbols.
759    FUNC_NAME is the name of the overloaded function we're looking for
760    (possibly including namespace info).  */
761
762 static void
763 make_symbol_overload_list_qualified (const char *func_name)
764 {
765   struct symbol *sym;
766   struct symtab *s;
767   struct objfile *objfile;
768   const struct block *b, *surrounding_static_block = 0;
769   struct dict_iterator iter;
770   const struct dictionary *dict;
771
772   /* Look through the partial symtabs for all symbols which begin
773      by matching FUNC_NAME.  Make sure we read that symbol table in. */
774
775   read_in_psymtabs (func_name);
776
777   /* Search upwards from currently selected frame (so that we can
778      complete on local vars.  */
779
780   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
781     {
782       dict = BLOCK_DICT (b);
783
784       for (sym = dict_iter_name_first (dict, func_name, &iter);
785            sym;
786            sym = dict_iter_name_next (func_name, &iter))
787         {
788           overload_list_add_symbol (sym, func_name);
789         }
790     }
791
792   surrounding_static_block = block_static_block (get_selected_block (0));
793
794   /* Go through the symtabs and check the externs and statics for
795      symbols which match.  */
796
797   ALL_PRIMARY_SYMTABS (objfile, s)
798   {
799     QUIT;
800     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
801     dict = BLOCK_DICT (b);
802
803     for (sym = dict_iter_name_first (dict, func_name, &iter);
804          sym;
805          sym = dict_iter_name_next (func_name, &iter))
806     {
807       overload_list_add_symbol (sym, func_name);
808     }
809   }
810
811   ALL_PRIMARY_SYMTABS (objfile, s)
812   {
813     QUIT;
814     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
815     /* Don't do this block twice.  */
816     if (b == surrounding_static_block)
817       continue;
818     dict = BLOCK_DICT (b);
819
820     for (sym = dict_iter_name_first (dict, func_name, &iter);
821          sym;
822          sym = dict_iter_name_next (func_name, &iter))
823     {
824       overload_list_add_symbol (sym, func_name);
825     }
826   }
827 }
828
829 /* Look through the partial symtabs for all symbols which begin
830    by matching FUNC_NAME.  Make sure we read that symbol table in. */
831
832 static void
833 read_in_psymtabs (const char *func_name)
834 {
835   struct partial_symtab *ps;
836   struct objfile *objfile;
837
838   ALL_PSYMTABS (objfile, ps)
839   {
840     if (ps->readin)
841       continue;
842
843     if ((lookup_partial_symbol (ps, func_name, NULL, 1, VAR_DOMAIN)
844          != NULL)
845         || (lookup_partial_symbol (ps, func_name, NULL, 0, VAR_DOMAIN)
846             != NULL))
847       psymtab_to_symtab (ps);
848   }
849 }
850
851 /* Lookup the rtti type for a class name. */
852
853 struct type *
854 cp_lookup_rtti_type (const char *name, struct block *block)
855 {
856   struct symbol * rtti_sym;
857   struct type * rtti_type;
858
859   rtti_sym = lookup_symbol (name, block, STRUCT_DOMAIN, NULL);
860
861   if (rtti_sym == NULL)
862     {
863       warning (_("RTTI symbol not found for class '%s'"), name);
864       return NULL;
865     }
866
867   if (SYMBOL_CLASS (rtti_sym) != LOC_TYPEDEF)
868     {
869       warning (_("RTTI symbol for class '%s' is not a type"), name);
870       return NULL;
871     }
872
873   rtti_type = SYMBOL_TYPE (rtti_sym);
874
875   switch (TYPE_CODE (rtti_type))
876     {
877     case TYPE_CODE_CLASS:
878       break;
879     case TYPE_CODE_NAMESPACE:
880       /* chastain/2003-11-26: the symbol tables often contain fake
881          symbols for namespaces with the same name as the struct.
882          This warning is an indication of a bug in the lookup order
883          or a bug in the way that the symbol tables are populated.  */
884       warning (_("RTTI symbol for class '%s' is a namespace"), name);
885       return NULL;
886     default:
887       warning (_("RTTI symbol for class '%s' has bad type"), name);
888       return NULL;
889     }
890
891   return rtti_type;
892 }
893
894 /* Don't allow just "maintenance cplus".  */
895
896 static  void
897 maint_cplus_command (char *arg, int from_tty)
898 {
899   printf_unfiltered (_("\"maintenance cplus\" must be followed by the name of a command.\n"));
900   help_list (maint_cplus_cmd_list, "maintenance cplus ", -1, gdb_stdout);
901 }
902
903 /* This is a front end for cp_find_first_component, for unit testing.
904    Be careful when using it: see the NOTE above
905    cp_find_first_component.  */
906
907 static void
908 first_component_command (char *arg, int from_tty)
909 {
910   int len;  
911   char *prefix; 
912
913   if (!arg)
914     return;
915
916   len = cp_find_first_component (arg);
917   prefix = alloca (len + 1);
918
919   memcpy (prefix, arg, len);
920   prefix[len] = '\0';
921
922   printf_unfiltered ("%s\n", prefix);
923 }
924
925 extern initialize_file_ftype _initialize_cp_support; /* -Wmissing-prototypes */
926
927 #define SKIP_SPACE(P)                           \
928   do                                            \
929   {                                             \
930     while (*(P) == ' ' || *(P) == '\t')         \
931       ++(P);                                    \
932   }                                             \
933   while (0)
934
935 /* Returns the length of the operator name or 0 if INPUT does not
936    point to a valid C++ operator.  INPUT should start with "operator".  */
937 int
938 cp_validate_operator (const char *input)
939 {
940   int i;
941   char *copy;
942   const char *p;
943   struct expression *expr;
944   struct value *val;
945   struct gdb_exception except;
946   struct cleanup *old_chain;
947
948   p = input;
949
950   if (strncmp (p, "operator", 8) == 0)
951     {
952       int valid = 0;
953       p += 8;
954
955       SKIP_SPACE (p);
956       for (i = 0; i < sizeof (operator_tokens) / sizeof (operator_tokens[0]);
957            ++i)
958         {
959           int length = strlen (operator_tokens[i]);
960           /* By using strncmp here, we MUST have operator_tokens ordered!
961              See additional notes where operator_tokens is defined above.  */
962           if (strncmp (p, operator_tokens[i], length) == 0)
963             {
964               const char *op = p;
965               valid = 1;
966               p += length;
967
968               if (strncmp (op, "new", 3) == 0
969                   || strncmp (op, "delete", 6) == 0)
970                 {
971
972                   /* Special case: new[] and delete[].  We must be careful
973                      to swallow whitespace before/in "[]".  */
974                   SKIP_SPACE (p);
975
976                   if (*p == '[')
977                     {
978                       ++p;
979                       SKIP_SPACE (p);
980                       if (*p == ']')
981                         ++p;
982                       else
983                         valid = 0;
984                     }
985                 }
986
987               if (valid)
988                 return (p - input);
989             }
990         }
991
992       /* Check input for a conversion operator.  */
993
994       /* Skip past base typename */
995       while (*p != '*' && *p != '&' && *p != 0 && *p != ' ')
996         ++p;
997       SKIP_SPACE (p);
998
999       /* Add modifiers '*'/'&' */
1000       while (*p == '*' || *p == '&')
1001         {
1002           ++p;
1003           SKIP_SPACE (p);
1004         }
1005
1006       /* Check for valid type.  [Remember: input starts with 
1007          "operator".]  */
1008       copy = savestring (input + 8, p - input - 8);
1009       expr = NULL;
1010       val = NULL;
1011       TRY_CATCH (except, RETURN_MASK_ALL)
1012         {
1013           expr = parse_expression (copy);
1014           val = evaluate_type (expr);
1015         }
1016
1017       xfree (copy);
1018       if (expr)
1019         xfree (expr);
1020
1021       if (val != NULL && value_type (val) != NULL)
1022         return (p - input);
1023     }
1024
1025   return 0;
1026 }
1027
1028 void
1029 _initialize_cp_support (void)
1030 {
1031   add_prefix_cmd ("cplus", class_maintenance, maint_cplus_command,
1032                   _("C++ maintenance commands."), &maint_cplus_cmd_list,
1033                   "maintenance cplus ", 0, &maintenancelist);
1034   add_alias_cmd ("cp", "cplus", class_maintenance, 1, &maintenancelist);
1035
1036   add_cmd ("first_component", class_maintenance, first_component_command,
1037            _("Print the first class/namespace component of NAME."),
1038            &maint_cplus_cmd_list);
1039 }