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