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