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