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