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