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