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