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