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