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