Build list of completions as symbol tables are expanded.
[external/binutils.git] / gdb / symtab.c
1 /* Symbol table lookup for the GNU debugger, GDB.
2
3    Copyright (C) 1986-2015 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "gdbcore.h"
24 #include "frame.h"
25 #include "target.h"
26 #include "value.h"
27 #include "symfile.h"
28 #include "objfiles.h"
29 #include "gdbcmd.h"
30 #include "gdb_regex.h"
31 #include "expression.h"
32 #include "language.h"
33 #include "demangle.h"
34 #include "inferior.h"
35 #include "source.h"
36 #include "filenames.h"          /* for FILENAME_CMP */
37 #include "objc-lang.h"
38 #include "d-lang.h"
39 #include "ada-lang.h"
40 #include "go-lang.h"
41 #include "p-lang.h"
42 #include "addrmap.h"
43 #include "cli/cli-utils.h"
44
45 #include "hashtab.h"
46
47 #include "gdb_obstack.h"
48 #include "block.h"
49 #include "dictionary.h"
50
51 #include <sys/types.h>
52 #include <fcntl.h>
53 #include <sys/stat.h>
54 #include <ctype.h>
55 #include "cp-abi.h"
56 #include "cp-support.h"
57 #include "observer.h"
58 #include "solist.h"
59 #include "macrotab.h"
60 #include "macroscope.h"
61
62 #include "parser-defs.h"
63
64 /* Forward declarations for local functions.  */
65
66 static void rbreak_command (char *, int);
67
68 static int find_line_common (struct linetable *, int, int *, int);
69
70 static struct symbol *lookup_symbol_aux (const char *name,
71                                          const struct block *block,
72                                          const domain_enum domain,
73                                          enum language language,
74                                          struct field_of_this_result *);
75
76 static
77 struct symbol *lookup_local_symbol (const char *name,
78                                     const struct block *block,
79                                     const domain_enum domain,
80                                     enum language language);
81
82 static struct symbol *
83   lookup_symbol_in_objfile (struct objfile *objfile, int block_index,
84                             const char *name, const domain_enum domain);
85
86 extern initialize_file_ftype _initialize_symtab;
87
88 /* Program space key for finding name and language of "main".  */
89
90 static const struct program_space_data *main_progspace_key;
91
92 /* Type of the data stored on the program space.  */
93
94 struct main_info
95 {
96   /* Name of "main".  */
97
98   char *name_of_main;
99
100   /* Language of "main".  */
101
102   enum language language_of_main;
103 };
104
105 /* Program space key for finding its symbol cache.  */
106
107 static const struct program_space_data *symbol_cache_key;
108
109 /* The default symbol cache size.
110    There is no extra cpu cost for large N (except when flushing the cache,
111    which is rare).  The value here is just a first attempt.  A better default
112    value may be higher or lower.  A prime number can make up for a bad hash
113    computation, so that's why the number is what it is.  */
114 #define DEFAULT_SYMBOL_CACHE_SIZE 1021
115
116 /* The maximum symbol cache size.
117    There's no method to the decision of what value to use here, other than
118    there's no point in allowing a user typo to make gdb consume all memory.  */
119 #define MAX_SYMBOL_CACHE_SIZE (1024*1024)
120
121 /* symbol_cache_lookup returns this if a previous lookup failed to find the
122    symbol in any objfile.  */
123 #define SYMBOL_LOOKUP_FAILED ((struct symbol *) 1)
124
125 /* Recording lookups that don't find the symbol is just as important, if not
126    more so, than recording found symbols.  */
127
128 enum symbol_cache_slot_state
129 {
130   SYMBOL_SLOT_UNUSED,
131   SYMBOL_SLOT_NOT_FOUND,
132   SYMBOL_SLOT_FOUND
133 };
134
135 /* Symbols don't specify global vs static block.
136    So keep them in separate caches.  */
137
138 struct block_symbol_cache
139 {
140   unsigned int hits;
141   unsigned int misses;
142   unsigned int collisions;
143
144   /* SYMBOLS is a variable length array of this size.
145      One can imagine that in general one cache (global/static) should be a
146      fraction of the size of the other, but there's no data at the moment
147      on which to decide.  */
148   unsigned int size;
149
150   struct symbol_cache_slot
151   {
152     enum symbol_cache_slot_state state;
153
154     /* The objfile that was current when the symbol was looked up.
155        This is only needed for global blocks, but for simplicity's sake
156        we allocate the space for both.  If data shows the extra space used
157        for static blocks is a problem, we can split things up then.
158
159        Global blocks need cache lookup to include the objfile context because
160        we need to account for gdbarch_iterate_over_objfiles_in_search_order
161        which can traverse objfiles in, effectively, any order, depending on
162        the current objfile, thus affecting which symbol is found.  Normally,
163        only the current objfile is searched first, and then the rest are
164        searched in recorded order; but putting cache lookup inside
165        gdbarch_iterate_over_objfiles_in_search_order would be awkward.
166        Instead we just make the current objfile part of the context of
167        cache lookup.  This means we can record the same symbol multiple times,
168        each with a different "current objfile" that was in effect when the
169        lookup was saved in the cache, but cache space is pretty cheap.  */
170     const struct objfile *objfile_context;
171
172     union
173     {
174       struct symbol *found;
175       struct
176       {
177         char *name;
178         domain_enum domain;
179       } not_found;
180     } value;
181   } symbols[1];
182 };
183
184 /* The symbol cache.
185
186    Searching for symbols in the static and global blocks over multiple objfiles
187    again and again can be slow, as can searching very big objfiles.  This is a
188    simple cache to improve symbol lookup performance, which is critical to
189    overall gdb performance.
190
191    Symbols are hashed on the name, its domain, and block.
192    They are also hashed on their objfile for objfile-specific lookups.  */
193
194 struct symbol_cache
195 {
196   struct block_symbol_cache *global_symbols;
197   struct block_symbol_cache *static_symbols;
198 };
199
200 /* When non-zero, print debugging messages related to symtab creation.  */
201 unsigned int symtab_create_debug = 0;
202
203 /* When non-zero, print debugging messages related to symbol lookup.  */
204 unsigned int symbol_lookup_debug = 0;
205
206 /* The size of the cache is staged here.  */
207 static unsigned int new_symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
208
209 /* The current value of the symbol cache size.
210    This is saved so that if the user enters a value too big we can restore
211    the original value from here.  */
212 static unsigned int symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
213
214 /* Non-zero if a file may be known by two different basenames.
215    This is the uncommon case, and significantly slows down gdb.
216    Default set to "off" to not slow down the common case.  */
217 int basenames_may_differ = 0;
218
219 /* Allow the user to configure the debugger behavior with respect
220    to multiple-choice menus when more than one symbol matches during
221    a symbol lookup.  */
222
223 const char multiple_symbols_ask[] = "ask";
224 const char multiple_symbols_all[] = "all";
225 const char multiple_symbols_cancel[] = "cancel";
226 static const char *const multiple_symbols_modes[] =
227 {
228   multiple_symbols_ask,
229   multiple_symbols_all,
230   multiple_symbols_cancel,
231   NULL
232 };
233 static const char *multiple_symbols_mode = multiple_symbols_all;
234
235 /* Read-only accessor to AUTO_SELECT_MODE.  */
236
237 const char *
238 multiple_symbols_select_mode (void)
239 {
240   return multiple_symbols_mode;
241 }
242
243 /* Block in which the most recently searched-for symbol was found.
244    Might be better to make this a parameter to lookup_symbol and
245    value_of_this.  */
246
247 const struct block *block_found;
248
249 /* Return the name of a domain_enum.  */
250
251 const char *
252 domain_name (domain_enum e)
253 {
254   switch (e)
255     {
256     case UNDEF_DOMAIN: return "UNDEF_DOMAIN";
257     case VAR_DOMAIN: return "VAR_DOMAIN";
258     case STRUCT_DOMAIN: return "STRUCT_DOMAIN";
259     case MODULE_DOMAIN: return "MODULE_DOMAIN";
260     case LABEL_DOMAIN: return "LABEL_DOMAIN";
261     case COMMON_BLOCK_DOMAIN: return "COMMON_BLOCK_DOMAIN";
262     default: gdb_assert_not_reached ("bad domain_enum");
263     }
264 }
265
266 /* Return the name of a search_domain .  */
267
268 const char *
269 search_domain_name (enum search_domain e)
270 {
271   switch (e)
272     {
273     case VARIABLES_DOMAIN: return "VARIABLES_DOMAIN";
274     case FUNCTIONS_DOMAIN: return "FUNCTIONS_DOMAIN";
275     case TYPES_DOMAIN: return "TYPES_DOMAIN";
276     case ALL_DOMAIN: return "ALL_DOMAIN";
277     default: gdb_assert_not_reached ("bad search_domain");
278     }
279 }
280
281 /* See symtab.h.  */
282
283 struct symtab *
284 compunit_primary_filetab (const struct compunit_symtab *cust)
285 {
286   gdb_assert (COMPUNIT_FILETABS (cust) != NULL);
287
288   /* The primary file symtab is the first one in the list.  */
289   return COMPUNIT_FILETABS (cust);
290 }
291
292 /* See symtab.h.  */
293
294 enum language
295 compunit_language (const struct compunit_symtab *cust)
296 {
297   struct symtab *symtab = compunit_primary_filetab (cust);
298
299 /* The language of the compunit symtab is the language of its primary
300    source file.  */
301   return SYMTAB_LANGUAGE (symtab);
302 }
303
304 /* See whether FILENAME matches SEARCH_NAME using the rule that we
305    advertise to the user.  (The manual's description of linespecs
306    describes what we advertise).  Returns true if they match, false
307    otherwise.  */
308
309 int
310 compare_filenames_for_search (const char *filename, const char *search_name)
311 {
312   int len = strlen (filename);
313   size_t search_len = strlen (search_name);
314
315   if (len < search_len)
316     return 0;
317
318   /* The tail of FILENAME must match.  */
319   if (FILENAME_CMP (filename + len - search_len, search_name) != 0)
320     return 0;
321
322   /* Either the names must completely match, or the character
323      preceding the trailing SEARCH_NAME segment of FILENAME must be a
324      directory separator.
325
326      The check !IS_ABSOLUTE_PATH ensures SEARCH_NAME "/dir/file.c"
327      cannot match FILENAME "/path//dir/file.c" - as user has requested
328      absolute path.  The sama applies for "c:\file.c" possibly
329      incorrectly hypothetically matching "d:\dir\c:\file.c".
330
331      The HAS_DRIVE_SPEC purpose is to make FILENAME "c:file.c"
332      compatible with SEARCH_NAME "file.c".  In such case a compiler had
333      to put the "c:file.c" name into debug info.  Such compatibility
334      works only on GDB built for DOS host.  */
335   return (len == search_len
336           || (!IS_ABSOLUTE_PATH (search_name)
337               && IS_DIR_SEPARATOR (filename[len - search_len - 1]))
338           || (HAS_DRIVE_SPEC (filename)
339               && STRIP_DRIVE_SPEC (filename) == &filename[len - search_len]));
340 }
341
342 /* Check for a symtab of a specific name by searching some symtabs.
343    This is a helper function for callbacks of iterate_over_symtabs.
344
345    If NAME is not absolute, then REAL_PATH is NULL
346    If NAME is absolute, then REAL_PATH is the gdb_realpath form of NAME.
347
348    The return value, NAME, REAL_PATH, CALLBACK, and DATA
349    are identical to the `map_symtabs_matching_filename' method of
350    quick_symbol_functions.
351
352    FIRST and AFTER_LAST indicate the range of compunit symtabs to search.
353    Each symtab within the specified compunit symtab is also searched.
354    AFTER_LAST is one past the last compunit symtab to search; NULL means to
355    search until the end of the list.  */
356
357 int
358 iterate_over_some_symtabs (const char *name,
359                            const char *real_path,
360                            int (*callback) (struct symtab *symtab,
361                                             void *data),
362                            void *data,
363                            struct compunit_symtab *first,
364                            struct compunit_symtab *after_last)
365 {
366   struct compunit_symtab *cust;
367   struct symtab *s;
368   const char* base_name = lbasename (name);
369
370   for (cust = first; cust != NULL && cust != after_last; cust = cust->next)
371     {
372       ALL_COMPUNIT_FILETABS (cust, s)
373         {
374           if (compare_filenames_for_search (s->filename, name))
375             {
376               if (callback (s, data))
377                 return 1;
378               continue;
379             }
380
381           /* Before we invoke realpath, which can get expensive when many
382              files are involved, do a quick comparison of the basenames.  */
383           if (! basenames_may_differ
384               && FILENAME_CMP (base_name, lbasename (s->filename)) != 0)
385             continue;
386
387           if (compare_filenames_for_search (symtab_to_fullname (s), name))
388             {
389               if (callback (s, data))
390                 return 1;
391               continue;
392             }
393
394           /* If the user gave us an absolute path, try to find the file in
395              this symtab and use its absolute path.  */
396           if (real_path != NULL)
397             {
398               const char *fullname = symtab_to_fullname (s);
399
400               gdb_assert (IS_ABSOLUTE_PATH (real_path));
401               gdb_assert (IS_ABSOLUTE_PATH (name));
402               if (FILENAME_CMP (real_path, fullname) == 0)
403                 {
404                   if (callback (s, data))
405                     return 1;
406                   continue;
407                 }
408             }
409         }
410     }
411
412   return 0;
413 }
414
415 /* Check for a symtab of a specific name; first in symtabs, then in
416    psymtabs.  *If* there is no '/' in the name, a match after a '/'
417    in the symtab filename will also work.
418
419    Calls CALLBACK with each symtab that is found and with the supplied
420    DATA.  If CALLBACK returns true, the search stops.  */
421
422 void
423 iterate_over_symtabs (const char *name,
424                       int (*callback) (struct symtab *symtab,
425                                        void *data),
426                       void *data)
427 {
428   struct objfile *objfile;
429   char *real_path = NULL;
430   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
431
432   /* Here we are interested in canonicalizing an absolute path, not
433      absolutizing a relative path.  */
434   if (IS_ABSOLUTE_PATH (name))
435     {
436       real_path = gdb_realpath (name);
437       make_cleanup (xfree, real_path);
438       gdb_assert (IS_ABSOLUTE_PATH (real_path));
439     }
440
441   ALL_OBJFILES (objfile)
442   {
443     if (iterate_over_some_symtabs (name, real_path, callback, data,
444                                    objfile->compunit_symtabs, NULL))
445       {
446         do_cleanups (cleanups);
447         return;
448       }
449   }
450
451   /* Same search rules as above apply here, but now we look thru the
452      psymtabs.  */
453
454   ALL_OBJFILES (objfile)
455   {
456     if (objfile->sf
457         && objfile->sf->qf->map_symtabs_matching_filename (objfile,
458                                                            name,
459                                                            real_path,
460                                                            callback,
461                                                            data))
462       {
463         do_cleanups (cleanups);
464         return;
465       }
466   }
467
468   do_cleanups (cleanups);
469 }
470
471 /* The callback function used by lookup_symtab.  */
472
473 static int
474 lookup_symtab_callback (struct symtab *symtab, void *data)
475 {
476   struct symtab **result_ptr = data;
477
478   *result_ptr = symtab;
479   return 1;
480 }
481
482 /* A wrapper for iterate_over_symtabs that returns the first matching
483    symtab, or NULL.  */
484
485 struct symtab *
486 lookup_symtab (const char *name)
487 {
488   struct symtab *result = NULL;
489
490   iterate_over_symtabs (name, lookup_symtab_callback, &result);
491   return result;
492 }
493
494 \f
495 /* Mangle a GDB method stub type.  This actually reassembles the pieces of the
496    full method name, which consist of the class name (from T), the unadorned
497    method name from METHOD_ID, and the signature for the specific overload,
498    specified by SIGNATURE_ID.  Note that this function is g++ specific.  */
499
500 char *
501 gdb_mangle_name (struct type *type, int method_id, int signature_id)
502 {
503   int mangled_name_len;
504   char *mangled_name;
505   struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
506   struct fn_field *method = &f[signature_id];
507   const char *field_name = TYPE_FN_FIELDLIST_NAME (type, method_id);
508   const char *physname = TYPE_FN_FIELD_PHYSNAME (f, signature_id);
509   const char *newname = type_name_no_tag (type);
510
511   /* Does the form of physname indicate that it is the full mangled name
512      of a constructor (not just the args)?  */
513   int is_full_physname_constructor;
514
515   int is_constructor;
516   int is_destructor = is_destructor_name (physname);
517   /* Need a new type prefix.  */
518   char *const_prefix = method->is_const ? "C" : "";
519   char *volatile_prefix = method->is_volatile ? "V" : "";
520   char buf[20];
521   int len = (newname == NULL ? 0 : strlen (newname));
522
523   /* Nothing to do if physname already contains a fully mangled v3 abi name
524      or an operator name.  */
525   if ((physname[0] == '_' && physname[1] == 'Z')
526       || is_operator_name (field_name))
527     return xstrdup (physname);
528
529   is_full_physname_constructor = is_constructor_name (physname);
530
531   is_constructor = is_full_physname_constructor 
532     || (newname && strcmp (field_name, newname) == 0);
533
534   if (!is_destructor)
535     is_destructor = (strncmp (physname, "__dt", 4) == 0);
536
537   if (is_destructor || is_full_physname_constructor)
538     {
539       mangled_name = (char *) xmalloc (strlen (physname) + 1);
540       strcpy (mangled_name, physname);
541       return mangled_name;
542     }
543
544   if (len == 0)
545     {
546       xsnprintf (buf, sizeof (buf), "__%s%s", const_prefix, volatile_prefix);
547     }
548   else if (physname[0] == 't' || physname[0] == 'Q')
549     {
550       /* The physname for template and qualified methods already includes
551          the class name.  */
552       xsnprintf (buf, sizeof (buf), "__%s%s", const_prefix, volatile_prefix);
553       newname = NULL;
554       len = 0;
555     }
556   else
557     {
558       xsnprintf (buf, sizeof (buf), "__%s%s%d", const_prefix,
559                  volatile_prefix, len);
560     }
561   mangled_name_len = ((is_constructor ? 0 : strlen (field_name))
562                       + strlen (buf) + len + strlen (physname) + 1);
563
564   mangled_name = (char *) xmalloc (mangled_name_len);
565   if (is_constructor)
566     mangled_name[0] = '\0';
567   else
568     strcpy (mangled_name, field_name);
569
570   strcat (mangled_name, buf);
571   /* If the class doesn't have a name, i.e. newname NULL, then we just
572      mangle it using 0 for the length of the class.  Thus it gets mangled
573      as something starting with `::' rather than `classname::'.  */
574   if (newname != NULL)
575     strcat (mangled_name, newname);
576
577   strcat (mangled_name, physname);
578   return (mangled_name);
579 }
580
581 /* Set the demangled name of GSYMBOL to NAME.  NAME must be already
582    correctly allocated.  */
583
584 void
585 symbol_set_demangled_name (struct general_symbol_info *gsymbol,
586                            const char *name,
587                            struct obstack *obstack)
588 {
589   if (gsymbol->language == language_ada)
590     {
591       if (name == NULL)
592         {
593           gsymbol->ada_mangled = 0;
594           gsymbol->language_specific.obstack = obstack;
595         }
596       else
597         {
598           gsymbol->ada_mangled = 1;
599           gsymbol->language_specific.mangled_lang.demangled_name = name;
600         }
601     }
602   else
603     gsymbol->language_specific.mangled_lang.demangled_name = name;
604 }
605
606 /* Return the demangled name of GSYMBOL.  */
607
608 const char *
609 symbol_get_demangled_name (const struct general_symbol_info *gsymbol)
610 {
611   if (gsymbol->language == language_ada)
612     {
613       if (!gsymbol->ada_mangled)
614         return NULL;
615       /* Fall through.  */
616     }
617
618   return gsymbol->language_specific.mangled_lang.demangled_name;
619 }
620
621 \f
622 /* Initialize the language dependent portion of a symbol
623    depending upon the language for the symbol.  */
624
625 void
626 symbol_set_language (struct general_symbol_info *gsymbol,
627                      enum language language,
628                      struct obstack *obstack)
629 {
630   gsymbol->language = language;
631   if (gsymbol->language == language_cplus
632       || gsymbol->language == language_d
633       || gsymbol->language == language_go
634       || gsymbol->language == language_java
635       || gsymbol->language == language_objc
636       || gsymbol->language == language_fortran)
637     {
638       symbol_set_demangled_name (gsymbol, NULL, obstack);
639     }
640   else if (gsymbol->language == language_ada)
641     {
642       gdb_assert (gsymbol->ada_mangled == 0);
643       gsymbol->language_specific.obstack = obstack;
644     }
645   else
646     {
647       memset (&gsymbol->language_specific, 0,
648               sizeof (gsymbol->language_specific));
649     }
650 }
651
652 /* Functions to initialize a symbol's mangled name.  */
653
654 /* Objects of this type are stored in the demangled name hash table.  */
655 struct demangled_name_entry
656 {
657   const char *mangled;
658   char demangled[1];
659 };
660
661 /* Hash function for the demangled name hash.  */
662
663 static hashval_t
664 hash_demangled_name_entry (const void *data)
665 {
666   const struct demangled_name_entry *e = data;
667
668   return htab_hash_string (e->mangled);
669 }
670
671 /* Equality function for the demangled name hash.  */
672
673 static int
674 eq_demangled_name_entry (const void *a, const void *b)
675 {
676   const struct demangled_name_entry *da = a;
677   const struct demangled_name_entry *db = b;
678
679   return strcmp (da->mangled, db->mangled) == 0;
680 }
681
682 /* Create the hash table used for demangled names.  Each hash entry is
683    a pair of strings; one for the mangled name and one for the demangled
684    name.  The entry is hashed via just the mangled name.  */
685
686 static void
687 create_demangled_names_hash (struct objfile *objfile)
688 {
689   /* Choose 256 as the starting size of the hash table, somewhat arbitrarily.
690      The hash table code will round this up to the next prime number.
691      Choosing a much larger table size wastes memory, and saves only about
692      1% in symbol reading.  */
693
694   objfile->per_bfd->demangled_names_hash = htab_create_alloc
695     (256, hash_demangled_name_entry, eq_demangled_name_entry,
696      NULL, xcalloc, xfree);
697 }
698
699 /* Try to determine the demangled name for a symbol, based on the
700    language of that symbol.  If the language is set to language_auto,
701    it will attempt to find any demangling algorithm that works and
702    then set the language appropriately.  The returned name is allocated
703    by the demangler and should be xfree'd.  */
704
705 static char *
706 symbol_find_demangled_name (struct general_symbol_info *gsymbol,
707                             const char *mangled)
708 {
709   char *demangled = NULL;
710
711   if (gsymbol->language == language_unknown)
712     gsymbol->language = language_auto;
713
714   if (gsymbol->language == language_objc
715       || gsymbol->language == language_auto)
716     {
717       demangled =
718         objc_demangle (mangled, 0);
719       if (demangled != NULL)
720         {
721           gsymbol->language = language_objc;
722           return demangled;
723         }
724     }
725   if (gsymbol->language == language_cplus
726       || gsymbol->language == language_auto)
727     {
728       demangled =
729         gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
730       if (demangled != NULL)
731         {
732           gsymbol->language = language_cplus;
733           return demangled;
734         }
735     }
736   if (gsymbol->language == language_java)
737     {
738       demangled =
739         gdb_demangle (mangled,
740                       DMGL_PARAMS | DMGL_ANSI | DMGL_JAVA);
741       if (demangled != NULL)
742         {
743           gsymbol->language = language_java;
744           return demangled;
745         }
746     }
747   if (gsymbol->language == language_d
748       || gsymbol->language == language_auto)
749     {
750       demangled = d_demangle(mangled, 0);
751       if (demangled != NULL)
752         {
753           gsymbol->language = language_d;
754           return demangled;
755         }
756     }
757   /* FIXME(dje): Continually adding languages here is clumsy.
758      Better to just call la_demangle if !auto, and if auto then call
759      a utility routine that tries successive languages in turn and reports
760      which one it finds.  I realize the la_demangle options may be different
761      for different languages but there's already a FIXME for that.  */
762   if (gsymbol->language == language_go
763       || gsymbol->language == language_auto)
764     {
765       demangled = go_demangle (mangled, 0);
766       if (demangled != NULL)
767         {
768           gsymbol->language = language_go;
769           return demangled;
770         }
771     }
772
773   /* We could support `gsymbol->language == language_fortran' here to provide
774      module namespaces also for inferiors with only minimal symbol table (ELF
775      symbols).  Just the mangling standard is not standardized across compilers
776      and there is no DW_AT_producer available for inferiors with only the ELF
777      symbols to check the mangling kind.  */
778
779   /* Check for Ada symbols last.  See comment below explaining why.  */
780
781   if (gsymbol->language == language_auto)
782    {
783      const char *demangled = ada_decode (mangled);
784
785      if (demangled != mangled && demangled != NULL && demangled[0] != '<')
786        {
787          /* Set the gsymbol language to Ada, but still return NULL.
788             Two reasons for that:
789
790               1. For Ada, we prefer computing the symbol's decoded name
791                  on the fly rather than pre-compute it, in order to save
792                  memory (Ada projects are typically very large).
793
794               2. There are some areas in the definition of the GNAT
795                  encoding where, with a bit of bad luck, we might be able
796                  to decode a non-Ada symbol, generating an incorrect
797                  demangled name (Eg: names ending with "TB" for instance
798                  are identified as task bodies and so stripped from
799                  the decoded name returned).
800
801                  Returning NULL, here, helps us get a little bit of
802                  the best of both worlds.  Because we're last, we should
803                  not affect any of the other languages that were able to
804                  demangle the symbol before us; we get to correctly tag
805                  Ada symbols as such; and even if we incorrectly tagged
806                  a non-Ada symbol, which should be rare, any routing
807                  through the Ada language should be transparent (Ada
808                  tries to behave much like C/C++ with non-Ada symbols).  */
809          gsymbol->language = language_ada;
810          return NULL;
811        }
812    }
813
814   return NULL;
815 }
816
817 /* Set both the mangled and demangled (if any) names for GSYMBOL based
818    on LINKAGE_NAME and LEN.  Ordinarily, NAME is copied onto the
819    objfile's obstack; but if COPY_NAME is 0 and if NAME is
820    NUL-terminated, then this function assumes that NAME is already
821    correctly saved (either permanently or with a lifetime tied to the
822    objfile), and it will not be copied.
823
824    The hash table corresponding to OBJFILE is used, and the memory
825    comes from the per-BFD storage_obstack.  LINKAGE_NAME is copied,
826    so the pointer can be discarded after calling this function.  */
827
828 /* We have to be careful when dealing with Java names: when we run
829    into a Java minimal symbol, we don't know it's a Java symbol, so it
830    gets demangled as a C++ name.  This is unfortunate, but there's not
831    much we can do about it: but when demangling partial symbols and
832    regular symbols, we'd better not reuse the wrong demangled name.
833    (See PR gdb/1039.)  We solve this by putting a distinctive prefix
834    on Java names when storing them in the hash table.  */
835
836 /* FIXME: carlton/2003-03-13: This is an unfortunate situation.  I
837    don't mind the Java prefix so much: different languages have
838    different demangling requirements, so it's only natural that we
839    need to keep language data around in our demangling cache.  But
840    it's not good that the minimal symbol has the wrong demangled name.
841    Unfortunately, I can't think of any easy solution to that
842    problem.  */
843
844 #define JAVA_PREFIX "##JAVA$$"
845 #define JAVA_PREFIX_LEN 8
846
847 void
848 symbol_set_names (struct general_symbol_info *gsymbol,
849                   const char *linkage_name, int len, int copy_name,
850                   struct objfile *objfile)
851 {
852   struct demangled_name_entry **slot;
853   /* A 0-terminated copy of the linkage name.  */
854   const char *linkage_name_copy;
855   /* A copy of the linkage name that might have a special Java prefix
856      added to it, for use when looking names up in the hash table.  */
857   const char *lookup_name;
858   /* The length of lookup_name.  */
859   int lookup_len;
860   struct demangled_name_entry entry;
861   struct objfile_per_bfd_storage *per_bfd = objfile->per_bfd;
862
863   if (gsymbol->language == language_ada)
864     {
865       /* In Ada, we do the symbol lookups using the mangled name, so
866          we can save some space by not storing the demangled name.
867
868          As a side note, we have also observed some overlap between
869          the C++ mangling and Ada mangling, similarly to what has
870          been observed with Java.  Because we don't store the demangled
871          name with the symbol, we don't need to use the same trick
872          as Java.  */
873       if (!copy_name)
874         gsymbol->name = linkage_name;
875       else
876         {
877           char *name = obstack_alloc (&per_bfd->storage_obstack, len + 1);
878
879           memcpy (name, linkage_name, len);
880           name[len] = '\0';
881           gsymbol->name = name;
882         }
883       symbol_set_demangled_name (gsymbol, NULL, &per_bfd->storage_obstack);
884
885       return;
886     }
887
888   if (per_bfd->demangled_names_hash == NULL)
889     create_demangled_names_hash (objfile);
890
891   /* The stabs reader generally provides names that are not
892      NUL-terminated; most of the other readers don't do this, so we
893      can just use the given copy, unless we're in the Java case.  */
894   if (gsymbol->language == language_java)
895     {
896       char *alloc_name;
897
898       lookup_len = len + JAVA_PREFIX_LEN;
899       alloc_name = alloca (lookup_len + 1);
900       memcpy (alloc_name, JAVA_PREFIX, JAVA_PREFIX_LEN);
901       memcpy (alloc_name + JAVA_PREFIX_LEN, linkage_name, len);
902       alloc_name[lookup_len] = '\0';
903
904       lookup_name = alloc_name;
905       linkage_name_copy = alloc_name + JAVA_PREFIX_LEN;
906     }
907   else if (linkage_name[len] != '\0')
908     {
909       char *alloc_name;
910
911       lookup_len = len;
912       alloc_name = alloca (lookup_len + 1);
913       memcpy (alloc_name, linkage_name, len);
914       alloc_name[lookup_len] = '\0';
915
916       lookup_name = alloc_name;
917       linkage_name_copy = alloc_name;
918     }
919   else
920     {
921       lookup_len = len;
922       lookup_name = linkage_name;
923       linkage_name_copy = linkage_name;
924     }
925
926   entry.mangled = lookup_name;
927   slot = ((struct demangled_name_entry **)
928           htab_find_slot (per_bfd->demangled_names_hash,
929                           &entry, INSERT));
930
931   /* If this name is not in the hash table, add it.  */
932   if (*slot == NULL
933       /* A C version of the symbol may have already snuck into the table.
934          This happens to, e.g., main.init (__go_init_main).  Cope.  */
935       || (gsymbol->language == language_go
936           && (*slot)->demangled[0] == '\0'))
937     {
938       char *demangled_name = symbol_find_demangled_name (gsymbol,
939                                                          linkage_name_copy);
940       int demangled_len = demangled_name ? strlen (demangled_name) : 0;
941
942       /* Suppose we have demangled_name==NULL, copy_name==0, and
943          lookup_name==linkage_name.  In this case, we already have the
944          mangled name saved, and we don't have a demangled name.  So,
945          you might think we could save a little space by not recording
946          this in the hash table at all.
947          
948          It turns out that it is actually important to still save such
949          an entry in the hash table, because storing this name gives
950          us better bcache hit rates for partial symbols.  */
951       if (!copy_name && lookup_name == linkage_name)
952         {
953           *slot = obstack_alloc (&per_bfd->storage_obstack,
954                                  offsetof (struct demangled_name_entry,
955                                            demangled)
956                                  + demangled_len + 1);
957           (*slot)->mangled = lookup_name;
958         }
959       else
960         {
961           char *mangled_ptr;
962
963           /* If we must copy the mangled name, put it directly after
964              the demangled name so we can have a single
965              allocation.  */
966           *slot = obstack_alloc (&per_bfd->storage_obstack,
967                                  offsetof (struct demangled_name_entry,
968                                            demangled)
969                                  + lookup_len + demangled_len + 2);
970           mangled_ptr = &((*slot)->demangled[demangled_len + 1]);
971           strcpy (mangled_ptr, lookup_name);
972           (*slot)->mangled = mangled_ptr;
973         }
974
975       if (demangled_name != NULL)
976         {
977           strcpy ((*slot)->demangled, demangled_name);
978           xfree (demangled_name);
979         }
980       else
981         (*slot)->demangled[0] = '\0';
982     }
983
984   gsymbol->name = (*slot)->mangled + lookup_len - len;
985   if ((*slot)->demangled[0] != '\0')
986     symbol_set_demangled_name (gsymbol, (*slot)->demangled,
987                                &per_bfd->storage_obstack);
988   else
989     symbol_set_demangled_name (gsymbol, NULL, &per_bfd->storage_obstack);
990 }
991
992 /* Return the source code name of a symbol.  In languages where
993    demangling is necessary, this is the demangled name.  */
994
995 const char *
996 symbol_natural_name (const struct general_symbol_info *gsymbol)
997 {
998   switch (gsymbol->language)
999     {
1000     case language_cplus:
1001     case language_d:
1002     case language_go:
1003     case language_java:
1004     case language_objc:
1005     case language_fortran:
1006       if (symbol_get_demangled_name (gsymbol) != NULL)
1007         return symbol_get_demangled_name (gsymbol);
1008       break;
1009     case language_ada:
1010       return ada_decode_symbol (gsymbol);
1011     default:
1012       break;
1013     }
1014   return gsymbol->name;
1015 }
1016
1017 /* Return the demangled name for a symbol based on the language for
1018    that symbol.  If no demangled name exists, return NULL.  */
1019
1020 const char *
1021 symbol_demangled_name (const struct general_symbol_info *gsymbol)
1022 {
1023   const char *dem_name = NULL;
1024
1025   switch (gsymbol->language)
1026     {
1027     case language_cplus:
1028     case language_d:
1029     case language_go:
1030     case language_java:
1031     case language_objc:
1032     case language_fortran:
1033       dem_name = symbol_get_demangled_name (gsymbol);
1034       break;
1035     case language_ada:
1036       dem_name = ada_decode_symbol (gsymbol);
1037       break;
1038     default:
1039       break;
1040     }
1041   return dem_name;
1042 }
1043
1044 /* Return the search name of a symbol---generally the demangled or
1045    linkage name of the symbol, depending on how it will be searched for.
1046    If there is no distinct demangled name, then returns the same value
1047    (same pointer) as SYMBOL_LINKAGE_NAME.  */
1048
1049 const char *
1050 symbol_search_name (const struct general_symbol_info *gsymbol)
1051 {
1052   if (gsymbol->language == language_ada)
1053     return gsymbol->name;
1054   else
1055     return symbol_natural_name (gsymbol);
1056 }
1057
1058 /* Initialize the structure fields to zero values.  */
1059
1060 void
1061 init_sal (struct symtab_and_line *sal)
1062 {
1063   memset (sal, 0, sizeof (*sal));
1064 }
1065 \f
1066
1067 /* Return 1 if the two sections are the same, or if they could
1068    plausibly be copies of each other, one in an original object
1069    file and another in a separated debug file.  */
1070
1071 int
1072 matching_obj_sections (struct obj_section *obj_first,
1073                        struct obj_section *obj_second)
1074 {
1075   asection *first = obj_first? obj_first->the_bfd_section : NULL;
1076   asection *second = obj_second? obj_second->the_bfd_section : NULL;
1077   struct objfile *obj;
1078
1079   /* If they're the same section, then they match.  */
1080   if (first == second)
1081     return 1;
1082
1083   /* If either is NULL, give up.  */
1084   if (first == NULL || second == NULL)
1085     return 0;
1086
1087   /* This doesn't apply to absolute symbols.  */
1088   if (first->owner == NULL || second->owner == NULL)
1089     return 0;
1090
1091   /* If they're in the same object file, they must be different sections.  */
1092   if (first->owner == second->owner)
1093     return 0;
1094
1095   /* Check whether the two sections are potentially corresponding.  They must
1096      have the same size, address, and name.  We can't compare section indexes,
1097      which would be more reliable, because some sections may have been
1098      stripped.  */
1099   if (bfd_get_section_size (first) != bfd_get_section_size (second))
1100     return 0;
1101
1102   /* In-memory addresses may start at a different offset, relativize them.  */
1103   if (bfd_get_section_vma (first->owner, first)
1104       - bfd_get_start_address (first->owner)
1105       != bfd_get_section_vma (second->owner, second)
1106          - bfd_get_start_address (second->owner))
1107     return 0;
1108
1109   if (bfd_get_section_name (first->owner, first) == NULL
1110       || bfd_get_section_name (second->owner, second) == NULL
1111       || strcmp (bfd_get_section_name (first->owner, first),
1112                  bfd_get_section_name (second->owner, second)) != 0)
1113     return 0;
1114
1115   /* Otherwise check that they are in corresponding objfiles.  */
1116
1117   ALL_OBJFILES (obj)
1118     if (obj->obfd == first->owner)
1119       break;
1120   gdb_assert (obj != NULL);
1121
1122   if (obj->separate_debug_objfile != NULL
1123       && obj->separate_debug_objfile->obfd == second->owner)
1124     return 1;
1125   if (obj->separate_debug_objfile_backlink != NULL
1126       && obj->separate_debug_objfile_backlink->obfd == second->owner)
1127     return 1;
1128
1129   return 0;
1130 }
1131
1132 /* See symtab.h.  */
1133
1134 void
1135 expand_symtab_containing_pc (CORE_ADDR pc, struct obj_section *section)
1136 {
1137   struct objfile *objfile;
1138   struct bound_minimal_symbol msymbol;
1139
1140   /* If we know that this is not a text address, return failure.  This is
1141      necessary because we loop based on texthigh and textlow, which do
1142      not include the data ranges.  */
1143   msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
1144   if (msymbol.minsym
1145       && (MSYMBOL_TYPE (msymbol.minsym) == mst_data
1146           || MSYMBOL_TYPE (msymbol.minsym) == mst_bss
1147           || MSYMBOL_TYPE (msymbol.minsym) == mst_abs
1148           || MSYMBOL_TYPE (msymbol.minsym) == mst_file_data
1149           || MSYMBOL_TYPE (msymbol.minsym) == mst_file_bss))
1150     return;
1151
1152   ALL_OBJFILES (objfile)
1153   {
1154     struct compunit_symtab *cust = NULL;
1155
1156     if (objfile->sf)
1157       cust = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile, msymbol,
1158                                                             pc, section, 0);
1159     if (cust)
1160       return;
1161   }
1162 }
1163 \f
1164 /* Hash function for the symbol cache.  */
1165
1166 static unsigned int
1167 hash_symbol_entry (const struct objfile *objfile_context,
1168                    const char *name, domain_enum domain)
1169 {
1170   unsigned int hash = (uintptr_t) objfile_context;
1171
1172   if (name != NULL)
1173     hash += htab_hash_string (name);
1174
1175   hash += domain;
1176
1177   return hash;
1178 }
1179
1180 /* Equality function for the symbol cache.  */
1181
1182 static int
1183 eq_symbol_entry (const struct symbol_cache_slot *slot,
1184                  const struct objfile *objfile_context,
1185                  const char *name, domain_enum domain)
1186 {
1187   const char *slot_name;
1188   domain_enum slot_domain;
1189
1190   if (slot->state == SYMBOL_SLOT_UNUSED)
1191     return 0;
1192
1193   if (slot->objfile_context != objfile_context)
1194     return 0;
1195
1196   if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1197     {
1198       slot_name = slot->value.not_found.name;
1199       slot_domain = slot->value.not_found.domain;
1200     }
1201   else
1202     {
1203       slot_name = SYMBOL_SEARCH_NAME (slot->value.found);
1204       slot_domain = SYMBOL_DOMAIN (slot->value.found);
1205     }
1206
1207   /* NULL names match.  */
1208   if (slot_name == NULL && name == NULL)
1209     {
1210       /* But there's no point in calling symbol_matches_domain in the
1211          SYMBOL_SLOT_FOUND case.  */
1212       if (slot_domain != domain)
1213         return 0;
1214     }
1215   else if (slot_name != NULL && name != NULL)
1216     {
1217       /* It's important that we use the same comparison that was done the
1218          first time through.  If the slot records a found symbol, then this
1219          means using strcmp_iw on SYMBOL_SEARCH_NAME.  See dictionary.c.
1220          It also means using symbol_matches_domain for found symbols.
1221          See block.c.
1222
1223          If the slot records a not-found symbol, then require a precise match.
1224          We could still be lax with whitespace like strcmp_iw though.  */
1225
1226       if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1227         {
1228           if (strcmp (slot_name, name) != 0)
1229             return 0;
1230           if (slot_domain != domain)
1231             return 0;
1232         }
1233       else
1234         {
1235           struct symbol *sym = slot->value.found;
1236
1237           if (strcmp_iw (slot_name, name) != 0)
1238             return 0;
1239           if (!symbol_matches_domain (SYMBOL_LANGUAGE (sym),
1240                                       slot_domain, domain))
1241             return 0;
1242         }
1243     }
1244   else
1245     {
1246       /* Only one name is NULL.  */
1247       return 0;
1248     }
1249
1250   return 1;
1251 }
1252
1253 /* Given a cache of size SIZE, return the size of the struct (with variable
1254    length array) in bytes.  */
1255
1256 static size_t
1257 symbol_cache_byte_size (unsigned int size)
1258 {
1259   return (sizeof (struct block_symbol_cache)
1260           + ((size - 1) * sizeof (struct symbol_cache_slot)));
1261 }
1262
1263 /* Resize CACHE.  */
1264
1265 static void
1266 resize_symbol_cache (struct symbol_cache *cache, unsigned int new_size)
1267 {
1268   /* If there's no change in size, don't do anything.
1269      All caches have the same size, so we can just compare with the size
1270      of the global symbols cache.  */
1271   if ((cache->global_symbols != NULL
1272        && cache->global_symbols->size == new_size)
1273       || (cache->global_symbols == NULL
1274           && new_size == 0))
1275     return;
1276
1277   xfree (cache->global_symbols);
1278   xfree (cache->static_symbols);
1279
1280   if (new_size == 0)
1281     {
1282       cache->global_symbols = NULL;
1283       cache->static_symbols = NULL;
1284     }
1285   else
1286     {
1287       size_t total_size = symbol_cache_byte_size (new_size);
1288
1289       cache->global_symbols = xcalloc (1, total_size);
1290       cache->static_symbols = xcalloc (1, total_size);
1291       cache->global_symbols->size = new_size;
1292       cache->static_symbols->size = new_size;
1293     }
1294 }
1295
1296 /* Make a symbol cache of size SIZE.  */
1297
1298 static struct symbol_cache *
1299 make_symbol_cache (unsigned int size)
1300 {
1301   struct symbol_cache *cache;
1302
1303   cache = XCNEW (struct symbol_cache);
1304   resize_symbol_cache (cache, symbol_cache_size);
1305   return cache;
1306 }
1307
1308 /* Free the space used by CACHE.  */
1309
1310 static void
1311 free_symbol_cache (struct symbol_cache *cache)
1312 {
1313   xfree (cache->global_symbols);
1314   xfree (cache->static_symbols);
1315   xfree (cache);
1316 }
1317
1318 /* Return the symbol cache of PSPACE.
1319    Create one if it doesn't exist yet.  */
1320
1321 static struct symbol_cache *
1322 get_symbol_cache (struct program_space *pspace)
1323 {
1324   struct symbol_cache *cache = program_space_data (pspace, symbol_cache_key);
1325
1326   if (cache == NULL)
1327     {
1328       cache = make_symbol_cache (symbol_cache_size);
1329       set_program_space_data (pspace, symbol_cache_key, cache);
1330     }
1331
1332   return cache;
1333 }
1334
1335 /* Delete the symbol cache of PSPACE.
1336    Called when PSPACE is destroyed.  */
1337
1338 static void
1339 symbol_cache_cleanup (struct program_space *pspace, void *data)
1340 {
1341   struct symbol_cache *cache = data;
1342
1343   free_symbol_cache (cache);
1344 }
1345
1346 /* Set the size of the symbol cache in all program spaces.  */
1347
1348 static void
1349 set_symbol_cache_size (unsigned int new_size)
1350 {
1351   struct program_space *pspace;
1352
1353   ALL_PSPACES (pspace)
1354     {
1355       struct symbol_cache *cache
1356         = program_space_data (pspace, symbol_cache_key);
1357
1358       /* The pspace could have been created but not have a cache yet.  */
1359       if (cache != NULL)
1360         resize_symbol_cache (cache, new_size);
1361     }
1362 }
1363
1364 /* Called when symbol-cache-size is set.  */
1365
1366 static void
1367 set_symbol_cache_size_handler (char *args, int from_tty,
1368                                struct cmd_list_element *c)
1369 {
1370   if (new_symbol_cache_size > MAX_SYMBOL_CACHE_SIZE)
1371     {
1372       /* Restore the previous value.
1373          This is the value the "show" command prints.  */
1374       new_symbol_cache_size = symbol_cache_size;
1375
1376       error (_("Symbol cache size is too large, max is %u."),
1377              MAX_SYMBOL_CACHE_SIZE);
1378     }
1379   symbol_cache_size = new_symbol_cache_size;
1380
1381   set_symbol_cache_size (symbol_cache_size);
1382 }
1383
1384 /* Lookup symbol NAME,DOMAIN in BLOCK in the symbol cache of PSPACE.
1385    OBJFILE_CONTEXT is the current objfile, which may be NULL.
1386    The result is the symbol if found, SYMBOL_LOOKUP_FAILED if a previous lookup
1387    failed (and thus this one will too), or NULL if the symbol is not present
1388    in the cache.
1389    *BSC_PTR, *SLOT_PTR are set to the cache and slot of the symbol, whether
1390    found or not found.  */
1391
1392 static struct symbol *
1393 symbol_cache_lookup (struct symbol_cache *cache,
1394                      struct objfile *objfile_context, int block,
1395                      const char *name, domain_enum domain,
1396                      struct block_symbol_cache **bsc_ptr,
1397                      struct symbol_cache_slot **slot_ptr)
1398 {
1399   struct block_symbol_cache *bsc;
1400   unsigned int hash;
1401   struct symbol_cache_slot *slot;
1402
1403   if (block == GLOBAL_BLOCK)
1404     bsc = cache->global_symbols;
1405   else
1406     bsc = cache->static_symbols;
1407   if (bsc == NULL)
1408     {
1409       *bsc_ptr = NULL;
1410       *slot_ptr = NULL;
1411       return NULL;
1412     }
1413
1414   hash = hash_symbol_entry (objfile_context, name, domain);
1415   slot = bsc->symbols + hash % bsc->size;
1416   *bsc_ptr = bsc;
1417   *slot_ptr = slot;
1418
1419   if (eq_symbol_entry (slot, objfile_context, name, domain))
1420     {
1421       if (symbol_lookup_debug)
1422         fprintf_unfiltered (gdb_stdlog,
1423                             "%s block symbol cache hit%s for %s, %s\n",
1424                             block == GLOBAL_BLOCK ? "Global" : "Static",
1425                             slot->state == SYMBOL_SLOT_NOT_FOUND
1426                             ? " (not found)" : "",
1427                             name, domain_name (domain));
1428       ++bsc->hits;
1429       if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1430         return SYMBOL_LOOKUP_FAILED;
1431       return slot->value.found;
1432     }
1433
1434   if (symbol_lookup_debug)
1435     {
1436       fprintf_unfiltered (gdb_stdlog,
1437                           "%s block symbol cache miss for %s, %s\n",
1438                           block == GLOBAL_BLOCK ? "Global" : "Static",
1439                           name, domain_name (domain));
1440     }
1441   ++bsc->misses;
1442   return NULL;
1443 }
1444
1445 /* Clear out SLOT.  */
1446
1447 static void
1448 symbol_cache_clear_slot (struct symbol_cache_slot *slot)
1449 {
1450   if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1451     xfree (slot->value.not_found.name);
1452   slot->state = SYMBOL_SLOT_UNUSED;
1453 }
1454
1455 /* Mark SYMBOL as found in SLOT.
1456    OBJFILE_CONTEXT is the current objfile when the lookup was done, or NULL
1457    if it's not needed to distinguish lookups (STATIC_BLOCK).  It is *not*
1458    necessarily the objfile the symbol was found in.  */
1459
1460 static void
1461 symbol_cache_mark_found (struct block_symbol_cache *bsc,
1462                          struct symbol_cache_slot *slot,
1463                          struct objfile *objfile_context,
1464                          struct symbol *symbol)
1465 {
1466   if (bsc == NULL)
1467     return;
1468   if (slot->state != SYMBOL_SLOT_UNUSED)
1469     {
1470       ++bsc->collisions;
1471       symbol_cache_clear_slot (slot);
1472     }
1473   slot->state = SYMBOL_SLOT_FOUND;
1474   slot->objfile_context = objfile_context;
1475   slot->value.found = symbol;
1476 }
1477
1478 /* Mark symbol NAME, DOMAIN as not found in SLOT.
1479    OBJFILE_CONTEXT is the current objfile when the lookup was done, or NULL
1480    if it's not needed to distinguish lookups (STATIC_BLOCK).  */
1481
1482 static void
1483 symbol_cache_mark_not_found (struct block_symbol_cache *bsc,
1484                              struct symbol_cache_slot *slot,
1485                              struct objfile *objfile_context,
1486                              const char *name, domain_enum domain)
1487 {
1488   if (bsc == NULL)
1489     return;
1490   if (slot->state != SYMBOL_SLOT_UNUSED)
1491     {
1492       ++bsc->collisions;
1493       symbol_cache_clear_slot (slot);
1494     }
1495   slot->state = SYMBOL_SLOT_NOT_FOUND;
1496   slot->objfile_context = objfile_context;
1497   slot->value.not_found.name = xstrdup (name);
1498   slot->value.not_found.domain = domain;
1499 }
1500
1501 /* Flush the symbol cache of PSPACE.  */
1502
1503 static void
1504 symbol_cache_flush (struct program_space *pspace)
1505 {
1506   struct symbol_cache *cache = program_space_data (pspace, symbol_cache_key);
1507   int pass;
1508   size_t total_size;
1509
1510   if (cache == NULL)
1511     return;
1512   if (cache->global_symbols == NULL)
1513     {
1514       gdb_assert (symbol_cache_size == 0);
1515       gdb_assert (cache->static_symbols == NULL);
1516       return;
1517     }
1518
1519   /* If the cache is untouched since the last flush, early exit.
1520      This is important for performance during the startup of a program linked
1521      with 100s (or 1000s) of shared libraries.  */
1522   if (cache->global_symbols->misses == 0
1523       && cache->static_symbols->misses == 0)
1524     return;
1525
1526   gdb_assert (cache->global_symbols->size == symbol_cache_size);
1527   gdb_assert (cache->static_symbols->size == symbol_cache_size);
1528
1529   for (pass = 0; pass < 2; ++pass)
1530     {
1531       struct block_symbol_cache *bsc
1532         = pass == 0 ? cache->global_symbols : cache->static_symbols;
1533       unsigned int i;
1534
1535       for (i = 0; i < bsc->size; ++i)
1536         symbol_cache_clear_slot (&bsc->symbols[i]);
1537     }
1538
1539   cache->global_symbols->hits = 0;
1540   cache->global_symbols->misses = 0;
1541   cache->global_symbols->collisions = 0;
1542   cache->static_symbols->hits = 0;
1543   cache->static_symbols->misses = 0;
1544   cache->static_symbols->collisions = 0;
1545 }
1546
1547 /* Dump CACHE.  */
1548
1549 static void
1550 symbol_cache_dump (const struct symbol_cache *cache)
1551 {
1552   int pass;
1553
1554   if (cache->global_symbols == NULL)
1555     {
1556       printf_filtered ("  <disabled>\n");
1557       return;
1558     }
1559
1560   for (pass = 0; pass < 2; ++pass)
1561     {
1562       const struct block_symbol_cache *bsc
1563         = pass == 0 ? cache->global_symbols : cache->static_symbols;
1564       unsigned int i;
1565
1566       if (pass == 0)
1567         printf_filtered ("Global symbols:\n");
1568       else
1569         printf_filtered ("Static symbols:\n");
1570
1571       for (i = 0; i < bsc->size; ++i)
1572         {
1573           const struct symbol_cache_slot *slot = &bsc->symbols[i];
1574
1575           QUIT;
1576
1577           switch (slot->state)
1578             {
1579             case SYMBOL_SLOT_UNUSED:
1580               break;
1581             case SYMBOL_SLOT_NOT_FOUND:
1582               printf_filtered ("  [%-4u] = %s, %s (not found)\n", i,
1583                                host_address_to_string (slot->objfile_context),
1584                                slot->value.not_found.name);
1585               break;
1586             case SYMBOL_SLOT_FOUND:
1587               printf_filtered ("  [%-4u] = %s, %s\n", i,
1588                                host_address_to_string (slot->objfile_context),
1589                                SYMBOL_PRINT_NAME (slot->value.found));
1590               break;
1591             }
1592         }
1593     }
1594 }
1595
1596 /* The "mt print symbol-cache" command.  */
1597
1598 static void
1599 maintenance_print_symbol_cache (char *args, int from_tty)
1600 {
1601   struct program_space *pspace;
1602
1603   ALL_PSPACES (pspace)
1604     {
1605       struct symbol_cache *cache;
1606
1607       printf_filtered (_("Symbol cache for pspace %d\n%s:\n"),
1608                        pspace->num,
1609                        pspace->symfile_object_file != NULL
1610                        ? objfile_name (pspace->symfile_object_file)
1611                        : "(no object file)");
1612
1613       /* If the cache hasn't been created yet, avoid creating one.  */
1614       cache = program_space_data (pspace, symbol_cache_key);
1615       if (cache == NULL)
1616         printf_filtered ("  <empty>\n");
1617       else
1618         symbol_cache_dump (cache);
1619     }
1620 }
1621
1622 /* The "mt flush-symbol-cache" command.  */
1623
1624 static void
1625 maintenance_flush_symbol_cache (char *args, int from_tty)
1626 {
1627   struct program_space *pspace;
1628
1629   ALL_PSPACES (pspace)
1630     {
1631       symbol_cache_flush (pspace);
1632     }
1633 }
1634
1635 /* Print usage statistics of CACHE.  */
1636
1637 static void
1638 symbol_cache_stats (struct symbol_cache *cache)
1639 {
1640   int pass;
1641
1642   if (cache->global_symbols == NULL)
1643     {
1644       printf_filtered ("  <disabled>\n");
1645       return;
1646     }
1647
1648   for (pass = 0; pass < 2; ++pass)
1649     {
1650       const struct block_symbol_cache *bsc
1651         = pass == 0 ? cache->global_symbols : cache->static_symbols;
1652
1653       QUIT;
1654
1655       if (pass == 0)
1656         printf_filtered ("Global block cache stats:\n");
1657       else
1658         printf_filtered ("Static block cache stats:\n");
1659
1660       printf_filtered ("  size:       %u\n", bsc->size);
1661       printf_filtered ("  hits:       %u\n", bsc->hits);
1662       printf_filtered ("  misses:     %u\n", bsc->misses);
1663       printf_filtered ("  collisions: %u\n", bsc->collisions);
1664     }
1665 }
1666
1667 /* The "mt print symbol-cache-statistics" command.  */
1668
1669 static void
1670 maintenance_print_symbol_cache_statistics (char *args, int from_tty)
1671 {
1672   struct program_space *pspace;
1673
1674   ALL_PSPACES (pspace)
1675     {
1676       struct symbol_cache *cache;
1677
1678       printf_filtered (_("Symbol cache statistics for pspace %d\n%s:\n"),
1679                        pspace->num,
1680                        pspace->symfile_object_file != NULL
1681                        ? objfile_name (pspace->symfile_object_file)
1682                        : "(no object file)");
1683
1684       /* If the cache hasn't been created yet, avoid creating one.  */
1685       cache = program_space_data (pspace, symbol_cache_key);
1686       if (cache == NULL)
1687         printf_filtered ("  empty, no stats available\n");
1688       else
1689         symbol_cache_stats (cache);
1690     }
1691 }
1692
1693 /* This module's 'new_objfile' observer.  */
1694
1695 static void
1696 symtab_new_objfile_observer (struct objfile *objfile)
1697 {
1698   /* Ideally we'd use OBJFILE->pspace, but OBJFILE may be NULL.  */
1699   symbol_cache_flush (current_program_space);
1700 }
1701
1702 /* This module's 'free_objfile' observer.  */
1703
1704 static void
1705 symtab_free_objfile_observer (struct objfile *objfile)
1706 {
1707   symbol_cache_flush (objfile->pspace);
1708 }
1709 \f
1710 /* Debug symbols usually don't have section information.  We need to dig that
1711    out of the minimal symbols and stash that in the debug symbol.  */
1712
1713 void
1714 fixup_section (struct general_symbol_info *ginfo,
1715                CORE_ADDR addr, struct objfile *objfile)
1716 {
1717   struct minimal_symbol *msym;
1718
1719   /* First, check whether a minimal symbol with the same name exists
1720      and points to the same address.  The address check is required
1721      e.g. on PowerPC64, where the minimal symbol for a function will
1722      point to the function descriptor, while the debug symbol will
1723      point to the actual function code.  */
1724   msym = lookup_minimal_symbol_by_pc_name (addr, ginfo->name, objfile);
1725   if (msym)
1726     ginfo->section = MSYMBOL_SECTION (msym);
1727   else
1728     {
1729       /* Static, function-local variables do appear in the linker
1730          (minimal) symbols, but are frequently given names that won't
1731          be found via lookup_minimal_symbol().  E.g., it has been
1732          observed in frv-uclinux (ELF) executables that a static,
1733          function-local variable named "foo" might appear in the
1734          linker symbols as "foo.6" or "foo.3".  Thus, there is no
1735          point in attempting to extend the lookup-by-name mechanism to
1736          handle this case due to the fact that there can be multiple
1737          names.
1738
1739          So, instead, search the section table when lookup by name has
1740          failed.  The ``addr'' and ``endaddr'' fields may have already
1741          been relocated.  If so, the relocation offset (i.e. the
1742          ANOFFSET value) needs to be subtracted from these values when
1743          performing the comparison.  We unconditionally subtract it,
1744          because, when no relocation has been performed, the ANOFFSET
1745          value will simply be zero.
1746
1747          The address of the symbol whose section we're fixing up HAS
1748          NOT BEEN adjusted (relocated) yet.  It can't have been since
1749          the section isn't yet known and knowing the section is
1750          necessary in order to add the correct relocation value.  In
1751          other words, we wouldn't even be in this function (attempting
1752          to compute the section) if it were already known.
1753
1754          Note that it is possible to search the minimal symbols
1755          (subtracting the relocation value if necessary) to find the
1756          matching minimal symbol, but this is overkill and much less
1757          efficient.  It is not necessary to find the matching minimal
1758          symbol, only its section.
1759
1760          Note that this technique (of doing a section table search)
1761          can fail when unrelocated section addresses overlap.  For
1762          this reason, we still attempt a lookup by name prior to doing
1763          a search of the section table.  */
1764
1765       struct obj_section *s;
1766       int fallback = -1;
1767
1768       ALL_OBJFILE_OSECTIONS (objfile, s)
1769         {
1770           int idx = s - objfile->sections;
1771           CORE_ADDR offset = ANOFFSET (objfile->section_offsets, idx);
1772
1773           if (fallback == -1)
1774             fallback = idx;
1775
1776           if (obj_section_addr (s) - offset <= addr
1777               && addr < obj_section_endaddr (s) - offset)
1778             {
1779               ginfo->section = idx;
1780               return;
1781             }
1782         }
1783
1784       /* If we didn't find the section, assume it is in the first
1785          section.  If there is no allocated section, then it hardly
1786          matters what we pick, so just pick zero.  */
1787       if (fallback == -1)
1788         ginfo->section = 0;
1789       else
1790         ginfo->section = fallback;
1791     }
1792 }
1793
1794 struct symbol *
1795 fixup_symbol_section (struct symbol *sym, struct objfile *objfile)
1796 {
1797   CORE_ADDR addr;
1798
1799   if (!sym)
1800     return NULL;
1801
1802   if (!SYMBOL_OBJFILE_OWNED (sym))
1803     return sym;
1804
1805   /* We either have an OBJFILE, or we can get at it from the sym's
1806      symtab.  Anything else is a bug.  */
1807   gdb_assert (objfile || symbol_symtab (sym));
1808
1809   if (objfile == NULL)
1810     objfile = symbol_objfile (sym);
1811
1812   if (SYMBOL_OBJ_SECTION (objfile, sym))
1813     return sym;
1814
1815   /* We should have an objfile by now.  */
1816   gdb_assert (objfile);
1817
1818   switch (SYMBOL_CLASS (sym))
1819     {
1820     case LOC_STATIC:
1821     case LOC_LABEL:
1822       addr = SYMBOL_VALUE_ADDRESS (sym);
1823       break;
1824     case LOC_BLOCK:
1825       addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1826       break;
1827
1828     default:
1829       /* Nothing else will be listed in the minsyms -- no use looking
1830          it up.  */
1831       return sym;
1832     }
1833
1834   fixup_section (&sym->ginfo, addr, objfile);
1835
1836   return sym;
1837 }
1838
1839 /* Compute the demangled form of NAME as used by the various symbol
1840    lookup functions.  The result is stored in *RESULT_NAME.  Returns a
1841    cleanup which can be used to clean up the result.
1842
1843    For Ada, this function just sets *RESULT_NAME to NAME, unmodified.
1844    Normally, Ada symbol lookups are performed using the encoded name
1845    rather than the demangled name, and so it might seem to make sense
1846    for this function to return an encoded version of NAME.
1847    Unfortunately, we cannot do this, because this function is used in
1848    circumstances where it is not appropriate to try to encode NAME.
1849    For instance, when displaying the frame info, we demangle the name
1850    of each parameter, and then perform a symbol lookup inside our
1851    function using that demangled name.  In Ada, certain functions
1852    have internally-generated parameters whose name contain uppercase
1853    characters.  Encoding those name would result in those uppercase
1854    characters to become lowercase, and thus cause the symbol lookup
1855    to fail.  */
1856
1857 struct cleanup *
1858 demangle_for_lookup (const char *name, enum language lang,
1859                      const char **result_name)
1860 {
1861   char *demangled_name = NULL;
1862   const char *modified_name = NULL;
1863   struct cleanup *cleanup = make_cleanup (null_cleanup, 0);
1864
1865   modified_name = name;
1866
1867   /* If we are using C++, D, Go, or Java, demangle the name before doing a
1868      lookup, so we can always binary search.  */
1869   if (lang == language_cplus)
1870     {
1871       demangled_name = gdb_demangle (name, DMGL_ANSI | DMGL_PARAMS);
1872       if (demangled_name)
1873         {
1874           modified_name = demangled_name;
1875           make_cleanup (xfree, demangled_name);
1876         }
1877       else
1878         {
1879           /* If we were given a non-mangled name, canonicalize it
1880              according to the language (so far only for C++).  */
1881           demangled_name = cp_canonicalize_string (name);
1882           if (demangled_name)
1883             {
1884               modified_name = demangled_name;
1885               make_cleanup (xfree, demangled_name);
1886             }
1887         }
1888     }
1889   else if (lang == language_java)
1890     {
1891       demangled_name = gdb_demangle (name,
1892                                      DMGL_ANSI | DMGL_PARAMS | DMGL_JAVA);
1893       if (demangled_name)
1894         {
1895           modified_name = demangled_name;
1896           make_cleanup (xfree, demangled_name);
1897         }
1898     }
1899   else if (lang == language_d)
1900     {
1901       demangled_name = d_demangle (name, 0);
1902       if (demangled_name)
1903         {
1904           modified_name = demangled_name;
1905           make_cleanup (xfree, demangled_name);
1906         }
1907     }
1908   else if (lang == language_go)
1909     {
1910       demangled_name = go_demangle (name, 0);
1911       if (demangled_name)
1912         {
1913           modified_name = demangled_name;
1914           make_cleanup (xfree, demangled_name);
1915         }
1916     }
1917
1918   *result_name = modified_name;
1919   return cleanup;
1920 }
1921
1922 /* See symtab.h.
1923
1924    This function (or rather its subordinates) have a bunch of loops and
1925    it would seem to be attractive to put in some QUIT's (though I'm not really
1926    sure whether it can run long enough to be really important).  But there
1927    are a few calls for which it would appear to be bad news to quit
1928    out of here: e.g., find_proc_desc in alpha-mdebug-tdep.c.  (Note
1929    that there is C++ code below which can error(), but that probably
1930    doesn't affect these calls since they are looking for a known
1931    variable and thus can probably assume it will never hit the C++
1932    code).  */
1933
1934 struct symbol *
1935 lookup_symbol_in_language (const char *name, const struct block *block,
1936                            const domain_enum domain, enum language lang,
1937                            struct field_of_this_result *is_a_field_of_this)
1938 {
1939   const char *modified_name;
1940   struct symbol *returnval;
1941   struct cleanup *cleanup = demangle_for_lookup (name, lang, &modified_name);
1942
1943   returnval = lookup_symbol_aux (modified_name, block, domain, lang,
1944                                  is_a_field_of_this);
1945   do_cleanups (cleanup);
1946
1947   return returnval;
1948 }
1949
1950 /* See symtab.h.  */
1951
1952 struct symbol *
1953 lookup_symbol (const char *name, const struct block *block,
1954                domain_enum domain,
1955                struct field_of_this_result *is_a_field_of_this)
1956 {
1957   return lookup_symbol_in_language (name, block, domain,
1958                                     current_language->la_language,
1959                                     is_a_field_of_this);
1960 }
1961
1962 /* See symtab.h.  */
1963
1964 struct symbol *
1965 lookup_language_this (const struct language_defn *lang,
1966                       const struct block *block)
1967 {
1968   if (lang->la_name_of_this == NULL || block == NULL)
1969     return NULL;
1970
1971   if (symbol_lookup_debug > 1)
1972     {
1973       struct objfile *objfile = lookup_objfile_from_block (block);
1974
1975       fprintf_unfiltered (gdb_stdlog,
1976                           "lookup_language_this (%s, %s (objfile %s))",
1977                           lang->la_name, host_address_to_string (block),
1978                           objfile_debug_name (objfile));
1979     }
1980
1981   while (block)
1982     {
1983       struct symbol *sym;
1984
1985       sym = block_lookup_symbol (block, lang->la_name_of_this, VAR_DOMAIN);
1986       if (sym != NULL)
1987         {
1988           if (symbol_lookup_debug > 1)
1989             {
1990               fprintf_unfiltered (gdb_stdlog, " = %s (%s, block %s)\n",
1991                                   SYMBOL_PRINT_NAME (sym),
1992                                   host_address_to_string (sym),
1993                                   host_address_to_string (block));
1994             }
1995           block_found = block;
1996           return sym;
1997         }
1998       if (BLOCK_FUNCTION (block))
1999         break;
2000       block = BLOCK_SUPERBLOCK (block);
2001     }
2002
2003   if (symbol_lookup_debug > 1)
2004     fprintf_unfiltered (gdb_stdlog, " = NULL\n");
2005   return NULL;
2006 }
2007
2008 /* Given TYPE, a structure/union,
2009    return 1 if the component named NAME from the ultimate target
2010    structure/union is defined, otherwise, return 0.  */
2011
2012 static int
2013 check_field (struct type *type, const char *name,
2014              struct field_of_this_result *is_a_field_of_this)
2015 {
2016   int i;
2017
2018   /* The type may be a stub.  */
2019   CHECK_TYPEDEF (type);
2020
2021   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2022     {
2023       const char *t_field_name = TYPE_FIELD_NAME (type, i);
2024
2025       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2026         {
2027           is_a_field_of_this->type = type;
2028           is_a_field_of_this->field = &TYPE_FIELD (type, i);
2029           return 1;
2030         }
2031     }
2032
2033   /* C++: If it was not found as a data field, then try to return it
2034      as a pointer to a method.  */
2035
2036   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2037     {
2038       if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2039         {
2040           is_a_field_of_this->type = type;
2041           is_a_field_of_this->fn_field = &TYPE_FN_FIELDLIST (type, i);
2042           return 1;
2043         }
2044     }
2045
2046   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2047     if (check_field (TYPE_BASECLASS (type, i), name, is_a_field_of_this))
2048       return 1;
2049
2050   return 0;
2051 }
2052
2053 /* Behave like lookup_symbol except that NAME is the natural name
2054    (e.g., demangled name) of the symbol that we're looking for.  */
2055
2056 static struct symbol *
2057 lookup_symbol_aux (const char *name, const struct block *block,
2058                    const domain_enum domain, enum language language,
2059                    struct field_of_this_result *is_a_field_of_this)
2060 {
2061   struct symbol *sym;
2062   const struct language_defn *langdef;
2063
2064   if (symbol_lookup_debug)
2065     {
2066       struct objfile *objfile = lookup_objfile_from_block (block);
2067
2068       fprintf_unfiltered (gdb_stdlog,
2069                           "lookup_symbol_aux (%s, %s (objfile %s), %s, %s)\n",
2070                           name, host_address_to_string (block),
2071                           objfile != NULL
2072                           ? objfile_debug_name (objfile) : "NULL",
2073                           domain_name (domain), language_str (language));
2074     }
2075
2076   /* Initialize block_found so that the language la_lookup_symbol_nonlocal
2077      routines don't have to set it (to NULL) if a primitive type is found.
2078      We do this early so that block_found is also NULL if no symbol is
2079      found (though this is not part of the API, and callers cannot assume
2080      this).  */
2081   block_found = NULL;
2082
2083   /* Make sure we do something sensible with is_a_field_of_this, since
2084      the callers that set this parameter to some non-null value will
2085      certainly use it later.  If we don't set it, the contents of
2086      is_a_field_of_this are undefined.  */
2087   if (is_a_field_of_this != NULL)
2088     memset (is_a_field_of_this, 0, sizeof (*is_a_field_of_this));
2089
2090   /* Search specified block and its superiors.  Don't search
2091      STATIC_BLOCK or GLOBAL_BLOCK.  */
2092
2093   sym = lookup_local_symbol (name, block, domain, language);
2094   if (sym != NULL)
2095     {
2096       if (symbol_lookup_debug)
2097         {
2098           fprintf_unfiltered (gdb_stdlog, "lookup_symbol_aux (...) = %s\n",
2099                               host_address_to_string (sym));
2100         }
2101       return sym;
2102     }
2103
2104   /* If requested to do so by the caller and if appropriate for LANGUAGE,
2105      check to see if NAME is a field of `this'.  */
2106
2107   langdef = language_def (language);
2108
2109   /* Don't do this check if we are searching for a struct.  It will
2110      not be found by check_field, but will be found by other
2111      means.  */
2112   if (is_a_field_of_this != NULL && domain != STRUCT_DOMAIN)
2113     {
2114       struct symbol *sym = lookup_language_this (langdef, block);
2115
2116       if (sym)
2117         {
2118           struct type *t = sym->type;
2119
2120           /* I'm not really sure that type of this can ever
2121              be typedefed; just be safe.  */
2122           CHECK_TYPEDEF (t);
2123           if (TYPE_CODE (t) == TYPE_CODE_PTR
2124               || TYPE_CODE (t) == TYPE_CODE_REF)
2125             t = TYPE_TARGET_TYPE (t);
2126
2127           if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2128               && TYPE_CODE (t) != TYPE_CODE_UNION)
2129             error (_("Internal error: `%s' is not an aggregate"),
2130                    langdef->la_name_of_this);
2131
2132           if (check_field (t, name, is_a_field_of_this))
2133             {
2134               if (symbol_lookup_debug)
2135                 {
2136                   fprintf_unfiltered (gdb_stdlog,
2137                                       "lookup_symbol_aux (...) = NULL\n");
2138                 }
2139               return NULL;
2140             }
2141         }
2142     }
2143
2144   /* Now do whatever is appropriate for LANGUAGE to look
2145      up static and global variables.  */
2146
2147   sym = langdef->la_lookup_symbol_nonlocal (langdef, name, block, domain);
2148   if (sym != NULL)
2149     {
2150       if (symbol_lookup_debug)
2151         {
2152           fprintf_unfiltered (gdb_stdlog, "lookup_symbol_aux (...) = %s\n",
2153                               host_address_to_string (sym));
2154         }
2155       return sym;
2156     }
2157
2158   /* Now search all static file-level symbols.  Not strictly correct,
2159      but more useful than an error.  */
2160
2161   sym = lookup_static_symbol (name, domain);
2162   if (symbol_lookup_debug)
2163     {
2164       fprintf_unfiltered (gdb_stdlog, "lookup_symbol_aux (...) = %s\n",
2165                           sym != NULL ? host_address_to_string (sym) : "NULL");
2166     }
2167   return sym;
2168 }
2169
2170 /* Check to see if the symbol is defined in BLOCK or its superiors.
2171    Don't search STATIC_BLOCK or GLOBAL_BLOCK.  */
2172
2173 static struct symbol *
2174 lookup_local_symbol (const char *name, const struct block *block,
2175                      const domain_enum domain,
2176                      enum language language)
2177 {
2178   struct symbol *sym;
2179   const struct block *static_block = block_static_block (block);
2180   const char *scope = block_scope (block);
2181   
2182   /* Check if either no block is specified or it's a global block.  */
2183
2184   if (static_block == NULL)
2185     return NULL;
2186
2187   while (block != static_block)
2188     {
2189       sym = lookup_symbol_in_block (name, block, domain);
2190       if (sym != NULL)
2191         return sym;
2192
2193       if (language == language_cplus || language == language_fortran)
2194         {
2195           sym = cp_lookup_symbol_imports_or_template (scope, name, block,
2196                                                       domain);
2197           if (sym != NULL)
2198             return sym;
2199         }
2200
2201       if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block))
2202         break;
2203       block = BLOCK_SUPERBLOCK (block);
2204     }
2205
2206   /* We've reached the end of the function without finding a result.  */
2207
2208   return NULL;
2209 }
2210
2211 /* See symtab.h.  */
2212
2213 struct objfile *
2214 lookup_objfile_from_block (const struct block *block)
2215 {
2216   struct objfile *obj;
2217   struct compunit_symtab *cust;
2218
2219   if (block == NULL)
2220     return NULL;
2221
2222   block = block_global_block (block);
2223   /* Look through all blockvectors.  */
2224   ALL_COMPUNITS (obj, cust)
2225     if (block == BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
2226                                     GLOBAL_BLOCK))
2227       {
2228         if (obj->separate_debug_objfile_backlink)
2229           obj = obj->separate_debug_objfile_backlink;
2230
2231         return obj;
2232       }
2233
2234   return NULL;
2235 }
2236
2237 /* See symtab.h.  */
2238
2239 struct symbol *
2240 lookup_symbol_in_block (const char *name, const struct block *block,
2241                         const domain_enum domain)
2242 {
2243   struct symbol *sym;
2244
2245   if (symbol_lookup_debug > 1)
2246     {
2247       struct objfile *objfile = lookup_objfile_from_block (block);
2248
2249       fprintf_unfiltered (gdb_stdlog,
2250                           "lookup_symbol_in_block (%s, %s (objfile %s), %s)",
2251                           name, host_address_to_string (block),
2252                           objfile_debug_name (objfile),
2253                           domain_name (domain));
2254     }
2255
2256   sym = block_lookup_symbol (block, name, domain);
2257   if (sym)
2258     {
2259       if (symbol_lookup_debug > 1)
2260         {
2261           fprintf_unfiltered (gdb_stdlog, " = %s\n",
2262                               host_address_to_string (sym));
2263         }
2264       block_found = block;
2265       return fixup_symbol_section (sym, NULL);
2266     }
2267
2268   if (symbol_lookup_debug > 1)
2269     fprintf_unfiltered (gdb_stdlog, " = NULL\n");
2270   return NULL;
2271 }
2272
2273 /* See symtab.h.  */
2274
2275 struct symbol *
2276 lookup_global_symbol_from_objfile (struct objfile *main_objfile,
2277                                    const char *name,
2278                                    const domain_enum domain)
2279 {
2280   struct objfile *objfile;
2281
2282   for (objfile = main_objfile;
2283        objfile;
2284        objfile = objfile_separate_debug_iterate (main_objfile, objfile))
2285     {
2286       struct symbol *sym = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK,
2287                                                      name, domain);
2288
2289       if (sym != NULL)
2290         return sym;
2291     }
2292
2293   return NULL;
2294 }
2295
2296 /* Check to see if the symbol is defined in one of the OBJFILE's
2297    symtabs.  BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
2298    depending on whether or not we want to search global symbols or
2299    static symbols.  */
2300
2301 static struct symbol *
2302 lookup_symbol_in_objfile_symtabs (struct objfile *objfile, int block_index,
2303                                   const char *name, const domain_enum domain)
2304 {
2305   struct compunit_symtab *cust;
2306
2307   gdb_assert (block_index == GLOBAL_BLOCK || block_index == STATIC_BLOCK);
2308
2309   if (symbol_lookup_debug > 1)
2310     {
2311       fprintf_unfiltered (gdb_stdlog,
2312                           "lookup_symbol_in_objfile_symtabs (%s, %s, %s, %s)",
2313                           objfile_debug_name (objfile),
2314                           block_index == GLOBAL_BLOCK
2315                           ? "GLOBAL_BLOCK" : "STATIC_BLOCK",
2316                           name, domain_name (domain));
2317     }
2318
2319   ALL_OBJFILE_COMPUNITS (objfile, cust)
2320     {
2321       const struct blockvector *bv;
2322       const struct block *block;
2323       struct symbol *sym;
2324
2325       bv = COMPUNIT_BLOCKVECTOR (cust);
2326       block = BLOCKVECTOR_BLOCK (bv, block_index);
2327       sym = block_lookup_symbol_primary (block, name, domain);
2328       if (sym)
2329         {
2330           if (symbol_lookup_debug > 1)
2331             {
2332               fprintf_unfiltered (gdb_stdlog, " = %s (block %s)\n",
2333                                   host_address_to_string (sym),
2334                                   host_address_to_string (block));
2335             }
2336           block_found = block;
2337           return fixup_symbol_section (sym, objfile);
2338         }
2339     }
2340
2341   if (symbol_lookup_debug > 1)
2342     fprintf_unfiltered (gdb_stdlog, " = NULL\n");
2343   return NULL;
2344 }
2345
2346 /* Wrapper around lookup_symbol_in_objfile_symtabs for search_symbols.
2347    Look up LINKAGE_NAME in DOMAIN in the global and static blocks of OBJFILE
2348    and all associated separate debug objfiles.
2349
2350    Normally we only look in OBJFILE, and not any separate debug objfiles
2351    because the outer loop will cause them to be searched too.  This case is
2352    different.  Here we're called from search_symbols where it will only
2353    call us for the the objfile that contains a matching minsym.  */
2354
2355 static struct symbol *
2356 lookup_symbol_in_objfile_from_linkage_name (struct objfile *objfile,
2357                                             const char *linkage_name,
2358                                             domain_enum domain)
2359 {
2360   enum language lang = current_language->la_language;
2361   const char *modified_name;
2362   struct cleanup *cleanup = demangle_for_lookup (linkage_name, lang,
2363                                                  &modified_name);
2364   struct objfile *main_objfile, *cur_objfile;
2365
2366   if (objfile->separate_debug_objfile_backlink)
2367     main_objfile = objfile->separate_debug_objfile_backlink;
2368   else
2369     main_objfile = objfile;
2370
2371   for (cur_objfile = main_objfile;
2372        cur_objfile;
2373        cur_objfile = objfile_separate_debug_iterate (main_objfile, cur_objfile))
2374     {
2375       struct symbol *sym;
2376
2377       sym = lookup_symbol_in_objfile_symtabs (cur_objfile, GLOBAL_BLOCK,
2378                                               modified_name, domain);
2379       if (sym == NULL)
2380         sym = lookup_symbol_in_objfile_symtabs (cur_objfile, STATIC_BLOCK,
2381                                                 modified_name, domain);
2382       if (sym != NULL)
2383         {
2384           do_cleanups (cleanup);
2385           return sym;
2386         }
2387     }
2388
2389   do_cleanups (cleanup);
2390   return NULL;
2391 }
2392
2393 /* A helper function that throws an exception when a symbol was found
2394    in a psymtab but not in a symtab.  */
2395
2396 static void ATTRIBUTE_NORETURN
2397 error_in_psymtab_expansion (int block_index, const char *name,
2398                             struct compunit_symtab *cust)
2399 {
2400   error (_("\
2401 Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n\
2402 %s may be an inlined function, or may be a template function\n   \
2403 (if a template, try specifying an instantiation: %s<type>)."),
2404          block_index == GLOBAL_BLOCK ? "global" : "static",
2405          name,
2406          symtab_to_filename_for_display (compunit_primary_filetab (cust)),
2407          name, name);
2408 }
2409
2410 /* A helper function for various lookup routines that interfaces with
2411    the "quick" symbol table functions.  */
2412
2413 static struct symbol *
2414 lookup_symbol_via_quick_fns (struct objfile *objfile, int block_index,
2415                              const char *name, const domain_enum domain)
2416 {
2417   struct compunit_symtab *cust;
2418   const struct blockvector *bv;
2419   const struct block *block;
2420   struct symbol *sym;
2421
2422   if (!objfile->sf)
2423     return NULL;
2424
2425   if (symbol_lookup_debug > 1)
2426     {
2427       fprintf_unfiltered (gdb_stdlog,
2428                           "lookup_symbol_via_quick_fns (%s, %s, %s, %s)\n",
2429                           objfile_debug_name (objfile),
2430                           block_index == GLOBAL_BLOCK
2431                           ? "GLOBAL_BLOCK" : "STATIC_BLOCK",
2432                           name, domain_name (domain));
2433     }
2434
2435   cust = objfile->sf->qf->lookup_symbol (objfile, block_index, name, domain);
2436   if (cust == NULL)
2437     {
2438       if (symbol_lookup_debug > 1)
2439         {
2440           fprintf_unfiltered (gdb_stdlog,
2441                               "lookup_symbol_via_quick_fns (...) = NULL\n");
2442         }
2443       return NULL;
2444     }
2445
2446   bv = COMPUNIT_BLOCKVECTOR (cust);
2447   block = BLOCKVECTOR_BLOCK (bv, block_index);
2448   sym = block_lookup_symbol (block, name, domain);
2449   if (!sym)
2450     error_in_psymtab_expansion (block_index, name, cust);
2451
2452   if (symbol_lookup_debug > 1)
2453     {
2454       fprintf_unfiltered (gdb_stdlog,
2455                           "lookup_symbol_via_quick_fns (...) = %s (block %s)\n",
2456                           host_address_to_string (sym),
2457                           host_address_to_string (block));
2458     }
2459
2460   block_found = block;
2461   return fixup_symbol_section (sym, objfile);
2462 }
2463
2464 /* See symtab.h.  */
2465
2466 struct symbol *
2467 basic_lookup_symbol_nonlocal (const struct language_defn *langdef,
2468                               const char *name,
2469                               const struct block *block,
2470                               const domain_enum domain)
2471 {
2472   struct symbol *sym;
2473
2474   /* NOTE: carlton/2003-05-19: The comments below were written when
2475      this (or what turned into this) was part of lookup_symbol_aux;
2476      I'm much less worried about these questions now, since these
2477      decisions have turned out well, but I leave these comments here
2478      for posterity.  */
2479
2480   /* NOTE: carlton/2002-12-05: There is a question as to whether or
2481      not it would be appropriate to search the current global block
2482      here as well.  (That's what this code used to do before the
2483      is_a_field_of_this check was moved up.)  On the one hand, it's
2484      redundant with the lookup in all objfiles search that happens
2485      next.  On the other hand, if decode_line_1 is passed an argument
2486      like filename:var, then the user presumably wants 'var' to be
2487      searched for in filename.  On the third hand, there shouldn't be
2488      multiple global variables all of which are named 'var', and it's
2489      not like decode_line_1 has ever restricted its search to only
2490      global variables in a single filename.  All in all, only
2491      searching the static block here seems best: it's correct and it's
2492      cleanest.  */
2493
2494   /* NOTE: carlton/2002-12-05: There's also a possible performance
2495      issue here: if you usually search for global symbols in the
2496      current file, then it would be slightly better to search the
2497      current global block before searching all the symtabs.  But there
2498      are other factors that have a much greater effect on performance
2499      than that one, so I don't think we should worry about that for
2500      now.  */
2501
2502   /* NOTE: dje/2014-10-26: The lookup in all objfiles search could skip
2503      the current objfile.  Searching the current objfile first is useful
2504      for both matching user expectations as well as performance.  */
2505
2506   sym = lookup_symbol_in_static_block (name, block, domain);
2507   if (sym != NULL)
2508     return sym;
2509
2510   /* If we didn't find a definition for a builtin type in the static block,
2511      search for it now.  This is actually the right thing to do and can be
2512      a massive performance win.  E.g., when debugging a program with lots of
2513      shared libraries we could search all of them only to find out the
2514      builtin type isn't defined in any of them.  This is common for types
2515      like "void".  */
2516   if (domain == VAR_DOMAIN)
2517     {
2518       struct gdbarch *gdbarch;
2519
2520       if (block == NULL)
2521         gdbarch = target_gdbarch ();
2522       else
2523         gdbarch = block_gdbarch (block);
2524       sym = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
2525       if (sym != NULL)
2526         return sym;
2527     }
2528
2529   return lookup_global_symbol (name, block, domain);
2530 }
2531
2532 /* See symtab.h.  */
2533
2534 struct symbol *
2535 lookup_symbol_in_static_block (const char *name,
2536                                const struct block *block,
2537                                const domain_enum domain)
2538 {
2539   const struct block *static_block = block_static_block (block);
2540   struct symbol *sym;
2541
2542   if (static_block == NULL)
2543     return NULL;
2544
2545   if (symbol_lookup_debug)
2546     {
2547       struct objfile *objfile = lookup_objfile_from_block (static_block);
2548
2549       fprintf_unfiltered (gdb_stdlog,
2550                           "lookup_symbol_in_static_block (%s, %s (objfile %s),"
2551                           " %s)\n",
2552                           name,
2553                           host_address_to_string (block),
2554                           objfile_debug_name (objfile),
2555                           domain_name (domain));
2556     }
2557
2558   sym = lookup_symbol_in_block (name, static_block, domain);
2559   if (symbol_lookup_debug)
2560     {
2561       fprintf_unfiltered (gdb_stdlog,
2562                           "lookup_symbol_in_static_block (...) = %s\n",
2563                           sym != NULL ? host_address_to_string (sym) : "NULL");
2564     }
2565   return sym;
2566 }
2567
2568 /* Perform the standard symbol lookup of NAME in OBJFILE:
2569    1) First search expanded symtabs, and if not found
2570    2) Search the "quick" symtabs (partial or .gdb_index).
2571    BLOCK_INDEX is one of GLOBAL_BLOCK or STATIC_BLOCK.  */
2572
2573 static struct symbol *
2574 lookup_symbol_in_objfile (struct objfile *objfile, int block_index,
2575                           const char *name, const domain_enum domain)
2576 {
2577   struct symbol *result;
2578
2579   if (symbol_lookup_debug)
2580     {
2581       fprintf_unfiltered (gdb_stdlog,
2582                           "lookup_symbol_in_objfile (%s, %s, %s, %s)\n",
2583                           objfile_debug_name (objfile),
2584                           block_index == GLOBAL_BLOCK
2585                           ? "GLOBAL_BLOCK" : "STATIC_BLOCK",
2586                           name, domain_name (domain));
2587     }
2588
2589   result = lookup_symbol_in_objfile_symtabs (objfile, block_index,
2590                                              name, domain);
2591   if (result != NULL)
2592     {
2593       if (symbol_lookup_debug)
2594         {
2595           fprintf_unfiltered (gdb_stdlog,
2596                               "lookup_symbol_in_objfile (...) = %s"
2597                               " (in symtabs)\n",
2598                               host_address_to_string (result));
2599         }
2600       return result;
2601     }
2602
2603   result = lookup_symbol_via_quick_fns (objfile, block_index,
2604                                         name, domain);
2605   if (symbol_lookup_debug)
2606     {
2607       fprintf_unfiltered (gdb_stdlog,
2608                           "lookup_symbol_in_objfile (...) = %s%s\n",
2609                           result != NULL
2610                           ? host_address_to_string (result)
2611                           : "NULL",
2612                           result != NULL ? " (via quick fns)" : "");
2613     }
2614   return result;
2615 }
2616
2617 /* See symtab.h.  */
2618
2619 struct symbol *
2620 lookup_static_symbol (const char *name, const domain_enum domain)
2621 {
2622   struct symbol_cache *cache = get_symbol_cache (current_program_space);
2623   struct objfile *objfile;
2624   struct symbol *result;
2625   struct block_symbol_cache *bsc;
2626   struct symbol_cache_slot *slot;
2627
2628   /* Lookup in STATIC_BLOCK is not current-objfile-dependent, so just pass
2629      NULL for OBJFILE_CONTEXT.  */
2630   result = symbol_cache_lookup (cache, NULL, STATIC_BLOCK, name, domain,
2631                                 &bsc, &slot);
2632   if (result != NULL)
2633     {
2634       if (result == SYMBOL_LOOKUP_FAILED)
2635         return NULL;
2636       return result;
2637     }
2638
2639   ALL_OBJFILES (objfile)
2640     {
2641       result = lookup_symbol_in_objfile (objfile, STATIC_BLOCK, name, domain);
2642       if (result != NULL)
2643         {
2644           /* Still pass NULL for OBJFILE_CONTEXT here.  */
2645           symbol_cache_mark_found (bsc, slot, NULL, result);
2646           return result;
2647         }
2648     }
2649
2650   /* Still pass NULL for OBJFILE_CONTEXT here.  */
2651   symbol_cache_mark_not_found (bsc, slot, NULL, name, domain);
2652   return NULL;
2653 }
2654
2655 /* Private data to be used with lookup_symbol_global_iterator_cb.  */
2656
2657 struct global_sym_lookup_data
2658 {
2659   /* The name of the symbol we are searching for.  */
2660   const char *name;
2661
2662   /* The domain to use for our search.  */
2663   domain_enum domain;
2664
2665   /* The field where the callback should store the symbol if found.
2666      It should be initialized to NULL before the search is started.  */
2667   struct symbol *result;
2668 };
2669
2670 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
2671    It searches by name for a symbol in the GLOBAL_BLOCK of the given
2672    OBJFILE.  The arguments for the search are passed via CB_DATA,
2673    which in reality is a pointer to struct global_sym_lookup_data.  */
2674
2675 static int
2676 lookup_symbol_global_iterator_cb (struct objfile *objfile,
2677                                   void *cb_data)
2678 {
2679   struct global_sym_lookup_data *data =
2680     (struct global_sym_lookup_data *) cb_data;
2681
2682   gdb_assert (data->result == NULL);
2683
2684   data->result = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK,
2685                                            data->name, data->domain);
2686
2687   /* If we found a match, tell the iterator to stop.  Otherwise,
2688      keep going.  */
2689   return (data->result != NULL);
2690 }
2691
2692 /* See symtab.h.  */
2693
2694 struct symbol *
2695 lookup_global_symbol (const char *name,
2696                       const struct block *block,
2697                       const domain_enum domain)
2698 {
2699   struct symbol_cache *cache = get_symbol_cache (current_program_space);
2700   struct symbol *sym;
2701   struct objfile *objfile;
2702   struct global_sym_lookup_data lookup_data;
2703   struct block_symbol_cache *bsc;
2704   struct symbol_cache_slot *slot;
2705
2706   objfile = lookup_objfile_from_block (block);
2707
2708   /* First see if we can find the symbol in the cache.
2709      This works because we use the current objfile to qualify the lookup.  */
2710   sym = symbol_cache_lookup (cache, objfile, GLOBAL_BLOCK, name, domain,
2711                              &bsc, &slot);
2712   if (sym != NULL)
2713     {
2714       if (sym == SYMBOL_LOOKUP_FAILED)
2715         return NULL;
2716       return sym;
2717     }
2718
2719   /* Call library-specific lookup procedure.  */
2720   if (objfile != NULL)
2721     sym = solib_global_lookup (objfile, name, domain);
2722
2723   /* If that didn't work go a global search (of global blocks, heh).  */
2724   if (sym == NULL)
2725     {
2726       memset (&lookup_data, 0, sizeof (lookup_data));
2727       lookup_data.name = name;
2728       lookup_data.domain = domain;
2729       gdbarch_iterate_over_objfiles_in_search_order
2730         (objfile != NULL ? get_objfile_arch (objfile) : target_gdbarch (),
2731          lookup_symbol_global_iterator_cb, &lookup_data, objfile);
2732       sym = lookup_data.result;
2733     }
2734
2735   if (sym != NULL)
2736     symbol_cache_mark_found (bsc, slot, objfile, sym);
2737   else
2738     symbol_cache_mark_not_found (bsc, slot, objfile, name, domain);
2739
2740   return sym;
2741 }
2742
2743 int
2744 symbol_matches_domain (enum language symbol_language,
2745                        domain_enum symbol_domain,
2746                        domain_enum domain)
2747 {
2748   /* For C++ "struct foo { ... }" also defines a typedef for "foo".
2749      A Java class declaration also defines a typedef for the class.
2750      Similarly, any Ada type declaration implicitly defines a typedef.  */
2751   if (symbol_language == language_cplus
2752       || symbol_language == language_d
2753       || symbol_language == language_java
2754       || symbol_language == language_ada)
2755     {
2756       if ((domain == VAR_DOMAIN || domain == STRUCT_DOMAIN)
2757           && symbol_domain == STRUCT_DOMAIN)
2758         return 1;
2759     }
2760   /* For all other languages, strict match is required.  */
2761   return (symbol_domain == domain);
2762 }
2763
2764 /* See symtab.h.  */
2765
2766 struct type *
2767 lookup_transparent_type (const char *name)
2768 {
2769   return current_language->la_lookup_transparent_type (name);
2770 }
2771
2772 /* A helper for basic_lookup_transparent_type that interfaces with the
2773    "quick" symbol table functions.  */
2774
2775 static struct type *
2776 basic_lookup_transparent_type_quick (struct objfile *objfile, int block_index,
2777                                      const char *name)
2778 {
2779   struct compunit_symtab *cust;
2780   const struct blockvector *bv;
2781   struct block *block;
2782   struct symbol *sym;
2783
2784   if (!objfile->sf)
2785     return NULL;
2786   cust = objfile->sf->qf->lookup_symbol (objfile, block_index, name,
2787                                          STRUCT_DOMAIN);
2788   if (cust == NULL)
2789     return NULL;
2790
2791   bv = COMPUNIT_BLOCKVECTOR (cust);
2792   block = BLOCKVECTOR_BLOCK (bv, block_index);
2793   sym = block_lookup_symbol (block, name, STRUCT_DOMAIN);
2794   if (!sym)
2795     error_in_psymtab_expansion (block_index, name, cust);
2796
2797   if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
2798     return SYMBOL_TYPE (sym);
2799
2800   return NULL;
2801 }
2802
2803 /* The standard implementation of lookup_transparent_type.  This code
2804    was modeled on lookup_symbol -- the parts not relevant to looking
2805    up types were just left out.  In particular it's assumed here that
2806    types are available in STRUCT_DOMAIN and only in file-static or
2807    global blocks.  */
2808
2809 struct type *
2810 basic_lookup_transparent_type (const char *name)
2811 {
2812   struct symbol *sym;
2813   struct compunit_symtab *cust;
2814   const struct blockvector *bv;
2815   struct objfile *objfile;
2816   struct block *block;
2817   struct type *t;
2818
2819   /* Now search all the global symbols.  Do the symtab's first, then
2820      check the psymtab's.  If a psymtab indicates the existence
2821      of the desired name as a global, then do psymtab-to-symtab
2822      conversion on the fly and return the found symbol.  */
2823
2824   ALL_OBJFILES (objfile)
2825   {
2826     ALL_OBJFILE_COMPUNITS (objfile, cust)
2827       {
2828         bv = COMPUNIT_BLOCKVECTOR (cust);
2829         block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
2830         sym = block_lookup_symbol (block, name, STRUCT_DOMAIN);
2831         if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
2832           {
2833             return SYMBOL_TYPE (sym);
2834           }
2835       }
2836   }
2837
2838   ALL_OBJFILES (objfile)
2839   {
2840     t = basic_lookup_transparent_type_quick (objfile, GLOBAL_BLOCK, name);
2841     if (t)
2842       return t;
2843   }
2844
2845   /* Now search the static file-level symbols.
2846      Not strictly correct, but more useful than an error.
2847      Do the symtab's first, then
2848      check the psymtab's.  If a psymtab indicates the existence
2849      of the desired name as a file-level static, then do psymtab-to-symtab
2850      conversion on the fly and return the found symbol.  */
2851
2852   ALL_OBJFILES (objfile)
2853   {
2854     ALL_OBJFILE_COMPUNITS (objfile, cust)
2855       {
2856         bv = COMPUNIT_BLOCKVECTOR (cust);
2857         block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
2858         sym = block_lookup_symbol (block, name, STRUCT_DOMAIN);
2859         if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
2860           {
2861             return SYMBOL_TYPE (sym);
2862           }
2863       }
2864   }
2865
2866   ALL_OBJFILES (objfile)
2867   {
2868     t = basic_lookup_transparent_type_quick (objfile, STATIC_BLOCK, name);
2869     if (t)
2870       return t;
2871   }
2872
2873   return (struct type *) 0;
2874 }
2875
2876 /* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
2877    
2878    For each symbol that matches, CALLBACK is called.  The symbol and
2879    DATA are passed to the callback.
2880    
2881    If CALLBACK returns zero, the iteration ends.  Otherwise, the
2882    search continues.  */
2883
2884 void
2885 iterate_over_symbols (const struct block *block, const char *name,
2886                       const domain_enum domain,
2887                       symbol_found_callback_ftype *callback,
2888                       void *data)
2889 {
2890   struct block_iterator iter;
2891   struct symbol *sym;
2892
2893   ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
2894     {
2895       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
2896                                  SYMBOL_DOMAIN (sym), domain))
2897         {
2898           if (!callback (sym, data))
2899             return;
2900         }
2901     }
2902 }
2903
2904 /* Find the compunit symtab associated with PC and SECTION.
2905    This will read in debug info as necessary.  */
2906
2907 struct compunit_symtab *
2908 find_pc_sect_compunit_symtab (CORE_ADDR pc, struct obj_section *section)
2909 {
2910   struct compunit_symtab *cust;
2911   struct compunit_symtab *best_cust = NULL;
2912   struct objfile *objfile;
2913   CORE_ADDR distance = 0;
2914   struct bound_minimal_symbol msymbol;
2915
2916   /* If we know that this is not a text address, return failure.  This is
2917      necessary because we loop based on the block's high and low code
2918      addresses, which do not include the data ranges, and because
2919      we call find_pc_sect_psymtab which has a similar restriction based
2920      on the partial_symtab's texthigh and textlow.  */
2921   msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
2922   if (msymbol.minsym
2923       && (MSYMBOL_TYPE (msymbol.minsym) == mst_data
2924           || MSYMBOL_TYPE (msymbol.minsym) == mst_bss
2925           || MSYMBOL_TYPE (msymbol.minsym) == mst_abs
2926           || MSYMBOL_TYPE (msymbol.minsym) == mst_file_data
2927           || MSYMBOL_TYPE (msymbol.minsym) == mst_file_bss))
2928     return NULL;
2929
2930   /* Search all symtabs for the one whose file contains our address, and which
2931      is the smallest of all the ones containing the address.  This is designed
2932      to deal with a case like symtab a is at 0x1000-0x2000 and 0x3000-0x4000
2933      and symtab b is at 0x2000-0x3000.  So the GLOBAL_BLOCK for a is from
2934      0x1000-0x4000, but for address 0x2345 we want to return symtab b.
2935
2936      This happens for native ecoff format, where code from included files
2937      gets its own symtab.  The symtab for the included file should have
2938      been read in already via the dependency mechanism.
2939      It might be swifter to create several symtabs with the same name
2940      like xcoff does (I'm not sure).
2941
2942      It also happens for objfiles that have their functions reordered.
2943      For these, the symtab we are looking for is not necessarily read in.  */
2944
2945   ALL_COMPUNITS (objfile, cust)
2946   {
2947     struct block *b;
2948     const struct blockvector *bv;
2949
2950     bv = COMPUNIT_BLOCKVECTOR (cust);
2951     b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
2952
2953     if (BLOCK_START (b) <= pc
2954         && BLOCK_END (b) > pc
2955         && (distance == 0
2956             || BLOCK_END (b) - BLOCK_START (b) < distance))
2957       {
2958         /* For an objfile that has its functions reordered,
2959            find_pc_psymtab will find the proper partial symbol table
2960            and we simply return its corresponding symtab.  */
2961         /* In order to better support objfiles that contain both
2962            stabs and coff debugging info, we continue on if a psymtab
2963            can't be found.  */
2964         if ((objfile->flags & OBJF_REORDERED) && objfile->sf)
2965           {
2966             struct compunit_symtab *result;
2967
2968             result
2969               = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile,
2970                                                                msymbol,
2971                                                                pc, section,
2972                                                                0);
2973             if (result != NULL)
2974               return result;
2975           }
2976         if (section != 0)
2977           {
2978             struct block_iterator iter;
2979             struct symbol *sym = NULL;
2980
2981             ALL_BLOCK_SYMBOLS (b, iter, sym)
2982               {
2983                 fixup_symbol_section (sym, objfile);
2984                 if (matching_obj_sections (SYMBOL_OBJ_SECTION (objfile, sym),
2985                                            section))
2986                   break;
2987               }
2988             if (sym == NULL)
2989               continue;         /* No symbol in this symtab matches
2990                                    section.  */
2991           }
2992         distance = BLOCK_END (b) - BLOCK_START (b);
2993         best_cust = cust;
2994       }
2995   }
2996
2997   if (best_cust != NULL)
2998     return best_cust;
2999
3000   /* Not found in symtabs, search the "quick" symtabs (e.g. psymtabs).  */
3001
3002   ALL_OBJFILES (objfile)
3003   {
3004     struct compunit_symtab *result;
3005
3006     if (!objfile->sf)
3007       continue;
3008     result = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile,
3009                                                             msymbol,
3010                                                             pc, section,
3011                                                             1);
3012     if (result != NULL)
3013       return result;
3014   }
3015
3016   return NULL;
3017 }
3018
3019 /* Find the compunit symtab associated with PC.
3020    This will read in debug info as necessary.
3021    Backward compatibility, no section.  */
3022
3023 struct compunit_symtab *
3024 find_pc_compunit_symtab (CORE_ADDR pc)
3025 {
3026   return find_pc_sect_compunit_symtab (pc, find_pc_mapped_section (pc));
3027 }
3028 \f
3029
3030 /* Find the source file and line number for a given PC value and SECTION.
3031    Return a structure containing a symtab pointer, a line number,
3032    and a pc range for the entire source line.
3033    The value's .pc field is NOT the specified pc.
3034    NOTCURRENT nonzero means, if specified pc is on a line boundary,
3035    use the line that ends there.  Otherwise, in that case, the line
3036    that begins there is used.  */
3037
3038 /* The big complication here is that a line may start in one file, and end just
3039    before the start of another file.  This usually occurs when you #include
3040    code in the middle of a subroutine.  To properly find the end of a line's PC
3041    range, we must search all symtabs associated with this compilation unit, and
3042    find the one whose first PC is closer than that of the next line in this
3043    symtab.  */
3044
3045 /* If it's worth the effort, we could be using a binary search.  */
3046
3047 struct symtab_and_line
3048 find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
3049 {
3050   struct compunit_symtab *cust;
3051   struct symtab *iter_s;
3052   struct linetable *l;
3053   int len;
3054   int i;
3055   struct linetable_entry *item;
3056   struct symtab_and_line val;
3057   const struct blockvector *bv;
3058   struct bound_minimal_symbol msymbol;
3059
3060   /* Info on best line seen so far, and where it starts, and its file.  */
3061
3062   struct linetable_entry *best = NULL;
3063   CORE_ADDR best_end = 0;
3064   struct symtab *best_symtab = 0;
3065
3066   /* Store here the first line number
3067      of a file which contains the line at the smallest pc after PC.
3068      If we don't find a line whose range contains PC,
3069      we will use a line one less than this,
3070      with a range from the start of that file to the first line's pc.  */
3071   struct linetable_entry *alt = NULL;
3072
3073   /* Info on best line seen in this file.  */
3074
3075   struct linetable_entry *prev;
3076
3077   /* If this pc is not from the current frame,
3078      it is the address of the end of a call instruction.
3079      Quite likely that is the start of the following statement.
3080      But what we want is the statement containing the instruction.
3081      Fudge the pc to make sure we get that.  */
3082
3083   init_sal (&val);              /* initialize to zeroes */
3084
3085   val.pspace = current_program_space;
3086
3087   /* It's tempting to assume that, if we can't find debugging info for
3088      any function enclosing PC, that we shouldn't search for line
3089      number info, either.  However, GAS can emit line number info for
3090      assembly files --- very helpful when debugging hand-written
3091      assembly code.  In such a case, we'd have no debug info for the
3092      function, but we would have line info.  */
3093
3094   if (notcurrent)
3095     pc -= 1;
3096
3097   /* elz: added this because this function returned the wrong
3098      information if the pc belongs to a stub (import/export)
3099      to call a shlib function.  This stub would be anywhere between
3100      two functions in the target, and the line info was erroneously
3101      taken to be the one of the line before the pc.  */
3102
3103   /* RT: Further explanation:
3104
3105    * We have stubs (trampolines) inserted between procedures.
3106    *
3107    * Example: "shr1" exists in a shared library, and a "shr1" stub also
3108    * exists in the main image.
3109    *
3110    * In the minimal symbol table, we have a bunch of symbols
3111    * sorted by start address.  The stubs are marked as "trampoline",
3112    * the others appear as text. E.g.:
3113    *
3114    *  Minimal symbol table for main image
3115    *     main:  code for main (text symbol)
3116    *     shr1: stub  (trampoline symbol)
3117    *     foo:   code for foo (text symbol)
3118    *     ...
3119    *  Minimal symbol table for "shr1" image:
3120    *     ...
3121    *     shr1: code for shr1 (text symbol)
3122    *     ...
3123    *
3124    * So the code below is trying to detect if we are in the stub
3125    * ("shr1" stub), and if so, find the real code ("shr1" trampoline),
3126    * and if found,  do the symbolization from the real-code address
3127    * rather than the stub address.
3128    *
3129    * Assumptions being made about the minimal symbol table:
3130    *   1. lookup_minimal_symbol_by_pc() will return a trampoline only
3131    *      if we're really in the trampoline.s If we're beyond it (say
3132    *      we're in "foo" in the above example), it'll have a closer
3133    *      symbol (the "foo" text symbol for example) and will not
3134    *      return the trampoline.
3135    *   2. lookup_minimal_symbol_text() will find a real text symbol
3136    *      corresponding to the trampoline, and whose address will
3137    *      be different than the trampoline address.  I put in a sanity
3138    *      check for the address being the same, to avoid an
3139    *      infinite recursion.
3140    */
3141   msymbol = lookup_minimal_symbol_by_pc (pc);
3142   if (msymbol.minsym != NULL)
3143     if (MSYMBOL_TYPE (msymbol.minsym) == mst_solib_trampoline)
3144       {
3145         struct bound_minimal_symbol mfunsym
3146           = lookup_minimal_symbol_text (MSYMBOL_LINKAGE_NAME (msymbol.minsym),
3147                                         NULL);
3148
3149         if (mfunsym.minsym == NULL)
3150           /* I eliminated this warning since it is coming out
3151            * in the following situation:
3152            * gdb shmain // test program with shared libraries
3153            * (gdb) break shr1  // function in shared lib
3154            * Warning: In stub for ...
3155            * In the above situation, the shared lib is not loaded yet,
3156            * so of course we can't find the real func/line info,
3157            * but the "break" still works, and the warning is annoying.
3158            * So I commented out the warning.  RT */
3159           /* warning ("In stub for %s; unable to find real function/line info",
3160              SYMBOL_LINKAGE_NAME (msymbol)); */
3161           ;
3162         /* fall through */
3163         else if (BMSYMBOL_VALUE_ADDRESS (mfunsym)
3164                  == BMSYMBOL_VALUE_ADDRESS (msymbol))
3165           /* Avoid infinite recursion */
3166           /* See above comment about why warning is commented out.  */
3167           /* warning ("In stub for %s; unable to find real function/line info",
3168              SYMBOL_LINKAGE_NAME (msymbol)); */
3169           ;
3170         /* fall through */
3171         else
3172           return find_pc_line (BMSYMBOL_VALUE_ADDRESS (mfunsym), 0);
3173       }
3174
3175
3176   cust = find_pc_sect_compunit_symtab (pc, section);
3177   if (cust == NULL)
3178     {
3179       /* If no symbol information, return previous pc.  */
3180       if (notcurrent)
3181         pc++;
3182       val.pc = pc;
3183       return val;
3184     }
3185
3186   bv = COMPUNIT_BLOCKVECTOR (cust);
3187
3188   /* Look at all the symtabs that share this blockvector.
3189      They all have the same apriori range, that we found was right;
3190      but they have different line tables.  */
3191
3192   ALL_COMPUNIT_FILETABS (cust, iter_s)
3193     {
3194       /* Find the best line in this symtab.  */
3195       l = SYMTAB_LINETABLE (iter_s);
3196       if (!l)
3197         continue;
3198       len = l->nitems;
3199       if (len <= 0)
3200         {
3201           /* I think len can be zero if the symtab lacks line numbers
3202              (e.g. gcc -g1).  (Either that or the LINETABLE is NULL;
3203              I'm not sure which, and maybe it depends on the symbol
3204              reader).  */
3205           continue;
3206         }
3207
3208       prev = NULL;
3209       item = l->item;           /* Get first line info.  */
3210
3211       /* Is this file's first line closer than the first lines of other files?
3212          If so, record this file, and its first line, as best alternate.  */
3213       if (item->pc > pc && (!alt || item->pc < alt->pc))
3214         alt = item;
3215
3216       for (i = 0; i < len; i++, item++)
3217         {
3218           /* Leave prev pointing to the linetable entry for the last line
3219              that started at or before PC.  */
3220           if (item->pc > pc)
3221             break;
3222
3223           prev = item;
3224         }
3225
3226       /* At this point, prev points at the line whose start addr is <= pc, and
3227          item points at the next line.  If we ran off the end of the linetable
3228          (pc >= start of the last line), then prev == item.  If pc < start of
3229          the first line, prev will not be set.  */
3230
3231       /* Is this file's best line closer than the best in the other files?
3232          If so, record this file, and its best line, as best so far.  Don't
3233          save prev if it represents the end of a function (i.e. line number
3234          0) instead of a real line.  */
3235
3236       if (prev && prev->line && (!best || prev->pc > best->pc))
3237         {
3238           best = prev;
3239           best_symtab = iter_s;
3240
3241           /* Discard BEST_END if it's before the PC of the current BEST.  */
3242           if (best_end <= best->pc)
3243             best_end = 0;
3244         }
3245
3246       /* If another line (denoted by ITEM) is in the linetable and its
3247          PC is after BEST's PC, but before the current BEST_END, then
3248          use ITEM's PC as the new best_end.  */
3249       if (best && i < len && item->pc > best->pc
3250           && (best_end == 0 || best_end > item->pc))
3251         best_end = item->pc;
3252     }
3253
3254   if (!best_symtab)
3255     {
3256       /* If we didn't find any line number info, just return zeros.
3257          We used to return alt->line - 1 here, but that could be
3258          anywhere; if we don't have line number info for this PC,
3259          don't make some up.  */
3260       val.pc = pc;
3261     }
3262   else if (best->line == 0)
3263     {
3264       /* If our best fit is in a range of PC's for which no line
3265          number info is available (line number is zero) then we didn't
3266          find any valid line information.  */
3267       val.pc = pc;
3268     }
3269   else
3270     {
3271       val.symtab = best_symtab;
3272       val.line = best->line;
3273       val.pc = best->pc;
3274       if (best_end && (!alt || best_end < alt->pc))
3275         val.end = best_end;
3276       else if (alt)
3277         val.end = alt->pc;
3278       else
3279         val.end = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
3280     }
3281   val.section = section;
3282   return val;
3283 }
3284
3285 /* Backward compatibility (no section).  */
3286
3287 struct symtab_and_line
3288 find_pc_line (CORE_ADDR pc, int notcurrent)
3289 {
3290   struct obj_section *section;
3291
3292   section = find_pc_overlay (pc);
3293   if (pc_in_unmapped_range (pc, section))
3294     pc = overlay_mapped_address (pc, section);
3295   return find_pc_sect_line (pc, section, notcurrent);
3296 }
3297
3298 /* See symtab.h.  */
3299
3300 struct symtab *
3301 find_pc_line_symtab (CORE_ADDR pc)
3302 {
3303   struct symtab_and_line sal;
3304
3305   /* This always passes zero for NOTCURRENT to find_pc_line.
3306      There are currently no callers that ever pass non-zero.  */
3307   sal = find_pc_line (pc, 0);
3308   return sal.symtab;
3309 }
3310 \f
3311 /* Find line number LINE in any symtab whose name is the same as
3312    SYMTAB.
3313
3314    If found, return the symtab that contains the linetable in which it was
3315    found, set *INDEX to the index in the linetable of the best entry
3316    found, and set *EXACT_MATCH nonzero if the value returned is an
3317    exact match.
3318
3319    If not found, return NULL.  */
3320
3321 struct symtab *
3322 find_line_symtab (struct symtab *symtab, int line,
3323                   int *index, int *exact_match)
3324 {
3325   int exact = 0;  /* Initialized here to avoid a compiler warning.  */
3326
3327   /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
3328      so far seen.  */
3329
3330   int best_index;
3331   struct linetable *best_linetable;
3332   struct symtab *best_symtab;
3333
3334   /* First try looking it up in the given symtab.  */
3335   best_linetable = SYMTAB_LINETABLE (symtab);
3336   best_symtab = symtab;
3337   best_index = find_line_common (best_linetable, line, &exact, 0);
3338   if (best_index < 0 || !exact)
3339     {
3340       /* Didn't find an exact match.  So we better keep looking for
3341          another symtab with the same name.  In the case of xcoff,
3342          multiple csects for one source file (produced by IBM's FORTRAN
3343          compiler) produce multiple symtabs (this is unavoidable
3344          assuming csects can be at arbitrary places in memory and that
3345          the GLOBAL_BLOCK of a symtab has a begin and end address).  */
3346
3347       /* BEST is the smallest linenumber > LINE so far seen,
3348          or 0 if none has been seen so far.
3349          BEST_INDEX and BEST_LINETABLE identify the item for it.  */
3350       int best;
3351
3352       struct objfile *objfile;
3353       struct compunit_symtab *cu;
3354       struct symtab *s;
3355
3356       if (best_index >= 0)
3357         best = best_linetable->item[best_index].line;
3358       else
3359         best = 0;
3360
3361       ALL_OBJFILES (objfile)
3362       {
3363         if (objfile->sf)
3364           objfile->sf->qf->expand_symtabs_with_fullname (objfile,
3365                                                    symtab_to_fullname (symtab));
3366       }
3367
3368       ALL_FILETABS (objfile, cu, s)
3369       {
3370         struct linetable *l;
3371         int ind;
3372
3373         if (FILENAME_CMP (symtab->filename, s->filename) != 0)
3374           continue;
3375         if (FILENAME_CMP (symtab_to_fullname (symtab),
3376                           symtab_to_fullname (s)) != 0)
3377           continue;     
3378         l = SYMTAB_LINETABLE (s);
3379         ind = find_line_common (l, line, &exact, 0);
3380         if (ind >= 0)
3381           {
3382             if (exact)
3383               {
3384                 best_index = ind;
3385                 best_linetable = l;
3386                 best_symtab = s;
3387                 goto done;
3388               }
3389             if (best == 0 || l->item[ind].line < best)
3390               {
3391                 best = l->item[ind].line;
3392                 best_index = ind;
3393                 best_linetable = l;
3394                 best_symtab = s;
3395               }
3396           }
3397       }
3398     }
3399 done:
3400   if (best_index < 0)
3401     return NULL;
3402
3403   if (index)
3404     *index = best_index;
3405   if (exact_match)
3406     *exact_match = exact;
3407
3408   return best_symtab;
3409 }
3410
3411 /* Given SYMTAB, returns all the PCs function in the symtab that
3412    exactly match LINE.  Returns NULL if there are no exact matches,
3413    but updates BEST_ITEM in this case.  */
3414
3415 VEC (CORE_ADDR) *
3416 find_pcs_for_symtab_line (struct symtab *symtab, int line,
3417                           struct linetable_entry **best_item)
3418 {
3419   int start = 0;
3420   VEC (CORE_ADDR) *result = NULL;
3421
3422   /* First, collect all the PCs that are at this line.  */
3423   while (1)
3424     {
3425       int was_exact;
3426       int idx;
3427
3428       idx = find_line_common (SYMTAB_LINETABLE (symtab), line, &was_exact,
3429                               start);
3430       if (idx < 0)
3431         break;
3432
3433       if (!was_exact)
3434         {
3435           struct linetable_entry *item = &SYMTAB_LINETABLE (symtab)->item[idx];
3436
3437           if (*best_item == NULL || item->line < (*best_item)->line)
3438             *best_item = item;
3439
3440           break;
3441         }
3442
3443       VEC_safe_push (CORE_ADDR, result,
3444                      SYMTAB_LINETABLE (symtab)->item[idx].pc);
3445       start = idx + 1;
3446     }
3447
3448   return result;
3449 }
3450
3451 \f
3452 /* Set the PC value for a given source file and line number and return true.
3453    Returns zero for invalid line number (and sets the PC to 0).
3454    The source file is specified with a struct symtab.  */
3455
3456 int
3457 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
3458 {
3459   struct linetable *l;
3460   int ind;
3461
3462   *pc = 0;
3463   if (symtab == 0)
3464     return 0;
3465
3466   symtab = find_line_symtab (symtab, line, &ind, NULL);
3467   if (symtab != NULL)
3468     {
3469       l = SYMTAB_LINETABLE (symtab);
3470       *pc = l->item[ind].pc;
3471       return 1;
3472     }
3473   else
3474     return 0;
3475 }
3476
3477 /* Find the range of pc values in a line.
3478    Store the starting pc of the line into *STARTPTR
3479    and the ending pc (start of next line) into *ENDPTR.
3480    Returns 1 to indicate success.
3481    Returns 0 if could not find the specified line.  */
3482
3483 int
3484 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
3485                     CORE_ADDR *endptr)
3486 {
3487   CORE_ADDR startaddr;
3488   struct symtab_and_line found_sal;
3489
3490   startaddr = sal.pc;
3491   if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
3492     return 0;
3493
3494   /* This whole function is based on address.  For example, if line 10 has
3495      two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
3496      "info line *0x123" should say the line goes from 0x100 to 0x200
3497      and "info line *0x355" should say the line goes from 0x300 to 0x400.
3498      This also insures that we never give a range like "starts at 0x134
3499      and ends at 0x12c".  */
3500
3501   found_sal = find_pc_sect_line (startaddr, sal.section, 0);
3502   if (found_sal.line != sal.line)
3503     {
3504       /* The specified line (sal) has zero bytes.  */
3505       *startptr = found_sal.pc;
3506       *endptr = found_sal.pc;
3507     }
3508   else
3509     {
3510       *startptr = found_sal.pc;
3511       *endptr = found_sal.end;
3512     }
3513   return 1;
3514 }
3515
3516 /* Given a line table and a line number, return the index into the line
3517    table for the pc of the nearest line whose number is >= the specified one.
3518    Return -1 if none is found.  The value is >= 0 if it is an index.
3519    START is the index at which to start searching the line table.
3520
3521    Set *EXACT_MATCH nonzero if the value returned is an exact match.  */
3522
3523 static int
3524 find_line_common (struct linetable *l, int lineno,
3525                   int *exact_match, int start)
3526 {
3527   int i;
3528   int len;
3529
3530   /* BEST is the smallest linenumber > LINENO so far seen,
3531      or 0 if none has been seen so far.
3532      BEST_INDEX identifies the item for it.  */
3533
3534   int best_index = -1;
3535   int best = 0;
3536
3537   *exact_match = 0;
3538
3539   if (lineno <= 0)
3540     return -1;
3541   if (l == 0)
3542     return -1;
3543
3544   len = l->nitems;
3545   for (i = start; i < len; i++)
3546     {
3547       struct linetable_entry *item = &(l->item[i]);
3548
3549       if (item->line == lineno)
3550         {
3551           /* Return the first (lowest address) entry which matches.  */
3552           *exact_match = 1;
3553           return i;
3554         }
3555
3556       if (item->line > lineno && (best == 0 || item->line < best))
3557         {
3558           best = item->line;
3559           best_index = i;
3560         }
3561     }
3562
3563   /* If we got here, we didn't get an exact match.  */
3564   return best_index;
3565 }
3566
3567 int
3568 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
3569 {
3570   struct symtab_and_line sal;
3571
3572   sal = find_pc_line (pc, 0);
3573   *startptr = sal.pc;
3574   *endptr = sal.end;
3575   return sal.symtab != 0;
3576 }
3577
3578 /* Given a function symbol SYM, find the symtab and line for the start
3579    of the function.
3580    If the argument FUNFIRSTLINE is nonzero, we want the first line
3581    of real code inside the function.  */
3582
3583 struct symtab_and_line
3584 find_function_start_sal (struct symbol *sym, int funfirstline)
3585 {
3586   struct symtab_and_line sal;
3587   struct obj_section *section;
3588
3589   fixup_symbol_section (sym, NULL);
3590   section = SYMBOL_OBJ_SECTION (symbol_objfile (sym), sym);
3591   sal = find_pc_sect_line (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), section, 0);
3592
3593   /* We always should have a line for the function start address.
3594      If we don't, something is odd.  Create a plain SAL refering
3595      just the PC and hope that skip_prologue_sal (if requested)
3596      can find a line number for after the prologue.  */
3597   if (sal.pc < BLOCK_START (SYMBOL_BLOCK_VALUE (sym)))
3598     {
3599       init_sal (&sal);
3600       sal.pspace = current_program_space;
3601       sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3602       sal.section = section;
3603     }
3604
3605   if (funfirstline)
3606     skip_prologue_sal (&sal);
3607
3608   return sal;
3609 }
3610
3611 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
3612    address for that function that has an entry in SYMTAB's line info
3613    table.  If such an entry cannot be found, return FUNC_ADDR
3614    unaltered.  */
3615
3616 static CORE_ADDR
3617 skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab)
3618 {
3619   CORE_ADDR func_start, func_end;
3620   struct linetable *l;
3621   int i;
3622
3623   /* Give up if this symbol has no lineinfo table.  */
3624   l = SYMTAB_LINETABLE (symtab);
3625   if (l == NULL)
3626     return func_addr;
3627
3628   /* Get the range for the function's PC values, or give up if we
3629      cannot, for some reason.  */
3630   if (!find_pc_partial_function (func_addr, NULL, &func_start, &func_end))
3631     return func_addr;
3632
3633   /* Linetable entries are ordered by PC values, see the commentary in
3634      symtab.h where `struct linetable' is defined.  Thus, the first
3635      entry whose PC is in the range [FUNC_START..FUNC_END[ is the
3636      address we are looking for.  */
3637   for (i = 0; i < l->nitems; i++)
3638     {
3639       struct linetable_entry *item = &(l->item[i]);
3640
3641       /* Don't use line numbers of zero, they mark special entries in
3642          the table.  See the commentary on symtab.h before the
3643          definition of struct linetable.  */
3644       if (item->line > 0 && func_start <= item->pc && item->pc < func_end)
3645         return item->pc;
3646     }
3647
3648   return func_addr;
3649 }
3650
3651 /* Adjust SAL to the first instruction past the function prologue.
3652    If the PC was explicitly specified, the SAL is not changed.
3653    If the line number was explicitly specified, at most the SAL's PC
3654    is updated.  If SAL is already past the prologue, then do nothing.  */
3655
3656 void
3657 skip_prologue_sal (struct symtab_and_line *sal)
3658 {
3659   struct symbol *sym;
3660   struct symtab_and_line start_sal;
3661   struct cleanup *old_chain;
3662   CORE_ADDR pc, saved_pc;
3663   struct obj_section *section;
3664   const char *name;
3665   struct objfile *objfile;
3666   struct gdbarch *gdbarch;
3667   const struct block *b, *function_block;
3668   int force_skip, skip;
3669
3670   /* Do not change the SAL if PC was specified explicitly.  */
3671   if (sal->explicit_pc)
3672     return;
3673
3674   old_chain = save_current_space_and_thread ();
3675   switch_to_program_space_and_thread (sal->pspace);
3676
3677   sym = find_pc_sect_function (sal->pc, sal->section);
3678   if (sym != NULL)
3679     {
3680       fixup_symbol_section (sym, NULL);
3681
3682       objfile = symbol_objfile (sym);
3683       pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3684       section = SYMBOL_OBJ_SECTION (objfile, sym);
3685       name = SYMBOL_LINKAGE_NAME (sym);
3686     }
3687   else
3688     {
3689       struct bound_minimal_symbol msymbol
3690         = lookup_minimal_symbol_by_pc_section (sal->pc, sal->section);
3691
3692       if (msymbol.minsym == NULL)
3693         {
3694           do_cleanups (old_chain);
3695           return;
3696         }
3697
3698       objfile = msymbol.objfile;
3699       pc = BMSYMBOL_VALUE_ADDRESS (msymbol);
3700       section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
3701       name = MSYMBOL_LINKAGE_NAME (msymbol.minsym);
3702     }
3703
3704   gdbarch = get_objfile_arch (objfile);
3705
3706   /* Process the prologue in two passes.  In the first pass try to skip the
3707      prologue (SKIP is true) and verify there is a real need for it (indicated
3708      by FORCE_SKIP).  If no such reason was found run a second pass where the
3709      prologue is not skipped (SKIP is false).  */
3710
3711   skip = 1;
3712   force_skip = 1;
3713
3714   /* Be conservative - allow direct PC (without skipping prologue) only if we
3715      have proven the CU (Compilation Unit) supports it.  sal->SYMTAB does not
3716      have to be set by the caller so we use SYM instead.  */
3717   if (sym != NULL
3718       && COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (symbol_symtab (sym))))
3719     force_skip = 0;
3720
3721   saved_pc = pc;
3722   do
3723     {
3724       pc = saved_pc;
3725
3726       /* If the function is in an unmapped overlay, use its unmapped LMA address,
3727          so that gdbarch_skip_prologue has something unique to work on.  */
3728       if (section_is_overlay (section) && !section_is_mapped (section))
3729         pc = overlay_unmapped_address (pc, section);
3730
3731       /* Skip "first line" of function (which is actually its prologue).  */
3732       pc += gdbarch_deprecated_function_start_offset (gdbarch);
3733       if (gdbarch_skip_entrypoint_p (gdbarch))
3734         pc = gdbarch_skip_entrypoint (gdbarch, pc);
3735       if (skip)
3736         pc = gdbarch_skip_prologue (gdbarch, pc);
3737
3738       /* For overlays, map pc back into its mapped VMA range.  */
3739       pc = overlay_mapped_address (pc, section);
3740
3741       /* Calculate line number.  */
3742       start_sal = find_pc_sect_line (pc, section, 0);
3743
3744       /* Check if gdbarch_skip_prologue left us in mid-line, and the next
3745          line is still part of the same function.  */
3746       if (skip && start_sal.pc != pc
3747           && (sym ? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
3748                      && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
3749               : (lookup_minimal_symbol_by_pc_section (start_sal.end, section).minsym
3750                  == lookup_minimal_symbol_by_pc_section (pc, section).minsym)))
3751         {
3752           /* First pc of next line */
3753           pc = start_sal.end;
3754           /* Recalculate the line number (might not be N+1).  */
3755           start_sal = find_pc_sect_line (pc, section, 0);
3756         }
3757
3758       /* On targets with executable formats that don't have a concept of
3759          constructors (ELF with .init has, PE doesn't), gcc emits a call
3760          to `__main' in `main' between the prologue and before user
3761          code.  */
3762       if (gdbarch_skip_main_prologue_p (gdbarch)
3763           && name && strcmp_iw (name, "main") == 0)
3764         {
3765           pc = gdbarch_skip_main_prologue (gdbarch, pc);
3766           /* Recalculate the line number (might not be N+1).  */
3767           start_sal = find_pc_sect_line (pc, section, 0);
3768           force_skip = 1;
3769         }
3770     }
3771   while (!force_skip && skip--);
3772
3773   /* If we still don't have a valid source line, try to find the first
3774      PC in the lineinfo table that belongs to the same function.  This
3775      happens with COFF debug info, which does not seem to have an
3776      entry in lineinfo table for the code after the prologue which has
3777      no direct relation to source.  For example, this was found to be
3778      the case with the DJGPP target using "gcc -gcoff" when the
3779      compiler inserted code after the prologue to make sure the stack
3780      is aligned.  */
3781   if (!force_skip && sym && start_sal.symtab == NULL)
3782     {
3783       pc = skip_prologue_using_lineinfo (pc, symbol_symtab (sym));
3784       /* Recalculate the line number.  */
3785       start_sal = find_pc_sect_line (pc, section, 0);
3786     }
3787
3788   do_cleanups (old_chain);
3789
3790   /* If we're already past the prologue, leave SAL unchanged.  Otherwise
3791      forward SAL to the end of the prologue.  */
3792   if (sal->pc >= pc)
3793     return;
3794
3795   sal->pc = pc;
3796   sal->section = section;
3797
3798   /* Unless the explicit_line flag was set, update the SAL line
3799      and symtab to correspond to the modified PC location.  */
3800   if (sal->explicit_line)
3801     return;
3802
3803   sal->symtab = start_sal.symtab;
3804   sal->line = start_sal.line;
3805   sal->end = start_sal.end;
3806
3807   /* Check if we are now inside an inlined function.  If we can,
3808      use the call site of the function instead.  */
3809   b = block_for_pc_sect (sal->pc, sal->section);
3810   function_block = NULL;
3811   while (b != NULL)
3812     {
3813       if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
3814         function_block = b;
3815       else if (BLOCK_FUNCTION (b) != NULL)
3816         break;
3817       b = BLOCK_SUPERBLOCK (b);
3818     }
3819   if (function_block != NULL
3820       && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
3821     {
3822       sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
3823       sal->symtab = symbol_symtab (BLOCK_FUNCTION (function_block));
3824     }
3825 }
3826
3827 /* Given PC at the function's start address, attempt to find the
3828    prologue end using SAL information.  Return zero if the skip fails.
3829
3830    A non-optimized prologue traditionally has one SAL for the function
3831    and a second for the function body.  A single line function has
3832    them both pointing at the same line.
3833
3834    An optimized prologue is similar but the prologue may contain
3835    instructions (SALs) from the instruction body.  Need to skip those
3836    while not getting into the function body.
3837
3838    The functions end point and an increasing SAL line are used as
3839    indicators of the prologue's endpoint.
3840
3841    This code is based on the function refine_prologue_limit
3842    (found in ia64).  */
3843
3844 CORE_ADDR
3845 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
3846 {
3847   struct symtab_and_line prologue_sal;
3848   CORE_ADDR start_pc;
3849   CORE_ADDR end_pc;
3850   const struct block *bl;
3851
3852   /* Get an initial range for the function.  */
3853   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
3854   start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
3855
3856   prologue_sal = find_pc_line (start_pc, 0);
3857   if (prologue_sal.line != 0)
3858     {
3859       /* For languages other than assembly, treat two consecutive line
3860          entries at the same address as a zero-instruction prologue.
3861          The GNU assembler emits separate line notes for each instruction
3862          in a multi-instruction macro, but compilers generally will not
3863          do this.  */
3864       if (prologue_sal.symtab->language != language_asm)
3865         {
3866           struct linetable *linetable = SYMTAB_LINETABLE (prologue_sal.symtab);
3867           int idx = 0;
3868
3869           /* Skip any earlier lines, and any end-of-sequence marker
3870              from a previous function.  */
3871           while (linetable->item[idx].pc != prologue_sal.pc
3872                  || linetable->item[idx].line == 0)
3873             idx++;
3874
3875           if (idx+1 < linetable->nitems
3876               && linetable->item[idx+1].line != 0
3877               && linetable->item[idx+1].pc == start_pc)
3878             return start_pc;
3879         }
3880
3881       /* If there is only one sal that covers the entire function,
3882          then it is probably a single line function, like
3883          "foo(){}".  */
3884       if (prologue_sal.end >= end_pc)
3885         return 0;
3886
3887       while (prologue_sal.end < end_pc)
3888         {
3889           struct symtab_and_line sal;
3890
3891           sal = find_pc_line (prologue_sal.end, 0);
3892           if (sal.line == 0)
3893             break;
3894           /* Assume that a consecutive SAL for the same (or larger)
3895              line mark the prologue -> body transition.  */
3896           if (sal.line >= prologue_sal.line)
3897             break;
3898           /* Likewise if we are in a different symtab altogether
3899              (e.g. within a file included via #include).  */
3900           if (sal.symtab != prologue_sal.symtab)
3901             break;
3902
3903           /* The line number is smaller.  Check that it's from the
3904              same function, not something inlined.  If it's inlined,
3905              then there is no point comparing the line numbers.  */
3906           bl = block_for_pc (prologue_sal.end);
3907           while (bl)
3908             {
3909               if (block_inlined_p (bl))
3910                 break;
3911               if (BLOCK_FUNCTION (bl))
3912                 {
3913                   bl = NULL;
3914                   break;
3915                 }
3916               bl = BLOCK_SUPERBLOCK (bl);
3917             }
3918           if (bl != NULL)
3919             break;
3920
3921           /* The case in which compiler's optimizer/scheduler has
3922              moved instructions into the prologue.  We look ahead in
3923              the function looking for address ranges whose
3924              corresponding line number is less the first one that we
3925              found for the function.  This is more conservative then
3926              refine_prologue_limit which scans a large number of SALs
3927              looking for any in the prologue.  */
3928           prologue_sal = sal;
3929         }
3930     }
3931
3932   if (prologue_sal.end < end_pc)
3933     /* Return the end of this line, or zero if we could not find a
3934        line.  */
3935     return prologue_sal.end;
3936   else
3937     /* Don't return END_PC, which is past the end of the function.  */
3938     return prologue_sal.pc;
3939 }
3940 \f
3941 /* If P is of the form "operator[ \t]+..." where `...' is
3942    some legitimate operator text, return a pointer to the
3943    beginning of the substring of the operator text.
3944    Otherwise, return "".  */
3945
3946 static const char *
3947 operator_chars (const char *p, const char **end)
3948 {
3949   *end = "";
3950   if (strncmp (p, "operator", 8))
3951     return *end;
3952   p += 8;
3953
3954   /* Don't get faked out by `operator' being part of a longer
3955      identifier.  */
3956   if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
3957     return *end;
3958
3959   /* Allow some whitespace between `operator' and the operator symbol.  */
3960   while (*p == ' ' || *p == '\t')
3961     p++;
3962
3963   /* Recognize 'operator TYPENAME'.  */
3964
3965   if (isalpha (*p) || *p == '_' || *p == '$')
3966     {
3967       const char *q = p + 1;
3968
3969       while (isalnum (*q) || *q == '_' || *q == '$')
3970         q++;
3971       *end = q;
3972       return p;
3973     }
3974
3975   while (*p)
3976     switch (*p)
3977       {
3978       case '\\':                        /* regexp quoting */
3979         if (p[1] == '*')
3980           {
3981             if (p[2] == '=')            /* 'operator\*=' */
3982               *end = p + 3;
3983             else                        /* 'operator\*'  */
3984               *end = p + 2;
3985             return p;
3986           }
3987         else if (p[1] == '[')
3988           {
3989             if (p[2] == ']')
3990               error (_("mismatched quoting on brackets, "
3991                        "try 'operator\\[\\]'"));
3992             else if (p[2] == '\\' && p[3] == ']')
3993               {
3994                 *end = p + 4;   /* 'operator\[\]' */
3995                 return p;
3996               }
3997             else
3998               error (_("nothing is allowed between '[' and ']'"));
3999           }
4000         else
4001           {
4002             /* Gratuitous qoute: skip it and move on.  */
4003             p++;
4004             continue;
4005           }
4006         break;
4007       case '!':
4008       case '=':
4009       case '*':
4010       case '/':
4011       case '%':
4012       case '^':
4013         if (p[1] == '=')
4014           *end = p + 2;
4015         else
4016           *end = p + 1;
4017         return p;
4018       case '<':
4019       case '>':
4020       case '+':
4021       case '-':
4022       case '&':
4023       case '|':
4024         if (p[0] == '-' && p[1] == '>')
4025           {
4026             /* Struct pointer member operator 'operator->'.  */
4027             if (p[2] == '*')
4028               {
4029                 *end = p + 3;   /* 'operator->*' */
4030                 return p;
4031               }
4032             else if (p[2] == '\\')
4033               {
4034                 *end = p + 4;   /* Hopefully 'operator->\*' */
4035                 return p;
4036               }
4037             else
4038               {
4039                 *end = p + 2;   /* 'operator->' */
4040                 return p;
4041               }
4042           }
4043         if (p[1] == '=' || p[1] == p[0])
4044           *end = p + 2;
4045         else
4046           *end = p + 1;
4047         return p;
4048       case '~':
4049       case ',':
4050         *end = p + 1;
4051         return p;
4052       case '(':
4053         if (p[1] != ')')
4054           error (_("`operator ()' must be specified "
4055                    "without whitespace in `()'"));
4056         *end = p + 2;
4057         return p;
4058       case '?':
4059         if (p[1] != ':')
4060           error (_("`operator ?:' must be specified "
4061                    "without whitespace in `?:'"));
4062         *end = p + 2;
4063         return p;
4064       case '[':
4065         if (p[1] != ']')
4066           error (_("`operator []' must be specified "
4067                    "without whitespace in `[]'"));
4068         *end = p + 2;
4069         return p;
4070       default:
4071         error (_("`operator %s' not supported"), p);
4072         break;
4073       }
4074
4075   *end = "";
4076   return *end;
4077 }
4078 \f
4079
4080 /* Cache to watch for file names already seen by filename_seen.  */
4081
4082 struct filename_seen_cache
4083 {
4084   /* Table of files seen so far.  */
4085   htab_t tab;
4086   /* Initial size of the table.  It automagically grows from here.  */
4087 #define INITIAL_FILENAME_SEEN_CACHE_SIZE 100
4088 };
4089
4090 /* filename_seen_cache constructor.  */
4091
4092 static struct filename_seen_cache *
4093 create_filename_seen_cache (void)
4094 {
4095   struct filename_seen_cache *cache;
4096
4097   cache = XNEW (struct filename_seen_cache);
4098   cache->tab = htab_create_alloc (INITIAL_FILENAME_SEEN_CACHE_SIZE,
4099                                   filename_hash, filename_eq,
4100                                   NULL, xcalloc, xfree);
4101
4102   return cache;
4103 }
4104
4105 /* Empty the cache, but do not delete it.  */
4106
4107 static void
4108 clear_filename_seen_cache (struct filename_seen_cache *cache)
4109 {
4110   htab_empty (cache->tab);
4111 }
4112
4113 /* filename_seen_cache destructor.
4114    This takes a void * argument as it is generally used as a cleanup.  */
4115
4116 static void
4117 delete_filename_seen_cache (void *ptr)
4118 {
4119   struct filename_seen_cache *cache = ptr;
4120
4121   htab_delete (cache->tab);
4122   xfree (cache);
4123 }
4124
4125 /* If FILE is not already in the table of files in CACHE, return zero;
4126    otherwise return non-zero.  Optionally add FILE to the table if ADD
4127    is non-zero.
4128
4129    NOTE: We don't manage space for FILE, we assume FILE lives as long
4130    as the caller needs.  */
4131
4132 static int
4133 filename_seen (struct filename_seen_cache *cache, const char *file, int add)
4134 {
4135   void **slot;
4136
4137   /* Is FILE in tab?  */
4138   slot = htab_find_slot (cache->tab, file, add ? INSERT : NO_INSERT);
4139   if (*slot != NULL)
4140     return 1;
4141
4142   /* No; maybe add it to tab.  */
4143   if (add)
4144     *slot = (char *) file;
4145
4146   return 0;
4147 }
4148
4149 /* Data structure to maintain printing state for output_source_filename.  */
4150
4151 struct output_source_filename_data
4152 {
4153   /* Cache of what we've seen so far.  */
4154   struct filename_seen_cache *filename_seen_cache;
4155
4156   /* Flag of whether we're printing the first one.  */
4157   int first;
4158 };
4159
4160 /* Slave routine for sources_info.  Force line breaks at ,'s.
4161    NAME is the name to print.
4162    DATA contains the state for printing and watching for duplicates.  */
4163
4164 static void
4165 output_source_filename (const char *name,
4166                         struct output_source_filename_data *data)
4167 {
4168   /* Since a single source file can result in several partial symbol
4169      tables, we need to avoid printing it more than once.  Note: if
4170      some of the psymtabs are read in and some are not, it gets
4171      printed both under "Source files for which symbols have been
4172      read" and "Source files for which symbols will be read in on
4173      demand".  I consider this a reasonable way to deal with the
4174      situation.  I'm not sure whether this can also happen for
4175      symtabs; it doesn't hurt to check.  */
4176
4177   /* Was NAME already seen?  */
4178   if (filename_seen (data->filename_seen_cache, name, 1))
4179     {
4180       /* Yes; don't print it again.  */
4181       return;
4182     }
4183
4184   /* No; print it and reset *FIRST.  */
4185   if (! data->first)
4186     printf_filtered (", ");
4187   data->first = 0;
4188
4189   wrap_here ("");
4190   fputs_filtered (name, gdb_stdout);
4191 }
4192
4193 /* A callback for map_partial_symbol_filenames.  */
4194
4195 static void
4196 output_partial_symbol_filename (const char *filename, const char *fullname,
4197                                 void *data)
4198 {
4199   output_source_filename (fullname ? fullname : filename, data);
4200 }
4201
4202 static void
4203 sources_info (char *ignore, int from_tty)
4204 {
4205   struct compunit_symtab *cu;
4206   struct symtab *s;
4207   struct objfile *objfile;
4208   struct output_source_filename_data data;
4209   struct cleanup *cleanups;
4210
4211   if (!have_full_symbols () && !have_partial_symbols ())
4212     {
4213       error (_("No symbol table is loaded.  Use the \"file\" command."));
4214     }
4215
4216   data.filename_seen_cache = create_filename_seen_cache ();
4217   cleanups = make_cleanup (delete_filename_seen_cache,
4218                            data.filename_seen_cache);
4219
4220   printf_filtered ("Source files for which symbols have been read in:\n\n");
4221
4222   data.first = 1;
4223   ALL_FILETABS (objfile, cu, s)
4224   {
4225     const char *fullname = symtab_to_fullname (s);
4226
4227     output_source_filename (fullname, &data);
4228   }
4229   printf_filtered ("\n\n");
4230
4231   printf_filtered ("Source files for which symbols "
4232                    "will be read in on demand:\n\n");
4233
4234   clear_filename_seen_cache (data.filename_seen_cache);
4235   data.first = 1;
4236   map_symbol_filenames (output_partial_symbol_filename, &data,
4237                         1 /*need_fullname*/);
4238   printf_filtered ("\n");
4239
4240   do_cleanups (cleanups);
4241 }
4242
4243 /* Compare FILE against all the NFILES entries of FILES.  If BASENAMES is
4244    non-zero compare only lbasename of FILES.  */
4245
4246 static int
4247 file_matches (const char *file, const char *files[], int nfiles, int basenames)
4248 {
4249   int i;
4250
4251   if (file != NULL && nfiles != 0)
4252     {
4253       for (i = 0; i < nfiles; i++)
4254         {
4255           if (compare_filenames_for_search (file, (basenames
4256                                                    ? lbasename (files[i])
4257                                                    : files[i])))
4258             return 1;
4259         }
4260     }
4261   else if (nfiles == 0)
4262     return 1;
4263   return 0;
4264 }
4265
4266 /* Free any memory associated with a search.  */
4267
4268 void
4269 free_search_symbols (struct symbol_search *symbols)
4270 {
4271   struct symbol_search *p;
4272   struct symbol_search *next;
4273
4274   for (p = symbols; p != NULL; p = next)
4275     {
4276       next = p->next;
4277       xfree (p);
4278     }
4279 }
4280
4281 static void
4282 do_free_search_symbols_cleanup (void *symbolsp)
4283 {
4284   struct symbol_search *symbols = *(struct symbol_search **) symbolsp;
4285
4286   free_search_symbols (symbols);
4287 }
4288
4289 struct cleanup *
4290 make_cleanup_free_search_symbols (struct symbol_search **symbolsp)
4291 {
4292   return make_cleanup (do_free_search_symbols_cleanup, symbolsp);
4293 }
4294
4295 /* Helper function for sort_search_symbols_remove_dups and qsort.  Can only
4296    sort symbols, not minimal symbols.  */
4297
4298 static int
4299 compare_search_syms (const void *sa, const void *sb)
4300 {
4301   struct symbol_search *sym_a = *(struct symbol_search **) sa;
4302   struct symbol_search *sym_b = *(struct symbol_search **) sb;
4303   int c;
4304
4305   c = FILENAME_CMP (symbol_symtab (sym_a->symbol)->filename,
4306                     symbol_symtab (sym_b->symbol)->filename);
4307   if (c != 0)
4308     return c;
4309
4310   if (sym_a->block != sym_b->block)
4311     return sym_a->block - sym_b->block;
4312
4313   return strcmp (SYMBOL_PRINT_NAME (sym_a->symbol),
4314                  SYMBOL_PRINT_NAME (sym_b->symbol));
4315 }
4316
4317 /* Sort the NFOUND symbols in list FOUND and remove duplicates.
4318    The duplicates are freed, and the new list is returned in
4319    *NEW_HEAD, *NEW_TAIL.  */
4320
4321 static void
4322 sort_search_symbols_remove_dups (struct symbol_search *found, int nfound,
4323                                  struct symbol_search **new_head,
4324                                  struct symbol_search **new_tail)
4325 {
4326   struct symbol_search **symbols, *symp, *old_next;
4327   int i, j, nunique;
4328
4329   gdb_assert (found != NULL && nfound > 0);
4330
4331   /* Build an array out of the list so we can easily sort them.  */
4332   symbols = (struct symbol_search **) xmalloc (sizeof (struct symbol_search *)
4333                                                * nfound);
4334   symp = found;
4335   for (i = 0; i < nfound; i++)
4336     {
4337       gdb_assert (symp != NULL);
4338       gdb_assert (symp->block >= 0 && symp->block <= 1);
4339       symbols[i] = symp;
4340       symp = symp->next;
4341     }
4342   gdb_assert (symp == NULL);
4343
4344   qsort (symbols, nfound, sizeof (struct symbol_search *),
4345          compare_search_syms);
4346
4347   /* Collapse out the dups.  */
4348   for (i = 1, j = 1; i < nfound; ++i)
4349     {
4350       if (compare_search_syms (&symbols[j - 1], &symbols[i]) != 0)
4351         symbols[j++] = symbols[i];
4352       else
4353         xfree (symbols[i]);
4354     }
4355   nunique = j;
4356   symbols[j - 1]->next = NULL;
4357
4358   /* Rebuild the linked list.  */
4359   for (i = 0; i < nunique - 1; i++)
4360     symbols[i]->next = symbols[i + 1];
4361   symbols[nunique - 1]->next = NULL;
4362
4363   *new_head = symbols[0];
4364   *new_tail = symbols[nunique - 1];
4365   xfree (symbols);
4366 }
4367
4368 /* An object of this type is passed as the user_data to the
4369    expand_symtabs_matching method.  */
4370 struct search_symbols_data
4371 {
4372   int nfiles;
4373   const char **files;
4374
4375   /* It is true if PREG contains valid data, false otherwise.  */
4376   unsigned preg_p : 1;
4377   regex_t preg;
4378 };
4379
4380 /* A callback for expand_symtabs_matching.  */
4381
4382 static int
4383 search_symbols_file_matches (const char *filename, void *user_data,
4384                              int basenames)
4385 {
4386   struct search_symbols_data *data = user_data;
4387
4388   return file_matches (filename, data->files, data->nfiles, basenames);
4389 }
4390
4391 /* A callback for expand_symtabs_matching.  */
4392
4393 static int
4394 search_symbols_name_matches (const char *symname, void *user_data)
4395 {
4396   struct search_symbols_data *data = user_data;
4397
4398   return !data->preg_p || regexec (&data->preg, symname, 0, NULL, 0) == 0;
4399 }
4400
4401 /* Search the symbol table for matches to the regular expression REGEXP,
4402    returning the results in *MATCHES.
4403
4404    Only symbols of KIND are searched:
4405    VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
4406                       and constants (enums)
4407    FUNCTIONS_DOMAIN - search all functions
4408    TYPES_DOMAIN     - search all type names
4409    ALL_DOMAIN       - an internal error for this function
4410
4411    free_search_symbols should be called when *MATCHES is no longer needed.
4412
4413    Within each file the results are sorted locally; each symtab's global and
4414    static blocks are separately alphabetized.
4415    Duplicate entries are removed.  */
4416
4417 void
4418 search_symbols (const char *regexp, enum search_domain kind,
4419                 int nfiles, const char *files[],
4420                 struct symbol_search **matches)
4421 {
4422   struct compunit_symtab *cust;
4423   const struct blockvector *bv;
4424   struct block *b;
4425   int i = 0;
4426   struct block_iterator iter;
4427   struct symbol *sym;
4428   struct objfile *objfile;
4429   struct minimal_symbol *msymbol;
4430   int found_misc = 0;
4431   static const enum minimal_symbol_type types[]
4432     = {mst_data, mst_text, mst_abs};
4433   static const enum minimal_symbol_type types2[]
4434     = {mst_bss, mst_file_text, mst_abs};
4435   static const enum minimal_symbol_type types3[]
4436     = {mst_file_data, mst_solib_trampoline, mst_abs};
4437   static const enum minimal_symbol_type types4[]
4438     = {mst_file_bss, mst_text_gnu_ifunc, mst_abs};
4439   enum minimal_symbol_type ourtype;
4440   enum minimal_symbol_type ourtype2;
4441   enum minimal_symbol_type ourtype3;
4442   enum minimal_symbol_type ourtype4;
4443   struct symbol_search *found;
4444   struct symbol_search *tail;
4445   struct search_symbols_data datum;
4446   int nfound;
4447
4448   /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
4449      CLEANUP_CHAIN is freed only in the case of an error.  */
4450   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
4451   struct cleanup *retval_chain;
4452
4453   gdb_assert (kind <= TYPES_DOMAIN);
4454
4455   ourtype = types[kind];
4456   ourtype2 = types2[kind];
4457   ourtype3 = types3[kind];
4458   ourtype4 = types4[kind];
4459
4460   *matches = NULL;
4461   datum.preg_p = 0;
4462
4463   if (regexp != NULL)
4464     {
4465       /* Make sure spacing is right for C++ operators.
4466          This is just a courtesy to make the matching less sensitive
4467          to how many spaces the user leaves between 'operator'
4468          and <TYPENAME> or <OPERATOR>.  */
4469       const char *opend;
4470       const char *opname = operator_chars (regexp, &opend);
4471       int errcode;
4472
4473       if (*opname)
4474         {
4475           int fix = -1;         /* -1 means ok; otherwise number of
4476                                     spaces needed.  */
4477
4478           if (isalpha (*opname) || *opname == '_' || *opname == '$')
4479             {
4480               /* There should 1 space between 'operator' and 'TYPENAME'.  */
4481               if (opname[-1] != ' ' || opname[-2] == ' ')
4482                 fix = 1;
4483             }
4484           else
4485             {
4486               /* There should 0 spaces between 'operator' and 'OPERATOR'.  */
4487               if (opname[-1] == ' ')
4488                 fix = 0;
4489             }
4490           /* If wrong number of spaces, fix it.  */
4491           if (fix >= 0)
4492             {
4493               char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
4494
4495               sprintf (tmp, "operator%.*s%s", fix, " ", opname);
4496               regexp = tmp;
4497             }
4498         }
4499
4500       errcode = regcomp (&datum.preg, regexp,
4501                          REG_NOSUB | (case_sensitivity == case_sensitive_off
4502                                       ? REG_ICASE : 0));
4503       if (errcode != 0)
4504         {
4505           char *err = get_regcomp_error (errcode, &datum.preg);
4506
4507           make_cleanup (xfree, err);
4508           error (_("Invalid regexp (%s): %s"), err, regexp);
4509         }
4510       datum.preg_p = 1;
4511       make_regfree_cleanup (&datum.preg);
4512     }
4513
4514   /* Search through the partial symtabs *first* for all symbols
4515      matching the regexp.  That way we don't have to reproduce all of
4516      the machinery below.  */
4517
4518   datum.nfiles = nfiles;
4519   datum.files = files;
4520   expand_symtabs_matching ((nfiles == 0
4521                             ? NULL
4522                             : search_symbols_file_matches),
4523                            search_symbols_name_matches,
4524                            NULL, kind, &datum);
4525
4526   /* Here, we search through the minimal symbol tables for functions
4527      and variables that match, and force their symbols to be read.
4528      This is in particular necessary for demangled variable names,
4529      which are no longer put into the partial symbol tables.
4530      The symbol will then be found during the scan of symtabs below.
4531
4532      For functions, find_pc_symtab should succeed if we have debug info
4533      for the function, for variables we have to call
4534      lookup_symbol_in_objfile_from_linkage_name to determine if the variable
4535      has debug info.
4536      If the lookup fails, set found_misc so that we will rescan to print
4537      any matching symbols without debug info.
4538      We only search the objfile the msymbol came from, we no longer search
4539      all objfiles.  In large programs (1000s of shared libs) searching all
4540      objfiles is not worth the pain.  */
4541
4542   if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
4543     {
4544       ALL_MSYMBOLS (objfile, msymbol)
4545       {
4546         QUIT;
4547
4548         if (msymbol->created_by_gdb)
4549           continue;
4550
4551         if (MSYMBOL_TYPE (msymbol) == ourtype
4552             || MSYMBOL_TYPE (msymbol) == ourtype2
4553             || MSYMBOL_TYPE (msymbol) == ourtype3
4554             || MSYMBOL_TYPE (msymbol) == ourtype4)
4555           {
4556             if (!datum.preg_p
4557                 || regexec (&datum.preg, MSYMBOL_NATURAL_NAME (msymbol), 0,
4558                             NULL, 0) == 0)
4559               {
4560                 /* Note: An important side-effect of these lookup functions
4561                    is to expand the symbol table if msymbol is found, for the
4562                    benefit of the next loop on ALL_COMPUNITS.  */
4563                 if (kind == FUNCTIONS_DOMAIN
4564                     ? (find_pc_compunit_symtab
4565                        (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL)
4566                     : (lookup_symbol_in_objfile_from_linkage_name
4567                        (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4568                        == NULL))
4569                   found_misc = 1;
4570               }
4571           }
4572       }
4573     }
4574
4575   found = NULL;
4576   tail = NULL;
4577   nfound = 0;
4578   retval_chain = make_cleanup_free_search_symbols (&found);
4579
4580   ALL_COMPUNITS (objfile, cust)
4581   {
4582     bv = COMPUNIT_BLOCKVECTOR (cust);
4583     for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
4584       {
4585         b = BLOCKVECTOR_BLOCK (bv, i);
4586         ALL_BLOCK_SYMBOLS (b, iter, sym)
4587           {
4588             struct symtab *real_symtab = symbol_symtab (sym);
4589
4590             QUIT;
4591
4592             /* Check first sole REAL_SYMTAB->FILENAME.  It does not need to be
4593                a substring of symtab_to_fullname as it may contain "./" etc.  */
4594             if ((file_matches (real_symtab->filename, files, nfiles, 0)
4595                  || ((basenames_may_differ
4596                       || file_matches (lbasename (real_symtab->filename),
4597                                        files, nfiles, 1))
4598                      && file_matches (symtab_to_fullname (real_symtab),
4599                                       files, nfiles, 0)))
4600                 && ((!datum.preg_p
4601                      || regexec (&datum.preg, SYMBOL_NATURAL_NAME (sym), 0,
4602                                  NULL, 0) == 0)
4603                     && ((kind == VARIABLES_DOMAIN
4604                          && SYMBOL_CLASS (sym) != LOC_TYPEDEF
4605                          && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
4606                          && SYMBOL_CLASS (sym) != LOC_BLOCK
4607                          /* LOC_CONST can be used for more than just enums,
4608                             e.g., c++ static const members.
4609                             We only want to skip enums here.  */
4610                          && !(SYMBOL_CLASS (sym) == LOC_CONST
4611                               && (TYPE_CODE (SYMBOL_TYPE (sym))
4612                                   == TYPE_CODE_ENUM)))
4613                         || (kind == FUNCTIONS_DOMAIN 
4614                             && SYMBOL_CLASS (sym) == LOC_BLOCK)
4615                         || (kind == TYPES_DOMAIN
4616                             && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
4617               {
4618                 /* match */
4619                 struct symbol_search *psr = (struct symbol_search *)
4620                   xmalloc (sizeof (struct symbol_search));
4621                 psr->block = i;
4622                 psr->symbol = sym;
4623                 memset (&psr->msymbol, 0, sizeof (psr->msymbol));
4624                 psr->next = NULL;
4625                 if (tail == NULL)
4626                   found = psr;
4627                 else
4628                   tail->next = psr;
4629                 tail = psr;
4630                 nfound ++;
4631               }
4632           }
4633       }
4634   }
4635
4636   if (found != NULL)
4637     {
4638       sort_search_symbols_remove_dups (found, nfound, &found, &tail);
4639       /* Note: nfound is no longer useful beyond this point.  */
4640     }
4641
4642   /* If there are no eyes, avoid all contact.  I mean, if there are
4643      no debug symbols, then add matching minsyms.  */
4644
4645   if (found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
4646     {
4647       ALL_MSYMBOLS (objfile, msymbol)
4648       {
4649         QUIT;
4650
4651         if (msymbol->created_by_gdb)
4652           continue;
4653
4654         if (MSYMBOL_TYPE (msymbol) == ourtype
4655             || MSYMBOL_TYPE (msymbol) == ourtype2
4656             || MSYMBOL_TYPE (msymbol) == ourtype3
4657             || MSYMBOL_TYPE (msymbol) == ourtype4)
4658           {
4659             if (!datum.preg_p
4660                 || regexec (&datum.preg, MSYMBOL_NATURAL_NAME (msymbol), 0,
4661                             NULL, 0) == 0)
4662               {
4663                 /* For functions we can do a quick check of whether the
4664                    symbol might be found via find_pc_symtab.  */
4665                 if (kind != FUNCTIONS_DOMAIN
4666                     || (find_pc_compunit_symtab
4667                         (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL))
4668                   {
4669                     if (lookup_symbol_in_objfile_from_linkage_name
4670                         (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4671                         == NULL)
4672                       {
4673                         /* match */
4674                         struct symbol_search *psr = (struct symbol_search *)
4675                           xmalloc (sizeof (struct symbol_search));
4676                         psr->block = i;
4677                         psr->msymbol.minsym = msymbol;
4678                         psr->msymbol.objfile = objfile;
4679                         psr->symbol = NULL;
4680                         psr->next = NULL;
4681                         if (tail == NULL)
4682                           found = psr;
4683                         else
4684                           tail->next = psr;
4685                         tail = psr;
4686                       }
4687                   }
4688               }
4689           }
4690       }
4691     }
4692
4693   discard_cleanups (retval_chain);
4694   do_cleanups (old_chain);
4695   *matches = found;
4696 }
4697
4698 /* Helper function for symtab_symbol_info, this function uses
4699    the data returned from search_symbols() to print information
4700    regarding the match to gdb_stdout.  */
4701
4702 static void
4703 print_symbol_info (enum search_domain kind,
4704                    struct symbol *sym,
4705                    int block, const char *last)
4706 {
4707   struct symtab *s = symbol_symtab (sym);
4708   const char *s_filename = symtab_to_filename_for_display (s);
4709
4710   if (last == NULL || filename_cmp (last, s_filename) != 0)
4711     {
4712       fputs_filtered ("\nFile ", gdb_stdout);
4713       fputs_filtered (s_filename, gdb_stdout);
4714       fputs_filtered (":\n", gdb_stdout);
4715     }
4716
4717   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
4718     printf_filtered ("static ");
4719
4720   /* Typedef that is not a C++ class.  */
4721   if (kind == TYPES_DOMAIN
4722       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
4723     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
4724   /* variable, func, or typedef-that-is-c++-class.  */
4725   else if (kind < TYPES_DOMAIN
4726            || (kind == TYPES_DOMAIN
4727                && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
4728     {
4729       type_print (SYMBOL_TYPE (sym),
4730                   (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4731                    ? "" : SYMBOL_PRINT_NAME (sym)),
4732                   gdb_stdout, 0);
4733
4734       printf_filtered (";\n");
4735     }
4736 }
4737
4738 /* This help function for symtab_symbol_info() prints information
4739    for non-debugging symbols to gdb_stdout.  */
4740
4741 static void
4742 print_msymbol_info (struct bound_minimal_symbol msymbol)
4743 {
4744   struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
4745   char *tmp;
4746
4747   if (gdbarch_addr_bit (gdbarch) <= 32)
4748     tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol)
4749                              & (CORE_ADDR) 0xffffffff,
4750                              8);
4751   else
4752     tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol),
4753                              16);
4754   printf_filtered ("%s  %s\n",
4755                    tmp, MSYMBOL_PRINT_NAME (msymbol.minsym));
4756 }
4757
4758 /* This is the guts of the commands "info functions", "info types", and
4759    "info variables".  It calls search_symbols to find all matches and then
4760    print_[m]symbol_info to print out some useful information about the
4761    matches.  */
4762
4763 static void
4764 symtab_symbol_info (char *regexp, enum search_domain kind, int from_tty)
4765 {
4766   static const char * const classnames[] =
4767     {"variable", "function", "type"};
4768   struct symbol_search *symbols;
4769   struct symbol_search *p;
4770   struct cleanup *old_chain;
4771   const char *last_filename = NULL;
4772   int first = 1;
4773
4774   gdb_assert (kind <= TYPES_DOMAIN);
4775
4776   /* Must make sure that if we're interrupted, symbols gets freed.  */
4777   search_symbols (regexp, kind, 0, NULL, &symbols);
4778   old_chain = make_cleanup_free_search_symbols (&symbols);
4779
4780   if (regexp != NULL)
4781     printf_filtered (_("All %ss matching regular expression \"%s\":\n"),
4782                      classnames[kind], regexp);
4783   else
4784     printf_filtered (_("All defined %ss:\n"), classnames[kind]);
4785
4786   for (p = symbols; p != NULL; p = p->next)
4787     {
4788       QUIT;
4789
4790       if (p->msymbol.minsym != NULL)
4791         {
4792           if (first)
4793             {
4794               printf_filtered (_("\nNon-debugging symbols:\n"));
4795               first = 0;
4796             }
4797           print_msymbol_info (p->msymbol);
4798         }
4799       else
4800         {
4801           print_symbol_info (kind,
4802                              p->symbol,
4803                              p->block,
4804                              last_filename);
4805           last_filename
4806             = symtab_to_filename_for_display (symbol_symtab (p->symbol));
4807         }
4808     }
4809
4810   do_cleanups (old_chain);
4811 }
4812
4813 static void
4814 variables_info (char *regexp, int from_tty)
4815 {
4816   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
4817 }
4818
4819 static void
4820 functions_info (char *regexp, int from_tty)
4821 {
4822   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
4823 }
4824
4825
4826 static void
4827 types_info (char *regexp, int from_tty)
4828 {
4829   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
4830 }
4831
4832 /* Breakpoint all functions matching regular expression.  */
4833
4834 void
4835 rbreak_command_wrapper (char *regexp, int from_tty)
4836 {
4837   rbreak_command (regexp, from_tty);
4838 }
4839
4840 /* A cleanup function that calls end_rbreak_breakpoints.  */
4841
4842 static void
4843 do_end_rbreak_breakpoints (void *ignore)
4844 {
4845   end_rbreak_breakpoints ();
4846 }
4847
4848 static void
4849 rbreak_command (char *regexp, int from_tty)
4850 {
4851   struct symbol_search *ss;
4852   struct symbol_search *p;
4853   struct cleanup *old_chain;
4854   char *string = NULL;
4855   int len = 0;
4856   const char **files = NULL;
4857   const char *file_name;
4858   int nfiles = 0;
4859
4860   if (regexp)
4861     {
4862       char *colon = strchr (regexp, ':');
4863
4864       if (colon && *(colon + 1) != ':')
4865         {
4866           int colon_index;
4867           char *local_name;
4868
4869           colon_index = colon - regexp;
4870           local_name = alloca (colon_index + 1);
4871           memcpy (local_name, regexp, colon_index);
4872           local_name[colon_index--] = 0;
4873           while (isspace (local_name[colon_index]))
4874             local_name[colon_index--] = 0;
4875           file_name = local_name;
4876           files = &file_name;
4877           nfiles = 1;
4878           regexp = skip_spaces (colon + 1);
4879         }
4880     }
4881
4882   search_symbols (regexp, FUNCTIONS_DOMAIN, nfiles, files, &ss);
4883   old_chain = make_cleanup_free_search_symbols (&ss);
4884   make_cleanup (free_current_contents, &string);
4885
4886   start_rbreak_breakpoints ();
4887   make_cleanup (do_end_rbreak_breakpoints, NULL);
4888   for (p = ss; p != NULL; p = p->next)
4889     {
4890       if (p->msymbol.minsym == NULL)
4891         {
4892           struct symtab *symtab = symbol_symtab (p->symbol);
4893           const char *fullname = symtab_to_fullname (symtab);
4894
4895           int newlen = (strlen (fullname)
4896                         + strlen (SYMBOL_LINKAGE_NAME (p->symbol))
4897                         + 4);
4898
4899           if (newlen > len)
4900             {
4901               string = xrealloc (string, newlen);
4902               len = newlen;
4903             }
4904           strcpy (string, fullname);
4905           strcat (string, ":'");
4906           strcat (string, SYMBOL_LINKAGE_NAME (p->symbol));
4907           strcat (string, "'");
4908           break_command (string, from_tty);
4909           print_symbol_info (FUNCTIONS_DOMAIN,
4910                              p->symbol,
4911                              p->block,
4912                              symtab_to_filename_for_display (symtab));
4913         }
4914       else
4915         {
4916           int newlen = (strlen (MSYMBOL_LINKAGE_NAME (p->msymbol.minsym)) + 3);
4917
4918           if (newlen > len)
4919             {
4920               string = xrealloc (string, newlen);
4921               len = newlen;
4922             }
4923           strcpy (string, "'");
4924           strcat (string, MSYMBOL_LINKAGE_NAME (p->msymbol.minsym));
4925           strcat (string, "'");
4926
4927           break_command (string, from_tty);
4928           printf_filtered ("<function, no debug info> %s;\n",
4929                            MSYMBOL_PRINT_NAME (p->msymbol.minsym));
4930         }
4931     }
4932
4933   do_cleanups (old_chain);
4934 }
4935 \f
4936
4937 /* Evaluate if NAME matches SYM_TEXT and SYM_TEXT_LEN.
4938
4939    Either sym_text[sym_text_len] != '(' and then we search for any
4940    symbol starting with SYM_TEXT text.
4941
4942    Otherwise sym_text[sym_text_len] == '(' and then we require symbol name to
4943    be terminated at that point.  Partial symbol tables do not have parameters
4944    information.  */
4945
4946 static int
4947 compare_symbol_name (const char *name, const char *sym_text, int sym_text_len)
4948 {
4949   int (*ncmp) (const char *, const char *, size_t);
4950
4951   ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
4952
4953   if (ncmp (name, sym_text, sym_text_len) != 0)
4954     return 0;
4955
4956   if (sym_text[sym_text_len] == '(')
4957     {
4958       /* User searches for `name(someth...'.  Require NAME to be terminated.
4959          Normally psymtabs and gdbindex have no parameter types so '\0' will be
4960          present but accept even parameters presence.  In this case this
4961          function is in fact strcmp_iw but whitespace skipping is not supported
4962          for tab completion.  */
4963
4964       if (name[sym_text_len] != '\0' && name[sym_text_len] != '(')
4965         return 0;
4966     }
4967
4968   return 1;
4969 }
4970
4971 /* Free any memory associated with a completion list.  */
4972
4973 static void
4974 free_completion_list (VEC (char_ptr) **list_ptr)
4975 {
4976   int i;
4977   char *p;
4978
4979   for (i = 0; VEC_iterate (char_ptr, *list_ptr, i, p); ++i)
4980     xfree (p);
4981   VEC_free (char_ptr, *list_ptr);
4982 }
4983
4984 /* Callback for make_cleanup.  */
4985
4986 static void
4987 do_free_completion_list (void *list)
4988 {
4989   free_completion_list (list);
4990 }
4991
4992 /* Helper routine for make_symbol_completion_list.  */
4993
4994 static VEC (char_ptr) *return_val;
4995
4996 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
4997       completion_list_add_name \
4998         (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
4999
5000 #define MCOMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
5001       completion_list_add_name \
5002         (MSYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
5003
5004 /*  Test to see if the symbol specified by SYMNAME (which is already
5005    demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
5006    characters.  If so, add it to the current completion list.  */
5007
5008 static void
5009 completion_list_add_name (const char *symname,
5010                           const char *sym_text, int sym_text_len,
5011                           const char *text, const char *word)
5012 {
5013   /* Clip symbols that cannot match.  */
5014   if (!compare_symbol_name (symname, sym_text, sym_text_len))
5015     return;
5016
5017   /* We have a match for a completion, so add SYMNAME to the current list
5018      of matches.  Note that the name is moved to freshly malloc'd space.  */
5019
5020   {
5021     char *new;
5022
5023     if (word == sym_text)
5024       {
5025         new = xmalloc (strlen (symname) + 5);
5026         strcpy (new, symname);
5027       }
5028     else if (word > sym_text)
5029       {
5030         /* Return some portion of symname.  */
5031         new = xmalloc (strlen (symname) + 5);
5032         strcpy (new, symname + (word - sym_text));
5033       }
5034     else
5035       {
5036         /* Return some of SYM_TEXT plus symname.  */
5037         new = xmalloc (strlen (symname) + (sym_text - word) + 5);
5038         strncpy (new, word, sym_text - word);
5039         new[sym_text - word] = '\0';
5040         strcat (new, symname);
5041       }
5042
5043     VEC_safe_push (char_ptr, return_val, new);
5044   }
5045 }
5046
5047 /* ObjC: In case we are completing on a selector, look as the msymbol
5048    again and feed all the selectors into the mill.  */
5049
5050 static void
5051 completion_list_objc_symbol (struct minimal_symbol *msymbol,
5052                              const char *sym_text, int sym_text_len,
5053                              const char *text, const char *word)
5054 {
5055   static char *tmp = NULL;
5056   static unsigned int tmplen = 0;
5057
5058   const char *method, *category, *selector;
5059   char *tmp2 = NULL;
5060
5061   method = MSYMBOL_NATURAL_NAME (msymbol);
5062
5063   /* Is it a method?  */
5064   if ((method[0] != '-') && (method[0] != '+'))
5065     return;
5066
5067   if (sym_text[0] == '[')
5068     /* Complete on shortened method method.  */
5069     completion_list_add_name (method + 1, sym_text, sym_text_len, text, word);
5070
5071   while ((strlen (method) + 1) >= tmplen)
5072     {
5073       if (tmplen == 0)
5074         tmplen = 1024;
5075       else
5076         tmplen *= 2;
5077       tmp = xrealloc (tmp, tmplen);
5078     }
5079   selector = strchr (method, ' ');
5080   if (selector != NULL)
5081     selector++;
5082
5083   category = strchr (method, '(');
5084
5085   if ((category != NULL) && (selector != NULL))
5086     {
5087       memcpy (tmp, method, (category - method));
5088       tmp[category - method] = ' ';
5089       memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
5090       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
5091       if (sym_text[0] == '[')
5092         completion_list_add_name (tmp + 1, sym_text, sym_text_len, text, word);
5093     }
5094
5095   if (selector != NULL)
5096     {
5097       /* Complete on selector only.  */
5098       strcpy (tmp, selector);
5099       tmp2 = strchr (tmp, ']');
5100       if (tmp2 != NULL)
5101         *tmp2 = '\0';
5102
5103       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
5104     }
5105 }
5106
5107 /* Break the non-quoted text based on the characters which are in
5108    symbols.  FIXME: This should probably be language-specific.  */
5109
5110 static const char *
5111 language_search_unquoted_string (const char *text, const char *p)
5112 {
5113   for (; p > text; --p)
5114     {
5115       if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
5116         continue;
5117       else
5118         {
5119           if ((current_language->la_language == language_objc))
5120             {
5121               if (p[-1] == ':')     /* Might be part of a method name.  */
5122                 continue;
5123               else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
5124                 p -= 2;             /* Beginning of a method name.  */
5125               else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
5126                 {                   /* Might be part of a method name.  */
5127                   const char *t = p;
5128
5129                   /* Seeing a ' ' or a '(' is not conclusive evidence
5130                      that we are in the middle of a method name.  However,
5131                      finding "-[" or "+[" should be pretty un-ambiguous.
5132                      Unfortunately we have to find it now to decide.  */
5133
5134                   while (t > text)
5135                     if (isalnum (t[-1]) || t[-1] == '_' ||
5136                         t[-1] == ' '    || t[-1] == ':' ||
5137                         t[-1] == '('    || t[-1] == ')')
5138                       --t;
5139                     else
5140                       break;
5141
5142                   if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
5143                     p = t - 2;      /* Method name detected.  */
5144                   /* Else we leave with p unchanged.  */
5145                 }
5146             }
5147           break;
5148         }
5149     }
5150   return p;
5151 }
5152
5153 static void
5154 completion_list_add_fields (struct symbol *sym, const char *sym_text,
5155                             int sym_text_len, const char *text,
5156                             const char *word)
5157 {
5158   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5159     {
5160       struct type *t = SYMBOL_TYPE (sym);
5161       enum type_code c = TYPE_CODE (t);
5162       int j;
5163
5164       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
5165         for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
5166           if (TYPE_FIELD_NAME (t, j))
5167             completion_list_add_name (TYPE_FIELD_NAME (t, j),
5168                                       sym_text, sym_text_len, text, word);
5169     }
5170 }
5171
5172 /* Type of the user_data argument passed to add_macro_name,
5173    symbol_completion_matcher and symtab_expansion_callback.  */
5174
5175 struct add_name_data
5176 {
5177   /* Arguments required by completion_list_add_name.  */
5178   const char *sym_text;
5179   int sym_text_len;
5180   const char *text;
5181   const char *word;
5182
5183   /* Extra argument required for add_symtab_completions.  */
5184   enum type_code code;
5185 };
5186
5187 /* A callback used with macro_for_each and macro_for_each_in_scope.
5188    This adds a macro's name to the current completion list.  */
5189
5190 static void
5191 add_macro_name (const char *name, const struct macro_definition *ignore,
5192                 struct macro_source_file *ignore2, int ignore3,
5193                 void *user_data)
5194 {
5195   struct add_name_data *datum = (struct add_name_data *) user_data;
5196
5197   completion_list_add_name (name,
5198                             datum->sym_text, datum->sym_text_len,
5199                             datum->text, datum->word);
5200 }
5201
5202 /* A callback for expand_symtabs_matching.  */
5203
5204 static int
5205 symbol_completion_matcher (const char *name, void *user_data)
5206 {
5207   struct add_name_data *datum = (struct add_name_data *) user_data;
5208
5209   return compare_symbol_name (name, datum->sym_text, datum->sym_text_len);
5210 }
5211
5212 /* Add matching symbols from SYMTAB to the current completion list.  */
5213
5214 static void
5215 add_symtab_completions (struct compunit_symtab *cust,
5216                         const char *sym_text, int sym_text_len,
5217                         const char *text, const char *word,
5218                         enum type_code code)
5219 {
5220   struct symbol *sym;
5221   const struct block *b;
5222   struct block_iterator iter;
5223   int i;
5224
5225   for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
5226     {
5227       QUIT;
5228       b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), i);
5229       ALL_BLOCK_SYMBOLS (b, iter, sym)
5230         {
5231           if (code == TYPE_CODE_UNDEF
5232               || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5233                   && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
5234             COMPLETION_LIST_ADD_SYMBOL (sym,
5235                                         sym_text, sym_text_len,
5236                                         text, word);
5237         }
5238     }
5239 }
5240
5241 /* Callback to add completions to the current list when symbol tables
5242    are expanded during completion list generation.  */
5243
5244 static void
5245 symtab_expansion_callback (struct compunit_symtab *symtab,
5246                            void *user_data)
5247 {
5248   struct add_name_data *datum = (struct add_name_data *) user_data;
5249
5250   add_symtab_completions (symtab,
5251                           datum->sym_text, datum->sym_text_len,
5252                           datum->text, datum->word,
5253                           datum->code);
5254 }
5255
5256 VEC (char_ptr) *
5257 default_make_symbol_completion_list_break_on (const char *text,
5258                                               const char *word,
5259                                               const char *break_on,
5260                                               enum type_code code)
5261 {
5262   /* Problem: All of the symbols have to be copied because readline
5263      frees them.  I'm not going to worry about this; hopefully there
5264      won't be that many.  */
5265
5266   struct symbol *sym;
5267   struct compunit_symtab *cust;
5268   struct minimal_symbol *msymbol;
5269   struct objfile *objfile;
5270   const struct block *b;
5271   const struct block *surrounding_static_block, *surrounding_global_block;
5272   struct block_iterator iter;
5273   /* The symbol we are completing on.  Points in same buffer as text.  */
5274   const char *sym_text;
5275   /* Length of sym_text.  */
5276   int sym_text_len;
5277   struct add_name_data datum;
5278   struct cleanup *back_to;
5279
5280   /* Now look for the symbol we are supposed to complete on.  */
5281   {
5282     const char *p;
5283     char quote_found;
5284     const char *quote_pos = NULL;
5285
5286     /* First see if this is a quoted string.  */
5287     quote_found = '\0';
5288     for (p = text; *p != '\0'; ++p)
5289       {
5290         if (quote_found != '\0')
5291           {
5292             if (*p == quote_found)
5293               /* Found close quote.  */
5294               quote_found = '\0';
5295             else if (*p == '\\' && p[1] == quote_found)
5296               /* A backslash followed by the quote character
5297                  doesn't end the string.  */
5298               ++p;
5299           }
5300         else if (*p == '\'' || *p == '"')
5301           {
5302             quote_found = *p;
5303             quote_pos = p;
5304           }
5305       }
5306     if (quote_found == '\'')
5307       /* A string within single quotes can be a symbol, so complete on it.  */
5308       sym_text = quote_pos + 1;
5309     else if (quote_found == '"')
5310       /* A double-quoted string is never a symbol, nor does it make sense
5311          to complete it any other way.  */
5312       {
5313         return NULL;
5314       }
5315     else
5316       {
5317         /* It is not a quoted string.  Break it based on the characters
5318            which are in symbols.  */
5319         while (p > text)
5320           {
5321             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
5322                 || p[-1] == ':' || strchr (break_on, p[-1]) != NULL)
5323               --p;
5324             else
5325               break;
5326           }
5327         sym_text = p;
5328       }
5329   }
5330
5331   sym_text_len = strlen (sym_text);
5332
5333   /* Prepare SYM_TEXT_LEN for compare_symbol_name.  */
5334
5335   if (current_language->la_language == language_cplus
5336       || current_language->la_language == language_java
5337       || current_language->la_language == language_fortran)
5338     {
5339       /* These languages may have parameters entered by user but they are never
5340          present in the partial symbol tables.  */
5341
5342       const char *cs = memchr (sym_text, '(', sym_text_len);
5343
5344       if (cs)
5345         sym_text_len = cs - sym_text;
5346     }
5347   gdb_assert (sym_text[sym_text_len] == '\0' || sym_text[sym_text_len] == '(');
5348
5349   return_val = NULL;
5350   back_to = make_cleanup (do_free_completion_list, &return_val);
5351
5352   datum.sym_text = sym_text;
5353   datum.sym_text_len = sym_text_len;
5354   datum.text = text;
5355   datum.word = word;
5356   datum.code = code;
5357
5358   /* At this point scan through the misc symbol vectors and add each
5359      symbol you find to the list.  Eventually we want to ignore
5360      anything that isn't a text symbol (everything else will be
5361      handled by the psymtab code below).  */
5362
5363   if (code == TYPE_CODE_UNDEF)
5364     {
5365       ALL_MSYMBOLS (objfile, msymbol)
5366         {
5367           QUIT;
5368           MCOMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text,
5369                                        word);
5370
5371           completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text,
5372                                        word);
5373         }
5374     }
5375
5376   /* Add completions for all currently loaded symbol tables.  */
5377   ALL_COMPUNITS (objfile, cust)
5378     add_symtab_completions (cust, sym_text, sym_text_len, text, word,
5379                             code);
5380
5381   /* Look through the partial symtabs for all symbols which begin
5382      by matching SYM_TEXT.  Expand all CUs that you find to the list.
5383      symtab_expansion_callback is called for each expanded symtab,
5384      causing those symtab's completions to be added to the list too.  */
5385   expand_symtabs_matching (NULL, symbol_completion_matcher,
5386                            symtab_expansion_callback, ALL_DOMAIN,
5387                            &datum);
5388
5389   /* Search upwards from currently selected frame (so that we can
5390      complete on local vars).  Also catch fields of types defined in
5391      this places which match our text string.  Only complete on types
5392      visible from current context.  */
5393
5394   b = get_selected_block (0);
5395   surrounding_static_block = block_static_block (b);
5396   surrounding_global_block = block_global_block (b);
5397   if (surrounding_static_block != NULL)
5398     while (b != surrounding_static_block)
5399       {
5400         QUIT;
5401
5402         ALL_BLOCK_SYMBOLS (b, iter, sym)
5403           {
5404             if (code == TYPE_CODE_UNDEF)
5405               {
5406                 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
5407                                             word);
5408                 completion_list_add_fields (sym, sym_text, sym_text_len, text,
5409                                             word);
5410               }
5411             else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5412                      && TYPE_CODE (SYMBOL_TYPE (sym)) == code)
5413               COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
5414                                           word);
5415           }
5416
5417         /* Stop when we encounter an enclosing function.  Do not stop for
5418            non-inlined functions - the locals of the enclosing function
5419            are in scope for a nested function.  */
5420         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
5421           break;
5422         b = BLOCK_SUPERBLOCK (b);
5423       }
5424
5425   /* Add fields from the file's types; symbols will be added below.  */
5426
5427   if (code == TYPE_CODE_UNDEF)
5428     {
5429       if (surrounding_static_block != NULL)
5430         ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
5431           completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
5432
5433       if (surrounding_global_block != NULL)
5434         ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
5435           completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
5436     }
5437
5438   /* Skip macros if we are completing a struct tag -- arguable but
5439      usually what is expected.  */
5440   if (current_language->la_macro_expansion == macro_expansion_c
5441       && code == TYPE_CODE_UNDEF)
5442     {
5443       struct macro_scope *scope;
5444
5445       /* Add any macros visible in the default scope.  Note that this
5446          may yield the occasional wrong result, because an expression
5447          might be evaluated in a scope other than the default.  For
5448          example, if the user types "break file:line if <TAB>", the
5449          resulting expression will be evaluated at "file:line" -- but
5450          at there does not seem to be a way to detect this at
5451          completion time.  */
5452       scope = default_macro_scope ();
5453       if (scope)
5454         {
5455           macro_for_each_in_scope (scope->file, scope->line,
5456                                    add_macro_name, &datum);
5457           xfree (scope);
5458         }
5459
5460       /* User-defined macros are always visible.  */
5461       macro_for_each (macro_user_macros, add_macro_name, &datum);
5462     }
5463
5464   discard_cleanups (back_to);
5465   return (return_val);
5466 }
5467
5468 VEC (char_ptr) *
5469 default_make_symbol_completion_list (const char *text, const char *word,
5470                                      enum type_code code)
5471 {
5472   return default_make_symbol_completion_list_break_on (text, word, "", code);
5473 }
5474
5475 /* Return a vector of all symbols (regardless of class) which begin by
5476    matching TEXT.  If the answer is no symbols, then the return value
5477    is NULL.  */
5478
5479 VEC (char_ptr) *
5480 make_symbol_completion_list (const char *text, const char *word)
5481 {
5482   return current_language->la_make_symbol_completion_list (text, word,
5483                                                            TYPE_CODE_UNDEF);
5484 }
5485
5486 /* Like make_symbol_completion_list, but only return STRUCT_DOMAIN
5487    symbols whose type code is CODE.  */
5488
5489 VEC (char_ptr) *
5490 make_symbol_completion_type (const char *text, const char *word,
5491                              enum type_code code)
5492 {
5493   gdb_assert (code == TYPE_CODE_UNION
5494               || code == TYPE_CODE_STRUCT
5495               || code == TYPE_CODE_ENUM);
5496   return current_language->la_make_symbol_completion_list (text, word, code);
5497 }
5498
5499 /* Like make_symbol_completion_list, but suitable for use as a
5500    completion function.  */
5501
5502 VEC (char_ptr) *
5503 make_symbol_completion_list_fn (struct cmd_list_element *ignore,
5504                                 const char *text, const char *word)
5505 {
5506   return make_symbol_completion_list (text, word);
5507 }
5508
5509 /* Like make_symbol_completion_list, but returns a list of symbols
5510    defined in a source file FILE.  */
5511
5512 VEC (char_ptr) *
5513 make_file_symbol_completion_list (const char *text, const char *word,
5514                                   const char *srcfile)
5515 {
5516   struct symbol *sym;
5517   struct symtab *s;
5518   struct block *b;
5519   struct block_iterator iter;
5520   /* The symbol we are completing on.  Points in same buffer as text.  */
5521   const char *sym_text;
5522   /* Length of sym_text.  */
5523   int sym_text_len;
5524
5525   /* Now look for the symbol we are supposed to complete on.
5526      FIXME: This should be language-specific.  */
5527   {
5528     const char *p;
5529     char quote_found;
5530     const char *quote_pos = NULL;
5531
5532     /* First see if this is a quoted string.  */
5533     quote_found = '\0';
5534     for (p = text; *p != '\0'; ++p)
5535       {
5536         if (quote_found != '\0')
5537           {
5538             if (*p == quote_found)
5539               /* Found close quote.  */
5540               quote_found = '\0';
5541             else if (*p == '\\' && p[1] == quote_found)
5542               /* A backslash followed by the quote character
5543                  doesn't end the string.  */
5544               ++p;
5545           }
5546         else if (*p == '\'' || *p == '"')
5547           {
5548             quote_found = *p;
5549             quote_pos = p;
5550           }
5551       }
5552     if (quote_found == '\'')
5553       /* A string within single quotes can be a symbol, so complete on it.  */
5554       sym_text = quote_pos + 1;
5555     else if (quote_found == '"')
5556       /* A double-quoted string is never a symbol, nor does it make sense
5557          to complete it any other way.  */
5558       {
5559         return NULL;
5560       }
5561     else
5562       {
5563         /* Not a quoted string.  */
5564         sym_text = language_search_unquoted_string (text, p);
5565       }
5566   }
5567
5568   sym_text_len = strlen (sym_text);
5569
5570   return_val = NULL;
5571
5572   /* Find the symtab for SRCFILE (this loads it if it was not yet read
5573      in).  */
5574   s = lookup_symtab (srcfile);
5575   if (s == NULL)
5576     {
5577       /* Maybe they typed the file with leading directories, while the
5578          symbol tables record only its basename.  */
5579       const char *tail = lbasename (srcfile);
5580
5581       if (tail > srcfile)
5582         s = lookup_symtab (tail);
5583     }
5584
5585   /* If we have no symtab for that file, return an empty list.  */
5586   if (s == NULL)
5587     return (return_val);
5588
5589   /* Go through this symtab and check the externs and statics for
5590      symbols which match.  */
5591
5592   b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (s), GLOBAL_BLOCK);
5593   ALL_BLOCK_SYMBOLS (b, iter, sym)
5594     {
5595       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
5596     }
5597
5598   b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (s), STATIC_BLOCK);
5599   ALL_BLOCK_SYMBOLS (b, iter, sym)
5600     {
5601       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
5602     }
5603
5604   return (return_val);
5605 }
5606
5607 /* A helper function for make_source_files_completion_list.  It adds
5608    another file name to a list of possible completions, growing the
5609    list as necessary.  */
5610
5611 static void
5612 add_filename_to_list (const char *fname, const char *text, const char *word,
5613                       VEC (char_ptr) **list)
5614 {
5615   char *new;
5616   size_t fnlen = strlen (fname);
5617
5618   if (word == text)
5619     {
5620       /* Return exactly fname.  */
5621       new = xmalloc (fnlen + 5);
5622       strcpy (new, fname);
5623     }
5624   else if (word > text)
5625     {
5626       /* Return some portion of fname.  */
5627       new = xmalloc (fnlen + 5);
5628       strcpy (new, fname + (word - text));
5629     }
5630   else
5631     {
5632       /* Return some of TEXT plus fname.  */
5633       new = xmalloc (fnlen + (text - word) + 5);
5634       strncpy (new, word, text - word);
5635       new[text - word] = '\0';
5636       strcat (new, fname);
5637     }
5638   VEC_safe_push (char_ptr, *list, new);
5639 }
5640
5641 static int
5642 not_interesting_fname (const char *fname)
5643 {
5644   static const char *illegal_aliens[] = {
5645     "_globals_",        /* inserted by coff_symtab_read */
5646     NULL
5647   };
5648   int i;
5649
5650   for (i = 0; illegal_aliens[i]; i++)
5651     {
5652       if (filename_cmp (fname, illegal_aliens[i]) == 0)
5653         return 1;
5654     }
5655   return 0;
5656 }
5657
5658 /* An object of this type is passed as the user_data argument to
5659    map_partial_symbol_filenames.  */
5660 struct add_partial_filename_data
5661 {
5662   struct filename_seen_cache *filename_seen_cache;
5663   const char *text;
5664   const char *word;
5665   int text_len;
5666   VEC (char_ptr) **list;
5667 };
5668
5669 /* A callback for map_partial_symbol_filenames.  */
5670
5671 static void
5672 maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
5673                                    void *user_data)
5674 {
5675   struct add_partial_filename_data *data = user_data;
5676
5677   if (not_interesting_fname (filename))
5678     return;
5679   if (!filename_seen (data->filename_seen_cache, filename, 1)
5680       && filename_ncmp (filename, data->text, data->text_len) == 0)
5681     {
5682       /* This file matches for a completion; add it to the
5683          current list of matches.  */
5684       add_filename_to_list (filename, data->text, data->word, data->list);
5685     }
5686   else
5687     {
5688       const char *base_name = lbasename (filename);
5689
5690       if (base_name != filename
5691           && !filename_seen (data->filename_seen_cache, base_name, 1)
5692           && filename_ncmp (base_name, data->text, data->text_len) == 0)
5693         add_filename_to_list (base_name, data->text, data->word, data->list);
5694     }
5695 }
5696
5697 /* Return a vector of all source files whose names begin with matching
5698    TEXT.  The file names are looked up in the symbol tables of this
5699    program.  If the answer is no matchess, then the return value is
5700    NULL.  */
5701
5702 VEC (char_ptr) *
5703 make_source_files_completion_list (const char *text, const char *word)
5704 {
5705   struct compunit_symtab *cu;
5706   struct symtab *s;
5707   struct objfile *objfile;
5708   size_t text_len = strlen (text);
5709   VEC (char_ptr) *list = NULL;
5710   const char *base_name;
5711   struct add_partial_filename_data datum;
5712   struct filename_seen_cache *filename_seen_cache;
5713   struct cleanup *back_to, *cache_cleanup;
5714
5715   if (!have_full_symbols () && !have_partial_symbols ())
5716     return list;
5717
5718   back_to = make_cleanup (do_free_completion_list, &list);
5719
5720   filename_seen_cache = create_filename_seen_cache ();
5721   cache_cleanup = make_cleanup (delete_filename_seen_cache,
5722                                 filename_seen_cache);
5723
5724   ALL_FILETABS (objfile, cu, s)
5725     {
5726       if (not_interesting_fname (s->filename))
5727         continue;
5728       if (!filename_seen (filename_seen_cache, s->filename, 1)
5729           && filename_ncmp (s->filename, text, text_len) == 0)
5730         {
5731           /* This file matches for a completion; add it to the current
5732              list of matches.  */
5733           add_filename_to_list (s->filename, text, word, &list);
5734         }
5735       else
5736         {
5737           /* NOTE: We allow the user to type a base name when the
5738              debug info records leading directories, but not the other
5739              way around.  This is what subroutines of breakpoint
5740              command do when they parse file names.  */
5741           base_name = lbasename (s->filename);
5742           if (base_name != s->filename
5743               && !filename_seen (filename_seen_cache, base_name, 1)
5744               && filename_ncmp (base_name, text, text_len) == 0)
5745             add_filename_to_list (base_name, text, word, &list);
5746         }
5747     }
5748
5749   datum.filename_seen_cache = filename_seen_cache;
5750   datum.text = text;
5751   datum.word = word;
5752   datum.text_len = text_len;
5753   datum.list = &list;
5754   map_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
5755                         0 /*need_fullname*/);
5756
5757   do_cleanups (cache_cleanup);
5758   discard_cleanups (back_to);
5759
5760   return list;
5761 }
5762 \f
5763 /* Track MAIN */
5764
5765 /* Return the "main_info" object for the current program space.  If
5766    the object has not yet been created, create it and fill in some
5767    default values.  */
5768
5769 static struct main_info *
5770 get_main_info (void)
5771 {
5772   struct main_info *info = program_space_data (current_program_space,
5773                                                main_progspace_key);
5774
5775   if (info == NULL)
5776     {
5777       /* It may seem strange to store the main name in the progspace
5778          and also in whatever objfile happens to see a main name in
5779          its debug info.  The reason for this is mainly historical:
5780          gdb returned "main" as the name even if no function named
5781          "main" was defined the program; and this approach lets us
5782          keep compatibility.  */
5783       info = XCNEW (struct main_info);
5784       info->language_of_main = language_unknown;
5785       set_program_space_data (current_program_space, main_progspace_key,
5786                               info);
5787     }
5788
5789   return info;
5790 }
5791
5792 /* A cleanup to destroy a struct main_info when a progspace is
5793    destroyed.  */
5794
5795 static void
5796 main_info_cleanup (struct program_space *pspace, void *data)
5797 {
5798   struct main_info *info = data;
5799
5800   if (info != NULL)
5801     xfree (info->name_of_main);
5802   xfree (info);
5803 }
5804
5805 static void
5806 set_main_name (const char *name, enum language lang)
5807 {
5808   struct main_info *info = get_main_info ();
5809
5810   if (info->name_of_main != NULL)
5811     {
5812       xfree (info->name_of_main);
5813       info->name_of_main = NULL;
5814       info->language_of_main = language_unknown;
5815     }
5816   if (name != NULL)
5817     {
5818       info->name_of_main = xstrdup (name);
5819       info->language_of_main = lang;
5820     }
5821 }
5822
5823 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
5824    accordingly.  */
5825
5826 static void
5827 find_main_name (void)
5828 {
5829   const char *new_main_name;
5830   struct objfile *objfile;
5831
5832   /* First check the objfiles to see whether a debuginfo reader has
5833      picked up the appropriate main name.  Historically the main name
5834      was found in a more or less random way; this approach instead
5835      relies on the order of objfile creation -- which still isn't
5836      guaranteed to get the correct answer, but is just probably more
5837      accurate.  */
5838   ALL_OBJFILES (objfile)
5839   {
5840     if (objfile->per_bfd->name_of_main != NULL)
5841       {
5842         set_main_name (objfile->per_bfd->name_of_main,
5843                        objfile->per_bfd->language_of_main);
5844         return;
5845       }
5846   }
5847
5848   /* Try to see if the main procedure is in Ada.  */
5849   /* FIXME: brobecker/2005-03-07: Another way of doing this would
5850      be to add a new method in the language vector, and call this
5851      method for each language until one of them returns a non-empty
5852      name.  This would allow us to remove this hard-coded call to
5853      an Ada function.  It is not clear that this is a better approach
5854      at this point, because all methods need to be written in a way
5855      such that false positives never be returned.  For instance, it is
5856      important that a method does not return a wrong name for the main
5857      procedure if the main procedure is actually written in a different
5858      language.  It is easy to guaranty this with Ada, since we use a
5859      special symbol generated only when the main in Ada to find the name
5860      of the main procedure.  It is difficult however to see how this can
5861      be guarantied for languages such as C, for instance.  This suggests
5862      that order of call for these methods becomes important, which means
5863      a more complicated approach.  */
5864   new_main_name = ada_main_name ();
5865   if (new_main_name != NULL)
5866     {
5867       set_main_name (new_main_name, language_ada);
5868       return;
5869     }
5870
5871   new_main_name = d_main_name ();
5872   if (new_main_name != NULL)
5873     {
5874       set_main_name (new_main_name, language_d);
5875       return;
5876     }
5877
5878   new_main_name = go_main_name ();
5879   if (new_main_name != NULL)
5880     {
5881       set_main_name (new_main_name, language_go);
5882       return;
5883     }
5884
5885   new_main_name = pascal_main_name ();
5886   if (new_main_name != NULL)
5887     {
5888       set_main_name (new_main_name, language_pascal);
5889       return;
5890     }
5891
5892   /* The languages above didn't identify the name of the main procedure.
5893      Fallback to "main".  */
5894   set_main_name ("main", language_unknown);
5895 }
5896
5897 char *
5898 main_name (void)
5899 {
5900   struct main_info *info = get_main_info ();
5901
5902   if (info->name_of_main == NULL)
5903     find_main_name ();
5904
5905   return info->name_of_main;
5906 }
5907
5908 /* Return the language of the main function.  If it is not known,
5909    return language_unknown.  */
5910
5911 enum language
5912 main_language (void)
5913 {
5914   struct main_info *info = get_main_info ();
5915
5916   if (info->name_of_main == NULL)
5917     find_main_name ();
5918
5919   return info->language_of_main;
5920 }
5921
5922 /* Handle ``executable_changed'' events for the symtab module.  */
5923
5924 static void
5925 symtab_observer_executable_changed (void)
5926 {
5927   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
5928   set_main_name (NULL, language_unknown);
5929 }
5930
5931 /* Return 1 if the supplied producer string matches the ARM RealView
5932    compiler (armcc).  */
5933
5934 int
5935 producer_is_realview (const char *producer)
5936 {
5937   static const char *const arm_idents[] = {
5938     "ARM C Compiler, ADS",
5939     "Thumb C Compiler, ADS",
5940     "ARM C++ Compiler, ADS",
5941     "Thumb C++ Compiler, ADS",
5942     "ARM/Thumb C/C++ Compiler, RVCT",
5943     "ARM C/C++ Compiler, RVCT"
5944   };
5945   int i;
5946
5947   if (producer == NULL)
5948     return 0;
5949
5950   for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
5951     if (strncmp (producer, arm_idents[i], strlen (arm_idents[i])) == 0)
5952       return 1;
5953
5954   return 0;
5955 }
5956
5957 \f
5958
5959 /* The next index to hand out in response to a registration request.  */
5960
5961 static int next_aclass_value = LOC_FINAL_VALUE;
5962
5963 /* The maximum number of "aclass" registrations we support.  This is
5964    constant for convenience.  */
5965 #define MAX_SYMBOL_IMPLS (LOC_FINAL_VALUE + 10)
5966
5967 /* The objects representing the various "aclass" values.  The elements
5968    from 0 up to LOC_FINAL_VALUE-1 represent themselves, and subsequent
5969    elements are those registered at gdb initialization time.  */
5970
5971 static struct symbol_impl symbol_impl[MAX_SYMBOL_IMPLS];
5972
5973 /* The globally visible pointer.  This is separate from 'symbol_impl'
5974    so that it can be const.  */
5975
5976 const struct symbol_impl *symbol_impls = &symbol_impl[0];
5977
5978 /* Make sure we saved enough room in struct symbol.  */
5979
5980 gdb_static_assert (MAX_SYMBOL_IMPLS <= (1 << SYMBOL_ACLASS_BITS));
5981
5982 /* Register a computed symbol type.  ACLASS must be LOC_COMPUTED.  OPS
5983    is the ops vector associated with this index.  This returns the new
5984    index, which should be used as the aclass_index field for symbols
5985    of this type.  */
5986
5987 int
5988 register_symbol_computed_impl (enum address_class aclass,
5989                                const struct symbol_computed_ops *ops)
5990 {
5991   int result = next_aclass_value++;
5992
5993   gdb_assert (aclass == LOC_COMPUTED);
5994   gdb_assert (result < MAX_SYMBOL_IMPLS);
5995   symbol_impl[result].aclass = aclass;
5996   symbol_impl[result].ops_computed = ops;
5997
5998   /* Sanity check OPS.  */
5999   gdb_assert (ops != NULL);
6000   gdb_assert (ops->tracepoint_var_ref != NULL);
6001   gdb_assert (ops->describe_location != NULL);
6002   gdb_assert (ops->read_needs_frame != NULL);
6003   gdb_assert (ops->read_variable != NULL);
6004
6005   return result;
6006 }
6007
6008 /* Register a function with frame base type.  ACLASS must be LOC_BLOCK.
6009    OPS is the ops vector associated with this index.  This returns the
6010    new index, which should be used as the aclass_index field for symbols
6011    of this type.  */
6012
6013 int
6014 register_symbol_block_impl (enum address_class aclass,
6015                             const struct symbol_block_ops *ops)
6016 {
6017   int result = next_aclass_value++;
6018
6019   gdb_assert (aclass == LOC_BLOCK);
6020   gdb_assert (result < MAX_SYMBOL_IMPLS);
6021   symbol_impl[result].aclass = aclass;
6022   symbol_impl[result].ops_block = ops;
6023
6024   /* Sanity check OPS.  */
6025   gdb_assert (ops != NULL);
6026   gdb_assert (ops->find_frame_base_location != NULL);
6027
6028   return result;
6029 }
6030
6031 /* Register a register symbol type.  ACLASS must be LOC_REGISTER or
6032    LOC_REGPARM_ADDR.  OPS is the register ops vector associated with
6033    this index.  This returns the new index, which should be used as
6034    the aclass_index field for symbols of this type.  */
6035
6036 int
6037 register_symbol_register_impl (enum address_class aclass,
6038                                const struct symbol_register_ops *ops)
6039 {
6040   int result = next_aclass_value++;
6041
6042   gdb_assert (aclass == LOC_REGISTER || aclass == LOC_REGPARM_ADDR);
6043   gdb_assert (result < MAX_SYMBOL_IMPLS);
6044   symbol_impl[result].aclass = aclass;
6045   symbol_impl[result].ops_register = ops;
6046
6047   return result;
6048 }
6049
6050 /* Initialize elements of 'symbol_impl' for the constants in enum
6051    address_class.  */
6052
6053 static void
6054 initialize_ordinary_address_classes (void)
6055 {
6056   int i;
6057
6058   for (i = 0; i < LOC_FINAL_VALUE; ++i)
6059     symbol_impl[i].aclass = i;
6060 }
6061
6062 \f
6063
6064 /* Helper function to initialize the fields of an objfile-owned symbol.
6065    It assumed that *SYM is already all zeroes.  */
6066
6067 static void
6068 initialize_objfile_symbol_1 (struct symbol *sym)
6069 {
6070   SYMBOL_OBJFILE_OWNED (sym) = 1;
6071   SYMBOL_SECTION (sym) = -1;
6072 }
6073
6074 /* Initialize the symbol SYM, and mark it as being owned by an objfile.  */
6075
6076 void
6077 initialize_objfile_symbol (struct symbol *sym)
6078 {
6079   memset (sym, 0, sizeof (*sym));
6080   initialize_objfile_symbol_1 (sym);
6081 }
6082
6083 /* Allocate and initialize a new 'struct symbol' on OBJFILE's
6084    obstack.  */
6085
6086 struct symbol *
6087 allocate_symbol (struct objfile *objfile)
6088 {
6089   struct symbol *result;
6090
6091   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
6092   initialize_objfile_symbol_1 (result);
6093
6094   return result;
6095 }
6096
6097 /* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
6098    obstack.  */
6099
6100 struct template_symbol *
6101 allocate_template_symbol (struct objfile *objfile)
6102 {
6103   struct template_symbol *result;
6104
6105   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct template_symbol);
6106   initialize_objfile_symbol_1 (&result->base);
6107
6108   return result;
6109 }
6110
6111 /* See symtab.h.  */
6112
6113 struct objfile *
6114 symbol_objfile (const struct symbol *symbol)
6115 {
6116   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6117   return SYMTAB_OBJFILE (symbol->owner.symtab);
6118 }
6119
6120 /* See symtab.h.  */
6121
6122 struct gdbarch *
6123 symbol_arch (const struct symbol *symbol)
6124 {
6125   if (!SYMBOL_OBJFILE_OWNED (symbol))
6126     return symbol->owner.arch;
6127   return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
6128 }
6129
6130 /* See symtab.h.  */
6131
6132 struct symtab *
6133 symbol_symtab (const struct symbol *symbol)
6134 {
6135   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6136   return symbol->owner.symtab;
6137 }
6138
6139 /* See symtab.h.  */
6140
6141 void
6142 symbol_set_symtab (struct symbol *symbol, struct symtab *symtab)
6143 {
6144   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6145   symbol->owner.symtab = symtab;
6146 }
6147
6148 \f
6149
6150 void
6151 _initialize_symtab (void)
6152 {
6153   initialize_ordinary_address_classes ();
6154
6155   main_progspace_key
6156     = register_program_space_data_with_cleanup (NULL, main_info_cleanup);
6157
6158   symbol_cache_key
6159     = register_program_space_data_with_cleanup (NULL, symbol_cache_cleanup);
6160
6161   add_info ("variables", variables_info, _("\
6162 All global and static variable names, or those matching REGEXP."));
6163   if (dbx_commands)
6164     add_com ("whereis", class_info, variables_info, _("\
6165 All global and static variable names, or those matching REGEXP."));
6166
6167   add_info ("functions", functions_info,
6168             _("All function names, or those matching REGEXP."));
6169
6170   /* FIXME:  This command has at least the following problems:
6171      1.  It prints builtin types (in a very strange and confusing fashion).
6172      2.  It doesn't print right, e.g. with
6173      typedef struct foo *FOO
6174      type_print prints "FOO" when we want to make it (in this situation)
6175      print "struct foo *".
6176      I also think "ptype" or "whatis" is more likely to be useful (but if
6177      there is much disagreement "info types" can be fixed).  */
6178   add_info ("types", types_info,
6179             _("All type names, or those matching REGEXP."));
6180
6181   add_info ("sources", sources_info,
6182             _("Source files in the program."));
6183
6184   add_com ("rbreak", class_breakpoint, rbreak_command,
6185            _("Set a breakpoint for all functions matching REGEXP."));
6186
6187   if (xdb_commands)
6188     {
6189       add_com ("lf", class_info, sources_info,
6190                _("Source files in the program"));
6191       add_com ("lg", class_info, variables_info, _("\
6192 All global and static variable names, or those matching REGEXP."));
6193     }
6194
6195   add_setshow_enum_cmd ("multiple-symbols", no_class,
6196                         multiple_symbols_modes, &multiple_symbols_mode,
6197                         _("\
6198 Set the debugger behavior when more than one symbol are possible matches\n\
6199 in an expression."), _("\
6200 Show how the debugger handles ambiguities in expressions."), _("\
6201 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
6202                         NULL, NULL, &setlist, &showlist);
6203
6204   add_setshow_boolean_cmd ("basenames-may-differ", class_obscure,
6205                            &basenames_may_differ, _("\
6206 Set whether a source file may have multiple base names."), _("\
6207 Show whether a source file may have multiple base names."), _("\
6208 (A \"base name\" is the name of a file with the directory part removed.\n\
6209 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
6210 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
6211 before comparing them.  Canonicalization is an expensive operation,\n\
6212 but it allows the same file be known by more than one base name.\n\
6213 If not set (the default), all source files are assumed to have just\n\
6214 one base name, and gdb will do file name comparisons more efficiently."),
6215                            NULL, NULL,
6216                            &setlist, &showlist);
6217
6218   add_setshow_zuinteger_cmd ("symtab-create", no_class, &symtab_create_debug,
6219                              _("Set debugging of symbol table creation."),
6220                              _("Show debugging of symbol table creation."), _("\
6221 When enabled (non-zero), debugging messages are printed when building\n\
6222 symbol tables.  A value of 1 (one) normally provides enough information.\n\
6223 A value greater than 1 provides more verbose information."),
6224                              NULL,
6225                              NULL,
6226                              &setdebuglist, &showdebuglist);
6227
6228   add_setshow_zuinteger_cmd ("symbol-lookup", no_class, &symbol_lookup_debug,
6229                            _("\
6230 Set debugging of symbol lookup."), _("\
6231 Show debugging of symbol lookup."), _("\
6232 When enabled (non-zero), symbol lookups are logged."),
6233                            NULL, NULL,
6234                            &setdebuglist, &showdebuglist);
6235
6236   add_setshow_zuinteger_cmd ("symbol-cache-size", no_class,
6237                              &new_symbol_cache_size,
6238                              _("Set the size of the symbol cache."),
6239                              _("Show the size of the symbol cache."), _("\
6240 The size of the symbol cache.\n\
6241 If zero then the symbol cache is disabled."),
6242                              set_symbol_cache_size_handler, NULL,
6243                              &maintenance_set_cmdlist,
6244                              &maintenance_show_cmdlist);
6245
6246   add_cmd ("symbol-cache", class_maintenance, maintenance_print_symbol_cache,
6247            _("Dump the symbol cache for each program space."),
6248            &maintenanceprintlist);
6249
6250   add_cmd ("symbol-cache-statistics", class_maintenance,
6251            maintenance_print_symbol_cache_statistics,
6252            _("Print symbol cache statistics for each program space."),
6253            &maintenanceprintlist);
6254
6255   add_cmd ("flush-symbol-cache", class_maintenance,
6256            maintenance_flush_symbol_cache,
6257            _("Flush the symbol cache for each program space."),
6258            &maintenancelist);
6259
6260   observer_attach_executable_changed (symtab_observer_executable_changed);
6261   observer_attach_new_objfile (symtab_new_objfile_observer);
6262   observer_attach_free_objfile (symtab_free_objfile_observer);
6263 }