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