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