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