Simplify completion_list_add_name | remove sym_text / sym_text_len
[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 /* Add matching symbols from SYMTAB to the current completion list.  */
4881
4882 static void
4883 add_symtab_completions (struct compunit_symtab *cust,
4884                         completion_tracker &tracker,
4885                         const lookup_name_info &lookup_name,
4886                         const char *text, const char *word,
4887                         enum type_code code)
4888 {
4889   struct symbol *sym;
4890   const struct block *b;
4891   struct block_iterator iter;
4892   int i;
4893
4894   if (cust == NULL)
4895     return;
4896
4897   for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
4898     {
4899       QUIT;
4900       b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), i);
4901       ALL_BLOCK_SYMBOLS (b, iter, sym)
4902         {
4903           if (code == TYPE_CODE_UNDEF
4904               || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
4905                   && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
4906             completion_list_add_symbol (tracker, sym,
4907                                         lookup_name,
4908                                         text, word);
4909         }
4910     }
4911 }
4912
4913 void
4914 default_collect_symbol_completion_matches_break_on
4915   (completion_tracker &tracker, complete_symbol_mode mode,
4916    symbol_name_match_type name_match_type,
4917    const char *text, const char *word,
4918    const char *break_on, enum type_code code)
4919 {
4920   /* Problem: All of the symbols have to be copied because readline
4921      frees them.  I'm not going to worry about this; hopefully there
4922      won't be that many.  */
4923
4924   struct symbol *sym;
4925   struct compunit_symtab *cust;
4926   struct minimal_symbol *msymbol;
4927   struct objfile *objfile;
4928   const struct block *b;
4929   const struct block *surrounding_static_block, *surrounding_global_block;
4930   struct block_iterator iter;
4931   /* The symbol we are completing on.  Points in same buffer as text.  */
4932   const char *sym_text;
4933
4934   /* Now look for the symbol we are supposed to complete on.  */
4935   if (mode == complete_symbol_mode::LINESPEC)
4936     sym_text = text;
4937   else
4938   {
4939     const char *p;
4940     char quote_found;
4941     const char *quote_pos = NULL;
4942
4943     /* First see if this is a quoted string.  */
4944     quote_found = '\0';
4945     for (p = text; *p != '\0'; ++p)
4946       {
4947         if (quote_found != '\0')
4948           {
4949             if (*p == quote_found)
4950               /* Found close quote.  */
4951               quote_found = '\0';
4952             else if (*p == '\\' && p[1] == quote_found)
4953               /* A backslash followed by the quote character
4954                  doesn't end the string.  */
4955               ++p;
4956           }
4957         else if (*p == '\'' || *p == '"')
4958           {
4959             quote_found = *p;
4960             quote_pos = p;
4961           }
4962       }
4963     if (quote_found == '\'')
4964       /* A string within single quotes can be a symbol, so complete on it.  */
4965       sym_text = quote_pos + 1;
4966     else if (quote_found == '"')
4967       /* A double-quoted string is never a symbol, nor does it make sense
4968          to complete it any other way.  */
4969       {
4970         return;
4971       }
4972     else
4973       {
4974         /* It is not a quoted string.  Break it based on the characters
4975            which are in symbols.  */
4976         while (p > text)
4977           {
4978             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
4979                 || p[-1] == ':' || strchr (break_on, p[-1]) != NULL)
4980               --p;
4981             else
4982               break;
4983           }
4984         sym_text = p;
4985       }
4986   }
4987
4988   lookup_name_info lookup_name (sym_text, name_match_type, true);
4989
4990   /* At this point scan through the misc symbol vectors and add each
4991      symbol you find to the list.  Eventually we want to ignore
4992      anything that isn't a text symbol (everything else will be
4993      handled by the psymtab code below).  */
4994
4995   if (code == TYPE_CODE_UNDEF)
4996     {
4997       ALL_MSYMBOLS (objfile, msymbol)
4998         {
4999           QUIT;
5000
5001           completion_list_add_msymbol (tracker, msymbol, lookup_name,
5002                                        sym_text, word);
5003
5004           completion_list_objc_symbol (tracker, msymbol, lookup_name,
5005                                        sym_text, word);
5006         }
5007     }
5008
5009   /* Add completions for all currently loaded symbol tables.  */
5010   ALL_COMPUNITS (objfile, cust)
5011     add_symtab_completions (cust, tracker, lookup_name,
5012                             sym_text, word, code);
5013
5014   /* Look through the partial symtabs for all symbols which begin by
5015      matching SYM_TEXT.  Expand all CUs that you find to the list.  */
5016   expand_symtabs_matching (NULL,
5017                            lookup_name,
5018                            NULL,
5019                            [&] (compunit_symtab *symtab) /* expansion notify */
5020                              {
5021                                add_symtab_completions (symtab,
5022                                                        tracker, lookup_name,
5023                                                        sym_text, word, code);
5024                              },
5025                            ALL_DOMAIN);
5026
5027   /* Search upwards from currently selected frame (so that we can
5028      complete on local vars).  Also catch fields of types defined in
5029      this places which match our text string.  Only complete on types
5030      visible from current context.  */
5031
5032   b = get_selected_block (0);
5033   surrounding_static_block = block_static_block (b);
5034   surrounding_global_block = block_global_block (b);
5035   if (surrounding_static_block != NULL)
5036     while (b != surrounding_static_block)
5037       {
5038         QUIT;
5039
5040         ALL_BLOCK_SYMBOLS (b, iter, sym)
5041           {
5042             if (code == TYPE_CODE_UNDEF)
5043               {
5044                 completion_list_add_symbol (tracker, sym, lookup_name,
5045                                             sym_text, word);
5046                 completion_list_add_fields (tracker, sym, lookup_name,
5047                                             sym_text, word);
5048               }
5049             else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5050                      && TYPE_CODE (SYMBOL_TYPE (sym)) == code)
5051               completion_list_add_symbol (tracker, sym, lookup_name,
5052                                           sym_text, word);
5053           }
5054
5055         /* Stop when we encounter an enclosing function.  Do not stop for
5056            non-inlined functions - the locals of the enclosing function
5057            are in scope for a nested function.  */
5058         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
5059           break;
5060         b = BLOCK_SUPERBLOCK (b);
5061       }
5062
5063   /* Add fields from the file's types; symbols will be added below.  */
5064
5065   if (code == TYPE_CODE_UNDEF)
5066     {
5067       if (surrounding_static_block != NULL)
5068         ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
5069           completion_list_add_fields (tracker, sym, lookup_name,
5070                                       sym_text, word);
5071
5072       if (surrounding_global_block != NULL)
5073         ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
5074           completion_list_add_fields (tracker, sym, lookup_name,
5075                                       sym_text, word);
5076     }
5077
5078   /* Skip macros if we are completing a struct tag -- arguable but
5079      usually what is expected.  */
5080   if (current_language->la_macro_expansion == macro_expansion_c
5081       && code == TYPE_CODE_UNDEF)
5082     {
5083       struct macro_scope *scope;
5084
5085       /* This adds a macro's name to the current completion list.  */
5086       auto add_macro_name = [&] (const char *macro_name,
5087                                  const macro_definition *,
5088                                  macro_source_file *,
5089                                  int)
5090         {
5091           completion_list_add_name (tracker, language_c, macro_name,
5092                                     lookup_name, sym_text, word);
5093         };
5094
5095       /* Add any macros visible in the default scope.  Note that this
5096          may yield the occasional wrong result, because an expression
5097          might be evaluated in a scope other than the default.  For
5098          example, if the user types "break file:line if <TAB>", the
5099          resulting expression will be evaluated at "file:line" -- but
5100          at there does not seem to be a way to detect this at
5101          completion time.  */
5102       scope = default_macro_scope ();
5103       if (scope)
5104         {
5105           macro_for_each_in_scope (scope->file, scope->line,
5106                                    add_macro_name);
5107           xfree (scope);
5108         }
5109
5110       /* User-defined macros are always visible.  */
5111       macro_for_each (macro_user_macros, add_macro_name);
5112     }
5113 }
5114
5115 void
5116 default_collect_symbol_completion_matches (completion_tracker &tracker,
5117                                            complete_symbol_mode mode,
5118                                            symbol_name_match_type name_match_type,
5119                                            const char *text, const char *word,
5120                                            enum type_code code)
5121 {
5122   return default_collect_symbol_completion_matches_break_on (tracker, mode,
5123                                                              name_match_type,
5124                                                              text, word, "",
5125                                                              code);
5126 }
5127
5128 /* Collect all symbols (regardless of class) which begin by matching
5129    TEXT.  */
5130
5131 void
5132 collect_symbol_completion_matches (completion_tracker &tracker,
5133                                    complete_symbol_mode mode,
5134                                    symbol_name_match_type name_match_type,
5135                                    const char *text, const char *word)
5136 {
5137   current_language->la_collect_symbol_completion_matches (tracker, mode,
5138                                                           name_match_type,
5139                                                           text, word,
5140                                                           TYPE_CODE_UNDEF);
5141 }
5142
5143 /* Like collect_symbol_completion_matches, but only collect
5144    STRUCT_DOMAIN symbols whose type code is CODE.  */
5145
5146 void
5147 collect_symbol_completion_matches_type (completion_tracker &tracker,
5148                                         const char *text, const char *word,
5149                                         enum type_code code)
5150 {
5151   complete_symbol_mode mode = complete_symbol_mode::EXPRESSION;
5152   symbol_name_match_type name_match_type = symbol_name_match_type::EXPRESSION;
5153
5154   gdb_assert (code == TYPE_CODE_UNION
5155               || code == TYPE_CODE_STRUCT
5156               || code == TYPE_CODE_ENUM);
5157   current_language->la_collect_symbol_completion_matches (tracker, mode,
5158                                                           name_match_type,
5159                                                           text, word, code);
5160 }
5161
5162 /* Like collect_symbol_completion_matches, but collects a list of
5163    symbols defined in all source files named SRCFILE.  */
5164
5165 void
5166 collect_file_symbol_completion_matches (completion_tracker &tracker,
5167                                         complete_symbol_mode mode,
5168                                         symbol_name_match_type name_match_type,
5169                                         const char *text, const char *word,
5170                                         const char *srcfile)
5171 {
5172   /* The symbol we are completing on.  Points in same buffer as text.  */
5173   const char *sym_text;
5174
5175   /* Now look for the symbol we are supposed to complete on.
5176      FIXME: This should be language-specific.  */
5177   if (mode == complete_symbol_mode::LINESPEC)
5178     sym_text = text;
5179   else
5180   {
5181     const char *p;
5182     char quote_found;
5183     const char *quote_pos = NULL;
5184
5185     /* First see if this is a quoted string.  */
5186     quote_found = '\0';
5187     for (p = text; *p != '\0'; ++p)
5188       {
5189         if (quote_found != '\0')
5190           {
5191             if (*p == quote_found)
5192               /* Found close quote.  */
5193               quote_found = '\0';
5194             else if (*p == '\\' && p[1] == quote_found)
5195               /* A backslash followed by the quote character
5196                  doesn't end the string.  */
5197               ++p;
5198           }
5199         else if (*p == '\'' || *p == '"')
5200           {
5201             quote_found = *p;
5202             quote_pos = p;
5203           }
5204       }
5205     if (quote_found == '\'')
5206       /* A string within single quotes can be a symbol, so complete on it.  */
5207       sym_text = quote_pos + 1;
5208     else if (quote_found == '"')
5209       /* A double-quoted string is never a symbol, nor does it make sense
5210          to complete it any other way.  */
5211       {
5212         return;
5213       }
5214     else
5215       {
5216         /* Not a quoted string.  */
5217         sym_text = language_search_unquoted_string (text, p);
5218       }
5219   }
5220
5221   lookup_name_info lookup_name (sym_text, name_match_type, true);
5222
5223   /* Go through symtabs for SRCFILE and check the externs and statics
5224      for symbols which match.  */
5225   iterate_over_symtabs (srcfile, [&] (symtab *s)
5226     {
5227       add_symtab_completions (SYMTAB_COMPUNIT (s),
5228                               tracker, lookup_name,
5229                               sym_text, word, TYPE_CODE_UNDEF);
5230       return false;
5231     });
5232 }
5233
5234 /* A helper function for make_source_files_completion_list.  It adds
5235    another file name to a list of possible completions, growing the
5236    list as necessary.  */
5237
5238 static void
5239 add_filename_to_list (const char *fname, const char *text, const char *word,
5240                       completion_list *list)
5241 {
5242   char *newobj;
5243   size_t fnlen = strlen (fname);
5244
5245   if (word == text)
5246     {
5247       /* Return exactly fname.  */
5248       newobj = (char *) xmalloc (fnlen + 5);
5249       strcpy (newobj, fname);
5250     }
5251   else if (word > text)
5252     {
5253       /* Return some portion of fname.  */
5254       newobj = (char *) xmalloc (fnlen + 5);
5255       strcpy (newobj, fname + (word - text));
5256     }
5257   else
5258     {
5259       /* Return some of TEXT plus fname.  */
5260       newobj = (char *) xmalloc (fnlen + (text - word) + 5);
5261       strncpy (newobj, word, text - word);
5262       newobj[text - word] = '\0';
5263       strcat (newobj, fname);
5264     }
5265   list->emplace_back (newobj);
5266 }
5267
5268 static int
5269 not_interesting_fname (const char *fname)
5270 {
5271   static const char *illegal_aliens[] = {
5272     "_globals_",        /* inserted by coff_symtab_read */
5273     NULL
5274   };
5275   int i;
5276
5277   for (i = 0; illegal_aliens[i]; i++)
5278     {
5279       if (filename_cmp (fname, illegal_aliens[i]) == 0)
5280         return 1;
5281     }
5282   return 0;
5283 }
5284
5285 /* An object of this type is passed as the user_data argument to
5286    map_partial_symbol_filenames.  */
5287 struct add_partial_filename_data
5288 {
5289   struct filename_seen_cache *filename_seen_cache;
5290   const char *text;
5291   const char *word;
5292   int text_len;
5293   completion_list *list;
5294 };
5295
5296 /* A callback for map_partial_symbol_filenames.  */
5297
5298 static void
5299 maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
5300                                    void *user_data)
5301 {
5302   struct add_partial_filename_data *data
5303     = (struct add_partial_filename_data *) user_data;
5304
5305   if (not_interesting_fname (filename))
5306     return;
5307   if (!data->filename_seen_cache->seen (filename)
5308       && filename_ncmp (filename, data->text, data->text_len) == 0)
5309     {
5310       /* This file matches for a completion; add it to the
5311          current list of matches.  */
5312       add_filename_to_list (filename, data->text, data->word, data->list);
5313     }
5314   else
5315     {
5316       const char *base_name = lbasename (filename);
5317
5318       if (base_name != filename
5319           && !data->filename_seen_cache->seen (base_name)
5320           && filename_ncmp (base_name, data->text, data->text_len) == 0)
5321         add_filename_to_list (base_name, data->text, data->word, data->list);
5322     }
5323 }
5324
5325 /* Return a list of all source files whose names begin with matching
5326    TEXT.  The file names are looked up in the symbol tables of this
5327    program.  */
5328
5329 completion_list
5330 make_source_files_completion_list (const char *text, const char *word)
5331 {
5332   struct compunit_symtab *cu;
5333   struct symtab *s;
5334   struct objfile *objfile;
5335   size_t text_len = strlen (text);
5336   completion_list list;
5337   const char *base_name;
5338   struct add_partial_filename_data datum;
5339
5340   if (!have_full_symbols () && !have_partial_symbols ())
5341     return list;
5342
5343   filename_seen_cache filenames_seen;
5344
5345   ALL_FILETABS (objfile, cu, s)
5346     {
5347       if (not_interesting_fname (s->filename))
5348         continue;
5349       if (!filenames_seen.seen (s->filename)
5350           && filename_ncmp (s->filename, text, text_len) == 0)
5351         {
5352           /* This file matches for a completion; add it to the current
5353              list of matches.  */
5354           add_filename_to_list (s->filename, text, word, &list);
5355         }
5356       else
5357         {
5358           /* NOTE: We allow the user to type a base name when the
5359              debug info records leading directories, but not the other
5360              way around.  This is what subroutines of breakpoint
5361              command do when they parse file names.  */
5362           base_name = lbasename (s->filename);
5363           if (base_name != s->filename
5364               && !filenames_seen.seen (base_name)
5365               && filename_ncmp (base_name, text, text_len) == 0)
5366             add_filename_to_list (base_name, text, word, &list);
5367         }
5368     }
5369
5370   datum.filename_seen_cache = &filenames_seen;
5371   datum.text = text;
5372   datum.word = word;
5373   datum.text_len = text_len;
5374   datum.list = &list;
5375   map_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
5376                         0 /*need_fullname*/);
5377
5378   return list;
5379 }
5380 \f
5381 /* Track MAIN */
5382
5383 /* Return the "main_info" object for the current program space.  If
5384    the object has not yet been created, create it and fill in some
5385    default values.  */
5386
5387 static struct main_info *
5388 get_main_info (void)
5389 {
5390   struct main_info *info
5391     = (struct main_info *) program_space_data (current_program_space,
5392                                                main_progspace_key);
5393
5394   if (info == NULL)
5395     {
5396       /* It may seem strange to store the main name in the progspace
5397          and also in whatever objfile happens to see a main name in
5398          its debug info.  The reason for this is mainly historical:
5399          gdb returned "main" as the name even if no function named
5400          "main" was defined the program; and this approach lets us
5401          keep compatibility.  */
5402       info = XCNEW (struct main_info);
5403       info->language_of_main = language_unknown;
5404       set_program_space_data (current_program_space, main_progspace_key,
5405                               info);
5406     }
5407
5408   return info;
5409 }
5410
5411 /* A cleanup to destroy a struct main_info when a progspace is
5412    destroyed.  */
5413
5414 static void
5415 main_info_cleanup (struct program_space *pspace, void *data)
5416 {
5417   struct main_info *info = (struct main_info *) data;
5418
5419   if (info != NULL)
5420     xfree (info->name_of_main);
5421   xfree (info);
5422 }
5423
5424 static void
5425 set_main_name (const char *name, enum language lang)
5426 {
5427   struct main_info *info = get_main_info ();
5428
5429   if (info->name_of_main != NULL)
5430     {
5431       xfree (info->name_of_main);
5432       info->name_of_main = NULL;
5433       info->language_of_main = language_unknown;
5434     }
5435   if (name != NULL)
5436     {
5437       info->name_of_main = xstrdup (name);
5438       info->language_of_main = lang;
5439     }
5440 }
5441
5442 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
5443    accordingly.  */
5444
5445 static void
5446 find_main_name (void)
5447 {
5448   const char *new_main_name;
5449   struct objfile *objfile;
5450
5451   /* First check the objfiles to see whether a debuginfo reader has
5452      picked up the appropriate main name.  Historically the main name
5453      was found in a more or less random way; this approach instead
5454      relies on the order of objfile creation -- which still isn't
5455      guaranteed to get the correct answer, but is just probably more
5456      accurate.  */
5457   ALL_OBJFILES (objfile)
5458   {
5459     if (objfile->per_bfd->name_of_main != NULL)
5460       {
5461         set_main_name (objfile->per_bfd->name_of_main,
5462                        objfile->per_bfd->language_of_main);
5463         return;
5464       }
5465   }
5466
5467   /* Try to see if the main procedure is in Ada.  */
5468   /* FIXME: brobecker/2005-03-07: Another way of doing this would
5469      be to add a new method in the language vector, and call this
5470      method for each language until one of them returns a non-empty
5471      name.  This would allow us to remove this hard-coded call to
5472      an Ada function.  It is not clear that this is a better approach
5473      at this point, because all methods need to be written in a way
5474      such that false positives never be returned.  For instance, it is
5475      important that a method does not return a wrong name for the main
5476      procedure if the main procedure is actually written in a different
5477      language.  It is easy to guaranty this with Ada, since we use a
5478      special symbol generated only when the main in Ada to find the name
5479      of the main procedure.  It is difficult however to see how this can
5480      be guarantied for languages such as C, for instance.  This suggests
5481      that order of call for these methods becomes important, which means
5482      a more complicated approach.  */
5483   new_main_name = ada_main_name ();
5484   if (new_main_name != NULL)
5485     {
5486       set_main_name (new_main_name, language_ada);
5487       return;
5488     }
5489
5490   new_main_name = d_main_name ();
5491   if (new_main_name != NULL)
5492     {
5493       set_main_name (new_main_name, language_d);
5494       return;
5495     }
5496
5497   new_main_name = go_main_name ();
5498   if (new_main_name != NULL)
5499     {
5500       set_main_name (new_main_name, language_go);
5501       return;
5502     }
5503
5504   new_main_name = pascal_main_name ();
5505   if (new_main_name != NULL)
5506     {
5507       set_main_name (new_main_name, language_pascal);
5508       return;
5509     }
5510
5511   /* The languages above didn't identify the name of the main procedure.
5512      Fallback to "main".  */
5513   set_main_name ("main", language_unknown);
5514 }
5515
5516 char *
5517 main_name (void)
5518 {
5519   struct main_info *info = get_main_info ();
5520
5521   if (info->name_of_main == NULL)
5522     find_main_name ();
5523
5524   return info->name_of_main;
5525 }
5526
5527 /* Return the language of the main function.  If it is not known,
5528    return language_unknown.  */
5529
5530 enum language
5531 main_language (void)
5532 {
5533   struct main_info *info = get_main_info ();
5534
5535   if (info->name_of_main == NULL)
5536     find_main_name ();
5537
5538   return info->language_of_main;
5539 }
5540
5541 /* Handle ``executable_changed'' events for the symtab module.  */
5542
5543 static void
5544 symtab_observer_executable_changed (void)
5545 {
5546   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
5547   set_main_name (NULL, language_unknown);
5548 }
5549
5550 /* Return 1 if the supplied producer string matches the ARM RealView
5551    compiler (armcc).  */
5552
5553 int
5554 producer_is_realview (const char *producer)
5555 {
5556   static const char *const arm_idents[] = {
5557     "ARM C Compiler, ADS",
5558     "Thumb C Compiler, ADS",
5559     "ARM C++ Compiler, ADS",
5560     "Thumb C++ Compiler, ADS",
5561     "ARM/Thumb C/C++ Compiler, RVCT",
5562     "ARM C/C++ Compiler, RVCT"
5563   };
5564   int i;
5565
5566   if (producer == NULL)
5567     return 0;
5568
5569   for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
5570     if (startswith (producer, arm_idents[i]))
5571       return 1;
5572
5573   return 0;
5574 }
5575
5576 \f
5577
5578 /* The next index to hand out in response to a registration request.  */
5579
5580 static int next_aclass_value = LOC_FINAL_VALUE;
5581
5582 /* The maximum number of "aclass" registrations we support.  This is
5583    constant for convenience.  */
5584 #define MAX_SYMBOL_IMPLS (LOC_FINAL_VALUE + 10)
5585
5586 /* The objects representing the various "aclass" values.  The elements
5587    from 0 up to LOC_FINAL_VALUE-1 represent themselves, and subsequent
5588    elements are those registered at gdb initialization time.  */
5589
5590 static struct symbol_impl symbol_impl[MAX_SYMBOL_IMPLS];
5591
5592 /* The globally visible pointer.  This is separate from 'symbol_impl'
5593    so that it can be const.  */
5594
5595 const struct symbol_impl *symbol_impls = &symbol_impl[0];
5596
5597 /* Make sure we saved enough room in struct symbol.  */
5598
5599 gdb_static_assert (MAX_SYMBOL_IMPLS <= (1 << SYMBOL_ACLASS_BITS));
5600
5601 /* Register a computed symbol type.  ACLASS must be LOC_COMPUTED.  OPS
5602    is the ops vector associated with this index.  This returns the new
5603    index, which should be used as the aclass_index field for symbols
5604    of this type.  */
5605
5606 int
5607 register_symbol_computed_impl (enum address_class aclass,
5608                                const struct symbol_computed_ops *ops)
5609 {
5610   int result = next_aclass_value++;
5611
5612   gdb_assert (aclass == LOC_COMPUTED);
5613   gdb_assert (result < MAX_SYMBOL_IMPLS);
5614   symbol_impl[result].aclass = aclass;
5615   symbol_impl[result].ops_computed = ops;
5616
5617   /* Sanity check OPS.  */
5618   gdb_assert (ops != NULL);
5619   gdb_assert (ops->tracepoint_var_ref != NULL);
5620   gdb_assert (ops->describe_location != NULL);
5621   gdb_assert (ops->get_symbol_read_needs != NULL);
5622   gdb_assert (ops->read_variable != NULL);
5623
5624   return result;
5625 }
5626
5627 /* Register a function with frame base type.  ACLASS must be LOC_BLOCK.
5628    OPS is the ops vector associated with this index.  This returns the
5629    new index, which should be used as the aclass_index field for symbols
5630    of this type.  */
5631
5632 int
5633 register_symbol_block_impl (enum address_class aclass,
5634                             const struct symbol_block_ops *ops)
5635 {
5636   int result = next_aclass_value++;
5637
5638   gdb_assert (aclass == LOC_BLOCK);
5639   gdb_assert (result < MAX_SYMBOL_IMPLS);
5640   symbol_impl[result].aclass = aclass;
5641   symbol_impl[result].ops_block = ops;
5642
5643   /* Sanity check OPS.  */
5644   gdb_assert (ops != NULL);
5645   gdb_assert (ops->find_frame_base_location != NULL);
5646
5647   return result;
5648 }
5649
5650 /* Register a register symbol type.  ACLASS must be LOC_REGISTER or
5651    LOC_REGPARM_ADDR.  OPS is the register ops vector associated with
5652    this index.  This returns the new index, which should be used as
5653    the aclass_index field for symbols of this type.  */
5654
5655 int
5656 register_symbol_register_impl (enum address_class aclass,
5657                                const struct symbol_register_ops *ops)
5658 {
5659   int result = next_aclass_value++;
5660
5661   gdb_assert (aclass == LOC_REGISTER || aclass == LOC_REGPARM_ADDR);
5662   gdb_assert (result < MAX_SYMBOL_IMPLS);
5663   symbol_impl[result].aclass = aclass;
5664   symbol_impl[result].ops_register = ops;
5665
5666   return result;
5667 }
5668
5669 /* Initialize elements of 'symbol_impl' for the constants in enum
5670    address_class.  */
5671
5672 static void
5673 initialize_ordinary_address_classes (void)
5674 {
5675   int i;
5676
5677   for (i = 0; i < LOC_FINAL_VALUE; ++i)
5678     symbol_impl[i].aclass = (enum address_class) i;
5679 }
5680
5681 \f
5682
5683 /* Helper function to initialize the fields of an objfile-owned symbol.
5684    It assumed that *SYM is already all zeroes.  */
5685
5686 static void
5687 initialize_objfile_symbol_1 (struct symbol *sym)
5688 {
5689   SYMBOL_OBJFILE_OWNED (sym) = 1;
5690   SYMBOL_SECTION (sym) = -1;
5691 }
5692
5693 /* Initialize the symbol SYM, and mark it as being owned by an objfile.  */
5694
5695 void
5696 initialize_objfile_symbol (struct symbol *sym)
5697 {
5698   memset (sym, 0, sizeof (*sym));
5699   initialize_objfile_symbol_1 (sym);
5700 }
5701
5702 /* Allocate and initialize a new 'struct symbol' on OBJFILE's
5703    obstack.  */
5704
5705 struct symbol *
5706 allocate_symbol (struct objfile *objfile)
5707 {
5708   struct symbol *result;
5709
5710   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
5711   initialize_objfile_symbol_1 (result);
5712
5713   return result;
5714 }
5715
5716 /* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
5717    obstack.  */
5718
5719 struct template_symbol *
5720 allocate_template_symbol (struct objfile *objfile)
5721 {
5722   struct template_symbol *result;
5723
5724   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct template_symbol);
5725   initialize_objfile_symbol_1 (&result->base);
5726
5727   return result;
5728 }
5729
5730 /* See symtab.h.  */
5731
5732 struct objfile *
5733 symbol_objfile (const struct symbol *symbol)
5734 {
5735   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
5736   return SYMTAB_OBJFILE (symbol->owner.symtab);
5737 }
5738
5739 /* See symtab.h.  */
5740
5741 struct gdbarch *
5742 symbol_arch (const struct symbol *symbol)
5743 {
5744   if (!SYMBOL_OBJFILE_OWNED (symbol))
5745     return symbol->owner.arch;
5746   return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
5747 }
5748
5749 /* See symtab.h.  */
5750
5751 struct symtab *
5752 symbol_symtab (const struct symbol *symbol)
5753 {
5754   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
5755   return symbol->owner.symtab;
5756 }
5757
5758 /* See symtab.h.  */
5759
5760 void
5761 symbol_set_symtab (struct symbol *symbol, struct symtab *symtab)
5762 {
5763   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
5764   symbol->owner.symtab = symtab;
5765 }
5766
5767 \f
5768
5769 void
5770 _initialize_symtab (void)
5771 {
5772   initialize_ordinary_address_classes ();
5773
5774   main_progspace_key
5775     = register_program_space_data_with_cleanup (NULL, main_info_cleanup);
5776
5777   symbol_cache_key
5778     = register_program_space_data_with_cleanup (NULL, symbol_cache_cleanup);
5779
5780   add_info ("variables", info_variables_command, _("\
5781 All global and static variable names, or those matching REGEXP."));
5782   if (dbx_commands)
5783     add_com ("whereis", class_info, info_variables_command, _("\
5784 All global and static variable names, or those matching REGEXP."));
5785
5786   add_info ("functions", info_functions_command,
5787             _("All function names, or those matching REGEXP."));
5788
5789   /* FIXME:  This command has at least the following problems:
5790      1.  It prints builtin types (in a very strange and confusing fashion).
5791      2.  It doesn't print right, e.g. with
5792      typedef struct foo *FOO
5793      type_print prints "FOO" when we want to make it (in this situation)
5794      print "struct foo *".
5795      I also think "ptype" or "whatis" is more likely to be useful (but if
5796      there is much disagreement "info types" can be fixed).  */
5797   add_info ("types", info_types_command,
5798             _("All type names, or those matching REGEXP."));
5799
5800   add_info ("sources", info_sources_command,
5801             _("Source files in the program."));
5802
5803   add_com ("rbreak", class_breakpoint, rbreak_command,
5804            _("Set a breakpoint for all functions matching REGEXP."));
5805
5806   add_setshow_enum_cmd ("multiple-symbols", no_class,
5807                         multiple_symbols_modes, &multiple_symbols_mode,
5808                         _("\
5809 Set the debugger behavior when more than one symbol are possible matches\n\
5810 in an expression."), _("\
5811 Show how the debugger handles ambiguities in expressions."), _("\
5812 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
5813                         NULL, NULL, &setlist, &showlist);
5814
5815   add_setshow_boolean_cmd ("basenames-may-differ", class_obscure,
5816                            &basenames_may_differ, _("\
5817 Set whether a source file may have multiple base names."), _("\
5818 Show whether a source file may have multiple base names."), _("\
5819 (A \"base name\" is the name of a file with the directory part removed.\n\
5820 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
5821 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
5822 before comparing them.  Canonicalization is an expensive operation,\n\
5823 but it allows the same file be known by more than one base name.\n\
5824 If not set (the default), all source files are assumed to have just\n\
5825 one base name, and gdb will do file name comparisons more efficiently."),
5826                            NULL, NULL,
5827                            &setlist, &showlist);
5828
5829   add_setshow_zuinteger_cmd ("symtab-create", no_class, &symtab_create_debug,
5830                              _("Set debugging of symbol table creation."),
5831                              _("Show debugging of symbol table creation."), _("\
5832 When enabled (non-zero), debugging messages are printed when building\n\
5833 symbol tables.  A value of 1 (one) normally provides enough information.\n\
5834 A value greater than 1 provides more verbose information."),
5835                              NULL,
5836                              NULL,
5837                              &setdebuglist, &showdebuglist);
5838
5839   add_setshow_zuinteger_cmd ("symbol-lookup", no_class, &symbol_lookup_debug,
5840                            _("\
5841 Set debugging of symbol lookup."), _("\
5842 Show debugging of symbol lookup."), _("\
5843 When enabled (non-zero), symbol lookups are logged."),
5844                            NULL, NULL,
5845                            &setdebuglist, &showdebuglist);
5846
5847   add_setshow_zuinteger_cmd ("symbol-cache-size", no_class,
5848                              &new_symbol_cache_size,
5849                              _("Set the size of the symbol cache."),
5850                              _("Show the size of the symbol cache."), _("\
5851 The size of the symbol cache.\n\
5852 If zero then the symbol cache is disabled."),
5853                              set_symbol_cache_size_handler, NULL,
5854                              &maintenance_set_cmdlist,
5855                              &maintenance_show_cmdlist);
5856
5857   add_cmd ("symbol-cache", class_maintenance, maintenance_print_symbol_cache,
5858            _("Dump the symbol cache for each program space."),
5859            &maintenanceprintlist);
5860
5861   add_cmd ("symbol-cache-statistics", class_maintenance,
5862            maintenance_print_symbol_cache_statistics,
5863            _("Print symbol cache statistics for each program space."),
5864            &maintenanceprintlist);
5865
5866   add_cmd ("flush-symbol-cache", class_maintenance,
5867            maintenance_flush_symbol_cache,
5868            _("Flush the symbol cache for each program space."),
5869            &maintenancelist);
5870
5871   observer_attach_executable_changed (symtab_observer_executable_changed);
5872   observer_attach_new_objfile (symtab_new_objfile_observer);
5873   observer_attach_free_objfile (symtab_free_objfile_observer);
5874 }