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