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