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