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