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