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