Use XCNEW gdbarch_tdep
[external/binutils.git] / gdb / symtab.c
1 /* Symbol table lookup for the GNU debugger, GDB.
2
3    Copyright (C) 1986-2017 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "gdbcore.h"
24 #include "frame.h"
25 #include "target.h"
26 #include "value.h"
27 #include "symfile.h"
28 #include "objfiles.h"
29 #include "gdbcmd.h"
30 #include "gdb_regex.h"
31 #include "expression.h"
32 #include "language.h"
33 #include "demangle.h"
34 #include "inferior.h"
35 #include "source.h"
36 #include "filenames.h"          /* for FILENAME_CMP */
37 #include "objc-lang.h"
38 #include "d-lang.h"
39 #include "ada-lang.h"
40 #include "go-lang.h"
41 #include "p-lang.h"
42 #include "addrmap.h"
43 #include "cli/cli-utils.h"
44 #include "fnmatch.h"
45 #include "hashtab.h"
46
47 #include "gdb_obstack.h"
48 #include "block.h"
49 #include "dictionary.h"
50
51 #include <sys/types.h>
52 #include <fcntl.h>
53 #include <sys/stat.h>
54 #include <ctype.h>
55 #include "cp-abi.h"
56 #include "cp-support.h"
57 #include "observer.h"
58 #include "solist.h"
59 #include "macrotab.h"
60 #include "macroscope.h"
61
62 #include "parser-defs.h"
63 #include "completer.h"
64 #include "progspace-and-thread.h"
65
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 \f
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 \f
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 \f
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 \f
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 \f
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 \f
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 \f
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 \f
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   CORE_ADDR pc, saved_pc;
3556   struct obj_section *section;
3557   const char *name;
3558   struct objfile *objfile;
3559   struct gdbarch *gdbarch;
3560   const struct block *b, *function_block;
3561   int force_skip, skip;
3562
3563   /* Do not change the SAL if PC was specified explicitly.  */
3564   if (sal->explicit_pc)
3565     return;
3566
3567   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3568
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         return;
3588
3589       objfile = msymbol.objfile;
3590       pc = BMSYMBOL_VALUE_ADDRESS (msymbol);
3591       section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
3592       name = MSYMBOL_LINKAGE_NAME (msymbol.minsym);
3593     }
3594
3595   gdbarch = get_objfile_arch (objfile);
3596
3597   /* Process the prologue in two passes.  In the first pass try to skip the
3598      prologue (SKIP is true) and verify there is a real need for it (indicated
3599      by FORCE_SKIP).  If no such reason was found run a second pass where the
3600      prologue is not skipped (SKIP is false).  */
3601
3602   skip = 1;
3603   force_skip = 1;
3604
3605   /* Be conservative - allow direct PC (without skipping prologue) only if we
3606      have proven the CU (Compilation Unit) supports it.  sal->SYMTAB does not
3607      have to be set by the caller so we use SYM instead.  */
3608   if (sym != NULL
3609       && COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (symbol_symtab (sym))))
3610     force_skip = 0;
3611
3612   saved_pc = pc;
3613   do
3614     {
3615       pc = saved_pc;
3616
3617       /* If the function is in an unmapped overlay, use its unmapped LMA address,
3618          so that gdbarch_skip_prologue has something unique to work on.  */
3619       if (section_is_overlay (section) && !section_is_mapped (section))
3620         pc = overlay_unmapped_address (pc, section);
3621
3622       /* Skip "first line" of function (which is actually its prologue).  */
3623       pc += gdbarch_deprecated_function_start_offset (gdbarch);
3624       if (gdbarch_skip_entrypoint_p (gdbarch))
3625         pc = gdbarch_skip_entrypoint (gdbarch, pc);
3626       if (skip)
3627         pc = gdbarch_skip_prologue (gdbarch, pc);
3628
3629       /* For overlays, map pc back into its mapped VMA range.  */
3630       pc = overlay_mapped_address (pc, section);
3631
3632       /* Calculate line number.  */
3633       start_sal = find_pc_sect_line (pc, section, 0);
3634
3635       /* Check if gdbarch_skip_prologue left us in mid-line, and the next
3636          line is still part of the same function.  */
3637       if (skip && start_sal.pc != pc
3638           && (sym ? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
3639                      && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
3640               : (lookup_minimal_symbol_by_pc_section (start_sal.end, section).minsym
3641                  == lookup_minimal_symbol_by_pc_section (pc, section).minsym)))
3642         {
3643           /* First pc of next line */
3644           pc = start_sal.end;
3645           /* Recalculate the line number (might not be N+1).  */
3646           start_sal = find_pc_sect_line (pc, section, 0);
3647         }
3648
3649       /* On targets with executable formats that don't have a concept of
3650          constructors (ELF with .init has, PE doesn't), gcc emits a call
3651          to `__main' in `main' between the prologue and before user
3652          code.  */
3653       if (gdbarch_skip_main_prologue_p (gdbarch)
3654           && name && strcmp_iw (name, "main") == 0)
3655         {
3656           pc = gdbarch_skip_main_prologue (gdbarch, pc);
3657           /* Recalculate the line number (might not be N+1).  */
3658           start_sal = find_pc_sect_line (pc, section, 0);
3659           force_skip = 1;
3660         }
3661     }
3662   while (!force_skip && skip--);
3663
3664   /* If we still don't have a valid source line, try to find the first
3665      PC in the lineinfo table that belongs to the same function.  This
3666      happens with COFF debug info, which does not seem to have an
3667      entry in lineinfo table for the code after the prologue which has
3668      no direct relation to source.  For example, this was found to be
3669      the case with the DJGPP target using "gcc -gcoff" when the
3670      compiler inserted code after the prologue to make sure the stack
3671      is aligned.  */
3672   if (!force_skip && sym && start_sal.symtab == NULL)
3673     {
3674       pc = skip_prologue_using_lineinfo (pc, symbol_symtab (sym));
3675       /* Recalculate the line number.  */
3676       start_sal = find_pc_sect_line (pc, section, 0);
3677     }
3678
3679   /* If we're already past the prologue, leave SAL unchanged.  Otherwise
3680      forward SAL to the end of the prologue.  */
3681   if (sal->pc >= pc)
3682     return;
3683
3684   sal->pc = pc;
3685   sal->section = section;
3686
3687   /* Unless the explicit_line flag was set, update the SAL line
3688      and symtab to correspond to the modified PC location.  */
3689   if (sal->explicit_line)
3690     return;
3691
3692   sal->symtab = start_sal.symtab;
3693   sal->line = start_sal.line;
3694   sal->end = start_sal.end;
3695
3696   /* Check if we are now inside an inlined function.  If we can,
3697      use the call site of the function instead.  */
3698   b = block_for_pc_sect (sal->pc, sal->section);
3699   function_block = NULL;
3700   while (b != NULL)
3701     {
3702       if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
3703         function_block = b;
3704       else if (BLOCK_FUNCTION (b) != NULL)
3705         break;
3706       b = BLOCK_SUPERBLOCK (b);
3707     }
3708   if (function_block != NULL
3709       && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
3710     {
3711       sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
3712       sal->symtab = symbol_symtab (BLOCK_FUNCTION (function_block));
3713     }
3714 }
3715
3716 /* Given PC at the function's start address, attempt to find the
3717    prologue end using SAL information.  Return zero if the skip fails.
3718
3719    A non-optimized prologue traditionally has one SAL for the function
3720    and a second for the function body.  A single line function has
3721    them both pointing at the same line.
3722
3723    An optimized prologue is similar but the prologue may contain
3724    instructions (SALs) from the instruction body.  Need to skip those
3725    while not getting into the function body.
3726
3727    The functions end point and an increasing SAL line are used as
3728    indicators of the prologue's endpoint.
3729
3730    This code is based on the function refine_prologue_limit
3731    (found in ia64).  */
3732
3733 CORE_ADDR
3734 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
3735 {
3736   struct symtab_and_line prologue_sal;
3737   CORE_ADDR start_pc;
3738   CORE_ADDR end_pc;
3739   const struct block *bl;
3740
3741   /* Get an initial range for the function.  */
3742   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
3743   start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
3744
3745   prologue_sal = find_pc_line (start_pc, 0);
3746   if (prologue_sal.line != 0)
3747     {
3748       /* For languages other than assembly, treat two consecutive line
3749          entries at the same address as a zero-instruction prologue.
3750          The GNU assembler emits separate line notes for each instruction
3751          in a multi-instruction macro, but compilers generally will not
3752          do this.  */
3753       if (prologue_sal.symtab->language != language_asm)
3754         {
3755           struct linetable *linetable = SYMTAB_LINETABLE (prologue_sal.symtab);
3756           int idx = 0;
3757
3758           /* Skip any earlier lines, and any end-of-sequence marker
3759              from a previous function.  */
3760           while (linetable->item[idx].pc != prologue_sal.pc
3761                  || linetable->item[idx].line == 0)
3762             idx++;
3763
3764           if (idx+1 < linetable->nitems
3765               && linetable->item[idx+1].line != 0
3766               && linetable->item[idx+1].pc == start_pc)
3767             return start_pc;
3768         }
3769
3770       /* If there is only one sal that covers the entire function,
3771          then it is probably a single line function, like
3772          "foo(){}".  */
3773       if (prologue_sal.end >= end_pc)
3774         return 0;
3775
3776       while (prologue_sal.end < end_pc)
3777         {
3778           struct symtab_and_line sal;
3779
3780           sal = find_pc_line (prologue_sal.end, 0);
3781           if (sal.line == 0)
3782             break;
3783           /* Assume that a consecutive SAL for the same (or larger)
3784              line mark the prologue -> body transition.  */
3785           if (sal.line >= prologue_sal.line)
3786             break;
3787           /* Likewise if we are in a different symtab altogether
3788              (e.g. within a file included via #include).  */
3789           if (sal.symtab != prologue_sal.symtab)
3790             break;
3791
3792           /* The line number is smaller.  Check that it's from the
3793              same function, not something inlined.  If it's inlined,
3794              then there is no point comparing the line numbers.  */
3795           bl = block_for_pc (prologue_sal.end);
3796           while (bl)
3797             {
3798               if (block_inlined_p (bl))
3799                 break;
3800               if (BLOCK_FUNCTION (bl))
3801                 {
3802                   bl = NULL;
3803                   break;
3804                 }
3805               bl = BLOCK_SUPERBLOCK (bl);
3806             }
3807           if (bl != NULL)
3808             break;
3809
3810           /* The case in which compiler's optimizer/scheduler has
3811              moved instructions into the prologue.  We look ahead in
3812              the function looking for address ranges whose
3813              corresponding line number is less the first one that we
3814              found for the function.  This is more conservative then
3815              refine_prologue_limit which scans a large number of SALs
3816              looking for any in the prologue.  */
3817           prologue_sal = sal;
3818         }
3819     }
3820
3821   if (prologue_sal.end < end_pc)
3822     /* Return the end of this line, or zero if we could not find a
3823        line.  */
3824     return prologue_sal.end;
3825   else
3826     /* Don't return END_PC, which is past the end of the function.  */
3827     return prologue_sal.pc;
3828 }
3829 \f
3830 /* If P is of the form "operator[ \t]+..." where `...' is
3831    some legitimate operator text, return a pointer to the
3832    beginning of the substring of the operator text.
3833    Otherwise, return "".  */
3834
3835 static const char *
3836 operator_chars (const char *p, const char **end)
3837 {
3838   *end = "";
3839   if (!startswith (p, "operator"))
3840     return *end;
3841   p += 8;
3842
3843   /* Don't get faked out by `operator' being part of a longer
3844      identifier.  */
3845   if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
3846     return *end;
3847
3848   /* Allow some whitespace between `operator' and the operator symbol.  */
3849   while (*p == ' ' || *p == '\t')
3850     p++;
3851
3852   /* Recognize 'operator TYPENAME'.  */
3853
3854   if (isalpha (*p) || *p == '_' || *p == '$')
3855     {
3856       const char *q = p + 1;
3857
3858       while (isalnum (*q) || *q == '_' || *q == '$')
3859         q++;
3860       *end = q;
3861       return p;
3862     }
3863
3864   while (*p)
3865     switch (*p)
3866       {
3867       case '\\':                        /* regexp quoting */
3868         if (p[1] == '*')
3869           {
3870             if (p[2] == '=')            /* 'operator\*=' */
3871               *end = p + 3;
3872             else                        /* 'operator\*'  */
3873               *end = p + 2;
3874             return p;
3875           }
3876         else if (p[1] == '[')
3877           {
3878             if (p[2] == ']')
3879               error (_("mismatched quoting on brackets, "
3880                        "try 'operator\\[\\]'"));
3881             else if (p[2] == '\\' && p[3] == ']')
3882               {
3883                 *end = p + 4;   /* 'operator\[\]' */
3884                 return p;
3885               }
3886             else
3887               error (_("nothing is allowed between '[' and ']'"));
3888           }
3889         else
3890           {
3891             /* Gratuitous qoute: skip it and move on.  */
3892             p++;
3893             continue;
3894           }
3895         break;
3896       case '!':
3897       case '=':
3898       case '*':
3899       case '/':
3900       case '%':
3901       case '^':
3902         if (p[1] == '=')
3903           *end = p + 2;
3904         else
3905           *end = p + 1;
3906         return p;
3907       case '<':
3908       case '>':
3909       case '+':
3910       case '-':
3911       case '&':
3912       case '|':
3913         if (p[0] == '-' && p[1] == '>')
3914           {
3915             /* Struct pointer member operator 'operator->'.  */
3916             if (p[2] == '*')
3917               {
3918                 *end = p + 3;   /* 'operator->*' */
3919                 return p;
3920               }
3921             else if (p[2] == '\\')
3922               {
3923                 *end = p + 4;   /* Hopefully 'operator->\*' */
3924                 return p;
3925               }
3926             else
3927               {
3928                 *end = p + 2;   /* 'operator->' */
3929                 return p;
3930               }
3931           }
3932         if (p[1] == '=' || p[1] == p[0])
3933           *end = p + 2;
3934         else
3935           *end = p + 1;
3936         return p;
3937       case '~':
3938       case ',':
3939         *end = p + 1;
3940         return p;
3941       case '(':
3942         if (p[1] != ')')
3943           error (_("`operator ()' must be specified "
3944                    "without whitespace in `()'"));
3945         *end = p + 2;
3946         return p;
3947       case '?':
3948         if (p[1] != ':')
3949           error (_("`operator ?:' must be specified "
3950                    "without whitespace in `?:'"));
3951         *end = p + 2;
3952         return p;
3953       case '[':
3954         if (p[1] != ']')
3955           error (_("`operator []' must be specified "
3956                    "without whitespace in `[]'"));
3957         *end = p + 2;
3958         return p;
3959       default:
3960         error (_("`operator %s' not supported"), p);
3961         break;
3962       }
3963
3964   *end = "";
3965   return *end;
3966 }
3967 \f
3968
3969 /* Cache to watch for file names already seen by filename_seen.  */
3970
3971 struct filename_seen_cache
3972 {
3973   /* Table of files seen so far.  */
3974   htab_t tab;
3975   /* Initial size of the table.  It automagically grows from here.  */
3976 #define INITIAL_FILENAME_SEEN_CACHE_SIZE 100
3977 };
3978
3979 /* filename_seen_cache constructor.  */
3980
3981 static struct filename_seen_cache *
3982 create_filename_seen_cache (void)
3983 {
3984   struct filename_seen_cache *cache = XNEW (struct filename_seen_cache);
3985
3986   cache->tab = htab_create_alloc (INITIAL_FILENAME_SEEN_CACHE_SIZE,
3987                                   filename_hash, filename_eq,
3988                                   NULL, xcalloc, xfree);
3989
3990   return cache;
3991 }
3992
3993 /* Empty the cache, but do not delete it.  */
3994
3995 static void
3996 clear_filename_seen_cache (struct filename_seen_cache *cache)
3997 {
3998   htab_empty (cache->tab);
3999 }
4000
4001 /* filename_seen_cache destructor.
4002    This takes a void * argument as it is generally used as a cleanup.  */
4003
4004 static void
4005 delete_filename_seen_cache (void *ptr)
4006 {
4007   struct filename_seen_cache *cache = (struct filename_seen_cache *) ptr;
4008
4009   htab_delete (cache->tab);
4010   xfree (cache);
4011 }
4012
4013 /* If FILE is not already in the table of files in CACHE, return zero;
4014    otherwise return non-zero.  Optionally add FILE to the table if ADD
4015    is non-zero.
4016
4017    NOTE: We don't manage space for FILE, we assume FILE lives as long
4018    as the caller needs.  */
4019
4020 static int
4021 filename_seen (struct filename_seen_cache *cache, const char *file, int add)
4022 {
4023   void **slot;
4024
4025   /* Is FILE in tab?  */
4026   slot = htab_find_slot (cache->tab, file, add ? INSERT : NO_INSERT);
4027   if (*slot != NULL)
4028     return 1;
4029
4030   /* No; maybe add it to tab.  */
4031   if (add)
4032     *slot = (char *) file;
4033
4034   return 0;
4035 }
4036
4037 /* Data structure to maintain printing state for output_source_filename.  */
4038
4039 struct output_source_filename_data
4040 {
4041   /* Cache of what we've seen so far.  */
4042   struct filename_seen_cache *filename_seen_cache;
4043
4044   /* Flag of whether we're printing the first one.  */
4045   int first;
4046 };
4047
4048 /* Slave routine for sources_info.  Force line breaks at ,'s.
4049    NAME is the name to print.
4050    DATA contains the state for printing and watching for duplicates.  */
4051
4052 static void
4053 output_source_filename (const char *name,
4054                         struct output_source_filename_data *data)
4055 {
4056   /* Since a single source file can result in several partial symbol
4057      tables, we need to avoid printing it more than once.  Note: if
4058      some of the psymtabs are read in and some are not, it gets
4059      printed both under "Source files for which symbols have been
4060      read" and "Source files for which symbols will be read in on
4061      demand".  I consider this a reasonable way to deal with the
4062      situation.  I'm not sure whether this can also happen for
4063      symtabs; it doesn't hurt to check.  */
4064
4065   /* Was NAME already seen?  */
4066   if (filename_seen (data->filename_seen_cache, name, 1))
4067     {
4068       /* Yes; don't print it again.  */
4069       return;
4070     }
4071
4072   /* No; print it and reset *FIRST.  */
4073   if (! data->first)
4074     printf_filtered (", ");
4075   data->first = 0;
4076
4077   wrap_here ("");
4078   fputs_filtered (name, gdb_stdout);
4079 }
4080
4081 /* A callback for map_partial_symbol_filenames.  */
4082
4083 static void
4084 output_partial_symbol_filename (const char *filename, const char *fullname,
4085                                 void *data)
4086 {
4087   output_source_filename (fullname ? fullname : filename,
4088                           (struct output_source_filename_data *) data);
4089 }
4090
4091 static void
4092 sources_info (char *ignore, int from_tty)
4093 {
4094   struct compunit_symtab *cu;
4095   struct symtab *s;
4096   struct objfile *objfile;
4097   struct output_source_filename_data data;
4098   struct cleanup *cleanups;
4099
4100   if (!have_full_symbols () && !have_partial_symbols ())
4101     {
4102       error (_("No symbol table is loaded.  Use the \"file\" command."));
4103     }
4104
4105   data.filename_seen_cache = create_filename_seen_cache ();
4106   cleanups = make_cleanup (delete_filename_seen_cache,
4107                            data.filename_seen_cache);
4108
4109   printf_filtered ("Source files for which symbols have been read in:\n\n");
4110
4111   data.first = 1;
4112   ALL_FILETABS (objfile, cu, s)
4113   {
4114     const char *fullname = symtab_to_fullname (s);
4115
4116     output_source_filename (fullname, &data);
4117   }
4118   printf_filtered ("\n\n");
4119
4120   printf_filtered ("Source files for which symbols "
4121                    "will be read in on demand:\n\n");
4122
4123   clear_filename_seen_cache (data.filename_seen_cache);
4124   data.first = 1;
4125   map_symbol_filenames (output_partial_symbol_filename, &data,
4126                         1 /*need_fullname*/);
4127   printf_filtered ("\n");
4128
4129   do_cleanups (cleanups);
4130 }
4131
4132 /* Compare FILE against all the NFILES entries of FILES.  If BASENAMES is
4133    non-zero compare only lbasename of FILES.  */
4134
4135 static int
4136 file_matches (const char *file, const char *files[], int nfiles, int basenames)
4137 {
4138   int i;
4139
4140   if (file != NULL && nfiles != 0)
4141     {
4142       for (i = 0; i < nfiles; i++)
4143         {
4144           if (compare_filenames_for_search (file, (basenames
4145                                                    ? lbasename (files[i])
4146                                                    : files[i])))
4147             return 1;
4148         }
4149     }
4150   else if (nfiles == 0)
4151     return 1;
4152   return 0;
4153 }
4154
4155 /* Free any memory associated with a search.  */
4156
4157 void
4158 free_search_symbols (struct symbol_search *symbols)
4159 {
4160   struct symbol_search *p;
4161   struct symbol_search *next;
4162
4163   for (p = symbols; p != NULL; p = next)
4164     {
4165       next = p->next;
4166       xfree (p);
4167     }
4168 }
4169
4170 static void
4171 do_free_search_symbols_cleanup (void *symbolsp)
4172 {
4173   struct symbol_search *symbols = *(struct symbol_search **) symbolsp;
4174
4175   free_search_symbols (symbols);
4176 }
4177
4178 struct cleanup *
4179 make_cleanup_free_search_symbols (struct symbol_search **symbolsp)
4180 {
4181   return make_cleanup (do_free_search_symbols_cleanup, symbolsp);
4182 }
4183
4184 /* Helper function for sort_search_symbols_remove_dups and qsort.  Can only
4185    sort symbols, not minimal symbols.  */
4186
4187 static int
4188 compare_search_syms (const void *sa, const void *sb)
4189 {
4190   struct symbol_search *sym_a = *(struct symbol_search **) sa;
4191   struct symbol_search *sym_b = *(struct symbol_search **) sb;
4192   int c;
4193
4194   c = FILENAME_CMP (symbol_symtab (sym_a->symbol)->filename,
4195                     symbol_symtab (sym_b->symbol)->filename);
4196   if (c != 0)
4197     return c;
4198
4199   if (sym_a->block != sym_b->block)
4200     return sym_a->block - sym_b->block;
4201
4202   return strcmp (SYMBOL_PRINT_NAME (sym_a->symbol),
4203                  SYMBOL_PRINT_NAME (sym_b->symbol));
4204 }
4205
4206 /* Sort the NFOUND symbols in list FOUND and remove duplicates.
4207    The duplicates are freed, and the new list is returned in
4208    *NEW_HEAD, *NEW_TAIL.  */
4209
4210 static void
4211 sort_search_symbols_remove_dups (struct symbol_search *found, int nfound,
4212                                  struct symbol_search **new_head,
4213                                  struct symbol_search **new_tail)
4214 {
4215   struct symbol_search **symbols, *symp;
4216   int i, j, nunique;
4217
4218   gdb_assert (found != NULL && nfound > 0);
4219
4220   /* Build an array out of the list so we can easily sort them.  */
4221   symbols = XNEWVEC (struct symbol_search *, nfound);
4222
4223   symp = found;
4224   for (i = 0; i < nfound; i++)
4225     {
4226       gdb_assert (symp != NULL);
4227       gdb_assert (symp->block >= 0 && symp->block <= 1);
4228       symbols[i] = symp;
4229       symp = symp->next;
4230     }
4231   gdb_assert (symp == NULL);
4232
4233   qsort (symbols, nfound, sizeof (struct symbol_search *),
4234          compare_search_syms);
4235
4236   /* Collapse out the dups.  */
4237   for (i = 1, j = 1; i < nfound; ++i)
4238     {
4239       if (compare_search_syms (&symbols[j - 1], &symbols[i]) != 0)
4240         symbols[j++] = symbols[i];
4241       else
4242         xfree (symbols[i]);
4243     }
4244   nunique = j;
4245   symbols[j - 1]->next = NULL;
4246
4247   /* Rebuild the linked list.  */
4248   for (i = 0; i < nunique - 1; i++)
4249     symbols[i]->next = symbols[i + 1];
4250   symbols[nunique - 1]->next = NULL;
4251
4252   *new_head = symbols[0];
4253   *new_tail = symbols[nunique - 1];
4254   xfree (symbols);
4255 }
4256
4257 /* Search the symbol table for matches to the regular expression REGEXP,
4258    returning the results in *MATCHES.
4259
4260    Only symbols of KIND are searched:
4261    VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
4262                       and constants (enums)
4263    FUNCTIONS_DOMAIN - search all functions
4264    TYPES_DOMAIN     - search all type names
4265    ALL_DOMAIN       - an internal error for this function
4266
4267    free_search_symbols should be called when *MATCHES is no longer needed.
4268
4269    Within each file the results are sorted locally; each symtab's global and
4270    static blocks are separately alphabetized.
4271    Duplicate entries are removed.  */
4272
4273 void
4274 search_symbols (const char *regexp, enum search_domain kind,
4275                 int nfiles, const char *files[],
4276                 struct symbol_search **matches)
4277 {
4278   struct compunit_symtab *cust;
4279   const struct blockvector *bv;
4280   struct block *b;
4281   int i = 0;
4282   struct block_iterator iter;
4283   struct symbol *sym;
4284   struct objfile *objfile;
4285   struct minimal_symbol *msymbol;
4286   int found_misc = 0;
4287   static const enum minimal_symbol_type types[]
4288     = {mst_data, mst_text, mst_abs};
4289   static const enum minimal_symbol_type types2[]
4290     = {mst_bss, mst_file_text, mst_abs};
4291   static const enum minimal_symbol_type types3[]
4292     = {mst_file_data, mst_solib_trampoline, mst_abs};
4293   static const enum minimal_symbol_type types4[]
4294     = {mst_file_bss, mst_text_gnu_ifunc, mst_abs};
4295   enum minimal_symbol_type ourtype;
4296   enum minimal_symbol_type ourtype2;
4297   enum minimal_symbol_type ourtype3;
4298   enum minimal_symbol_type ourtype4;
4299   struct symbol_search *found;
4300   struct symbol_search *tail;
4301   int nfound;
4302   /* This is true if PREG contains valid data, false otherwise.  */
4303   bool preg_p;
4304   regex_t preg;
4305
4306   /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
4307      CLEANUP_CHAIN is freed only in the case of an error.  */
4308   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
4309   struct cleanup *retval_chain;
4310
4311   gdb_assert (kind <= TYPES_DOMAIN);
4312
4313   ourtype = types[kind];
4314   ourtype2 = types2[kind];
4315   ourtype3 = types3[kind];
4316   ourtype4 = types4[kind];
4317
4318   *matches = NULL;
4319   preg_p = false;
4320
4321   if (regexp != NULL)
4322     {
4323       /* Make sure spacing is right for C++ operators.
4324          This is just a courtesy to make the matching less sensitive
4325          to how many spaces the user leaves between 'operator'
4326          and <TYPENAME> or <OPERATOR>.  */
4327       const char *opend;
4328       const char *opname = operator_chars (regexp, &opend);
4329       int errcode;
4330
4331       if (*opname)
4332         {
4333           int fix = -1;         /* -1 means ok; otherwise number of
4334                                     spaces needed.  */
4335
4336           if (isalpha (*opname) || *opname == '_' || *opname == '$')
4337             {
4338               /* There should 1 space between 'operator' and 'TYPENAME'.  */
4339               if (opname[-1] != ' ' || opname[-2] == ' ')
4340                 fix = 1;
4341             }
4342           else
4343             {
4344               /* There should 0 spaces between 'operator' and 'OPERATOR'.  */
4345               if (opname[-1] == ' ')
4346                 fix = 0;
4347             }
4348           /* If wrong number of spaces, fix it.  */
4349           if (fix >= 0)
4350             {
4351               char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
4352
4353               sprintf (tmp, "operator%.*s%s", fix, " ", opname);
4354               regexp = tmp;
4355             }
4356         }
4357
4358       errcode = regcomp (&preg, regexp,
4359                          REG_NOSUB | (case_sensitivity == case_sensitive_off
4360                                       ? REG_ICASE : 0));
4361       if (errcode != 0)
4362         {
4363           char *err = get_regcomp_error (errcode, &preg);
4364
4365           make_cleanup (xfree, err);
4366           error (_("Invalid regexp (%s): %s"), err, regexp);
4367         }
4368       preg_p = true;
4369       make_regfree_cleanup (&preg);
4370     }
4371
4372   /* Search through the partial symtabs *first* for all symbols
4373      matching the regexp.  That way we don't have to reproduce all of
4374      the machinery below.  */
4375   expand_symtabs_matching ([&] (const char *filename, bool basenames)
4376                            {
4377                              return file_matches (filename, files, nfiles,
4378                                                   basenames);
4379                            },
4380                            [&] (const char *symname)
4381                            {
4382                              return (!preg_p || regexec (&preg, symname,
4383                                                          0, NULL, 0) == 0);
4384                            },
4385                            NULL,
4386                            kind);
4387
4388   /* Here, we search through the minimal symbol tables for functions
4389      and variables that match, and force their symbols to be read.
4390      This is in particular necessary for demangled variable names,
4391      which are no longer put into the partial symbol tables.
4392      The symbol will then be found during the scan of symtabs below.
4393
4394      For functions, find_pc_symtab should succeed if we have debug info
4395      for the function, for variables we have to call
4396      lookup_symbol_in_objfile_from_linkage_name to determine if the variable
4397      has debug info.
4398      If the lookup fails, set found_misc so that we will rescan to print
4399      any matching symbols without debug info.
4400      We only search the objfile the msymbol came from, we no longer search
4401      all objfiles.  In large programs (1000s of shared libs) searching all
4402      objfiles is not worth the pain.  */
4403
4404   if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
4405     {
4406       ALL_MSYMBOLS (objfile, msymbol)
4407       {
4408         QUIT;
4409
4410         if (msymbol->created_by_gdb)
4411           continue;
4412
4413         if (MSYMBOL_TYPE (msymbol) == ourtype
4414             || MSYMBOL_TYPE (msymbol) == ourtype2
4415             || MSYMBOL_TYPE (msymbol) == ourtype3
4416             || MSYMBOL_TYPE (msymbol) == ourtype4)
4417           {
4418             if (!preg_p
4419                 || regexec (&preg, MSYMBOL_NATURAL_NAME (msymbol), 0,
4420                             NULL, 0) == 0)
4421               {
4422                 /* Note: An important side-effect of these lookup functions
4423                    is to expand the symbol table if msymbol is found, for the
4424                    benefit of the next loop on ALL_COMPUNITS.  */
4425                 if (kind == FUNCTIONS_DOMAIN
4426                     ? (find_pc_compunit_symtab
4427                        (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL)
4428                     : (lookup_symbol_in_objfile_from_linkage_name
4429                        (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4430                        .symbol == NULL))
4431                   found_misc = 1;
4432               }
4433           }
4434       }
4435     }
4436
4437   found = NULL;
4438   tail = NULL;
4439   nfound = 0;
4440   retval_chain = make_cleanup_free_search_symbols (&found);
4441
4442   ALL_COMPUNITS (objfile, cust)
4443   {
4444     bv = COMPUNIT_BLOCKVECTOR (cust);
4445     for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
4446       {
4447         b = BLOCKVECTOR_BLOCK (bv, i);
4448         ALL_BLOCK_SYMBOLS (b, iter, sym)
4449           {
4450             struct symtab *real_symtab = symbol_symtab (sym);
4451
4452             QUIT;
4453
4454             /* Check first sole REAL_SYMTAB->FILENAME.  It does not need to be
4455                a substring of symtab_to_fullname as it may contain "./" etc.  */
4456             if ((file_matches (real_symtab->filename, files, nfiles, 0)
4457                  || ((basenames_may_differ
4458                       || file_matches (lbasename (real_symtab->filename),
4459                                        files, nfiles, 1))
4460                      && file_matches (symtab_to_fullname (real_symtab),
4461                                       files, nfiles, 0)))
4462                 && ((!preg_p
4463                      || regexec (&preg, SYMBOL_NATURAL_NAME (sym), 0,
4464                                  NULL, 0) == 0)
4465                     && ((kind == VARIABLES_DOMAIN
4466                          && SYMBOL_CLASS (sym) != LOC_TYPEDEF
4467                          && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
4468                          && SYMBOL_CLASS (sym) != LOC_BLOCK
4469                          /* LOC_CONST can be used for more than just enums,
4470                             e.g., c++ static const members.
4471                             We only want to skip enums here.  */
4472                          && !(SYMBOL_CLASS (sym) == LOC_CONST
4473                               && (TYPE_CODE (SYMBOL_TYPE (sym))
4474                                   == TYPE_CODE_ENUM)))
4475                         || (kind == FUNCTIONS_DOMAIN 
4476                             && SYMBOL_CLASS (sym) == LOC_BLOCK)
4477                         || (kind == TYPES_DOMAIN
4478                             && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
4479               {
4480                 /* match */
4481                 struct symbol_search *psr = XCNEW (struct symbol_search);
4482
4483                 psr->block = i;
4484                 psr->symbol = sym;
4485                 psr->next = NULL;
4486                 if (tail == NULL)
4487                   found = psr;
4488                 else
4489                   tail->next = psr;
4490                 tail = psr;
4491                 nfound ++;
4492               }
4493           }
4494       }
4495   }
4496
4497   if (found != NULL)
4498     {
4499       sort_search_symbols_remove_dups (found, nfound, &found, &tail);
4500       /* Note: nfound is no longer useful beyond this point.  */
4501     }
4502
4503   /* If there are no eyes, avoid all contact.  I mean, if there are
4504      no debug symbols, then add matching minsyms.  */
4505
4506   if (found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
4507     {
4508       ALL_MSYMBOLS (objfile, msymbol)
4509       {
4510         QUIT;
4511
4512         if (msymbol->created_by_gdb)
4513           continue;
4514
4515         if (MSYMBOL_TYPE (msymbol) == ourtype
4516             || MSYMBOL_TYPE (msymbol) == ourtype2
4517             || MSYMBOL_TYPE (msymbol) == ourtype3
4518             || MSYMBOL_TYPE (msymbol) == ourtype4)
4519           {
4520             if (!preg_p
4521                 || regexec (&preg, MSYMBOL_NATURAL_NAME (msymbol), 0,
4522                             NULL, 0) == 0)
4523               {
4524                 /* For functions we can do a quick check of whether the
4525                    symbol might be found via find_pc_symtab.  */
4526                 if (kind != FUNCTIONS_DOMAIN
4527                     || (find_pc_compunit_symtab
4528                         (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL))
4529                   {
4530                     if (lookup_symbol_in_objfile_from_linkage_name
4531                         (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4532                         .symbol == NULL)
4533                       {
4534                         /* match */
4535                         struct symbol_search *psr = XNEW (struct symbol_search);
4536                         psr->block = i;
4537                         psr->msymbol.minsym = msymbol;
4538                         psr->msymbol.objfile = objfile;
4539                         psr->symbol = NULL;
4540                         psr->next = NULL;
4541                         if (tail == NULL)
4542                           found = psr;
4543                         else
4544                           tail->next = psr;
4545                         tail = psr;
4546                       }
4547                   }
4548               }
4549           }
4550       }
4551     }
4552
4553   discard_cleanups (retval_chain);
4554   do_cleanups (old_chain);
4555   *matches = found;
4556 }
4557
4558 /* Helper function for symtab_symbol_info, this function uses
4559    the data returned from search_symbols() to print information
4560    regarding the match to gdb_stdout.  */
4561
4562 static void
4563 print_symbol_info (enum search_domain kind,
4564                    struct symbol *sym,
4565                    int block, const char *last)
4566 {
4567   struct symtab *s = symbol_symtab (sym);
4568   const char *s_filename = symtab_to_filename_for_display (s);
4569
4570   if (last == NULL || filename_cmp (last, s_filename) != 0)
4571     {
4572       fputs_filtered ("\nFile ", gdb_stdout);
4573       fputs_filtered (s_filename, gdb_stdout);
4574       fputs_filtered (":\n", gdb_stdout);
4575     }
4576
4577   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
4578     printf_filtered ("static ");
4579
4580   /* Typedef that is not a C++ class.  */
4581   if (kind == TYPES_DOMAIN
4582       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
4583     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
4584   /* variable, func, or typedef-that-is-c++-class.  */
4585   else if (kind < TYPES_DOMAIN
4586            || (kind == TYPES_DOMAIN
4587                && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
4588     {
4589       type_print (SYMBOL_TYPE (sym),
4590                   (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4591                    ? "" : SYMBOL_PRINT_NAME (sym)),
4592                   gdb_stdout, 0);
4593
4594       printf_filtered (";\n");
4595     }
4596 }
4597
4598 /* This help function for symtab_symbol_info() prints information
4599    for non-debugging symbols to gdb_stdout.  */
4600
4601 static void
4602 print_msymbol_info (struct bound_minimal_symbol msymbol)
4603 {
4604   struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
4605   char *tmp;
4606
4607   if (gdbarch_addr_bit (gdbarch) <= 32)
4608     tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol)
4609                              & (CORE_ADDR) 0xffffffff,
4610                              8);
4611   else
4612     tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol),
4613                              16);
4614   printf_filtered ("%s  %s\n",
4615                    tmp, MSYMBOL_PRINT_NAME (msymbol.minsym));
4616 }
4617
4618 /* This is the guts of the commands "info functions", "info types", and
4619    "info variables".  It calls search_symbols to find all matches and then
4620    print_[m]symbol_info to print out some useful information about the
4621    matches.  */
4622
4623 static void
4624 symtab_symbol_info (char *regexp, enum search_domain kind, int from_tty)
4625 {
4626   static const char * const classnames[] =
4627     {"variable", "function", "type"};
4628   struct symbol_search *symbols;
4629   struct symbol_search *p;
4630   struct cleanup *old_chain;
4631   const char *last_filename = NULL;
4632   int first = 1;
4633
4634   gdb_assert (kind <= TYPES_DOMAIN);
4635
4636   /* Must make sure that if we're interrupted, symbols gets freed.  */
4637   search_symbols (regexp, kind, 0, NULL, &symbols);
4638   old_chain = make_cleanup_free_search_symbols (&symbols);
4639
4640   if (regexp != NULL)
4641     printf_filtered (_("All %ss matching regular expression \"%s\":\n"),
4642                      classnames[kind], regexp);
4643   else
4644     printf_filtered (_("All defined %ss:\n"), classnames[kind]);
4645
4646   for (p = symbols; p != NULL; p = p->next)
4647     {
4648       QUIT;
4649
4650       if (p->msymbol.minsym != NULL)
4651         {
4652           if (first)
4653             {
4654               printf_filtered (_("\nNon-debugging symbols:\n"));
4655               first = 0;
4656             }
4657           print_msymbol_info (p->msymbol);
4658         }
4659       else
4660         {
4661           print_symbol_info (kind,
4662                              p->symbol,
4663                              p->block,
4664                              last_filename);
4665           last_filename
4666             = symtab_to_filename_for_display (symbol_symtab (p->symbol));
4667         }
4668     }
4669
4670   do_cleanups (old_chain);
4671 }
4672
4673 static void
4674 variables_info (char *regexp, int from_tty)
4675 {
4676   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
4677 }
4678
4679 static void
4680 functions_info (char *regexp, int from_tty)
4681 {
4682   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
4683 }
4684
4685
4686 static void
4687 types_info (char *regexp, int from_tty)
4688 {
4689   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
4690 }
4691
4692 /* Breakpoint all functions matching regular expression.  */
4693
4694 void
4695 rbreak_command_wrapper (char *regexp, int from_tty)
4696 {
4697   rbreak_command (regexp, from_tty);
4698 }
4699
4700 /* A cleanup function that calls end_rbreak_breakpoints.  */
4701
4702 static void
4703 do_end_rbreak_breakpoints (void *ignore)
4704 {
4705   end_rbreak_breakpoints ();
4706 }
4707
4708 static void
4709 rbreak_command (char *regexp, int from_tty)
4710 {
4711   struct symbol_search *ss;
4712   struct symbol_search *p;
4713   struct cleanup *old_chain;
4714   char *string = NULL;
4715   int len = 0;
4716   const char **files = NULL;
4717   const char *file_name;
4718   int nfiles = 0;
4719
4720   if (regexp)
4721     {
4722       char *colon = strchr (regexp, ':');
4723
4724       if (colon && *(colon + 1) != ':')
4725         {
4726           int colon_index;
4727           char *local_name;
4728
4729           colon_index = colon - regexp;
4730           local_name = (char *) alloca (colon_index + 1);
4731           memcpy (local_name, regexp, colon_index);
4732           local_name[colon_index--] = 0;
4733           while (isspace (local_name[colon_index]))
4734             local_name[colon_index--] = 0;
4735           file_name = local_name;
4736           files = &file_name;
4737           nfiles = 1;
4738           regexp = skip_spaces (colon + 1);
4739         }
4740     }
4741
4742   search_symbols (regexp, FUNCTIONS_DOMAIN, nfiles, files, &ss);
4743   old_chain = make_cleanup_free_search_symbols (&ss);
4744   make_cleanup (free_current_contents, &string);
4745
4746   start_rbreak_breakpoints ();
4747   make_cleanup (do_end_rbreak_breakpoints, NULL);
4748   for (p = ss; p != NULL; p = p->next)
4749     {
4750       if (p->msymbol.minsym == NULL)
4751         {
4752           struct symtab *symtab = symbol_symtab (p->symbol);
4753           const char *fullname = symtab_to_fullname (symtab);
4754
4755           int newlen = (strlen (fullname)
4756                         + strlen (SYMBOL_LINKAGE_NAME (p->symbol))
4757                         + 4);
4758
4759           if (newlen > len)
4760             {
4761               string = (char *) xrealloc (string, newlen);
4762               len = newlen;
4763             }
4764           strcpy (string, fullname);
4765           strcat (string, ":'");
4766           strcat (string, SYMBOL_LINKAGE_NAME (p->symbol));
4767           strcat (string, "'");
4768           break_command (string, from_tty);
4769           print_symbol_info (FUNCTIONS_DOMAIN,
4770                              p->symbol,
4771                              p->block,
4772                              symtab_to_filename_for_display (symtab));
4773         }
4774       else
4775         {
4776           int newlen = (strlen (MSYMBOL_LINKAGE_NAME (p->msymbol.minsym)) + 3);
4777
4778           if (newlen > len)
4779             {
4780               string = (char *) xrealloc (string, newlen);
4781               len = newlen;
4782             }
4783           strcpy (string, "'");
4784           strcat (string, MSYMBOL_LINKAGE_NAME (p->msymbol.minsym));
4785           strcat (string, "'");
4786
4787           break_command (string, from_tty);
4788           printf_filtered ("<function, no debug info> %s;\n",
4789                            MSYMBOL_PRINT_NAME (p->msymbol.minsym));
4790         }
4791     }
4792
4793   do_cleanups (old_chain);
4794 }
4795 \f
4796
4797 /* Evaluate if NAME matches SYM_TEXT and SYM_TEXT_LEN.
4798
4799    Either sym_text[sym_text_len] != '(' and then we search for any
4800    symbol starting with SYM_TEXT text.
4801
4802    Otherwise sym_text[sym_text_len] == '(' and then we require symbol name to
4803    be terminated at that point.  Partial symbol tables do not have parameters
4804    information.  */
4805
4806 static int
4807 compare_symbol_name (const char *name, const char *sym_text, int sym_text_len)
4808 {
4809   int (*ncmp) (const char *, const char *, size_t);
4810
4811   ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
4812
4813   if (ncmp (name, sym_text, sym_text_len) != 0)
4814     return 0;
4815
4816   if (sym_text[sym_text_len] == '(')
4817     {
4818       /* User searches for `name(someth...'.  Require NAME to be terminated.
4819          Normally psymtabs and gdbindex have no parameter types so '\0' will be
4820          present but accept even parameters presence.  In this case this
4821          function is in fact strcmp_iw but whitespace skipping is not supported
4822          for tab completion.  */
4823
4824       if (name[sym_text_len] != '\0' && name[sym_text_len] != '(')
4825         return 0;
4826     }
4827
4828   return 1;
4829 }
4830
4831 /* Free any memory associated with a completion list.  */
4832
4833 static void
4834 free_completion_list (VEC (char_ptr) **list_ptr)
4835 {
4836   int i;
4837   char *p;
4838
4839   for (i = 0; VEC_iterate (char_ptr, *list_ptr, i, p); ++i)
4840     xfree (p);
4841   VEC_free (char_ptr, *list_ptr);
4842 }
4843
4844 /* Callback for make_cleanup.  */
4845
4846 static void
4847 do_free_completion_list (void *list)
4848 {
4849   free_completion_list ((VEC (char_ptr) **) list);
4850 }
4851
4852 /* Helper routine for make_symbol_completion_list.  */
4853
4854 static VEC (char_ptr) *return_val;
4855
4856 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
4857       completion_list_add_name \
4858         (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
4859
4860 #define MCOMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
4861       completion_list_add_name \
4862         (MSYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
4863
4864 /* Tracker for how many unique completions have been generated.  Used
4865    to terminate completion list generation early if the list has grown
4866    to a size so large as to be useless.  This helps avoid GDB seeming
4867    to lock up in the event the user requests to complete on something
4868    vague that necessitates the time consuming expansion of many symbol
4869    tables.  */
4870
4871 static completion_tracker_t completion_tracker;
4872
4873 /*  Test to see if the symbol specified by SYMNAME (which is already
4874    demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
4875    characters.  If so, add it to the current completion list.  */
4876
4877 static void
4878 completion_list_add_name (const char *symname,
4879                           const char *sym_text, int sym_text_len,
4880                           const char *text, const char *word)
4881 {
4882   /* Clip symbols that cannot match.  */
4883   if (!compare_symbol_name (symname, sym_text, sym_text_len))
4884     return;
4885
4886   /* We have a match for a completion, so add SYMNAME to the current list
4887      of matches.  Note that the name is moved to freshly malloc'd space.  */
4888
4889   {
4890     char *newobj;
4891     enum maybe_add_completion_enum add_status;
4892
4893     if (word == sym_text)
4894       {
4895         newobj = (char *) xmalloc (strlen (symname) + 5);
4896         strcpy (newobj, symname);
4897       }
4898     else if (word > sym_text)
4899       {
4900         /* Return some portion of symname.  */
4901         newobj = (char *) xmalloc (strlen (symname) + 5);
4902         strcpy (newobj, symname + (word - sym_text));
4903       }
4904     else
4905       {
4906         /* Return some of SYM_TEXT plus symname.  */
4907         newobj = (char *) xmalloc (strlen (symname) + (sym_text - word) + 5);
4908         strncpy (newobj, word, sym_text - word);
4909         newobj[sym_text - word] = '\0';
4910         strcat (newobj, symname);
4911       }
4912
4913     add_status = maybe_add_completion (completion_tracker, newobj);
4914
4915     switch (add_status)
4916       {
4917       case MAYBE_ADD_COMPLETION_OK:
4918         VEC_safe_push (char_ptr, return_val, newobj);
4919         break;
4920       case MAYBE_ADD_COMPLETION_OK_MAX_REACHED:
4921         VEC_safe_push (char_ptr, return_val, newobj);
4922         throw_max_completions_reached_error ();
4923       case MAYBE_ADD_COMPLETION_MAX_REACHED:
4924         xfree (newobj);
4925         throw_max_completions_reached_error ();
4926       case MAYBE_ADD_COMPLETION_DUPLICATE:
4927         xfree (newobj);
4928         break;
4929       }
4930   }
4931 }
4932
4933 /* ObjC: In case we are completing on a selector, look as the msymbol
4934    again and feed all the selectors into the mill.  */
4935
4936 static void
4937 completion_list_objc_symbol (struct minimal_symbol *msymbol,
4938                              const char *sym_text, int sym_text_len,
4939                              const char *text, const char *word)
4940 {
4941   static char *tmp = NULL;
4942   static unsigned int tmplen = 0;
4943
4944   const char *method, *category, *selector;
4945   char *tmp2 = NULL;
4946
4947   method = MSYMBOL_NATURAL_NAME (msymbol);
4948
4949   /* Is it a method?  */
4950   if ((method[0] != '-') && (method[0] != '+'))
4951     return;
4952
4953   if (sym_text[0] == '[')
4954     /* Complete on shortened method method.  */
4955     completion_list_add_name (method + 1, sym_text, sym_text_len, text, word);
4956
4957   while ((strlen (method) + 1) >= tmplen)
4958     {
4959       if (tmplen == 0)
4960         tmplen = 1024;
4961       else
4962         tmplen *= 2;
4963       tmp = (char *) xrealloc (tmp, tmplen);
4964     }
4965   selector = strchr (method, ' ');
4966   if (selector != NULL)
4967     selector++;
4968
4969   category = strchr (method, '(');
4970
4971   if ((category != NULL) && (selector != NULL))
4972     {
4973       memcpy (tmp, method, (category - method));
4974       tmp[category - method] = ' ';
4975       memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
4976       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
4977       if (sym_text[0] == '[')
4978         completion_list_add_name (tmp + 1, sym_text, sym_text_len, text, word);
4979     }
4980
4981   if (selector != NULL)
4982     {
4983       /* Complete on selector only.  */
4984       strcpy (tmp, selector);
4985       tmp2 = strchr (tmp, ']');
4986       if (tmp2 != NULL)
4987         *tmp2 = '\0';
4988
4989       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
4990     }
4991 }
4992
4993 /* Break the non-quoted text based on the characters which are in
4994    symbols.  FIXME: This should probably be language-specific.  */
4995
4996 static const char *
4997 language_search_unquoted_string (const char *text, const char *p)
4998 {
4999   for (; p > text; --p)
5000     {
5001       if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
5002         continue;
5003       else
5004         {
5005           if ((current_language->la_language == language_objc))
5006             {
5007               if (p[-1] == ':')     /* Might be part of a method name.  */
5008                 continue;
5009               else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
5010                 p -= 2;             /* Beginning of a method name.  */
5011               else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
5012                 {                   /* Might be part of a method name.  */
5013                   const char *t = p;
5014
5015                   /* Seeing a ' ' or a '(' is not conclusive evidence
5016                      that we are in the middle of a method name.  However,
5017                      finding "-[" or "+[" should be pretty un-ambiguous.
5018                      Unfortunately we have to find it now to decide.  */
5019
5020                   while (t > text)
5021                     if (isalnum (t[-1]) || t[-1] == '_' ||
5022                         t[-1] == ' '    || t[-1] == ':' ||
5023                         t[-1] == '('    || t[-1] == ')')
5024                       --t;
5025                     else
5026                       break;
5027
5028                   if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
5029                     p = t - 2;      /* Method name detected.  */
5030                   /* Else we leave with p unchanged.  */
5031                 }
5032             }
5033           break;
5034         }
5035     }
5036   return p;
5037 }
5038
5039 static void
5040 completion_list_add_fields (struct symbol *sym, const char *sym_text,
5041                             int sym_text_len, const char *text,
5042                             const char *word)
5043 {
5044   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5045     {
5046       struct type *t = SYMBOL_TYPE (sym);
5047       enum type_code c = TYPE_CODE (t);
5048       int j;
5049
5050       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
5051         for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
5052           if (TYPE_FIELD_NAME (t, j))
5053             completion_list_add_name (TYPE_FIELD_NAME (t, j),
5054                                       sym_text, sym_text_len, text, word);
5055     }
5056 }
5057
5058 /* Add matching symbols from SYMTAB to the current completion list.  */
5059
5060 static void
5061 add_symtab_completions (struct compunit_symtab *cust,
5062                         const char *sym_text, int sym_text_len,
5063                         const char *text, const char *word,
5064                         enum type_code code)
5065 {
5066   struct symbol *sym;
5067   const struct block *b;
5068   struct block_iterator iter;
5069   int i;
5070
5071   if (cust == NULL)
5072     return;
5073
5074   for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
5075     {
5076       QUIT;
5077       b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), i);
5078       ALL_BLOCK_SYMBOLS (b, iter, sym)
5079         {
5080           if (code == TYPE_CODE_UNDEF
5081               || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5082                   && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
5083             COMPLETION_LIST_ADD_SYMBOL (sym,
5084                                         sym_text, sym_text_len,
5085                                         text, word);
5086         }
5087     }
5088 }
5089
5090 static void
5091 default_make_symbol_completion_list_break_on_1 (const char *text,
5092                                                 const char *word,
5093                                                 const char *break_on,
5094                                                 enum type_code code)
5095 {
5096   /* Problem: All of the symbols have to be copied because readline
5097      frees them.  I'm not going to worry about this; hopefully there
5098      won't be that many.  */
5099
5100   struct symbol *sym;
5101   struct compunit_symtab *cust;
5102   struct minimal_symbol *msymbol;
5103   struct objfile *objfile;
5104   const struct block *b;
5105   const struct block *surrounding_static_block, *surrounding_global_block;
5106   struct block_iterator iter;
5107   /* The symbol we are completing on.  Points in same buffer as text.  */
5108   const char *sym_text;
5109   /* Length of sym_text.  */
5110   int sym_text_len;
5111   struct cleanup *cleanups;
5112
5113   /* Now look for the symbol we are supposed to complete on.  */
5114   {
5115     const char *p;
5116     char quote_found;
5117     const char *quote_pos = NULL;
5118
5119     /* First see if this is a quoted string.  */
5120     quote_found = '\0';
5121     for (p = text; *p != '\0'; ++p)
5122       {
5123         if (quote_found != '\0')
5124           {
5125             if (*p == quote_found)
5126               /* Found close quote.  */
5127               quote_found = '\0';
5128             else if (*p == '\\' && p[1] == quote_found)
5129               /* A backslash followed by the quote character
5130                  doesn't end the string.  */
5131               ++p;
5132           }
5133         else if (*p == '\'' || *p == '"')
5134           {
5135             quote_found = *p;
5136             quote_pos = p;
5137           }
5138       }
5139     if (quote_found == '\'')
5140       /* A string within single quotes can be a symbol, so complete on it.  */
5141       sym_text = quote_pos + 1;
5142     else if (quote_found == '"')
5143       /* A double-quoted string is never a symbol, nor does it make sense
5144          to complete it any other way.  */
5145       {
5146         return;
5147       }
5148     else
5149       {
5150         /* It is not a quoted string.  Break it based on the characters
5151            which are in symbols.  */
5152         while (p > text)
5153           {
5154             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
5155                 || p[-1] == ':' || strchr (break_on, p[-1]) != NULL)
5156               --p;
5157             else
5158               break;
5159           }
5160         sym_text = p;
5161       }
5162   }
5163
5164   sym_text_len = strlen (sym_text);
5165
5166   /* Prepare SYM_TEXT_LEN for compare_symbol_name.  */
5167
5168   if (current_language->la_language == language_cplus
5169       || current_language->la_language == language_fortran)
5170     {
5171       /* These languages may have parameters entered by user but they are never
5172          present in the partial symbol tables.  */
5173
5174       const char *cs = (const char *) memchr (sym_text, '(', sym_text_len);
5175
5176       if (cs)
5177         sym_text_len = cs - sym_text;
5178     }
5179   gdb_assert (sym_text[sym_text_len] == '\0' || sym_text[sym_text_len] == '(');
5180
5181   completion_tracker = new_completion_tracker ();
5182   cleanups = make_cleanup_free_completion_tracker (&completion_tracker);
5183
5184   /* At this point scan through the misc symbol vectors and add each
5185      symbol you find to the list.  Eventually we want to ignore
5186      anything that isn't a text symbol (everything else will be
5187      handled by the psymtab code below).  */
5188
5189   if (code == TYPE_CODE_UNDEF)
5190     {
5191       ALL_MSYMBOLS (objfile, msymbol)
5192         {
5193           QUIT;
5194           MCOMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text,
5195                                        word);
5196
5197           completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text,
5198                                        word);
5199         }
5200     }
5201
5202   /* Add completions for all currently loaded symbol tables.  */
5203   ALL_COMPUNITS (objfile, cust)
5204     add_symtab_completions (cust, sym_text, sym_text_len, text, word,
5205                             code);
5206
5207   /* Look through the partial symtabs for all symbols which begin by
5208      matching SYM_TEXT.  Expand all CUs that you find to the list.  */
5209   expand_symtabs_matching (NULL,
5210                            [&] (const char *name) /* symbol matcher */
5211                              {
5212                                return compare_symbol_name (name,
5213                                                            sym_text,
5214                                                            sym_text_len);
5215                              },
5216                            [&] (compunit_symtab *symtab) /* expansion notify */
5217                              {
5218                                add_symtab_completions (symtab,
5219                                                        sym_text, sym_text_len,
5220                                                        text, word, code);
5221                              },
5222                            ALL_DOMAIN);
5223
5224   /* Search upwards from currently selected frame (so that we can
5225      complete on local vars).  Also catch fields of types defined in
5226      this places which match our text string.  Only complete on types
5227      visible from current context.  */
5228
5229   b = get_selected_block (0);
5230   surrounding_static_block = block_static_block (b);
5231   surrounding_global_block = block_global_block (b);
5232   if (surrounding_static_block != NULL)
5233     while (b != surrounding_static_block)
5234       {
5235         QUIT;
5236
5237         ALL_BLOCK_SYMBOLS (b, iter, sym)
5238           {
5239             if (code == TYPE_CODE_UNDEF)
5240               {
5241                 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
5242                                             word);
5243                 completion_list_add_fields (sym, sym_text, sym_text_len, text,
5244                                             word);
5245               }
5246             else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5247                      && TYPE_CODE (SYMBOL_TYPE (sym)) == code)
5248               COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
5249                                           word);
5250           }
5251
5252         /* Stop when we encounter an enclosing function.  Do not stop for
5253            non-inlined functions - the locals of the enclosing function
5254            are in scope for a nested function.  */
5255         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
5256           break;
5257         b = BLOCK_SUPERBLOCK (b);
5258       }
5259
5260   /* Add fields from the file's types; symbols will be added below.  */
5261
5262   if (code == TYPE_CODE_UNDEF)
5263     {
5264       if (surrounding_static_block != NULL)
5265         ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
5266           completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
5267
5268       if (surrounding_global_block != NULL)
5269         ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
5270           completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
5271     }
5272
5273   /* Skip macros if we are completing a struct tag -- arguable but
5274      usually what is expected.  */
5275   if (current_language->la_macro_expansion == macro_expansion_c
5276       && code == TYPE_CODE_UNDEF)
5277     {
5278       struct macro_scope *scope;
5279
5280       /* This adds a macro's name to the current completion list.  */
5281       auto add_macro_name = [&] (const char *macro_name,
5282                                  const macro_definition *,
5283                                  macro_source_file *,
5284                                  int)
5285         {
5286           completion_list_add_name (macro_name,
5287                                     sym_text, sym_text_len,
5288                                     text, word);
5289         };
5290
5291       /* Add any macros visible in the default scope.  Note that this
5292          may yield the occasional wrong result, because an expression
5293          might be evaluated in a scope other than the default.  For
5294          example, if the user types "break file:line if <TAB>", the
5295          resulting expression will be evaluated at "file:line" -- but
5296          at there does not seem to be a way to detect this at
5297          completion time.  */
5298       scope = default_macro_scope ();
5299       if (scope)
5300         {
5301           macro_for_each_in_scope (scope->file, scope->line,
5302                                    add_macro_name);
5303           xfree (scope);
5304         }
5305
5306       /* User-defined macros are always visible.  */
5307       macro_for_each (macro_user_macros, add_macro_name);
5308     }
5309
5310   do_cleanups (cleanups);
5311 }
5312
5313 VEC (char_ptr) *
5314 default_make_symbol_completion_list_break_on (const char *text,
5315                                               const char *word,
5316                                               const char *break_on,
5317                                               enum type_code code)
5318 {
5319   struct cleanup *back_to;
5320
5321   return_val = NULL;
5322   back_to = make_cleanup (do_free_completion_list, &return_val);
5323
5324   TRY
5325     {
5326       default_make_symbol_completion_list_break_on_1 (text, word,
5327                                                       break_on, code);
5328     }
5329   CATCH (except, RETURN_MASK_ERROR)
5330     {
5331       if (except.error != MAX_COMPLETIONS_REACHED_ERROR)
5332         throw_exception (except);
5333     }
5334   END_CATCH
5335
5336   discard_cleanups (back_to);
5337   return return_val;
5338 }
5339
5340 VEC (char_ptr) *
5341 default_make_symbol_completion_list (const char *text, const char *word,
5342                                      enum type_code code)
5343 {
5344   return default_make_symbol_completion_list_break_on (text, word, "", code);
5345 }
5346
5347 /* Return a vector of all symbols (regardless of class) which begin by
5348    matching TEXT.  If the answer is no symbols, then the return value
5349    is NULL.  */
5350
5351 VEC (char_ptr) *
5352 make_symbol_completion_list (const char *text, const char *word)
5353 {
5354   return current_language->la_make_symbol_completion_list (text, word,
5355                                                            TYPE_CODE_UNDEF);
5356 }
5357
5358 /* Like make_symbol_completion_list, but only return STRUCT_DOMAIN
5359    symbols whose type code is CODE.  */
5360
5361 VEC (char_ptr) *
5362 make_symbol_completion_type (const char *text, const char *word,
5363                              enum type_code code)
5364 {
5365   gdb_assert (code == TYPE_CODE_UNION
5366               || code == TYPE_CODE_STRUCT
5367               || code == TYPE_CODE_ENUM);
5368   return current_language->la_make_symbol_completion_list (text, word, code);
5369 }
5370
5371 /* Like make_symbol_completion_list, but suitable for use as a
5372    completion function.  */
5373
5374 VEC (char_ptr) *
5375 make_symbol_completion_list_fn (struct cmd_list_element *ignore,
5376                                 const char *text, const char *word)
5377 {
5378   return make_symbol_completion_list (text, word);
5379 }
5380
5381 /* Like make_symbol_completion_list, but returns a list of symbols
5382    defined in a source file FILE.  */
5383
5384 static VEC (char_ptr) *
5385 make_file_symbol_completion_list_1 (const char *text, const char *word,
5386                                     const char *srcfile)
5387 {
5388   struct symtab *s;
5389   /* The symbol we are completing on.  Points in same buffer as text.  */
5390   const char *sym_text;
5391   /* Length of sym_text.  */
5392   int sym_text_len;
5393
5394   /* Now look for the symbol we are supposed to complete on.
5395      FIXME: This should be language-specific.  */
5396   {
5397     const char *p;
5398     char quote_found;
5399     const char *quote_pos = NULL;
5400
5401     /* First see if this is a quoted string.  */
5402     quote_found = '\0';
5403     for (p = text; *p != '\0'; ++p)
5404       {
5405         if (quote_found != '\0')
5406           {
5407             if (*p == quote_found)
5408               /* Found close quote.  */
5409               quote_found = '\0';
5410             else if (*p == '\\' && p[1] == quote_found)
5411               /* A backslash followed by the quote character
5412                  doesn't end the string.  */
5413               ++p;
5414           }
5415         else if (*p == '\'' || *p == '"')
5416           {
5417             quote_found = *p;
5418             quote_pos = p;
5419           }
5420       }
5421     if (quote_found == '\'')
5422       /* A string within single quotes can be a symbol, so complete on it.  */
5423       sym_text = quote_pos + 1;
5424     else if (quote_found == '"')
5425       /* A double-quoted string is never a symbol, nor does it make sense
5426          to complete it any other way.  */
5427       {
5428         return NULL;
5429       }
5430     else
5431       {
5432         /* Not a quoted string.  */
5433         sym_text = language_search_unquoted_string (text, p);
5434       }
5435   }
5436
5437   sym_text_len = strlen (sym_text);
5438
5439   /* Find the symtab for SRCFILE (this loads it if it was not yet read
5440      in).  */
5441   s = lookup_symtab (srcfile);
5442   if (s == NULL)
5443     {
5444       /* Maybe they typed the file with leading directories, while the
5445          symbol tables record only its basename.  */
5446       const char *tail = lbasename (srcfile);
5447
5448       if (tail > srcfile)
5449         s = lookup_symtab (tail);
5450     }
5451
5452   /* If we have no symtab for that file, return an empty list.  */
5453   if (s == NULL)
5454     return (return_val);
5455
5456   /* Go through this symtab and check the externs and statics for
5457      symbols which match.  */
5458   add_symtab_completions (SYMTAB_COMPUNIT (s),
5459                           sym_text, sym_text_len,
5460                           text, word, TYPE_CODE_UNDEF);
5461
5462   return (return_val);
5463 }
5464
5465 /* Wrapper around make_file_symbol_completion_list_1
5466    to handle MAX_COMPLETIONS_REACHED_ERROR.  */
5467
5468 VEC (char_ptr) *
5469 make_file_symbol_completion_list (const char *text, const char *word,
5470                                   const char *srcfile)
5471 {
5472   struct cleanup *back_to, *cleanups;
5473
5474   completion_tracker = new_completion_tracker ();
5475   cleanups = make_cleanup_free_completion_tracker (&completion_tracker);
5476   return_val = NULL;
5477   back_to = make_cleanup (do_free_completion_list, &return_val);
5478
5479   TRY
5480     {
5481       make_file_symbol_completion_list_1 (text, word, srcfile);
5482     }
5483   CATCH (except, RETURN_MASK_ERROR)
5484     {
5485       if (except.error != MAX_COMPLETIONS_REACHED_ERROR)
5486         throw_exception (except);
5487     }
5488   END_CATCH
5489
5490   discard_cleanups (back_to);
5491   do_cleanups (cleanups);
5492   return return_val;
5493 }
5494
5495 /* A helper function for make_source_files_completion_list.  It adds
5496    another file name to a list of possible completions, growing the
5497    list as necessary.  */
5498
5499 static void
5500 add_filename_to_list (const char *fname, const char *text, const char *word,
5501                       VEC (char_ptr) **list)
5502 {
5503   char *newobj;
5504   size_t fnlen = strlen (fname);
5505
5506   if (word == text)
5507     {
5508       /* Return exactly fname.  */
5509       newobj = (char *) xmalloc (fnlen + 5);
5510       strcpy (newobj, fname);
5511     }
5512   else if (word > text)
5513     {
5514       /* Return some portion of fname.  */
5515       newobj = (char *) xmalloc (fnlen + 5);
5516       strcpy (newobj, fname + (word - text));
5517     }
5518   else
5519     {
5520       /* Return some of TEXT plus fname.  */
5521       newobj = (char *) xmalloc (fnlen + (text - word) + 5);
5522       strncpy (newobj, word, text - word);
5523       newobj[text - word] = '\0';
5524       strcat (newobj, fname);
5525     }
5526   VEC_safe_push (char_ptr, *list, newobj);
5527 }
5528
5529 static int
5530 not_interesting_fname (const char *fname)
5531 {
5532   static const char *illegal_aliens[] = {
5533     "_globals_",        /* inserted by coff_symtab_read */
5534     NULL
5535   };
5536   int i;
5537
5538   for (i = 0; illegal_aliens[i]; i++)
5539     {
5540       if (filename_cmp (fname, illegal_aliens[i]) == 0)
5541         return 1;
5542     }
5543   return 0;
5544 }
5545
5546 /* An object of this type is passed as the user_data argument to
5547    map_partial_symbol_filenames.  */
5548 struct add_partial_filename_data
5549 {
5550   struct filename_seen_cache *filename_seen_cache;
5551   const char *text;
5552   const char *word;
5553   int text_len;
5554   VEC (char_ptr) **list;
5555 };
5556
5557 /* A callback for map_partial_symbol_filenames.  */
5558
5559 static void
5560 maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
5561                                    void *user_data)
5562 {
5563   struct add_partial_filename_data *data
5564     = (struct add_partial_filename_data *) user_data;
5565
5566   if (not_interesting_fname (filename))
5567     return;
5568   if (!filename_seen (data->filename_seen_cache, filename, 1)
5569       && filename_ncmp (filename, data->text, data->text_len) == 0)
5570     {
5571       /* This file matches for a completion; add it to the
5572          current list of matches.  */
5573       add_filename_to_list (filename, data->text, data->word, data->list);
5574     }
5575   else
5576     {
5577       const char *base_name = lbasename (filename);
5578
5579       if (base_name != filename
5580           && !filename_seen (data->filename_seen_cache, base_name, 1)
5581           && filename_ncmp (base_name, data->text, data->text_len) == 0)
5582         add_filename_to_list (base_name, data->text, data->word, data->list);
5583     }
5584 }
5585
5586 /* Return a vector of all source files whose names begin with matching
5587    TEXT.  The file names are looked up in the symbol tables of this
5588    program.  If the answer is no matchess, then the return value is
5589    NULL.  */
5590
5591 VEC (char_ptr) *
5592 make_source_files_completion_list (const char *text, const char *word)
5593 {
5594   struct compunit_symtab *cu;
5595   struct symtab *s;
5596   struct objfile *objfile;
5597   size_t text_len = strlen (text);
5598   VEC (char_ptr) *list = NULL;
5599   const char *base_name;
5600   struct add_partial_filename_data datum;
5601   struct filename_seen_cache *filename_seen_cache;
5602   struct cleanup *back_to, *cache_cleanup;
5603
5604   if (!have_full_symbols () && !have_partial_symbols ())
5605     return list;
5606
5607   back_to = make_cleanup (do_free_completion_list, &list);
5608
5609   filename_seen_cache = create_filename_seen_cache ();
5610   cache_cleanup = make_cleanup (delete_filename_seen_cache,
5611                                 filename_seen_cache);
5612
5613   ALL_FILETABS (objfile, cu, s)
5614     {
5615       if (not_interesting_fname (s->filename))
5616         continue;
5617       if (!filename_seen (filename_seen_cache, s->filename, 1)
5618           && filename_ncmp (s->filename, text, text_len) == 0)
5619         {
5620           /* This file matches for a completion; add it to the current
5621              list of matches.  */
5622           add_filename_to_list (s->filename, text, word, &list);
5623         }
5624       else
5625         {
5626           /* NOTE: We allow the user to type a base name when the
5627              debug info records leading directories, but not the other
5628              way around.  This is what subroutines of breakpoint
5629              command do when they parse file names.  */
5630           base_name = lbasename (s->filename);
5631           if (base_name != s->filename
5632               && !filename_seen (filename_seen_cache, base_name, 1)
5633               && filename_ncmp (base_name, text, text_len) == 0)
5634             add_filename_to_list (base_name, text, word, &list);
5635         }
5636     }
5637
5638   datum.filename_seen_cache = filename_seen_cache;
5639   datum.text = text;
5640   datum.word = word;
5641   datum.text_len = text_len;
5642   datum.list = &list;
5643   map_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
5644                         0 /*need_fullname*/);
5645
5646   do_cleanups (cache_cleanup);
5647   discard_cleanups (back_to);
5648
5649   return list;
5650 }
5651 \f
5652 /* Track MAIN */
5653
5654 /* Return the "main_info" object for the current program space.  If
5655    the object has not yet been created, create it and fill in some
5656    default values.  */
5657
5658 static struct main_info *
5659 get_main_info (void)
5660 {
5661   struct main_info *info
5662     = (struct main_info *) program_space_data (current_program_space,
5663                                                main_progspace_key);
5664
5665   if (info == NULL)
5666     {
5667       /* It may seem strange to store the main name in the progspace
5668          and also in whatever objfile happens to see a main name in
5669          its debug info.  The reason for this is mainly historical:
5670          gdb returned "main" as the name even if no function named
5671          "main" was defined the program; and this approach lets us
5672          keep compatibility.  */
5673       info = XCNEW (struct main_info);
5674       info->language_of_main = language_unknown;
5675       set_program_space_data (current_program_space, main_progspace_key,
5676                               info);
5677     }
5678
5679   return info;
5680 }
5681
5682 /* A cleanup to destroy a struct main_info when a progspace is
5683    destroyed.  */
5684
5685 static void
5686 main_info_cleanup (struct program_space *pspace, void *data)
5687 {
5688   struct main_info *info = (struct main_info *) data;
5689
5690   if (info != NULL)
5691     xfree (info->name_of_main);
5692   xfree (info);
5693 }
5694
5695 static void
5696 set_main_name (const char *name, enum language lang)
5697 {
5698   struct main_info *info = get_main_info ();
5699
5700   if (info->name_of_main != NULL)
5701     {
5702       xfree (info->name_of_main);
5703       info->name_of_main = NULL;
5704       info->language_of_main = language_unknown;
5705     }
5706   if (name != NULL)
5707     {
5708       info->name_of_main = xstrdup (name);
5709       info->language_of_main = lang;
5710     }
5711 }
5712
5713 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
5714    accordingly.  */
5715
5716 static void
5717 find_main_name (void)
5718 {
5719   const char *new_main_name;
5720   struct objfile *objfile;
5721
5722   /* First check the objfiles to see whether a debuginfo reader has
5723      picked up the appropriate main name.  Historically the main name
5724      was found in a more or less random way; this approach instead
5725      relies on the order of objfile creation -- which still isn't
5726      guaranteed to get the correct answer, but is just probably more
5727      accurate.  */
5728   ALL_OBJFILES (objfile)
5729   {
5730     if (objfile->per_bfd->name_of_main != NULL)
5731       {
5732         set_main_name (objfile->per_bfd->name_of_main,
5733                        objfile->per_bfd->language_of_main);
5734         return;
5735       }
5736   }
5737
5738   /* Try to see if the main procedure is in Ada.  */
5739   /* FIXME: brobecker/2005-03-07: Another way of doing this would
5740      be to add a new method in the language vector, and call this
5741      method for each language until one of them returns a non-empty
5742      name.  This would allow us to remove this hard-coded call to
5743      an Ada function.  It is not clear that this is a better approach
5744      at this point, because all methods need to be written in a way
5745      such that false positives never be returned.  For instance, it is
5746      important that a method does not return a wrong name for the main
5747      procedure if the main procedure is actually written in a different
5748      language.  It is easy to guaranty this with Ada, since we use a
5749      special symbol generated only when the main in Ada to find the name
5750      of the main procedure.  It is difficult however to see how this can
5751      be guarantied for languages such as C, for instance.  This suggests
5752      that order of call for these methods becomes important, which means
5753      a more complicated approach.  */
5754   new_main_name = ada_main_name ();
5755   if (new_main_name != NULL)
5756     {
5757       set_main_name (new_main_name, language_ada);
5758       return;
5759     }
5760
5761   new_main_name = d_main_name ();
5762   if (new_main_name != NULL)
5763     {
5764       set_main_name (new_main_name, language_d);
5765       return;
5766     }
5767
5768   new_main_name = go_main_name ();
5769   if (new_main_name != NULL)
5770     {
5771       set_main_name (new_main_name, language_go);
5772       return;
5773     }
5774
5775   new_main_name = pascal_main_name ();
5776   if (new_main_name != NULL)
5777     {
5778       set_main_name (new_main_name, language_pascal);
5779       return;
5780     }
5781
5782   /* The languages above didn't identify the name of the main procedure.
5783      Fallback to "main".  */
5784   set_main_name ("main", language_unknown);
5785 }
5786
5787 char *
5788 main_name (void)
5789 {
5790   struct main_info *info = get_main_info ();
5791
5792   if (info->name_of_main == NULL)
5793     find_main_name ();
5794
5795   return info->name_of_main;
5796 }
5797
5798 /* Return the language of the main function.  If it is not known,
5799    return language_unknown.  */
5800
5801 enum language
5802 main_language (void)
5803 {
5804   struct main_info *info = get_main_info ();
5805
5806   if (info->name_of_main == NULL)
5807     find_main_name ();
5808
5809   return info->language_of_main;
5810 }
5811
5812 /* Handle ``executable_changed'' events for the symtab module.  */
5813
5814 static void
5815 symtab_observer_executable_changed (void)
5816 {
5817   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
5818   set_main_name (NULL, language_unknown);
5819 }
5820
5821 /* Return 1 if the supplied producer string matches the ARM RealView
5822    compiler (armcc).  */
5823
5824 int
5825 producer_is_realview (const char *producer)
5826 {
5827   static const char *const arm_idents[] = {
5828     "ARM C Compiler, ADS",
5829     "Thumb C Compiler, ADS",
5830     "ARM C++ Compiler, ADS",
5831     "Thumb C++ Compiler, ADS",
5832     "ARM/Thumb C/C++ Compiler, RVCT",
5833     "ARM C/C++ Compiler, RVCT"
5834   };
5835   int i;
5836
5837   if (producer == NULL)
5838     return 0;
5839
5840   for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
5841     if (startswith (producer, arm_idents[i]))
5842       return 1;
5843
5844   return 0;
5845 }
5846
5847 \f
5848
5849 /* The next index to hand out in response to a registration request.  */
5850
5851 static int next_aclass_value = LOC_FINAL_VALUE;
5852
5853 /* The maximum number of "aclass" registrations we support.  This is
5854    constant for convenience.  */
5855 #define MAX_SYMBOL_IMPLS (LOC_FINAL_VALUE + 10)
5856
5857 /* The objects representing the various "aclass" values.  The elements
5858    from 0 up to LOC_FINAL_VALUE-1 represent themselves, and subsequent
5859    elements are those registered at gdb initialization time.  */
5860
5861 static struct symbol_impl symbol_impl[MAX_SYMBOL_IMPLS];
5862
5863 /* The globally visible pointer.  This is separate from 'symbol_impl'
5864    so that it can be const.  */
5865
5866 const struct symbol_impl *symbol_impls = &symbol_impl[0];
5867
5868 /* Make sure we saved enough room in struct symbol.  */
5869
5870 gdb_static_assert (MAX_SYMBOL_IMPLS <= (1 << SYMBOL_ACLASS_BITS));
5871
5872 /* Register a computed symbol type.  ACLASS must be LOC_COMPUTED.  OPS
5873    is the ops vector associated with this index.  This returns the new
5874    index, which should be used as the aclass_index field for symbols
5875    of this type.  */
5876
5877 int
5878 register_symbol_computed_impl (enum address_class aclass,
5879                                const struct symbol_computed_ops *ops)
5880 {
5881   int result = next_aclass_value++;
5882
5883   gdb_assert (aclass == LOC_COMPUTED);
5884   gdb_assert (result < MAX_SYMBOL_IMPLS);
5885   symbol_impl[result].aclass = aclass;
5886   symbol_impl[result].ops_computed = ops;
5887
5888   /* Sanity check OPS.  */
5889   gdb_assert (ops != NULL);
5890   gdb_assert (ops->tracepoint_var_ref != NULL);
5891   gdb_assert (ops->describe_location != NULL);
5892   gdb_assert (ops->get_symbol_read_needs != NULL);
5893   gdb_assert (ops->read_variable != NULL);
5894
5895   return result;
5896 }
5897
5898 /* Register a function with frame base type.  ACLASS must be LOC_BLOCK.
5899    OPS is the ops vector associated with this index.  This returns the
5900    new index, which should be used as the aclass_index field for symbols
5901    of this type.  */
5902
5903 int
5904 register_symbol_block_impl (enum address_class aclass,
5905                             const struct symbol_block_ops *ops)
5906 {
5907   int result = next_aclass_value++;
5908
5909   gdb_assert (aclass == LOC_BLOCK);
5910   gdb_assert (result < MAX_SYMBOL_IMPLS);
5911   symbol_impl[result].aclass = aclass;
5912   symbol_impl[result].ops_block = ops;
5913
5914   /* Sanity check OPS.  */
5915   gdb_assert (ops != NULL);
5916   gdb_assert (ops->find_frame_base_location != NULL);
5917
5918   return result;
5919 }
5920
5921 /* Register a register symbol type.  ACLASS must be LOC_REGISTER or
5922    LOC_REGPARM_ADDR.  OPS is the register ops vector associated with
5923    this index.  This returns the new index, which should be used as
5924    the aclass_index field for symbols of this type.  */
5925
5926 int
5927 register_symbol_register_impl (enum address_class aclass,
5928                                const struct symbol_register_ops *ops)
5929 {
5930   int result = next_aclass_value++;
5931
5932   gdb_assert (aclass == LOC_REGISTER || aclass == LOC_REGPARM_ADDR);
5933   gdb_assert (result < MAX_SYMBOL_IMPLS);
5934   symbol_impl[result].aclass = aclass;
5935   symbol_impl[result].ops_register = ops;
5936
5937   return result;
5938 }
5939
5940 /* Initialize elements of 'symbol_impl' for the constants in enum
5941    address_class.  */
5942
5943 static void
5944 initialize_ordinary_address_classes (void)
5945 {
5946   int i;
5947
5948   for (i = 0; i < LOC_FINAL_VALUE; ++i)
5949     symbol_impl[i].aclass = (enum address_class) i;
5950 }
5951
5952 \f
5953
5954 /* Helper function to initialize the fields of an objfile-owned symbol.
5955    It assumed that *SYM is already all zeroes.  */
5956
5957 static void
5958 initialize_objfile_symbol_1 (struct symbol *sym)
5959 {
5960   SYMBOL_OBJFILE_OWNED (sym) = 1;
5961   SYMBOL_SECTION (sym) = -1;
5962 }
5963
5964 /* Initialize the symbol SYM, and mark it as being owned by an objfile.  */
5965
5966 void
5967 initialize_objfile_symbol (struct symbol *sym)
5968 {
5969   memset (sym, 0, sizeof (*sym));
5970   initialize_objfile_symbol_1 (sym);
5971 }
5972
5973 /* Allocate and initialize a new 'struct symbol' on OBJFILE's
5974    obstack.  */
5975
5976 struct symbol *
5977 allocate_symbol (struct objfile *objfile)
5978 {
5979   struct symbol *result;
5980
5981   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
5982   initialize_objfile_symbol_1 (result);
5983
5984   return result;
5985 }
5986
5987 /* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
5988    obstack.  */
5989
5990 struct template_symbol *
5991 allocate_template_symbol (struct objfile *objfile)
5992 {
5993   struct template_symbol *result;
5994
5995   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct template_symbol);
5996   initialize_objfile_symbol_1 (&result->base);
5997
5998   return result;
5999 }
6000
6001 /* See symtab.h.  */
6002
6003 struct objfile *
6004 symbol_objfile (const struct symbol *symbol)
6005 {
6006   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6007   return SYMTAB_OBJFILE (symbol->owner.symtab);
6008 }
6009
6010 /* See symtab.h.  */
6011
6012 struct gdbarch *
6013 symbol_arch (const struct symbol *symbol)
6014 {
6015   if (!SYMBOL_OBJFILE_OWNED (symbol))
6016     return symbol->owner.arch;
6017   return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
6018 }
6019
6020 /* See symtab.h.  */
6021
6022 struct symtab *
6023 symbol_symtab (const struct symbol *symbol)
6024 {
6025   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6026   return symbol->owner.symtab;
6027 }
6028
6029 /* See symtab.h.  */
6030
6031 void
6032 symbol_set_symtab (struct symbol *symbol, struct symtab *symtab)
6033 {
6034   gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6035   symbol->owner.symtab = symtab;
6036 }
6037
6038 \f
6039
6040 void
6041 _initialize_symtab (void)
6042 {
6043   initialize_ordinary_address_classes ();
6044
6045   main_progspace_key
6046     = register_program_space_data_with_cleanup (NULL, main_info_cleanup);
6047
6048   symbol_cache_key
6049     = register_program_space_data_with_cleanup (NULL, symbol_cache_cleanup);
6050
6051   add_info ("variables", variables_info, _("\
6052 All global and static variable names, or those matching REGEXP."));
6053   if (dbx_commands)
6054     add_com ("whereis", class_info, variables_info, _("\
6055 All global and static variable names, or those matching REGEXP."));
6056
6057   add_info ("functions", functions_info,
6058             _("All function names, or those matching REGEXP."));
6059
6060   /* FIXME:  This command has at least the following problems:
6061      1.  It prints builtin types (in a very strange and confusing fashion).
6062      2.  It doesn't print right, e.g. with
6063      typedef struct foo *FOO
6064      type_print prints "FOO" when we want to make it (in this situation)
6065      print "struct foo *".
6066      I also think "ptype" or "whatis" is more likely to be useful (but if
6067      there is much disagreement "info types" can be fixed).  */
6068   add_info ("types", types_info,
6069             _("All type names, or those matching REGEXP."));
6070
6071   add_info ("sources", sources_info,
6072             _("Source files in the program."));
6073
6074   add_com ("rbreak", class_breakpoint, rbreak_command,
6075            _("Set a breakpoint for all functions matching REGEXP."));
6076
6077   add_setshow_enum_cmd ("multiple-symbols", no_class,
6078                         multiple_symbols_modes, &multiple_symbols_mode,
6079                         _("\
6080 Set the debugger behavior when more than one symbol are possible matches\n\
6081 in an expression."), _("\
6082 Show how the debugger handles ambiguities in expressions."), _("\
6083 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
6084                         NULL, NULL, &setlist, &showlist);
6085
6086   add_setshow_boolean_cmd ("basenames-may-differ", class_obscure,
6087                            &basenames_may_differ, _("\
6088 Set whether a source file may have multiple base names."), _("\
6089 Show whether a source file may have multiple base names."), _("\
6090 (A \"base name\" is the name of a file with the directory part removed.\n\
6091 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
6092 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
6093 before comparing them.  Canonicalization is an expensive operation,\n\
6094 but it allows the same file be known by more than one base name.\n\
6095 If not set (the default), all source files are assumed to have just\n\
6096 one base name, and gdb will do file name comparisons more efficiently."),
6097                            NULL, NULL,
6098                            &setlist, &showlist);
6099
6100   add_setshow_zuinteger_cmd ("symtab-create", no_class, &symtab_create_debug,
6101                              _("Set debugging of symbol table creation."),
6102                              _("Show debugging of symbol table creation."), _("\
6103 When enabled (non-zero), debugging messages are printed when building\n\
6104 symbol tables.  A value of 1 (one) normally provides enough information.\n\
6105 A value greater than 1 provides more verbose information."),
6106                              NULL,
6107                              NULL,
6108                              &setdebuglist, &showdebuglist);
6109
6110   add_setshow_zuinteger_cmd ("symbol-lookup", no_class, &symbol_lookup_debug,
6111                            _("\
6112 Set debugging of symbol lookup."), _("\
6113 Show debugging of symbol lookup."), _("\
6114 When enabled (non-zero), symbol lookups are logged."),
6115                            NULL, NULL,
6116                            &setdebuglist, &showdebuglist);
6117
6118   add_setshow_zuinteger_cmd ("symbol-cache-size", no_class,
6119                              &new_symbol_cache_size,
6120                              _("Set the size of the symbol cache."),
6121                              _("Show the size of the symbol cache."), _("\
6122 The size of the symbol cache.\n\
6123 If zero then the symbol cache is disabled."),
6124                              set_symbol_cache_size_handler, NULL,
6125                              &maintenance_set_cmdlist,
6126                              &maintenance_show_cmdlist);
6127
6128   add_cmd ("symbol-cache", class_maintenance, maintenance_print_symbol_cache,
6129            _("Dump the symbol cache for each program space."),
6130            &maintenanceprintlist);
6131
6132   add_cmd ("symbol-cache-statistics", class_maintenance,
6133            maintenance_print_symbol_cache_statistics,
6134            _("Print symbol cache statistics for each program space."),
6135            &maintenanceprintlist);
6136
6137   add_cmd ("flush-symbol-cache", class_maintenance,
6138            maintenance_flush_symbol_cache,
6139            _("Flush the symbol cache for each program space."),
6140            &maintenancelist);
6141
6142   observer_attach_executable_changed (symtab_observer_executable_changed);
6143   observer_attach_new_objfile (symtab_new_objfile_observer);
6144   observer_attach_free_objfile (symtab_free_objfile_observer);
6145 }