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