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