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