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