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