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