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