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