Make the linespec/location completer ignore data symbols
[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 \f
2968
2969 /* Find the source file and line number for a given PC value and SECTION.
2970    Return a structure containing a symtab pointer, a line number,
2971    and a pc range for the entire source line.
2972    The value's .pc field is NOT the specified pc.
2973    NOTCURRENT nonzero means, if specified pc is on a line boundary,
2974    use the line that ends there.  Otherwise, in that case, the line
2975    that begins there is used.  */
2976
2977 /* The big complication here is that a line may start in one file, and end just
2978    before the start of another file.  This usually occurs when you #include
2979    code in the middle of a subroutine.  To properly find the end of a line's PC
2980    range, we must search all symtabs associated with this compilation unit, and
2981    find the one whose first PC is closer than that of the next line in this
2982    symtab.  */
2983
2984 /* If it's worth the effort, we could be using a binary search.  */
2985
2986 struct symtab_and_line
2987 find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
2988 {
2989   struct compunit_symtab *cust;
2990   struct symtab *iter_s;
2991   struct linetable *l;
2992   int len;
2993   int i;
2994   struct linetable_entry *item;
2995   const struct blockvector *bv;
2996   struct bound_minimal_symbol msymbol;
2997
2998   /* Info on best line seen so far, and where it starts, and its file.  */
2999
3000   struct linetable_entry *best = NULL;
3001   CORE_ADDR best_end = 0;
3002   struct symtab *best_symtab = 0;
3003
3004   /* Store here the first line number
3005      of a file which contains the line at the smallest pc after PC.
3006      If we don't find a line whose range contains PC,
3007      we will use a line one less than this,
3008      with a range from the start of that file to the first line's pc.  */
3009   struct linetable_entry *alt = NULL;
3010
3011   /* Info on best line seen in this file.  */
3012
3013   struct linetable_entry *prev;
3014
3015   /* If this pc is not from the current frame,
3016      it is the address of the end of a call instruction.
3017      Quite likely that is the start of the following statement.
3018      But what we want is the statement containing the instruction.
3019      Fudge the pc to make sure we get that.  */
3020
3021   /* It's tempting to assume that, if we can't find debugging info for
3022      any function enclosing PC, that we shouldn't search for line
3023      number info, either.  However, GAS can emit line number info for
3024      assembly files --- very helpful when debugging hand-written
3025      assembly code.  In such a case, we'd have no debug info for the
3026      function, but we would have line info.  */
3027
3028   if (notcurrent)
3029     pc -= 1;
3030
3031   /* elz: added this because this function returned the wrong
3032      information if the pc belongs to a stub (import/export)
3033      to call a shlib function.  This stub would be anywhere between
3034      two functions in the target, and the line info was erroneously
3035      taken to be the one of the line before the pc.  */
3036
3037   /* RT: Further explanation:
3038
3039    * We have stubs (trampolines) inserted between procedures.
3040    *
3041    * Example: "shr1" exists in a shared library, and a "shr1" stub also
3042    * exists in the main image.
3043    *
3044    * In the minimal symbol table, we have a bunch of symbols
3045    * sorted by start address.  The stubs are marked as "trampoline",
3046    * the others appear as text. E.g.:
3047    *
3048    *  Minimal symbol table for main image
3049    *     main:  code for main (text symbol)
3050    *     shr1: stub  (trampoline symbol)
3051    *     foo:   code for foo (text symbol)
3052    *     ...
3053    *  Minimal symbol table for "shr1" image:
3054    *     ...
3055    *     shr1: code for shr1 (text symbol)
3056    *     ...
3057    *
3058    * So the code below is trying to detect if we are in the stub
3059    * ("shr1" stub), and if so, find the real code ("shr1" trampoline),
3060    * and if found,  do the symbolization from the real-code address
3061    * rather than the stub address.
3062    *
3063    * Assumptions being made about the minimal symbol table:
3064    *   1. lookup_minimal_symbol_by_pc() will return a trampoline only
3065    *      if we're really in the trampoline.s If we're beyond it (say
3066    *      we're in "foo" in the above example), it'll have a closer
3067    *      symbol (the "foo" text symbol for example) and will not
3068    *      return the trampoline.
3069    *   2. lookup_minimal_symbol_text() will find a real text symbol
3070    *      corresponding to the trampoline, and whose address will
3071    *      be different than the trampoline address.  I put in a sanity
3072    *      check for the address being the same, to avoid an
3073    *      infinite recursion.
3074    */
3075   msymbol = lookup_minimal_symbol_by_pc (pc);
3076   if (msymbol.minsym != NULL)
3077     if (MSYMBOL_TYPE (msymbol.minsym) == mst_solib_trampoline)
3078       {
3079         struct bound_minimal_symbol mfunsym
3080           = lookup_minimal_symbol_text (MSYMBOL_LINKAGE_NAME (msymbol.minsym),
3081                                         NULL);
3082
3083         if (mfunsym.minsym == NULL)
3084           /* I eliminated this warning since it is coming out
3085            * in the following situation:
3086            * gdb shmain // test program with shared libraries
3087            * (gdb) break shr1  // function in shared lib
3088            * Warning: In stub for ...
3089            * In the above situation, the shared lib is not loaded yet,
3090            * so of course we can't find the real func/line info,
3091            * but the "break" still works, and the warning is annoying.
3092            * So I commented out the warning.  RT */
3093           /* warning ("In stub for %s; unable to find real function/line info",
3094              SYMBOL_LINKAGE_NAME (msymbol)); */
3095           ;
3096         /* fall through */
3097         else if (BMSYMBOL_VALUE_ADDRESS (mfunsym)
3098                  == BMSYMBOL_VALUE_ADDRESS (msymbol))
3099           /* Avoid infinite recursion */
3100           /* See above comment about why warning is commented out.  */
3101           /* warning ("In stub for %s; unable to find real function/line info",
3102              SYMBOL_LINKAGE_NAME (msymbol)); */
3103           ;
3104         /* fall through */
3105         else
3106           return find_pc_line (BMSYMBOL_VALUE_ADDRESS (mfunsym), 0);
3107       }
3108
3109   symtab_and_line val;
3110   val.pspace = current_program_space;
3111
3112   cust = find_pc_sect_compunit_symtab (pc, section);
3113   if (cust == NULL)
3114     {
3115       /* If no symbol information, return previous pc.  */
3116       if (notcurrent)
3117         pc++;
3118       val.pc = pc;
3119       return val;
3120     }
3121
3122   bv = COMPUNIT_BLOCKVECTOR (cust);
3123
3124   /* Look at all the symtabs that share this blockvector.
3125      They all have the same apriori range, that we found was right;
3126      but they have different line tables.  */
3127
3128   ALL_COMPUNIT_FILETABS (cust, iter_s)
3129     {
3130       /* Find the best line in this symtab.  */
3131       l = SYMTAB_LINETABLE (iter_s);
3132       if (!l)
3133         continue;
3134       len = l->nitems;
3135       if (len <= 0)
3136         {
3137           /* I think len can be zero if the symtab lacks line numbers
3138              (e.g. gcc -g1).  (Either that or the LINETABLE is NULL;
3139              I'm not sure which, and maybe it depends on the symbol
3140              reader).  */
3141           continue;
3142         }
3143
3144       prev = NULL;
3145       item = l->item;           /* Get first line info.  */
3146
3147       /* Is this file's first line closer than the first lines of other files?
3148          If so, record this file, and its first line, as best alternate.  */
3149       if (item->pc > pc && (!alt || item->pc < alt->pc))
3150         alt = item;
3151
3152       for (i = 0; i < len; i++, item++)
3153         {
3154           /* Leave prev pointing to the linetable entry for the last line
3155              that started at or before PC.  */
3156           if (item->pc > pc)
3157             break;
3158
3159           prev = item;
3160         }
3161
3162       /* At this point, prev points at the line whose start addr is <= pc, and
3163          item points at the next line.  If we ran off the end of the linetable
3164          (pc >= start of the last line), then prev == item.  If pc < start of
3165          the first line, prev will not be set.  */
3166
3167       /* Is this file's best line closer than the best in the other files?
3168          If so, record this file, and its best line, as best so far.  Don't
3169          save prev if it represents the end of a function (i.e. line number
3170          0) instead of a real line.  */
3171
3172       if (prev && prev->line && (!best || prev->pc > best->pc))
3173         {
3174           best = prev;
3175           best_symtab = iter_s;
3176
3177           /* Discard BEST_END if it's before the PC of the current BEST.  */
3178           if (best_end <= best->pc)
3179             best_end = 0;
3180         }
3181
3182       /* If another line (denoted by ITEM) is in the linetable and its
3183          PC is after BEST's PC, but before the current BEST_END, then
3184          use ITEM's PC as the new best_end.  */
3185       if (best && i < len && item->pc > best->pc
3186           && (best_end == 0 || best_end > item->pc))
3187         best_end = item->pc;
3188     }
3189
3190   if (!best_symtab)
3191     {
3192       /* If we didn't find any line number info, just return zeros.
3193          We used to return alt->line - 1 here, but that could be
3194          anywhere; if we don't have line number info for this PC,
3195          don't make some up.  */
3196       val.pc = pc;
3197     }
3198   else if (best->line == 0)
3199     {
3200       /* If our best fit is in a range of PC's for which no line
3201          number info is available (line number is zero) then we didn't
3202          find any valid line information.  */
3203       val.pc = pc;
3204     }
3205   else
3206     {
3207       val.symtab = best_symtab;
3208       val.line = best->line;
3209       val.pc = best->pc;
3210       if (best_end && (!alt || best_end < alt->pc))
3211         val.end = best_end;
3212       else if (alt)
3213         val.end = alt->pc;
3214       else
3215         val.end = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
3216     }
3217   val.section = section;
3218   return val;
3219 }
3220
3221 /* Backward compatibility (no section).  */
3222
3223 struct symtab_and_line
3224 find_pc_line (CORE_ADDR pc, int notcurrent)
3225 {
3226   struct obj_section *section;
3227
3228   section = find_pc_overlay (pc);
3229   if (pc_in_unmapped_range (pc, section))
3230     pc = overlay_mapped_address (pc, section);
3231   return find_pc_sect_line (pc, section, notcurrent);
3232 }
3233
3234 /* See symtab.h.  */
3235
3236 struct symtab *
3237 find_pc_line_symtab (CORE_ADDR pc)
3238 {
3239   struct symtab_and_line sal;
3240
3241   /* This always passes zero for NOTCURRENT to find_pc_line.
3242      There are currently no callers that ever pass non-zero.  */
3243   sal = find_pc_line (pc, 0);
3244   return sal.symtab;
3245 }
3246 \f
3247 /* Find line number LINE in any symtab whose name is the same as
3248    SYMTAB.
3249
3250    If found, return the symtab that contains the linetable in which it was
3251    found, set *INDEX to the index in the linetable of the best entry
3252    found, and set *EXACT_MATCH nonzero if the value returned is an
3253    exact match.
3254
3255    If not found, return NULL.  */
3256
3257 struct symtab *
3258 find_line_symtab (struct symtab *symtab, int line,
3259                   int *index, int *exact_match)
3260 {
3261   int exact = 0;  /* Initialized here to avoid a compiler warning.  */
3262
3263   /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
3264      so far seen.  */
3265
3266   int best_index;
3267   struct linetable *best_linetable;
3268   struct symtab *best_symtab;
3269
3270   /* First try looking it up in the given symtab.  */
3271   best_linetable = SYMTAB_LINETABLE (symtab);
3272   best_symtab = symtab;
3273   best_index = find_line_common (best_linetable, line, &exact, 0);
3274   if (best_index < 0 || !exact)
3275     {
3276       /* Didn't find an exact match.  So we better keep looking for
3277          another symtab with the same name.  In the case of xcoff,
3278          multiple csects for one source file (produced by IBM's FORTRAN
3279          compiler) produce multiple symtabs (this is unavoidable
3280          assuming csects can be at arbitrary places in memory and that
3281          the GLOBAL_BLOCK of a symtab has a begin and end address).  */
3282
3283       /* BEST is the smallest linenumber > LINE so far seen,
3284          or 0 if none has been seen so far.
3285          BEST_INDEX and BEST_LINETABLE identify the item for it.  */
3286       int best;
3287
3288       struct objfile *objfile;
3289       struct compunit_symtab *cu;
3290       struct symtab *s;
3291
3292       if (best_index >= 0)
3293         best = best_linetable->item[best_index].line;
3294       else
3295         best = 0;
3296
3297       ALL_OBJFILES (objfile)
3298       {
3299         if (objfile->sf)
3300           objfile->sf->qf->expand_symtabs_with_fullname (objfile,
3301                                                    symtab_to_fullname (symtab));
3302       }
3303
3304       ALL_FILETABS (objfile, cu, s)
3305       {
3306         struct linetable *l;
3307         int ind;
3308
3309         if (FILENAME_CMP (symtab->filename, s->filename) != 0)
3310           continue;
3311         if (FILENAME_CMP (symtab_to_fullname (symtab),
3312                           symtab_to_fullname (s)) != 0)
3313           continue;     
3314         l = SYMTAB_LINETABLE (s);
3315         ind = find_line_common (l, line, &exact, 0);
3316         if (ind >= 0)
3317           {
3318             if (exact)
3319               {
3320                 best_index = ind;
3321                 best_linetable = l;
3322                 best_symtab = s;
3323                 goto done;
3324               }
3325             if (best == 0 || l->item[ind].line < best)
3326               {
3327                 best = l->item[ind].line;
3328                 best_index = ind;
3329                 best_linetable = l;
3330                 best_symtab = s;
3331               }
3332           }
3333       }
3334     }
3335 done:
3336   if (best_index < 0)
3337     return NULL;
3338
3339   if (index)
3340     *index = best_index;
3341   if (exact_match)
3342     *exact_match = exact;
3343
3344   return best_symtab;
3345 }
3346
3347 /* Given SYMTAB, returns all the PCs function in the symtab that
3348    exactly match LINE.  Returns an empty vector if there are no exact
3349    matches, but updates BEST_ITEM in this case.  */
3350
3351 std::vector<CORE_ADDR>
3352 find_pcs_for_symtab_line (struct symtab *symtab, int line,
3353                           struct linetable_entry **best_item)
3354 {
3355   int start = 0;
3356   std::vector<CORE_ADDR> result;
3357
3358   /* First, collect all the PCs that are at this line.  */
3359   while (1)
3360     {
3361       int was_exact;
3362       int idx;
3363
3364       idx = find_line_common (SYMTAB_LINETABLE (symtab), line, &was_exact,
3365                               start);
3366       if (idx < 0)
3367         break;
3368
3369       if (!was_exact)
3370         {
3371           struct linetable_entry *item = &SYMTAB_LINETABLE (symtab)->item[idx];
3372
3373           if (*best_item == NULL || item->line < (*best_item)->line)
3374             *best_item = item;
3375
3376           break;
3377         }
3378
3379       result.push_back (SYMTAB_LINETABLE (symtab)->item[idx].pc);
3380       start = idx + 1;
3381     }
3382
3383   return result;
3384 }
3385
3386 \f
3387 /* Set the PC value for a given source file and line number and return true.
3388    Returns zero for invalid line number (and sets the PC to 0).
3389    The source file is specified with a struct symtab.  */
3390
3391 int
3392 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
3393 {
3394   struct linetable *l;
3395   int ind;
3396
3397   *pc = 0;
3398   if (symtab == 0)
3399     return 0;
3400
3401   symtab = find_line_symtab (symtab, line, &ind, NULL);
3402   if (symtab != NULL)
3403     {
3404       l = SYMTAB_LINETABLE (symtab);
3405       *pc = l->item[ind].pc;
3406       return 1;
3407     }
3408   else
3409     return 0;
3410 }
3411
3412 /* Find the range of pc values in a line.
3413    Store the starting pc of the line into *STARTPTR
3414    and the ending pc (start of next line) into *ENDPTR.
3415    Returns 1 to indicate success.
3416    Returns 0 if could not find the specified line.  */
3417
3418 int
3419 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
3420                     CORE_ADDR *endptr)
3421 {
3422   CORE_ADDR startaddr;
3423   struct symtab_and_line found_sal;
3424
3425   startaddr = sal.pc;
3426   if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
3427     return 0;
3428
3429   /* This whole function is based on address.  For example, if line 10 has
3430      two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
3431      "info line *0x123" should say the line goes from 0x100 to 0x200
3432      and "info line *0x355" should say the line goes from 0x300 to 0x400.
3433      This also insures that we never give a range like "starts at 0x134
3434      and ends at 0x12c".  */
3435
3436   found_sal = find_pc_sect_line (startaddr, sal.section, 0);
3437   if (found_sal.line != sal.line)
3438     {
3439       /* The specified line (sal) has zero bytes.  */
3440       *startptr = found_sal.pc;
3441       *endptr = found_sal.pc;
3442     }
3443   else
3444     {
3445       *startptr = found_sal.pc;
3446       *endptr = found_sal.end;
3447     }
3448   return 1;
3449 }
3450
3451 /* Given a line table and a line number, return the index into the line
3452    table for the pc of the nearest line whose number is >= the specified one.
3453    Return -1 if none is found.  The value is >= 0 if it is an index.
3454    START is the index at which to start searching the line table.
3455
3456    Set *EXACT_MATCH nonzero if the value returned is an exact match.  */
3457
3458 static int
3459 find_line_common (struct linetable *l, int lineno,
3460                   int *exact_match, int start)
3461 {
3462   int i;
3463   int len;
3464
3465   /* BEST is the smallest linenumber > LINENO so far seen,
3466      or 0 if none has been seen so far.
3467      BEST_INDEX identifies the item for it.  */
3468
3469   int best_index = -1;
3470   int best = 0;
3471
3472   *exact_match = 0;
3473
3474   if (lineno <= 0)
3475     return -1;
3476   if (l == 0)
3477     return -1;
3478
3479   len = l->nitems;
3480   for (i = start; i < len; i++)
3481     {
3482       struct linetable_entry *item = &(l->item[i]);
3483
3484       if (item->line == lineno)
3485         {
3486           /* Return the first (lowest address) entry which matches.  */
3487           *exact_match = 1;
3488           return i;
3489         }
3490
3491       if (item->line > lineno && (best == 0 || item->line < best))
3492         {
3493           best = item->line;
3494           best_index = i;
3495         }
3496     }
3497
3498   /* If we got here, we didn't get an exact match.  */
3499   return best_index;
3500 }
3501
3502 int
3503 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
3504 {
3505   struct symtab_and_line sal;
3506
3507   sal = find_pc_line (pc, 0);
3508   *startptr = sal.pc;
3509   *endptr = sal.end;
3510   return sal.symtab != 0;
3511 }
3512
3513 /* Given a function symbol SYM, find the symtab and line for the start
3514    of the function.
3515    If the argument FUNFIRSTLINE is nonzero, we want the first line
3516    of real code inside the function.
3517    This function should return SALs matching those from minsym_found,
3518    otherwise false multiple-locations breakpoints could be placed.  */
3519
3520 struct symtab_and_line
3521 find_function_start_sal (struct symbol *sym, int funfirstline)
3522 {
3523   fixup_symbol_section (sym, NULL);
3524
3525   obj_section *section = SYMBOL_OBJ_SECTION (symbol_objfile (sym), sym);
3526   symtab_and_line sal
3527     = find_pc_sect_line (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), section, 0);
3528   sal.symbol = sym;
3529
3530   if (funfirstline && sal.symtab != NULL
3531       && (COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (sal.symtab))
3532           || SYMTAB_LANGUAGE (sal.symtab) == language_asm))
3533     {
3534       struct gdbarch *gdbarch = symbol_arch (sym);
3535
3536       sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3537       if (gdbarch_skip_entrypoint_p (gdbarch))
3538         sal.pc = gdbarch_skip_entrypoint (gdbarch, sal.pc);
3539       return sal;
3540     }
3541
3542   /* We always should have a line for the function start address.
3543      If we don't, something is odd.  Create a plain SAL refering
3544      just the PC and hope that skip_prologue_sal (if requested)
3545      can find a line number for after the prologue.  */
3546   if (sal.pc < BLOCK_START (SYMBOL_BLOCK_VALUE (sym)))
3547     {
3548       sal = {};
3549       sal.pspace = current_program_space;
3550       sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3551       sal.section = section;
3552       sal.symbol = sym;
3553     }
3554
3555   if (funfirstline)
3556     skip_prologue_sal (&sal);
3557
3558   return sal;
3559 }
3560
3561 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
3562    address for that function that has an entry in SYMTAB's line info
3563    table.  If such an entry cannot be found, return FUNC_ADDR
3564    unaltered.  */
3565
3566 static CORE_ADDR
3567 skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab)
3568 {
3569   CORE_ADDR func_start, func_end;
3570   struct linetable *l;
3571   int i;
3572
3573   /* Give up if this symbol has no lineinfo table.  */
3574   l = SYMTAB_LINETABLE (symtab);
3575   if (l == NULL)
3576     return func_addr;
3577
3578   /* Get the range for the function's PC values, or give up if we
3579      cannot, for some reason.  */
3580   if (!find_pc_partial_function (func_addr, NULL, &func_start, &func_end))
3581     return func_addr;
3582
3583   /* Linetable entries are ordered by PC values, see the commentary in
3584      symtab.h where `struct linetable' is defined.  Thus, the first
3585      entry whose PC is in the range [FUNC_START..FUNC_END[ is the
3586      address we are looking for.  */
3587   for (i = 0; i < l->nitems; i++)
3588     {
3589       struct linetable_entry *item = &(l->item[i]);
3590
3591       /* Don't use line numbers of zero, they mark special entries in
3592          the table.  See the commentary on symtab.h before the
3593          definition of struct linetable.  */
3594       if (item->line > 0 && func_start <= item->pc && item->pc < func_end)
3595         return item->pc;
3596     }
3597
3598   return func_addr;
3599 }
3600
3601 /* Adjust SAL to the first instruction past the function prologue.
3602    If the PC was explicitly specified, the SAL is not changed.
3603    If the line number was explicitly specified, at most the SAL's PC
3604    is updated.  If SAL is already past the prologue, then do nothing.  */
3605
3606 void
3607 skip_prologue_sal (struct symtab_and_line *sal)
3608 {
3609   struct symbol *sym;
3610   struct symtab_and_line start_sal;
3611   CORE_ADDR pc, saved_pc;
3612   struct obj_section *section;
3613   const char *name;
3614   struct objfile *objfile;
3615   struct gdbarch *gdbarch;
3616   const struct block *b, *function_block;
3617   int force_skip, skip;
3618
3619   /* Do not change the SAL if PC was specified explicitly.  */
3620   if (sal->explicit_pc)
3621     return;
3622
3623   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3624
3625   switch_to_program_space_and_thread (sal->pspace);
3626
3627   sym = find_pc_sect_function (sal->pc, sal->section);
3628   if (sym != NULL)
3629     {
3630       fixup_symbol_section (sym, NULL);
3631
3632       objfile = symbol_objfile (sym);
3633       pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3634       section = SYMBOL_OBJ_SECTION (objfile, sym);
3635       name = SYMBOL_LINKAGE_NAME (sym);
3636     }
3637   else
3638     {
3639       struct bound_minimal_symbol msymbol
3640         = lookup_minimal_symbol_by_pc_section (sal->pc, sal->section);
3641
3642       if (msymbol.minsym == NULL)
3643         return;
3644
3645       objfile = msymbol.objfile;
3646       pc = BMSYMBOL_VALUE_ADDRESS (msymbol);
3647       section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
3648       name = MSYMBOL_LINKAGE_NAME (msymbol.minsym);
3649     }
3650
3651   gdbarch = get_objfile_arch (objfile);
3652
3653   /* Process the prologue in two passes.  In the first pass try to skip the
3654      prologue (SKIP is true) and verify there is a real need for it (indicated
3655      by FORCE_SKIP).  If no such reason was found run a second pass where the
3656      prologue is not skipped (SKIP is false).  */
3657
3658   skip = 1;
3659   force_skip = 1;
3660
3661   /* Be conservative - allow direct PC (without skipping prologue) only if we
3662      have proven the CU (Compilation Unit) supports it.  sal->SYMTAB does not
3663      have to be set by the caller so we use SYM instead.  */
3664   if (sym != NULL
3665       && COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (symbol_symtab (sym))))
3666     force_skip = 0;
3667
3668   saved_pc = pc;
3669   do
3670     {
3671       pc = saved_pc;
3672
3673       /* If the function is in an unmapped overlay, use its unmapped LMA address,
3674          so that gdbarch_skip_prologue has something unique to work on.  */
3675       if (section_is_overlay (section) && !section_is_mapped (section))
3676         pc = overlay_unmapped_address (pc, section);
3677
3678       /* Skip "first line" of function (which is actually its prologue).  */
3679       pc += gdbarch_deprecated_function_start_offset (gdbarch);
3680       if (gdbarch_skip_entrypoint_p (gdbarch))
3681         pc = gdbarch_skip_entrypoint (gdbarch, pc);
3682       if (skip)
3683         pc = gdbarch_skip_prologue_noexcept (gdbarch, pc);
3684
3685       /* For overlays, map pc back into its mapped VMA range.  */
3686       pc = overlay_mapped_address (pc, section);
3687
3688       /* Calculate line number.  */
3689       start_sal = find_pc_sect_line (pc, section, 0);
3690
3691       /* Check if gdbarch_skip_prologue left us in mid-line, and the next
3692          line is still part of the same function.  */
3693       if (skip && start_sal.pc != pc
3694           && (sym ? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
3695                      && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
3696               : (lookup_minimal_symbol_by_pc_section (start_sal.end, section).minsym
3697                  == lookup_minimal_symbol_by_pc_section (pc, section).minsym)))
3698         {
3699           /* First pc of next line */
3700           pc = start_sal.end;
3701           /* Recalculate the line number (might not be N+1).  */
3702           start_sal = find_pc_sect_line (pc, section, 0);
3703         }
3704
3705       /* On targets with executable formats that don't have a concept of
3706          constructors (ELF with .init has, PE doesn't), gcc emits a call
3707          to `__main' in `main' between the prologue and before user
3708          code.  */
3709       if (gdbarch_skip_main_prologue_p (gdbarch)
3710           && name && strcmp_iw (name, "main") == 0)
3711         {
3712           pc = gdbarch_skip_main_prologue (gdbarch, pc);
3713           /* Recalculate the line number (might not be N+1).  */
3714           start_sal = find_pc_sect_line (pc, section, 0);
3715           force_skip = 1;
3716         }
3717     }
3718   while (!force_skip && skip--);
3719
3720   /* If we still don't have a valid source line, try to find the first
3721      PC in the lineinfo table that belongs to the same function.  This
3722      happens with COFF debug info, which does not seem to have an
3723      entry in lineinfo table for the code after the prologue which has
3724      no direct relation to source.  For example, this was found to be
3725      the case with the DJGPP target using "gcc -gcoff" when the
3726      compiler inserted code after the prologue to make sure the stack
3727      is aligned.  */
3728   if (!force_skip && sym && start_sal.symtab == NULL)
3729     {
3730       pc = skip_prologue_using_lineinfo (pc, symbol_symtab (sym));
3731       /* Recalculate the line number.  */
3732       start_sal = find_pc_sect_line (pc, section, 0);
3733     }
3734
3735   /* If we're already past the prologue, leave SAL unchanged.  Otherwise
3736      forward SAL to the end of the prologue.  */
3737   if (sal->pc >= pc)
3738     return;
3739
3740   sal->pc = pc;
3741   sal->section = section;
3742
3743   /* Unless the explicit_line flag was set, update the SAL line
3744      and symtab to correspond to the modified PC location.  */
3745   if (sal->explicit_line)
3746     return;
3747
3748   sal->symtab = start_sal.symtab;
3749   sal->line = start_sal.line;
3750   sal->end = start_sal.end;
3751
3752   /* Check if we are now inside an inlined function.  If we can,
3753      use the call site of the function instead.  */
3754   b = block_for_pc_sect (sal->pc, sal->section);
3755   function_block = NULL;
3756   while (b != NULL)
3757     {
3758       if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
3759         function_block = b;
3760       else if (BLOCK_FUNCTION (b) != NULL)
3761         break;
3762       b = BLOCK_SUPERBLOCK (b);
3763     }
3764   if (function_block != NULL
3765       && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
3766     {
3767       sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
3768       sal->symtab = symbol_symtab (BLOCK_FUNCTION (function_block));
3769     }
3770 }
3771
3772 /* Given PC at the function's start address, attempt to find the
3773    prologue end using SAL information.  Return zero if the skip fails.
3774
3775    A non-optimized prologue traditionally has one SAL for the function
3776    and a second for the function body.  A single line function has
3777    them both pointing at the same line.
3778
3779    An optimized prologue is similar but the prologue may contain
3780    instructions (SALs) from the instruction body.  Need to skip those
3781    while not getting into the function body.
3782
3783    The functions end point and an increasing SAL line are used as
3784    indicators of the prologue's endpoint.
3785
3786    This code is based on the function refine_prologue_limit
3787    (found in ia64).  */
3788
3789 CORE_ADDR
3790 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
3791 {
3792   struct symtab_and_line prologue_sal;
3793   CORE_ADDR start_pc;
3794   CORE_ADDR end_pc;
3795   const struct block *bl;
3796
3797   /* Get an initial range for the function.  */
3798   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
3799   start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
3800
3801   prologue_sal = find_pc_line (start_pc, 0);
3802   if (prologue_sal.line != 0)
3803     {
3804       /* For languages other than assembly, treat two consecutive line
3805          entries at the same address as a zero-instruction prologue.
3806          The GNU assembler emits separate line notes for each instruction
3807          in a multi-instruction macro, but compilers generally will not
3808          do this.  */
3809       if (prologue_sal.symtab->language != language_asm)
3810         {
3811           struct linetable *linetable = SYMTAB_LINETABLE (prologue_sal.symtab);
3812           int idx = 0;
3813
3814           /* Skip any earlier lines, and any end-of-sequence marker
3815              from a previous function.  */
3816           while (linetable->item[idx].pc != prologue_sal.pc
3817                  || linetable->item[idx].line == 0)
3818             idx++;
3819
3820           if (idx+1 < linetable->nitems
3821               && linetable->item[idx+1].line != 0
3822               && linetable->item[idx+1].pc == start_pc)
3823             return start_pc;
3824         }
3825
3826       /* If there is only one sal that covers the entire function,
3827          then it is probably a single line function, like
3828          "foo(){}".  */
3829       if (prologue_sal.end >= end_pc)
3830         return 0;
3831
3832       while (prologue_sal.end < end_pc)
3833         {
3834           struct symtab_and_line sal;
3835
3836           sal = find_pc_line (prologue_sal.end, 0);
3837           if (sal.line == 0)
3838             break;
3839           /* Assume that a consecutive SAL for the same (or larger)
3840              line mark the prologue -> body transition.  */
3841           if (sal.line >= prologue_sal.line)
3842             break;
3843           /* Likewise if we are in a different symtab altogether
3844              (e.g. within a file included via #include).  */
3845           if (sal.symtab != prologue_sal.symtab)
3846             break;
3847
3848           /* The line number is smaller.  Check that it's from the
3849              same function, not something inlined.  If it's inlined,
3850              then there is no point comparing the line numbers.  */
3851           bl = block_for_pc (prologue_sal.end);
3852           while (bl)
3853             {
3854               if (block_inlined_p (bl))
3855                 break;
3856               if (BLOCK_FUNCTION (bl))
3857                 {
3858                   bl = NULL;
3859                   break;
3860                 }
3861               bl = BLOCK_SUPERBLOCK (bl);
3862             }
3863           if (bl != NULL)
3864             break;
3865
3866           /* The case in which compiler's optimizer/scheduler has
3867              moved instructions into the prologue.  We look ahead in
3868              the function looking for address ranges whose
3869              corresponding line number is less the first one that we
3870              found for the function.  This is more conservative then
3871              refine_prologue_limit which scans a large number of SALs
3872              looking for any in the prologue.  */
3873           prologue_sal = sal;
3874         }
3875     }
3876
3877   if (prologue_sal.end < end_pc)
3878     /* Return the end of this line, or zero if we could not find a
3879        line.  */
3880     return prologue_sal.end;
3881   else
3882     /* Don't return END_PC, which is past the end of the function.  */
3883     return prologue_sal.pc;
3884 }
3885
3886 /* See symtab.h.  */
3887
3888 symbol *
3889 find_function_alias_target (bound_minimal_symbol msymbol)
3890 {
3891   if (!msymbol_is_text (msymbol.minsym))
3892     return NULL;
3893
3894   CORE_ADDR addr = BMSYMBOL_VALUE_ADDRESS (msymbol);
3895   symbol *sym = find_pc_function (addr);
3896   if (sym != NULL
3897       && SYMBOL_CLASS (sym) == LOC_BLOCK
3898       && BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) == addr)
3899     return sym;
3900
3901   return NULL;
3902 }
3903
3904 \f
3905 /* If P is of the form "operator[ \t]+..." where `...' is
3906    some legitimate operator text, return a pointer to the
3907    beginning of the substring of the operator text.
3908    Otherwise, return "".  */
3909
3910 static const char *
3911 operator_chars (const char *p, const char **end)
3912 {
3913   *end = "";
3914   if (!startswith (p, CP_OPERATOR_STR))
3915     return *end;
3916   p += CP_OPERATOR_LEN;
3917
3918   /* Don't get faked out by `operator' being part of a longer
3919      identifier.  */
3920   if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
3921     return *end;
3922
3923   /* Allow some whitespace between `operator' and the operator symbol.  */
3924   while (*p == ' ' || *p == '\t')
3925     p++;
3926
3927   /* Recognize 'operator TYPENAME'.  */
3928
3929   if (isalpha (*p) || *p == '_' || *p == '$')
3930     {
3931       const char *q = p + 1;
3932
3933       while (isalnum (*q) || *q == '_' || *q == '$')
3934         q++;
3935       *end = q;
3936       return p;
3937     }
3938
3939   while (*p)
3940     switch (*p)
3941       {
3942       case '\\':                        /* regexp quoting */
3943         if (p[1] == '*')
3944           {
3945             if (p[2] == '=')            /* 'operator\*=' */
3946               *end = p + 3;
3947             else                        /* 'operator\*'  */
3948               *end = p + 2;
3949             return p;
3950           }
3951         else if (p[1] == '[')
3952           {
3953             if (p[2] == ']')
3954               error (_("mismatched quoting on brackets, "
3955                        "try 'operator\\[\\]'"));
3956             else if (p[2] == '\\' && p[3] == ']')
3957               {
3958                 *end = p + 4;   /* 'operator\[\]' */
3959                 return p;
3960               }
3961             else
3962               error (_("nothing is allowed between '[' and ']'"));
3963           }
3964         else
3965           {
3966             /* Gratuitous qoute: skip it and move on.  */
3967             p++;
3968             continue;
3969           }
3970         break;
3971       case '!':
3972       case '=':
3973       case '*':
3974       case '/':
3975       case '%':
3976       case '^':
3977         if (p[1] == '=')
3978           *end = p + 2;
3979         else
3980           *end = p + 1;
3981         return p;
3982       case '<':
3983       case '>':
3984       case '+':
3985       case '-':
3986       case '&':
3987       case '|':
3988         if (p[0] == '-' && p[1] == '>')
3989           {
3990             /* Struct pointer member operator 'operator->'.  */
3991             if (p[2] == '*')
3992               {
3993                 *end = p + 3;   /* 'operator->*' */
3994                 return p;
3995               }
3996             else if (p[2] == '\\')
3997               {
3998                 *end = p + 4;   /* Hopefully 'operator->\*' */
3999                 return p;
4000               }
4001             else
4002               {
4003                 *end = p + 2;   /* 'operator->' */
4004                 return p;
4005               }
4006           }
4007         if (p[1] == '=' || p[1] == p[0])
4008           *end = p + 2;
4009         else
4010           *end = p + 1;
4011         return p;
4012       case '~':
4013       case ',':
4014         *end = p + 1;
4015         return p;
4016       case '(':
4017         if (p[1] != ')')
4018           error (_("`operator ()' must be specified "
4019                    "without whitespace in `()'"));
4020         *end = p + 2;
4021         return p;
4022       case '?':
4023         if (p[1] != ':')
4024           error (_("`operator ?:' must be specified "
4025                    "without whitespace in `?:'"));
4026         *end = p + 2;
4027         return p;
4028       case '[':
4029         if (p[1] != ']')
4030           error (_("`operator []' must be specified "
4031                    "without whitespace in `[]'"));
4032         *end = p + 2;
4033         return p;
4034       default:
4035         error (_("`operator %s' not supported"), p);
4036         break;
4037       }
4038
4039   *end = "";
4040   return *end;
4041 }
4042 \f
4043
4044 /* Data structure to maintain printing state for output_source_filename.  */
4045
4046 struct output_source_filename_data
4047 {
4048   /* Cache of what we've seen so far.  */
4049   struct filename_seen_cache *filename_seen_cache;
4050
4051   /* Flag of whether we're printing the first one.  */
4052   int first;
4053 };
4054
4055 /* Slave routine for sources_info.  Force line breaks at ,'s.
4056    NAME is the name to print.
4057    DATA contains the state for printing and watching for duplicates.  */
4058
4059 static void
4060 output_source_filename (const char *name,
4061                         struct output_source_filename_data *data)
4062 {
4063   /* Since a single source file can result in several partial symbol
4064      tables, we need to avoid printing it more than once.  Note: if
4065      some of the psymtabs are read in and some are not, it gets
4066      printed both under "Source files for which symbols have been
4067      read" and "Source files for which symbols will be read in on
4068      demand".  I consider this a reasonable way to deal with the
4069      situation.  I'm not sure whether this can also happen for
4070      symtabs; it doesn't hurt to check.  */
4071
4072   /* Was NAME already seen?  */
4073   if (data->filename_seen_cache->seen (name))
4074     {
4075       /* Yes; don't print it again.  */
4076       return;
4077     }
4078
4079   /* No; print it and reset *FIRST.  */
4080   if (! data->first)
4081     printf_filtered (", ");
4082   data->first = 0;
4083
4084   wrap_here ("");
4085   fputs_filtered (name, gdb_stdout);
4086 }
4087
4088 /* A callback for map_partial_symbol_filenames.  */
4089
4090 static void
4091 output_partial_symbol_filename (const char *filename, const char *fullname,
4092                                 void *data)
4093 {
4094   output_source_filename (fullname ? fullname : filename,
4095                           (struct output_source_filename_data *) data);
4096 }
4097
4098 static void
4099 info_sources_command (const char *ignore, int from_tty)
4100 {
4101   struct compunit_symtab *cu;
4102   struct symtab *s;
4103   struct objfile *objfile;
4104   struct output_source_filename_data data;
4105
4106   if (!have_full_symbols () && !have_partial_symbols ())
4107     {
4108       error (_("No symbol table is loaded.  Use the \"file\" command."));
4109     }
4110
4111   filename_seen_cache filenames_seen;
4112
4113   data.filename_seen_cache = &filenames_seen;
4114
4115   printf_filtered ("Source files for which symbols have been read in:\n\n");
4116
4117   data.first = 1;
4118   ALL_FILETABS (objfile, cu, s)
4119   {
4120     const char *fullname = symtab_to_fullname (s);
4121
4122     output_source_filename (fullname, &data);
4123   }
4124   printf_filtered ("\n\n");
4125
4126   printf_filtered ("Source files for which symbols "
4127                    "will be read in on demand:\n\n");
4128
4129   filenames_seen.clear ();
4130   data.first = 1;
4131   map_symbol_filenames (output_partial_symbol_filename, &data,
4132                         1 /*need_fullname*/);
4133   printf_filtered ("\n");
4134 }
4135
4136 /* Compare FILE against all the NFILES entries of FILES.  If BASENAMES is
4137    non-zero compare only lbasename of FILES.  */
4138
4139 static int
4140 file_matches (const char *file, const char *files[], int nfiles, int basenames)
4141 {
4142   int i;
4143
4144   if (file != NULL && nfiles != 0)
4145     {
4146       for (i = 0; i < nfiles; i++)
4147         {
4148           if (compare_filenames_for_search (file, (basenames
4149                                                    ? lbasename (files[i])
4150                                                    : files[i])))
4151             return 1;
4152         }
4153     }
4154   else if (nfiles == 0)
4155     return 1;
4156   return 0;
4157 }
4158
4159 /* Helper function for sort_search_symbols_remove_dups and qsort.  Can only
4160    sort symbols, not minimal symbols.  */
4161
4162 int
4163 symbol_search::compare_search_syms (const symbol_search &sym_a,
4164                                     const symbol_search &sym_b)
4165 {
4166   int c;
4167
4168   c = FILENAME_CMP (symbol_symtab (sym_a.symbol)->filename,
4169                     symbol_symtab (sym_b.symbol)->filename);
4170   if (c != 0)
4171     return c;
4172
4173   if (sym_a.block != sym_b.block)
4174     return sym_a.block - sym_b.block;
4175
4176   return strcmp (SYMBOL_PRINT_NAME (sym_a.symbol),
4177                  SYMBOL_PRINT_NAME (sym_b.symbol));
4178 }
4179
4180 /* Sort the symbols in RESULT and remove duplicates.  */
4181
4182 static void
4183 sort_search_symbols_remove_dups (std::vector<symbol_search> *result)
4184 {
4185   std::sort (result->begin (), result->end ());
4186   result->erase (std::unique (result->begin (), result->end ()),
4187                  result->end ());
4188 }
4189
4190 /* Search the symbol table for matches to the regular expression REGEXP,
4191    returning the results.
4192
4193    Only symbols of KIND are searched:
4194    VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
4195                       and constants (enums)
4196    FUNCTIONS_DOMAIN - search all functions
4197    TYPES_DOMAIN     - search all type names
4198    ALL_DOMAIN       - an internal error for this function
4199
4200    Within each file the results are sorted locally; each symtab's global and
4201    static blocks are separately alphabetized.
4202    Duplicate entries are removed.  */
4203
4204 std::vector<symbol_search>
4205 search_symbols (const char *regexp, enum search_domain kind,
4206                 int nfiles, const char *files[])
4207 {
4208   struct compunit_symtab *cust;
4209   const struct blockvector *bv;
4210   struct block *b;
4211   int i = 0;
4212   struct block_iterator iter;
4213   struct symbol *sym;
4214   struct objfile *objfile;
4215   struct minimal_symbol *msymbol;
4216   int found_misc = 0;
4217   static const enum minimal_symbol_type types[]
4218     = {mst_data, mst_text, mst_abs};
4219   static const enum minimal_symbol_type types2[]
4220     = {mst_bss, mst_file_text, mst_abs};
4221   static const enum minimal_symbol_type types3[]
4222     = {mst_file_data, mst_solib_trampoline, mst_abs};
4223   static const enum minimal_symbol_type types4[]
4224     = {mst_file_bss, mst_text_gnu_ifunc, mst_abs};
4225   enum minimal_symbol_type ourtype;
4226   enum minimal_symbol_type ourtype2;
4227   enum minimal_symbol_type ourtype3;
4228   enum minimal_symbol_type ourtype4;
4229   std::vector<symbol_search> result;
4230   gdb::optional<compiled_regex> preg;
4231
4232   gdb_assert (kind <= TYPES_DOMAIN);
4233
4234   ourtype = types[kind];
4235   ourtype2 = types2[kind];
4236   ourtype3 = types3[kind];
4237   ourtype4 = types4[kind];
4238
4239   if (regexp != NULL)
4240     {
4241       /* Make sure spacing is right for C++ operators.
4242          This is just a courtesy to make the matching less sensitive
4243          to how many spaces the user leaves between 'operator'
4244          and <TYPENAME> or <OPERATOR>.  */
4245       const char *opend;
4246       const char *opname = operator_chars (regexp, &opend);
4247       int errcode;
4248
4249       if (*opname)
4250         {
4251           int fix = -1;         /* -1 means ok; otherwise number of
4252                                     spaces needed.  */
4253
4254           if (isalpha (*opname) || *opname == '_' || *opname == '$')
4255             {
4256               /* There should 1 space between 'operator' and 'TYPENAME'.  */
4257               if (opname[-1] != ' ' || opname[-2] == ' ')
4258                 fix = 1;
4259             }
4260           else
4261             {
4262               /* There should 0 spaces between 'operator' and 'OPERATOR'.  */
4263               if (opname[-1] == ' ')
4264                 fix = 0;
4265             }
4266           /* If wrong number of spaces, fix it.  */
4267           if (fix >= 0)
4268             {
4269               char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
4270
4271               sprintf (tmp, "operator%.*s%s", fix, " ", opname);
4272               regexp = tmp;
4273             }
4274         }
4275
4276       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
4277                                 ? REG_ICASE : 0);
4278       preg.emplace (regexp, cflags, _("Invalid regexp"));
4279     }
4280
4281   /* Search through the partial symtabs *first* for all symbols
4282      matching the regexp.  That way we don't have to reproduce all of
4283      the machinery below.  */
4284   expand_symtabs_matching ([&] (const char *filename, bool basenames)
4285                            {
4286                              return file_matches (filename, files, nfiles,
4287                                                   basenames);
4288                            },
4289                            lookup_name_info::match_any (),
4290                            [&] (const char *symname)
4291                            {
4292                              return (!preg || preg->exec (symname,
4293                                                           0, NULL, 0) == 0);
4294                            },
4295                            NULL,
4296                            kind);
4297
4298   /* Here, we search through the minimal symbol tables for functions
4299      and variables that match, and force their symbols to be read.
4300      This is in particular necessary for demangled variable names,
4301      which are no longer put into the partial symbol tables.
4302      The symbol will then be found during the scan of symtabs below.
4303
4304      For functions, find_pc_symtab should succeed if we have debug info
4305      for the function, for variables we have to call
4306      lookup_symbol_in_objfile_from_linkage_name to determine if the variable
4307      has debug info.
4308      If the lookup fails, set found_misc so that we will rescan to print
4309      any matching symbols without debug info.
4310      We only search the objfile the msymbol came from, we no longer search
4311      all objfiles.  In large programs (1000s of shared libs) searching all
4312      objfiles is not worth the pain.  */
4313
4314   if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
4315     {
4316       ALL_MSYMBOLS (objfile, msymbol)
4317       {
4318         QUIT;
4319
4320         if (msymbol->created_by_gdb)
4321           continue;
4322
4323         if (MSYMBOL_TYPE (msymbol) == ourtype
4324             || MSYMBOL_TYPE (msymbol) == ourtype2
4325             || MSYMBOL_TYPE (msymbol) == ourtype3
4326             || MSYMBOL_TYPE (msymbol) == ourtype4)
4327           {
4328             if (!preg
4329                 || preg->exec (MSYMBOL_NATURAL_NAME (msymbol), 0,
4330                                NULL, 0) == 0)
4331               {
4332                 /* Note: An important side-effect of these lookup functions
4333                    is to expand the symbol table if msymbol is found, for the
4334                    benefit of the next loop on ALL_COMPUNITS.  */
4335                 if (kind == FUNCTIONS_DOMAIN
4336                     ? (find_pc_compunit_symtab
4337                        (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL)
4338                     : (lookup_symbol_in_objfile_from_linkage_name
4339                        (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4340                        .symbol == NULL))
4341                   found_misc = 1;
4342               }
4343           }
4344       }
4345     }
4346
4347   ALL_COMPUNITS (objfile, cust)
4348   {
4349     bv = COMPUNIT_BLOCKVECTOR (cust);
4350     for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
4351       {
4352         b = BLOCKVECTOR_BLOCK (bv, i);
4353         ALL_BLOCK_SYMBOLS (b, iter, sym)
4354           {
4355             struct symtab *real_symtab = symbol_symtab (sym);
4356
4357             QUIT;
4358
4359             /* Check first sole REAL_SYMTAB->FILENAME.  It does not need to be
4360                a substring of symtab_to_fullname as it may contain "./" etc.  */
4361             if ((file_matches (real_symtab->filename, files, nfiles, 0)
4362                  || ((basenames_may_differ
4363                       || file_matches (lbasename (real_symtab->filename),
4364                                        files, nfiles, 1))
4365                      && file_matches (symtab_to_fullname (real_symtab),
4366                                       files, nfiles, 0)))
4367                 && ((!preg
4368                      || preg->exec (SYMBOL_NATURAL_NAME (sym), 0,
4369                                     NULL, 0) == 0)
4370                     && ((kind == VARIABLES_DOMAIN
4371                          && SYMBOL_CLASS (sym) != LOC_TYPEDEF
4372                          && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
4373                          && SYMBOL_CLASS (sym) != LOC_BLOCK
4374                          /* LOC_CONST can be used for more than just enums,
4375                             e.g., c++ static const members.
4376                             We only want to skip enums here.  */
4377                          && !(SYMBOL_CLASS (sym) == LOC_CONST
4378                               && (TYPE_CODE (SYMBOL_TYPE (sym))
4379                                   == TYPE_CODE_ENUM)))
4380                         || (kind == FUNCTIONS_DOMAIN 
4381                             && SYMBOL_CLASS (sym) == LOC_BLOCK)
4382                         || (kind == TYPES_DOMAIN
4383                             && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
4384               {
4385                 /* match */
4386                 result.emplace_back (i, sym);
4387               }
4388           }
4389       }
4390   }
4391
4392   if (!result.empty ())
4393     sort_search_symbols_remove_dups (&result);
4394
4395   /* If there are no eyes, avoid all contact.  I mean, if there are
4396      no debug symbols, then add matching minsyms.  */
4397
4398   if (found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
4399     {
4400       ALL_MSYMBOLS (objfile, msymbol)
4401       {
4402         QUIT;
4403
4404         if (msymbol->created_by_gdb)
4405           continue;
4406
4407         if (MSYMBOL_TYPE (msymbol) == ourtype
4408             || MSYMBOL_TYPE (msymbol) == ourtype2
4409             || MSYMBOL_TYPE (msymbol) == ourtype3
4410             || MSYMBOL_TYPE (msymbol) == ourtype4)
4411           {
4412             if (!preg || preg->exec (MSYMBOL_NATURAL_NAME (msymbol), 0,
4413                                      NULL, 0) == 0)
4414               {
4415                 /* For functions we can do a quick check of whether the
4416                    symbol might be found via find_pc_symtab.  */
4417                 if (kind != FUNCTIONS_DOMAIN
4418                     || (find_pc_compunit_symtab
4419                         (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL))
4420                   {
4421                     if (lookup_symbol_in_objfile_from_linkage_name
4422                         (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4423                         .symbol == NULL)
4424                       {
4425                         /* match */
4426                         result.emplace_back (i, msymbol, objfile);
4427                       }
4428                   }
4429               }
4430           }
4431       }
4432     }
4433
4434   return result;
4435 }
4436
4437 /* Helper function for symtab_symbol_info, this function uses
4438    the data returned from search_symbols() to print information
4439    regarding the match to gdb_stdout.  */
4440
4441 static void
4442 print_symbol_info (enum search_domain kind,
4443                    struct symbol *sym,
4444                    int block, const char *last)
4445 {
4446   struct symtab *s = symbol_symtab (sym);
4447   const char *s_filename = symtab_to_filename_for_display (s);
4448
4449   if (last == NULL || filename_cmp (last, s_filename) != 0)
4450     {
4451       fputs_filtered ("\nFile ", gdb_stdout);
4452       fputs_filtered (s_filename, gdb_stdout);
4453       fputs_filtered (":\n", gdb_stdout);
4454     }
4455
4456   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
4457     printf_filtered ("static ");
4458
4459   /* Typedef that is not a C++ class.  */
4460   if (kind == TYPES_DOMAIN
4461       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
4462     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
4463   /* variable, func, or typedef-that-is-c++-class.  */
4464   else if (kind < TYPES_DOMAIN
4465            || (kind == TYPES_DOMAIN
4466                && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
4467     {
4468       type_print (SYMBOL_TYPE (sym),
4469                   (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4470                    ? "" : SYMBOL_PRINT_NAME (sym)),
4471                   gdb_stdout, 0);
4472
4473       printf_filtered (";\n");
4474     }
4475 }
4476
4477 /* This help function for symtab_symbol_info() prints information
4478    for non-debugging symbols to gdb_stdout.  */
4479
4480 static void
4481 print_msymbol_info (struct bound_minimal_symbol msymbol)
4482 {
4483   struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
4484   char *tmp;
4485
4486   if (gdbarch_addr_bit (gdbarch) <= 32)
4487     tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol)
4488                              & (CORE_ADDR) 0xffffffff,
4489                              8);
4490   else
4491     tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol),
4492                              16);
4493   printf_filtered ("%s  %s\n",
4494                    tmp, MSYMBOL_PRINT_NAME (msymbol.minsym));
4495 }
4496
4497 /* This is the guts of the commands "info functions", "info types", and
4498    "info variables".  It calls search_symbols to find all matches and then
4499    print_[m]symbol_info to print out some useful information about the
4500    matches.  */
4501
4502 static void
4503 symtab_symbol_info (const char *regexp, enum search_domain kind, int from_tty)
4504 {
4505   static const char * const classnames[] =
4506     {"variable", "function", "type"};
4507   const char *last_filename = NULL;
4508   int first = 1;
4509
4510   gdb_assert (kind <= TYPES_DOMAIN);
4511
4512   /* Must make sure that if we're interrupted, symbols gets freed.  */
4513   std::vector<symbol_search> symbols = search_symbols (regexp, kind, 0, NULL);
4514
4515   if (regexp != NULL)
4516     printf_filtered (_("All %ss matching regular expression \"%s\":\n"),
4517                      classnames[kind], regexp);
4518   else
4519     printf_filtered (_("All defined %ss:\n"), classnames[kind]);
4520
4521   for (const symbol_search &p : symbols)
4522     {
4523       QUIT;
4524
4525       if (p.msymbol.minsym != NULL)
4526         {
4527           if (first)
4528             {
4529               printf_filtered (_("\nNon-debugging symbols:\n"));
4530               first = 0;
4531             }
4532           print_msymbol_info (p.msymbol);
4533         }
4534       else
4535         {
4536           print_symbol_info (kind,
4537                              p.symbol,
4538                              p.block,
4539                              last_filename);
4540           last_filename
4541             = symtab_to_filename_for_display (symbol_symtab (p.symbol));
4542         }
4543     }
4544 }
4545
4546 static void
4547 info_variables_command (const char *regexp, int from_tty)
4548 {
4549   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
4550 }
4551
4552 static void
4553 info_functions_command (const char *regexp, int from_tty)
4554 {
4555   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
4556 }
4557
4558
4559 static void
4560 info_types_command (const char *regexp, int from_tty)
4561 {
4562   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
4563 }
4564
4565 /* Breakpoint all functions matching regular expression.  */
4566
4567 void
4568 rbreak_command_wrapper (char *regexp, int from_tty)
4569 {
4570   rbreak_command (regexp, from_tty);
4571 }
4572
4573 static void
4574 rbreak_command (const char *regexp, int from_tty)
4575 {
4576   std::string string;
4577   const char **files = NULL;
4578   const char *file_name;
4579   int nfiles = 0;
4580
4581   if (regexp)
4582     {
4583       const char *colon = strchr (regexp, ':');
4584
4585       if (colon && *(colon + 1) != ':')
4586         {
4587           int colon_index;
4588           char *local_name;
4589
4590           colon_index = colon - regexp;
4591           local_name = (char *) alloca (colon_index + 1);
4592           memcpy (local_name, regexp, colon_index);
4593           local_name[colon_index--] = 0;
4594           while (isspace (local_name[colon_index]))
4595             local_name[colon_index--] = 0;
4596           file_name = local_name;
4597           files = &file_name;
4598           nfiles = 1;
4599           regexp = skip_spaces (colon + 1);
4600         }
4601     }
4602
4603   std::vector<symbol_search> symbols = search_symbols (regexp,
4604                                                        FUNCTIONS_DOMAIN,
4605                                                        nfiles, files);
4606
4607   scoped_rbreak_breakpoints finalize;
4608   for (const symbol_search &p : symbols)
4609     {
4610       if (p.msymbol.minsym == NULL)
4611         {
4612           struct symtab *symtab = symbol_symtab (p.symbol);
4613           const char *fullname = symtab_to_fullname (symtab);
4614
4615           string = string_printf ("%s:'%s'", fullname,
4616                                   SYMBOL_LINKAGE_NAME (p.symbol));
4617           break_command (&string[0], from_tty);
4618           print_symbol_info (FUNCTIONS_DOMAIN,
4619                              p.symbol,
4620                              p.block,
4621                              symtab_to_filename_for_display (symtab));
4622         }
4623       else
4624         {
4625           string = string_printf ("'%s'",
4626                                   MSYMBOL_LINKAGE_NAME (p.msymbol.minsym));
4627
4628           break_command (&string[0], from_tty);
4629           printf_filtered ("<function, no debug info> %s;\n",
4630                            MSYMBOL_PRINT_NAME (p.msymbol.minsym));
4631         }
4632     }
4633 }
4634 \f
4635
4636 /* Evaluate if SYMNAME matches LOOKUP_NAME.  */
4637
4638 static int
4639 compare_symbol_name (const char *symbol_name, language symbol_language,
4640                      const lookup_name_info &lookup_name,
4641                      completion_match_result &match_res)
4642 {
4643   const language_defn *lang;
4644
4645   /* If we're completing for an expression and the symbol doesn't have
4646      an explicit language set, fallback to the current language.  Ada
4647      minimal symbols won't have their language set to Ada, for
4648      example, and if we compared using the default/C-like matcher,
4649      then when completing e.g., symbols in a package named "pck", we'd
4650      match internal Ada symbols like "pckS", which are invalid in an
4651      Ada expression, unless you wrap them in '<' '>' to request a
4652      verbatim match.  */
4653   if (symbol_language == language_auto
4654       && lookup_name.match_type () == symbol_name_match_type::EXPRESSION)
4655     lang = current_language;
4656   else
4657     lang = language_def (symbol_language);
4658
4659   symbol_name_matcher_ftype *name_match
4660     = language_get_symbol_name_matcher (lang, lookup_name);
4661
4662   return name_match (symbol_name, lookup_name, &match_res.match);
4663 }
4664
4665 /*  See symtab.h.  */
4666
4667 void
4668 completion_list_add_name (completion_tracker &tracker,
4669                           language symbol_language,
4670                           const char *symname,
4671                           const lookup_name_info &lookup_name,
4672                           const char *text, const char *word)
4673 {
4674   completion_match_result &match_res
4675     = tracker.reset_completion_match_result ();
4676
4677   /* Clip symbols that cannot match.  */
4678   if (!compare_symbol_name (symname, symbol_language, lookup_name, match_res))
4679     return;
4680
4681   /* Refresh SYMNAME from the match string.  It's potentially
4682      different depending on language.  (E.g., on Ada, the match may be
4683      the encoded symbol name wrapped in "<>").  */
4684   symname = match_res.match.match ();
4685   gdb_assert (symname != NULL);
4686
4687   /* We have a match for a completion, so add SYMNAME to the current list
4688      of matches.  Note that the name is moved to freshly malloc'd space.  */
4689
4690   {
4691     char *newobj;
4692
4693     if (word == text)
4694       {
4695         newobj = (char *) xmalloc (strlen (symname) + 5);
4696         strcpy (newobj, symname);
4697       }
4698     else if (word > text)
4699       {
4700         /* Return some portion of symname.  */
4701         newobj = (char *) xmalloc (strlen (symname) + 5);
4702         strcpy (newobj, symname + (word - text));
4703       }
4704     else
4705       {
4706         /* Return some of SYM_TEXT plus symname.  */
4707         newobj = (char *) xmalloc (strlen (symname) + (text - word) + 5);
4708         strncpy (newobj, word, text - word);
4709         newobj[text - word] = '\0';
4710         strcat (newobj, symname);
4711       }
4712
4713     gdb::unique_xmalloc_ptr<char> completion (newobj);
4714
4715     tracker.add_completion (std::move (completion));
4716   }
4717 }
4718
4719 /* completion_list_add_name wrapper for struct symbol.  */
4720
4721 static void
4722 completion_list_add_symbol (completion_tracker &tracker,
4723                             symbol *sym,
4724                             const lookup_name_info &lookup_name,
4725                             const char *text, const char *word)
4726 {
4727   completion_list_add_name (tracker, SYMBOL_LANGUAGE (sym),
4728                             SYMBOL_NATURAL_NAME (sym),
4729                             lookup_name, text, word);
4730 }
4731
4732 /* completion_list_add_name wrapper for struct minimal_symbol.  */
4733
4734 static void
4735 completion_list_add_msymbol (completion_tracker &tracker,
4736                              minimal_symbol *sym,
4737                              const lookup_name_info &lookup_name,
4738                              const char *text, const char *word)
4739 {
4740   completion_list_add_name (tracker, MSYMBOL_LANGUAGE (sym),
4741                             MSYMBOL_NATURAL_NAME (sym),
4742                             lookup_name, text, word);
4743 }
4744
4745
4746 /* ObjC: In case we are completing on a selector, look as the msymbol
4747    again and feed all the selectors into the mill.  */
4748
4749 static void
4750 completion_list_objc_symbol (completion_tracker &tracker,
4751                              struct minimal_symbol *msymbol,
4752                              const lookup_name_info &lookup_name,
4753                              const char *text, const char *word)
4754 {
4755   static char *tmp = NULL;
4756   static unsigned int tmplen = 0;
4757
4758   const char *method, *category, *selector;
4759   char *tmp2 = NULL;
4760
4761   method = MSYMBOL_NATURAL_NAME (msymbol);
4762
4763   /* Is it a method?  */
4764   if ((method[0] != '-') && (method[0] != '+'))
4765     return;
4766
4767   if (text[0] == '[')
4768     /* Complete on shortened method method.  */
4769     completion_list_add_name (tracker, language_objc,
4770                               method + 1,
4771                               lookup_name,
4772                               text, word);
4773
4774   while ((strlen (method) + 1) >= tmplen)
4775     {
4776       if (tmplen == 0)
4777         tmplen = 1024;
4778       else
4779         tmplen *= 2;
4780       tmp = (char *) xrealloc (tmp, tmplen);
4781     }
4782   selector = strchr (method, ' ');
4783   if (selector != NULL)
4784     selector++;
4785
4786   category = strchr (method, '(');
4787
4788   if ((category != NULL) && (selector != NULL))
4789     {
4790       memcpy (tmp, method, (category - method));
4791       tmp[category - method] = ' ';
4792       memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
4793       completion_list_add_name (tracker, language_objc, tmp,
4794                                 lookup_name, text, word);
4795       if (text[0] == '[')
4796         completion_list_add_name (tracker, language_objc, tmp + 1,
4797                                   lookup_name, text, word);
4798     }
4799
4800   if (selector != NULL)
4801     {
4802       /* Complete on selector only.  */
4803       strcpy (tmp, selector);
4804       tmp2 = strchr (tmp, ']');
4805       if (tmp2 != NULL)
4806         *tmp2 = '\0';
4807
4808       completion_list_add_name (tracker, language_objc, tmp,
4809                                 lookup_name, text, word);
4810     }
4811 }
4812
4813 /* Break the non-quoted text based on the characters which are in
4814    symbols.  FIXME: This should probably be language-specific.  */
4815
4816 static const char *
4817 language_search_unquoted_string (const char *text, const char *p)
4818 {
4819   for (; p > text; --p)
4820     {
4821       if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
4822         continue;
4823       else
4824         {
4825           if ((current_language->la_language == language_objc))
4826             {
4827               if (p[-1] == ':')     /* Might be part of a method name.  */
4828                 continue;
4829               else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
4830                 p -= 2;             /* Beginning of a method name.  */
4831               else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
4832                 {                   /* Might be part of a method name.  */
4833                   const char *t = p;
4834
4835                   /* Seeing a ' ' or a '(' is not conclusive evidence
4836                      that we are in the middle of a method name.  However,
4837                      finding "-[" or "+[" should be pretty un-ambiguous.
4838                      Unfortunately we have to find it now to decide.  */
4839
4840                   while (t > text)
4841                     if (isalnum (t[-1]) || t[-1] == '_' ||
4842                         t[-1] == ' '    || t[-1] == ':' ||
4843                         t[-1] == '('    || t[-1] == ')')
4844                       --t;
4845                     else
4846                       break;
4847
4848                   if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
4849                     p = t - 2;      /* Method name detected.  */
4850                   /* Else we leave with p unchanged.  */
4851                 }
4852             }
4853           break;
4854         }
4855     }
4856   return p;
4857 }
4858
4859 static void
4860 completion_list_add_fields (completion_tracker &tracker,
4861                             struct symbol *sym,
4862                             const lookup_name_info &lookup_name,
4863                             const char *text, const char *word)
4864 {
4865   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
4866     {
4867       struct type *t = SYMBOL_TYPE (sym);
4868       enum type_code c = TYPE_CODE (t);
4869       int j;
4870
4871       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
4872         for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
4873           if (TYPE_FIELD_NAME (t, j))
4874             completion_list_add_name (tracker, SYMBOL_LANGUAGE (sym),
4875                                       TYPE_FIELD_NAME (t, j),
4876                                       lookup_name, text, word);
4877     }
4878 }
4879
4880 /* See symtab.h.  */
4881
4882 bool
4883 symbol_is_function_or_method (symbol *sym)
4884 {
4885   switch (TYPE_CODE (SYMBOL_TYPE (sym)))
4886     {
4887     case TYPE_CODE_FUNC:
4888     case TYPE_CODE_METHOD:
4889       return true;
4890     default:
4891       return false;
4892     }
4893 }
4894
4895 /* See symtab.h.  */
4896
4897 bool
4898 symbol_is_function_or_method (minimal_symbol *msymbol)
4899 {
4900   switch (MSYMBOL_TYPE (msymbol))
4901     {
4902     case mst_text:
4903     case mst_text_gnu_ifunc:
4904     case mst_solib_trampoline:
4905     case mst_file_text:
4906       return true;
4907     default:
4908       return false;
4909     }
4910 }
4911
4912 /* Add matching symbols from SYMTAB to the current completion list.  */
4913
4914 static void
4915 add_symtab_completions (struct compunit_symtab *cust,
4916                         completion_tracker &tracker,
4917                         complete_symbol_mode mode,
4918                         const lookup_name_info &lookup_name,
4919                         const char *text, const char *word,
4920                         enum type_code code)
4921 {
4922   struct symbol *sym;
4923   const struct block *b;
4924   struct block_iterator iter;
4925   int i;
4926
4927   if (cust == NULL)
4928     return;
4929
4930   for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
4931     {
4932       QUIT;
4933       b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), i);
4934       ALL_BLOCK_SYMBOLS (b, iter, sym)
4935         {
4936           if (completion_skip_symbol (mode, sym))
4937             continue;
4938
4939           if (code == TYPE_CODE_UNDEF
4940               || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
4941                   && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
4942             completion_list_add_symbol (tracker, sym,
4943                                         lookup_name,
4944                                         text, word);
4945         }
4946     }
4947 }
4948
4949 void
4950 default_collect_symbol_completion_matches_break_on
4951   (completion_tracker &tracker, complete_symbol_mode mode,
4952    symbol_name_match_type name_match_type,
4953    const char *text, const char *word,
4954    const char *break_on, enum type_code code)
4955 {
4956   /* Problem: All of the symbols have to be copied because readline
4957      frees them.  I'm not going to worry about this; hopefully there
4958      won't be that many.  */
4959
4960   struct symbol *sym;
4961   struct compunit_symtab *cust;
4962   struct minimal_symbol *msymbol;
4963   struct objfile *objfile;
4964   const struct block *b;
4965   const struct block *surrounding_static_block, *surrounding_global_block;
4966   struct block_iterator iter;
4967   /* The symbol we are completing on.  Points in same buffer as text.  */
4968   const char *sym_text;
4969
4970   /* Now look for the symbol we are supposed to complete on.  */
4971   if (mode == complete_symbol_mode::LINESPEC)
4972     sym_text = text;
4973   else
4974   {
4975     const char *p;
4976     char quote_found;
4977     const char *quote_pos = NULL;
4978
4979     /* First see if this is a quoted string.  */
4980     quote_found = '\0';
4981     for (p = text; *p != '\0'; ++p)
4982       {
4983         if (quote_found != '\0')
4984           {
4985             if (*p == quote_found)
4986               /* Found close quote.  */
4987               quote_found = '\0';
4988             else if (*p == '\\' && p[1] == quote_found)
4989               /* A backslash followed by the quote character
4990                  doesn't end the string.  */
4991               ++p;
4992           }
4993         else if (*p == '\'' || *p == '"')
4994           {
4995             quote_found = *p;
4996             quote_pos = p;
4997           }
4998       }
4999     if (quote_found == '\'')
5000       /* A string within single quotes can be a symbol, so complete on it.  */
5001       sym_text = quote_pos + 1;
5002     else if (quote_found == '"')
5003       /* A double-quoted string is never a symbol, nor does it make sense
5004          to complete it any other way.  */
5005       {
5006         return;
5007       }
5008     else
5009       {
5010         /* It is not a quoted string.  Break it based on the characters
5011            which are in symbols.  */
5012         while (p > text)
5013           {
5014             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
5015                 || p[-1] == ':' || strchr (break_on, p[-1]) != NULL)
5016               --p;
5017             else
5018               break;
5019           }
5020         sym_text = p;
5021       }
5022   }
5023
5024   lookup_name_info lookup_name (sym_text, name_match_type, true);
5025
5026   /* At this point scan through the misc symbol vectors and add each
5027      symbol you find to the list.  Eventually we want to ignore
5028      anything that isn't a text symbol (everything else will be
5029      handled by the psymtab code below).  */
5030
5031   if (code == TYPE_CODE_UNDEF)
5032     {
5033       ALL_MSYMBOLS (objfile, msymbol)
5034         {
5035           QUIT;
5036
5037           if (completion_skip_symbol (mode, msymbol))
5038             continue;
5039
5040           completion_list_add_msymbol (tracker, msymbol, lookup_name,
5041                                        sym_text, word);
5042
5043           completion_list_objc_symbol (tracker, msymbol, lookup_name,
5044                                        sym_text, word);
5045         }
5046     }
5047
5048   /* Add completions for all currently loaded symbol tables.  */
5049   ALL_COMPUNITS (objfile, cust)
5050     add_symtab_completions (cust, tracker, mode, lookup_name,
5051                             sym_text, word, code);
5052
5053   /* Look through the partial symtabs for all symbols which begin by
5054      matching SYM_TEXT.  Expand all CUs that you find to the list.  */
5055   expand_symtabs_matching (NULL,
5056                            lookup_name,
5057                            NULL,
5058                            [&] (compunit_symtab *symtab) /* expansion notify */
5059                              {
5060                                add_symtab_completions (symtab,
5061                                                        tracker, mode, lookup_name,
5062                                                        sym_text, word, code);
5063                              },
5064                            ALL_DOMAIN);
5065
5066   /* Search upwards from currently selected frame (so that we can
5067      complete on local vars).  Also catch fields of types defined in
5068      this places which match our text string.  Only complete on types
5069      visible from current context.  */
5070
5071   b = get_selected_block (0);
5072   surrounding_static_block = block_static_block (b);
5073   surrounding_global_block = block_global_block (b);
5074   if (surrounding_static_block != NULL)
5075     while (b != surrounding_static_block)
5076       {
5077         QUIT;
5078
5079         ALL_BLOCK_SYMBOLS (b, iter, sym)
5080           {
5081             if (code == TYPE_CODE_UNDEF)
5082               {
5083                 completion_list_add_symbol (tracker, sym, lookup_name,
5084                                             sym_text, word);
5085                 completion_list_add_fields (tracker, sym, lookup_name,
5086                                             sym_text, word);
5087               }
5088             else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5089                      && TYPE_CODE (SYMBOL_TYPE (sym)) == code)
5090               completion_list_add_symbol (tracker, sym, lookup_name,
5091                                           sym_text, word);
5092           }
5093
5094         /* Stop when we encounter an enclosing function.  Do not stop for
5095            non-inlined functions - the locals of the enclosing function
5096            are in scope for a nested function.  */
5097         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
5098           break;
5099         b = BLOCK_SUPERBLOCK (b);
5100       }
5101
5102   /* Add fields from the file's types; symbols will be added below.  */
5103
5104   if (code == TYPE_CODE_UNDEF)
5105     {
5106       if (surrounding_static_block != NULL)
5107         ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
5108           completion_list_add_fields (tracker, sym, lookup_name,
5109                                       sym_text, word);
5110
5111       if (surrounding_global_block != NULL)
5112         ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
5113           completion_list_add_fields (tracker, sym, lookup_name,
5114                                       sym_text, word);
5115     }
5116
5117   /* Skip macros if we are completing a struct tag -- arguable but
5118      usually what is expected.  */
5119   if (current_language->la_macro_expansion == macro_expansion_c
5120       && code == TYPE_CODE_UNDEF)
5121     {
5122       struct macro_scope *scope;
5123
5124       /* This adds a macro's name to the current completion list.  */
5125       auto add_macro_name = [&] (const char *macro_name,
5126                                  const macro_definition *,
5127                                  macro_source_file *,
5128                                  int)
5129         {
5130           completion_list_add_name (tracker, language_c, macro_name,
5131                                     lookup_name, sym_text, word);
5132         };
5133
5134       /* Add any macros visible in the default scope.  Note that this
5135          may yield the occasional wrong result, because an expression
5136          might be evaluated in a scope other than the default.  For
5137          example, if the user types "break file:line if <TAB>", the
5138          resulting expression will be evaluated at "file:line" -- but
5139          at there does not seem to be a way to detect this at
5140          completion time.  */
5141       scope = default_macro_scope ();
5142       if (scope)
5143         {
5144           macro_for_each_in_scope (scope->file, scope->line,
5145                                    add_macro_name);
5146           xfree (scope);
5147         }
5148
5149       /* User-defined macros are always visible.  */
5150       macro_for_each (macro_user_macros, add_macro_name);
5151     }
5152 }
5153
5154 void
5155 default_collect_symbol_completion_matches (completion_tracker &tracker,
5156                                            complete_symbol_mode mode,
5157                                            symbol_name_match_type name_match_type,
5158                                            const char *text, const char *word,
5159                                            enum type_code code)
5160 {
5161   return default_collect_symbol_completion_matches_break_on (tracker, mode,
5162                                                              name_match_type,
5163                                                              text, word, "",
5164                                                              code);
5165 }
5166
5167 /* Collect all symbols (regardless of class) which begin by matching
5168    TEXT.  */
5169
5170 void
5171 collect_symbol_completion_matches (completion_tracker &tracker,
5172                                    complete_symbol_mode mode,
5173                                    symbol_name_match_type name_match_type,
5174                                    const char *text, const char *word)
5175 {
5176   current_language->la_collect_symbol_completion_matches (tracker, mode,
5177                                                           name_match_type,
5178                                                           text, word,
5179                                                           TYPE_CODE_UNDEF);
5180 }
5181
5182 /* Like collect_symbol_completion_matches, but only collect
5183    STRUCT_DOMAIN symbols whose type code is CODE.  */
5184
5185 void
5186 collect_symbol_completion_matches_type (completion_tracker &tracker,
5187                                         const char *text, const char *word,
5188                                         enum type_code code)
5189 {
5190   complete_symbol_mode mode = complete_symbol_mode::EXPRESSION;
5191   symbol_name_match_type name_match_type = symbol_name_match_type::EXPRESSION;
5192
5193   gdb_assert (code == TYPE_CODE_UNION
5194               || code == TYPE_CODE_STRUCT
5195               || code == TYPE_CODE_ENUM);
5196   current_language->la_collect_symbol_completion_matches (tracker, mode,
5197                                                           name_match_type,
5198                                                           text, word, code);
5199 }
5200
5201 /* Like collect_symbol_completion_matches, but collects a list of
5202    symbols defined in all source files named SRCFILE.  */
5203
5204 void
5205 collect_file_symbol_completion_matches (completion_tracker &tracker,
5206                                         complete_symbol_mode mode,
5207                                         symbol_name_match_type name_match_type,
5208                                         const char *text, const char *word,
5209                                         const char *srcfile)
5210 {
5211   /* The symbol we are completing on.  Points in same buffer as text.  */
5212   const char *sym_text;
5213
5214   /* Now look for the symbol we are supposed to complete on.
5215      FIXME: This should be language-specific.  */
5216   if (mode == complete_symbol_mode::LINESPEC)
5217     sym_text = text;
5218   else
5219   {
5220     const char *p;
5221     char quote_found;
5222     const char *quote_pos = NULL;
5223
5224     /* First see if this is a quoted string.  */
5225     quote_found = '\0';
5226     for (p = text; *p != '\0'; ++p)
5227       {
5228         if (quote_found != '\0')
5229           {
5230             if (*p == quote_found)
5231               /* Found close quote.  */
5232               quote_found = '\0';
5233             else if (*p == '\\' && p[1] == quote_found)
5234               /* A backslash followed by the quote character
5235                  doesn't end the string.  */
5236               ++p;
5237           }
5238         else if (*p == '\'' || *p == '"')
5239           {
5240             quote_found = *p;
5241             quote_pos = p;
5242           }
5243       }
5244     if (quote_found == '\'')
5245       /* A string within single quotes can be a symbol, so complete on it.  */
5246       sym_text = quote_pos + 1;
5247     else if (quote_found == '"')
5248       /* A double-quoted string is never a symbol, nor does it make sense
5249          to complete it any other way.  */
5250       {
5251         return;
5252       }
5253     else
5254       {
5255         /* Not a quoted string.  */
5256         sym_text = language_search_unquoted_string (text, p);
5257       }
5258   }
5259
5260   lookup_name_info lookup_name (sym_text, name_match_type, true);
5261
5262   /* Go through symtabs for SRCFILE and check the externs and statics
5263      for symbols which match.  */
5264   iterate_over_symtabs (srcfile, [&] (symtab *s)
5265     {
5266       add_symtab_completions (SYMTAB_COMPUNIT (s),
5267                               tracker, mode, lookup_name,
5268                               sym_text, word, TYPE_CODE_UNDEF);
5269       return false;
5270     });
5271 }
5272
5273 /* A helper function for make_source_files_completion_list.  It adds
5274    another file name to a list of possible completions, growing the
5275    list as necessary.  */
5276
5277 static void
5278 add_filename_to_list (const char *fname, const char *text, const char *word,
5279                       completion_list *list)
5280 {
5281   char *newobj;
5282   size_t fnlen = strlen (fname);
5283
5284   if (word == text)
5285     {
5286       /* Return exactly fname.  */
5287       newobj = (char *) xmalloc (fnlen + 5);
5288       strcpy (newobj, fname);
5289     }
5290   else if (word > text)
5291     {
5292       /* Return some portion of fname.  */
5293       newobj = (char *) xmalloc (fnlen + 5);
5294       strcpy (newobj, fname + (word - text));
5295     }
5296   else
5297     {
5298       /* Return some of TEXT plus fname.  */
5299       newobj = (char *) xmalloc (fnlen + (text - word) + 5);
5300       strncpy (newobj, word, text - word);
5301       newobj[text - word] = '\0';
5302       strcat (newobj, fname);
5303     }
5304   list->emplace_back (newobj);
5305 }
5306
5307 static int
5308 not_interesting_fname (const char *fname)
5309 {
5310   static const char *illegal_aliens[] = {
5311     "_globals_",        /* inserted by coff_symtab_read */
5312     NULL
5313   };
5314   int i;
5315
5316   for (i = 0; illegal_aliens[i]; i++)
5317     {
5318       if (filename_cmp (fname, illegal_aliens[i]) == 0)
5319         return 1;
5320     }
5321   return 0;
5322 }
5323
5324 /* An object of this type is passed as the user_data argument to
5325    map_partial_symbol_filenames.  */
5326 struct add_partial_filename_data
5327 {
5328   struct filename_seen_cache *filename_seen_cache;
5329   const char *text;
5330   const char *word;
5331   int text_len;
5332   completion_list *list;
5333 };
5334
5335 /* A callback for map_partial_symbol_filenames.  */
5336
5337 static void
5338 maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
5339                                    void *user_data)
5340 {
5341   struct add_partial_filename_data *data
5342     = (struct add_partial_filename_data *) user_data;
5343
5344   if (not_interesting_fname (filename))
5345     return;
5346   if (!data->filename_seen_cache->seen (filename)
5347       && filename_ncmp (filename, data->text, data->text_len) == 0)
5348     {
5349       /* This file matches for a completion; add it to the
5350          current list of matches.  */
5351       add_filename_to_list (filename, data->text, data->word, data->list);
5352     }
5353   else
5354     {
5355       const char *base_name = lbasename (filename);
5356
5357       if (base_name != filename
5358           && !data->filename_seen_cache->seen (base_name)
5359           && filename_ncmp (base_name, data->text, data->text_len) == 0)
5360         add_filename_to_list (base_name, data->text, data->word, data->list);
5361     }
5362 }
5363
5364 /* Return a list of all source files whose names begin with matching
5365    TEXT.  The file names are looked up in the symbol tables of this
5366    program.  */
5367
5368 completion_list
5369 make_source_files_completion_list (const char *text, const char *word)
5370 {
5371   struct compunit_symtab *cu;
5372   struct symtab *s;
5373   struct objfile *objfile;
5374   size_t text_len = strlen (text);
5375   completion_list list;
5376   const char *base_name;
5377   struct add_partial_filename_data datum;
5378
5379   if (!have_full_symbols () && !have_partial_symbols ())
5380     return list;
5381
5382   filename_seen_cache filenames_seen;
5383
5384   ALL_FILETABS (objfile, cu, s)
5385     {
5386       if (not_interesting_fname (s->filename))
5387         continue;
5388       if (!filenames_seen.seen (s->filename)
5389           && filename_ncmp (s->filename, text, text_len) == 0)
5390         {
5391           /* This file matches for a completion; add it to the current
5392              list of matches.  */
5393           add_filename_to_list (s->filename, text, word, &list);
5394         }
5395       else
5396         {
5397           /* NOTE: We allow the user to type a base name when the
5398              debug info records leading directories, but not the other
5399              way around.  This is what subroutines of breakpoint
5400              command do when they parse file names.  */
5401           base_name = lbasename (s->filename);
5402           if (base_name != s->filename
5403               && !filenames_seen.seen (base_name)
5404               && filename_ncmp (base_name, text, text_len) == 0)
5405             add_filename_to_list (base_name, text, word, &list);
5406         }
5407     }
5408
5409   datum.filename_seen_cache = &filenames_seen;
5410   datum.text = text;
5411   datum.word = word;
5412   datum.text_len = text_len;
5413   datum.list = &list;
5414   map_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
5415                         0 /*need_fullname*/);
5416
5417   return list;
5418 }
5419 \f
5420 /* Track MAIN */
5421
5422 /* Return the "main_info" object for the current program space.  If
5423    the object has not yet been created, create it and fill in some
5424    default values.  */
5425
5426 static struct main_info *
5427 get_main_info (void)
5428 {
5429   struct main_info *info
5430     = (struct main_info *) program_space_data (current_program_space,
5431                                                main_progspace_key);
5432
5433   if (info == NULL)
5434     {
5435       /* It may seem strange to store the main name in the progspace
5436          and also in whatever objfile happens to see a main name in
5437          its debug info.  The reason for this is mainly historical:
5438          gdb returned "main" as the name even if no function named
5439          "main" was defined the program; and this approach lets us
5440          keep compatibility.  */
5441       info = XCNEW (struct main_info);
5442       info->language_of_main = language_unknown;
5443       set_program_space_data (current_program_space, main_progspace_key,
5444                               info);
5445     }
5446
5447   return info;
5448 }
5449
5450 /* A cleanup to destroy a struct main_info when a progspace is
5451    destroyed.  */
5452
5453 static void
5454 main_info_cleanup (struct program_space *pspace, void *data)
5455 {
5456   struct main_info *info = (struct main_info *) data;
5457
5458   if (info != NULL)
5459     xfree (info->name_of_main);
5460   xfree (info);
5461 }
5462
5463 static void
5464 set_main_name (const char *name, enum language lang)
5465 {
5466   struct main_info *info = get_main_info ();
5467
5468   if (info->name_of_main != NULL)
5469     {
5470       xfree (info->name_of_main);
5471       info->name_of_main = NULL;
5472       info->language_of_main = language_unknown;
5473     }
5474   if (name != NULL)
5475     {
5476       info->name_of_main = xstrdup (name);
5477       info->language_of_main = lang;
5478     }
5479 }
5480
5481 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
5482    accordingly.  */
5483
5484 static void
5485 find_main_name (void)
5486 {
5487   const char *new_main_name;
5488   struct objfile *objfile;
5489
5490   /* First check the objfiles to see whether a debuginfo reader has
5491      picked up the appropriate main name.  Historically the main name
5492      was found in a more or less random way; this approach instead
5493      relies on the order of objfile creation -- which still isn't
5494      guaranteed to get the correct answer, but is just probably more
5495      accurate.  */
5496   ALL_OBJFILES (objfile)
5497   {
5498     if (objfile->per_bfd->name_of_main != NULL)
5499       {
5500         set_main_name (objfile->per_bfd->name_of_main,
5501                        objfile->per_bfd->language_of_main);
5502         return;
5503       }
5504   }
5505
5506   /* Try to see if the main procedure is in Ada.  */
5507   /* FIXME: brobecker/2005-03-07: Another way of doing this would
5508      be to add a new method in the language vector, and call this
5509      method for each language until one of them returns a non-empty
5510      name.  This would allow us to remove this hard-coded call to
5511      an Ada function.  It is not clear that this is a better approach
5512      at this point, because all methods need to be written in a way
5513      such that false positives never be returned.  For instance, it is
5514      important that a method does not return a wrong name for the main
5515      procedure if the main procedure is actually written in a different
5516      language.  It is easy to guaranty this with Ada, since we use a
5517      special symbol generated only when the main in Ada to find the name
5518      of the main procedure.  It is difficult however to see how this can
5519      be guarantied for languages such as C, for instance.  This suggests
5520      that order of call for these methods becomes important, which means
5521      a more complicated approach.  */
5522   new_main_name = ada_main_name ();
5523   if (new_main_name != NULL)
5524     {
5525       set_main_name (new_main_name, language_ada);
5526       return;
5527     }
5528
5529   new_main_name = d_main_name ();
5530   if (new_main_name != NULL)
5531     {
5532       set_main_name (new_main_name, language_d);
5533       return;
5534     }
5535
5536   new_main_name = go_main_name ();
5537   if (new_main_name != NULL)
5538     {
5539       set_main_name (new_main_name, language_go);
5540       return;
5541     }
5542
5543   new_main_name = pascal_main_name ();
5544   if (new_main_name != NULL)
5545     {
5546       set_main_name (new_main_name, language_pascal);
5547       return;
5548     }
5549
5550   /* The languages above didn't identify the name of the main procedure.
5551      Fallback to "main".  */
5552   set_main_name ("main", language_unknown);
5553 }
5554
5555 char *
5556 main_name (void)
5557 {
5558   struct main_info *info = get_main_info ();
5559
5560   if (info->name_of_main == NULL)
5561     find_main_name ();
5562
5563   return info->name_of_main;
5564 }
5565
5566 /* Return the language of the main function.  If it is not known,
5567    return language_unknown.  */
5568
5569 enum language
5570 main_language (void)
5571 {
5572   struct main_info *info = get_main_info ();
5573
5574   if (info->name_of_main == NULL)
5575     find_main_name ();
5576
5577   return info->language_of_main;
5578 }
5579
5580 /* Handle ``executable_changed'' events for the symtab module.  */
5581
5582 static void
5583 symtab_observer_executable_changed (void)
5584 {
5585   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
5586   set_main_name (NULL, language_unknown);
5587 }
5588
5589 /* Return 1 if the supplied producer string matches the ARM RealView
5590    compiler (armcc).  */
5591
5592 int
5593 producer_is_realview (const char *producer)
5594 {
5595   static const char *const arm_idents[] = {
5596     "ARM C Compiler, ADS",
5597     "Thumb C Compiler, ADS",
5598     "ARM C++ Compiler, ADS",
5599     "Thumb C++ Compiler, ADS",
5600     "ARM/Thumb C/C++ Compiler, RVCT",
5601     "ARM C/C++ Compiler, RVCT"
5602   };
5603   int i;
5604
5605   if (producer == NULL)
5606     return 0;
5607
5608   for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
5609     if (startswith (producer, arm_idents[i]))
5610       return 1;
5611
5612   return 0;
5613 }
5614
5615 \f
5616
5617 /* The next index to hand out in response to a registration request.  */
5618
5619 static int next_aclass_value = LOC_FINAL_VALUE;
5620
5621 /* The maximum number of "aclass" registrations we support.  This is
5622    constant for convenience.  */
5623 #define MAX_SYMBOL_IMPLS (LOC_FINAL_VALUE + 10)
5624
5625 /* The objects representing the various "aclass" values.  The elements
5626    from 0 up to LOC_FINAL_VALUE-1 represent themselves, and subsequent
5627    elements are those registered at gdb initialization time.  */
5628
5629 static struct symbol_impl symbol_impl[MAX_SYMBOL_IMPLS];
5630
5631 /* The globally visible pointer.  This is separate from 'symbol_impl'
5632    so that it can be const.  */
5633
5634 const struct symbol_impl *symbol_impls = &symbol_impl[0];
5635
5636 /* Make sure we saved enough room in struct symbol.  */
5637
5638 gdb_static_assert (MAX_SYMBOL_IMPLS <= (1 << SYMBOL_ACLASS_BITS));
5639
5640 /* Register a computed symbol type.  ACLASS must be LOC_COMPUTED.  OPS
5641    is the ops vector associated with this index.  This returns the new
5642    index, which should be used as the aclass_index field for symbols
5643    of this type.  */
5644
5645 int
5646 register_symbol_computed_impl (enum address_class aclass,
5647                                const struct symbol_computed_ops *ops)
5648 {
5649   int result = next_aclass_value++;
5650
5651   gdb_assert (aclass == LOC_COMPUTED);
5652   gdb_assert (result < MAX_SYMBOL_IMPLS);
5653   symbol_impl[result].aclass = aclass;
5654   symbol_impl[result].ops_computed = ops;
5655
5656   /* Sanity check OPS.  */
5657   gdb_assert (ops != NULL);
5658   gdb_assert (ops->tracepoint_var_ref != NULL);
5659   gdb_assert (ops->describe_location != NULL);
5660   gdb_assert (ops->get_symbol_read_needs != NULL);
5661   gdb_assert (ops->read_variable != NULL);
5662
5663   return result;
5664 }
5665
5666 /* Register a function with frame base type.  ACLASS must be LOC_BLOCK.
5667    OPS is the ops vector associated with this index.  This returns the
5668    new index, which should be used as the aclass_index field for symbols
5669    of this type.  */
5670
5671 int
5672 register_symbol_block_impl (enum address_class aclass,
5673                             const struct symbol_block_ops *ops)
5674 {
5675   int result = next_aclass_value++;
5676
5677   gdb_assert (aclass == LOC_BLOCK);
5678   gdb_assert (result < MAX_SYMBOL_IMPLS);
5679   symbol_impl[result].aclass = aclass;
5680   symbol_impl[result].ops_block = ops;
5681
5682   /* Sanity check OPS.  */
5683   gdb_assert (ops != NULL);
5684   gdb_assert (ops->find_frame_base_location != NULL);
5685
5686   return result;
5687 }
5688
5689 /* Register a register symbol type.  ACLASS must be LOC_REGISTER or
5690    LOC_REGPARM_ADDR.  OPS is the register ops vector associated with
5691    this index.  This returns the new index, which should be used as
5692    the aclass_index field for symbols of this type.  */
5693
5694 int
5695 register_symbol_register_impl (enum address_class aclass,
5696                                const struct symbol_register_ops *ops)
5697 {
5698   int result = next_aclass_value++;
5699
5700   gdb_assert (aclass == LOC_REGISTER || aclass == LOC_REGPARM_ADDR);
5701   gdb_assert (result < MAX_SYMBOL_IMPLS);
5702   symbol_impl[result].aclass = aclass;
5703   symbol_impl[result].ops_register = ops;
5704
5705   return result;
5706 }
5707
5708 /* Initialize elements of 'symbol_impl' for the constants in enum
5709    address_class.  */
5710
5711 static void
5712 initialize_ordinary_address_classes (void)
5713 {
5714   int i;
5715
5716   for (i = 0; i < LOC_FINAL_VALUE; ++i)
5717     symbol_impl[i].aclass = (enum address_class) i;
5718 }
5719
5720 \f
5721
5722 /* Helper function to initialize the fields of an objfile-owned symbol.
5723    It assumed that *SYM is already all zeroes.  */
5724
5725 static void
5726 initialize_objfile_symbol_1 (struct symbol *sym)
5727 {
5728   SYMBOL_OBJFILE_OWNED (sym) = 1;
5729   SYMBOL_SECTION (sym) = -1;
5730 }
5731
5732 /* Initialize the symbol SYM, and mark it as being owned by an objfile.  */
5733
5734 void
5735 initialize_objfile_symbol (struct symbol *sym)
5736 {
5737   memset (sym, 0, sizeof (*sym));
5738   initialize_objfile_symbol_1 (sym);
5739 }
5740
5741 /* Allocate and initialize a new 'struct symbol' on OBJFILE's
5742    obstack.  */
5743
5744 struct symbol *
5745 allocate_symbol (struct objfile *objfile)
5746 {
5747   struct symbol *result;
5748
5749   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
5750   initialize_objfile_symbol_1 (result);
5751
5752   return result;
5753 }
5754
5755 /* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
5756    obstack.  */
5757
5758 struct template_symbol *
5759 allocate_template_symbol (struct objfile *objfile)
5760 {
5761   struct template_symbol *result;
5762
5763   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct template_symbol);
5764   initialize_objfile_symbol_1 (&result->base);
5765
5766   return result;
5767 }
5768
5769 /* See symtab.h.  */
5770
5771 struct objfile *
5772 symbol_objfile (const struct symbol *symbol)
5773 {
5774   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
5775   return SYMTAB_OBJFILE (symbol->owner.symtab);
5776 }
5777
5778 /* See symtab.h.  */
5779
5780 struct gdbarch *
5781 symbol_arch (const struct symbol *symbol)
5782 {
5783   if (!SYMBOL_OBJFILE_OWNED (symbol))
5784     return symbol->owner.arch;
5785   return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
5786 }
5787
5788 /* See symtab.h.  */
5789
5790 struct symtab *
5791 symbol_symtab (const struct symbol *symbol)
5792 {
5793   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
5794   return symbol->owner.symtab;
5795 }
5796
5797 /* See symtab.h.  */
5798
5799 void
5800 symbol_set_symtab (struct symbol *symbol, struct symtab *symtab)
5801 {
5802   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
5803   symbol->owner.symtab = symtab;
5804 }
5805
5806 \f
5807
5808 void
5809 _initialize_symtab (void)
5810 {
5811   initialize_ordinary_address_classes ();
5812
5813   main_progspace_key
5814     = register_program_space_data_with_cleanup (NULL, main_info_cleanup);
5815
5816   symbol_cache_key
5817     = register_program_space_data_with_cleanup (NULL, symbol_cache_cleanup);
5818
5819   add_info ("variables", info_variables_command, _("\
5820 All global and static variable names, or those matching REGEXP."));
5821   if (dbx_commands)
5822     add_com ("whereis", class_info, info_variables_command, _("\
5823 All global and static variable names, or those matching REGEXP."));
5824
5825   add_info ("functions", info_functions_command,
5826             _("All function names, or those matching REGEXP."));
5827
5828   /* FIXME:  This command has at least the following problems:
5829      1.  It prints builtin types (in a very strange and confusing fashion).
5830      2.  It doesn't print right, e.g. with
5831      typedef struct foo *FOO
5832      type_print prints "FOO" when we want to make it (in this situation)
5833      print "struct foo *".
5834      I also think "ptype" or "whatis" is more likely to be useful (but if
5835      there is much disagreement "info types" can be fixed).  */
5836   add_info ("types", info_types_command,
5837             _("All type names, or those matching REGEXP."));
5838
5839   add_info ("sources", info_sources_command,
5840             _("Source files in the program."));
5841
5842   add_com ("rbreak", class_breakpoint, rbreak_command,
5843            _("Set a breakpoint for all functions matching REGEXP."));
5844
5845   add_setshow_enum_cmd ("multiple-symbols", no_class,
5846                         multiple_symbols_modes, &multiple_symbols_mode,
5847                         _("\
5848 Set the debugger behavior when more than one symbol are possible matches\n\
5849 in an expression."), _("\
5850 Show how the debugger handles ambiguities in expressions."), _("\
5851 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
5852                         NULL, NULL, &setlist, &showlist);
5853
5854   add_setshow_boolean_cmd ("basenames-may-differ", class_obscure,
5855                            &basenames_may_differ, _("\
5856 Set whether a source file may have multiple base names."), _("\
5857 Show whether a source file may have multiple base names."), _("\
5858 (A \"base name\" is the name of a file with the directory part removed.\n\
5859 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
5860 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
5861 before comparing them.  Canonicalization is an expensive operation,\n\
5862 but it allows the same file be known by more than one base name.\n\
5863 If not set (the default), all source files are assumed to have just\n\
5864 one base name, and gdb will do file name comparisons more efficiently."),
5865                            NULL, NULL,
5866                            &setlist, &showlist);
5867
5868   add_setshow_zuinteger_cmd ("symtab-create", no_class, &symtab_create_debug,
5869                              _("Set debugging of symbol table creation."),
5870                              _("Show debugging of symbol table creation."), _("\
5871 When enabled (non-zero), debugging messages are printed when building\n\
5872 symbol tables.  A value of 1 (one) normally provides enough information.\n\
5873 A value greater than 1 provides more verbose information."),
5874                              NULL,
5875                              NULL,
5876                              &setdebuglist, &showdebuglist);
5877
5878   add_setshow_zuinteger_cmd ("symbol-lookup", no_class, &symbol_lookup_debug,
5879                            _("\
5880 Set debugging of symbol lookup."), _("\
5881 Show debugging of symbol lookup."), _("\
5882 When enabled (non-zero), symbol lookups are logged."),
5883                            NULL, NULL,
5884                            &setdebuglist, &showdebuglist);
5885
5886   add_setshow_zuinteger_cmd ("symbol-cache-size", no_class,
5887                              &new_symbol_cache_size,
5888                              _("Set the size of the symbol cache."),
5889                              _("Show the size of the symbol cache."), _("\
5890 The size of the symbol cache.\n\
5891 If zero then the symbol cache is disabled."),
5892                              set_symbol_cache_size_handler, NULL,
5893                              &maintenance_set_cmdlist,
5894                              &maintenance_show_cmdlist);
5895
5896   add_cmd ("symbol-cache", class_maintenance, maintenance_print_symbol_cache,
5897            _("Dump the symbol cache for each program space."),
5898            &maintenanceprintlist);
5899
5900   add_cmd ("symbol-cache-statistics", class_maintenance,
5901            maintenance_print_symbol_cache_statistics,
5902            _("Print symbol cache statistics for each program space."),
5903            &maintenanceprintlist);
5904
5905   add_cmd ("flush-symbol-cache", class_maintenance,
5906            maintenance_flush_symbol_cache,
5907            _("Flush the symbol cache for each program space."),
5908            &maintenancelist);
5909
5910   observer_attach_executable_changed (symtab_observer_executable_changed);
5911   observer_attach_new_objfile (symtab_new_objfile_observer);
5912   observer_attach_free_objfile (symtab_free_objfile_observer);
5913 }