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