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