PR mi/9583:
[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 (FILENAME_CMP (symtab->filename, p->filename) != 0)
2420           continue;
2421         PSYMTAB_TO_SYMTAB (p);
2422       }
2423
2424       /* Get symbol full file name if possible.  */
2425       symtab_to_fullname (symtab);
2426
2427       ALL_SYMTABS (objfile, s)
2428       {
2429         struct linetable *l;
2430         int ind;
2431
2432         if (FILENAME_CMP (symtab->filename, s->filename) != 0)
2433           continue;
2434         if (symtab->fullname != NULL
2435             && symtab_to_fullname (s) != NULL
2436             && FILENAME_CMP (symtab->fullname, s->fullname) != 0)
2437           continue;     
2438         l = LINETABLE (s);
2439         ind = find_line_common (l, line, &exact);
2440         if (ind >= 0)
2441           {
2442             if (exact)
2443               {
2444                 best_index = ind;
2445                 best_linetable = l;
2446                 best_symtab = s;
2447                 goto done;
2448               }
2449             if (best == 0 || l->item[ind].line < best)
2450               {
2451                 best = l->item[ind].line;
2452                 best_index = ind;
2453                 best_linetable = l;
2454                 best_symtab = s;
2455               }
2456           }
2457       }
2458     }
2459 done:
2460   if (best_index < 0)
2461     return NULL;
2462
2463   if (index)
2464     *index = best_index;
2465   if (exact_match)
2466     *exact_match = exact;
2467
2468   return best_symtab;
2469 }
2470 \f
2471 /* Set the PC value for a given source file and line number and return true.
2472    Returns zero for invalid line number (and sets the PC to 0).
2473    The source file is specified with a struct symtab.  */
2474
2475 int
2476 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
2477 {
2478   struct linetable *l;
2479   int ind;
2480
2481   *pc = 0;
2482   if (symtab == 0)
2483     return 0;
2484
2485   symtab = find_line_symtab (symtab, line, &ind, NULL);
2486   if (symtab != NULL)
2487     {
2488       l = LINETABLE (symtab);
2489       *pc = l->item[ind].pc;
2490       return 1;
2491     }
2492   else
2493     return 0;
2494 }
2495
2496 /* Find the range of pc values in a line.
2497    Store the starting pc of the line into *STARTPTR
2498    and the ending pc (start of next line) into *ENDPTR.
2499    Returns 1 to indicate success.
2500    Returns 0 if could not find the specified line.  */
2501
2502 int
2503 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
2504                     CORE_ADDR *endptr)
2505 {
2506   CORE_ADDR startaddr;
2507   struct symtab_and_line found_sal;
2508
2509   startaddr = sal.pc;
2510   if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
2511     return 0;
2512
2513   /* This whole function is based on address.  For example, if line 10 has
2514      two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
2515      "info line *0x123" should say the line goes from 0x100 to 0x200
2516      and "info line *0x355" should say the line goes from 0x300 to 0x400.
2517      This also insures that we never give a range like "starts at 0x134
2518      and ends at 0x12c".  */
2519
2520   found_sal = find_pc_sect_line (startaddr, sal.section, 0);
2521   if (found_sal.line != sal.line)
2522     {
2523       /* The specified line (sal) has zero bytes.  */
2524       *startptr = found_sal.pc;
2525       *endptr = found_sal.pc;
2526     }
2527   else
2528     {
2529       *startptr = found_sal.pc;
2530       *endptr = found_sal.end;
2531     }
2532   return 1;
2533 }
2534
2535 /* Given a line table and a line number, return the index into the line
2536    table for the pc of the nearest line whose number is >= the specified one.
2537    Return -1 if none is found.  The value is >= 0 if it is an index.
2538
2539    Set *EXACT_MATCH nonzero if the value returned is an exact match.  */
2540
2541 static int
2542 find_line_common (struct linetable *l, int lineno,
2543                   int *exact_match)
2544 {
2545   int i;
2546   int len;
2547
2548   /* BEST is the smallest linenumber > LINENO so far seen,
2549      or 0 if none has been seen so far.
2550      BEST_INDEX identifies the item for it.  */
2551
2552   int best_index = -1;
2553   int best = 0;
2554
2555   *exact_match = 0;
2556
2557   if (lineno <= 0)
2558     return -1;
2559   if (l == 0)
2560     return -1;
2561
2562   len = l->nitems;
2563   for (i = 0; i < len; i++)
2564     {
2565       struct linetable_entry *item = &(l->item[i]);
2566
2567       if (item->line == lineno)
2568         {
2569           /* Return the first (lowest address) entry which matches.  */
2570           *exact_match = 1;
2571           return i;
2572         }
2573
2574       if (item->line > lineno && (best == 0 || item->line < best))
2575         {
2576           best = item->line;
2577           best_index = i;
2578         }
2579     }
2580
2581   /* If we got here, we didn't get an exact match.  */
2582   return best_index;
2583 }
2584
2585 int
2586 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
2587 {
2588   struct symtab_and_line sal;
2589   sal = find_pc_line (pc, 0);
2590   *startptr = sal.pc;
2591   *endptr = sal.end;
2592   return sal.symtab != 0;
2593 }
2594
2595 /* Given a function start address PC and SECTION, find the first
2596    address after the function prologue.  */
2597 CORE_ADDR
2598 find_function_start_pc (struct gdbarch *gdbarch,
2599                         CORE_ADDR pc, struct obj_section *section)
2600 {
2601   /* If the function is in an unmapped overlay, use its unmapped LMA address,
2602      so that gdbarch_skip_prologue has something unique to work on.  */
2603   if (section_is_overlay (section) && !section_is_mapped (section))
2604     pc = overlay_unmapped_address (pc, section);
2605
2606   pc += gdbarch_deprecated_function_start_offset (gdbarch);
2607   pc = gdbarch_skip_prologue (gdbarch, pc);
2608
2609   /* For overlays, map pc back into its mapped VMA range.  */
2610   pc = overlay_mapped_address (pc, section);
2611
2612   return pc;
2613 }
2614
2615 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
2616    address for that function that has an entry in SYMTAB's line info
2617    table.  If such an entry cannot be found, return FUNC_ADDR
2618    unaltered.  */
2619 CORE_ADDR
2620 skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab)
2621 {
2622   CORE_ADDR func_start, func_end;
2623   struct linetable *l;
2624   int ind, i, len;
2625   int best_lineno = 0;
2626   CORE_ADDR best_pc = func_addr;
2627
2628   /* Give up if this symbol has no lineinfo table.  */
2629   l = LINETABLE (symtab);
2630   if (l == NULL)
2631     return func_addr;
2632
2633   /* Get the range for the function's PC values, or give up if we
2634      cannot, for some reason.  */
2635   if (!find_pc_partial_function (func_addr, NULL, &func_start, &func_end))
2636     return func_addr;
2637
2638   /* Linetable entries are ordered by PC values, see the commentary in
2639      symtab.h where `struct linetable' is defined.  Thus, the first
2640      entry whose PC is in the range [FUNC_START..FUNC_END[ is the
2641      address we are looking for.  */
2642   for (i = 0; i < l->nitems; i++)
2643     {
2644       struct linetable_entry *item = &(l->item[i]);
2645
2646       /* Don't use line numbers of zero, they mark special entries in
2647          the table.  See the commentary on symtab.h before the
2648          definition of struct linetable.  */
2649       if (item->line > 0 && func_start <= item->pc && item->pc < func_end)
2650         return item->pc;
2651     }
2652
2653   return func_addr;
2654 }
2655
2656 /* Given a function symbol SYM, find the symtab and line for the start
2657    of the function.
2658    If the argument FUNFIRSTLINE is nonzero, we want the first line
2659    of real code inside the function.  */
2660
2661 struct symtab_and_line
2662 find_function_start_sal (struct symbol *sym, int funfirstline)
2663 {
2664   struct block *block = SYMBOL_BLOCK_VALUE (sym);
2665   struct objfile *objfile = lookup_objfile_from_block (block);
2666   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2667
2668   CORE_ADDR pc;
2669   struct symtab_and_line sal;
2670   struct block *b, *function_block;
2671
2672   struct cleanup *old_chain;
2673
2674   old_chain = save_current_space_and_thread ();
2675   switch_to_program_space_and_thread (objfile->pspace);
2676
2677   pc = BLOCK_START (block);
2678   fixup_symbol_section (sym, objfile);
2679   if (funfirstline)
2680     {
2681       /* Skip "first line" of function (which is actually its prologue).  */
2682       pc = find_function_start_pc (gdbarch, pc, SYMBOL_OBJ_SECTION (sym));
2683     }
2684   sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2685
2686   /* Check if gdbarch_skip_prologue left us in mid-line, and the next
2687      line is still part of the same function.  */
2688   if (sal.pc != pc
2689       && BLOCK_START (block) <= sal.end
2690       && sal.end < BLOCK_END (block))
2691     {
2692       /* First pc of next line */
2693       pc = sal.end;
2694       /* Recalculate the line number (might not be N+1).  */
2695       sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2696     }
2697
2698   /* On targets with executable formats that don't have a concept of
2699      constructors (ELF with .init has, PE doesn't), gcc emits a call
2700      to `__main' in `main' between the prologue and before user
2701      code.  */
2702   if (funfirstline
2703       && gdbarch_skip_main_prologue_p (gdbarch)
2704       && SYMBOL_LINKAGE_NAME (sym)
2705       && strcmp (SYMBOL_LINKAGE_NAME (sym), "main") == 0)
2706     {
2707       pc = gdbarch_skip_main_prologue (gdbarch, pc);
2708       /* Recalculate the line number (might not be N+1).  */
2709       sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2710     }
2711
2712   /* If we still don't have a valid source line, try to find the first
2713      PC in the lineinfo table that belongs to the same function.  This
2714      happens with COFF debug info, which does not seem to have an
2715      entry in lineinfo table for the code after the prologue which has
2716      no direct relation to source.  For example, this was found to be
2717      the case with the DJGPP target using "gcc -gcoff" when the
2718      compiler inserted code after the prologue to make sure the stack
2719      is aligned.  */
2720   if (funfirstline && sal.symtab == NULL)
2721     {
2722       pc = skip_prologue_using_lineinfo (pc, SYMBOL_SYMTAB (sym));
2723       /* Recalculate the line number.  */
2724       sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2725     }
2726
2727   sal.pc = pc;
2728   sal.pspace = objfile->pspace;
2729
2730   /* Check if we are now inside an inlined function.  If we can,
2731      use the call site of the function instead.  */
2732   b = block_for_pc_sect (sal.pc, SYMBOL_OBJ_SECTION (sym));
2733   function_block = NULL;
2734   while (b != NULL)
2735     {
2736       if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
2737         function_block = b;
2738       else if (BLOCK_FUNCTION (b) != NULL)
2739         break;
2740       b = BLOCK_SUPERBLOCK (b);
2741     }
2742   if (function_block != NULL
2743       && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
2744     {
2745       sal.line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
2746       sal.symtab = SYMBOL_SYMTAB (BLOCK_FUNCTION (function_block));
2747     }
2748
2749   do_cleanups (old_chain);
2750   return sal;
2751 }
2752
2753 /* If P is of the form "operator[ \t]+..." where `...' is
2754    some legitimate operator text, return a pointer to the
2755    beginning of the substring of the operator text.
2756    Otherwise, return "".  */
2757 char *
2758 operator_chars (char *p, char **end)
2759 {
2760   *end = "";
2761   if (strncmp (p, "operator", 8))
2762     return *end;
2763   p += 8;
2764
2765   /* Don't get faked out by `operator' being part of a longer
2766      identifier.  */
2767   if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
2768     return *end;
2769
2770   /* Allow some whitespace between `operator' and the operator symbol.  */
2771   while (*p == ' ' || *p == '\t')
2772     p++;
2773
2774   /* Recognize 'operator TYPENAME'. */
2775
2776   if (isalpha (*p) || *p == '_' || *p == '$')
2777     {
2778       char *q = p + 1;
2779       while (isalnum (*q) || *q == '_' || *q == '$')
2780         q++;
2781       *end = q;
2782       return p;
2783     }
2784
2785   while (*p)
2786     switch (*p)
2787       {
2788       case '\\':                        /* regexp quoting */
2789         if (p[1] == '*')
2790           {
2791             if (p[2] == '=')    /* 'operator\*=' */
2792               *end = p + 3;
2793             else                        /* 'operator\*'  */
2794               *end = p + 2;
2795             return p;
2796           }
2797         else if (p[1] == '[')
2798           {
2799             if (p[2] == ']')
2800               error (_("mismatched quoting on brackets, try 'operator\\[\\]'"));
2801             else if (p[2] == '\\' && p[3] == ']')
2802               {
2803                 *end = p + 4;   /* 'operator\[\]' */
2804                 return p;
2805               }
2806             else
2807               error (_("nothing is allowed between '[' and ']'"));
2808           }
2809         else
2810           {
2811             /* Gratuitous qoute: skip it and move on. */
2812             p++;
2813             continue;
2814           }
2815         break;
2816       case '!':
2817       case '=':
2818       case '*':
2819       case '/':
2820       case '%':
2821       case '^':
2822         if (p[1] == '=')
2823           *end = p + 2;
2824         else
2825           *end = p + 1;
2826         return p;
2827       case '<':
2828       case '>':
2829       case '+':
2830       case '-':
2831       case '&':
2832       case '|':
2833         if (p[0] == '-' && p[1] == '>')
2834           {
2835             /* Struct pointer member operator 'operator->'. */
2836             if (p[2] == '*')
2837               {
2838                 *end = p + 3;   /* 'operator->*' */
2839                 return p;
2840               }
2841             else if (p[2] == '\\')
2842               {
2843                 *end = p + 4;   /* Hopefully 'operator->\*' */
2844                 return p;
2845               }
2846             else
2847               {
2848                 *end = p + 2;   /* 'operator->' */
2849                 return p;
2850               }
2851           }
2852         if (p[1] == '=' || p[1] == p[0])
2853           *end = p + 2;
2854         else
2855           *end = p + 1;
2856         return p;
2857       case '~':
2858       case ',':
2859         *end = p + 1;
2860         return p;
2861       case '(':
2862         if (p[1] != ')')
2863           error (_("`operator ()' must be specified without whitespace in `()'"));
2864         *end = p + 2;
2865         return p;
2866       case '?':
2867         if (p[1] != ':')
2868           error (_("`operator ?:' must be specified without whitespace in `?:'"));
2869         *end = p + 2;
2870         return p;
2871       case '[':
2872         if (p[1] != ']')
2873           error (_("`operator []' must be specified without whitespace in `[]'"));
2874         *end = p + 2;
2875         return p;
2876       default:
2877         error (_("`operator %s' not supported"), p);
2878         break;
2879       }
2880
2881   *end = "";
2882   return *end;
2883 }
2884 \f
2885
2886 /* If FILE is not already in the table of files, return zero;
2887    otherwise return non-zero.  Optionally add FILE to the table if ADD
2888    is non-zero.  If *FIRST is non-zero, forget the old table
2889    contents.  */
2890 static int
2891 filename_seen (const char *file, int add, int *first)
2892 {
2893   /* Table of files seen so far.  */
2894   static const char **tab = NULL;
2895   /* Allocated size of tab in elements.
2896      Start with one 256-byte block (when using GNU malloc.c).
2897      24 is the malloc overhead when range checking is in effect.  */
2898   static int tab_alloc_size = (256 - 24) / sizeof (char *);
2899   /* Current size of tab in elements.  */
2900   static int tab_cur_size;
2901   const char **p;
2902
2903   if (*first)
2904     {
2905       if (tab == NULL)
2906         tab = (const char **) xmalloc (tab_alloc_size * sizeof (*tab));
2907       tab_cur_size = 0;
2908     }
2909
2910   /* Is FILE in tab?  */
2911   for (p = tab; p < tab + tab_cur_size; p++)
2912     if (strcmp (*p, file) == 0)
2913       return 1;
2914
2915   /* No; maybe add it to tab.  */
2916   if (add)
2917     {
2918       if (tab_cur_size == tab_alloc_size)
2919         {
2920           tab_alloc_size *= 2;
2921           tab = (const char **) xrealloc ((char *) tab,
2922                                           tab_alloc_size * sizeof (*tab));
2923         }
2924       tab[tab_cur_size++] = file;
2925     }
2926
2927   return 0;
2928 }
2929
2930 /* Slave routine for sources_info.  Force line breaks at ,'s.
2931    NAME is the name to print and *FIRST is nonzero if this is the first
2932    name printed.  Set *FIRST to zero.  */
2933 static void
2934 output_source_filename (const char *name, int *first)
2935 {
2936   /* Since a single source file can result in several partial symbol
2937      tables, we need to avoid printing it more than once.  Note: if
2938      some of the psymtabs are read in and some are not, it gets
2939      printed both under "Source files for which symbols have been
2940      read" and "Source files for which symbols will be read in on
2941      demand".  I consider this a reasonable way to deal with the
2942      situation.  I'm not sure whether this can also happen for
2943      symtabs; it doesn't hurt to check.  */
2944
2945   /* Was NAME already seen?  */
2946   if (filename_seen (name, 1, first))
2947     {
2948       /* Yes; don't print it again.  */
2949       return;
2950     }
2951   /* No; print it and reset *FIRST.  */
2952   if (*first)
2953     {
2954       *first = 0;
2955     }
2956   else
2957     {
2958       printf_filtered (", ");
2959     }
2960
2961   wrap_here ("");
2962   fputs_filtered (name, gdb_stdout);
2963 }
2964
2965 static void
2966 sources_info (char *ignore, int from_tty)
2967 {
2968   struct symtab *s;
2969   struct partial_symtab *ps;
2970   struct objfile *objfile;
2971   int first;
2972
2973   if (!have_full_symbols () && !have_partial_symbols ())
2974     {
2975       error (_("No symbol table is loaded.  Use the \"file\" command."));
2976     }
2977
2978   printf_filtered ("Source files for which symbols have been read in:\n\n");
2979
2980   first = 1;
2981   ALL_SYMTABS (objfile, s)
2982   {
2983     const char *fullname = symtab_to_fullname (s);
2984     output_source_filename (fullname ? fullname : s->filename, &first);
2985   }
2986   printf_filtered ("\n\n");
2987
2988   printf_filtered ("Source files for which symbols will be read in on demand:\n\n");
2989
2990   first = 1;
2991   ALL_PSYMTABS (objfile, ps)
2992   {
2993     if (!ps->readin)
2994       {
2995         const char *fullname = psymtab_to_fullname (ps);
2996         output_source_filename (fullname ? fullname : ps->filename, &first);
2997       }
2998   }
2999   printf_filtered ("\n");
3000 }
3001
3002 static int
3003 file_matches (char *file, char *files[], int nfiles)
3004 {
3005   int i;
3006
3007   if (file != NULL && nfiles != 0)
3008     {
3009       for (i = 0; i < nfiles; i++)
3010         {
3011           if (strcmp (files[i], lbasename (file)) == 0)
3012             return 1;
3013         }
3014     }
3015   else if (nfiles == 0)
3016     return 1;
3017   return 0;
3018 }
3019
3020 /* Free any memory associated with a search. */
3021 void
3022 free_search_symbols (struct symbol_search *symbols)
3023 {
3024   struct symbol_search *p;
3025   struct symbol_search *next;
3026
3027   for (p = symbols; p != NULL; p = next)
3028     {
3029       next = p->next;
3030       xfree (p);
3031     }
3032 }
3033
3034 static void
3035 do_free_search_symbols_cleanup (void *symbols)
3036 {
3037   free_search_symbols (symbols);
3038 }
3039
3040 struct cleanup *
3041 make_cleanup_free_search_symbols (struct symbol_search *symbols)
3042 {
3043   return make_cleanup (do_free_search_symbols_cleanup, symbols);
3044 }
3045
3046 /* Helper function for sort_search_symbols and qsort.  Can only
3047    sort symbols, not minimal symbols.  */
3048 static int
3049 compare_search_syms (const void *sa, const void *sb)
3050 {
3051   struct symbol_search **sym_a = (struct symbol_search **) sa;
3052   struct symbol_search **sym_b = (struct symbol_search **) sb;
3053
3054   return strcmp (SYMBOL_PRINT_NAME ((*sym_a)->symbol),
3055                  SYMBOL_PRINT_NAME ((*sym_b)->symbol));
3056 }
3057
3058 /* Sort the ``nfound'' symbols in the list after prevtail.  Leave
3059    prevtail where it is, but update its next pointer to point to
3060    the first of the sorted symbols.  */
3061 static struct symbol_search *
3062 sort_search_symbols (struct symbol_search *prevtail, int nfound)
3063 {
3064   struct symbol_search **symbols, *symp, *old_next;
3065   int i;
3066
3067   symbols = (struct symbol_search **) xmalloc (sizeof (struct symbol_search *)
3068                                                * nfound);
3069   symp = prevtail->next;
3070   for (i = 0; i < nfound; i++)
3071     {
3072       symbols[i] = symp;
3073       symp = symp->next;
3074     }
3075   /* Generally NULL.  */
3076   old_next = symp;
3077
3078   qsort (symbols, nfound, sizeof (struct symbol_search *),
3079          compare_search_syms);
3080
3081   symp = prevtail;
3082   for (i = 0; i < nfound; i++)
3083     {
3084       symp->next = symbols[i];
3085       symp = symp->next;
3086     }
3087   symp->next = old_next;
3088
3089   xfree (symbols);
3090   return symp;
3091 }
3092
3093 /* Search the symbol table for matches to the regular expression REGEXP,
3094    returning the results in *MATCHES.
3095
3096    Only symbols of KIND are searched:
3097    FUNCTIONS_DOMAIN - search all functions
3098    TYPES_DOMAIN     - search all type names
3099    VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
3100    and constants (enums)
3101
3102    free_search_symbols should be called when *MATCHES is no longer needed.
3103
3104    The results are sorted locally; each symtab's global and static blocks are
3105    separately alphabetized.
3106  */
3107 void
3108 search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
3109                 struct symbol_search **matches)
3110 {
3111   struct symtab *s;
3112   struct partial_symtab *ps;
3113   struct blockvector *bv;
3114   struct block *b;
3115   int i = 0;
3116   struct dict_iterator iter;
3117   struct symbol *sym;
3118   struct partial_symbol **psym;
3119   struct objfile *objfile;
3120   struct minimal_symbol *msymbol;
3121   char *val;
3122   int found_misc = 0;
3123   static enum minimal_symbol_type types[]
3124   =
3125   {mst_data, mst_text, mst_abs, mst_unknown};
3126   static enum minimal_symbol_type types2[]
3127   =
3128   {mst_bss, mst_file_text, mst_abs, mst_unknown};
3129   static enum minimal_symbol_type types3[]
3130   =
3131   {mst_file_data, mst_solib_trampoline, mst_abs, mst_unknown};
3132   static enum minimal_symbol_type types4[]
3133   =
3134   {mst_file_bss, mst_text, mst_abs, mst_unknown};
3135   enum minimal_symbol_type ourtype;
3136   enum minimal_symbol_type ourtype2;
3137   enum minimal_symbol_type ourtype3;
3138   enum minimal_symbol_type ourtype4;
3139   struct symbol_search *sr;
3140   struct symbol_search *psr;
3141   struct symbol_search *tail;
3142   struct cleanup *old_chain = NULL;
3143
3144   if (kind < VARIABLES_DOMAIN)
3145     error (_("must search on specific domain"));
3146
3147   ourtype = types[(int) (kind - VARIABLES_DOMAIN)];
3148   ourtype2 = types2[(int) (kind - VARIABLES_DOMAIN)];
3149   ourtype3 = types3[(int) (kind - VARIABLES_DOMAIN)];
3150   ourtype4 = types4[(int) (kind - VARIABLES_DOMAIN)];
3151
3152   sr = *matches = NULL;
3153   tail = NULL;
3154
3155   if (regexp != NULL)
3156     {
3157       /* Make sure spacing is right for C++ operators.
3158          This is just a courtesy to make the matching less sensitive
3159          to how many spaces the user leaves between 'operator'
3160          and <TYPENAME> or <OPERATOR>. */
3161       char *opend;
3162       char *opname = operator_chars (regexp, &opend);
3163       if (*opname)
3164         {
3165           int fix = -1;         /* -1 means ok; otherwise number of spaces needed. */
3166           if (isalpha (*opname) || *opname == '_' || *opname == '$')
3167             {
3168               /* There should 1 space between 'operator' and 'TYPENAME'. */
3169               if (opname[-1] != ' ' || opname[-2] == ' ')
3170                 fix = 1;
3171             }
3172           else
3173             {
3174               /* There should 0 spaces between 'operator' and 'OPERATOR'. */
3175               if (opname[-1] == ' ')
3176                 fix = 0;
3177             }
3178           /* If wrong number of spaces, fix it. */
3179           if (fix >= 0)
3180             {
3181               char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
3182               sprintf (tmp, "operator%.*s%s", fix, " ", opname);
3183               regexp = tmp;
3184             }
3185         }
3186
3187       if (0 != (val = re_comp (regexp)))
3188         error (_("Invalid regexp (%s): %s"), val, regexp);
3189     }
3190
3191   /* Search through the partial symtabs *first* for all symbols
3192      matching the regexp.  That way we don't have to reproduce all of
3193      the machinery below. */
3194
3195   ALL_PSYMTABS (objfile, ps)
3196   {
3197     struct partial_symbol **bound, **gbound, **sbound;
3198     int keep_going = 1;
3199
3200     if (ps->readin)
3201       continue;
3202
3203     gbound = objfile->global_psymbols.list + ps->globals_offset + ps->n_global_syms;
3204     sbound = objfile->static_psymbols.list + ps->statics_offset + ps->n_static_syms;
3205     bound = gbound;
3206
3207     /* Go through all of the symbols stored in a partial
3208        symtab in one loop. */
3209     psym = objfile->global_psymbols.list + ps->globals_offset;
3210     while (keep_going)
3211       {
3212         if (psym >= bound)
3213           {
3214             if (bound == gbound && ps->n_static_syms != 0)
3215               {
3216                 psym = objfile->static_psymbols.list + ps->statics_offset;
3217                 bound = sbound;
3218               }
3219             else
3220               keep_going = 0;
3221             continue;
3222           }
3223         else
3224           {
3225             QUIT;
3226
3227             /* If it would match (logic taken from loop below)
3228                load the file and go on to the next one.  We check the
3229                filename here, but that's a bit bogus: we don't know
3230                what file it really comes from until we have full
3231                symtabs.  The symbol might be in a header file included by
3232                this psymtab.  This only affects Insight.  */
3233             if (file_matches (ps->filename, files, nfiles)
3234                 && ((regexp == NULL
3235                      || re_exec (SYMBOL_NATURAL_NAME (*psym)) != 0)
3236                     && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (*psym) != LOC_TYPEDEF
3237                          && SYMBOL_CLASS (*psym) != LOC_BLOCK)
3238                         || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (*psym) == LOC_BLOCK)
3239                         || (kind == TYPES_DOMAIN && SYMBOL_CLASS (*psym) == LOC_TYPEDEF))))
3240               {
3241                 PSYMTAB_TO_SYMTAB (ps);
3242                 keep_going = 0;
3243               }
3244           }
3245         psym++;
3246       }
3247   }
3248
3249   /* Here, we search through the minimal symbol tables for functions
3250      and variables that match, and force their symbols to be read.
3251      This is in particular necessary for demangled variable names,
3252      which are no longer put into the partial symbol tables.
3253      The symbol will then be found during the scan of symtabs below.
3254
3255      For functions, find_pc_symtab should succeed if we have debug info
3256      for the function, for variables we have to call lookup_symbol
3257      to determine if the variable has debug info.
3258      If the lookup fails, set found_misc so that we will rescan to print
3259      any matching symbols without debug info.
3260    */
3261
3262   if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
3263     {
3264       ALL_MSYMBOLS (objfile, msymbol)
3265       {
3266         QUIT;
3267
3268         if (MSYMBOL_TYPE (msymbol) == ourtype ||
3269             MSYMBOL_TYPE (msymbol) == ourtype2 ||
3270             MSYMBOL_TYPE (msymbol) == ourtype3 ||
3271             MSYMBOL_TYPE (msymbol) == ourtype4)
3272           {
3273             if (regexp == NULL
3274                 || re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
3275               {
3276                 if (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)))
3277                   {
3278                     /* FIXME: carlton/2003-02-04: Given that the
3279                        semantics of lookup_symbol keeps on changing
3280                        slightly, it would be a nice idea if we had a
3281                        function lookup_symbol_minsym that found the
3282                        symbol associated to a given minimal symbol (if
3283                        any).  */
3284                     if (kind == FUNCTIONS_DOMAIN
3285                         || lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol),
3286                                           (struct block *) NULL,
3287                                           VAR_DOMAIN, 0)
3288                         == NULL)
3289                       found_misc = 1;
3290                   }
3291               }
3292           }
3293       }
3294     }
3295
3296   ALL_PRIMARY_SYMTABS (objfile, s)
3297   {
3298     bv = BLOCKVECTOR (s);
3299       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
3300         {
3301           struct symbol_search *prevtail = tail;
3302           int nfound = 0;
3303           b = BLOCKVECTOR_BLOCK (bv, i);
3304           ALL_BLOCK_SYMBOLS (b, iter, sym)
3305             {
3306               struct symtab *real_symtab = SYMBOL_SYMTAB (sym);
3307               QUIT;
3308
3309               if (file_matches (real_symtab->filename, files, nfiles)
3310                   && ((regexp == NULL
3311                        || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0)
3312                       && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (sym) != LOC_TYPEDEF
3313                            && SYMBOL_CLASS (sym) != LOC_BLOCK
3314                            && SYMBOL_CLASS (sym) != LOC_CONST)
3315                           || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (sym) == LOC_BLOCK)
3316                           || (kind == TYPES_DOMAIN && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
3317                 {
3318                   /* match */
3319                   psr = (struct symbol_search *) xmalloc (sizeof (struct symbol_search));
3320                   psr->block = i;
3321                   psr->symtab = real_symtab;
3322                   psr->symbol = sym;
3323                   psr->msymbol = NULL;
3324                   psr->next = NULL;
3325                   if (tail == NULL)
3326                     sr = psr;
3327                   else
3328                     tail->next = psr;
3329                   tail = psr;
3330                   nfound ++;
3331                 }
3332             }
3333           if (nfound > 0)
3334             {
3335               if (prevtail == NULL)
3336                 {
3337                   struct symbol_search dummy;
3338
3339                   dummy.next = sr;
3340                   tail = sort_search_symbols (&dummy, nfound);
3341                   sr = dummy.next;
3342
3343                   old_chain = make_cleanup_free_search_symbols (sr);
3344                 }
3345               else
3346                 tail = sort_search_symbols (prevtail, nfound);
3347             }
3348         }
3349   }
3350
3351   /* If there are no eyes, avoid all contact.  I mean, if there are
3352      no debug symbols, then print directly from the msymbol_vector.  */
3353
3354   if (found_misc || kind != FUNCTIONS_DOMAIN)
3355     {
3356       ALL_MSYMBOLS (objfile, msymbol)
3357       {
3358         QUIT;
3359
3360         if (MSYMBOL_TYPE (msymbol) == ourtype ||
3361             MSYMBOL_TYPE (msymbol) == ourtype2 ||
3362             MSYMBOL_TYPE (msymbol) == ourtype3 ||
3363             MSYMBOL_TYPE (msymbol) == ourtype4)
3364           {
3365             if (regexp == NULL
3366                 || re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
3367               {
3368                 /* Functions:  Look up by address. */
3369                 if (kind != FUNCTIONS_DOMAIN ||
3370                     (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol))))
3371                   {
3372                     /* Variables/Absolutes:  Look up by name */
3373                     if (lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol),
3374                                        (struct block *) NULL, VAR_DOMAIN, 0)
3375                          == NULL)
3376                       {
3377                         /* match */
3378                         psr = (struct symbol_search *) xmalloc (sizeof (struct symbol_search));
3379                         psr->block = i;
3380                         psr->msymbol = msymbol;
3381                         psr->symtab = NULL;
3382                         psr->symbol = NULL;
3383                         psr->next = NULL;
3384                         if (tail == NULL)
3385                           {
3386                             sr = psr;
3387                             old_chain = make_cleanup_free_search_symbols (sr);
3388                           }
3389                         else
3390                           tail->next = psr;
3391                         tail = psr;
3392                       }
3393                   }
3394               }
3395           }
3396       }
3397     }
3398
3399   *matches = sr;
3400   if (sr != NULL)
3401     discard_cleanups (old_chain);
3402 }
3403
3404 /* Helper function for symtab_symbol_info, this function uses
3405    the data returned from search_symbols() to print information
3406    regarding the match to gdb_stdout.
3407  */
3408 static void
3409 print_symbol_info (domain_enum kind, struct symtab *s, struct symbol *sym,
3410                    int block, char *last)
3411 {
3412   if (last == NULL || strcmp (last, s->filename) != 0)
3413     {
3414       fputs_filtered ("\nFile ", gdb_stdout);
3415       fputs_filtered (s->filename, gdb_stdout);
3416       fputs_filtered (":\n", gdb_stdout);
3417     }
3418
3419   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
3420     printf_filtered ("static ");
3421
3422   /* Typedef that is not a C++ class */
3423   if (kind == TYPES_DOMAIN
3424       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
3425     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
3426   /* variable, func, or typedef-that-is-c++-class */
3427   else if (kind < TYPES_DOMAIN ||
3428            (kind == TYPES_DOMAIN &&
3429             SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
3430     {
3431       type_print (SYMBOL_TYPE (sym),
3432                   (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3433                    ? "" : SYMBOL_PRINT_NAME (sym)),
3434                   gdb_stdout, 0);
3435
3436       printf_filtered (";\n");
3437     }
3438 }
3439
3440 /* This help function for symtab_symbol_info() prints information
3441    for non-debugging symbols to gdb_stdout.
3442  */
3443 static void
3444 print_msymbol_info (struct minimal_symbol *msymbol)
3445 {
3446   struct gdbarch *gdbarch = get_objfile_arch (msymbol_objfile (msymbol));
3447   char *tmp;
3448
3449   if (gdbarch_addr_bit (gdbarch) <= 32)
3450     tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol)
3451                              & (CORE_ADDR) 0xffffffff,
3452                              8);
3453   else
3454     tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol),
3455                              16);
3456   printf_filtered ("%s  %s\n",
3457                    tmp, SYMBOL_PRINT_NAME (msymbol));
3458 }
3459
3460 /* This is the guts of the commands "info functions", "info types", and
3461    "info variables". It calls search_symbols to find all matches and then
3462    print_[m]symbol_info to print out some useful information about the
3463    matches.
3464  */
3465 static void
3466 symtab_symbol_info (char *regexp, domain_enum kind, int from_tty)
3467 {
3468   static char *classnames[]
3469   =
3470   {"variable", "function", "type", "method"};
3471   struct symbol_search *symbols;
3472   struct symbol_search *p;
3473   struct cleanup *old_chain;
3474   char *last_filename = NULL;
3475   int first = 1;
3476
3477   /* must make sure that if we're interrupted, symbols gets freed */
3478   search_symbols (regexp, kind, 0, (char **) NULL, &symbols);
3479   old_chain = make_cleanup_free_search_symbols (symbols);
3480
3481   printf_filtered (regexp
3482                    ? "All %ss matching regular expression \"%s\":\n"
3483                    : "All defined %ss:\n",
3484                    classnames[(int) (kind - VARIABLES_DOMAIN)], regexp);
3485
3486   for (p = symbols; p != NULL; p = p->next)
3487     {
3488       QUIT;
3489
3490       if (p->msymbol != NULL)
3491         {
3492           if (first)
3493             {
3494               printf_filtered ("\nNon-debugging symbols:\n");
3495               first = 0;
3496             }
3497           print_msymbol_info (p->msymbol);
3498         }
3499       else
3500         {
3501           print_symbol_info (kind,
3502                              p->symtab,
3503                              p->symbol,
3504                              p->block,
3505                              last_filename);
3506           last_filename = p->symtab->filename;
3507         }
3508     }
3509
3510   do_cleanups (old_chain);
3511 }
3512
3513 static void
3514 variables_info (char *regexp, int from_tty)
3515 {
3516   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
3517 }
3518
3519 static void
3520 functions_info (char *regexp, int from_tty)
3521 {
3522   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
3523 }
3524
3525
3526 static void
3527 types_info (char *regexp, int from_tty)
3528 {
3529   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
3530 }
3531
3532 /* Breakpoint all functions matching regular expression. */
3533
3534 void
3535 rbreak_command_wrapper (char *regexp, int from_tty)
3536 {
3537   rbreak_command (regexp, from_tty);
3538 }
3539
3540 static void
3541 rbreak_command (char *regexp, int from_tty)
3542 {
3543   struct symbol_search *ss;
3544   struct symbol_search *p;
3545   struct cleanup *old_chain;
3546
3547   search_symbols (regexp, FUNCTIONS_DOMAIN, 0, (char **) NULL, &ss);
3548   old_chain = make_cleanup_free_search_symbols (ss);
3549
3550   for (p = ss; p != NULL; p = p->next)
3551     {
3552       if (p->msymbol == NULL)
3553         {
3554           char *string = alloca (strlen (p->symtab->filename)
3555                                  + strlen (SYMBOL_LINKAGE_NAME (p->symbol))
3556                                  + 4);
3557           strcpy (string, p->symtab->filename);
3558           strcat (string, ":'");
3559           strcat (string, SYMBOL_LINKAGE_NAME (p->symbol));
3560           strcat (string, "'");
3561           break_command (string, from_tty);
3562           print_symbol_info (FUNCTIONS_DOMAIN,
3563                              p->symtab,
3564                              p->symbol,
3565                              p->block,
3566                              p->symtab->filename);
3567         }
3568       else
3569         {
3570           char *string = alloca (strlen (SYMBOL_LINKAGE_NAME (p->msymbol))
3571                                  + 3);
3572           strcpy (string, "'");
3573           strcat (string, SYMBOL_LINKAGE_NAME (p->msymbol));
3574           strcat (string, "'");
3575
3576           break_command (string, from_tty);
3577           printf_filtered ("<function, no debug info> %s;\n",
3578                            SYMBOL_PRINT_NAME (p->msymbol));
3579         }
3580     }
3581
3582   do_cleanups (old_chain);
3583 }
3584 \f
3585
3586 /* Helper routine for make_symbol_completion_list.  */
3587
3588 static int return_val_size;
3589 static int return_val_index;
3590 static char **return_val;
3591
3592 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
3593       completion_list_add_name \
3594         (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
3595
3596 /*  Test to see if the symbol specified by SYMNAME (which is already
3597    demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
3598    characters.  If so, add it to the current completion list. */
3599
3600 static void
3601 completion_list_add_name (char *symname, char *sym_text, int sym_text_len,
3602                           char *text, char *word)
3603 {
3604   int newsize;
3605   int i;
3606
3607   /* clip symbols that cannot match */
3608
3609   if (strncmp (symname, sym_text, sym_text_len) != 0)
3610     {
3611       return;
3612     }
3613
3614   /* We have a match for a completion, so add SYMNAME to the current list
3615      of matches. Note that the name is moved to freshly malloc'd space. */
3616
3617   {
3618     char *new;
3619     if (word == sym_text)
3620       {
3621         new = xmalloc (strlen (symname) + 5);
3622         strcpy (new, symname);
3623       }
3624     else if (word > sym_text)
3625       {
3626         /* Return some portion of symname.  */
3627         new = xmalloc (strlen (symname) + 5);
3628         strcpy (new, symname + (word - sym_text));
3629       }
3630     else
3631       {
3632         /* Return some of SYM_TEXT plus symname.  */
3633         new = xmalloc (strlen (symname) + (sym_text - word) + 5);
3634         strncpy (new, word, sym_text - word);
3635         new[sym_text - word] = '\0';
3636         strcat (new, symname);
3637       }
3638
3639     if (return_val_index + 3 > return_val_size)
3640       {
3641         newsize = (return_val_size *= 2) * sizeof (char *);
3642         return_val = (char **) xrealloc ((char *) return_val, newsize);
3643       }
3644     return_val[return_val_index++] = new;
3645     return_val[return_val_index] = NULL;
3646   }
3647 }
3648
3649 /* ObjC: In case we are completing on a selector, look as the msymbol
3650    again and feed all the selectors into the mill.  */
3651
3652 static void
3653 completion_list_objc_symbol (struct minimal_symbol *msymbol, char *sym_text,
3654                              int sym_text_len, char *text, char *word)
3655 {
3656   static char *tmp = NULL;
3657   static unsigned int tmplen = 0;
3658
3659   char *method, *category, *selector;
3660   char *tmp2 = NULL;
3661
3662   method = SYMBOL_NATURAL_NAME (msymbol);
3663
3664   /* Is it a method?  */
3665   if ((method[0] != '-') && (method[0] != '+'))
3666     return;
3667
3668   if (sym_text[0] == '[')
3669     /* Complete on shortened method method.  */
3670     completion_list_add_name (method + 1, sym_text, sym_text_len, text, word);
3671
3672   while ((strlen (method) + 1) >= tmplen)
3673     {
3674       if (tmplen == 0)
3675         tmplen = 1024;
3676       else
3677         tmplen *= 2;
3678       tmp = xrealloc (tmp, tmplen);
3679     }
3680   selector = strchr (method, ' ');
3681   if (selector != NULL)
3682     selector++;
3683
3684   category = strchr (method, '(');
3685
3686   if ((category != NULL) && (selector != NULL))
3687     {
3688       memcpy (tmp, method, (category - method));
3689       tmp[category - method] = ' ';
3690       memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
3691       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
3692       if (sym_text[0] == '[')
3693         completion_list_add_name (tmp + 1, sym_text, sym_text_len, text, word);
3694     }
3695
3696   if (selector != NULL)
3697     {
3698       /* Complete on selector only.  */
3699       strcpy (tmp, selector);
3700       tmp2 = strchr (tmp, ']');
3701       if (tmp2 != NULL)
3702         *tmp2 = '\0';
3703
3704       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
3705     }
3706 }
3707
3708 /* Break the non-quoted text based on the characters which are in
3709    symbols. FIXME: This should probably be language-specific. */
3710
3711 static char *
3712 language_search_unquoted_string (char *text, char *p)
3713 {
3714   for (; p > text; --p)
3715     {
3716       if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
3717         continue;
3718       else
3719         {
3720           if ((current_language->la_language == language_objc))
3721             {
3722               if (p[-1] == ':')     /* might be part of a method name */
3723                 continue;
3724               else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
3725                 p -= 2;             /* beginning of a method name */
3726               else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
3727                 {                   /* might be part of a method name */
3728                   char *t = p;
3729
3730                   /* Seeing a ' ' or a '(' is not conclusive evidence
3731                      that we are in the middle of a method name.  However,
3732                      finding "-[" or "+[" should be pretty un-ambiguous.
3733                      Unfortunately we have to find it now to decide.  */
3734
3735                   while (t > text)
3736                     if (isalnum (t[-1]) || t[-1] == '_' ||
3737                         t[-1] == ' '    || t[-1] == ':' ||
3738                         t[-1] == '('    || t[-1] == ')')
3739                       --t;
3740                     else
3741                       break;
3742
3743                   if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
3744                     p = t - 2;      /* method name detected */
3745                   /* else we leave with p unchanged */
3746                 }
3747             }
3748           break;
3749         }
3750     }
3751   return p;
3752 }
3753
3754 static void
3755 completion_list_add_fields (struct symbol *sym, char *sym_text,
3756                             int sym_text_len, char *text, char *word)
3757 {
3758   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
3759     {
3760       struct type *t = SYMBOL_TYPE (sym);
3761       enum type_code c = TYPE_CODE (t);
3762       int j;
3763
3764       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
3765         for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
3766           if (TYPE_FIELD_NAME (t, j))
3767             completion_list_add_name (TYPE_FIELD_NAME (t, j),
3768                                       sym_text, sym_text_len, text, word);
3769     }
3770 }
3771
3772 /* Type of the user_data argument passed to add_macro_name.  The
3773    contents are simply whatever is needed by
3774    completion_list_add_name.  */
3775 struct add_macro_name_data
3776 {
3777   char *sym_text;
3778   int sym_text_len;
3779   char *text;
3780   char *word;
3781 };
3782
3783 /* A callback used with macro_for_each and macro_for_each_in_scope.
3784    This adds a macro's name to the current completion list.  */
3785 static void
3786 add_macro_name (const char *name, const struct macro_definition *ignore,
3787                 void *user_data)
3788 {
3789   struct add_macro_name_data *datum = (struct add_macro_name_data *) user_data;
3790   completion_list_add_name ((char *) name,
3791                             datum->sym_text, datum->sym_text_len,
3792                             datum->text, datum->word);
3793 }
3794
3795 char **
3796 default_make_symbol_completion_list (char *text, char *word)
3797 {
3798   /* Problem: All of the symbols have to be copied because readline
3799      frees them.  I'm not going to worry about this; hopefully there
3800      won't be that many.  */
3801
3802   struct symbol *sym;
3803   struct symtab *s;
3804   struct partial_symtab *ps;
3805   struct minimal_symbol *msymbol;
3806   struct objfile *objfile;
3807   struct block *b;
3808   const struct block *surrounding_static_block, *surrounding_global_block;
3809   struct dict_iterator iter;
3810   struct partial_symbol **psym;
3811   /* The symbol we are completing on.  Points in same buffer as text.  */
3812   char *sym_text;
3813   /* Length of sym_text.  */
3814   int sym_text_len;
3815
3816   /* Now look for the symbol we are supposed to complete on.  */
3817   {
3818     char *p;
3819     char quote_found;
3820     char *quote_pos = NULL;
3821
3822     /* First see if this is a quoted string.  */
3823     quote_found = '\0';
3824     for (p = text; *p != '\0'; ++p)
3825       {
3826         if (quote_found != '\0')
3827           {
3828             if (*p == quote_found)
3829               /* Found close quote.  */
3830               quote_found = '\0';
3831             else if (*p == '\\' && p[1] == quote_found)
3832               /* A backslash followed by the quote character
3833                  doesn't end the string.  */
3834               ++p;
3835           }
3836         else if (*p == '\'' || *p == '"')
3837           {
3838             quote_found = *p;
3839             quote_pos = p;
3840           }
3841       }
3842     if (quote_found == '\'')
3843       /* A string within single quotes can be a symbol, so complete on it.  */
3844       sym_text = quote_pos + 1;
3845     else if (quote_found == '"')
3846       /* A double-quoted string is never a symbol, nor does it make sense
3847          to complete it any other way.  */
3848       {
3849         return_val = (char **) xmalloc (sizeof (char *));
3850         return_val[0] = NULL;
3851         return return_val;
3852       }
3853     else
3854       {
3855         /* It is not a quoted string.  Break it based on the characters
3856            which are in symbols.  */
3857         while (p > text)
3858           {
3859             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
3860                 || p[-1] == ':')
3861               --p;
3862             else
3863               break;
3864           }
3865         sym_text = p;
3866       }
3867   }
3868
3869   sym_text_len = strlen (sym_text);
3870
3871   return_val_size = 100;
3872   return_val_index = 0;
3873   return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *));
3874   return_val[0] = NULL;
3875
3876   /* Look through the partial symtabs for all symbols which begin
3877      by matching SYM_TEXT.  Add each one that you find to the list.  */
3878
3879   ALL_PSYMTABS (objfile, ps)
3880   {
3881     /* If the psymtab's been read in we'll get it when we search
3882        through the blockvector.  */
3883     if (ps->readin)
3884       continue;
3885
3886     for (psym = objfile->global_psymbols.list + ps->globals_offset;
3887          psym < (objfile->global_psymbols.list + ps->globals_offset
3888                  + ps->n_global_syms);
3889          psym++)
3890       {
3891         /* If interrupted, then quit. */
3892         QUIT;
3893         COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word);
3894       }
3895
3896     for (psym = objfile->static_psymbols.list + ps->statics_offset;
3897          psym < (objfile->static_psymbols.list + ps->statics_offset
3898                  + ps->n_static_syms);
3899          psym++)
3900       {
3901         QUIT;
3902         COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word);
3903       }
3904   }
3905
3906   /* At this point scan through the misc symbol vectors and add each
3907      symbol you find to the list.  Eventually we want to ignore
3908      anything that isn't a text symbol (everything else will be
3909      handled by the psymtab code above).  */
3910
3911   ALL_MSYMBOLS (objfile, msymbol)
3912   {
3913     QUIT;
3914     COMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text, word);
3915
3916     completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text, word);
3917   }
3918
3919   /* Search upwards from currently selected frame (so that we can
3920      complete on local vars).  Also catch fields of types defined in
3921      this places which match our text string.  Only complete on types
3922      visible from current context. */
3923
3924   b = get_selected_block (0);
3925   surrounding_static_block = block_static_block (b);
3926   surrounding_global_block = block_global_block (b);
3927   if (surrounding_static_block != NULL)
3928     while (b != surrounding_static_block)
3929       {
3930         QUIT;
3931
3932         ALL_BLOCK_SYMBOLS (b, iter, sym)
3933           {
3934             COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
3935                                         word);
3936             completion_list_add_fields (sym, sym_text, sym_text_len, text,
3937                                         word);
3938           }
3939
3940         /* Stop when we encounter an enclosing function.  Do not stop for
3941            non-inlined functions - the locals of the enclosing function
3942            are in scope for a nested function.  */
3943         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
3944           break;
3945         b = BLOCK_SUPERBLOCK (b);
3946       }
3947
3948   /* Add fields from the file's types; symbols will be added below.  */
3949
3950   if (surrounding_static_block != NULL)
3951     ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
3952       completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
3953
3954   if (surrounding_global_block != NULL)
3955       ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
3956         completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
3957
3958   /* Go through the symtabs and check the externs and statics for
3959      symbols which match.  */
3960
3961   ALL_PRIMARY_SYMTABS (objfile, s)
3962   {
3963     QUIT;
3964     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
3965     ALL_BLOCK_SYMBOLS (b, iter, sym)
3966       {
3967         COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3968       }
3969   }
3970
3971   ALL_PRIMARY_SYMTABS (objfile, s)
3972   {
3973     QUIT;
3974     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
3975     ALL_BLOCK_SYMBOLS (b, iter, sym)
3976       {
3977         COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3978       }
3979   }
3980
3981   if (current_language->la_macro_expansion == macro_expansion_c)
3982     {
3983       struct macro_scope *scope;
3984       struct add_macro_name_data datum;
3985
3986       datum.sym_text = sym_text;
3987       datum.sym_text_len = sym_text_len;
3988       datum.text = text;
3989       datum.word = word;
3990
3991       /* Add any macros visible in the default scope.  Note that this
3992          may yield the occasional wrong result, because an expression
3993          might be evaluated in a scope other than the default.  For
3994          example, if the user types "break file:line if <TAB>", the
3995          resulting expression will be evaluated at "file:line" -- but
3996          at there does not seem to be a way to detect this at
3997          completion time.  */
3998       scope = default_macro_scope ();
3999       if (scope)
4000         {
4001           macro_for_each_in_scope (scope->file, scope->line,
4002                                    add_macro_name, &datum);
4003           xfree (scope);
4004         }
4005
4006       /* User-defined macros are always visible.  */
4007       macro_for_each (macro_user_macros, add_macro_name, &datum);
4008     }
4009
4010   return (return_val);
4011 }
4012
4013 /* Return a NULL terminated array of all symbols (regardless of class)
4014    which begin by matching TEXT.  If the answer is no symbols, then
4015    the return value is an array which contains only a NULL pointer.  */
4016
4017 char **
4018 make_symbol_completion_list (char *text, char *word)
4019 {
4020   return current_language->la_make_symbol_completion_list (text, word);
4021 }
4022
4023 /* Like make_symbol_completion_list, but suitable for use as a
4024    completion function.  */
4025
4026 char **
4027 make_symbol_completion_list_fn (struct cmd_list_element *ignore,
4028                                 char *text, char *word)
4029 {
4030   return make_symbol_completion_list (text, word);
4031 }
4032
4033 /* Like make_symbol_completion_list, but returns a list of symbols
4034    defined in a source file FILE.  */
4035
4036 char **
4037 make_file_symbol_completion_list (char *text, char *word, char *srcfile)
4038 {
4039   struct symbol *sym;
4040   struct symtab *s;
4041   struct block *b;
4042   struct dict_iterator iter;
4043   /* The symbol we are completing on.  Points in same buffer as text.  */
4044   char *sym_text;
4045   /* Length of sym_text.  */
4046   int sym_text_len;
4047
4048   /* Now look for the symbol we are supposed to complete on.
4049      FIXME: This should be language-specific.  */
4050   {
4051     char *p;
4052     char quote_found;
4053     char *quote_pos = NULL;
4054
4055     /* First see if this is a quoted string.  */
4056     quote_found = '\0';
4057     for (p = text; *p != '\0'; ++p)
4058       {
4059         if (quote_found != '\0')
4060           {
4061             if (*p == quote_found)
4062               /* Found close quote.  */
4063               quote_found = '\0';
4064             else if (*p == '\\' && p[1] == quote_found)
4065               /* A backslash followed by the quote character
4066                  doesn't end the string.  */
4067               ++p;
4068           }
4069         else if (*p == '\'' || *p == '"')
4070           {
4071             quote_found = *p;
4072             quote_pos = p;
4073           }
4074       }
4075     if (quote_found == '\'')
4076       /* A string within single quotes can be a symbol, so complete on it.  */
4077       sym_text = quote_pos + 1;
4078     else if (quote_found == '"')
4079       /* A double-quoted string is never a symbol, nor does it make sense
4080          to complete it any other way.  */
4081       {
4082         return_val = (char **) xmalloc (sizeof (char *));
4083         return_val[0] = NULL;
4084         return return_val;
4085       }
4086     else
4087       {
4088         /* Not a quoted string.  */
4089         sym_text = language_search_unquoted_string (text, p);
4090       }
4091   }
4092
4093   sym_text_len = strlen (sym_text);
4094
4095   return_val_size = 10;
4096   return_val_index = 0;
4097   return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *));
4098   return_val[0] = NULL;
4099
4100   /* Find the symtab for SRCFILE (this loads it if it was not yet read
4101      in).  */
4102   s = lookup_symtab (srcfile);
4103   if (s == NULL)
4104     {
4105       /* Maybe they typed the file with leading directories, while the
4106          symbol tables record only its basename.  */
4107       const char *tail = lbasename (srcfile);
4108
4109       if (tail > srcfile)
4110         s = lookup_symtab (tail);
4111     }
4112
4113   /* If we have no symtab for that file, return an empty list.  */
4114   if (s == NULL)
4115     return (return_val);
4116
4117   /* Go through this symtab and check the externs and statics for
4118      symbols which match.  */
4119
4120   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
4121   ALL_BLOCK_SYMBOLS (b, iter, sym)
4122     {
4123       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4124     }
4125
4126   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
4127   ALL_BLOCK_SYMBOLS (b, iter, sym)
4128     {
4129       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4130     }
4131
4132   return (return_val);
4133 }
4134
4135 /* A helper function for make_source_files_completion_list.  It adds
4136    another file name to a list of possible completions, growing the
4137    list as necessary.  */
4138
4139 static void
4140 add_filename_to_list (const char *fname, char *text, char *word,
4141                       char ***list, int *list_used, int *list_alloced)
4142 {
4143   char *new;
4144   size_t fnlen = strlen (fname);
4145
4146   if (*list_used + 1 >= *list_alloced)
4147     {
4148       *list_alloced *= 2;
4149       *list = (char **) xrealloc ((char *) *list,
4150                                   *list_alloced * sizeof (char *));
4151     }
4152
4153   if (word == text)
4154     {
4155       /* Return exactly fname.  */
4156       new = xmalloc (fnlen + 5);
4157       strcpy (new, fname);
4158     }
4159   else if (word > text)
4160     {
4161       /* Return some portion of fname.  */
4162       new = xmalloc (fnlen + 5);
4163       strcpy (new, fname + (word - text));
4164     }
4165   else
4166     {
4167       /* Return some of TEXT plus fname.  */
4168       new = xmalloc (fnlen + (text - word) + 5);
4169       strncpy (new, word, text - word);
4170       new[text - word] = '\0';
4171       strcat (new, fname);
4172     }
4173   (*list)[*list_used] = new;
4174   (*list)[++*list_used] = NULL;
4175 }
4176
4177 static int
4178 not_interesting_fname (const char *fname)
4179 {
4180   static const char *illegal_aliens[] = {
4181     "_globals_",        /* inserted by coff_symtab_read */
4182     NULL
4183   };
4184   int i;
4185
4186   for (i = 0; illegal_aliens[i]; i++)
4187     {
4188       if (strcmp (fname, illegal_aliens[i]) == 0)
4189         return 1;
4190     }
4191   return 0;
4192 }
4193
4194 /* Return a NULL terminated array of all source files whose names
4195    begin with matching TEXT.  The file names are looked up in the
4196    symbol tables of this program.  If the answer is no matchess, then
4197    the return value is an array which contains only a NULL pointer.  */
4198
4199 char **
4200 make_source_files_completion_list (char *text, char *word)
4201 {
4202   struct symtab *s;
4203   struct partial_symtab *ps;
4204   struct objfile *objfile;
4205   int first = 1;
4206   int list_alloced = 1;
4207   int list_used = 0;
4208   size_t text_len = strlen (text);
4209   char **list = (char **) xmalloc (list_alloced * sizeof (char *));
4210   const char *base_name;
4211
4212   list[0] = NULL;
4213
4214   if (!have_full_symbols () && !have_partial_symbols ())
4215     return list;
4216
4217   ALL_SYMTABS (objfile, s)
4218     {
4219       if (not_interesting_fname (s->filename))
4220         continue;
4221       if (!filename_seen (s->filename, 1, &first)
4222 #if HAVE_DOS_BASED_FILE_SYSTEM
4223           && strncasecmp (s->filename, text, text_len) == 0
4224 #else
4225           && strncmp (s->filename, text, text_len) == 0
4226 #endif
4227           )
4228         {
4229           /* This file matches for a completion; add it to the current
4230              list of matches.  */
4231           add_filename_to_list (s->filename, text, word,
4232                                 &list, &list_used, &list_alloced);
4233         }
4234       else
4235         {
4236           /* NOTE: We allow the user to type a base name when the
4237              debug info records leading directories, but not the other
4238              way around.  This is what subroutines of breakpoint
4239              command do when they parse file names.  */
4240           base_name = lbasename (s->filename);
4241           if (base_name != s->filename
4242               && !filename_seen (base_name, 1, &first)
4243 #if HAVE_DOS_BASED_FILE_SYSTEM
4244               && strncasecmp (base_name, text, text_len) == 0
4245 #else
4246               && strncmp (base_name, text, text_len) == 0
4247 #endif
4248               )
4249             add_filename_to_list (base_name, text, word,
4250                                   &list, &list_used, &list_alloced);
4251         }
4252     }
4253
4254   ALL_PSYMTABS (objfile, ps)
4255     {
4256       if (not_interesting_fname (ps->filename))
4257         continue;
4258       if (!ps->readin)
4259         {
4260           if (!filename_seen (ps->filename, 1, &first)
4261 #if HAVE_DOS_BASED_FILE_SYSTEM
4262               && strncasecmp (ps->filename, text, text_len) == 0
4263 #else
4264               && strncmp (ps->filename, text, text_len) == 0
4265 #endif
4266               )
4267             {
4268               /* This file matches for a completion; add it to the
4269                  current list of matches.  */
4270               add_filename_to_list (ps->filename, text, word,
4271                                     &list, &list_used, &list_alloced);
4272
4273             }
4274           else
4275             {
4276               base_name = lbasename (ps->filename);
4277               if (base_name != ps->filename
4278                   && !filename_seen (base_name, 1, &first)
4279 #if HAVE_DOS_BASED_FILE_SYSTEM
4280                   && strncasecmp (base_name, text, text_len) == 0
4281 #else
4282                   && strncmp (base_name, text, text_len) == 0
4283 #endif
4284                   )
4285                 add_filename_to_list (base_name, text, word,
4286                                       &list, &list_used, &list_alloced);
4287             }
4288         }
4289     }
4290
4291   return list;
4292 }
4293
4294 /* Determine if PC is in the prologue of a function.  The prologue is the area
4295    between the first instruction of a function, and the first executable line.
4296    Returns 1 if PC *might* be in prologue, 0 if definately *not* in prologue.
4297
4298    If non-zero, func_start is where we think the prologue starts, possibly
4299    by previous examination of symbol table information.
4300  */
4301
4302 int
4303 in_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR func_start)
4304 {
4305   struct symtab_and_line sal;
4306   CORE_ADDR func_addr, func_end;
4307
4308   /* We have several sources of information we can consult to figure
4309      this out.
4310      - Compilers usually emit line number info that marks the prologue
4311        as its own "source line".  So the ending address of that "line"
4312        is the end of the prologue.  If available, this is the most
4313        reliable method.
4314      - The minimal symbols and partial symbols, which can usually tell
4315        us the starting and ending addresses of a function.
4316      - If we know the function's start address, we can call the
4317        architecture-defined gdbarch_skip_prologue function to analyze the
4318        instruction stream and guess where the prologue ends.
4319      - Our `func_start' argument; if non-zero, this is the caller's
4320        best guess as to the function's entry point.  At the time of
4321        this writing, handle_inferior_event doesn't get this right, so
4322        it should be our last resort.  */
4323
4324   /* Consult the partial symbol table, to find which function
4325      the PC is in.  */
4326   if (! find_pc_partial_function (pc, NULL, &func_addr, &func_end))
4327     {
4328       CORE_ADDR prologue_end;
4329
4330       /* We don't even have minsym information, so fall back to using
4331          func_start, if given.  */
4332       if (! func_start)
4333         return 1;               /* We *might* be in a prologue.  */
4334
4335       prologue_end = gdbarch_skip_prologue (gdbarch, func_start);
4336
4337       return func_start <= pc && pc < prologue_end;
4338     }
4339
4340   /* If we have line number information for the function, that's
4341      usually pretty reliable.  */
4342   sal = find_pc_line (func_addr, 0);
4343
4344   /* Now sal describes the source line at the function's entry point,
4345      which (by convention) is the prologue.  The end of that "line",
4346      sal.end, is the end of the prologue.
4347
4348      Note that, for functions whose source code is all on a single
4349      line, the line number information doesn't always end up this way.
4350      So we must verify that our purported end-of-prologue address is
4351      *within* the function, not at its start or end.  */
4352   if (sal.line == 0
4353       || sal.end <= func_addr
4354       || func_end <= sal.end)
4355     {
4356       /* We don't have any good line number info, so use the minsym
4357          information, together with the architecture-specific prologue
4358          scanning code.  */
4359       CORE_ADDR prologue_end = gdbarch_skip_prologue (gdbarch, func_addr);
4360
4361       return func_addr <= pc && pc < prologue_end;
4362     }
4363
4364   /* We have line number info, and it looks good.  */
4365   return func_addr <= pc && pc < sal.end;
4366 }
4367
4368 /* Given PC at the function's start address, attempt to find the
4369    prologue end using SAL information.  Return zero if the skip fails.
4370
4371    A non-optimized prologue traditionally has one SAL for the function
4372    and a second for the function body.  A single line function has
4373    them both pointing at the same line.
4374
4375    An optimized prologue is similar but the prologue may contain
4376    instructions (SALs) from the instruction body.  Need to skip those
4377    while not getting into the function body.
4378
4379    The functions end point and an increasing SAL line are used as
4380    indicators of the prologue's endpoint.
4381
4382    This code is based on the function refine_prologue_limit (versions
4383    found in both ia64 and ppc).  */
4384
4385 CORE_ADDR
4386 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
4387 {
4388   struct symtab_and_line prologue_sal;
4389   CORE_ADDR start_pc;
4390   CORE_ADDR end_pc;
4391   struct block *bl;
4392
4393   /* Get an initial range for the function.  */
4394   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
4395   start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
4396
4397   prologue_sal = find_pc_line (start_pc, 0);
4398   if (prologue_sal.line != 0)
4399     {
4400       /* For langauges other than assembly, treat two consecutive line
4401          entries at the same address as a zero-instruction prologue.
4402          The GNU assembler emits separate line notes for each instruction
4403          in a multi-instruction macro, but compilers generally will not
4404          do this.  */
4405       if (prologue_sal.symtab->language != language_asm)
4406         {
4407           struct linetable *linetable = LINETABLE (prologue_sal.symtab);
4408           int exact;
4409           int idx = 0;
4410
4411           /* Skip any earlier lines, and any end-of-sequence marker
4412              from a previous function.  */
4413           while (linetable->item[idx].pc != prologue_sal.pc
4414                  || linetable->item[idx].line == 0)
4415             idx++;
4416
4417           if (idx+1 < linetable->nitems
4418               && linetable->item[idx+1].line != 0
4419               && linetable->item[idx+1].pc == start_pc)
4420             return start_pc;
4421         }
4422
4423       /* If there is only one sal that covers the entire function,
4424          then it is probably a single line function, like
4425          "foo(){}". */
4426       if (prologue_sal.end >= end_pc)
4427         return 0;
4428
4429       while (prologue_sal.end < end_pc)
4430         {
4431           struct symtab_and_line sal;
4432
4433           sal = find_pc_line (prologue_sal.end, 0);
4434           if (sal.line == 0)
4435             break;
4436           /* Assume that a consecutive SAL for the same (or larger)
4437              line mark the prologue -> body transition.  */
4438           if (sal.line >= prologue_sal.line)
4439             break;
4440
4441           /* The line number is smaller.  Check that it's from the
4442              same function, not something inlined.  If it's inlined,
4443              then there is no point comparing the line numbers.  */
4444           bl = block_for_pc (prologue_sal.end);
4445           while (bl)
4446             {
4447               if (block_inlined_p (bl))
4448                 break;
4449               if (BLOCK_FUNCTION (bl))
4450                 {
4451                   bl = NULL;
4452                   break;
4453                 }
4454               bl = BLOCK_SUPERBLOCK (bl);
4455             }
4456           if (bl != NULL)
4457             break;
4458
4459           /* The case in which compiler's optimizer/scheduler has
4460              moved instructions into the prologue.  We look ahead in
4461              the function looking for address ranges whose
4462              corresponding line number is less the first one that we
4463              found for the function.  This is more conservative then
4464              refine_prologue_limit which scans a large number of SALs
4465              looking for any in the prologue */
4466           prologue_sal = sal;
4467         }
4468     }
4469
4470   if (prologue_sal.end < end_pc)
4471     /* Return the end of this line, or zero if we could not find a
4472        line.  */
4473     return prologue_sal.end;
4474   else
4475     /* Don't return END_PC, which is past the end of the function.  */
4476     return prologue_sal.pc;
4477 }
4478 \f
4479 struct symtabs_and_lines
4480 decode_line_spec (char *string, int funfirstline)
4481 {
4482   struct symtabs_and_lines sals;
4483   struct symtab_and_line cursal;
4484
4485   if (string == 0)
4486     error (_("Empty line specification."));
4487
4488   /* We use whatever is set as the current source line. We do not try
4489      and get a default  or it will recursively call us! */
4490   cursal = get_current_source_symtab_and_line ();
4491
4492   sals = decode_line_1 (&string, funfirstline,
4493                         cursal.symtab, cursal.line,
4494                         (char ***) NULL, NULL);
4495
4496   if (*string)
4497     error (_("Junk at end of line specification: %s"), string);
4498   return sals;
4499 }
4500
4501 /* Track MAIN */
4502 static char *name_of_main;
4503
4504 void
4505 set_main_name (const char *name)
4506 {
4507   if (name_of_main != NULL)
4508     {
4509       xfree (name_of_main);
4510       name_of_main = NULL;
4511     }
4512   if (name != NULL)
4513     {
4514       name_of_main = xstrdup (name);
4515     }
4516 }
4517
4518 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
4519    accordingly.  */
4520
4521 static void
4522 find_main_name (void)
4523 {
4524   const char *new_main_name;
4525
4526   /* Try to see if the main procedure is in Ada.  */
4527   /* FIXME: brobecker/2005-03-07: Another way of doing this would
4528      be to add a new method in the language vector, and call this
4529      method for each language until one of them returns a non-empty
4530      name.  This would allow us to remove this hard-coded call to
4531      an Ada function.  It is not clear that this is a better approach
4532      at this point, because all methods need to be written in a way
4533      such that false positives never be returned. For instance, it is
4534      important that a method does not return a wrong name for the main
4535      procedure if the main procedure is actually written in a different
4536      language.  It is easy to guaranty this with Ada, since we use a
4537      special symbol generated only when the main in Ada to find the name
4538      of the main procedure. It is difficult however to see how this can
4539      be guarantied for languages such as C, for instance.  This suggests
4540      that order of call for these methods becomes important, which means
4541      a more complicated approach.  */
4542   new_main_name = ada_main_name ();
4543   if (new_main_name != NULL)
4544     {
4545       set_main_name (new_main_name);
4546       return;
4547     }
4548
4549   new_main_name = pascal_main_name ();
4550   if (new_main_name != NULL)
4551     {
4552       set_main_name (new_main_name);
4553       return;
4554     }
4555
4556   /* The languages above didn't identify the name of the main procedure.
4557      Fallback to "main".  */
4558   set_main_name ("main");
4559 }
4560
4561 char *
4562 main_name (void)
4563 {
4564   if (name_of_main == NULL)
4565     find_main_name ();
4566
4567   return name_of_main;
4568 }
4569
4570 /* Handle ``executable_changed'' events for the symtab module.  */
4571
4572 static void
4573 symtab_observer_executable_changed (void)
4574 {
4575   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
4576   set_main_name (NULL);
4577 }
4578
4579 /* Helper to expand_line_sal below.  Appends new sal to SAL,
4580    initializing it from SYMTAB, LINENO and PC.  */
4581 static void
4582 append_expanded_sal (struct symtabs_and_lines *sal,
4583                      struct program_space *pspace,
4584                      struct symtab *symtab,
4585                      int lineno, CORE_ADDR pc)
4586 {
4587   sal->sals = xrealloc (sal->sals,
4588                         sizeof (sal->sals[0])
4589                         * (sal->nelts + 1));
4590   init_sal (sal->sals + sal->nelts);
4591   sal->sals[sal->nelts].pspace = pspace;
4592   sal->sals[sal->nelts].symtab = symtab;
4593   sal->sals[sal->nelts].section = NULL;
4594   sal->sals[sal->nelts].end = 0;
4595   sal->sals[sal->nelts].line = lineno;
4596   sal->sals[sal->nelts].pc = pc;
4597   ++sal->nelts;
4598 }
4599
4600 /* Helper to expand_line_sal below.  Search in the symtabs for any
4601    linetable entry that exactly matches FULLNAME and LINENO and append
4602    them to RET.  If FULLNAME is NULL or if a symtab has no full name,
4603    use FILENAME and LINENO instead.  If there is at least one match,
4604    return 1; otherwise, return 0, and return the best choice in BEST_ITEM
4605    and BEST_SYMTAB.  */
4606
4607 static int
4608 append_exact_match_to_sals (char *filename, char *fullname, int lineno,
4609                             struct symtabs_and_lines *ret,
4610                             struct linetable_entry **best_item,
4611                             struct symtab **best_symtab)
4612 {
4613   struct program_space *pspace;
4614   struct objfile *objfile;
4615   struct symtab *symtab;
4616   int exact = 0;
4617   int j;
4618   *best_item = 0;
4619   *best_symtab = 0;
4620
4621   ALL_PSPACES (pspace)
4622     ALL_PSPACE_SYMTABS (pspace, objfile, symtab)
4623     {
4624       if (FILENAME_CMP (filename, symtab->filename) == 0)
4625         {
4626           struct linetable *l;
4627           int len;
4628           if (fullname != NULL
4629               && symtab_to_fullname (symtab) != NULL
4630               && FILENAME_CMP (fullname, symtab->fullname) != 0)
4631             continue;             
4632           l = LINETABLE (symtab);
4633           if (!l)
4634             continue;
4635           len = l->nitems;
4636
4637           for (j = 0; j < len; j++)
4638             {
4639               struct linetable_entry *item = &(l->item[j]);
4640
4641               if (item->line == lineno)
4642                 {
4643                   exact = 1;
4644                   append_expanded_sal (ret, objfile->pspace,
4645                                        symtab, lineno, item->pc);
4646                 }
4647               else if (!exact && item->line > lineno
4648                        && (*best_item == NULL
4649                            || item->line < (*best_item)->line))
4650                 {
4651                   *best_item = item;
4652                   *best_symtab = symtab;
4653                 }
4654             }
4655         }
4656     }
4657   return exact;
4658 }
4659
4660 /* Compute a set of all sals in all program spaces that correspond to
4661    same file and line as SAL and return those.  If there are several
4662    sals that belong to the same block, only one sal for the block is
4663    included in results.  */
4664
4665 struct symtabs_and_lines
4666 expand_line_sal (struct symtab_and_line sal)
4667 {
4668   struct symtabs_and_lines ret, this_line;
4669   int i, j;
4670   struct objfile *objfile;
4671   struct partial_symtab *psymtab;
4672   struct symtab *symtab;
4673   int lineno;
4674   int deleted = 0;
4675   struct block **blocks = NULL;
4676   int *filter;
4677   struct cleanup *old_chain;
4678
4679   ret.nelts = 0;
4680   ret.sals = NULL;
4681
4682   /* Only expand sals that represent file.c:line.  */
4683   if (sal.symtab == NULL || sal.line == 0 || sal.pc != 0)
4684     {
4685       ret.sals = xmalloc (sizeof (struct symtab_and_line));
4686       ret.sals[0] = sal;
4687       ret.nelts = 1;
4688       return ret;
4689     }
4690   else
4691     {
4692       struct program_space *pspace;
4693       struct linetable_entry *best_item = 0;
4694       struct symtab *best_symtab = 0;
4695       int exact = 0;
4696       char *match_filename;
4697
4698       lineno = sal.line;
4699       match_filename = sal.symtab->filename;
4700
4701       /* We need to find all symtabs for a file which name
4702          is described by sal.  We cannot just directly
4703          iterate over symtabs, since a symtab might not be
4704          yet created.  We also cannot iterate over psymtabs,
4705          calling PSYMTAB_TO_SYMTAB and working on that symtab,
4706          since PSYMTAB_TO_SYMTAB will return NULL for psymtab
4707          corresponding to an included file.  Therefore, we do
4708          first pass over psymtabs, reading in those with
4709          the right name.  Then, we iterate over symtabs, knowing
4710          that all symtabs we're interested in are loaded.  */
4711
4712       old_chain = save_current_program_space ();
4713       ALL_PSPACES (pspace)
4714         ALL_PSPACE_PSYMTABS (pspace, objfile, psymtab)
4715         {
4716           if (FILENAME_CMP (match_filename, psymtab->filename) == 0)
4717             {
4718               set_current_program_space (pspace);
4719
4720               PSYMTAB_TO_SYMTAB (psymtab);
4721             }
4722         }
4723       do_cleanups (old_chain);
4724
4725       /* Now search the symtab for exact matches and append them.  If
4726          none is found, append the best_item and all its exact
4727          matches.  */
4728       symtab_to_fullname (sal.symtab);
4729       exact = append_exact_match_to_sals (sal.symtab->filename,
4730                                           sal.symtab->fullname, lineno,
4731                                           &ret, &best_item, &best_symtab);
4732       if (!exact && best_item)
4733         append_exact_match_to_sals (best_symtab->filename,
4734                                     best_symtab->fullname, best_item->line,
4735                                     &ret, &best_item, &best_symtab);
4736     }
4737
4738   /* For optimized code, compiler can scatter one source line accross
4739      disjoint ranges of PC values, even when no duplicate functions
4740      or inline functions are involved.  For example, 'for (;;)' inside
4741      non-template non-inline non-ctor-or-dtor function can result
4742      in two PC ranges.  In this case, we don't want to set breakpoint
4743      on first PC of each range.  To filter such cases, we use containing
4744      blocks -- for each PC found above we see if there are other PCs
4745      that are in the same block.  If yes, the other PCs are filtered out.  */
4746
4747   old_chain = save_current_program_space ();
4748   filter = alloca (ret.nelts * sizeof (int));
4749   blocks = alloca (ret.nelts * sizeof (struct block *));
4750   for (i = 0; i < ret.nelts; ++i)
4751     {
4752       struct blockvector *bl;
4753       struct block *b;
4754
4755       set_current_program_space (ret.sals[i].pspace);
4756
4757       filter[i] = 1;
4758       blocks[i] = block_for_pc_sect (ret.sals[i].pc, ret.sals[i].section);
4759
4760     }
4761   do_cleanups (old_chain);
4762
4763   for (i = 0; i < ret.nelts; ++i)
4764     if (blocks[i] != NULL)
4765       for (j = i+1; j < ret.nelts; ++j)
4766         if (blocks[j] == blocks[i])
4767           {
4768             filter[j] = 0;
4769             ++deleted;
4770             break;
4771           }
4772
4773   {
4774     struct symtab_and_line *final =
4775       xmalloc (sizeof (struct symtab_and_line) * (ret.nelts-deleted));
4776
4777     for (i = 0, j = 0; i < ret.nelts; ++i)
4778       if (filter[i])
4779         final[j++] = ret.sals[i];
4780
4781     ret.nelts -= deleted;
4782     xfree (ret.sals);
4783     ret.sals = final;
4784   }
4785
4786   return ret;
4787 }
4788
4789
4790 void
4791 _initialize_symtab (void)
4792 {
4793   add_info ("variables", variables_info, _("\
4794 All global and static variable names, or those matching REGEXP."));
4795   if (dbx_commands)
4796     add_com ("whereis", class_info, variables_info, _("\
4797 All global and static variable names, or those matching REGEXP."));
4798
4799   add_info ("functions", functions_info,
4800             _("All function names, or those matching REGEXP."));
4801
4802   /* FIXME:  This command has at least the following problems:
4803      1.  It prints builtin types (in a very strange and confusing fashion).
4804      2.  It doesn't print right, e.g. with
4805      typedef struct foo *FOO
4806      type_print prints "FOO" when we want to make it (in this situation)
4807      print "struct foo *".
4808      I also think "ptype" or "whatis" is more likely to be useful (but if
4809      there is much disagreement "info types" can be fixed).  */
4810   add_info ("types", types_info,
4811             _("All type names, or those matching REGEXP."));
4812
4813   add_info ("sources", sources_info,
4814             _("Source files in the program."));
4815
4816   add_com ("rbreak", class_breakpoint, rbreak_command,
4817            _("Set a breakpoint for all functions matching REGEXP."));
4818
4819   if (xdb_commands)
4820     {
4821       add_com ("lf", class_info, sources_info,
4822                _("Source files in the program"));
4823       add_com ("lg", class_info, variables_info, _("\
4824 All global and static variable names, or those matching REGEXP."));
4825     }
4826
4827   add_setshow_enum_cmd ("multiple-symbols", no_class,
4828                         multiple_symbols_modes, &multiple_symbols_mode,
4829                         _("\
4830 Set the debugger behavior when more than one symbol are possible matches\n\
4831 in an expression."), _("\
4832 Show how the debugger handles ambiguities in expressions."), _("\
4833 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
4834                         NULL, NULL, &setlist, &showlist);
4835
4836   observer_attach_executable_changed (symtab_observer_executable_changed);
4837 }