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