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