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