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