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