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