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