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