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