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