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