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