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