* symtab.c (filename_seen_cache): Delete members "tab_alloc_size",
[external/binutils.git] / gdb / symtab.c
1 /* Symbol table lookup for the GNU debugger, GDB.
2
3    Copyright (C) 1986-2004, 2007-2012 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 "call-cmds.h"
31 #include "gdb_regex.h"
32 #include "expression.h"
33 #include "language.h"
34 #include "demangle.h"
35 #include "inferior.h"
36 #include "source.h"
37 #include "filenames.h"          /* for FILENAME_CMP */
38 #include "objc-lang.h"
39 #include "d-lang.h"
40 #include "ada-lang.h"
41 #include "go-lang.h"
42 #include "p-lang.h"
43 #include "addrmap.h"
44
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 "gdb_string.h"
54 #include "gdb_stat.h"
55 #include <ctype.h>
56 #include "cp-abi.h"
57 #include "cp-support.h"
58 #include "observer.h"
59 #include "gdb_assert.h"
60 #include "solist.h"
61 #include "macrotab.h"
62 #include "macroscope.h"
63
64 #include "psymtab.h"
65
66 /* Prototypes for local functions */
67
68 static void rbreak_command (char *, int);
69
70 static void types_info (char *, int);
71
72 static void functions_info (char *, int);
73
74 static void variables_info (char *, int);
75
76 static void sources_info (char *, int);
77
78 static int find_line_common (struct linetable *, int, int *, int);
79
80 static struct symbol *lookup_symbol_aux (const char *name,
81                                          const struct block *block,
82                                          const domain_enum domain,
83                                          enum language language,
84                                          int *is_a_field_of_this);
85
86 static
87 struct symbol *lookup_symbol_aux_local (const char *name,
88                                         const struct block *block,
89                                         const domain_enum domain,
90                                         enum language language);
91
92 static
93 struct symbol *lookup_symbol_aux_symtabs (int block_index,
94                                           const char *name,
95                                           const domain_enum domain);
96
97 static
98 struct symbol *lookup_symbol_aux_quick (struct objfile *objfile,
99                                         int block_index,
100                                         const char *name,
101                                         const domain_enum domain);
102
103 static void print_msymbol_info (struct minimal_symbol *);
104
105 void _initialize_symtab (void);
106
107 /* */
108
109 /* When non-zero, print debugging messages related to symtab creation.  */
110 int symtab_create_debug = 0;
111
112 /* Non-zero if a file may be known by two different basenames.
113    This is the uncommon case, and significantly slows down gdb.
114    Default set to "off" to not slow down the common case.  */
115 int basenames_may_differ = 0;
116
117 /* Allow the user to configure the debugger behavior with respect
118    to multiple-choice menus when more than one symbol matches during
119    a symbol lookup.  */
120
121 const char multiple_symbols_ask[] = "ask";
122 const char multiple_symbols_all[] = "all";
123 const char multiple_symbols_cancel[] = "cancel";
124 static const char *const multiple_symbols_modes[] =
125 {
126   multiple_symbols_ask,
127   multiple_symbols_all,
128   multiple_symbols_cancel,
129   NULL
130 };
131 static const char *multiple_symbols_mode = multiple_symbols_all;
132
133 /* Read-only accessor to AUTO_SELECT_MODE.  */
134
135 const char *
136 multiple_symbols_select_mode (void)
137 {
138   return multiple_symbols_mode;
139 }
140
141 /* Block in which the most recently searched-for symbol was found.
142    Might be better to make this a parameter to lookup_symbol and
143    value_of_this.  */
144
145 const struct block *block_found;
146
147 /* See whether FILENAME matches SEARCH_NAME using the rule that we
148    advertise to the user.  (The manual's description of linespecs
149    describes what we advertise).  SEARCH_LEN is the length of
150    SEARCH_NAME.  We assume that SEARCH_NAME is a relative path.
151    Returns true if they match, false otherwise.  */
152
153 int
154 compare_filenames_for_search (const char *filename, const char *search_name,
155                               int search_len)
156 {
157   int len = strlen (filename);
158
159   if (len < search_len)
160     return 0;
161
162   /* The tail of FILENAME must match.  */
163   if (FILENAME_CMP (filename + len - search_len, search_name) != 0)
164     return 0;
165
166   /* Either the names must completely match, or the character
167      preceding the trailing SEARCH_NAME segment of FILENAME must be a
168      directory separator.  */
169   return (len == search_len
170           || IS_DIR_SEPARATOR (filename[len - search_len - 1])
171           || (HAS_DRIVE_SPEC (filename)
172               && STRIP_DRIVE_SPEC (filename) == &filename[len - search_len]));
173 }
174
175 /* Check for a symtab of a specific name by searching some symtabs.
176    This is a helper function for callbacks of iterate_over_symtabs.
177
178    The return value, NAME, FULL_PATH, REAL_PATH, CALLBACK, and DATA
179    are identical to the `map_symtabs_matching_filename' method of
180    quick_symbol_functions.
181
182    FIRST and AFTER_LAST indicate the range of symtabs to search.
183    AFTER_LAST is one past the last symtab to search; NULL means to
184    search until the end of the list.  */
185
186 int
187 iterate_over_some_symtabs (const char *name,
188                            const char *full_path,
189                            const char *real_path,
190                            int (*callback) (struct symtab *symtab,
191                                             void *data),
192                            void *data,
193                            struct symtab *first,
194                            struct symtab *after_last)
195 {
196   struct symtab *s = NULL;
197   const char* base_name = lbasename (name);
198   int name_len = strlen (name);
199   int is_abs = IS_ABSOLUTE_PATH (name);
200
201   for (s = first; s != NULL && s != after_last; s = s->next)
202     {
203       /* Exact match is always ok.  */
204       if (FILENAME_CMP (name, s->filename) == 0)
205         {
206           if (callback (s, data))
207             return 1;
208         }
209
210       if (!is_abs && compare_filenames_for_search (s->filename, name, name_len))
211         {
212           if (callback (s, data))
213             return 1;
214         }
215
216     /* Before we invoke realpath, which can get expensive when many
217        files are involved, do a quick comparison of the basenames.  */
218     if (! basenames_may_differ
219         && FILENAME_CMP (base_name, lbasename (s->filename)) != 0)
220       continue;
221
222     /* If the user gave us an absolute path, try to find the file in
223        this symtab and use its absolute path.  */
224
225     if (full_path != NULL)
226       {
227         const char *fp = symtab_to_fullname (s);
228
229         if (fp != NULL && FILENAME_CMP (full_path, fp) == 0)
230           {
231             if (callback (s, data))
232               return 1;
233           }
234
235         if (fp != NULL && !is_abs && compare_filenames_for_search (fp, name,
236                                                                    name_len))
237           {
238             if (callback (s, data))
239               return 1;
240           }
241       }
242
243     if (real_path != NULL)
244       {
245         char *fullname = symtab_to_fullname (s);
246
247         if (fullname != NULL)
248           {
249             char *rp = gdb_realpath (fullname);
250
251             make_cleanup (xfree, rp);
252             if (FILENAME_CMP (real_path, rp) == 0)
253               {
254                 if (callback (s, data))
255                   return 1;
256               }
257
258             if (!is_abs && compare_filenames_for_search (rp, name, name_len))
259               {
260                 if (callback (s, data))
261                   return 1;
262               }
263           }
264       }
265     }
266
267   return 0;
268 }
269
270 /* Check for a symtab of a specific name; first in symtabs, then in
271    psymtabs.  *If* there is no '/' in the name, a match after a '/'
272    in the symtab filename will also work.
273
274    Calls CALLBACK with each symtab that is found and with the supplied
275    DATA.  If CALLBACK returns true, the search stops.  */
276
277 void
278 iterate_over_symtabs (const char *name,
279                       int (*callback) (struct symtab *symtab,
280                                        void *data),
281                       void *data)
282 {
283   struct symtab *s = NULL;
284   struct objfile *objfile;
285   char *real_path = NULL;
286   char *full_path = NULL;
287   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
288
289   /* Here we are interested in canonicalizing an absolute path, not
290      absolutizing a relative path.  */
291   if (IS_ABSOLUTE_PATH (name))
292     {
293       full_path = xfullpath (name);
294       make_cleanup (xfree, full_path);
295       real_path = gdb_realpath (name);
296       make_cleanup (xfree, real_path);
297     }
298
299   ALL_OBJFILES (objfile)
300   {
301     if (iterate_over_some_symtabs (name, full_path, real_path, callback, data,
302                                    objfile->symtabs, NULL))
303       {
304         do_cleanups (cleanups);
305         return;
306       }
307   }
308
309   /* Same search rules as above apply here, but now we look thru the
310      psymtabs.  */
311
312   ALL_OBJFILES (objfile)
313   {
314     if (objfile->sf
315         && objfile->sf->qf->map_symtabs_matching_filename (objfile,
316                                                            name,
317                                                            full_path,
318                                                            real_path,
319                                                            callback,
320                                                            data))
321       {
322         do_cleanups (cleanups);
323         return;
324       }
325   }
326
327   do_cleanups (cleanups);
328 }
329
330 /* The callback function used by lookup_symtab.  */
331
332 static int
333 lookup_symtab_callback (struct symtab *symtab, void *data)
334 {
335   struct symtab **result_ptr = data;
336
337   *result_ptr = symtab;
338   return 1;
339 }
340
341 /* A wrapper for iterate_over_symtabs that returns the first matching
342    symtab, or NULL.  */
343
344 struct symtab *
345 lookup_symtab (const char *name)
346 {
347   struct symtab *result = NULL;
348
349   iterate_over_symtabs (name, lookup_symtab_callback, &result);
350   return result;
351 }
352
353 \f
354 /* Mangle a GDB method stub type.  This actually reassembles the pieces of the
355    full method name, which consist of the class name (from T), the unadorned
356    method name from METHOD_ID, and the signature for the specific overload,
357    specified by SIGNATURE_ID.  Note that this function is g++ specific.  */
358
359 char *
360 gdb_mangle_name (struct type *type, int method_id, int signature_id)
361 {
362   int mangled_name_len;
363   char *mangled_name;
364   struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
365   struct fn_field *method = &f[signature_id];
366   const char *field_name = TYPE_FN_FIELDLIST_NAME (type, method_id);
367   const char *physname = TYPE_FN_FIELD_PHYSNAME (f, signature_id);
368   const char *newname = type_name_no_tag (type);
369
370   /* Does the form of physname indicate that it is the full mangled name
371      of a constructor (not just the args)?  */
372   int is_full_physname_constructor;
373
374   int is_constructor;
375   int is_destructor = is_destructor_name (physname);
376   /* Need a new type prefix.  */
377   char *const_prefix = method->is_const ? "C" : "";
378   char *volatile_prefix = method->is_volatile ? "V" : "";
379   char buf[20];
380   int len = (newname == NULL ? 0 : strlen (newname));
381
382   /* Nothing to do if physname already contains a fully mangled v3 abi name
383      or an operator name.  */
384   if ((physname[0] == '_' && physname[1] == 'Z')
385       || is_operator_name (field_name))
386     return xstrdup (physname);
387
388   is_full_physname_constructor = is_constructor_name (physname);
389
390   is_constructor = is_full_physname_constructor 
391     || (newname && strcmp (field_name, newname) == 0);
392
393   if (!is_destructor)
394     is_destructor = (strncmp (physname, "__dt", 4) == 0);
395
396   if (is_destructor || is_full_physname_constructor)
397     {
398       mangled_name = (char *) xmalloc (strlen (physname) + 1);
399       strcpy (mangled_name, physname);
400       return mangled_name;
401     }
402
403   if (len == 0)
404     {
405       sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
406     }
407   else if (physname[0] == 't' || physname[0] == 'Q')
408     {
409       /* The physname for template and qualified methods already includes
410          the class name.  */
411       sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
412       newname = NULL;
413       len = 0;
414     }
415   else
416     {
417       sprintf (buf, "__%s%s%d", const_prefix, volatile_prefix, len);
418     }
419   mangled_name_len = ((is_constructor ? 0 : strlen (field_name))
420                       + strlen (buf) + len + strlen (physname) + 1);
421
422   mangled_name = (char *) xmalloc (mangled_name_len);
423   if (is_constructor)
424     mangled_name[0] = '\0';
425   else
426     strcpy (mangled_name, field_name);
427
428   strcat (mangled_name, buf);
429   /* If the class doesn't have a name, i.e. newname NULL, then we just
430      mangle it using 0 for the length of the class.  Thus it gets mangled
431      as something starting with `::' rather than `classname::'.  */
432   if (newname != NULL)
433     strcat (mangled_name, newname);
434
435   strcat (mangled_name, physname);
436   return (mangled_name);
437 }
438
439 /* Initialize the cplus_specific structure.  'cplus_specific' should
440    only be allocated for use with cplus symbols.  */
441
442 static void
443 symbol_init_cplus_specific (struct general_symbol_info *gsymbol,
444                            struct objfile *objfile)
445 {
446   /* A language_specific structure should not have been previously
447      initialized.  */
448   gdb_assert (gsymbol->language_specific.cplus_specific == NULL);
449   gdb_assert (objfile != NULL);
450
451   gsymbol->language_specific.cplus_specific =
452       OBSTACK_ZALLOC (&objfile->objfile_obstack, struct cplus_specific);
453 }
454
455 /* Set the demangled name of GSYMBOL to NAME.  NAME must be already
456    correctly allocated.  For C++ symbols a cplus_specific struct is
457    allocated so OBJFILE must not be NULL.  If this is a non C++ symbol
458    OBJFILE can be NULL.  */
459
460 void
461 symbol_set_demangled_name (struct general_symbol_info *gsymbol,
462                            char *name,
463                            struct objfile *objfile)
464 {
465   if (gsymbol->language == language_cplus)
466     {
467       if (gsymbol->language_specific.cplus_specific == NULL)
468         symbol_init_cplus_specific (gsymbol, objfile);
469
470       gsymbol->language_specific.cplus_specific->demangled_name = name;
471     }
472   else
473     gsymbol->language_specific.mangled_lang.demangled_name = name;
474 }
475
476 /* Return the demangled name of GSYMBOL.  */
477
478 const char *
479 symbol_get_demangled_name (const struct general_symbol_info *gsymbol)
480 {
481   if (gsymbol->language == language_cplus)
482     {
483       if (gsymbol->language_specific.cplus_specific != NULL)
484         return gsymbol->language_specific.cplus_specific->demangled_name;
485       else
486         return NULL;
487     }
488   else
489     return gsymbol->language_specific.mangled_lang.demangled_name;
490 }
491
492 \f
493 /* Initialize the language dependent portion of a symbol
494    depending upon the language for the symbol.  */
495
496 void
497 symbol_set_language (struct general_symbol_info *gsymbol,
498                      enum language language)
499 {
500   gsymbol->language = language;
501   if (gsymbol->language == language_d
502       || gsymbol->language == language_go
503       || gsymbol->language == language_java
504       || gsymbol->language == language_objc
505       || gsymbol->language == language_fortran)
506     {
507       symbol_set_demangled_name (gsymbol, NULL, NULL);
508     }
509   else if (gsymbol->language == language_cplus)
510     gsymbol->language_specific.cplus_specific = NULL;
511   else
512     {
513       memset (&gsymbol->language_specific, 0,
514               sizeof (gsymbol->language_specific));
515     }
516 }
517
518 /* Functions to initialize a symbol's mangled name.  */
519
520 /* Objects of this type are stored in the demangled name hash table.  */
521 struct demangled_name_entry
522 {
523   char *mangled;
524   char demangled[1];
525 };
526
527 /* Hash function for the demangled name hash.  */
528
529 static hashval_t
530 hash_demangled_name_entry (const void *data)
531 {
532   const struct demangled_name_entry *e = data;
533
534   return htab_hash_string (e->mangled);
535 }
536
537 /* Equality function for the demangled name hash.  */
538
539 static int
540 eq_demangled_name_entry (const void *a, const void *b)
541 {
542   const struct demangled_name_entry *da = a;
543   const struct demangled_name_entry *db = b;
544
545   return strcmp (da->mangled, db->mangled) == 0;
546 }
547
548 /* Create the hash table used for demangled names.  Each hash entry is
549    a pair of strings; one for the mangled name and one for the demangled
550    name.  The entry is hashed via just the mangled name.  */
551
552 static void
553 create_demangled_names_hash (struct objfile *objfile)
554 {
555   /* Choose 256 as the starting size of the hash table, somewhat arbitrarily.
556      The hash table code will round this up to the next prime number.
557      Choosing a much larger table size wastes memory, and saves only about
558      1% in symbol reading.  */
559
560   objfile->demangled_names_hash = htab_create_alloc
561     (256, hash_demangled_name_entry, eq_demangled_name_entry,
562      NULL, xcalloc, xfree);
563 }
564
565 /* Try to determine the demangled name for a symbol, based on the
566    language of that symbol.  If the language is set to language_auto,
567    it will attempt to find any demangling algorithm that works and
568    then set the language appropriately.  The returned name is allocated
569    by the demangler and should be xfree'd.  */
570
571 static char *
572 symbol_find_demangled_name (struct general_symbol_info *gsymbol,
573                             const char *mangled)
574 {
575   char *demangled = NULL;
576
577   if (gsymbol->language == language_unknown)
578     gsymbol->language = language_auto;
579
580   if (gsymbol->language == language_objc
581       || gsymbol->language == language_auto)
582     {
583       demangled =
584         objc_demangle (mangled, 0);
585       if (demangled != NULL)
586         {
587           gsymbol->language = language_objc;
588           return demangled;
589         }
590     }
591   if (gsymbol->language == language_cplus
592       || gsymbol->language == language_auto)
593     {
594       demangled =
595         cplus_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
596       if (demangled != NULL)
597         {
598           gsymbol->language = language_cplus;
599           return demangled;
600         }
601     }
602   if (gsymbol->language == language_java)
603     {
604       demangled =
605         cplus_demangle (mangled,
606                         DMGL_PARAMS | DMGL_ANSI | DMGL_JAVA);
607       if (demangled != NULL)
608         {
609           gsymbol->language = language_java;
610           return demangled;
611         }
612     }
613   if (gsymbol->language == language_d
614       || gsymbol->language == language_auto)
615     {
616       demangled = d_demangle(mangled, 0);
617       if (demangled != NULL)
618         {
619           gsymbol->language = language_d;
620           return demangled;
621         }
622     }
623   /* FIXME(dje): Continually adding languages here is clumsy.
624      Better to just call la_demangle if !auto, and if auto then call
625      a utility routine that tries successive languages in turn and reports
626      which one it finds.  I realize the la_demangle options may be different
627      for different languages but there's already a FIXME for that.  */
628   if (gsymbol->language == language_go
629       || gsymbol->language == language_auto)
630     {
631       demangled = go_demangle (mangled, 0);
632       if (demangled != NULL)
633         {
634           gsymbol->language = language_go;
635           return demangled;
636         }
637     }
638
639   /* We could support `gsymbol->language == language_fortran' here to provide
640      module namespaces also for inferiors with only minimal symbol table (ELF
641      symbols).  Just the mangling standard is not standardized across compilers
642      and there is no DW_AT_producer available for inferiors with only the ELF
643      symbols to check the mangling kind.  */
644   return NULL;
645 }
646
647 /* Set both the mangled and demangled (if any) names for GSYMBOL based
648    on LINKAGE_NAME and LEN.  Ordinarily, NAME is copied onto the
649    objfile's obstack; but if COPY_NAME is 0 and if NAME is
650    NUL-terminated, then this function assumes that NAME is already
651    correctly saved (either permanently or with a lifetime tied to the
652    objfile), and it will not be copied.
653
654    The hash table corresponding to OBJFILE is used, and the memory
655    comes from that objfile's objfile_obstack.  LINKAGE_NAME is copied,
656    so the pointer can be discarded after calling this function.  */
657
658 /* We have to be careful when dealing with Java names: when we run
659    into a Java minimal symbol, we don't know it's a Java symbol, so it
660    gets demangled as a C++ name.  This is unfortunate, but there's not
661    much we can do about it: but when demangling partial symbols and
662    regular symbols, we'd better not reuse the wrong demangled name.
663    (See PR gdb/1039.)  We solve this by putting a distinctive prefix
664    on Java names when storing them in the hash table.  */
665
666 /* FIXME: carlton/2003-03-13: This is an unfortunate situation.  I
667    don't mind the Java prefix so much: different languages have
668    different demangling requirements, so it's only natural that we
669    need to keep language data around in our demangling cache.  But
670    it's not good that the minimal symbol has the wrong demangled name.
671    Unfortunately, I can't think of any easy solution to that
672    problem.  */
673
674 #define JAVA_PREFIX "##JAVA$$"
675 #define JAVA_PREFIX_LEN 8
676
677 void
678 symbol_set_names (struct general_symbol_info *gsymbol,
679                   const char *linkage_name, int len, int copy_name,
680                   struct objfile *objfile)
681 {
682   struct demangled_name_entry **slot;
683   /* A 0-terminated copy of the linkage name.  */
684   const char *linkage_name_copy;
685   /* A copy of the linkage name that might have a special Java prefix
686      added to it, for use when looking names up in the hash table.  */
687   const char *lookup_name;
688   /* The length of lookup_name.  */
689   int lookup_len;
690   struct demangled_name_entry entry;
691
692   if (gsymbol->language == language_ada)
693     {
694       /* In Ada, we do the symbol lookups using the mangled name, so
695          we can save some space by not storing the demangled name.
696
697          As a side note, we have also observed some overlap between
698          the C++ mangling and Ada mangling, similarly to what has
699          been observed with Java.  Because we don't store the demangled
700          name with the symbol, we don't need to use the same trick
701          as Java.  */
702       if (!copy_name)
703         gsymbol->name = linkage_name;
704       else
705         {
706           char *name = obstack_alloc (&objfile->objfile_obstack, len + 1);
707
708           memcpy (name, linkage_name, len);
709           name[len] = '\0';
710           gsymbol->name = name;
711         }
712       symbol_set_demangled_name (gsymbol, NULL, NULL);
713
714       return;
715     }
716
717   if (objfile->demangled_names_hash == NULL)
718     create_demangled_names_hash (objfile);
719
720   /* The stabs reader generally provides names that are not
721      NUL-terminated; most of the other readers don't do this, so we
722      can just use the given copy, unless we're in the Java case.  */
723   if (gsymbol->language == language_java)
724     {
725       char *alloc_name;
726
727       lookup_len = len + JAVA_PREFIX_LEN;
728       alloc_name = alloca (lookup_len + 1);
729       memcpy (alloc_name, JAVA_PREFIX, JAVA_PREFIX_LEN);
730       memcpy (alloc_name + JAVA_PREFIX_LEN, linkage_name, len);
731       alloc_name[lookup_len] = '\0';
732
733       lookup_name = alloc_name;
734       linkage_name_copy = alloc_name + JAVA_PREFIX_LEN;
735     }
736   else if (linkage_name[len] != '\0')
737     {
738       char *alloc_name;
739
740       lookup_len = len;
741       alloc_name = alloca (lookup_len + 1);
742       memcpy (alloc_name, linkage_name, len);
743       alloc_name[lookup_len] = '\0';
744
745       lookup_name = alloc_name;
746       linkage_name_copy = alloc_name;
747     }
748   else
749     {
750       lookup_len = len;
751       lookup_name = linkage_name;
752       linkage_name_copy = linkage_name;
753     }
754
755   entry.mangled = (char *) lookup_name;
756   slot = ((struct demangled_name_entry **)
757           htab_find_slot (objfile->demangled_names_hash,
758                           &entry, INSERT));
759
760   /* If this name is not in the hash table, add it.  */
761   if (*slot == NULL
762       /* A C version of the symbol may have already snuck into the table.
763          This happens to, e.g., main.init (__go_init_main).  Cope.  */
764       || (gsymbol->language == language_go
765           && (*slot)->demangled[0] == '\0'))
766     {
767       char *demangled_name = symbol_find_demangled_name (gsymbol,
768                                                          linkage_name_copy);
769       int demangled_len = demangled_name ? strlen (demangled_name) : 0;
770
771       /* Suppose we have demangled_name==NULL, copy_name==0, and
772          lookup_name==linkage_name.  In this case, we already have the
773          mangled name saved, and we don't have a demangled name.  So,
774          you might think we could save a little space by not recording
775          this in the hash table at all.
776          
777          It turns out that it is actually important to still save such
778          an entry in the hash table, because storing this name gives
779          us better bcache hit rates for partial symbols.  */
780       if (!copy_name && lookup_name == linkage_name)
781         {
782           *slot = obstack_alloc (&objfile->objfile_obstack,
783                                  offsetof (struct demangled_name_entry,
784                                            demangled)
785                                  + demangled_len + 1);
786           (*slot)->mangled = (char *) lookup_name;
787         }
788       else
789         {
790           /* If we must copy the mangled name, put it directly after
791              the demangled name so we can have a single
792              allocation.  */
793           *slot = obstack_alloc (&objfile->objfile_obstack,
794                                  offsetof (struct demangled_name_entry,
795                                            demangled)
796                                  + lookup_len + demangled_len + 2);
797           (*slot)->mangled = &((*slot)->demangled[demangled_len + 1]);
798           strcpy ((*slot)->mangled, lookup_name);
799         }
800
801       if (demangled_name != NULL)
802         {
803           strcpy ((*slot)->demangled, demangled_name);
804           xfree (demangled_name);
805         }
806       else
807         (*slot)->demangled[0] = '\0';
808     }
809
810   gsymbol->name = (*slot)->mangled + lookup_len - len;
811   if ((*slot)->demangled[0] != '\0')
812     symbol_set_demangled_name (gsymbol, (*slot)->demangled, objfile);
813   else
814     symbol_set_demangled_name (gsymbol, NULL, objfile);
815 }
816
817 /* Return the source code name of a symbol.  In languages where
818    demangling is necessary, this is the demangled name.  */
819
820 const char *
821 symbol_natural_name (const struct general_symbol_info *gsymbol)
822 {
823   switch (gsymbol->language)
824     {
825     case language_cplus:
826     case language_d:
827     case language_go:
828     case language_java:
829     case language_objc:
830     case language_fortran:
831       if (symbol_get_demangled_name (gsymbol) != NULL)
832         return symbol_get_demangled_name (gsymbol);
833       break;
834     case language_ada:
835       if (symbol_get_demangled_name (gsymbol) != NULL)
836         return symbol_get_demangled_name (gsymbol);
837       else
838         return ada_decode_symbol (gsymbol);
839       break;
840     default:
841       break;
842     }
843   return gsymbol->name;
844 }
845
846 /* Return the demangled name for a symbol based on the language for
847    that symbol.  If no demangled name exists, return NULL.  */
848
849 const char *
850 symbol_demangled_name (const struct general_symbol_info *gsymbol)
851 {
852   const char *dem_name = NULL;
853
854   switch (gsymbol->language)
855     {
856     case language_cplus:
857     case language_d:
858     case language_go:
859     case language_java:
860     case language_objc:
861     case language_fortran:
862       dem_name = symbol_get_demangled_name (gsymbol);
863       break;
864     case language_ada:
865       dem_name = symbol_get_demangled_name (gsymbol);
866       if (dem_name == NULL)
867         dem_name = ada_decode_symbol (gsymbol);
868       break;
869     default:
870       break;
871     }
872   return dem_name;
873 }
874
875 /* Return the search name of a symbol---generally the demangled or
876    linkage name of the symbol, depending on how it will be searched for.
877    If there is no distinct demangled name, then returns the same value
878    (same pointer) as SYMBOL_LINKAGE_NAME.  */
879
880 const char *
881 symbol_search_name (const struct general_symbol_info *gsymbol)
882 {
883   if (gsymbol->language == language_ada)
884     return gsymbol->name;
885   else
886     return symbol_natural_name (gsymbol);
887 }
888
889 /* Initialize the structure fields to zero values.  */
890
891 void
892 init_sal (struct symtab_and_line *sal)
893 {
894   sal->pspace = NULL;
895   sal->symtab = 0;
896   sal->section = 0;
897   sal->line = 0;
898   sal->pc = 0;
899   sal->end = 0;
900   sal->explicit_pc = 0;
901   sal->explicit_line = 0;
902   sal->probe = NULL;
903 }
904 \f
905
906 /* Return 1 if the two sections are the same, or if they could
907    plausibly be copies of each other, one in an original object
908    file and another in a separated debug file.  */
909
910 int
911 matching_obj_sections (struct obj_section *obj_first,
912                        struct obj_section *obj_second)
913 {
914   asection *first = obj_first? obj_first->the_bfd_section : NULL;
915   asection *second = obj_second? obj_second->the_bfd_section : NULL;
916   struct objfile *obj;
917
918   /* If they're the same section, then they match.  */
919   if (first == second)
920     return 1;
921
922   /* If either is NULL, give up.  */
923   if (first == NULL || second == NULL)
924     return 0;
925
926   /* This doesn't apply to absolute symbols.  */
927   if (first->owner == NULL || second->owner == NULL)
928     return 0;
929
930   /* If they're in the same object file, they must be different sections.  */
931   if (first->owner == second->owner)
932     return 0;
933
934   /* Check whether the two sections are potentially corresponding.  They must
935      have the same size, address, and name.  We can't compare section indexes,
936      which would be more reliable, because some sections may have been
937      stripped.  */
938   if (bfd_get_section_size (first) != bfd_get_section_size (second))
939     return 0;
940
941   /* In-memory addresses may start at a different offset, relativize them.  */
942   if (bfd_get_section_vma (first->owner, first)
943       - bfd_get_start_address (first->owner)
944       != bfd_get_section_vma (second->owner, second)
945          - bfd_get_start_address (second->owner))
946     return 0;
947
948   if (bfd_get_section_name (first->owner, first) == NULL
949       || bfd_get_section_name (second->owner, second) == NULL
950       || strcmp (bfd_get_section_name (first->owner, first),
951                  bfd_get_section_name (second->owner, second)) != 0)
952     return 0;
953
954   /* Otherwise check that they are in corresponding objfiles.  */
955
956   ALL_OBJFILES (obj)
957     if (obj->obfd == first->owner)
958       break;
959   gdb_assert (obj != NULL);
960
961   if (obj->separate_debug_objfile != NULL
962       && obj->separate_debug_objfile->obfd == second->owner)
963     return 1;
964   if (obj->separate_debug_objfile_backlink != NULL
965       && obj->separate_debug_objfile_backlink->obfd == second->owner)
966     return 1;
967
968   return 0;
969 }
970
971 struct symtab *
972 find_pc_sect_symtab_via_partial (CORE_ADDR pc, struct obj_section *section)
973 {
974   struct objfile *objfile;
975   struct minimal_symbol *msymbol;
976
977   /* If we know that this is not a text address, return failure.  This is
978      necessary because we loop based on texthigh and textlow, which do
979      not include the data ranges.  */
980   msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
981   if (msymbol
982       && (MSYMBOL_TYPE (msymbol) == mst_data
983           || MSYMBOL_TYPE (msymbol) == mst_bss
984           || MSYMBOL_TYPE (msymbol) == mst_abs
985           || MSYMBOL_TYPE (msymbol) == mst_file_data
986           || MSYMBOL_TYPE (msymbol) == mst_file_bss))
987     return NULL;
988
989   ALL_OBJFILES (objfile)
990   {
991     struct symtab *result = NULL;
992
993     if (objfile->sf)
994       result = objfile->sf->qf->find_pc_sect_symtab (objfile, msymbol,
995                                                      pc, section, 0);
996     if (result)
997       return result;
998   }
999
1000   return NULL;
1001 }
1002 \f
1003 /* Debug symbols usually don't have section information.  We need to dig that
1004    out of the minimal symbols and stash that in the debug symbol.  */
1005
1006 void
1007 fixup_section (struct general_symbol_info *ginfo,
1008                CORE_ADDR addr, struct objfile *objfile)
1009 {
1010   struct minimal_symbol *msym;
1011
1012   /* First, check whether a minimal symbol with the same name exists
1013      and points to the same address.  The address check is required
1014      e.g. on PowerPC64, where the minimal symbol for a function will
1015      point to the function descriptor, while the debug symbol will
1016      point to the actual function code.  */
1017   msym = lookup_minimal_symbol_by_pc_name (addr, ginfo->name, objfile);
1018   if (msym)
1019     {
1020       ginfo->obj_section = SYMBOL_OBJ_SECTION (msym);
1021       ginfo->section = SYMBOL_SECTION (msym);
1022     }
1023   else
1024     {
1025       /* Static, function-local variables do appear in the linker
1026          (minimal) symbols, but are frequently given names that won't
1027          be found via lookup_minimal_symbol().  E.g., it has been
1028          observed in frv-uclinux (ELF) executables that a static,
1029          function-local variable named "foo" might appear in the
1030          linker symbols as "foo.6" or "foo.3".  Thus, there is no
1031          point in attempting to extend the lookup-by-name mechanism to
1032          handle this case due to the fact that there can be multiple
1033          names.
1034
1035          So, instead, search the section table when lookup by name has
1036          failed.  The ``addr'' and ``endaddr'' fields may have already
1037          been relocated.  If so, the relocation offset (i.e. the
1038          ANOFFSET value) needs to be subtracted from these values when
1039          performing the comparison.  We unconditionally subtract it,
1040          because, when no relocation has been performed, the ANOFFSET
1041          value will simply be zero.
1042
1043          The address of the symbol whose section we're fixing up HAS
1044          NOT BEEN adjusted (relocated) yet.  It can't have been since
1045          the section isn't yet known and knowing the section is
1046          necessary in order to add the correct relocation value.  In
1047          other words, we wouldn't even be in this function (attempting
1048          to compute the section) if it were already known.
1049
1050          Note that it is possible to search the minimal symbols
1051          (subtracting the relocation value if necessary) to find the
1052          matching minimal symbol, but this is overkill and much less
1053          efficient.  It is not necessary to find the matching minimal
1054          symbol, only its section.
1055
1056          Note that this technique (of doing a section table search)
1057          can fail when unrelocated section addresses overlap.  For
1058          this reason, we still attempt a lookup by name prior to doing
1059          a search of the section table.  */
1060
1061       struct obj_section *s;
1062
1063       ALL_OBJFILE_OSECTIONS (objfile, s)
1064         {
1065           int idx = s->the_bfd_section->index;
1066           CORE_ADDR offset = ANOFFSET (objfile->section_offsets, idx);
1067
1068           if (obj_section_addr (s) - offset <= addr
1069               && addr < obj_section_endaddr (s) - offset)
1070             {
1071               ginfo->obj_section = s;
1072               ginfo->section = idx;
1073               return;
1074             }
1075         }
1076     }
1077 }
1078
1079 struct symbol *
1080 fixup_symbol_section (struct symbol *sym, struct objfile *objfile)
1081 {
1082   CORE_ADDR addr;
1083
1084   if (!sym)
1085     return NULL;
1086
1087   if (SYMBOL_OBJ_SECTION (sym))
1088     return sym;
1089
1090   /* We either have an OBJFILE, or we can get at it from the sym's
1091      symtab.  Anything else is a bug.  */
1092   gdb_assert (objfile || SYMBOL_SYMTAB (sym));
1093
1094   if (objfile == NULL)
1095     objfile = SYMBOL_SYMTAB (sym)->objfile;
1096
1097   /* We should have an objfile by now.  */
1098   gdb_assert (objfile);
1099
1100   switch (SYMBOL_CLASS (sym))
1101     {
1102     case LOC_STATIC:
1103     case LOC_LABEL:
1104       addr = SYMBOL_VALUE_ADDRESS (sym);
1105       break;
1106     case LOC_BLOCK:
1107       addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1108       break;
1109
1110     default:
1111       /* Nothing else will be listed in the minsyms -- no use looking
1112          it up.  */
1113       return sym;
1114     }
1115
1116   fixup_section (&sym->ginfo, addr, objfile);
1117
1118   return sym;
1119 }
1120
1121 /* Compute the demangled form of NAME as used by the various symbol
1122    lookup functions.  The result is stored in *RESULT_NAME.  Returns a
1123    cleanup which can be used to clean up the result.
1124
1125    For Ada, this function just sets *RESULT_NAME to NAME, unmodified.
1126    Normally, Ada symbol lookups are performed using the encoded name
1127    rather than the demangled name, and so it might seem to make sense
1128    for this function to return an encoded version of NAME.
1129    Unfortunately, we cannot do this, because this function is used in
1130    circumstances where it is not appropriate to try to encode NAME.
1131    For instance, when displaying the frame info, we demangle the name
1132    of each parameter, and then perform a symbol lookup inside our
1133    function using that demangled name.  In Ada, certain functions
1134    have internally-generated parameters whose name contain uppercase
1135    characters.  Encoding those name would result in those uppercase
1136    characters to become lowercase, and thus cause the symbol lookup
1137    to fail.  */
1138
1139 struct cleanup *
1140 demangle_for_lookup (const char *name, enum language lang,
1141                      const char **result_name)
1142 {
1143   char *demangled_name = NULL;
1144   const char *modified_name = NULL;
1145   struct cleanup *cleanup = make_cleanup (null_cleanup, 0);
1146
1147   modified_name = name;
1148
1149   /* If we are using C++, D, Go, or Java, demangle the name before doing a
1150      lookup, so we can always binary search.  */
1151   if (lang == language_cplus)
1152     {
1153       demangled_name = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS);
1154       if (demangled_name)
1155         {
1156           modified_name = demangled_name;
1157           make_cleanup (xfree, demangled_name);
1158         }
1159       else
1160         {
1161           /* If we were given a non-mangled name, canonicalize it
1162              according to the language (so far only for C++).  */
1163           demangled_name = cp_canonicalize_string (name);
1164           if (demangled_name)
1165             {
1166               modified_name = demangled_name;
1167               make_cleanup (xfree, demangled_name);
1168             }
1169         }
1170     }
1171   else if (lang == language_java)
1172     {
1173       demangled_name = cplus_demangle (name,
1174                                        DMGL_ANSI | DMGL_PARAMS | DMGL_JAVA);
1175       if (demangled_name)
1176         {
1177           modified_name = demangled_name;
1178           make_cleanup (xfree, demangled_name);
1179         }
1180     }
1181   else if (lang == language_d)
1182     {
1183       demangled_name = d_demangle (name, 0);
1184       if (demangled_name)
1185         {
1186           modified_name = demangled_name;
1187           make_cleanup (xfree, demangled_name);
1188         }
1189     }
1190   else if (lang == language_go)
1191     {
1192       demangled_name = go_demangle (name, 0);
1193       if (demangled_name)
1194         {
1195           modified_name = demangled_name;
1196           make_cleanup (xfree, demangled_name);
1197         }
1198     }
1199
1200   *result_name = modified_name;
1201   return cleanup;
1202 }
1203
1204 /* Find the definition for a specified symbol name NAME
1205    in domain DOMAIN, visible from lexical block BLOCK.
1206    Returns the struct symbol pointer, or zero if no symbol is found.
1207    C++: if IS_A_FIELD_OF_THIS is nonzero on entry, check to see if
1208    NAME is a field of the current implied argument `this'.  If so set
1209    *IS_A_FIELD_OF_THIS to 1, otherwise set it to zero.
1210    BLOCK_FOUND is set to the block in which NAME is found (in the case of
1211    a field of `this', value_of_this sets BLOCK_FOUND to the proper value.)  */
1212
1213 /* This function (or rather its subordinates) have a bunch of loops and
1214    it would seem to be attractive to put in some QUIT's (though I'm not really
1215    sure whether it can run long enough to be really important).  But there
1216    are a few calls for which it would appear to be bad news to quit
1217    out of here: e.g., find_proc_desc in alpha-mdebug-tdep.c.  (Note
1218    that there is C++ code below which can error(), but that probably
1219    doesn't affect these calls since they are looking for a known
1220    variable and thus can probably assume it will never hit the C++
1221    code).  */
1222
1223 struct symbol *
1224 lookup_symbol_in_language (const char *name, const struct block *block,
1225                            const domain_enum domain, enum language lang,
1226                            int *is_a_field_of_this)
1227 {
1228   const char *modified_name;
1229   struct symbol *returnval;
1230   struct cleanup *cleanup = demangle_for_lookup (name, lang, &modified_name);
1231
1232   returnval = lookup_symbol_aux (modified_name, block, domain, lang,
1233                                  is_a_field_of_this);
1234   do_cleanups (cleanup);
1235
1236   return returnval;
1237 }
1238
1239 /* Behave like lookup_symbol_in_language, but performed with the
1240    current language.  */
1241
1242 struct symbol *
1243 lookup_symbol (const char *name, const struct block *block,
1244                domain_enum domain, int *is_a_field_of_this)
1245 {
1246   return lookup_symbol_in_language (name, block, domain,
1247                                     current_language->la_language,
1248                                     is_a_field_of_this);
1249 }
1250
1251 /* Look up the `this' symbol for LANG in BLOCK.  Return the symbol if
1252    found, or NULL if not found.  */
1253
1254 struct symbol *
1255 lookup_language_this (const struct language_defn *lang,
1256                       const struct block *block)
1257 {
1258   if (lang->la_name_of_this == NULL || block == NULL)
1259     return NULL;
1260
1261   while (block)
1262     {
1263       struct symbol *sym;
1264
1265       sym = lookup_block_symbol (block, lang->la_name_of_this, VAR_DOMAIN);
1266       if (sym != NULL)
1267         {
1268           block_found = block;
1269           return sym;
1270         }
1271       if (BLOCK_FUNCTION (block))
1272         break;
1273       block = BLOCK_SUPERBLOCK (block);
1274     }
1275
1276   return NULL;
1277 }
1278
1279 /* Behave like lookup_symbol except that NAME is the natural name
1280    (e.g., demangled name) of the symbol that we're looking for.  */
1281
1282 static struct symbol *
1283 lookup_symbol_aux (const char *name, const struct block *block,
1284                    const domain_enum domain, enum language language,
1285                    int *is_a_field_of_this)
1286 {
1287   struct symbol *sym;
1288   const struct language_defn *langdef;
1289
1290   /* Make sure we do something sensible with is_a_field_of_this, since
1291      the callers that set this parameter to some non-null value will
1292      certainly use it later and expect it to be either 0 or 1.
1293      If we don't set it, the contents of is_a_field_of_this are
1294      undefined.  */
1295   if (is_a_field_of_this != NULL)
1296     *is_a_field_of_this = 0;
1297
1298   /* Search specified block and its superiors.  Don't search
1299      STATIC_BLOCK or GLOBAL_BLOCK.  */
1300
1301   sym = lookup_symbol_aux_local (name, block, domain, language);
1302   if (sym != NULL)
1303     return sym;
1304
1305   /* If requested to do so by the caller and if appropriate for LANGUAGE,
1306      check to see if NAME is a field of `this'.  */
1307
1308   langdef = language_def (language);
1309
1310   if (is_a_field_of_this != NULL)
1311     {
1312       struct symbol *sym = lookup_language_this (langdef, block);
1313
1314       if (sym)
1315         {
1316           struct type *t = sym->type;
1317
1318           /* I'm not really sure that type of this can ever
1319              be typedefed; just be safe.  */
1320           CHECK_TYPEDEF (t);
1321           if (TYPE_CODE (t) == TYPE_CODE_PTR
1322               || TYPE_CODE (t) == TYPE_CODE_REF)
1323             t = TYPE_TARGET_TYPE (t);
1324
1325           if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1326               && TYPE_CODE (t) != TYPE_CODE_UNION)
1327             error (_("Internal error: `%s' is not an aggregate"),
1328                    langdef->la_name_of_this);
1329
1330           if (check_field (t, name))
1331             {
1332               *is_a_field_of_this = 1;
1333               return NULL;
1334             }
1335         }
1336     }
1337
1338   /* Now do whatever is appropriate for LANGUAGE to look
1339      up static and global variables.  */
1340
1341   sym = langdef->la_lookup_symbol_nonlocal (name, block, domain);
1342   if (sym != NULL)
1343     return sym;
1344
1345   /* Now search all static file-level symbols.  Not strictly correct,
1346      but more useful than an error.  */
1347
1348   return lookup_static_symbol_aux (name, domain);
1349 }
1350
1351 /* Search all static file-level symbols for NAME from DOMAIN.  Do the symtabs
1352    first, then check the psymtabs.  If a psymtab indicates the existence of the
1353    desired name as a file-level static, then do psymtab-to-symtab conversion on
1354    the fly and return the found symbol.  */
1355
1356 struct symbol *
1357 lookup_static_symbol_aux (const char *name, const domain_enum domain)
1358 {
1359   struct objfile *objfile;
1360   struct symbol *sym;
1361
1362   sym = lookup_symbol_aux_symtabs (STATIC_BLOCK, name, domain);
1363   if (sym != NULL)
1364     return sym;
1365
1366   ALL_OBJFILES (objfile)
1367   {
1368     sym = lookup_symbol_aux_quick (objfile, STATIC_BLOCK, name, domain);
1369     if (sym != NULL)
1370       return sym;
1371   }
1372
1373   return NULL;
1374 }
1375
1376 /* Check to see if the symbol is defined in BLOCK or its superiors.
1377    Don't search STATIC_BLOCK or GLOBAL_BLOCK.  */
1378
1379 static struct symbol *
1380 lookup_symbol_aux_local (const char *name, const struct block *block,
1381                          const domain_enum domain,
1382                          enum language language)
1383 {
1384   struct symbol *sym;
1385   const struct block *static_block = block_static_block (block);
1386   const char *scope = block_scope (block);
1387   
1388   /* Check if either no block is specified or it's a global block.  */
1389
1390   if (static_block == NULL)
1391     return NULL;
1392
1393   while (block != static_block)
1394     {
1395       sym = lookup_symbol_aux_block (name, block, domain);
1396       if (sym != NULL)
1397         return sym;
1398
1399       if (language == language_cplus || language == language_fortran)
1400         {
1401           sym = cp_lookup_symbol_imports_or_template (scope, name, block,
1402                                                       domain);
1403           if (sym != NULL)
1404             return sym;
1405         }
1406
1407       if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block))
1408         break;
1409       block = BLOCK_SUPERBLOCK (block);
1410     }
1411
1412   /* We've reached the edge of the function without finding a result.  */
1413
1414   return NULL;
1415 }
1416
1417 /* Look up OBJFILE to BLOCK.  */
1418
1419 struct objfile *
1420 lookup_objfile_from_block (const struct block *block)
1421 {
1422   struct objfile *obj;
1423   struct symtab *s;
1424
1425   if (block == NULL)
1426     return NULL;
1427
1428   block = block_global_block (block);
1429   /* Go through SYMTABS.  */
1430   ALL_SYMTABS (obj, s)
1431     if (block == BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK))
1432       {
1433         if (obj->separate_debug_objfile_backlink)
1434           obj = obj->separate_debug_objfile_backlink;
1435
1436         return obj;
1437       }
1438
1439   return NULL;
1440 }
1441
1442 /* Look up a symbol in a block; if found, fixup the symbol, and set
1443    block_found appropriately.  */
1444
1445 struct symbol *
1446 lookup_symbol_aux_block (const char *name, const struct block *block,
1447                          const domain_enum domain)
1448 {
1449   struct symbol *sym;
1450
1451   sym = lookup_block_symbol (block, name, domain);
1452   if (sym)
1453     {
1454       block_found = block;
1455       return fixup_symbol_section (sym, NULL);
1456     }
1457
1458   return NULL;
1459 }
1460
1461 /* Check all global symbols in OBJFILE in symtabs and
1462    psymtabs.  */
1463
1464 struct symbol *
1465 lookup_global_symbol_from_objfile (const struct objfile *main_objfile,
1466                                    const char *name,
1467                                    const domain_enum domain)
1468 {
1469   const struct objfile *objfile;
1470   struct symbol *sym;
1471   struct blockvector *bv;
1472   const struct block *block;
1473   struct symtab *s;
1474
1475   for (objfile = main_objfile;
1476        objfile;
1477        objfile = objfile_separate_debug_iterate (main_objfile, objfile))
1478     {
1479       /* Go through symtabs.  */
1480       ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
1481         {
1482           bv = BLOCKVECTOR (s);
1483           block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1484           sym = lookup_block_symbol (block, name, domain);
1485           if (sym)
1486             {
1487               block_found = block;
1488               return fixup_symbol_section (sym, (struct objfile *)objfile);
1489             }
1490         }
1491
1492       sym = lookup_symbol_aux_quick ((struct objfile *) objfile, GLOBAL_BLOCK,
1493                                      name, domain);
1494       if (sym)
1495         return sym;
1496     }
1497
1498   return NULL;
1499 }
1500
1501 /* Check to see if the symbol is defined in one of the OBJFILE's
1502    symtabs.  BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
1503    depending on whether or not we want to search global symbols or
1504    static symbols.  */
1505
1506 static struct symbol *
1507 lookup_symbol_aux_objfile (struct objfile *objfile, int block_index,
1508                            const char *name, const domain_enum domain)
1509 {
1510   struct symbol *sym = NULL;
1511   struct blockvector *bv;
1512   const struct block *block;
1513   struct symtab *s;
1514
1515   if (objfile->sf)
1516     objfile->sf->qf->pre_expand_symtabs_matching (objfile, block_index,
1517                                                   name, domain);
1518
1519   ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
1520     {
1521       bv = BLOCKVECTOR (s);
1522       block = BLOCKVECTOR_BLOCK (bv, block_index);
1523       sym = lookup_block_symbol (block, name, domain);
1524       if (sym)
1525         {
1526           block_found = block;
1527           return fixup_symbol_section (sym, objfile);
1528         }
1529     }
1530
1531   return NULL;
1532 }
1533
1534 /* Same as lookup_symbol_aux_objfile, except that it searches all
1535    objfiles.  Return the first match found.  */
1536
1537 static struct symbol *
1538 lookup_symbol_aux_symtabs (int block_index, const char *name,
1539                            const domain_enum domain)
1540 {
1541   struct symbol *sym;
1542   struct objfile *objfile;
1543
1544   ALL_OBJFILES (objfile)
1545   {
1546     sym = lookup_symbol_aux_objfile (objfile, block_index, name, domain);
1547     if (sym)
1548       return sym;
1549   }
1550
1551   return NULL;
1552 }
1553
1554 /* Wrapper around lookup_symbol_aux_objfile for search_symbols.
1555    Look up LINKAGE_NAME in DOMAIN in the global and static blocks of OBJFILE
1556    and all related objfiles.  */
1557
1558 static struct symbol *
1559 lookup_symbol_in_objfile_from_linkage_name (struct objfile *objfile,
1560                                             const char *linkage_name,
1561                                             domain_enum domain)
1562 {
1563   enum language lang = current_language->la_language;
1564   const char *modified_name;
1565   struct cleanup *cleanup = demangle_for_lookup (linkage_name, lang,
1566                                                  &modified_name);
1567   struct objfile *main_objfile, *cur_objfile;
1568
1569   if (objfile->separate_debug_objfile_backlink)
1570     main_objfile = objfile->separate_debug_objfile_backlink;
1571   else
1572     main_objfile = objfile;
1573
1574   for (cur_objfile = main_objfile;
1575        cur_objfile;
1576        cur_objfile = objfile_separate_debug_iterate (main_objfile, cur_objfile))
1577     {
1578       struct symbol *sym;
1579
1580       sym = lookup_symbol_aux_objfile (cur_objfile, GLOBAL_BLOCK,
1581                                        modified_name, domain);
1582       if (sym == NULL)
1583         sym = lookup_symbol_aux_objfile (cur_objfile, STATIC_BLOCK,
1584                                          modified_name, domain);
1585       if (sym != NULL)
1586         {
1587           do_cleanups (cleanup);
1588           return sym;
1589         }
1590     }
1591
1592   do_cleanups (cleanup);
1593   return NULL;
1594 }
1595
1596 /* A helper function for lookup_symbol_aux that interfaces with the
1597    "quick" symbol table functions.  */
1598
1599 static struct symbol *
1600 lookup_symbol_aux_quick (struct objfile *objfile, int kind,
1601                          const char *name, const domain_enum domain)
1602 {
1603   struct symtab *symtab;
1604   struct blockvector *bv;
1605   const struct block *block;
1606   struct symbol *sym;
1607
1608   if (!objfile->sf)
1609     return NULL;
1610   symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, domain);
1611   if (!symtab)
1612     return NULL;
1613
1614   bv = BLOCKVECTOR (symtab);
1615   block = BLOCKVECTOR_BLOCK (bv, kind);
1616   sym = lookup_block_symbol (block, name, domain);
1617   if (!sym)
1618     {
1619       /* This shouldn't be necessary, but as a last resort try
1620          looking in the statics even though the psymtab claimed
1621          the symbol was global, or vice-versa.  It's possible
1622          that the psymtab gets it wrong in some cases.  */
1623
1624       /* FIXME: carlton/2002-09-30: Should we really do that?
1625          If that happens, isn't it likely to be a GDB error, in
1626          which case we should fix the GDB error rather than
1627          silently dealing with it here?  So I'd vote for
1628          removing the check for the symbol in the other
1629          block.  */
1630       block = BLOCKVECTOR_BLOCK (bv,
1631                                  kind == GLOBAL_BLOCK ?
1632                                  STATIC_BLOCK : GLOBAL_BLOCK);
1633       sym = lookup_block_symbol (block, name, domain);
1634       if (!sym)
1635         error (_("\
1636 Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n\
1637 %s may be an inlined function, or may be a template function\n\
1638 (if a template, try specifying an instantiation: %s<type>)."),
1639                kind == GLOBAL_BLOCK ? "global" : "static",
1640                name, symtab->filename, name, name);
1641     }
1642   return fixup_symbol_section (sym, objfile);
1643 }
1644
1645 /* A default version of lookup_symbol_nonlocal for use by languages
1646    that can't think of anything better to do.  This implements the C
1647    lookup rules.  */
1648
1649 struct symbol *
1650 basic_lookup_symbol_nonlocal (const char *name,
1651                               const struct block *block,
1652                               const domain_enum domain)
1653 {
1654   struct symbol *sym;
1655
1656   /* NOTE: carlton/2003-05-19: The comments below were written when
1657      this (or what turned into this) was part of lookup_symbol_aux;
1658      I'm much less worried about these questions now, since these
1659      decisions have turned out well, but I leave these comments here
1660      for posterity.  */
1661
1662   /* NOTE: carlton/2002-12-05: There is a question as to whether or
1663      not it would be appropriate to search the current global block
1664      here as well.  (That's what this code used to do before the
1665      is_a_field_of_this check was moved up.)  On the one hand, it's
1666      redundant with the lookup_symbol_aux_symtabs search that happens
1667      next.  On the other hand, if decode_line_1 is passed an argument
1668      like filename:var, then the user presumably wants 'var' to be
1669      searched for in filename.  On the third hand, there shouldn't be
1670      multiple global variables all of which are named 'var', and it's
1671      not like decode_line_1 has ever restricted its search to only
1672      global variables in a single filename.  All in all, only
1673      searching the static block here seems best: it's correct and it's
1674      cleanest.  */
1675
1676   /* NOTE: carlton/2002-12-05: There's also a possible performance
1677      issue here: if you usually search for global symbols in the
1678      current file, then it would be slightly better to search the
1679      current global block before searching all the symtabs.  But there
1680      are other factors that have a much greater effect on performance
1681      than that one, so I don't think we should worry about that for
1682      now.  */
1683
1684   sym = lookup_symbol_static (name, block, domain);
1685   if (sym != NULL)
1686     return sym;
1687
1688   return lookup_symbol_global (name, block, domain);
1689 }
1690
1691 /* Lookup a symbol in the static block associated to BLOCK, if there
1692    is one; do nothing if BLOCK is NULL or a global block.  */
1693
1694 struct symbol *
1695 lookup_symbol_static (const char *name,
1696                       const struct block *block,
1697                       const domain_enum domain)
1698 {
1699   const struct block *static_block = block_static_block (block);
1700
1701   if (static_block != NULL)
1702     return lookup_symbol_aux_block (name, static_block, domain);
1703   else
1704     return NULL;
1705 }
1706
1707 /* Private data to be used with lookup_symbol_global_iterator_cb.  */
1708
1709 struct global_sym_lookup_data
1710 {
1711   /* The name of the symbol we are searching for.  */
1712   const char *name;
1713
1714   /* The domain to use for our search.  */
1715   domain_enum domain;
1716
1717   /* The field where the callback should store the symbol if found.
1718      It should be initialized to NULL before the search is started.  */
1719   struct symbol *result;
1720 };
1721
1722 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
1723    It searches by name for a symbol in the GLOBAL_BLOCK of the given
1724    OBJFILE.  The arguments for the search are passed via CB_DATA,
1725    which in reality is a pointer to struct global_sym_lookup_data.  */
1726
1727 static int
1728 lookup_symbol_global_iterator_cb (struct objfile *objfile,
1729                                   void *cb_data)
1730 {
1731   struct global_sym_lookup_data *data =
1732     (struct global_sym_lookup_data *) cb_data;
1733
1734   gdb_assert (data->result == NULL);
1735
1736   data->result = lookup_symbol_aux_objfile (objfile, GLOBAL_BLOCK,
1737                                             data->name, data->domain);
1738   if (data->result == NULL)
1739     data->result = lookup_symbol_aux_quick (objfile, GLOBAL_BLOCK,
1740                                             data->name, data->domain);
1741
1742   /* If we found a match, tell the iterator to stop.  Otherwise,
1743      keep going.  */
1744   return (data->result != NULL);
1745 }
1746
1747 /* Lookup a symbol in all files' global blocks (searching psymtabs if
1748    necessary).  */
1749
1750 struct symbol *
1751 lookup_symbol_global (const char *name,
1752                       const struct block *block,
1753                       const domain_enum domain)
1754 {
1755   struct symbol *sym = NULL;
1756   struct objfile *objfile = NULL;
1757   struct global_sym_lookup_data lookup_data;
1758
1759   /* Call library-specific lookup procedure.  */
1760   objfile = lookup_objfile_from_block (block);
1761   if (objfile != NULL)
1762     sym = solib_global_lookup (objfile, name, domain);
1763   if (sym != NULL)
1764     return sym;
1765
1766   memset (&lookup_data, 0, sizeof (lookup_data));
1767   lookup_data.name = name;
1768   lookup_data.domain = domain;
1769   gdbarch_iterate_over_objfiles_in_search_order
1770     (objfile != NULL ? get_objfile_arch (objfile) : target_gdbarch,
1771      lookup_symbol_global_iterator_cb, &lookup_data, objfile);
1772
1773   return lookup_data.result;
1774 }
1775
1776 int
1777 symbol_matches_domain (enum language symbol_language,
1778                        domain_enum symbol_domain,
1779                        domain_enum domain)
1780 {
1781   /* For C++ "struct foo { ... }" also defines a typedef for "foo".
1782      A Java class declaration also defines a typedef for the class.
1783      Similarly, any Ada type declaration implicitly defines a typedef.  */
1784   if (symbol_language == language_cplus
1785       || symbol_language == language_d
1786       || symbol_language == language_java
1787       || symbol_language == language_ada)
1788     {
1789       if ((domain == VAR_DOMAIN || domain == STRUCT_DOMAIN)
1790           && symbol_domain == STRUCT_DOMAIN)
1791         return 1;
1792     }
1793   /* For all other languages, strict match is required.  */
1794   return (symbol_domain == domain);
1795 }
1796
1797 /* Look up a type named NAME in the struct_domain.  The type returned
1798    must not be opaque -- i.e., must have at least one field
1799    defined.  */
1800
1801 struct type *
1802 lookup_transparent_type (const char *name)
1803 {
1804   return current_language->la_lookup_transparent_type (name);
1805 }
1806
1807 /* A helper for basic_lookup_transparent_type that interfaces with the
1808    "quick" symbol table functions.  */
1809
1810 static struct type *
1811 basic_lookup_transparent_type_quick (struct objfile *objfile, int kind,
1812                                      const char *name)
1813 {
1814   struct symtab *symtab;
1815   struct blockvector *bv;
1816   struct block *block;
1817   struct symbol *sym;
1818
1819   if (!objfile->sf)
1820     return NULL;
1821   symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, STRUCT_DOMAIN);
1822   if (!symtab)
1823     return NULL;
1824
1825   bv = BLOCKVECTOR (symtab);
1826   block = BLOCKVECTOR_BLOCK (bv, kind);
1827   sym = lookup_block_symbol (block, name, STRUCT_DOMAIN);
1828   if (!sym)
1829     {
1830       int other_kind = kind == GLOBAL_BLOCK ? STATIC_BLOCK : GLOBAL_BLOCK;
1831
1832       /* This shouldn't be necessary, but as a last resort
1833        * try looking in the 'other kind' even though the psymtab
1834        * claimed the symbol was one thing.  It's possible that
1835        * the psymtab gets it wrong in some cases.
1836        */
1837       block = BLOCKVECTOR_BLOCK (bv, other_kind);
1838       sym = lookup_block_symbol (block, name, STRUCT_DOMAIN);
1839       if (!sym)
1840         /* FIXME; error is wrong in one case.  */
1841         error (_("\
1842 Internal: global symbol `%s' found in %s psymtab but not in symtab.\n\
1843 %s may be an inlined function, or may be a template function\n\
1844 (if a template, try specifying an instantiation: %s<type>)."),
1845                name, symtab->filename, name, name);
1846     }
1847   if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1848     return SYMBOL_TYPE (sym);
1849
1850   return NULL;
1851 }
1852
1853 /* The standard implementation of lookup_transparent_type.  This code
1854    was modeled on lookup_symbol -- the parts not relevant to looking
1855    up types were just left out.  In particular it's assumed here that
1856    types are available in struct_domain and only at file-static or
1857    global blocks.  */
1858
1859 struct type *
1860 basic_lookup_transparent_type (const char *name)
1861 {
1862   struct symbol *sym;
1863   struct symtab *s = NULL;
1864   struct blockvector *bv;
1865   struct objfile *objfile;
1866   struct block *block;
1867   struct type *t;
1868
1869   /* Now search all the global symbols.  Do the symtab's first, then
1870      check the psymtab's.  If a psymtab indicates the existence
1871      of the desired name as a global, then do psymtab-to-symtab
1872      conversion on the fly and return the found symbol.  */
1873
1874   ALL_OBJFILES (objfile)
1875   {
1876     if (objfile->sf)
1877       objfile->sf->qf->pre_expand_symtabs_matching (objfile,
1878                                                     GLOBAL_BLOCK,
1879                                                     name, STRUCT_DOMAIN);
1880
1881     ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
1882       {
1883         bv = BLOCKVECTOR (s);
1884         block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1885         sym = lookup_block_symbol (block, name, STRUCT_DOMAIN);
1886         if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1887           {
1888             return SYMBOL_TYPE (sym);
1889           }
1890       }
1891   }
1892
1893   ALL_OBJFILES (objfile)
1894   {
1895     t = basic_lookup_transparent_type_quick (objfile, GLOBAL_BLOCK, name);
1896     if (t)
1897       return t;
1898   }
1899
1900   /* Now search the static file-level symbols.
1901      Not strictly correct, but more useful than an error.
1902      Do the symtab's first, then
1903      check the psymtab's.  If a psymtab indicates the existence
1904      of the desired name as a file-level static, then do psymtab-to-symtab
1905      conversion on the fly and return the found symbol.  */
1906
1907   ALL_OBJFILES (objfile)
1908   {
1909     if (objfile->sf)
1910       objfile->sf->qf->pre_expand_symtabs_matching (objfile, STATIC_BLOCK,
1911                                                     name, STRUCT_DOMAIN);
1912
1913     ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
1914       {
1915         bv = BLOCKVECTOR (s);
1916         block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1917         sym = lookup_block_symbol (block, name, STRUCT_DOMAIN);
1918         if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1919           {
1920             return SYMBOL_TYPE (sym);
1921           }
1922       }
1923   }
1924
1925   ALL_OBJFILES (objfile)
1926   {
1927     t = basic_lookup_transparent_type_quick (objfile, STATIC_BLOCK, name);
1928     if (t)
1929       return t;
1930   }
1931
1932   return (struct type *) 0;
1933 }
1934
1935 /* Find the name of the file containing main().  */
1936 /* FIXME:  What about languages without main() or specially linked
1937    executables that have no main() ?   */
1938
1939 const char *
1940 find_main_filename (void)
1941 {
1942   struct objfile *objfile;
1943   char *name = main_name ();
1944
1945   ALL_OBJFILES (objfile)
1946   {
1947     const char *result;
1948
1949     if (!objfile->sf)
1950       continue;
1951     result = objfile->sf->qf->find_symbol_file (objfile, name);
1952     if (result)
1953       return result;
1954   }
1955   return (NULL);
1956 }
1957
1958 /* Search BLOCK for symbol NAME in DOMAIN.
1959
1960    Note that if NAME is the demangled form of a C++ symbol, we will fail
1961    to find a match during the binary search of the non-encoded names, but
1962    for now we don't worry about the slight inefficiency of looking for
1963    a match we'll never find, since it will go pretty quick.  Once the
1964    binary search terminates, we drop through and do a straight linear
1965    search on the symbols.  Each symbol which is marked as being a ObjC/C++
1966    symbol (language_cplus or language_objc set) has both the encoded and
1967    non-encoded names tested for a match.  */
1968
1969 struct symbol *
1970 lookup_block_symbol (const struct block *block, const char *name,
1971                      const domain_enum domain)
1972 {
1973   struct block_iterator iter;
1974   struct symbol *sym;
1975
1976   if (!BLOCK_FUNCTION (block))
1977     {
1978       for (sym = block_iter_name_first (block, name, &iter);
1979            sym != NULL;
1980            sym = block_iter_name_next (name, &iter))
1981         {
1982           if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
1983                                      SYMBOL_DOMAIN (sym), domain))
1984             return sym;
1985         }
1986       return NULL;
1987     }
1988   else
1989     {
1990       /* Note that parameter symbols do not always show up last in the
1991          list; this loop makes sure to take anything else other than
1992          parameter symbols first; it only uses parameter symbols as a
1993          last resort.  Note that this only takes up extra computation
1994          time on a match.  */
1995
1996       struct symbol *sym_found = NULL;
1997
1998       for (sym = block_iter_name_first (block, name, &iter);
1999            sym != NULL;
2000            sym = block_iter_name_next (name, &iter))
2001         {
2002           if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
2003                                      SYMBOL_DOMAIN (sym), domain))
2004             {
2005               sym_found = sym;
2006               if (!SYMBOL_IS_ARGUMENT (sym))
2007                 {
2008                   break;
2009                 }
2010             }
2011         }
2012       return (sym_found);       /* Will be NULL if not found.  */
2013     }
2014 }
2015
2016 /* Iterate over the symbols named NAME, matching DOMAIN, starting with
2017    BLOCK.
2018    
2019    For each symbol that matches, CALLBACK is called.  The symbol and
2020    DATA are passed to the callback.
2021    
2022    If CALLBACK returns zero, the iteration ends.  Otherwise, the
2023    search continues.  This function iterates upward through blocks.
2024    When the outermost block has been finished, the function
2025    returns.  */
2026
2027 void
2028 iterate_over_symbols (const struct block *block, const char *name,
2029                       const domain_enum domain,
2030                       symbol_found_callback_ftype *callback,
2031                       void *data)
2032 {
2033   while (block)
2034     {
2035       struct block_iterator iter;
2036       struct symbol *sym;
2037
2038       for (sym = block_iter_name_first (block, name, &iter);
2039            sym != NULL;
2040            sym = block_iter_name_next (name, &iter))
2041         {
2042           if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
2043                                      SYMBOL_DOMAIN (sym), domain))
2044             {
2045               if (!callback (sym, data))
2046                 return;
2047             }
2048         }
2049
2050       block = BLOCK_SUPERBLOCK (block);
2051     }
2052 }
2053
2054 /* Find the symtab associated with PC and SECTION.  Look through the
2055    psymtabs and read in another symtab if necessary.  */
2056
2057 struct symtab *
2058 find_pc_sect_symtab (CORE_ADDR pc, struct obj_section *section)
2059 {
2060   struct block *b;
2061   struct blockvector *bv;
2062   struct symtab *s = NULL;
2063   struct symtab *best_s = NULL;
2064   struct objfile *objfile;
2065   struct program_space *pspace;
2066   CORE_ADDR distance = 0;
2067   struct minimal_symbol *msymbol;
2068
2069   pspace = current_program_space;
2070
2071   /* If we know that this is not a text address, return failure.  This is
2072      necessary because we loop based on the block's high and low code
2073      addresses, which do not include the data ranges, and because
2074      we call find_pc_sect_psymtab which has a similar restriction based
2075      on the partial_symtab's texthigh and textlow.  */
2076   msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
2077   if (msymbol
2078       && (MSYMBOL_TYPE (msymbol) == mst_data
2079           || MSYMBOL_TYPE (msymbol) == mst_bss
2080           || MSYMBOL_TYPE (msymbol) == mst_abs
2081           || MSYMBOL_TYPE (msymbol) == mst_file_data
2082           || MSYMBOL_TYPE (msymbol) == mst_file_bss))
2083     return NULL;
2084
2085   /* Search all symtabs for the one whose file contains our address, and which
2086      is the smallest of all the ones containing the address.  This is designed
2087      to deal with a case like symtab a is at 0x1000-0x2000 and 0x3000-0x4000
2088      and symtab b is at 0x2000-0x3000.  So the GLOBAL_BLOCK for a is from
2089      0x1000-0x4000, but for address 0x2345 we want to return symtab b.
2090
2091      This happens for native ecoff format, where code from included files
2092      gets its own symtab.  The symtab for the included file should have
2093      been read in already via the dependency mechanism.
2094      It might be swifter to create several symtabs with the same name
2095      like xcoff does (I'm not sure).
2096
2097      It also happens for objfiles that have their functions reordered.
2098      For these, the symtab we are looking for is not necessarily read in.  */
2099
2100   ALL_PRIMARY_SYMTABS (objfile, s)
2101   {
2102     bv = BLOCKVECTOR (s);
2103     b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
2104
2105     if (BLOCK_START (b) <= pc
2106         && BLOCK_END (b) > pc
2107         && (distance == 0
2108             || BLOCK_END (b) - BLOCK_START (b) < distance))
2109       {
2110         /* For an objfile that has its functions reordered,
2111            find_pc_psymtab will find the proper partial symbol table
2112            and we simply return its corresponding symtab.  */
2113         /* In order to better support objfiles that contain both
2114            stabs and coff debugging info, we continue on if a psymtab
2115            can't be found.  */
2116         if ((objfile->flags & OBJF_REORDERED) && objfile->sf)
2117           {
2118             struct symtab *result;
2119
2120             result
2121               = objfile->sf->qf->find_pc_sect_symtab (objfile,
2122                                                       msymbol,
2123                                                       pc, section,
2124                                                       0);
2125             if (result)
2126               return result;
2127           }
2128         if (section != 0)
2129           {
2130             struct block_iterator iter;
2131             struct symbol *sym = NULL;
2132
2133             ALL_BLOCK_SYMBOLS (b, iter, sym)
2134               {
2135                 fixup_symbol_section (sym, objfile);
2136                 if (matching_obj_sections (SYMBOL_OBJ_SECTION (sym), section))
2137                   break;
2138               }
2139             if (sym == NULL)
2140               continue;         /* No symbol in this symtab matches
2141                                    section.  */
2142           }
2143         distance = BLOCK_END (b) - BLOCK_START (b);
2144         best_s = s;
2145       }
2146   }
2147
2148   if (best_s != NULL)
2149     return (best_s);
2150
2151   ALL_OBJFILES (objfile)
2152   {
2153     struct symtab *result;
2154
2155     if (!objfile->sf)
2156       continue;
2157     result = objfile->sf->qf->find_pc_sect_symtab (objfile,
2158                                                    msymbol,
2159                                                    pc, section,
2160                                                    1);
2161     if (result)
2162       return result;
2163   }
2164
2165   return NULL;
2166 }
2167
2168 /* Find the symtab associated with PC.  Look through the psymtabs and read
2169    in another symtab if necessary.  Backward compatibility, no section.  */
2170
2171 struct symtab *
2172 find_pc_symtab (CORE_ADDR pc)
2173 {
2174   return find_pc_sect_symtab (pc, find_pc_mapped_section (pc));
2175 }
2176 \f
2177
2178 /* Find the source file and line number for a given PC value and SECTION.
2179    Return a structure containing a symtab pointer, a line number,
2180    and a pc range for the entire source line.
2181    The value's .pc field is NOT the specified pc.
2182    NOTCURRENT nonzero means, if specified pc is on a line boundary,
2183    use the line that ends there.  Otherwise, in that case, the line
2184    that begins there is used.  */
2185
2186 /* The big complication here is that a line may start in one file, and end just
2187    before the start of another file.  This usually occurs when you #include
2188    code in the middle of a subroutine.  To properly find the end of a line's PC
2189    range, we must search all symtabs associated with this compilation unit, and
2190    find the one whose first PC is closer than that of the next line in this
2191    symtab.  */
2192
2193 /* If it's worth the effort, we could be using a binary search.  */
2194
2195 struct symtab_and_line
2196 find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
2197 {
2198   struct symtab *s;
2199   struct linetable *l;
2200   int len;
2201   int i;
2202   struct linetable_entry *item;
2203   struct symtab_and_line val;
2204   struct blockvector *bv;
2205   struct minimal_symbol *msymbol;
2206   struct minimal_symbol *mfunsym;
2207   struct objfile *objfile;
2208
2209   /* Info on best line seen so far, and where it starts, and its file.  */
2210
2211   struct linetable_entry *best = NULL;
2212   CORE_ADDR best_end = 0;
2213   struct symtab *best_symtab = 0;
2214
2215   /* Store here the first line number
2216      of a file which contains the line at the smallest pc after PC.
2217      If we don't find a line whose range contains PC,
2218      we will use a line one less than this,
2219      with a range from the start of that file to the first line's pc.  */
2220   struct linetable_entry *alt = NULL;
2221   struct symtab *alt_symtab = 0;
2222
2223   /* Info on best line seen in this file.  */
2224
2225   struct linetable_entry *prev;
2226
2227   /* If this pc is not from the current frame,
2228      it is the address of the end of a call instruction.
2229      Quite likely that is the start of the following statement.
2230      But what we want is the statement containing the instruction.
2231      Fudge the pc to make sure we get that.  */
2232
2233   init_sal (&val);              /* initialize to zeroes */
2234
2235   val.pspace = current_program_space;
2236
2237   /* It's tempting to assume that, if we can't find debugging info for
2238      any function enclosing PC, that we shouldn't search for line
2239      number info, either.  However, GAS can emit line number info for
2240      assembly files --- very helpful when debugging hand-written
2241      assembly code.  In such a case, we'd have no debug info for the
2242      function, but we would have line info.  */
2243
2244   if (notcurrent)
2245     pc -= 1;
2246
2247   /* elz: added this because this function returned the wrong
2248      information if the pc belongs to a stub (import/export)
2249      to call a shlib function.  This stub would be anywhere between
2250      two functions in the target, and the line info was erroneously
2251      taken to be the one of the line before the pc.  */
2252
2253   /* RT: Further explanation:
2254
2255    * We have stubs (trampolines) inserted between procedures.
2256    *
2257    * Example: "shr1" exists in a shared library, and a "shr1" stub also
2258    * exists in the main image.
2259    *
2260    * In the minimal symbol table, we have a bunch of symbols
2261    * sorted by start address.  The stubs are marked as "trampoline",
2262    * the others appear as text. E.g.:
2263    *
2264    *  Minimal symbol table for main image
2265    *     main:  code for main (text symbol)
2266    *     shr1: stub  (trampoline symbol)
2267    *     foo:   code for foo (text symbol)
2268    *     ...
2269    *  Minimal symbol table for "shr1" image:
2270    *     ...
2271    *     shr1: code for shr1 (text symbol)
2272    *     ...
2273    *
2274    * So the code below is trying to detect if we are in the stub
2275    * ("shr1" stub), and if so, find the real code ("shr1" trampoline),
2276    * and if found,  do the symbolization from the real-code address
2277    * rather than the stub address.
2278    *
2279    * Assumptions being made about the minimal symbol table:
2280    *   1. lookup_minimal_symbol_by_pc() will return a trampoline only
2281    *      if we're really in the trampoline.s If we're beyond it (say
2282    *      we're in "foo" in the above example), it'll have a closer
2283    *      symbol (the "foo" text symbol for example) and will not
2284    *      return the trampoline.
2285    *   2. lookup_minimal_symbol_text() will find a real text symbol
2286    *      corresponding to the trampoline, and whose address will
2287    *      be different than the trampoline address.  I put in a sanity
2288    *      check for the address being the same, to avoid an
2289    *      infinite recursion.
2290    */
2291   msymbol = lookup_minimal_symbol_by_pc (pc);
2292   if (msymbol != NULL)
2293     if (MSYMBOL_TYPE (msymbol) == mst_solib_trampoline)
2294       {
2295         mfunsym = lookup_minimal_symbol_text (SYMBOL_LINKAGE_NAME (msymbol),
2296                                               NULL);
2297         if (mfunsym == NULL)
2298           /* I eliminated this warning since it is coming out
2299            * in the following situation:
2300            * gdb shmain // test program with shared libraries
2301            * (gdb) break shr1  // function in shared lib
2302            * Warning: In stub for ...
2303            * In the above situation, the shared lib is not loaded yet,
2304            * so of course we can't find the real func/line info,
2305            * but the "break" still works, and the warning is annoying.
2306            * So I commented out the warning.  RT */
2307           /* warning ("In stub for %s; unable to find real function/line info",
2308              SYMBOL_LINKAGE_NAME (msymbol)); */
2309           ;
2310         /* fall through */
2311         else if (SYMBOL_VALUE_ADDRESS (mfunsym)
2312                  == SYMBOL_VALUE_ADDRESS (msymbol))
2313           /* Avoid infinite recursion */
2314           /* See above comment about why warning is commented out.  */
2315           /* warning ("In stub for %s; unable to find real function/line info",
2316              SYMBOL_LINKAGE_NAME (msymbol)); */
2317           ;
2318         /* fall through */
2319         else
2320           return find_pc_line (SYMBOL_VALUE_ADDRESS (mfunsym), 0);
2321       }
2322
2323
2324   s = find_pc_sect_symtab (pc, section);
2325   if (!s)
2326     {
2327       /* If no symbol information, return previous pc.  */
2328       if (notcurrent)
2329         pc++;
2330       val.pc = pc;
2331       return val;
2332     }
2333
2334   bv = BLOCKVECTOR (s);
2335   objfile = s->objfile;
2336
2337   /* Look at all the symtabs that share this blockvector.
2338      They all have the same apriori range, that we found was right;
2339      but they have different line tables.  */
2340
2341   ALL_OBJFILE_SYMTABS (objfile, s)
2342     {
2343       if (BLOCKVECTOR (s) != bv)
2344         continue;
2345
2346       /* Find the best line in this symtab.  */
2347       l = LINETABLE (s);
2348       if (!l)
2349         continue;
2350       len = l->nitems;
2351       if (len <= 0)
2352         {
2353           /* I think len can be zero if the symtab lacks line numbers
2354              (e.g. gcc -g1).  (Either that or the LINETABLE is NULL;
2355              I'm not sure which, and maybe it depends on the symbol
2356              reader).  */
2357           continue;
2358         }
2359
2360       prev = NULL;
2361       item = l->item;           /* Get first line info.  */
2362
2363       /* Is this file's first line closer than the first lines of other files?
2364          If so, record this file, and its first line, as best alternate.  */
2365       if (item->pc > pc && (!alt || item->pc < alt->pc))
2366         {
2367           alt = item;
2368           alt_symtab = s;
2369         }
2370
2371       for (i = 0; i < len; i++, item++)
2372         {
2373           /* Leave prev pointing to the linetable entry for the last line
2374              that started at or before PC.  */
2375           if (item->pc > pc)
2376             break;
2377
2378           prev = item;
2379         }
2380
2381       /* At this point, prev points at the line whose start addr is <= pc, and
2382          item points at the next line.  If we ran off the end of the linetable
2383          (pc >= start of the last line), then prev == item.  If pc < start of
2384          the first line, prev will not be set.  */
2385
2386       /* Is this file's best line closer than the best in the other files?
2387          If so, record this file, and its best line, as best so far.  Don't
2388          save prev if it represents the end of a function (i.e. line number
2389          0) instead of a real line.  */
2390
2391       if (prev && prev->line && (!best || prev->pc > best->pc))
2392         {
2393           best = prev;
2394           best_symtab = s;
2395
2396           /* Discard BEST_END if it's before the PC of the current BEST.  */
2397           if (best_end <= best->pc)
2398             best_end = 0;
2399         }
2400
2401       /* If another line (denoted by ITEM) is in the linetable and its
2402          PC is after BEST's PC, but before the current BEST_END, then
2403          use ITEM's PC as the new best_end.  */
2404       if (best && i < len && item->pc > best->pc
2405           && (best_end == 0 || best_end > item->pc))
2406         best_end = item->pc;
2407     }
2408
2409   if (!best_symtab)
2410     {
2411       /* If we didn't find any line number info, just return zeros.
2412          We used to return alt->line - 1 here, but that could be
2413          anywhere; if we don't have line number info for this PC,
2414          don't make some up.  */
2415       val.pc = pc;
2416     }
2417   else if (best->line == 0)
2418     {
2419       /* If our best fit is in a range of PC's for which no line
2420          number info is available (line number is zero) then we didn't
2421          find any valid line information.  */
2422       val.pc = pc;
2423     }
2424   else
2425     {
2426       val.symtab = best_symtab;
2427       val.line = best->line;
2428       val.pc = best->pc;
2429       if (best_end && (!alt || best_end < alt->pc))
2430         val.end = best_end;
2431       else if (alt)
2432         val.end = alt->pc;
2433       else
2434         val.end = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
2435     }
2436   val.section = section;
2437   return val;
2438 }
2439
2440 /* Backward compatibility (no section).  */
2441
2442 struct symtab_and_line
2443 find_pc_line (CORE_ADDR pc, int notcurrent)
2444 {
2445   struct obj_section *section;
2446
2447   section = find_pc_overlay (pc);
2448   if (pc_in_unmapped_range (pc, section))
2449     pc = overlay_mapped_address (pc, section);
2450   return find_pc_sect_line (pc, section, notcurrent);
2451 }
2452 \f
2453 /* Find line number LINE in any symtab whose name is the same as
2454    SYMTAB.
2455
2456    If found, return the symtab that contains the linetable in which it was
2457    found, set *INDEX to the index in the linetable of the best entry
2458    found, and set *EXACT_MATCH nonzero if the value returned is an
2459    exact match.
2460
2461    If not found, return NULL.  */
2462
2463 struct symtab *
2464 find_line_symtab (struct symtab *symtab, int line,
2465                   int *index, int *exact_match)
2466 {
2467   int exact = 0;  /* Initialized here to avoid a compiler warning.  */
2468
2469   /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
2470      so far seen.  */
2471
2472   int best_index;
2473   struct linetable *best_linetable;
2474   struct symtab *best_symtab;
2475
2476   /* First try looking it up in the given symtab.  */
2477   best_linetable = LINETABLE (symtab);
2478   best_symtab = symtab;
2479   best_index = find_line_common (best_linetable, line, &exact, 0);
2480   if (best_index < 0 || !exact)
2481     {
2482       /* Didn't find an exact match.  So we better keep looking for
2483          another symtab with the same name.  In the case of xcoff,
2484          multiple csects for one source file (produced by IBM's FORTRAN
2485          compiler) produce multiple symtabs (this is unavoidable
2486          assuming csects can be at arbitrary places in memory and that
2487          the GLOBAL_BLOCK of a symtab has a begin and end address).  */
2488
2489       /* BEST is the smallest linenumber > LINE so far seen,
2490          or 0 if none has been seen so far.
2491          BEST_INDEX and BEST_LINETABLE identify the item for it.  */
2492       int best;
2493
2494       struct objfile *objfile;
2495       struct symtab *s;
2496
2497       if (best_index >= 0)
2498         best = best_linetable->item[best_index].line;
2499       else
2500         best = 0;
2501
2502       ALL_OBJFILES (objfile)
2503       {
2504         if (objfile->sf)
2505           objfile->sf->qf->expand_symtabs_with_filename (objfile,
2506                                                          symtab->filename);
2507       }
2508
2509       /* Get symbol full file name if possible.  */
2510       symtab_to_fullname (symtab);
2511
2512       ALL_SYMTABS (objfile, s)
2513       {
2514         struct linetable *l;
2515         int ind;
2516
2517         if (FILENAME_CMP (symtab->filename, s->filename) != 0)
2518           continue;
2519         if (symtab->fullname != NULL
2520             && symtab_to_fullname (s) != NULL
2521             && FILENAME_CMP (symtab->fullname, s->fullname) != 0)
2522           continue;     
2523         l = LINETABLE (s);
2524         ind = find_line_common (l, line, &exact, 0);
2525         if (ind >= 0)
2526           {
2527             if (exact)
2528               {
2529                 best_index = ind;
2530                 best_linetable = l;
2531                 best_symtab = s;
2532                 goto done;
2533               }
2534             if (best == 0 || l->item[ind].line < best)
2535               {
2536                 best = l->item[ind].line;
2537                 best_index = ind;
2538                 best_linetable = l;
2539                 best_symtab = s;
2540               }
2541           }
2542       }
2543     }
2544 done:
2545   if (best_index < 0)
2546     return NULL;
2547
2548   if (index)
2549     *index = best_index;
2550   if (exact_match)
2551     *exact_match = exact;
2552
2553   return best_symtab;
2554 }
2555
2556 /* Given SYMTAB, returns all the PCs function in the symtab that
2557    exactly match LINE.  Returns NULL if there are no exact matches,
2558    but updates BEST_ITEM in this case.  */
2559
2560 VEC (CORE_ADDR) *
2561 find_pcs_for_symtab_line (struct symtab *symtab, int line,
2562                           struct linetable_entry **best_item)
2563 {
2564   int start = 0, ix;
2565   struct symbol *previous_function = NULL;
2566   VEC (CORE_ADDR) *result = NULL;
2567
2568   /* First, collect all the PCs that are at this line.  */
2569   while (1)
2570     {
2571       int was_exact;
2572       int idx;
2573
2574       idx = find_line_common (LINETABLE (symtab), line, &was_exact, start);
2575       if (idx < 0)
2576         break;
2577
2578       if (!was_exact)
2579         {
2580           struct linetable_entry *item = &LINETABLE (symtab)->item[idx];
2581
2582           if (*best_item == NULL || item->line < (*best_item)->line)
2583             *best_item = item;
2584
2585           break;
2586         }
2587
2588       VEC_safe_push (CORE_ADDR, result, LINETABLE (symtab)->item[idx].pc);
2589       start = idx + 1;
2590     }
2591
2592   return result;
2593 }
2594
2595 \f
2596 /* Set the PC value for a given source file and line number and return true.
2597    Returns zero for invalid line number (and sets the PC to 0).
2598    The source file is specified with a struct symtab.  */
2599
2600 int
2601 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
2602 {
2603   struct linetable *l;
2604   int ind;
2605
2606   *pc = 0;
2607   if (symtab == 0)
2608     return 0;
2609
2610   symtab = find_line_symtab (symtab, line, &ind, NULL);
2611   if (symtab != NULL)
2612     {
2613       l = LINETABLE (symtab);
2614       *pc = l->item[ind].pc;
2615       return 1;
2616     }
2617   else
2618     return 0;
2619 }
2620
2621 /* Find the range of pc values in a line.
2622    Store the starting pc of the line into *STARTPTR
2623    and the ending pc (start of next line) into *ENDPTR.
2624    Returns 1 to indicate success.
2625    Returns 0 if could not find the specified line.  */
2626
2627 int
2628 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
2629                     CORE_ADDR *endptr)
2630 {
2631   CORE_ADDR startaddr;
2632   struct symtab_and_line found_sal;
2633
2634   startaddr = sal.pc;
2635   if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
2636     return 0;
2637
2638   /* This whole function is based on address.  For example, if line 10 has
2639      two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
2640      "info line *0x123" should say the line goes from 0x100 to 0x200
2641      and "info line *0x355" should say the line goes from 0x300 to 0x400.
2642      This also insures that we never give a range like "starts at 0x134
2643      and ends at 0x12c".  */
2644
2645   found_sal = find_pc_sect_line (startaddr, sal.section, 0);
2646   if (found_sal.line != sal.line)
2647     {
2648       /* The specified line (sal) has zero bytes.  */
2649       *startptr = found_sal.pc;
2650       *endptr = found_sal.pc;
2651     }
2652   else
2653     {
2654       *startptr = found_sal.pc;
2655       *endptr = found_sal.end;
2656     }
2657   return 1;
2658 }
2659
2660 /* Given a line table and a line number, return the index into the line
2661    table for the pc of the nearest line whose number is >= the specified one.
2662    Return -1 if none is found.  The value is >= 0 if it is an index.
2663    START is the index at which to start searching the line table.
2664
2665    Set *EXACT_MATCH nonzero if the value returned is an exact match.  */
2666
2667 static int
2668 find_line_common (struct linetable *l, int lineno,
2669                   int *exact_match, int start)
2670 {
2671   int i;
2672   int len;
2673
2674   /* BEST is the smallest linenumber > LINENO so far seen,
2675      or 0 if none has been seen so far.
2676      BEST_INDEX identifies the item for it.  */
2677
2678   int best_index = -1;
2679   int best = 0;
2680
2681   *exact_match = 0;
2682
2683   if (lineno <= 0)
2684     return -1;
2685   if (l == 0)
2686     return -1;
2687
2688   len = l->nitems;
2689   for (i = start; i < len; i++)
2690     {
2691       struct linetable_entry *item = &(l->item[i]);
2692
2693       if (item->line == lineno)
2694         {
2695           /* Return the first (lowest address) entry which matches.  */
2696           *exact_match = 1;
2697           return i;
2698         }
2699
2700       if (item->line > lineno && (best == 0 || item->line < best))
2701         {
2702           best = item->line;
2703           best_index = i;
2704         }
2705     }
2706
2707   /* If we got here, we didn't get an exact match.  */
2708   return best_index;
2709 }
2710
2711 int
2712 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
2713 {
2714   struct symtab_and_line sal;
2715
2716   sal = find_pc_line (pc, 0);
2717   *startptr = sal.pc;
2718   *endptr = sal.end;
2719   return sal.symtab != 0;
2720 }
2721
2722 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
2723    address for that function that has an entry in SYMTAB's line info
2724    table.  If such an entry cannot be found, return FUNC_ADDR
2725    unaltered.  */
2726
2727 static CORE_ADDR
2728 skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab)
2729 {
2730   CORE_ADDR func_start, func_end;
2731   struct linetable *l;
2732   int i;
2733
2734   /* Give up if this symbol has no lineinfo table.  */
2735   l = LINETABLE (symtab);
2736   if (l == NULL)
2737     return func_addr;
2738
2739   /* Get the range for the function's PC values, or give up if we
2740      cannot, for some reason.  */
2741   if (!find_pc_partial_function (func_addr, NULL, &func_start, &func_end))
2742     return func_addr;
2743
2744   /* Linetable entries are ordered by PC values, see the commentary in
2745      symtab.h where `struct linetable' is defined.  Thus, the first
2746      entry whose PC is in the range [FUNC_START..FUNC_END[ is the
2747      address we are looking for.  */
2748   for (i = 0; i < l->nitems; i++)
2749     {
2750       struct linetable_entry *item = &(l->item[i]);
2751
2752       /* Don't use line numbers of zero, they mark special entries in
2753          the table.  See the commentary on symtab.h before the
2754          definition of struct linetable.  */
2755       if (item->line > 0 && func_start <= item->pc && item->pc < func_end)
2756         return item->pc;
2757     }
2758
2759   return func_addr;
2760 }
2761
2762 /* Given a function symbol SYM, find the symtab and line for the start
2763    of the function.
2764    If the argument FUNFIRSTLINE is nonzero, we want the first line
2765    of real code inside the function.  */
2766
2767 struct symtab_and_line
2768 find_function_start_sal (struct symbol *sym, int funfirstline)
2769 {
2770   struct symtab_and_line sal;
2771
2772   fixup_symbol_section (sym, NULL);
2773   sal = find_pc_sect_line (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)),
2774                            SYMBOL_OBJ_SECTION (sym), 0);
2775
2776   /* We always should have a line for the function start address.
2777      If we don't, something is odd.  Create a plain SAL refering
2778      just the PC and hope that skip_prologue_sal (if requested)
2779      can find a line number for after the prologue.  */
2780   if (sal.pc < BLOCK_START (SYMBOL_BLOCK_VALUE (sym)))
2781     {
2782       init_sal (&sal);
2783       sal.pspace = current_program_space;
2784       sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
2785       sal.section = SYMBOL_OBJ_SECTION (sym);
2786     }
2787
2788   if (funfirstline)
2789     skip_prologue_sal (&sal);
2790
2791   return sal;
2792 }
2793
2794 /* Adjust SAL to the first instruction past the function prologue.
2795    If the PC was explicitly specified, the SAL is not changed.
2796    If the line number was explicitly specified, at most the SAL's PC
2797    is updated.  If SAL is already past the prologue, then do nothing.  */
2798
2799 void
2800 skip_prologue_sal (struct symtab_and_line *sal)
2801 {
2802   struct symbol *sym;
2803   struct symtab_and_line start_sal;
2804   struct cleanup *old_chain;
2805   CORE_ADDR pc, saved_pc;
2806   struct obj_section *section;
2807   const char *name;
2808   struct objfile *objfile;
2809   struct gdbarch *gdbarch;
2810   struct block *b, *function_block;
2811   int force_skip, skip;
2812
2813   /* Do not change the SAL is PC was specified explicitly.  */
2814   if (sal->explicit_pc)
2815     return;
2816
2817   old_chain = save_current_space_and_thread ();
2818   switch_to_program_space_and_thread (sal->pspace);
2819
2820   sym = find_pc_sect_function (sal->pc, sal->section);
2821   if (sym != NULL)
2822     {
2823       fixup_symbol_section (sym, NULL);
2824
2825       pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
2826       section = SYMBOL_OBJ_SECTION (sym);
2827       name = SYMBOL_LINKAGE_NAME (sym);
2828       objfile = SYMBOL_SYMTAB (sym)->objfile;
2829     }
2830   else
2831     {
2832       struct minimal_symbol *msymbol
2833         = lookup_minimal_symbol_by_pc_section (sal->pc, sal->section);
2834
2835       if (msymbol == NULL)
2836         {
2837           do_cleanups (old_chain);
2838           return;
2839         }
2840
2841       pc = SYMBOL_VALUE_ADDRESS (msymbol);
2842       section = SYMBOL_OBJ_SECTION (msymbol);
2843       name = SYMBOL_LINKAGE_NAME (msymbol);
2844       objfile = msymbol_objfile (msymbol);
2845     }
2846
2847   gdbarch = get_objfile_arch (objfile);
2848
2849   /* Process the prologue in two passes.  In the first pass try to skip the
2850      prologue (SKIP is true) and verify there is a real need for it (indicated
2851      by FORCE_SKIP).  If no such reason was found run a second pass where the
2852      prologue is not skipped (SKIP is false).  */
2853
2854   skip = 1;
2855   force_skip = 1;
2856
2857   /* Be conservative - allow direct PC (without skipping prologue) only if we
2858      have proven the CU (Compilation Unit) supports it.  sal->SYMTAB does not
2859      have to be set by the caller so we use SYM instead.  */
2860   if (sym && SYMBOL_SYMTAB (sym)->locations_valid)
2861     force_skip = 0;
2862
2863   saved_pc = pc;
2864   do
2865     {
2866       pc = saved_pc;
2867
2868       /* If the function is in an unmapped overlay, use its unmapped LMA address,
2869          so that gdbarch_skip_prologue has something unique to work on.  */
2870       if (section_is_overlay (section) && !section_is_mapped (section))
2871         pc = overlay_unmapped_address (pc, section);
2872
2873       /* Skip "first line" of function (which is actually its prologue).  */
2874       pc += gdbarch_deprecated_function_start_offset (gdbarch);
2875       if (skip)
2876         pc = gdbarch_skip_prologue (gdbarch, pc);
2877
2878       /* For overlays, map pc back into its mapped VMA range.  */
2879       pc = overlay_mapped_address (pc, section);
2880
2881       /* Calculate line number.  */
2882       start_sal = find_pc_sect_line (pc, section, 0);
2883
2884       /* Check if gdbarch_skip_prologue left us in mid-line, and the next
2885          line is still part of the same function.  */
2886       if (skip && start_sal.pc != pc
2887           && (sym ? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
2888                      && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
2889               : (lookup_minimal_symbol_by_pc_section (start_sal.end, section)
2890                  == lookup_minimal_symbol_by_pc_section (pc, section))))
2891         {
2892           /* First pc of next line */
2893           pc = start_sal.end;
2894           /* Recalculate the line number (might not be N+1).  */
2895           start_sal = find_pc_sect_line (pc, section, 0);
2896         }
2897
2898       /* On targets with executable formats that don't have a concept of
2899          constructors (ELF with .init has, PE doesn't), gcc emits a call
2900          to `__main' in `main' between the prologue and before user
2901          code.  */
2902       if (gdbarch_skip_main_prologue_p (gdbarch)
2903           && name && strcmp_iw (name, "main") == 0)
2904         {
2905           pc = gdbarch_skip_main_prologue (gdbarch, pc);
2906           /* Recalculate the line number (might not be N+1).  */
2907           start_sal = find_pc_sect_line (pc, section, 0);
2908           force_skip = 1;
2909         }
2910     }
2911   while (!force_skip && skip--);
2912
2913   /* If we still don't have a valid source line, try to find the first
2914      PC in the lineinfo table that belongs to the same function.  This
2915      happens with COFF debug info, which does not seem to have an
2916      entry in lineinfo table for the code after the prologue which has
2917      no direct relation to source.  For example, this was found to be
2918      the case with the DJGPP target using "gcc -gcoff" when the
2919      compiler inserted code after the prologue to make sure the stack
2920      is aligned.  */
2921   if (!force_skip && sym && start_sal.symtab == NULL)
2922     {
2923       pc = skip_prologue_using_lineinfo (pc, SYMBOL_SYMTAB (sym));
2924       /* Recalculate the line number.  */
2925       start_sal = find_pc_sect_line (pc, section, 0);
2926     }
2927
2928   do_cleanups (old_chain);
2929
2930   /* If we're already past the prologue, leave SAL unchanged.  Otherwise
2931      forward SAL to the end of the prologue.  */
2932   if (sal->pc >= pc)
2933     return;
2934
2935   sal->pc = pc;
2936   sal->section = section;
2937
2938   /* Unless the explicit_line flag was set, update the SAL line
2939      and symtab to correspond to the modified PC location.  */
2940   if (sal->explicit_line)
2941     return;
2942
2943   sal->symtab = start_sal.symtab;
2944   sal->line = start_sal.line;
2945   sal->end = start_sal.end;
2946
2947   /* Check if we are now inside an inlined function.  If we can,
2948      use the call site of the function instead.  */
2949   b = block_for_pc_sect (sal->pc, sal->section);
2950   function_block = NULL;
2951   while (b != NULL)
2952     {
2953       if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
2954         function_block = b;
2955       else if (BLOCK_FUNCTION (b) != NULL)
2956         break;
2957       b = BLOCK_SUPERBLOCK (b);
2958     }
2959   if (function_block != NULL
2960       && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
2961     {
2962       sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
2963       sal->symtab = SYMBOL_SYMTAB (BLOCK_FUNCTION (function_block));
2964     }
2965 }
2966
2967 /* If P is of the form "operator[ \t]+..." where `...' is
2968    some legitimate operator text, return a pointer to the
2969    beginning of the substring of the operator text.
2970    Otherwise, return "".  */
2971
2972 static char *
2973 operator_chars (char *p, char **end)
2974 {
2975   *end = "";
2976   if (strncmp (p, "operator", 8))
2977     return *end;
2978   p += 8;
2979
2980   /* Don't get faked out by `operator' being part of a longer
2981      identifier.  */
2982   if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
2983     return *end;
2984
2985   /* Allow some whitespace between `operator' and the operator symbol.  */
2986   while (*p == ' ' || *p == '\t')
2987     p++;
2988
2989   /* Recognize 'operator TYPENAME'.  */
2990
2991   if (isalpha (*p) || *p == '_' || *p == '$')
2992     {
2993       char *q = p + 1;
2994
2995       while (isalnum (*q) || *q == '_' || *q == '$')
2996         q++;
2997       *end = q;
2998       return p;
2999     }
3000
3001   while (*p)
3002     switch (*p)
3003       {
3004       case '\\':                        /* regexp quoting */
3005         if (p[1] == '*')
3006           {
3007             if (p[2] == '=')            /* 'operator\*=' */
3008               *end = p + 3;
3009             else                        /* 'operator\*'  */
3010               *end = p + 2;
3011             return p;
3012           }
3013         else if (p[1] == '[')
3014           {
3015             if (p[2] == ']')
3016               error (_("mismatched quoting on brackets, "
3017                        "try 'operator\\[\\]'"));
3018             else if (p[2] == '\\' && p[3] == ']')
3019               {
3020                 *end = p + 4;   /* 'operator\[\]' */
3021                 return p;
3022               }
3023             else
3024               error (_("nothing is allowed between '[' and ']'"));
3025           }
3026         else
3027           {
3028             /* Gratuitous qoute: skip it and move on.  */
3029             p++;
3030             continue;
3031           }
3032         break;
3033       case '!':
3034       case '=':
3035       case '*':
3036       case '/':
3037       case '%':
3038       case '^':
3039         if (p[1] == '=')
3040           *end = p + 2;
3041         else
3042           *end = p + 1;
3043         return p;
3044       case '<':
3045       case '>':
3046       case '+':
3047       case '-':
3048       case '&':
3049       case '|':
3050         if (p[0] == '-' && p[1] == '>')
3051           {
3052             /* Struct pointer member operator 'operator->'.  */
3053             if (p[2] == '*')
3054               {
3055                 *end = p + 3;   /* 'operator->*' */
3056                 return p;
3057               }
3058             else if (p[2] == '\\')
3059               {
3060                 *end = p + 4;   /* Hopefully 'operator->\*' */
3061                 return p;
3062               }
3063             else
3064               {
3065                 *end = p + 2;   /* 'operator->' */
3066                 return p;
3067               }
3068           }
3069         if (p[1] == '=' || p[1] == p[0])
3070           *end = p + 2;
3071         else
3072           *end = p + 1;
3073         return p;
3074       case '~':
3075       case ',':
3076         *end = p + 1;
3077         return p;
3078       case '(':
3079         if (p[1] != ')')
3080           error (_("`operator ()' must be specified "
3081                    "without whitespace in `()'"));
3082         *end = p + 2;
3083         return p;
3084       case '?':
3085         if (p[1] != ':')
3086           error (_("`operator ?:' must be specified "
3087                    "without whitespace in `?:'"));
3088         *end = p + 2;
3089         return p;
3090       case '[':
3091         if (p[1] != ']')
3092           error (_("`operator []' must be specified "
3093                    "without whitespace in `[]'"));
3094         *end = p + 2;
3095         return p;
3096       default:
3097         error (_("`operator %s' not supported"), p);
3098         break;
3099       }
3100
3101   *end = "";
3102   return *end;
3103 }
3104 \f
3105
3106 /* Cache to watch for file names already seen by filename_seen.  */
3107
3108 struct filename_seen_cache
3109 {
3110   /* Table of files seen so far.  */
3111   htab_t tab;
3112   /* Initial size of the table.  It automagically grows from here.  */
3113 #define INITIAL_FILENAME_SEEN_CACHE_SIZE 100
3114 };
3115
3116 /* filename_seen_cache constructor.  */
3117
3118 static struct filename_seen_cache *
3119 create_filename_seen_cache (void)
3120 {
3121   struct filename_seen_cache *cache;
3122
3123   cache = XNEW (struct filename_seen_cache);
3124   cache->tab = htab_create_alloc (INITIAL_FILENAME_SEEN_CACHE_SIZE,
3125                                   filename_hash, filename_eq,
3126                                   NULL, xcalloc, xfree);
3127
3128   return cache;
3129 }
3130
3131 /* Empty the cache, but do not delete it.  */
3132
3133 static void
3134 clear_filename_seen_cache (struct filename_seen_cache *cache)
3135 {
3136   htab_empty (cache->tab);
3137 }
3138
3139 /* filename_seen_cache destructor.
3140    This takes a void * argument as it is generally used as a cleanup.  */
3141
3142 static void
3143 delete_filename_seen_cache (void *ptr)
3144 {
3145   struct filename_seen_cache *cache = ptr;
3146
3147   htab_delete (cache->tab);
3148   xfree (cache);
3149 }
3150
3151 /* If FILE is not already in the table of files in CACHE, return zero;
3152    otherwise return non-zero.  Optionally add FILE to the table if ADD
3153    is non-zero.
3154
3155    NOTE: We don't manage space for FILE, we assume FILE lives as long
3156    as the caller needs.  */
3157
3158 static int
3159 filename_seen (struct filename_seen_cache *cache, const char *file, int add)
3160 {
3161   void **slot;
3162
3163   /* Is FILE in tab?  */
3164   slot = htab_find_slot (cache->tab, file, add ? INSERT : NO_INSERT);
3165   if (*slot != NULL)
3166     return 1;
3167
3168   /* No; maybe add it to tab.  */
3169   if (add)
3170     *slot = (char *) file;
3171
3172   return 0;
3173 }
3174
3175 /* Data structure to maintain printing state for output_source_filename.  */
3176
3177 struct output_source_filename_data
3178 {
3179   /* Cache of what we've seen so far.  */
3180   struct filename_seen_cache *filename_seen_cache;
3181
3182   /* Flag of whether we're printing the first one.  */
3183   int first;
3184 };
3185
3186 /* Slave routine for sources_info.  Force line breaks at ,'s.
3187    NAME is the name to print.
3188    DATA contains the state for printing and watching for duplicates.  */
3189
3190 static void
3191 output_source_filename (const char *name,
3192                         struct output_source_filename_data *data)
3193 {
3194   /* Since a single source file can result in several partial symbol
3195      tables, we need to avoid printing it more than once.  Note: if
3196      some of the psymtabs are read in and some are not, it gets
3197      printed both under "Source files for which symbols have been
3198      read" and "Source files for which symbols will be read in on
3199      demand".  I consider this a reasonable way to deal with the
3200      situation.  I'm not sure whether this can also happen for
3201      symtabs; it doesn't hurt to check.  */
3202
3203   /* Was NAME already seen?  */
3204   if (filename_seen (data->filename_seen_cache, name, 1))
3205     {
3206       /* Yes; don't print it again.  */
3207       return;
3208     }
3209
3210   /* No; print it and reset *FIRST.  */
3211   if (! data->first)
3212     printf_filtered (", ");
3213   data->first = 0;
3214
3215   wrap_here ("");
3216   fputs_filtered (name, gdb_stdout);
3217 }
3218
3219 /* A callback for map_partial_symbol_filenames.  */
3220
3221 static void
3222 output_partial_symbol_filename (const char *filename, const char *fullname,
3223                                 void *data)
3224 {
3225   output_source_filename (fullname ? fullname : filename, data);
3226 }
3227
3228 static void
3229 sources_info (char *ignore, int from_tty)
3230 {
3231   struct symtab *s;
3232   struct objfile *objfile;
3233   struct output_source_filename_data data;
3234   struct cleanup *cleanups;
3235
3236   if (!have_full_symbols () && !have_partial_symbols ())
3237     {
3238       error (_("No symbol table is loaded.  Use the \"file\" command."));
3239     }
3240
3241   data.filename_seen_cache = create_filename_seen_cache ();
3242   cleanups = make_cleanup (delete_filename_seen_cache,
3243                            data.filename_seen_cache);
3244
3245   printf_filtered ("Source files for which symbols have been read in:\n\n");
3246
3247   data.first = 1;
3248   ALL_SYMTABS (objfile, s)
3249   {
3250     const char *fullname = symtab_to_fullname (s);
3251
3252     output_source_filename (fullname ? fullname : s->filename, &data);
3253   }
3254   printf_filtered ("\n\n");
3255
3256   printf_filtered ("Source files for which symbols "
3257                    "will be read in on demand:\n\n");
3258
3259   clear_filename_seen_cache (data.filename_seen_cache);
3260   data.first = 1;
3261   map_partial_symbol_filenames (output_partial_symbol_filename, &data,
3262                                 1 /*need_fullname*/);
3263   printf_filtered ("\n");
3264
3265   do_cleanups (cleanups);
3266 }
3267
3268 static int
3269 file_matches (const char *file, char *files[], int nfiles)
3270 {
3271   int i;
3272
3273   if (file != NULL && nfiles != 0)
3274     {
3275       for (i = 0; i < nfiles; i++)
3276         {
3277           if (filename_cmp (files[i], lbasename (file)) == 0)
3278             return 1;
3279         }
3280     }
3281   else if (nfiles == 0)
3282     return 1;
3283   return 0;
3284 }
3285
3286 /* Free any memory associated with a search.  */
3287
3288 void
3289 free_search_symbols (struct symbol_search *symbols)
3290 {
3291   struct symbol_search *p;
3292   struct symbol_search *next;
3293
3294   for (p = symbols; p != NULL; p = next)
3295     {
3296       next = p->next;
3297       xfree (p);
3298     }
3299 }
3300
3301 static void
3302 do_free_search_symbols_cleanup (void *symbols)
3303 {
3304   free_search_symbols (symbols);
3305 }
3306
3307 struct cleanup *
3308 make_cleanup_free_search_symbols (struct symbol_search *symbols)
3309 {
3310   return make_cleanup (do_free_search_symbols_cleanup, symbols);
3311 }
3312
3313 /* Helper function for sort_search_symbols and qsort.  Can only
3314    sort symbols, not minimal symbols.  */
3315
3316 static int
3317 compare_search_syms (const void *sa, const void *sb)
3318 {
3319   struct symbol_search **sym_a = (struct symbol_search **) sa;
3320   struct symbol_search **sym_b = (struct symbol_search **) sb;
3321
3322   return strcmp (SYMBOL_PRINT_NAME ((*sym_a)->symbol),
3323                  SYMBOL_PRINT_NAME ((*sym_b)->symbol));
3324 }
3325
3326 /* Sort the ``nfound'' symbols in the list after prevtail.  Leave
3327    prevtail where it is, but update its next pointer to point to
3328    the first of the sorted symbols.  */
3329
3330 static struct symbol_search *
3331 sort_search_symbols (struct symbol_search *prevtail, int nfound)
3332 {
3333   struct symbol_search **symbols, *symp, *old_next;
3334   int i;
3335
3336   symbols = (struct symbol_search **) xmalloc (sizeof (struct symbol_search *)
3337                                                * nfound);
3338   symp = prevtail->next;
3339   for (i = 0; i < nfound; i++)
3340     {
3341       symbols[i] = symp;
3342       symp = symp->next;
3343     }
3344   /* Generally NULL.  */
3345   old_next = symp;
3346
3347   qsort (symbols, nfound, sizeof (struct symbol_search *),
3348          compare_search_syms);
3349
3350   symp = prevtail;
3351   for (i = 0; i < nfound; i++)
3352     {
3353       symp->next = symbols[i];
3354       symp = symp->next;
3355     }
3356   symp->next = old_next;
3357
3358   xfree (symbols);
3359   return symp;
3360 }
3361
3362 /* An object of this type is passed as the user_data to the
3363    expand_symtabs_matching method.  */
3364 struct search_symbols_data
3365 {
3366   int nfiles;
3367   char **files;
3368
3369   /* It is true if PREG contains valid data, false otherwise.  */
3370   unsigned preg_p : 1;
3371   regex_t preg;
3372 };
3373
3374 /* A callback for expand_symtabs_matching.  */
3375
3376 static int
3377 search_symbols_file_matches (const char *filename, void *user_data)
3378 {
3379   struct search_symbols_data *data = user_data;
3380
3381   return file_matches (filename, data->files, data->nfiles);
3382 }
3383
3384 /* A callback for expand_symtabs_matching.  */
3385
3386 static int
3387 search_symbols_name_matches (const char *symname, void *user_data)
3388 {
3389   struct search_symbols_data *data = user_data;
3390
3391   return !data->preg_p || regexec (&data->preg, symname, 0, NULL, 0) == 0;
3392 }
3393
3394 /* Search the symbol table for matches to the regular expression REGEXP,
3395    returning the results in *MATCHES.
3396
3397    Only symbols of KIND are searched:
3398    VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
3399                       and constants (enums)
3400    FUNCTIONS_DOMAIN - search all functions
3401    TYPES_DOMAIN     - search all type names
3402    ALL_DOMAIN       - an internal error for this function
3403
3404    free_search_symbols should be called when *MATCHES is no longer needed.
3405
3406    The results are sorted locally; each symtab's global and static blocks are
3407    separately alphabetized.  */
3408
3409 void
3410 search_symbols (char *regexp, enum search_domain kind,
3411                 int nfiles, char *files[],
3412                 struct symbol_search **matches)
3413 {
3414   struct symtab *s;
3415   struct blockvector *bv;
3416   struct block *b;
3417   int i = 0;
3418   struct block_iterator iter;
3419   struct symbol *sym;
3420   struct objfile *objfile;
3421   struct minimal_symbol *msymbol;
3422   int found_misc = 0;
3423   static const enum minimal_symbol_type types[]
3424     = {mst_data, mst_text, mst_abs};
3425   static const enum minimal_symbol_type types2[]
3426     = {mst_bss, mst_file_text, mst_abs};
3427   static const enum minimal_symbol_type types3[]
3428     = {mst_file_data, mst_solib_trampoline, mst_abs};
3429   static const enum minimal_symbol_type types4[]
3430     = {mst_file_bss, mst_text_gnu_ifunc, mst_abs};
3431   enum minimal_symbol_type ourtype;
3432   enum minimal_symbol_type ourtype2;
3433   enum minimal_symbol_type ourtype3;
3434   enum minimal_symbol_type ourtype4;
3435   struct symbol_search *sr;
3436   struct symbol_search *psr;
3437   struct symbol_search *tail;
3438   struct search_symbols_data datum;
3439
3440   /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
3441      CLEANUP_CHAIN is freed only in the case of an error.  */
3442   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
3443   struct cleanup *retval_chain;
3444
3445   gdb_assert (kind <= TYPES_DOMAIN);
3446
3447   ourtype = types[kind];
3448   ourtype2 = types2[kind];
3449   ourtype3 = types3[kind];
3450   ourtype4 = types4[kind];
3451
3452   sr = *matches = NULL;
3453   tail = NULL;
3454   datum.preg_p = 0;
3455
3456   if (regexp != NULL)
3457     {
3458       /* Make sure spacing is right for C++ operators.
3459          This is just a courtesy to make the matching less sensitive
3460          to how many spaces the user leaves between 'operator'
3461          and <TYPENAME> or <OPERATOR>.  */
3462       char *opend;
3463       char *opname = operator_chars (regexp, &opend);
3464       int errcode;
3465
3466       if (*opname)
3467         {
3468           int fix = -1;         /* -1 means ok; otherwise number of
3469                                     spaces needed.  */
3470
3471           if (isalpha (*opname) || *opname == '_' || *opname == '$')
3472             {
3473               /* There should 1 space between 'operator' and 'TYPENAME'.  */
3474               if (opname[-1] != ' ' || opname[-2] == ' ')
3475                 fix = 1;
3476             }
3477           else
3478             {
3479               /* There should 0 spaces between 'operator' and 'OPERATOR'.  */
3480               if (opname[-1] == ' ')
3481                 fix = 0;
3482             }
3483           /* If wrong number of spaces, fix it.  */
3484           if (fix >= 0)
3485             {
3486               char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
3487
3488               sprintf (tmp, "operator%.*s%s", fix, " ", opname);
3489               regexp = tmp;
3490             }
3491         }
3492
3493       errcode = regcomp (&datum.preg, regexp,
3494                          REG_NOSUB | (case_sensitivity == case_sensitive_off
3495                                       ? REG_ICASE : 0));
3496       if (errcode != 0)
3497         {
3498           char *err = get_regcomp_error (errcode, &datum.preg);
3499
3500           make_cleanup (xfree, err);
3501           error (_("Invalid regexp (%s): %s"), err, regexp);
3502         }
3503       datum.preg_p = 1;
3504       make_regfree_cleanup (&datum.preg);
3505     }
3506
3507   /* Search through the partial symtabs *first* for all symbols
3508      matching the regexp.  That way we don't have to reproduce all of
3509      the machinery below.  */
3510
3511   datum.nfiles = nfiles;
3512   datum.files = files;
3513   ALL_OBJFILES (objfile)
3514   {
3515     if (objfile->sf)
3516       objfile->sf->qf->expand_symtabs_matching (objfile,
3517                                                 (nfiles == 0
3518                                                  ? NULL
3519                                                  : search_symbols_file_matches),
3520                                                 search_symbols_name_matches,
3521                                                 kind,
3522                                                 &datum);
3523   }
3524
3525   retval_chain = old_chain;
3526
3527   /* Here, we search through the minimal symbol tables for functions
3528      and variables that match, and force their symbols to be read.
3529      This is in particular necessary for demangled variable names,
3530      which are no longer put into the partial symbol tables.
3531      The symbol will then be found during the scan of symtabs below.
3532
3533      For functions, find_pc_symtab should succeed if we have debug info
3534      for the function, for variables we have to call
3535      lookup_symbol_in_objfile_from_linkage_name to determine if the variable
3536      has debug info.
3537      If the lookup fails, set found_misc so that we will rescan to print
3538      any matching symbols without debug info.
3539      We only search the objfile the msymbol came from, we no longer search
3540      all objfiles.  In large programs (1000s of shared libs) searching all
3541      objfiles is not worth the pain.  */
3542
3543   if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
3544     {
3545       ALL_MSYMBOLS (objfile, msymbol)
3546       {
3547         QUIT;
3548
3549         if (msymbol->created_by_gdb)
3550           continue;
3551
3552         if (MSYMBOL_TYPE (msymbol) == ourtype
3553             || MSYMBOL_TYPE (msymbol) == ourtype2
3554             || MSYMBOL_TYPE (msymbol) == ourtype3
3555             || MSYMBOL_TYPE (msymbol) == ourtype4)
3556           {
3557             if (!datum.preg_p
3558                 || regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0,
3559                             NULL, 0) == 0)
3560               {
3561                 /* Note: An important side-effect of these lookup functions
3562                    is to expand the symbol table if msymbol is found, for the
3563                    benefit of the next loop on ALL_PRIMARY_SYMTABS.  */
3564                 if (kind == FUNCTIONS_DOMAIN
3565                     ? find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)) == NULL
3566                     : (lookup_symbol_in_objfile_from_linkage_name
3567                        (objfile, SYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
3568                        == NULL))
3569                   found_misc = 1;
3570               }
3571           }
3572       }
3573     }
3574
3575   ALL_PRIMARY_SYMTABS (objfile, s)
3576   {
3577     bv = BLOCKVECTOR (s);
3578     for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
3579       {
3580         struct symbol_search *prevtail = tail;
3581         int nfound = 0;
3582
3583         b = BLOCKVECTOR_BLOCK (bv, i);
3584         ALL_BLOCK_SYMBOLS (b, iter, sym)
3585           {
3586             struct symtab *real_symtab = SYMBOL_SYMTAB (sym);
3587
3588             QUIT;
3589
3590             if (file_matches (real_symtab->filename, files, nfiles)
3591                 && ((!datum.preg_p
3592                      || regexec (&datum.preg, SYMBOL_NATURAL_NAME (sym), 0,
3593                                  NULL, 0) == 0)
3594                     && ((kind == VARIABLES_DOMAIN
3595                          && SYMBOL_CLASS (sym) != LOC_TYPEDEF
3596                          && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
3597                          && SYMBOL_CLASS (sym) != LOC_BLOCK
3598                          /* LOC_CONST can be used for more than just enums,
3599                             e.g., c++ static const members.
3600                             We only want to skip enums here.  */
3601                          && !(SYMBOL_CLASS (sym) == LOC_CONST
3602                               && TYPE_CODE (SYMBOL_TYPE (sym))
3603                               == TYPE_CODE_ENUM))
3604                         || (kind == FUNCTIONS_DOMAIN 
3605                             && SYMBOL_CLASS (sym) == LOC_BLOCK)
3606                         || (kind == TYPES_DOMAIN
3607                             && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
3608               {
3609                 /* match */
3610                 psr = (struct symbol_search *)
3611                   xmalloc (sizeof (struct symbol_search));
3612                 psr->block = i;
3613                 psr->symtab = real_symtab;
3614                 psr->symbol = sym;
3615                 psr->msymbol = NULL;
3616                 psr->next = NULL;
3617                 if (tail == NULL)
3618                   sr = psr;
3619                 else
3620                   tail->next = psr;
3621                 tail = psr;
3622                 nfound ++;
3623               }
3624           }
3625         if (nfound > 0)
3626           {
3627             if (prevtail == NULL)
3628               {
3629                 struct symbol_search dummy;
3630
3631                 dummy.next = sr;
3632                 tail = sort_search_symbols (&dummy, nfound);
3633                 sr = dummy.next;
3634
3635                 make_cleanup_free_search_symbols (sr);
3636               }
3637             else
3638               tail = sort_search_symbols (prevtail, nfound);
3639           }
3640       }
3641   }
3642
3643   /* If there are no eyes, avoid all contact.  I mean, if there are
3644      no debug symbols, then print directly from the msymbol_vector.  */
3645
3646   if (found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
3647     {
3648       ALL_MSYMBOLS (objfile, msymbol)
3649       {
3650         QUIT;
3651
3652         if (msymbol->created_by_gdb)
3653           continue;
3654
3655         if (MSYMBOL_TYPE (msymbol) == ourtype
3656             || MSYMBOL_TYPE (msymbol) == ourtype2
3657             || MSYMBOL_TYPE (msymbol) == ourtype3
3658             || MSYMBOL_TYPE (msymbol) == ourtype4)
3659           {
3660             if (!datum.preg_p
3661                 || regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0,
3662                             NULL, 0) == 0)
3663               {
3664                 /* For functions we can do a quick check of whether the
3665                    symbol might be found via find_pc_symtab.  */
3666                 if (kind != FUNCTIONS_DOMAIN
3667                     || find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)) == NULL)
3668                   {
3669                     if (lookup_symbol_in_objfile_from_linkage_name
3670                         (objfile, SYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
3671                         == NULL)
3672                       {
3673                         /* match */
3674                         psr = (struct symbol_search *)
3675                           xmalloc (sizeof (struct symbol_search));
3676                         psr->block = i;
3677                         psr->msymbol = msymbol;
3678                         psr->symtab = NULL;
3679                         psr->symbol = NULL;
3680                         psr->next = NULL;
3681                         if (tail == NULL)
3682                           {
3683                             sr = psr;
3684                             make_cleanup_free_search_symbols (sr);
3685                           }
3686                         else
3687                           tail->next = psr;
3688                         tail = psr;
3689                       }
3690                   }
3691               }
3692           }
3693       }
3694     }
3695
3696   discard_cleanups (retval_chain);
3697   do_cleanups (old_chain);
3698   *matches = sr;
3699 }
3700
3701 /* Helper function for symtab_symbol_info, this function uses
3702    the data returned from search_symbols() to print information
3703    regarding the match to gdb_stdout.  */
3704
3705 static void
3706 print_symbol_info (enum search_domain kind,
3707                    struct symtab *s, struct symbol *sym,
3708                    int block, char *last)
3709 {
3710   if (last == NULL || filename_cmp (last, s->filename) != 0)
3711     {
3712       fputs_filtered ("\nFile ", gdb_stdout);
3713       fputs_filtered (s->filename, gdb_stdout);
3714       fputs_filtered (":\n", gdb_stdout);
3715     }
3716
3717   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
3718     printf_filtered ("static ");
3719
3720   /* Typedef that is not a C++ class.  */
3721   if (kind == TYPES_DOMAIN
3722       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
3723     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
3724   /* variable, func, or typedef-that-is-c++-class.  */
3725   else if (kind < TYPES_DOMAIN
3726            || (kind == TYPES_DOMAIN
3727                && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
3728     {
3729       type_print (SYMBOL_TYPE (sym),
3730                   (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3731                    ? "" : SYMBOL_PRINT_NAME (sym)),
3732                   gdb_stdout, 0);
3733
3734       printf_filtered (";\n");
3735     }
3736 }
3737
3738 /* This help function for symtab_symbol_info() prints information
3739    for non-debugging symbols to gdb_stdout.  */
3740
3741 static void
3742 print_msymbol_info (struct minimal_symbol *msymbol)
3743 {
3744   struct gdbarch *gdbarch = get_objfile_arch (msymbol_objfile (msymbol));
3745   char *tmp;
3746
3747   if (gdbarch_addr_bit (gdbarch) <= 32)
3748     tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol)
3749                              & (CORE_ADDR) 0xffffffff,
3750                              8);
3751   else
3752     tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol),
3753                              16);
3754   printf_filtered ("%s  %s\n",
3755                    tmp, SYMBOL_PRINT_NAME (msymbol));
3756 }
3757
3758 /* This is the guts of the commands "info functions", "info types", and
3759    "info variables".  It calls search_symbols to find all matches and then
3760    print_[m]symbol_info to print out some useful information about the
3761    matches.  */
3762
3763 static void
3764 symtab_symbol_info (char *regexp, enum search_domain kind, int from_tty)
3765 {
3766   static const char * const classnames[] =
3767     {"variable", "function", "type"};
3768   struct symbol_search *symbols;
3769   struct symbol_search *p;
3770   struct cleanup *old_chain;
3771   char *last_filename = NULL;
3772   int first = 1;
3773
3774   gdb_assert (kind <= TYPES_DOMAIN);
3775
3776   /* Must make sure that if we're interrupted, symbols gets freed.  */
3777   search_symbols (regexp, kind, 0, (char **) NULL, &symbols);
3778   old_chain = make_cleanup_free_search_symbols (symbols);
3779
3780   printf_filtered (regexp
3781                    ? "All %ss matching regular expression \"%s\":\n"
3782                    : "All defined %ss:\n",
3783                    classnames[kind], regexp);
3784
3785   for (p = symbols; p != NULL; p = p->next)
3786     {
3787       QUIT;
3788
3789       if (p->msymbol != NULL)
3790         {
3791           if (first)
3792             {
3793               printf_filtered ("\nNon-debugging symbols:\n");
3794               first = 0;
3795             }
3796           print_msymbol_info (p->msymbol);
3797         }
3798       else
3799         {
3800           print_symbol_info (kind,
3801                              p->symtab,
3802                              p->symbol,
3803                              p->block,
3804                              last_filename);
3805           last_filename = p->symtab->filename;
3806         }
3807     }
3808
3809   do_cleanups (old_chain);
3810 }
3811
3812 static void
3813 variables_info (char *regexp, int from_tty)
3814 {
3815   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
3816 }
3817
3818 static void
3819 functions_info (char *regexp, int from_tty)
3820 {
3821   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
3822 }
3823
3824
3825 static void
3826 types_info (char *regexp, int from_tty)
3827 {
3828   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
3829 }
3830
3831 /* Breakpoint all functions matching regular expression.  */
3832
3833 void
3834 rbreak_command_wrapper (char *regexp, int from_tty)
3835 {
3836   rbreak_command (regexp, from_tty);
3837 }
3838
3839 /* A cleanup function that calls end_rbreak_breakpoints.  */
3840
3841 static void
3842 do_end_rbreak_breakpoints (void *ignore)
3843 {
3844   end_rbreak_breakpoints ();
3845 }
3846
3847 static void
3848 rbreak_command (char *regexp, int from_tty)
3849 {
3850   struct symbol_search *ss;
3851   struct symbol_search *p;
3852   struct cleanup *old_chain;
3853   char *string = NULL;
3854   int len = 0;
3855   char **files = NULL, *file_name;
3856   int nfiles = 0;
3857
3858   if (regexp)
3859     {
3860       char *colon = strchr (regexp, ':');
3861
3862       if (colon && *(colon + 1) != ':')
3863         {
3864           int colon_index;
3865
3866           colon_index = colon - regexp;
3867           file_name = alloca (colon_index + 1);
3868           memcpy (file_name, regexp, colon_index);
3869           file_name[colon_index--] = 0;
3870           while (isspace (file_name[colon_index]))
3871             file_name[colon_index--] = 0; 
3872           files = &file_name;
3873           nfiles = 1;
3874           regexp = colon + 1;
3875           while (isspace (*regexp))  regexp++; 
3876         }
3877     }
3878
3879   search_symbols (regexp, FUNCTIONS_DOMAIN, nfiles, files, &ss);
3880   old_chain = make_cleanup_free_search_symbols (ss);
3881   make_cleanup (free_current_contents, &string);
3882
3883   start_rbreak_breakpoints ();
3884   make_cleanup (do_end_rbreak_breakpoints, NULL);
3885   for (p = ss; p != NULL; p = p->next)
3886     {
3887       if (p->msymbol == NULL)
3888         {
3889           int newlen = (strlen (p->symtab->filename)
3890                         + strlen (SYMBOL_LINKAGE_NAME (p->symbol))
3891                         + 4);
3892
3893           if (newlen > len)
3894             {
3895               string = xrealloc (string, newlen);
3896               len = newlen;
3897             }
3898           strcpy (string, p->symtab->filename);
3899           strcat (string, ":'");
3900           strcat (string, SYMBOL_LINKAGE_NAME (p->symbol));
3901           strcat (string, "'");
3902           break_command (string, from_tty);
3903           print_symbol_info (FUNCTIONS_DOMAIN,
3904                              p->symtab,
3905                              p->symbol,
3906                              p->block,
3907                              p->symtab->filename);
3908         }
3909       else
3910         {
3911           int newlen = (strlen (SYMBOL_LINKAGE_NAME (p->msymbol)) + 3);
3912
3913           if (newlen > len)
3914             {
3915               string = xrealloc (string, newlen);
3916               len = newlen;
3917             }
3918           strcpy (string, "'");
3919           strcat (string, SYMBOL_LINKAGE_NAME (p->msymbol));
3920           strcat (string, "'");
3921
3922           break_command (string, from_tty);
3923           printf_filtered ("<function, no debug info> %s;\n",
3924                            SYMBOL_PRINT_NAME (p->msymbol));
3925         }
3926     }
3927
3928   do_cleanups (old_chain);
3929 }
3930 \f
3931
3932 /* Evaluate if NAME matches SYM_TEXT and SYM_TEXT_LEN.
3933
3934    Either sym_text[sym_text_len] != '(' and then we search for any
3935    symbol starting with SYM_TEXT text.
3936
3937    Otherwise sym_text[sym_text_len] == '(' and then we require symbol name to
3938    be terminated at that point.  Partial symbol tables do not have parameters
3939    information.  */
3940
3941 static int
3942 compare_symbol_name (const char *name, const char *sym_text, int sym_text_len)
3943 {
3944   int (*ncmp) (const char *, const char *, size_t);
3945
3946   ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
3947
3948   if (ncmp (name, sym_text, sym_text_len) != 0)
3949     return 0;
3950
3951   if (sym_text[sym_text_len] == '(')
3952     {
3953       /* User searches for `name(someth...'.  Require NAME to be terminated.
3954          Normally psymtabs and gdbindex have no parameter types so '\0' will be
3955          present but accept even parameters presence.  In this case this
3956          function is in fact strcmp_iw but whitespace skipping is not supported
3957          for tab completion.  */
3958
3959       if (name[sym_text_len] != '\0' && name[sym_text_len] != '(')
3960         return 0;
3961     }
3962
3963   return 1;
3964 }
3965
3966 /* Free any memory associated with a completion list.  */
3967
3968 static void
3969 free_completion_list (VEC (char_ptr) **list_ptr)
3970 {
3971   int i;
3972   char *p;
3973
3974   for (i = 0; VEC_iterate (char_ptr, *list_ptr, i, p); ++i)
3975     xfree (p);
3976   VEC_free (char_ptr, *list_ptr);
3977 }
3978
3979 /* Callback for make_cleanup.  */
3980
3981 static void
3982 do_free_completion_list (void *list)
3983 {
3984   free_completion_list (list);
3985 }
3986
3987 /* Helper routine for make_symbol_completion_list.  */
3988
3989 static VEC (char_ptr) *return_val;
3990
3991 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
3992       completion_list_add_name \
3993         (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
3994
3995 /*  Test to see if the symbol specified by SYMNAME (which is already
3996    demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
3997    characters.  If so, add it to the current completion list.  */
3998
3999 static void
4000 completion_list_add_name (const char *symname,
4001                           const char *sym_text, int sym_text_len,
4002                           const char *text, const char *word)
4003 {
4004   int newsize;
4005
4006   /* Clip symbols that cannot match.  */
4007   if (!compare_symbol_name (symname, sym_text, sym_text_len))
4008     return;
4009
4010   /* We have a match for a completion, so add SYMNAME to the current list
4011      of matches.  Note that the name is moved to freshly malloc'd space.  */
4012
4013   {
4014     char *new;
4015
4016     if (word == sym_text)
4017       {
4018         new = xmalloc (strlen (symname) + 5);
4019         strcpy (new, symname);
4020       }
4021     else if (word > sym_text)
4022       {
4023         /* Return some portion of symname.  */
4024         new = xmalloc (strlen (symname) + 5);
4025         strcpy (new, symname + (word - sym_text));
4026       }
4027     else
4028       {
4029         /* Return some of SYM_TEXT plus symname.  */
4030         new = xmalloc (strlen (symname) + (sym_text - word) + 5);
4031         strncpy (new, word, sym_text - word);
4032         new[sym_text - word] = '\0';
4033         strcat (new, symname);
4034       }
4035
4036     VEC_safe_push (char_ptr, return_val, new);
4037   }
4038 }
4039
4040 /* ObjC: In case we are completing on a selector, look as the msymbol
4041    again and feed all the selectors into the mill.  */
4042
4043 static void
4044 completion_list_objc_symbol (struct minimal_symbol *msymbol,
4045                              const char *sym_text, int sym_text_len,
4046                              const char *text, const char *word)
4047 {
4048   static char *tmp = NULL;
4049   static unsigned int tmplen = 0;
4050
4051   const char *method, *category, *selector;
4052   char *tmp2 = NULL;
4053
4054   method = SYMBOL_NATURAL_NAME (msymbol);
4055
4056   /* Is it a method?  */
4057   if ((method[0] != '-') && (method[0] != '+'))
4058     return;
4059
4060   if (sym_text[0] == '[')
4061     /* Complete on shortened method method.  */
4062     completion_list_add_name (method + 1, sym_text, sym_text_len, text, word);
4063
4064   while ((strlen (method) + 1) >= tmplen)
4065     {
4066       if (tmplen == 0)
4067         tmplen = 1024;
4068       else
4069         tmplen *= 2;
4070       tmp = xrealloc (tmp, tmplen);
4071     }
4072   selector = strchr (method, ' ');
4073   if (selector != NULL)
4074     selector++;
4075
4076   category = strchr (method, '(');
4077
4078   if ((category != NULL) && (selector != NULL))
4079     {
4080       memcpy (tmp, method, (category - method));
4081       tmp[category - method] = ' ';
4082       memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
4083       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
4084       if (sym_text[0] == '[')
4085         completion_list_add_name (tmp + 1, sym_text, sym_text_len, text, word);
4086     }
4087
4088   if (selector != NULL)
4089     {
4090       /* Complete on selector only.  */
4091       strcpy (tmp, selector);
4092       tmp2 = strchr (tmp, ']');
4093       if (tmp2 != NULL)
4094         *tmp2 = '\0';
4095
4096       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
4097     }
4098 }
4099
4100 /* Break the non-quoted text based on the characters which are in
4101    symbols.  FIXME: This should probably be language-specific.  */
4102
4103 static char *
4104 language_search_unquoted_string (char *text, char *p)
4105 {
4106   for (; p > text; --p)
4107     {
4108       if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
4109         continue;
4110       else
4111         {
4112           if ((current_language->la_language == language_objc))
4113             {
4114               if (p[-1] == ':')     /* Might be part of a method name.  */
4115                 continue;
4116               else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
4117                 p -= 2;             /* Beginning of a method name.  */
4118               else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
4119                 {                   /* Might be part of a method name.  */
4120                   char *t = p;
4121
4122                   /* Seeing a ' ' or a '(' is not conclusive evidence
4123                      that we are in the middle of a method name.  However,
4124                      finding "-[" or "+[" should be pretty un-ambiguous.
4125                      Unfortunately we have to find it now to decide.  */
4126
4127                   while (t > text)
4128                     if (isalnum (t[-1]) || t[-1] == '_' ||
4129                         t[-1] == ' '    || t[-1] == ':' ||
4130                         t[-1] == '('    || t[-1] == ')')
4131                       --t;
4132                     else
4133                       break;
4134
4135                   if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
4136                     p = t - 2;      /* Method name detected.  */
4137                   /* Else we leave with p unchanged.  */
4138                 }
4139             }
4140           break;
4141         }
4142     }
4143   return p;
4144 }
4145
4146 static void
4147 completion_list_add_fields (struct symbol *sym, char *sym_text,
4148                             int sym_text_len, char *text, char *word)
4149 {
4150   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
4151     {
4152       struct type *t = SYMBOL_TYPE (sym);
4153       enum type_code c = TYPE_CODE (t);
4154       int j;
4155
4156       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
4157         for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
4158           if (TYPE_FIELD_NAME (t, j))
4159             completion_list_add_name (TYPE_FIELD_NAME (t, j),
4160                                       sym_text, sym_text_len, text, word);
4161     }
4162 }
4163
4164 /* Type of the user_data argument passed to add_macro_name or
4165    expand_partial_symbol_name.  The contents are simply whatever is
4166    needed by completion_list_add_name.  */
4167 struct add_name_data
4168 {
4169   char *sym_text;
4170   int sym_text_len;
4171   char *text;
4172   char *word;
4173 };
4174
4175 /* A callback used with macro_for_each and macro_for_each_in_scope.
4176    This adds a macro's name to the current completion list.  */
4177
4178 static void
4179 add_macro_name (const char *name, const struct macro_definition *ignore,
4180                 struct macro_source_file *ignore2, int ignore3,
4181                 void *user_data)
4182 {
4183   struct add_name_data *datum = (struct add_name_data *) user_data;
4184
4185   completion_list_add_name ((char *) name,
4186                             datum->sym_text, datum->sym_text_len,
4187                             datum->text, datum->word);
4188 }
4189
4190 /* A callback for expand_partial_symbol_names.  */
4191
4192 static int
4193 expand_partial_symbol_name (const char *name, void *user_data)
4194 {
4195   struct add_name_data *datum = (struct add_name_data *) user_data;
4196
4197   return compare_symbol_name (name, datum->sym_text, datum->sym_text_len);
4198 }
4199
4200 VEC (char_ptr) *
4201 default_make_symbol_completion_list_break_on (char *text, char *word,
4202                                               const char *break_on)
4203 {
4204   /* Problem: All of the symbols have to be copied because readline
4205      frees them.  I'm not going to worry about this; hopefully there
4206      won't be that many.  */
4207
4208   struct symbol *sym;
4209   struct symtab *s;
4210   struct minimal_symbol *msymbol;
4211   struct objfile *objfile;
4212   struct block *b;
4213   const struct block *surrounding_static_block, *surrounding_global_block;
4214   struct block_iterator iter;
4215   /* The symbol we are completing on.  Points in same buffer as text.  */
4216   char *sym_text;
4217   /* Length of sym_text.  */
4218   int sym_text_len;
4219   struct add_name_data datum;
4220   struct cleanup *back_to;
4221
4222   /* Now look for the symbol we are supposed to complete on.  */
4223   {
4224     char *p;
4225     char quote_found;
4226     char *quote_pos = NULL;
4227
4228     /* First see if this is a quoted string.  */
4229     quote_found = '\0';
4230     for (p = text; *p != '\0'; ++p)
4231       {
4232         if (quote_found != '\0')
4233           {
4234             if (*p == quote_found)
4235               /* Found close quote.  */
4236               quote_found = '\0';
4237             else if (*p == '\\' && p[1] == quote_found)
4238               /* A backslash followed by the quote character
4239                  doesn't end the string.  */
4240               ++p;
4241           }
4242         else if (*p == '\'' || *p == '"')
4243           {
4244             quote_found = *p;
4245             quote_pos = p;
4246           }
4247       }
4248     if (quote_found == '\'')
4249       /* A string within single quotes can be a symbol, so complete on it.  */
4250       sym_text = quote_pos + 1;
4251     else if (quote_found == '"')
4252       /* A double-quoted string is never a symbol, nor does it make sense
4253          to complete it any other way.  */
4254       {
4255         return NULL;
4256       }
4257     else
4258       {
4259         /* It is not a quoted string.  Break it based on the characters
4260            which are in symbols.  */
4261         while (p > text)
4262           {
4263             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
4264                 || p[-1] == ':' || strchr (break_on, p[-1]) != NULL)
4265               --p;
4266             else
4267               break;
4268           }
4269         sym_text = p;
4270       }
4271   }
4272
4273   sym_text_len = strlen (sym_text);
4274
4275   /* Prepare SYM_TEXT_LEN for compare_symbol_name.  */
4276
4277   if (current_language->la_language == language_cplus
4278       || current_language->la_language == language_java
4279       || current_language->la_language == language_fortran)
4280     {
4281       /* These languages may have parameters entered by user but they are never
4282          present in the partial symbol tables.  */
4283
4284       const char *cs = memchr (sym_text, '(', sym_text_len);
4285
4286       if (cs)
4287         sym_text_len = cs - sym_text;
4288     }
4289   gdb_assert (sym_text[sym_text_len] == '\0' || sym_text[sym_text_len] == '(');
4290
4291   return_val = NULL;
4292   back_to = make_cleanup (do_free_completion_list, &return_val);
4293
4294   datum.sym_text = sym_text;
4295   datum.sym_text_len = sym_text_len;
4296   datum.text = text;
4297   datum.word = word;
4298
4299   /* Look through the partial symtabs for all symbols which begin
4300      by matching SYM_TEXT.  Expand all CUs that you find to the list.
4301      The real names will get added by COMPLETION_LIST_ADD_SYMBOL below.  */
4302   expand_partial_symbol_names (expand_partial_symbol_name, &datum);
4303
4304   /* At this point scan through the misc symbol vectors and add each
4305      symbol you find to the list.  Eventually we want to ignore
4306      anything that isn't a text symbol (everything else will be
4307      handled by the psymtab code above).  */
4308
4309   ALL_MSYMBOLS (objfile, msymbol)
4310   {
4311     QUIT;
4312     COMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text, word);
4313
4314     completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text, word);
4315   }
4316
4317   /* Search upwards from currently selected frame (so that we can
4318      complete on local vars).  Also catch fields of types defined in
4319      this places which match our text string.  Only complete on types
4320      visible from current context.  */
4321
4322   b = get_selected_block (0);
4323   surrounding_static_block = block_static_block (b);
4324   surrounding_global_block = block_global_block (b);
4325   if (surrounding_static_block != NULL)
4326     while (b != surrounding_static_block)
4327       {
4328         QUIT;
4329
4330         ALL_BLOCK_SYMBOLS (b, iter, sym)
4331           {
4332             COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
4333                                         word);
4334             completion_list_add_fields (sym, sym_text, sym_text_len, text,
4335                                         word);
4336           }
4337
4338         /* Stop when we encounter an enclosing function.  Do not stop for
4339            non-inlined functions - the locals of the enclosing function
4340            are in scope for a nested function.  */
4341         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
4342           break;
4343         b = BLOCK_SUPERBLOCK (b);
4344       }
4345
4346   /* Add fields from the file's types; symbols will be added below.  */
4347
4348   if (surrounding_static_block != NULL)
4349     ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
4350       completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
4351
4352   if (surrounding_global_block != NULL)
4353       ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
4354         completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
4355
4356   /* Go through the symtabs and check the externs and statics for
4357      symbols which match.  */
4358
4359   ALL_PRIMARY_SYMTABS (objfile, s)
4360   {
4361     QUIT;
4362     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
4363     ALL_BLOCK_SYMBOLS (b, iter, sym)
4364       {
4365         COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4366       }
4367   }
4368
4369   ALL_PRIMARY_SYMTABS (objfile, s)
4370   {
4371     QUIT;
4372     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
4373     ALL_BLOCK_SYMBOLS (b, iter, sym)
4374       {
4375         COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4376       }
4377   }
4378
4379   if (current_language->la_macro_expansion == macro_expansion_c)
4380     {
4381       struct macro_scope *scope;
4382
4383       /* Add any macros visible in the default scope.  Note that this
4384          may yield the occasional wrong result, because an expression
4385          might be evaluated in a scope other than the default.  For
4386          example, if the user types "break file:line if <TAB>", the
4387          resulting expression will be evaluated at "file:line" -- but
4388          at there does not seem to be a way to detect this at
4389          completion time.  */
4390       scope = default_macro_scope ();
4391       if (scope)
4392         {
4393           macro_for_each_in_scope (scope->file, scope->line,
4394                                    add_macro_name, &datum);
4395           xfree (scope);
4396         }
4397
4398       /* User-defined macros are always visible.  */
4399       macro_for_each (macro_user_macros, add_macro_name, &datum);
4400     }
4401
4402   discard_cleanups (back_to);
4403   return (return_val);
4404 }
4405
4406 VEC (char_ptr) *
4407 default_make_symbol_completion_list (char *text, char *word)
4408 {
4409   return default_make_symbol_completion_list_break_on (text, word, "");
4410 }
4411
4412 /* Return a vector of all symbols (regardless of class) which begin by
4413    matching TEXT.  If the answer is no symbols, then the return value
4414    is NULL.  */
4415
4416 VEC (char_ptr) *
4417 make_symbol_completion_list (char *text, char *word)
4418 {
4419   return current_language->la_make_symbol_completion_list (text, word);
4420 }
4421
4422 /* Like make_symbol_completion_list, but suitable for use as a
4423    completion function.  */
4424
4425 VEC (char_ptr) *
4426 make_symbol_completion_list_fn (struct cmd_list_element *ignore,
4427                                 char *text, char *word)
4428 {
4429   return make_symbol_completion_list (text, word);
4430 }
4431
4432 /* Like make_symbol_completion_list, but returns a list of symbols
4433    defined in a source file FILE.  */
4434
4435 VEC (char_ptr) *
4436 make_file_symbol_completion_list (char *text, char *word, char *srcfile)
4437 {
4438   struct symbol *sym;
4439   struct symtab *s;
4440   struct block *b;
4441   struct block_iterator iter;
4442   /* The symbol we are completing on.  Points in same buffer as text.  */
4443   char *sym_text;
4444   /* Length of sym_text.  */
4445   int sym_text_len;
4446
4447   /* Now look for the symbol we are supposed to complete on.
4448      FIXME: This should be language-specific.  */
4449   {
4450     char *p;
4451     char quote_found;
4452     char *quote_pos = NULL;
4453
4454     /* First see if this is a quoted string.  */
4455     quote_found = '\0';
4456     for (p = text; *p != '\0'; ++p)
4457       {
4458         if (quote_found != '\0')
4459           {
4460             if (*p == quote_found)
4461               /* Found close quote.  */
4462               quote_found = '\0';
4463             else if (*p == '\\' && p[1] == quote_found)
4464               /* A backslash followed by the quote character
4465                  doesn't end the string.  */
4466               ++p;
4467           }
4468         else if (*p == '\'' || *p == '"')
4469           {
4470             quote_found = *p;
4471             quote_pos = p;
4472           }
4473       }
4474     if (quote_found == '\'')
4475       /* A string within single quotes can be a symbol, so complete on it.  */
4476       sym_text = quote_pos + 1;
4477     else if (quote_found == '"')
4478       /* A double-quoted string is never a symbol, nor does it make sense
4479          to complete it any other way.  */
4480       {
4481         return NULL;
4482       }
4483     else
4484       {
4485         /* Not a quoted string.  */
4486         sym_text = language_search_unquoted_string (text, p);
4487       }
4488   }
4489
4490   sym_text_len = strlen (sym_text);
4491
4492   return_val = NULL;
4493
4494   /* Find the symtab for SRCFILE (this loads it if it was not yet read
4495      in).  */
4496   s = lookup_symtab (srcfile);
4497   if (s == NULL)
4498     {
4499       /* Maybe they typed the file with leading directories, while the
4500          symbol tables record only its basename.  */
4501       const char *tail = lbasename (srcfile);
4502
4503       if (tail > srcfile)
4504         s = lookup_symtab (tail);
4505     }
4506
4507   /* If we have no symtab for that file, return an empty list.  */
4508   if (s == NULL)
4509     return (return_val);
4510
4511   /* Go through this symtab and check the externs and statics for
4512      symbols which match.  */
4513
4514   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
4515   ALL_BLOCK_SYMBOLS (b, iter, sym)
4516     {
4517       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4518     }
4519
4520   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
4521   ALL_BLOCK_SYMBOLS (b, iter, sym)
4522     {
4523       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4524     }
4525
4526   return (return_val);
4527 }
4528
4529 /* A helper function for make_source_files_completion_list.  It adds
4530    another file name to a list of possible completions, growing the
4531    list as necessary.  */
4532
4533 static void
4534 add_filename_to_list (const char *fname, char *text, char *word,
4535                       VEC (char_ptr) **list)
4536 {
4537   char *new;
4538   size_t fnlen = strlen (fname);
4539
4540   if (word == text)
4541     {
4542       /* Return exactly fname.  */
4543       new = xmalloc (fnlen + 5);
4544       strcpy (new, fname);
4545     }
4546   else if (word > text)
4547     {
4548       /* Return some portion of fname.  */
4549       new = xmalloc (fnlen + 5);
4550       strcpy (new, fname + (word - text));
4551     }
4552   else
4553     {
4554       /* Return some of TEXT plus fname.  */
4555       new = xmalloc (fnlen + (text - word) + 5);
4556       strncpy (new, word, text - word);
4557       new[text - word] = '\0';
4558       strcat (new, fname);
4559     }
4560   VEC_safe_push (char_ptr, *list, new);
4561 }
4562
4563 static int
4564 not_interesting_fname (const char *fname)
4565 {
4566   static const char *illegal_aliens[] = {
4567     "_globals_",        /* inserted by coff_symtab_read */
4568     NULL
4569   };
4570   int i;
4571
4572   for (i = 0; illegal_aliens[i]; i++)
4573     {
4574       if (filename_cmp (fname, illegal_aliens[i]) == 0)
4575         return 1;
4576     }
4577   return 0;
4578 }
4579
4580 /* An object of this type is passed as the user_data argument to
4581    map_partial_symbol_filenames.  */
4582 struct add_partial_filename_data
4583 {
4584   struct filename_seen_cache *filename_seen_cache;
4585   char *text;
4586   char *word;
4587   int text_len;
4588   VEC (char_ptr) **list;
4589 };
4590
4591 /* A callback for map_partial_symbol_filenames.  */
4592
4593 static void
4594 maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
4595                                    void *user_data)
4596 {
4597   struct add_partial_filename_data *data = user_data;
4598
4599   if (not_interesting_fname (filename))
4600     return;
4601   if (!filename_seen (data->filename_seen_cache, filename, 1)
4602       && filename_ncmp (filename, data->text, data->text_len) == 0)
4603     {
4604       /* This file matches for a completion; add it to the
4605          current list of matches.  */
4606       add_filename_to_list (filename, data->text, data->word, data->list);
4607     }
4608   else
4609     {
4610       const char *base_name = lbasename (filename);
4611
4612       if (base_name != filename
4613           && !filename_seen (data->filename_seen_cache, base_name, 1)
4614           && filename_ncmp (base_name, data->text, data->text_len) == 0)
4615         add_filename_to_list (base_name, data->text, data->word, data->list);
4616     }
4617 }
4618
4619 /* Return a vector of all source files whose names begin with matching
4620    TEXT.  The file names are looked up in the symbol tables of this
4621    program.  If the answer is no matchess, then the return value is
4622    NULL.  */
4623
4624 VEC (char_ptr) *
4625 make_source_files_completion_list (char *text, char *word)
4626 {
4627   struct symtab *s;
4628   struct objfile *objfile;
4629   size_t text_len = strlen (text);
4630   VEC (char_ptr) *list = NULL;
4631   const char *base_name;
4632   struct add_partial_filename_data datum;
4633   struct filename_seen_cache *filename_seen_cache;
4634   struct cleanup *back_to, *cache_cleanup;
4635
4636   if (!have_full_symbols () && !have_partial_symbols ())
4637     return list;
4638
4639   back_to = make_cleanup (do_free_completion_list, &list);
4640
4641   filename_seen_cache = create_filename_seen_cache ();
4642   cache_cleanup = make_cleanup (delete_filename_seen_cache,
4643                                 filename_seen_cache);
4644
4645   ALL_SYMTABS (objfile, s)
4646     {
4647       if (not_interesting_fname (s->filename))
4648         continue;
4649       if (!filename_seen (filename_seen_cache, s->filename, 1)
4650           && filename_ncmp (s->filename, text, text_len) == 0)
4651         {
4652           /* This file matches for a completion; add it to the current
4653              list of matches.  */
4654           add_filename_to_list (s->filename, text, word, &list);
4655         }
4656       else
4657         {
4658           /* NOTE: We allow the user to type a base name when the
4659              debug info records leading directories, but not the other
4660              way around.  This is what subroutines of breakpoint
4661              command do when they parse file names.  */
4662           base_name = lbasename (s->filename);
4663           if (base_name != s->filename
4664               && !filename_seen (filename_seen_cache, base_name, 1)
4665               && filename_ncmp (base_name, text, text_len) == 0)
4666             add_filename_to_list (base_name, text, word, &list);
4667         }
4668     }
4669
4670   datum.filename_seen_cache = filename_seen_cache;
4671   datum.text = text;
4672   datum.word = word;
4673   datum.text_len = text_len;
4674   datum.list = &list;
4675   map_partial_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
4676                                 0 /*need_fullname*/);
4677
4678   do_cleanups (cache_cleanup);
4679   discard_cleanups (back_to);
4680
4681   return list;
4682 }
4683
4684 /* Determine if PC is in the prologue of a function.  The prologue is the area
4685    between the first instruction of a function, and the first executable line.
4686    Returns 1 if PC *might* be in prologue, 0 if definately *not* in prologue.
4687
4688    If non-zero, func_start is where we think the prologue starts, possibly
4689    by previous examination of symbol table information.  */
4690
4691 int
4692 in_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR func_start)
4693 {
4694   struct symtab_and_line sal;
4695   CORE_ADDR func_addr, func_end;
4696
4697   /* We have several sources of information we can consult to figure
4698      this out.
4699      - Compilers usually emit line number info that marks the prologue
4700        as its own "source line".  So the ending address of that "line"
4701        is the end of the prologue.  If available, this is the most
4702        reliable method.
4703      - The minimal symbols and partial symbols, which can usually tell
4704        us the starting and ending addresses of a function.
4705      - If we know the function's start address, we can call the
4706        architecture-defined gdbarch_skip_prologue function to analyze the
4707        instruction stream and guess where the prologue ends.
4708      - Our `func_start' argument; if non-zero, this is the caller's
4709        best guess as to the function's entry point.  At the time of
4710        this writing, handle_inferior_event doesn't get this right, so
4711        it should be our last resort.  */
4712
4713   /* Consult the partial symbol table, to find which function
4714      the PC is in.  */
4715   if (! find_pc_partial_function (pc, NULL, &func_addr, &func_end))
4716     {
4717       CORE_ADDR prologue_end;
4718
4719       /* We don't even have minsym information, so fall back to using
4720          func_start, if given.  */
4721       if (! func_start)
4722         return 1;               /* We *might* be in a prologue.  */
4723
4724       prologue_end = gdbarch_skip_prologue (gdbarch, func_start);
4725
4726       return func_start <= pc && pc < prologue_end;
4727     }
4728
4729   /* If we have line number information for the function, that's
4730      usually pretty reliable.  */
4731   sal = find_pc_line (func_addr, 0);
4732
4733   /* Now sal describes the source line at the function's entry point,
4734      which (by convention) is the prologue.  The end of that "line",
4735      sal.end, is the end of the prologue.
4736
4737      Note that, for functions whose source code is all on a single
4738      line, the line number information doesn't always end up this way.
4739      So we must verify that our purported end-of-prologue address is
4740      *within* the function, not at its start or end.  */
4741   if (sal.line == 0
4742       || sal.end <= func_addr
4743       || func_end <= sal.end)
4744     {
4745       /* We don't have any good line number info, so use the minsym
4746          information, together with the architecture-specific prologue
4747          scanning code.  */
4748       CORE_ADDR prologue_end = gdbarch_skip_prologue (gdbarch, func_addr);
4749
4750       return func_addr <= pc && pc < prologue_end;
4751     }
4752
4753   /* We have line number info, and it looks good.  */
4754   return func_addr <= pc && pc < sal.end;
4755 }
4756
4757 /* Given PC at the function's start address, attempt to find the
4758    prologue end using SAL information.  Return zero if the skip fails.
4759
4760    A non-optimized prologue traditionally has one SAL for the function
4761    and a second for the function body.  A single line function has
4762    them both pointing at the same line.
4763
4764    An optimized prologue is similar but the prologue may contain
4765    instructions (SALs) from the instruction body.  Need to skip those
4766    while not getting into the function body.
4767
4768    The functions end point and an increasing SAL line are used as
4769    indicators of the prologue's endpoint.
4770
4771    This code is based on the function refine_prologue_limit
4772    (found in ia64).  */
4773
4774 CORE_ADDR
4775 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
4776 {
4777   struct symtab_and_line prologue_sal;
4778   CORE_ADDR start_pc;
4779   CORE_ADDR end_pc;
4780   struct block *bl;
4781
4782   /* Get an initial range for the function.  */
4783   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
4784   start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
4785
4786   prologue_sal = find_pc_line (start_pc, 0);
4787   if (prologue_sal.line != 0)
4788     {
4789       /* For languages other than assembly, treat two consecutive line
4790          entries at the same address as a zero-instruction prologue.
4791          The GNU assembler emits separate line notes for each instruction
4792          in a multi-instruction macro, but compilers generally will not
4793          do this.  */
4794       if (prologue_sal.symtab->language != language_asm)
4795         {
4796           struct linetable *linetable = LINETABLE (prologue_sal.symtab);
4797           int idx = 0;
4798
4799           /* Skip any earlier lines, and any end-of-sequence marker
4800              from a previous function.  */
4801           while (linetable->item[idx].pc != prologue_sal.pc
4802                  || linetable->item[idx].line == 0)
4803             idx++;
4804
4805           if (idx+1 < linetable->nitems
4806               && linetable->item[idx+1].line != 0
4807               && linetable->item[idx+1].pc == start_pc)
4808             return start_pc;
4809         }
4810
4811       /* If there is only one sal that covers the entire function,
4812          then it is probably a single line function, like
4813          "foo(){}".  */
4814       if (prologue_sal.end >= end_pc)
4815         return 0;
4816
4817       while (prologue_sal.end < end_pc)
4818         {
4819           struct symtab_and_line sal;
4820
4821           sal = find_pc_line (prologue_sal.end, 0);
4822           if (sal.line == 0)
4823             break;
4824           /* Assume that a consecutive SAL for the same (or larger)
4825              line mark the prologue -> body transition.  */
4826           if (sal.line >= prologue_sal.line)
4827             break;
4828
4829           /* The line number is smaller.  Check that it's from the
4830              same function, not something inlined.  If it's inlined,
4831              then there is no point comparing the line numbers.  */
4832           bl = block_for_pc (prologue_sal.end);
4833           while (bl)
4834             {
4835               if (block_inlined_p (bl))
4836                 break;
4837               if (BLOCK_FUNCTION (bl))
4838                 {
4839                   bl = NULL;
4840                   break;
4841                 }
4842               bl = BLOCK_SUPERBLOCK (bl);
4843             }
4844           if (bl != NULL)
4845             break;
4846
4847           /* The case in which compiler's optimizer/scheduler has
4848              moved instructions into the prologue.  We look ahead in
4849              the function looking for address ranges whose
4850              corresponding line number is less the first one that we
4851              found for the function.  This is more conservative then
4852              refine_prologue_limit which scans a large number of SALs
4853              looking for any in the prologue.  */
4854           prologue_sal = sal;
4855         }
4856     }
4857
4858   if (prologue_sal.end < end_pc)
4859     /* Return the end of this line, or zero if we could not find a
4860        line.  */
4861     return prologue_sal.end;
4862   else
4863     /* Don't return END_PC, which is past the end of the function.  */
4864     return prologue_sal.pc;
4865 }
4866 \f
4867 /* Track MAIN */
4868 static char *name_of_main;
4869 enum language language_of_main = language_unknown;
4870
4871 void
4872 set_main_name (const char *name)
4873 {
4874   if (name_of_main != NULL)
4875     {
4876       xfree (name_of_main);
4877       name_of_main = NULL;
4878       language_of_main = language_unknown;
4879     }
4880   if (name != NULL)
4881     {
4882       name_of_main = xstrdup (name);
4883       language_of_main = language_unknown;
4884     }
4885 }
4886
4887 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
4888    accordingly.  */
4889
4890 static void
4891 find_main_name (void)
4892 {
4893   const char *new_main_name;
4894
4895   /* Try to see if the main procedure is in Ada.  */
4896   /* FIXME: brobecker/2005-03-07: Another way of doing this would
4897      be to add a new method in the language vector, and call this
4898      method for each language until one of them returns a non-empty
4899      name.  This would allow us to remove this hard-coded call to
4900      an Ada function.  It is not clear that this is a better approach
4901      at this point, because all methods need to be written in a way
4902      such that false positives never be returned.  For instance, it is
4903      important that a method does not return a wrong name for the main
4904      procedure if the main procedure is actually written in a different
4905      language.  It is easy to guaranty this with Ada, since we use a
4906      special symbol generated only when the main in Ada to find the name
4907      of the main procedure.  It is difficult however to see how this can
4908      be guarantied for languages such as C, for instance.  This suggests
4909      that order of call for these methods becomes important, which means
4910      a more complicated approach.  */
4911   new_main_name = ada_main_name ();
4912   if (new_main_name != NULL)
4913     {
4914       set_main_name (new_main_name);
4915       return;
4916     }
4917
4918   new_main_name = go_main_name ();
4919   if (new_main_name != NULL)
4920     {
4921       set_main_name (new_main_name);
4922       return;
4923     }
4924
4925   new_main_name = pascal_main_name ();
4926   if (new_main_name != NULL)
4927     {
4928       set_main_name (new_main_name);
4929       return;
4930     }
4931
4932   /* The languages above didn't identify the name of the main procedure.
4933      Fallback to "main".  */
4934   set_main_name ("main");
4935 }
4936
4937 char *
4938 main_name (void)
4939 {
4940   if (name_of_main == NULL)
4941     find_main_name ();
4942
4943   return name_of_main;
4944 }
4945
4946 /* Handle ``executable_changed'' events for the symtab module.  */
4947
4948 static void
4949 symtab_observer_executable_changed (void)
4950 {
4951   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
4952   set_main_name (NULL);
4953 }
4954
4955 /* Return 1 if the supplied producer string matches the ARM RealView
4956    compiler (armcc).  */
4957
4958 int
4959 producer_is_realview (const char *producer)
4960 {
4961   static const char *const arm_idents[] = {
4962     "ARM C Compiler, ADS",
4963     "Thumb C Compiler, ADS",
4964     "ARM C++ Compiler, ADS",
4965     "Thumb C++ Compiler, ADS",
4966     "ARM/Thumb C/C++ Compiler, RVCT",
4967     "ARM C/C++ Compiler, RVCT"
4968   };
4969   int i;
4970
4971   if (producer == NULL)
4972     return 0;
4973
4974   for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
4975     if (strncmp (producer, arm_idents[i], strlen (arm_idents[i])) == 0)
4976       return 1;
4977
4978   return 0;
4979 }
4980
4981 void
4982 _initialize_symtab (void)
4983 {
4984   add_info ("variables", variables_info, _("\
4985 All global and static variable names, or those matching REGEXP."));
4986   if (dbx_commands)
4987     add_com ("whereis", class_info, variables_info, _("\
4988 All global and static variable names, or those matching REGEXP."));
4989
4990   add_info ("functions", functions_info,
4991             _("All function names, or those matching REGEXP."));
4992
4993   /* FIXME:  This command has at least the following problems:
4994      1.  It prints builtin types (in a very strange and confusing fashion).
4995      2.  It doesn't print right, e.g. with
4996      typedef struct foo *FOO
4997      type_print prints "FOO" when we want to make it (in this situation)
4998      print "struct foo *".
4999      I also think "ptype" or "whatis" is more likely to be useful (but if
5000      there is much disagreement "info types" can be fixed).  */
5001   add_info ("types", types_info,
5002             _("All type names, or those matching REGEXP."));
5003
5004   add_info ("sources", sources_info,
5005             _("Source files in the program."));
5006
5007   add_com ("rbreak", class_breakpoint, rbreak_command,
5008            _("Set a breakpoint for all functions matching REGEXP."));
5009
5010   if (xdb_commands)
5011     {
5012       add_com ("lf", class_info, sources_info,
5013                _("Source files in the program"));
5014       add_com ("lg", class_info, variables_info, _("\
5015 All global and static variable names, or those matching REGEXP."));
5016     }
5017
5018   add_setshow_enum_cmd ("multiple-symbols", no_class,
5019                         multiple_symbols_modes, &multiple_symbols_mode,
5020                         _("\
5021 Set the debugger behavior when more than one symbol are possible matches\n\
5022 in an expression."), _("\
5023 Show how the debugger handles ambiguities in expressions."), _("\
5024 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
5025                         NULL, NULL, &setlist, &showlist);
5026
5027   add_setshow_boolean_cmd ("basenames-may-differ", class_obscure,
5028                            &basenames_may_differ, _("\
5029 Set whether a source file may have multiple base names."), _("\
5030 Show whether a source file may have multiple base names."), _("\
5031 (A \"base name\" is the name of a file with the directory part removed.\n\
5032 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
5033 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
5034 before comparing them.  Canonicalization is an expensive operation,\n\
5035 but it allows the same file be known by more than one base name.\n\
5036 If not set (the default), all source files are assumed to have just\n\
5037 one base name, and gdb will do file name comparisons more efficiently."),
5038                            NULL, NULL,
5039                            &setlist, &showlist);
5040
5041   add_setshow_boolean_cmd ("symtab-create", no_class, &symtab_create_debug,
5042                            _("Set debugging of symbol table creation."),
5043                            _("Show debugging of symbol table creation."), _("\
5044 When enabled, debugging messages are printed when building symbol tables."),
5045                             NULL,
5046                             NULL,
5047                             &setdebuglist, &showdebuglist);
5048
5049   observer_attach_executable_changed (symtab_observer_executable_changed);
5050 }