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