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