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