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