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