gdb/
[external/binutils.git] / gdb / symtab.c
1 /* Symbol table lookup for the GNU debugger, GDB.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009
5    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
1388       if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block))
1389         break;
1390       block = BLOCK_SUPERBLOCK (block);
1391     }
1392
1393   /* We've reached the edge of the function without finding a result.  */
1394
1395   return NULL;
1396 }
1397
1398 /* Look up OBJFILE to BLOCK.  */
1399
1400 static struct objfile *
1401 lookup_objfile_from_block (const struct block *block)
1402 {
1403   struct objfile *obj;
1404   struct symtab *s;
1405
1406   if (block == NULL)
1407     return NULL;
1408
1409   block = block_global_block (block);
1410   /* Go through SYMTABS.  */
1411   ALL_SYMTABS (obj, s)
1412     if (block == BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK))
1413       return obj;
1414
1415   return NULL;
1416 }
1417
1418 /* Look up a symbol in a block; if found, fixup the symbol, and set
1419    block_found appropriately.  */
1420
1421 struct symbol *
1422 lookup_symbol_aux_block (const char *name, const char *linkage_name,
1423                          const struct block *block,
1424                          const domain_enum domain)
1425 {
1426   struct symbol *sym;
1427
1428   sym = lookup_block_symbol (block, name, linkage_name, domain);
1429   if (sym)
1430     {
1431       block_found = block;
1432       return fixup_symbol_section (sym, NULL);
1433     }
1434
1435   return NULL;
1436 }
1437
1438 /* Check all global symbols in OBJFILE in symtabs and
1439    psymtabs.  */
1440
1441 struct symbol *
1442 lookup_global_symbol_from_objfile (const struct objfile *objfile,
1443                                    const char *name,
1444                                    const char *linkage_name,
1445                                    const domain_enum domain)
1446 {
1447   struct symbol *sym;
1448   struct blockvector *bv;
1449   const struct block *block;
1450   struct symtab *s;
1451   struct partial_symtab *ps;
1452
1453   /* Go through symtabs.  */
1454   ALL_OBJFILE_SYMTABS (objfile, s)
1455   {
1456     bv = BLOCKVECTOR (s);
1457     block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1458     sym = lookup_block_symbol (block, name, linkage_name, domain);
1459     if (sym)
1460       {
1461         block_found = block;
1462         return fixup_symbol_section (sym, (struct objfile *)objfile);
1463       }
1464   }
1465
1466   /* Now go through psymtabs.  */
1467   ALL_OBJFILE_PSYMTABS (objfile, ps)
1468   {
1469     if (!ps->readin
1470         && lookup_partial_symbol (ps, name, linkage_name,
1471                                   1, domain))
1472       {
1473         s = PSYMTAB_TO_SYMTAB (ps);
1474         bv = BLOCKVECTOR (s);
1475         block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1476         sym = lookup_block_symbol (block, name, linkage_name, domain);
1477         return fixup_symbol_section (sym, (struct objfile *)objfile);
1478       }
1479   }
1480
1481   if (objfile->separate_debug_objfile)
1482     return lookup_global_symbol_from_objfile (objfile->separate_debug_objfile,
1483                                               name, linkage_name, domain);
1484
1485   return NULL;
1486 }
1487
1488 /* Check to see if the symbol is defined in one of the symtabs.
1489    BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
1490    depending on whether or not we want to search global symbols or
1491    static symbols.  */
1492
1493 static struct symbol *
1494 lookup_symbol_aux_symtabs (int block_index,
1495                            const char *name, const char *linkage_name,
1496                            const domain_enum domain)
1497 {
1498   struct symbol *sym;
1499   struct objfile *objfile;
1500   struct blockvector *bv;
1501   const struct block *block;
1502   struct symtab *s;
1503
1504   ALL_PRIMARY_SYMTABS (objfile, s)
1505   {
1506     bv = BLOCKVECTOR (s);
1507     block = BLOCKVECTOR_BLOCK (bv, block_index);
1508     sym = lookup_block_symbol (block, name, linkage_name, domain);
1509     if (sym)
1510       {
1511         block_found = block;
1512         return fixup_symbol_section (sym, objfile);
1513       }
1514   }
1515
1516   return NULL;
1517 }
1518
1519 /* Check to see if the symbol is defined in one of the partial
1520    symtabs.  BLOCK_INDEX should be either GLOBAL_BLOCK or
1521    STATIC_BLOCK, depending on whether or not we want to search global
1522    symbols or static symbols.  */
1523
1524 static struct symbol *
1525 lookup_symbol_aux_psymtabs (int block_index, const char *name,
1526                             const char *linkage_name,
1527                             const domain_enum domain)
1528 {
1529   struct symbol *sym;
1530   struct objfile *objfile;
1531   struct blockvector *bv;
1532   const struct block *block;
1533   struct partial_symtab *ps;
1534   struct symtab *s;
1535   const int psymtab_index = (block_index == GLOBAL_BLOCK ? 1 : 0);
1536
1537   ALL_PSYMTABS (objfile, ps)
1538   {
1539     if (!ps->readin
1540         && lookup_partial_symbol (ps, name, linkage_name,
1541                                   psymtab_index, domain))
1542       {
1543         s = PSYMTAB_TO_SYMTAB (ps);
1544         bv = BLOCKVECTOR (s);
1545         block = BLOCKVECTOR_BLOCK (bv, block_index);
1546         sym = lookup_block_symbol (block, name, linkage_name, domain);
1547         if (!sym)
1548           {
1549             /* This shouldn't be necessary, but as a last resort try
1550                looking in the statics even though the psymtab claimed
1551                the symbol was global, or vice-versa. It's possible
1552                that the psymtab gets it wrong in some cases.  */
1553
1554             /* FIXME: carlton/2002-09-30: Should we really do that?
1555                If that happens, isn't it likely to be a GDB error, in
1556                which case we should fix the GDB error rather than
1557                silently dealing with it here?  So I'd vote for
1558                removing the check for the symbol in the other
1559                block.  */
1560             block = BLOCKVECTOR_BLOCK (bv,
1561                                        block_index == GLOBAL_BLOCK ?
1562                                        STATIC_BLOCK : GLOBAL_BLOCK);
1563             sym = lookup_block_symbol (block, name, linkage_name, domain);
1564             if (!sym)
1565               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>)."),
1566                      block_index == GLOBAL_BLOCK ? "global" : "static",
1567                      name, ps->filename, name, name);
1568           }
1569         return fixup_symbol_section (sym, objfile);
1570       }
1571   }
1572
1573   return NULL;
1574 }
1575
1576 /* A default version of lookup_symbol_nonlocal for use by languages
1577    that can't think of anything better to do.  This implements the C
1578    lookup rules.  */
1579
1580 struct symbol *
1581 basic_lookup_symbol_nonlocal (const char *name,
1582                               const char *linkage_name,
1583                               const struct block *block,
1584                               const domain_enum domain)
1585 {
1586   struct symbol *sym;
1587
1588   /* NOTE: carlton/2003-05-19: The comments below were written when
1589      this (or what turned into this) was part of lookup_symbol_aux;
1590      I'm much less worried about these questions now, since these
1591      decisions have turned out well, but I leave these comments here
1592      for posterity.  */
1593
1594   /* NOTE: carlton/2002-12-05: There is a question as to whether or
1595      not it would be appropriate to search the current global block
1596      here as well.  (That's what this code used to do before the
1597      is_a_field_of_this check was moved up.)  On the one hand, it's
1598      redundant with the lookup_symbol_aux_symtabs search that happens
1599      next.  On the other hand, if decode_line_1 is passed an argument
1600      like filename:var, then the user presumably wants 'var' to be
1601      searched for in filename.  On the third hand, there shouldn't be
1602      multiple global variables all of which are named 'var', and it's
1603      not like decode_line_1 has ever restricted its search to only
1604      global variables in a single filename.  All in all, only
1605      searching the static block here seems best: it's correct and it's
1606      cleanest.  */
1607
1608   /* NOTE: carlton/2002-12-05: There's also a possible performance
1609      issue here: if you usually search for global symbols in the
1610      current file, then it would be slightly better to search the
1611      current global block before searching all the symtabs.  But there
1612      are other factors that have a much greater effect on performance
1613      than that one, so I don't think we should worry about that for
1614      now.  */
1615
1616   sym = lookup_symbol_static (name, linkage_name, block, domain);
1617   if (sym != NULL)
1618     return sym;
1619
1620   return lookup_symbol_global (name, linkage_name, block, domain);
1621 }
1622
1623 /* Lookup a symbol in the static block associated to BLOCK, if there
1624    is one; do nothing if BLOCK is NULL or a global block.  */
1625
1626 struct symbol *
1627 lookup_symbol_static (const char *name,
1628                       const char *linkage_name,
1629                       const struct block *block,
1630                       const domain_enum domain)
1631 {
1632   const struct block *static_block = block_static_block (block);
1633
1634   if (static_block != NULL)
1635     return lookup_symbol_aux_block (name, linkage_name, static_block, domain);
1636   else
1637     return NULL;
1638 }
1639
1640 /* Lookup a symbol in all files' global blocks (searching psymtabs if
1641    necessary).  */
1642
1643 struct symbol *
1644 lookup_symbol_global (const char *name,
1645                       const char *linkage_name,
1646                       const struct block *block,
1647                       const domain_enum domain)
1648 {
1649   struct symbol *sym = NULL;
1650   struct objfile *objfile = NULL;
1651
1652   /* Call library-specific lookup procedure.  */
1653   objfile = lookup_objfile_from_block (block);
1654   if (objfile != NULL)
1655     sym = solib_global_lookup (objfile, name, linkage_name, domain);
1656   if (sym != NULL)
1657     return sym;
1658
1659   sym = lookup_symbol_aux_symtabs (GLOBAL_BLOCK, name, linkage_name, domain);
1660   if (sym != NULL)
1661     return sym;
1662
1663   return lookup_symbol_aux_psymtabs (GLOBAL_BLOCK, name, linkage_name, domain);
1664 }
1665
1666 int
1667 symbol_matches_domain (enum language symbol_language,
1668                        domain_enum symbol_domain,
1669                        domain_enum domain)
1670 {
1671   /* For C++ "struct foo { ... }" also defines a typedef for "foo".
1672      A Java class declaration also defines a typedef for the class.
1673      Similarly, any Ada type declaration implicitly defines a typedef.  */
1674   if (symbol_language == language_cplus
1675       || symbol_language == language_java
1676       || symbol_language == language_ada)
1677     {
1678       if ((domain == VAR_DOMAIN || domain == STRUCT_DOMAIN)
1679           && symbol_domain == STRUCT_DOMAIN)
1680         return 1;
1681     }
1682   /* For all other languages, strict match is required.  */
1683   return (symbol_domain == domain);
1684 }
1685
1686 /* Look, in partial_symtab PST, for symbol whose natural name is NAME.
1687    If LINKAGE_NAME is non-NULL, check in addition that the symbol's
1688    linkage name matches it.  Check the global symbols if GLOBAL, the
1689    static symbols if not */
1690
1691 struct partial_symbol *
1692 lookup_partial_symbol (struct partial_symtab *pst, const char *name,
1693                        const char *linkage_name, int global,
1694                        domain_enum domain)
1695 {
1696   struct partial_symbol *temp;
1697   struct partial_symbol **start, **psym;
1698   struct partial_symbol **top, **real_top, **bottom, **center;
1699   int length = (global ? pst->n_global_syms : pst->n_static_syms);
1700   int do_linear_search = 1;
1701
1702   if (length == 0)
1703     {
1704       return (NULL);
1705     }
1706   start = (global ?
1707            pst->objfile->global_psymbols.list + pst->globals_offset :
1708            pst->objfile->static_psymbols.list + pst->statics_offset);
1709
1710   if (global)                   /* This means we can use a binary search. */
1711     {
1712       do_linear_search = 0;
1713
1714       /* Binary search.  This search is guaranteed to end with center
1715          pointing at the earliest partial symbol whose name might be
1716          correct.  At that point *all* partial symbols with an
1717          appropriate name will be checked against the correct
1718          domain.  */
1719
1720       bottom = start;
1721       top = start + length - 1;
1722       real_top = top;
1723       while (top > bottom)
1724         {
1725           center = bottom + (top - bottom) / 2;
1726           if (!(center < top))
1727             internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
1728           if (!do_linear_search
1729               && (SYMBOL_LANGUAGE (*center) == language_java))
1730             {
1731               do_linear_search = 1;
1732             }
1733           if (strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*center), name) >= 0)
1734             {
1735               top = center;
1736             }
1737           else
1738             {
1739               bottom = center + 1;
1740             }
1741         }
1742       if (!(top == bottom))
1743         internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
1744
1745       while (top <= real_top
1746              && (linkage_name != NULL
1747                  ? strcmp (SYMBOL_LINKAGE_NAME (*top), linkage_name) == 0
1748                  : SYMBOL_MATCHES_SEARCH_NAME (*top,name)))
1749         {
1750           if (symbol_matches_domain (SYMBOL_LANGUAGE (*top),
1751                                      SYMBOL_DOMAIN (*top), domain))
1752             return (*top);
1753           top++;
1754         }
1755     }
1756
1757   /* Can't use a binary search or else we found during the binary search that
1758      we should also do a linear search. */
1759
1760   if (do_linear_search)
1761     {
1762       for (psym = start; psym < start + length; psym++)
1763         {
1764           if (symbol_matches_domain (SYMBOL_LANGUAGE (*psym),
1765                                      SYMBOL_DOMAIN (*psym), domain))
1766             {
1767               if (linkage_name != NULL
1768                   ? strcmp (SYMBOL_LINKAGE_NAME (*psym), linkage_name) == 0
1769                   : SYMBOL_MATCHES_SEARCH_NAME (*psym, name))
1770                 {
1771                   return (*psym);
1772                 }
1773             }
1774         }
1775     }
1776
1777   return (NULL);
1778 }
1779
1780 /* Look up a type named NAME in the struct_domain.  The type returned
1781    must not be opaque -- i.e., must have at least one field
1782    defined.  */
1783
1784 struct type *
1785 lookup_transparent_type (const char *name)
1786 {
1787   return current_language->la_lookup_transparent_type (name);
1788 }
1789
1790 /* The standard implementation of lookup_transparent_type.  This code
1791    was modeled on lookup_symbol -- the parts not relevant to looking
1792    up types were just left out.  In particular it's assumed here that
1793    types are available in struct_domain and only at file-static or
1794    global blocks.  */
1795
1796 struct type *
1797 basic_lookup_transparent_type (const char *name)
1798 {
1799   struct symbol *sym;
1800   struct symtab *s = NULL;
1801   struct partial_symtab *ps;
1802   struct blockvector *bv;
1803   struct objfile *objfile;
1804   struct block *block;
1805
1806   /* Now search all the global symbols.  Do the symtab's first, then
1807      check the psymtab's. If a psymtab indicates the existence
1808      of the desired name as a global, then do psymtab-to-symtab
1809      conversion on the fly and return the found symbol.  */
1810
1811   ALL_PRIMARY_SYMTABS (objfile, s)
1812   {
1813     bv = BLOCKVECTOR (s);
1814     block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1815     sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
1816     if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1817       {
1818         return SYMBOL_TYPE (sym);
1819       }
1820   }
1821
1822   ALL_PSYMTABS (objfile, ps)
1823   {
1824     if (!ps->readin && lookup_partial_symbol (ps, name, NULL,
1825                                               1, STRUCT_DOMAIN))
1826       {
1827         s = PSYMTAB_TO_SYMTAB (ps);
1828         bv = BLOCKVECTOR (s);
1829         block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1830         sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
1831         if (!sym)
1832           {
1833             /* This shouldn't be necessary, but as a last resort
1834              * try looking in the statics even though the psymtab
1835              * claimed the symbol was global. It's possible that
1836              * the psymtab gets it wrong in some cases.
1837              */
1838             block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1839             sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
1840             if (!sym)
1841               error (_("Internal: global symbol `%s' found in %s psymtab but not in symtab.\n\
1842 %s may be an inlined function, or may be a template function\n\
1843 (if a template, try specifying an instantiation: %s<type>)."),
1844                      name, ps->filename, name, name);
1845           }
1846         if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1847           return SYMBOL_TYPE (sym);
1848       }
1849   }
1850
1851   /* Now search the static file-level symbols.
1852      Not strictly correct, but more useful than an error.
1853      Do the symtab's first, then
1854      check the psymtab's. If a psymtab indicates the existence
1855      of the desired name as a file-level static, then do psymtab-to-symtab
1856      conversion on the fly and return the found symbol.
1857    */
1858
1859   ALL_PRIMARY_SYMTABS (objfile, s)
1860   {
1861     bv = BLOCKVECTOR (s);
1862     block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1863     sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
1864     if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1865       {
1866         return SYMBOL_TYPE (sym);
1867       }
1868   }
1869
1870   ALL_PSYMTABS (objfile, ps)
1871   {
1872     if (!ps->readin && lookup_partial_symbol (ps, name, NULL, 0, STRUCT_DOMAIN))
1873       {
1874         s = PSYMTAB_TO_SYMTAB (ps);
1875         bv = BLOCKVECTOR (s);
1876         block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1877         sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
1878         if (!sym)
1879           {
1880             /* This shouldn't be necessary, but as a last resort
1881              * try looking in the globals even though the psymtab
1882              * claimed the symbol was static. It's possible that
1883              * the psymtab gets it wrong in some cases.
1884              */
1885             block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1886             sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
1887             if (!sym)
1888               error (_("Internal: static symbol `%s' found in %s psymtab but not in symtab.\n\
1889 %s may be an inlined function, or may be a template function\n\
1890 (if a template, try specifying an instantiation: %s<type>)."),
1891                      name, ps->filename, name, name);
1892           }
1893         if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
1894           return SYMBOL_TYPE (sym);
1895       }
1896   }
1897   return (struct type *) 0;
1898 }
1899
1900
1901 /* Find the psymtab containing main(). */
1902 /* FIXME:  What about languages without main() or specially linked
1903    executables that have no main() ? */
1904
1905 struct partial_symtab *
1906 find_main_psymtab (void)
1907 {
1908   struct partial_symtab *pst;
1909   struct objfile *objfile;
1910
1911   ALL_PSYMTABS (objfile, pst)
1912   {
1913     if (lookup_partial_symbol (pst, main_name (), NULL, 1, VAR_DOMAIN))
1914       {
1915         return (pst);
1916       }
1917   }
1918   return (NULL);
1919 }
1920
1921 /* Search BLOCK for symbol NAME in DOMAIN.
1922
1923    Note that if NAME is the demangled form of a C++ symbol, we will fail
1924    to find a match during the binary search of the non-encoded names, but
1925    for now we don't worry about the slight inefficiency of looking for
1926    a match we'll never find, since it will go pretty quick.  Once the
1927    binary search terminates, we drop through and do a straight linear
1928    search on the symbols.  Each symbol which is marked as being a ObjC/C++
1929    symbol (language_cplus or language_objc set) has both the encoded and
1930    non-encoded names tested for a match.
1931
1932    If LINKAGE_NAME is non-NULL, verify that any symbol we find has this
1933    particular mangled name.
1934 */
1935
1936 struct symbol *
1937 lookup_block_symbol (const struct block *block, const char *name,
1938                      const char *linkage_name,
1939                      const domain_enum domain)
1940 {
1941   struct dict_iterator iter;
1942   struct symbol *sym;
1943
1944   if (!BLOCK_FUNCTION (block))
1945     {
1946       for (sym = dict_iter_name_first (BLOCK_DICT (block), name, &iter);
1947            sym != NULL;
1948            sym = dict_iter_name_next (name, &iter))
1949         {
1950           if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
1951                                      SYMBOL_DOMAIN (sym), domain)
1952               && (linkage_name != NULL
1953                   ? strcmp (SYMBOL_LINKAGE_NAME (sym), linkage_name) == 0 : 1))
1954             return sym;
1955         }
1956       return NULL;
1957     }
1958   else
1959     {
1960       /* Note that parameter symbols do not always show up last in the
1961          list; this loop makes sure to take anything else other than
1962          parameter symbols first; it only uses parameter symbols as a
1963          last resort.  Note that this only takes up extra computation
1964          time on a match.  */
1965
1966       struct symbol *sym_found = NULL;
1967
1968       for (sym = dict_iter_name_first (BLOCK_DICT (block), name, &iter);
1969            sym != NULL;
1970            sym = dict_iter_name_next (name, &iter))
1971         {
1972           if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
1973                                      SYMBOL_DOMAIN (sym), domain)
1974               && (linkage_name != NULL
1975                   ? strcmp (SYMBOL_LINKAGE_NAME (sym), linkage_name) == 0 : 1))
1976             {
1977               sym_found = sym;
1978               if (!SYMBOL_IS_ARGUMENT (sym))
1979                 {
1980                   break;
1981                 }
1982             }
1983         }
1984       return (sym_found);       /* Will be NULL if not found. */
1985     }
1986 }
1987
1988 /* Find the symtab associated with PC and SECTION.  Look through the
1989    psymtabs and read in another symtab if necessary. */
1990
1991 struct symtab *
1992 find_pc_sect_symtab (CORE_ADDR pc, struct obj_section *section)
1993 {
1994   struct block *b;
1995   struct blockvector *bv;
1996   struct symtab *s = NULL;
1997   struct symtab *best_s = NULL;
1998   struct partial_symtab *ps;
1999   struct objfile *objfile;
2000   CORE_ADDR distance = 0;
2001   struct minimal_symbol *msymbol;
2002
2003   /* If we know that this is not a text address, return failure.  This is
2004      necessary because we loop based on the block's high and low code
2005      addresses, which do not include the data ranges, and because
2006      we call find_pc_sect_psymtab which has a similar restriction based
2007      on the partial_symtab's texthigh and textlow.  */
2008   msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
2009   if (msymbol
2010       && (MSYMBOL_TYPE (msymbol) == mst_data
2011           || MSYMBOL_TYPE (msymbol) == mst_bss
2012           || MSYMBOL_TYPE (msymbol) == mst_abs
2013           || MSYMBOL_TYPE (msymbol) == mst_file_data
2014           || MSYMBOL_TYPE (msymbol) == mst_file_bss))
2015     return NULL;
2016
2017   /* Search all symtabs for the one whose file contains our address, and which
2018      is the smallest of all the ones containing the address.  This is designed
2019      to deal with a case like symtab a is at 0x1000-0x2000 and 0x3000-0x4000
2020      and symtab b is at 0x2000-0x3000.  So the GLOBAL_BLOCK for a is from
2021      0x1000-0x4000, but for address 0x2345 we want to return symtab b.
2022
2023      This happens for native ecoff format, where code from included files
2024      gets its own symtab. The symtab for the included file should have
2025      been read in already via the dependency mechanism.
2026      It might be swifter to create several symtabs with the same name
2027      like xcoff does (I'm not sure).
2028
2029      It also happens for objfiles that have their functions reordered.
2030      For these, the symtab we are looking for is not necessarily read in.  */
2031
2032   ALL_PRIMARY_SYMTABS (objfile, s)
2033   {
2034     bv = BLOCKVECTOR (s);
2035     b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
2036
2037     if (BLOCK_START (b) <= pc
2038         && BLOCK_END (b) > pc
2039         && (distance == 0
2040             || BLOCK_END (b) - BLOCK_START (b) < distance))
2041       {
2042         /* For an objfile that has its functions reordered,
2043            find_pc_psymtab will find the proper partial symbol table
2044            and we simply return its corresponding symtab.  */
2045         /* In order to better support objfiles that contain both
2046            stabs and coff debugging info, we continue on if a psymtab
2047            can't be found. */
2048         if ((objfile->flags & OBJF_REORDERED) && objfile->psymtabs)
2049           {
2050             ps = find_pc_sect_psymtab (pc, section);
2051             if (ps)
2052               return PSYMTAB_TO_SYMTAB (ps);
2053           }
2054         if (section != 0)
2055           {
2056             struct dict_iterator iter;
2057             struct symbol *sym = NULL;
2058
2059             ALL_BLOCK_SYMBOLS (b, iter, sym)
2060               {
2061                 fixup_symbol_section (sym, objfile);
2062                 if (matching_obj_sections (SYMBOL_OBJ_SECTION (sym), section))
2063                   break;
2064               }
2065             if (sym == NULL)
2066               continue;         /* no symbol in this symtab matches section */
2067           }
2068         distance = BLOCK_END (b) - BLOCK_START (b);
2069         best_s = s;
2070       }
2071   }
2072
2073   if (best_s != NULL)
2074     return (best_s);
2075
2076   s = NULL;
2077   ps = find_pc_sect_psymtab (pc, section);
2078   if (ps)
2079     {
2080       if (ps->readin)
2081         /* Might want to error() here (in case symtab is corrupt and
2082            will cause a core dump), but maybe we can successfully
2083            continue, so let's not.  */
2084         warning (_("\
2085 (Internal error: pc 0x%s in read in psymtab, but not in symtab.)\n"),
2086                  paddr_nz (pc));
2087       s = PSYMTAB_TO_SYMTAB (ps);
2088     }
2089   return (s);
2090 }
2091
2092 /* Find the symtab associated with PC.  Look through the psymtabs and
2093    read in another symtab if necessary.  Backward compatibility, no section */
2094
2095 struct symtab *
2096 find_pc_symtab (CORE_ADDR pc)
2097 {
2098   return find_pc_sect_symtab (pc, find_pc_mapped_section (pc));
2099 }
2100 \f
2101
2102 /* Find the source file and line number for a given PC value and SECTION.
2103    Return a structure containing a symtab pointer, a line number,
2104    and a pc range for the entire source line.
2105    The value's .pc field is NOT the specified pc.
2106    NOTCURRENT nonzero means, if specified pc is on a line boundary,
2107    use the line that ends there.  Otherwise, in that case, the line
2108    that begins there is used.  */
2109
2110 /* The big complication here is that a line may start in one file, and end just
2111    before the start of another file.  This usually occurs when you #include
2112    code in the middle of a subroutine.  To properly find the end of a line's PC
2113    range, we must search all symtabs associated with this compilation unit, and
2114    find the one whose first PC is closer than that of the next line in this
2115    symtab.  */
2116
2117 /* If it's worth the effort, we could be using a binary search.  */
2118
2119 struct symtab_and_line
2120 find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
2121 {
2122   struct symtab *s;
2123   struct linetable *l;
2124   int len;
2125   int i;
2126   struct linetable_entry *item;
2127   struct symtab_and_line val;
2128   struct blockvector *bv;
2129   struct minimal_symbol *msymbol;
2130   struct minimal_symbol *mfunsym;
2131
2132   /* Info on best line seen so far, and where it starts, and its file.  */
2133
2134   struct linetable_entry *best = NULL;
2135   CORE_ADDR best_end = 0;
2136   struct symtab *best_symtab = 0;
2137
2138   /* Store here the first line number
2139      of a file which contains the line at the smallest pc after PC.
2140      If we don't find a line whose range contains PC,
2141      we will use a line one less than this,
2142      with a range from the start of that file to the first line's pc.  */
2143   struct linetable_entry *alt = NULL;
2144   struct symtab *alt_symtab = 0;
2145
2146   /* Info on best line seen in this file.  */
2147
2148   struct linetable_entry *prev;
2149
2150   /* If this pc is not from the current frame,
2151      it is the address of the end of a call instruction.
2152      Quite likely that is the start of the following statement.
2153      But what we want is the statement containing the instruction.
2154      Fudge the pc to make sure we get that.  */
2155
2156   init_sal (&val);              /* initialize to zeroes */
2157
2158   /* It's tempting to assume that, if we can't find debugging info for
2159      any function enclosing PC, that we shouldn't search for line
2160      number info, either.  However, GAS can emit line number info for
2161      assembly files --- very helpful when debugging hand-written
2162      assembly code.  In such a case, we'd have no debug info for the
2163      function, but we would have line info.  */
2164
2165   if (notcurrent)
2166     pc -= 1;
2167
2168   /* elz: added this because this function returned the wrong
2169      information if the pc belongs to a stub (import/export)
2170      to call a shlib function. This stub would be anywhere between
2171      two functions in the target, and the line info was erroneously
2172      taken to be the one of the line before the pc.
2173    */
2174   /* RT: Further explanation:
2175
2176    * We have stubs (trampolines) inserted between procedures.
2177    *
2178    * Example: "shr1" exists in a shared library, and a "shr1" stub also
2179    * exists in the main image.
2180    *
2181    * In the minimal symbol table, we have a bunch of symbols
2182    * sorted by start address. The stubs are marked as "trampoline",
2183    * the others appear as text. E.g.:
2184    *
2185    *  Minimal symbol table for main image
2186    *     main:  code for main (text symbol)
2187    *     shr1: stub  (trampoline symbol)
2188    *     foo:   code for foo (text symbol)
2189    *     ...
2190    *  Minimal symbol table for "shr1" image:
2191    *     ...
2192    *     shr1: code for shr1 (text symbol)
2193    *     ...
2194    *
2195    * So the code below is trying to detect if we are in the stub
2196    * ("shr1" stub), and if so, find the real code ("shr1" trampoline),
2197    * and if found,  do the symbolization from the real-code address
2198    * rather than the stub address.
2199    *
2200    * Assumptions being made about the minimal symbol table:
2201    *   1. lookup_minimal_symbol_by_pc() will return a trampoline only
2202    *      if we're really in the trampoline. If we're beyond it (say
2203    *      we're in "foo" in the above example), it'll have a closer
2204    *      symbol (the "foo" text symbol for example) and will not
2205    *      return the trampoline.
2206    *   2. lookup_minimal_symbol_text() will find a real text symbol
2207    *      corresponding to the trampoline, and whose address will
2208    *      be different than the trampoline address. I put in a sanity
2209    *      check for the address being the same, to avoid an
2210    *      infinite recursion.
2211    */
2212   msymbol = lookup_minimal_symbol_by_pc (pc);
2213   if (msymbol != NULL)
2214     if (MSYMBOL_TYPE (msymbol) == mst_solib_trampoline)
2215       {
2216         mfunsym = lookup_minimal_symbol_text (SYMBOL_LINKAGE_NAME (msymbol),
2217                                               NULL);
2218         if (mfunsym == NULL)
2219           /* I eliminated this warning since it is coming out
2220            * in the following situation:
2221            * gdb shmain // test program with shared libraries
2222            * (gdb) break shr1  // function in shared lib
2223            * Warning: In stub for ...
2224            * In the above situation, the shared lib is not loaded yet,
2225            * so of course we can't find the real func/line info,
2226            * but the "break" still works, and the warning is annoying.
2227            * So I commented out the warning. RT */
2228           /* warning ("In stub for %s; unable to find real function/line info", SYMBOL_LINKAGE_NAME (msymbol)) */ ;
2229         /* fall through */
2230         else if (SYMBOL_VALUE_ADDRESS (mfunsym) == SYMBOL_VALUE_ADDRESS (msymbol))
2231           /* Avoid infinite recursion */
2232           /* See above comment about why warning is commented out */
2233           /* warning ("In stub for %s; unable to find real function/line info", SYMBOL_LINKAGE_NAME (msymbol)) */ ;
2234         /* fall through */
2235         else
2236           return find_pc_line (SYMBOL_VALUE_ADDRESS (mfunsym), 0);
2237       }
2238
2239
2240   s = find_pc_sect_symtab (pc, section);
2241   if (!s)
2242     {
2243       /* if no symbol information, return previous pc */
2244       if (notcurrent)
2245         pc++;
2246       val.pc = pc;
2247       return val;
2248     }
2249
2250   bv = BLOCKVECTOR (s);
2251
2252   /* Look at all the symtabs that share this blockvector.
2253      They all have the same apriori range, that we found was right;
2254      but they have different line tables.  */
2255
2256   for (; s && BLOCKVECTOR (s) == bv; s = s->next)
2257     {
2258       /* Find the best line in this symtab.  */
2259       l = LINETABLE (s);
2260       if (!l)
2261         continue;
2262       len = l->nitems;
2263       if (len <= 0)
2264         {
2265           /* I think len can be zero if the symtab lacks line numbers
2266              (e.g. gcc -g1).  (Either that or the LINETABLE is NULL;
2267              I'm not sure which, and maybe it depends on the symbol
2268              reader).  */
2269           continue;
2270         }
2271
2272       prev = NULL;
2273       item = l->item;           /* Get first line info */
2274
2275       /* Is this file's first line closer than the first lines of other files?
2276          If so, record this file, and its first line, as best alternate.  */
2277       if (item->pc > pc && (!alt || item->pc < alt->pc))
2278         {
2279           alt = item;
2280           alt_symtab = s;
2281         }
2282
2283       for (i = 0; i < len; i++, item++)
2284         {
2285           /* Leave prev pointing to the linetable entry for the last line
2286              that started at or before PC.  */
2287           if (item->pc > pc)
2288             break;
2289
2290           prev = item;
2291         }
2292
2293       /* At this point, prev points at the line whose start addr is <= pc, and
2294          item points at the next line.  If we ran off the end of the linetable
2295          (pc >= start of the last line), then prev == item.  If pc < start of
2296          the first line, prev will not be set.  */
2297
2298       /* Is this file's best line closer than the best in the other files?
2299          If so, record this file, and its best line, as best so far.  Don't
2300          save prev if it represents the end of a function (i.e. line number
2301          0) instead of a real line.  */
2302
2303       if (prev && prev->line && (!best || prev->pc > best->pc))
2304         {
2305           best = prev;
2306           best_symtab = s;
2307
2308           /* Discard BEST_END if it's before the PC of the current BEST.  */
2309           if (best_end <= best->pc)
2310             best_end = 0;
2311         }
2312
2313       /* If another line (denoted by ITEM) is in the linetable and its
2314          PC is after BEST's PC, but before the current BEST_END, then
2315          use ITEM's PC as the new best_end.  */
2316       if (best && i < len && item->pc > best->pc
2317           && (best_end == 0 || best_end > item->pc))
2318         best_end = item->pc;
2319     }
2320
2321   if (!best_symtab)
2322     {
2323       /* If we didn't find any line number info, just return zeros.
2324          We used to return alt->line - 1 here, but that could be
2325          anywhere; if we don't have line number info for this PC,
2326          don't make some up.  */
2327       val.pc = pc;
2328     }
2329   else if (best->line == 0)
2330     {
2331       /* If our best fit is in a range of PC's for which no line
2332          number info is available (line number is zero) then we didn't
2333          find any valid line information. */
2334       val.pc = pc;
2335     }
2336   else
2337     {
2338       val.symtab = best_symtab;
2339       val.line = best->line;
2340       val.pc = best->pc;
2341       if (best_end && (!alt || best_end < alt->pc))
2342         val.end = best_end;
2343       else if (alt)
2344         val.end = alt->pc;
2345       else
2346         val.end = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
2347     }
2348   val.section = section;
2349   return val;
2350 }
2351
2352 /* Backward compatibility (no section) */
2353
2354 struct symtab_and_line
2355 find_pc_line (CORE_ADDR pc, int notcurrent)
2356 {
2357   struct obj_section *section;
2358
2359   section = find_pc_overlay (pc);
2360   if (pc_in_unmapped_range (pc, section))
2361     pc = overlay_mapped_address (pc, section);
2362   return find_pc_sect_line (pc, section, notcurrent);
2363 }
2364 \f
2365 /* Find line number LINE in any symtab whose name is the same as
2366    SYMTAB.
2367
2368    If found, return the symtab that contains the linetable in which it was
2369    found, set *INDEX to the index in the linetable of the best entry
2370    found, and set *EXACT_MATCH nonzero if the value returned is an
2371    exact match.
2372
2373    If not found, return NULL.  */
2374
2375 struct symtab *
2376 find_line_symtab (struct symtab *symtab, int line, int *index, int *exact_match)
2377 {
2378   int exact = 0;  /* Initialized here to avoid a compiler warning.  */
2379
2380   /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
2381      so far seen.  */
2382
2383   int best_index;
2384   struct linetable *best_linetable;
2385   struct symtab *best_symtab;
2386
2387   /* First try looking it up in the given symtab.  */
2388   best_linetable = LINETABLE (symtab);
2389   best_symtab = symtab;
2390   best_index = find_line_common (best_linetable, line, &exact);
2391   if (best_index < 0 || !exact)
2392     {
2393       /* Didn't find an exact match.  So we better keep looking for
2394          another symtab with the same name.  In the case of xcoff,
2395          multiple csects for one source file (produced by IBM's FORTRAN
2396          compiler) produce multiple symtabs (this is unavoidable
2397          assuming csects can be at arbitrary places in memory and that
2398          the GLOBAL_BLOCK of a symtab has a begin and end address).  */
2399
2400       /* BEST is the smallest linenumber > LINE so far seen,
2401          or 0 if none has been seen so far.
2402          BEST_INDEX and BEST_LINETABLE identify the item for it.  */
2403       int best;
2404
2405       struct objfile *objfile;
2406       struct symtab *s;
2407       struct partial_symtab *p;
2408
2409       if (best_index >= 0)
2410         best = best_linetable->item[best_index].line;
2411       else
2412         best = 0;
2413
2414       ALL_PSYMTABS (objfile, p)
2415       {
2416         if (strcmp (symtab->filename, p->filename) != 0)
2417           continue;
2418         PSYMTAB_TO_SYMTAB (p);
2419       }
2420
2421       ALL_SYMTABS (objfile, s)
2422       {
2423         struct linetable *l;
2424         int ind;
2425
2426         if (strcmp (symtab->filename, s->filename) != 0)
2427           continue;
2428         l = LINETABLE (s);
2429         ind = find_line_common (l, line, &exact);
2430         if (ind >= 0)
2431           {
2432             if (exact)
2433               {
2434                 best_index = ind;
2435                 best_linetable = l;
2436                 best_symtab = s;
2437                 goto done;
2438               }
2439             if (best == 0 || l->item[ind].line < best)
2440               {
2441                 best = l->item[ind].line;
2442                 best_index = ind;
2443                 best_linetable = l;
2444                 best_symtab = s;
2445               }
2446           }
2447       }
2448     }
2449 done:
2450   if (best_index < 0)
2451     return NULL;
2452
2453   if (index)
2454     *index = best_index;
2455   if (exact_match)
2456     *exact_match = exact;
2457
2458   return best_symtab;
2459 }
2460 \f
2461 /* Set the PC value for a given source file and line number and return true.
2462    Returns zero for invalid line number (and sets the PC to 0).
2463    The source file is specified with a struct symtab.  */
2464
2465 int
2466 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
2467 {
2468   struct linetable *l;
2469   int ind;
2470
2471   *pc = 0;
2472   if (symtab == 0)
2473     return 0;
2474
2475   symtab = find_line_symtab (symtab, line, &ind, NULL);
2476   if (symtab != NULL)
2477     {
2478       l = LINETABLE (symtab);
2479       *pc = l->item[ind].pc;
2480       return 1;
2481     }
2482   else
2483     return 0;
2484 }
2485
2486 /* Find the range of pc values in a line.
2487    Store the starting pc of the line into *STARTPTR
2488    and the ending pc (start of next line) into *ENDPTR.
2489    Returns 1 to indicate success.
2490    Returns 0 if could not find the specified line.  */
2491
2492 int
2493 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
2494                     CORE_ADDR *endptr)
2495 {
2496   CORE_ADDR startaddr;
2497   struct symtab_and_line found_sal;
2498
2499   startaddr = sal.pc;
2500   if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
2501     return 0;
2502
2503   /* This whole function is based on address.  For example, if line 10 has
2504      two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
2505      "info line *0x123" should say the line goes from 0x100 to 0x200
2506      and "info line *0x355" should say the line goes from 0x300 to 0x400.
2507      This also insures that we never give a range like "starts at 0x134
2508      and ends at 0x12c".  */
2509
2510   found_sal = find_pc_sect_line (startaddr, sal.section, 0);
2511   if (found_sal.line != sal.line)
2512     {
2513       /* The specified line (sal) has zero bytes.  */
2514       *startptr = found_sal.pc;
2515       *endptr = found_sal.pc;
2516     }
2517   else
2518     {
2519       *startptr = found_sal.pc;
2520       *endptr = found_sal.end;
2521     }
2522   return 1;
2523 }
2524
2525 /* Given a line table and a line number, return the index into the line
2526    table for the pc of the nearest line whose number is >= the specified one.
2527    Return -1 if none is found.  The value is >= 0 if it is an index.
2528
2529    Set *EXACT_MATCH nonzero if the value returned is an exact match.  */
2530
2531 static int
2532 find_line_common (struct linetable *l, int lineno,
2533                   int *exact_match)
2534 {
2535   int i;
2536   int len;
2537
2538   /* BEST is the smallest linenumber > LINENO so far seen,
2539      or 0 if none has been seen so far.
2540      BEST_INDEX identifies the item for it.  */
2541
2542   int best_index = -1;
2543   int best = 0;
2544
2545   *exact_match = 0;
2546
2547   if (lineno <= 0)
2548     return -1;
2549   if (l == 0)
2550     return -1;
2551
2552   len = l->nitems;
2553   for (i = 0; i < len; i++)
2554     {
2555       struct linetable_entry *item = &(l->item[i]);
2556
2557       if (item->line == lineno)
2558         {
2559           /* Return the first (lowest address) entry which matches.  */
2560           *exact_match = 1;
2561           return i;
2562         }
2563
2564       if (item->line > lineno && (best == 0 || item->line < best))
2565         {
2566           best = item->line;
2567           best_index = i;
2568         }
2569     }
2570
2571   /* If we got here, we didn't get an exact match.  */
2572   return best_index;
2573 }
2574
2575 int
2576 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
2577 {
2578   struct symtab_and_line sal;
2579   sal = find_pc_line (pc, 0);
2580   *startptr = sal.pc;
2581   *endptr = sal.end;
2582   return sal.symtab != 0;
2583 }
2584
2585 /* Given a function start address PC and SECTION, find the first
2586    address after the function prologue.  */
2587 CORE_ADDR
2588 find_function_start_pc (struct gdbarch *gdbarch,
2589                         CORE_ADDR pc, struct obj_section *section)
2590 {
2591   /* If the function is in an unmapped overlay, use its unmapped LMA address,
2592      so that gdbarch_skip_prologue has something unique to work on.  */
2593   if (section_is_overlay (section) && !section_is_mapped (section))
2594     pc = overlay_unmapped_address (pc, section);
2595
2596   pc += gdbarch_deprecated_function_start_offset (gdbarch);
2597   pc = gdbarch_skip_prologue (gdbarch, pc);
2598
2599   /* For overlays, map pc back into its mapped VMA range.  */
2600   pc = overlay_mapped_address (pc, section);
2601
2602   return pc;
2603 }
2604
2605 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
2606    address for that function that has an entry in SYMTAB's line info
2607    table.  If such an entry cannot be found, return FUNC_ADDR
2608    unaltered.  */
2609 CORE_ADDR
2610 skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab)
2611 {
2612   CORE_ADDR func_start, func_end;
2613   struct linetable *l;
2614   int ind, i, len;
2615   int best_lineno = 0;
2616   CORE_ADDR best_pc = func_addr;
2617
2618   /* Give up if this symbol has no lineinfo table.  */
2619   l = LINETABLE (symtab);
2620   if (l == NULL)
2621     return func_addr;
2622
2623   /* Get the range for the function's PC values, or give up if we
2624      cannot, for some reason.  */
2625   if (!find_pc_partial_function (func_addr, NULL, &func_start, &func_end))
2626     return func_addr;
2627
2628   /* Linetable entries are ordered by PC values, see the commentary in
2629      symtab.h where `struct linetable' is defined.  Thus, the first
2630      entry whose PC is in the range [FUNC_START..FUNC_END[ is the
2631      address we are looking for.  */
2632   for (i = 0; i < l->nitems; i++)
2633     {
2634       struct linetable_entry *item = &(l->item[i]);
2635
2636       /* Don't use line numbers of zero, they mark special entries in
2637          the table.  See the commentary on symtab.h before the
2638          definition of struct linetable.  */
2639       if (item->line > 0 && func_start <= item->pc && item->pc < func_end)
2640         return item->pc;
2641     }
2642
2643   return func_addr;
2644 }
2645
2646 /* Given a function symbol SYM, find the symtab and line for the start
2647    of the function.
2648    If the argument FUNFIRSTLINE is nonzero, we want the first line
2649    of real code inside the function.  */
2650
2651 struct symtab_and_line
2652 find_function_start_sal (struct symbol *sym, int funfirstline)
2653 {
2654   struct block *block = SYMBOL_BLOCK_VALUE (sym);
2655   struct objfile *objfile = lookup_objfile_from_block (block);
2656   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2657
2658   CORE_ADDR pc;
2659   struct symtab_and_line sal;
2660   struct block *b, *function_block;
2661
2662   pc = BLOCK_START (block);
2663   fixup_symbol_section (sym, objfile);
2664   if (funfirstline)
2665     {
2666       /* Skip "first line" of function (which is actually its prologue).  */
2667       pc = find_function_start_pc (gdbarch, pc, SYMBOL_OBJ_SECTION (sym));
2668     }
2669   sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2670
2671   /* Check if gdbarch_skip_prologue left us in mid-line, and the next
2672      line is still part of the same function.  */
2673   if (sal.pc != pc
2674       && BLOCK_START (block) <= sal.end
2675       && sal.end < BLOCK_END (block))
2676     {
2677       /* First pc of next line */
2678       pc = sal.end;
2679       /* Recalculate the line number (might not be N+1).  */
2680       sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2681     }
2682
2683   /* On targets with executable formats that don't have a concept of
2684      constructors (ELF with .init has, PE doesn't), gcc emits a call
2685      to `__main' in `main' between the prologue and before user
2686      code.  */
2687   if (funfirstline
2688       && gdbarch_skip_main_prologue_p (gdbarch)
2689       && SYMBOL_LINKAGE_NAME (sym)
2690       && strcmp (SYMBOL_LINKAGE_NAME (sym), "main") == 0)
2691     {
2692       pc = gdbarch_skip_main_prologue (gdbarch, pc);
2693       /* Recalculate the line number (might not be N+1).  */
2694       sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2695     }
2696
2697   /* If we still don't have a valid source line, try to find the first
2698      PC in the lineinfo table that belongs to the same function.  This
2699      happens with COFF debug info, which does not seem to have an
2700      entry in lineinfo table for the code after the prologue which has
2701      no direct relation to source.  For example, this was found to be
2702      the case with the DJGPP target using "gcc -gcoff" when the
2703      compiler inserted code after the prologue to make sure the stack
2704      is aligned.  */
2705   if (funfirstline && sal.symtab == NULL)
2706     {
2707       pc = skip_prologue_using_lineinfo (pc, SYMBOL_SYMTAB (sym));
2708       /* Recalculate the line number.  */
2709       sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0);
2710     }
2711
2712   sal.pc = pc;
2713
2714   /* Check if we are now inside an inlined function.  If we can,
2715      use the call site of the function instead.  */
2716   b = block_for_pc_sect (sal.pc, SYMBOL_OBJ_SECTION (sym));
2717   function_block = NULL;
2718   while (b != NULL)
2719     {
2720       if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
2721         function_block = b;
2722       else if (BLOCK_FUNCTION (b) != NULL)
2723         break;
2724       b = BLOCK_SUPERBLOCK (b);
2725     }
2726   if (function_block != NULL
2727       && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
2728     {
2729       sal.line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
2730       sal.symtab = SYMBOL_SYMTAB (BLOCK_FUNCTION (function_block));
2731     }
2732
2733   return sal;
2734 }
2735
2736 /* If P is of the form "operator[ \t]+..." where `...' is
2737    some legitimate operator text, return a pointer to the
2738    beginning of the substring of the operator text.
2739    Otherwise, return "".  */
2740 char *
2741 operator_chars (char *p, char **end)
2742 {
2743   *end = "";
2744   if (strncmp (p, "operator", 8))
2745     return *end;
2746   p += 8;
2747
2748   /* Don't get faked out by `operator' being part of a longer
2749      identifier.  */
2750   if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
2751     return *end;
2752
2753   /* Allow some whitespace between `operator' and the operator symbol.  */
2754   while (*p == ' ' || *p == '\t')
2755     p++;
2756
2757   /* Recognize 'operator TYPENAME'. */
2758
2759   if (isalpha (*p) || *p == '_' || *p == '$')
2760     {
2761       char *q = p + 1;
2762       while (isalnum (*q) || *q == '_' || *q == '$')
2763         q++;
2764       *end = q;
2765       return p;
2766     }
2767
2768   while (*p)
2769     switch (*p)
2770       {
2771       case '\\':                        /* regexp quoting */
2772         if (p[1] == '*')
2773           {
2774             if (p[2] == '=')    /* 'operator\*=' */
2775               *end = p + 3;
2776             else                        /* 'operator\*'  */
2777               *end = p + 2;
2778             return p;
2779           }
2780         else if (p[1] == '[')
2781           {
2782             if (p[2] == ']')
2783               error (_("mismatched quoting on brackets, try 'operator\\[\\]'"));
2784             else if (p[2] == '\\' && p[3] == ']')
2785               {
2786                 *end = p + 4;   /* 'operator\[\]' */
2787                 return p;
2788               }
2789             else
2790               error (_("nothing is allowed between '[' and ']'"));
2791           }
2792         else
2793           {
2794             /* Gratuitous qoute: skip it and move on. */
2795             p++;
2796             continue;
2797           }
2798         break;
2799       case '!':
2800       case '=':
2801       case '*':
2802       case '/':
2803       case '%':
2804       case '^':
2805         if (p[1] == '=')
2806           *end = p + 2;
2807         else
2808           *end = p + 1;
2809         return p;
2810       case '<':
2811       case '>':
2812       case '+':
2813       case '-':
2814       case '&':
2815       case '|':
2816         if (p[0] == '-' && p[1] == '>')
2817           {
2818             /* Struct pointer member operator 'operator->'. */
2819             if (p[2] == '*')
2820               {
2821                 *end = p + 3;   /* 'operator->*' */
2822                 return p;
2823               }
2824             else if (p[2] == '\\')
2825               {
2826                 *end = p + 4;   /* Hopefully 'operator->\*' */
2827                 return p;
2828               }
2829             else
2830               {
2831                 *end = p + 2;   /* 'operator->' */
2832                 return p;
2833               }
2834           }
2835         if (p[1] == '=' || p[1] == p[0])
2836           *end = p + 2;
2837         else
2838           *end = p + 1;
2839         return p;
2840       case '~':
2841       case ',':
2842         *end = p + 1;
2843         return p;
2844       case '(':
2845         if (p[1] != ')')
2846           error (_("`operator ()' must be specified without whitespace in `()'"));
2847         *end = p + 2;
2848         return p;
2849       case '?':
2850         if (p[1] != ':')
2851           error (_("`operator ?:' must be specified without whitespace in `?:'"));
2852         *end = p + 2;
2853         return p;
2854       case '[':
2855         if (p[1] != ']')
2856           error (_("`operator []' must be specified without whitespace in `[]'"));
2857         *end = p + 2;
2858         return p;
2859       default:
2860         error (_("`operator %s' not supported"), p);
2861         break;
2862       }
2863
2864   *end = "";
2865   return *end;
2866 }
2867 \f
2868
2869 /* If FILE is not already in the table of files, return zero;
2870    otherwise return non-zero.  Optionally add FILE to the table if ADD
2871    is non-zero.  If *FIRST is non-zero, forget the old table
2872    contents.  */
2873 static int
2874 filename_seen (const char *file, int add, int *first)
2875 {
2876   /* Table of files seen so far.  */
2877   static const char **tab = NULL;
2878   /* Allocated size of tab in elements.
2879      Start with one 256-byte block (when using GNU malloc.c).
2880      24 is the malloc overhead when range checking is in effect.  */
2881   static int tab_alloc_size = (256 - 24) / sizeof (char *);
2882   /* Current size of tab in elements.  */
2883   static int tab_cur_size;
2884   const char **p;
2885
2886   if (*first)
2887     {
2888       if (tab == NULL)
2889         tab = (const char **) xmalloc (tab_alloc_size * sizeof (*tab));
2890       tab_cur_size = 0;
2891     }
2892
2893   /* Is FILE in tab?  */
2894   for (p = tab; p < tab + tab_cur_size; p++)
2895     if (strcmp (*p, file) == 0)
2896       return 1;
2897
2898   /* No; maybe add it to tab.  */
2899   if (add)
2900     {
2901       if (tab_cur_size == tab_alloc_size)
2902         {
2903           tab_alloc_size *= 2;
2904           tab = (const char **) xrealloc ((char *) tab,
2905                                           tab_alloc_size * sizeof (*tab));
2906         }
2907       tab[tab_cur_size++] = file;
2908     }
2909
2910   return 0;
2911 }
2912
2913 /* Slave routine for sources_info.  Force line breaks at ,'s.
2914    NAME is the name to print and *FIRST is nonzero if this is the first
2915    name printed.  Set *FIRST to zero.  */
2916 static void
2917 output_source_filename (const char *name, int *first)
2918 {
2919   /* Since a single source file can result in several partial symbol
2920      tables, we need to avoid printing it more than once.  Note: if
2921      some of the psymtabs are read in and some are not, it gets
2922      printed both under "Source files for which symbols have been
2923      read" and "Source files for which symbols will be read in on
2924      demand".  I consider this a reasonable way to deal with the
2925      situation.  I'm not sure whether this can also happen for
2926      symtabs; it doesn't hurt to check.  */
2927
2928   /* Was NAME already seen?  */
2929   if (filename_seen (name, 1, first))
2930     {
2931       /* Yes; don't print it again.  */
2932       return;
2933     }
2934   /* No; print it and reset *FIRST.  */
2935   if (*first)
2936     {
2937       *first = 0;
2938     }
2939   else
2940     {
2941       printf_filtered (", ");
2942     }
2943
2944   wrap_here ("");
2945   fputs_filtered (name, gdb_stdout);
2946 }
2947
2948 static void
2949 sources_info (char *ignore, int from_tty)
2950 {
2951   struct symtab *s;
2952   struct partial_symtab *ps;
2953   struct objfile *objfile;
2954   int first;
2955
2956   if (!have_full_symbols () && !have_partial_symbols ())
2957     {
2958       error (_("No symbol table is loaded.  Use the \"file\" command."));
2959     }
2960
2961   printf_filtered ("Source files for which symbols have been read in:\n\n");
2962
2963   first = 1;
2964   ALL_SYMTABS (objfile, s)
2965   {
2966     const char *fullname = symtab_to_fullname (s);
2967     output_source_filename (fullname ? fullname : s->filename, &first);
2968   }
2969   printf_filtered ("\n\n");
2970
2971   printf_filtered ("Source files for which symbols will be read in on demand:\n\n");
2972
2973   first = 1;
2974   ALL_PSYMTABS (objfile, ps)
2975   {
2976     if (!ps->readin)
2977       {
2978         const char *fullname = psymtab_to_fullname (ps);
2979         output_source_filename (fullname ? fullname : ps->filename, &first);
2980       }
2981   }
2982   printf_filtered ("\n");
2983 }
2984
2985 static int
2986 file_matches (char *file, char *files[], int nfiles)
2987 {
2988   int i;
2989
2990   if (file != NULL && nfiles != 0)
2991     {
2992       for (i = 0; i < nfiles; i++)
2993         {
2994           if (strcmp (files[i], lbasename (file)) == 0)
2995             return 1;
2996         }
2997     }
2998   else if (nfiles == 0)
2999     return 1;
3000   return 0;
3001 }
3002
3003 /* Free any memory associated with a search. */
3004 void
3005 free_search_symbols (struct symbol_search *symbols)
3006 {
3007   struct symbol_search *p;
3008   struct symbol_search *next;
3009
3010   for (p = symbols; p != NULL; p = next)
3011     {
3012       next = p->next;
3013       xfree (p);
3014     }
3015 }
3016
3017 static void
3018 do_free_search_symbols_cleanup (void *symbols)
3019 {
3020   free_search_symbols (symbols);
3021 }
3022
3023 struct cleanup *
3024 make_cleanup_free_search_symbols (struct symbol_search *symbols)
3025 {
3026   return make_cleanup (do_free_search_symbols_cleanup, symbols);
3027 }
3028
3029 /* Helper function for sort_search_symbols and qsort.  Can only
3030    sort symbols, not minimal symbols.  */
3031 static int
3032 compare_search_syms (const void *sa, const void *sb)
3033 {
3034   struct symbol_search **sym_a = (struct symbol_search **) sa;
3035   struct symbol_search **sym_b = (struct symbol_search **) sb;
3036
3037   return strcmp (SYMBOL_PRINT_NAME ((*sym_a)->symbol),
3038                  SYMBOL_PRINT_NAME ((*sym_b)->symbol));
3039 }
3040
3041 /* Sort the ``nfound'' symbols in the list after prevtail.  Leave
3042    prevtail where it is, but update its next pointer to point to
3043    the first of the sorted symbols.  */
3044 static struct symbol_search *
3045 sort_search_symbols (struct symbol_search *prevtail, int nfound)
3046 {
3047   struct symbol_search **symbols, *symp, *old_next;
3048   int i;
3049
3050   symbols = (struct symbol_search **) xmalloc (sizeof (struct symbol_search *)
3051                                                * nfound);
3052   symp = prevtail->next;
3053   for (i = 0; i < nfound; i++)
3054     {
3055       symbols[i] = symp;
3056       symp = symp->next;
3057     }
3058   /* Generally NULL.  */
3059   old_next = symp;
3060
3061   qsort (symbols, nfound, sizeof (struct symbol_search *),
3062          compare_search_syms);
3063
3064   symp = prevtail;
3065   for (i = 0; i < nfound; i++)
3066     {
3067       symp->next = symbols[i];
3068       symp = symp->next;
3069     }
3070   symp->next = old_next;
3071
3072   xfree (symbols);
3073   return symp;
3074 }
3075
3076 /* Search the symbol table for matches to the regular expression REGEXP,
3077    returning the results in *MATCHES.
3078
3079    Only symbols of KIND are searched:
3080    FUNCTIONS_DOMAIN - search all functions
3081    TYPES_DOMAIN     - search all type names
3082    VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
3083    and constants (enums)
3084
3085    free_search_symbols should be called when *MATCHES is no longer needed.
3086
3087    The results are sorted locally; each symtab's global and static blocks are
3088    separately alphabetized.
3089  */
3090 void
3091 search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
3092                 struct symbol_search **matches)
3093 {
3094   struct symtab *s;
3095   struct partial_symtab *ps;
3096   struct blockvector *bv;
3097   struct block *b;
3098   int i = 0;
3099   struct dict_iterator iter;
3100   struct symbol *sym;
3101   struct partial_symbol **psym;
3102   struct objfile *objfile;
3103   struct minimal_symbol *msymbol;
3104   char *val;
3105   int found_misc = 0;
3106   static enum minimal_symbol_type types[]
3107   =
3108   {mst_data, mst_text, mst_abs, mst_unknown};
3109   static enum minimal_symbol_type types2[]
3110   =
3111   {mst_bss, mst_file_text, mst_abs, mst_unknown};
3112   static enum minimal_symbol_type types3[]
3113   =
3114   {mst_file_data, mst_solib_trampoline, mst_abs, mst_unknown};
3115   static enum minimal_symbol_type types4[]
3116   =
3117   {mst_file_bss, mst_text, mst_abs, mst_unknown};
3118   enum minimal_symbol_type ourtype;
3119   enum minimal_symbol_type ourtype2;
3120   enum minimal_symbol_type ourtype3;
3121   enum minimal_symbol_type ourtype4;
3122   struct symbol_search *sr;
3123   struct symbol_search *psr;
3124   struct symbol_search *tail;
3125   struct cleanup *old_chain = NULL;
3126
3127   if (kind < VARIABLES_DOMAIN)
3128     error (_("must search on specific domain"));
3129
3130   ourtype = types[(int) (kind - VARIABLES_DOMAIN)];
3131   ourtype2 = types2[(int) (kind - VARIABLES_DOMAIN)];
3132   ourtype3 = types3[(int) (kind - VARIABLES_DOMAIN)];
3133   ourtype4 = types4[(int) (kind - VARIABLES_DOMAIN)];
3134
3135   sr = *matches = NULL;
3136   tail = NULL;
3137
3138   if (regexp != NULL)
3139     {
3140       /* Make sure spacing is right for C++ operators.
3141          This is just a courtesy to make the matching less sensitive
3142          to how many spaces the user leaves between 'operator'
3143          and <TYPENAME> or <OPERATOR>. */
3144       char *opend;
3145       char *opname = operator_chars (regexp, &opend);
3146       if (*opname)
3147         {
3148           int fix = -1;         /* -1 means ok; otherwise number of spaces needed. */
3149           if (isalpha (*opname) || *opname == '_' || *opname == '$')
3150             {
3151               /* There should 1 space between 'operator' and 'TYPENAME'. */
3152               if (opname[-1] != ' ' || opname[-2] == ' ')
3153                 fix = 1;
3154             }
3155           else
3156             {
3157               /* There should 0 spaces between 'operator' and 'OPERATOR'. */
3158               if (opname[-1] == ' ')
3159                 fix = 0;
3160             }
3161           /* If wrong number of spaces, fix it. */
3162           if (fix >= 0)
3163             {
3164               char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
3165               sprintf (tmp, "operator%.*s%s", fix, " ", opname);
3166               regexp = tmp;
3167             }
3168         }
3169
3170       if (0 != (val = re_comp (regexp)))
3171         error (_("Invalid regexp (%s): %s"), val, regexp);
3172     }
3173
3174   /* Search through the partial symtabs *first* for all symbols
3175      matching the regexp.  That way we don't have to reproduce all of
3176      the machinery below. */
3177
3178   ALL_PSYMTABS (objfile, ps)
3179   {
3180     struct partial_symbol **bound, **gbound, **sbound;
3181     int keep_going = 1;
3182
3183     if (ps->readin)
3184       continue;
3185
3186     gbound = objfile->global_psymbols.list + ps->globals_offset + ps->n_global_syms;
3187     sbound = objfile->static_psymbols.list + ps->statics_offset + ps->n_static_syms;
3188     bound = gbound;
3189
3190     /* Go through all of the symbols stored in a partial
3191        symtab in one loop. */
3192     psym = objfile->global_psymbols.list + ps->globals_offset;
3193     while (keep_going)
3194       {
3195         if (psym >= bound)
3196           {
3197             if (bound == gbound && ps->n_static_syms != 0)
3198               {
3199                 psym = objfile->static_psymbols.list + ps->statics_offset;
3200                 bound = sbound;
3201               }
3202             else
3203               keep_going = 0;
3204             continue;
3205           }
3206         else
3207           {
3208             QUIT;
3209
3210             /* If it would match (logic taken from loop below)
3211                load the file and go on to the next one.  We check the
3212                filename here, but that's a bit bogus: we don't know
3213                what file it really comes from until we have full
3214                symtabs.  The symbol might be in a header file included by
3215                this psymtab.  This only affects Insight.  */
3216             if (file_matches (ps->filename, files, nfiles)
3217                 && ((regexp == NULL
3218                      || re_exec (SYMBOL_NATURAL_NAME (*psym)) != 0)
3219                     && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (*psym) != LOC_TYPEDEF
3220                          && SYMBOL_CLASS (*psym) != LOC_BLOCK)
3221                         || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (*psym) == LOC_BLOCK)
3222                         || (kind == TYPES_DOMAIN && SYMBOL_CLASS (*psym) == LOC_TYPEDEF))))
3223               {
3224                 PSYMTAB_TO_SYMTAB (ps);
3225                 keep_going = 0;
3226               }
3227           }
3228         psym++;
3229       }
3230   }
3231
3232   /* Here, we search through the minimal symbol tables for functions
3233      and variables that match, and force their symbols to be read.
3234      This is in particular necessary for demangled variable names,
3235      which are no longer put into the partial symbol tables.
3236      The symbol will then be found during the scan of symtabs below.
3237
3238      For functions, find_pc_symtab should succeed if we have debug info
3239      for the function, for variables we have to call lookup_symbol
3240      to determine if the variable has debug info.
3241      If the lookup fails, set found_misc so that we will rescan to print
3242      any matching symbols without debug info.
3243    */
3244
3245   if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
3246     {
3247       ALL_MSYMBOLS (objfile, msymbol)
3248       {
3249         if (MSYMBOL_TYPE (msymbol) == ourtype ||
3250             MSYMBOL_TYPE (msymbol) == ourtype2 ||
3251             MSYMBOL_TYPE (msymbol) == ourtype3 ||
3252             MSYMBOL_TYPE (msymbol) == ourtype4)
3253           {
3254             if (regexp == NULL
3255                 || re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
3256               {
3257                 if (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)))
3258                   {
3259                     /* FIXME: carlton/2003-02-04: Given that the
3260                        semantics of lookup_symbol keeps on changing
3261                        slightly, it would be a nice idea if we had a
3262                        function lookup_symbol_minsym that found the
3263                        symbol associated to a given minimal symbol (if
3264                        any).  */
3265                     if (kind == FUNCTIONS_DOMAIN
3266                         || lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol),
3267                                           (struct block *) NULL,
3268                                           VAR_DOMAIN, 0)
3269                         == NULL)
3270                       found_misc = 1;
3271                   }
3272               }
3273           }
3274       }
3275     }
3276
3277   ALL_PRIMARY_SYMTABS (objfile, s)
3278   {
3279     bv = BLOCKVECTOR (s);
3280       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
3281         {
3282           struct symbol_search *prevtail = tail;
3283           int nfound = 0;
3284           b = BLOCKVECTOR_BLOCK (bv, i);
3285           ALL_BLOCK_SYMBOLS (b, iter, sym)
3286             {
3287               struct symtab *real_symtab = SYMBOL_SYMTAB (sym);
3288               QUIT;
3289
3290               if (file_matches (real_symtab->filename, files, nfiles)
3291                   && ((regexp == NULL
3292                        || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0)
3293                       && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (sym) != LOC_TYPEDEF
3294                            && SYMBOL_CLASS (sym) != LOC_BLOCK
3295                            && SYMBOL_CLASS (sym) != LOC_CONST)
3296                           || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (sym) == LOC_BLOCK)
3297                           || (kind == TYPES_DOMAIN && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
3298                 {
3299                   /* match */
3300                   psr = (struct symbol_search *) xmalloc (sizeof (struct symbol_search));
3301                   psr->block = i;
3302                   psr->symtab = real_symtab;
3303                   psr->symbol = sym;
3304                   psr->msymbol = NULL;
3305                   psr->next = NULL;
3306                   if (tail == NULL)
3307                     sr = psr;
3308                   else
3309                     tail->next = psr;
3310                   tail = psr;
3311                   nfound ++;
3312                 }
3313             }
3314           if (nfound > 0)
3315             {
3316               if (prevtail == NULL)
3317                 {
3318                   struct symbol_search dummy;
3319
3320                   dummy.next = sr;
3321                   tail = sort_search_symbols (&dummy, nfound);
3322                   sr = dummy.next;
3323
3324                   old_chain = make_cleanup_free_search_symbols (sr);
3325                 }
3326               else
3327                 tail = sort_search_symbols (prevtail, nfound);
3328             }
3329         }
3330   }
3331
3332   /* If there are no eyes, avoid all contact.  I mean, if there are
3333      no debug symbols, then print directly from the msymbol_vector.  */
3334
3335   if (found_misc || kind != FUNCTIONS_DOMAIN)
3336     {
3337       ALL_MSYMBOLS (objfile, msymbol)
3338       {
3339         if (MSYMBOL_TYPE (msymbol) == ourtype ||
3340             MSYMBOL_TYPE (msymbol) == ourtype2 ||
3341             MSYMBOL_TYPE (msymbol) == ourtype3 ||
3342             MSYMBOL_TYPE (msymbol) == ourtype4)
3343           {
3344             if (regexp == NULL
3345                 || re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
3346               {
3347                 /* Functions:  Look up by address. */
3348                 if (kind != FUNCTIONS_DOMAIN ||
3349                     (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol))))
3350                   {
3351                     /* Variables/Absolutes:  Look up by name */
3352                     if (lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol),
3353                                        (struct block *) NULL, VAR_DOMAIN, 0)
3354                          == NULL)
3355                       {
3356                         /* match */
3357                         psr = (struct symbol_search *) xmalloc (sizeof (struct symbol_search));
3358                         psr->block = i;
3359                         psr->msymbol = msymbol;
3360                         psr->symtab = NULL;
3361                         psr->symbol = NULL;
3362                         psr->next = NULL;
3363                         if (tail == NULL)
3364                           {
3365                             sr = psr;
3366                             old_chain = make_cleanup_free_search_symbols (sr);
3367                           }
3368                         else
3369                           tail->next = psr;
3370                         tail = psr;
3371                       }
3372                   }
3373               }
3374           }
3375       }
3376     }
3377
3378   *matches = sr;
3379   if (sr != NULL)
3380     discard_cleanups (old_chain);
3381 }
3382
3383 /* Helper function for symtab_symbol_info, this function uses
3384    the data returned from search_symbols() to print information
3385    regarding the match to gdb_stdout.
3386  */
3387 static void
3388 print_symbol_info (domain_enum kind, struct symtab *s, struct symbol *sym,
3389                    int block, char *last)
3390 {
3391   if (last == NULL || strcmp (last, s->filename) != 0)
3392     {
3393       fputs_filtered ("\nFile ", gdb_stdout);
3394       fputs_filtered (s->filename, gdb_stdout);
3395       fputs_filtered (":\n", gdb_stdout);
3396     }
3397
3398   if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
3399     printf_filtered ("static ");
3400
3401   /* Typedef that is not a C++ class */
3402   if (kind == TYPES_DOMAIN
3403       && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
3404     typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
3405   /* variable, func, or typedef-that-is-c++-class */
3406   else if (kind < TYPES_DOMAIN ||
3407            (kind == TYPES_DOMAIN &&
3408             SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
3409     {
3410       type_print (SYMBOL_TYPE (sym),
3411                   (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3412                    ? "" : SYMBOL_PRINT_NAME (sym)),
3413                   gdb_stdout, 0);
3414
3415       printf_filtered (";\n");
3416     }
3417 }
3418
3419 /* This help function for symtab_symbol_info() prints information
3420    for non-debugging symbols to gdb_stdout.
3421  */
3422 static void
3423 print_msymbol_info (struct minimal_symbol *msymbol)
3424 {
3425   struct gdbarch *gdbarch = get_objfile_arch (msymbol_objfile (msymbol));
3426   char *tmp;
3427
3428   if (gdbarch_addr_bit (gdbarch) <= 32)
3429     tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol)
3430                              & (CORE_ADDR) 0xffffffff,
3431                              8);
3432   else
3433     tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol),
3434                              16);
3435   printf_filtered ("%s  %s\n",
3436                    tmp, SYMBOL_PRINT_NAME (msymbol));
3437 }
3438
3439 /* This is the guts of the commands "info functions", "info types", and
3440    "info variables". It calls search_symbols to find all matches and then
3441    print_[m]symbol_info to print out some useful information about the
3442    matches.
3443  */
3444 static void
3445 symtab_symbol_info (char *regexp, domain_enum kind, int from_tty)
3446 {
3447   static char *classnames[]
3448   =
3449   {"variable", "function", "type", "method"};
3450   struct symbol_search *symbols;
3451   struct symbol_search *p;
3452   struct cleanup *old_chain;
3453   char *last_filename = NULL;
3454   int first = 1;
3455
3456   /* must make sure that if we're interrupted, symbols gets freed */
3457   search_symbols (regexp, kind, 0, (char **) NULL, &symbols);
3458   old_chain = make_cleanup_free_search_symbols (symbols);
3459
3460   printf_filtered (regexp
3461                    ? "All %ss matching regular expression \"%s\":\n"
3462                    : "All defined %ss:\n",
3463                    classnames[(int) (kind - VARIABLES_DOMAIN)], regexp);
3464
3465   for (p = symbols; p != NULL; p = p->next)
3466     {
3467       QUIT;
3468
3469       if (p->msymbol != NULL)
3470         {
3471           if (first)
3472             {
3473               printf_filtered ("\nNon-debugging symbols:\n");
3474               first = 0;
3475             }
3476           print_msymbol_info (p->msymbol);
3477         }
3478       else
3479         {
3480           print_symbol_info (kind,
3481                              p->symtab,
3482                              p->symbol,
3483                              p->block,
3484                              last_filename);
3485           last_filename = p->symtab->filename;
3486         }
3487     }
3488
3489   do_cleanups (old_chain);
3490 }
3491
3492 static void
3493 variables_info (char *regexp, int from_tty)
3494 {
3495   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
3496 }
3497
3498 static void
3499 functions_info (char *regexp, int from_tty)
3500 {
3501   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
3502 }
3503
3504
3505 static void
3506 types_info (char *regexp, int from_tty)
3507 {
3508   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
3509 }
3510
3511 /* Breakpoint all functions matching regular expression. */
3512
3513 void
3514 rbreak_command_wrapper (char *regexp, int from_tty)
3515 {
3516   rbreak_command (regexp, from_tty);
3517 }
3518
3519 static void
3520 rbreak_command (char *regexp, int from_tty)
3521 {
3522   struct symbol_search *ss;
3523   struct symbol_search *p;
3524   struct cleanup *old_chain;
3525
3526   search_symbols (regexp, FUNCTIONS_DOMAIN, 0, (char **) NULL, &ss);
3527   old_chain = make_cleanup_free_search_symbols (ss);
3528
3529   for (p = ss; p != NULL; p = p->next)
3530     {
3531       if (p->msymbol == NULL)
3532         {
3533           char *string = alloca (strlen (p->symtab->filename)
3534                                  + strlen (SYMBOL_LINKAGE_NAME (p->symbol))
3535                                  + 4);
3536           strcpy (string, p->symtab->filename);
3537           strcat (string, ":'");
3538           strcat (string, SYMBOL_LINKAGE_NAME (p->symbol));
3539           strcat (string, "'");
3540           break_command (string, from_tty);
3541           print_symbol_info (FUNCTIONS_DOMAIN,
3542                              p->symtab,
3543                              p->symbol,
3544                              p->block,
3545                              p->symtab->filename);
3546         }
3547       else
3548         {
3549           char *string = alloca (strlen (SYMBOL_LINKAGE_NAME (p->msymbol))
3550                                  + 3);
3551           strcpy (string, "'");
3552           strcat (string, SYMBOL_LINKAGE_NAME (p->msymbol));
3553           strcat (string, "'");
3554
3555           break_command (string, from_tty);
3556           printf_filtered ("<function, no debug info> %s;\n",
3557                            SYMBOL_PRINT_NAME (p->msymbol));
3558         }
3559     }
3560
3561   do_cleanups (old_chain);
3562 }
3563 \f
3564
3565 /* Helper routine for make_symbol_completion_list.  */
3566
3567 static int return_val_size;
3568 static int return_val_index;
3569 static char **return_val;
3570
3571 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
3572       completion_list_add_name \
3573         (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
3574
3575 /*  Test to see if the symbol specified by SYMNAME (which is already
3576    demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
3577    characters.  If so, add it to the current completion list. */
3578
3579 static void
3580 completion_list_add_name (char *symname, char *sym_text, int sym_text_len,
3581                           char *text, char *word)
3582 {
3583   int newsize;
3584   int i;
3585
3586   /* clip symbols that cannot match */
3587
3588   if (strncmp (symname, sym_text, sym_text_len) != 0)
3589     {
3590       return;
3591     }
3592
3593   /* We have a match for a completion, so add SYMNAME to the current list
3594      of matches. Note that the name is moved to freshly malloc'd space. */
3595
3596   {
3597     char *new;
3598     if (word == sym_text)
3599       {
3600         new = xmalloc (strlen (symname) + 5);
3601         strcpy (new, symname);
3602       }
3603     else if (word > sym_text)
3604       {
3605         /* Return some portion of symname.  */
3606         new = xmalloc (strlen (symname) + 5);
3607         strcpy (new, symname + (word - sym_text));
3608       }
3609     else
3610       {
3611         /* Return some of SYM_TEXT plus symname.  */
3612         new = xmalloc (strlen (symname) + (sym_text - word) + 5);
3613         strncpy (new, word, sym_text - word);
3614         new[sym_text - word] = '\0';
3615         strcat (new, symname);
3616       }
3617
3618     if (return_val_index + 3 > return_val_size)
3619       {
3620         newsize = (return_val_size *= 2) * sizeof (char *);
3621         return_val = (char **) xrealloc ((char *) return_val, newsize);
3622       }
3623     return_val[return_val_index++] = new;
3624     return_val[return_val_index] = NULL;
3625   }
3626 }
3627
3628 /* ObjC: In case we are completing on a selector, look as the msymbol
3629    again and feed all the selectors into the mill.  */
3630
3631 static void
3632 completion_list_objc_symbol (struct minimal_symbol *msymbol, char *sym_text,
3633                              int sym_text_len, char *text, char *word)
3634 {
3635   static char *tmp = NULL;
3636   static unsigned int tmplen = 0;
3637
3638   char *method, *category, *selector;
3639   char *tmp2 = NULL;
3640
3641   method = SYMBOL_NATURAL_NAME (msymbol);
3642
3643   /* Is it a method?  */
3644   if ((method[0] != '-') && (method[0] != '+'))
3645     return;
3646
3647   if (sym_text[0] == '[')
3648     /* Complete on shortened method method.  */
3649     completion_list_add_name (method + 1, sym_text, sym_text_len, text, word);
3650
3651   while ((strlen (method) + 1) >= tmplen)
3652     {
3653       if (tmplen == 0)
3654         tmplen = 1024;
3655       else
3656         tmplen *= 2;
3657       tmp = xrealloc (tmp, tmplen);
3658     }
3659   selector = strchr (method, ' ');
3660   if (selector != NULL)
3661     selector++;
3662
3663   category = strchr (method, '(');
3664
3665   if ((category != NULL) && (selector != NULL))
3666     {
3667       memcpy (tmp, method, (category - method));
3668       tmp[category - method] = ' ';
3669       memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
3670       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
3671       if (sym_text[0] == '[')
3672         completion_list_add_name (tmp + 1, sym_text, sym_text_len, text, word);
3673     }
3674
3675   if (selector != NULL)
3676     {
3677       /* Complete on selector only.  */
3678       strcpy (tmp, selector);
3679       tmp2 = strchr (tmp, ']');
3680       if (tmp2 != NULL)
3681         *tmp2 = '\0';
3682
3683       completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
3684     }
3685 }
3686
3687 /* Break the non-quoted text based on the characters which are in
3688    symbols. FIXME: This should probably be language-specific. */
3689
3690 static char *
3691 language_search_unquoted_string (char *text, char *p)
3692 {
3693   for (; p > text; --p)
3694     {
3695       if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
3696         continue;
3697       else
3698         {
3699           if ((current_language->la_language == language_objc))
3700             {
3701               if (p[-1] == ':')     /* might be part of a method name */
3702                 continue;
3703               else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
3704                 p -= 2;             /* beginning of a method name */
3705               else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
3706                 {                   /* might be part of a method name */
3707                   char *t = p;
3708
3709                   /* Seeing a ' ' or a '(' is not conclusive evidence
3710                      that we are in the middle of a method name.  However,
3711                      finding "-[" or "+[" should be pretty un-ambiguous.
3712                      Unfortunately we have to find it now to decide.  */
3713
3714                   while (t > text)
3715                     if (isalnum (t[-1]) || t[-1] == '_' ||
3716                         t[-1] == ' '    || t[-1] == ':' ||
3717                         t[-1] == '('    || t[-1] == ')')
3718                       --t;
3719                     else
3720                       break;
3721
3722                   if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
3723                     p = t - 2;      /* method name detected */
3724                   /* else we leave with p unchanged */
3725                 }
3726             }
3727           break;
3728         }
3729     }
3730   return p;
3731 }
3732
3733 static void
3734 completion_list_add_fields (struct symbol *sym, char *sym_text,
3735                             int sym_text_len, char *text, char *word)
3736 {
3737   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
3738     {
3739       struct type *t = SYMBOL_TYPE (sym);
3740       enum type_code c = TYPE_CODE (t);
3741       int j;
3742
3743       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
3744         for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
3745           if (TYPE_FIELD_NAME (t, j))
3746             completion_list_add_name (TYPE_FIELD_NAME (t, j),
3747                                       sym_text, sym_text_len, text, word);
3748     }
3749 }
3750
3751 /* Type of the user_data argument passed to add_macro_name.  The
3752    contents are simply whatever is needed by
3753    completion_list_add_name.  */
3754 struct add_macro_name_data
3755 {
3756   char *sym_text;
3757   int sym_text_len;
3758   char *text;
3759   char *word;
3760 };
3761
3762 /* A callback used with macro_for_each and macro_for_each_in_scope.
3763    This adds a macro's name to the current completion list.  */
3764 static void
3765 add_macro_name (const char *name, const struct macro_definition *ignore,
3766                 void *user_data)
3767 {
3768   struct add_macro_name_data *datum = (struct add_macro_name_data *) user_data;
3769   completion_list_add_name ((char *) name,
3770                             datum->sym_text, datum->sym_text_len,
3771                             datum->text, datum->word);
3772 }
3773
3774 char **
3775 default_make_symbol_completion_list (char *text, char *word)
3776 {
3777   /* Problem: All of the symbols have to be copied because readline
3778      frees them.  I'm not going to worry about this; hopefully there
3779      won't be that many.  */
3780
3781   struct symbol *sym;
3782   struct symtab *s;
3783   struct partial_symtab *ps;
3784   struct minimal_symbol *msymbol;
3785   struct objfile *objfile;
3786   struct block *b;
3787   const struct block *surrounding_static_block, *surrounding_global_block;
3788   struct dict_iterator iter;
3789   struct partial_symbol **psym;
3790   /* The symbol we are completing on.  Points in same buffer as text.  */
3791   char *sym_text;
3792   /* Length of sym_text.  */
3793   int sym_text_len;
3794
3795   /* Now look for the symbol we are supposed to complete on.  */
3796   {
3797     char *p;
3798     char quote_found;
3799     char *quote_pos = NULL;
3800
3801     /* First see if this is a quoted string.  */
3802     quote_found = '\0';
3803     for (p = text; *p != '\0'; ++p)
3804       {
3805         if (quote_found != '\0')
3806           {
3807             if (*p == quote_found)
3808               /* Found close quote.  */
3809               quote_found = '\0';
3810             else if (*p == '\\' && p[1] == quote_found)
3811               /* A backslash followed by the quote character
3812                  doesn't end the string.  */
3813               ++p;
3814           }
3815         else if (*p == '\'' || *p == '"')
3816           {
3817             quote_found = *p;
3818             quote_pos = p;
3819           }
3820       }
3821     if (quote_found == '\'')
3822       /* A string within single quotes can be a symbol, so complete on it.  */
3823       sym_text = quote_pos + 1;
3824     else if (quote_found == '"')
3825       /* A double-quoted string is never a symbol, nor does it make sense
3826          to complete it any other way.  */
3827       {
3828         return_val = (char **) xmalloc (sizeof (char *));
3829         return_val[0] = NULL;
3830         return return_val;
3831       }
3832     else
3833       {
3834         /* It is not a quoted string.  Break it based on the characters
3835            which are in symbols.  */
3836         while (p > text)
3837           {
3838             if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
3839               --p;
3840             else
3841               break;
3842           }
3843         sym_text = p;
3844       }
3845   }
3846
3847   sym_text_len = strlen (sym_text);
3848
3849   return_val_size = 100;
3850   return_val_index = 0;
3851   return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *));
3852   return_val[0] = NULL;
3853
3854   /* Look through the partial symtabs for all symbols which begin
3855      by matching SYM_TEXT.  Add each one that you find to the list.  */
3856
3857   ALL_PSYMTABS (objfile, ps)
3858   {
3859     /* If the psymtab's been read in we'll get it when we search
3860        through the blockvector.  */
3861     if (ps->readin)
3862       continue;
3863
3864     for (psym = objfile->global_psymbols.list + ps->globals_offset;
3865          psym < (objfile->global_psymbols.list + ps->globals_offset
3866                  + ps->n_global_syms);
3867          psym++)
3868       {
3869         /* If interrupted, then quit. */
3870         QUIT;
3871         COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word);
3872       }
3873
3874     for (psym = objfile->static_psymbols.list + ps->statics_offset;
3875          psym < (objfile->static_psymbols.list + ps->statics_offset
3876                  + ps->n_static_syms);
3877          psym++)
3878       {
3879         QUIT;
3880         COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word);
3881       }
3882   }
3883
3884   /* At this point scan through the misc symbol vectors and add each
3885      symbol you find to the list.  Eventually we want to ignore
3886      anything that isn't a text symbol (everything else will be
3887      handled by the psymtab code above).  */
3888
3889   ALL_MSYMBOLS (objfile, msymbol)
3890   {
3891     QUIT;
3892     COMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text, word);
3893
3894     completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text, word);
3895   }
3896
3897   /* Search upwards from currently selected frame (so that we can
3898      complete on local vars).  Also catch fields of types defined in
3899      this places which match our text string.  Only complete on types
3900      visible from current context. */
3901
3902   b = get_selected_block (0);
3903   surrounding_static_block = block_static_block (b);
3904   surrounding_global_block = block_global_block (b);
3905   if (surrounding_static_block != NULL)
3906     while (b != surrounding_static_block)
3907       {
3908         QUIT;
3909
3910         ALL_BLOCK_SYMBOLS (b, iter, sym)
3911           {
3912             COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
3913                                         word);
3914             completion_list_add_fields (sym, sym_text, sym_text_len, text,
3915                                         word);
3916           }
3917
3918         /* Stop when we encounter an enclosing function.  Do not stop for
3919            non-inlined functions - the locals of the enclosing function
3920            are in scope for a nested function.  */
3921         if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
3922           break;
3923         b = BLOCK_SUPERBLOCK (b);
3924       }
3925
3926   /* Add fields from the file's types; symbols will be added below.  */
3927
3928   if (surrounding_static_block != NULL)
3929     ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
3930       completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
3931
3932   if (surrounding_global_block != NULL)
3933       ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
3934         completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
3935
3936   /* Go through the symtabs and check the externs and statics for
3937      symbols which match.  */
3938
3939   ALL_PRIMARY_SYMTABS (objfile, s)
3940   {
3941     QUIT;
3942     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
3943     ALL_BLOCK_SYMBOLS (b, iter, sym)
3944       {
3945         COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3946       }
3947   }
3948
3949   ALL_PRIMARY_SYMTABS (objfile, s)
3950   {
3951     QUIT;
3952     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
3953     ALL_BLOCK_SYMBOLS (b, iter, sym)
3954       {
3955         COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3956       }
3957   }
3958
3959   if (current_language->la_macro_expansion == macro_expansion_c)
3960     {
3961       struct macro_scope *scope;
3962       struct add_macro_name_data datum;
3963
3964       datum.sym_text = sym_text;
3965       datum.sym_text_len = sym_text_len;
3966       datum.text = text;
3967       datum.word = word;
3968
3969       /* Add any macros visible in the default scope.  Note that this
3970          may yield the occasional wrong result, because an expression
3971          might be evaluated in a scope other than the default.  For
3972          example, if the user types "break file:line if <TAB>", the
3973          resulting expression will be evaluated at "file:line" -- but
3974          at there does not seem to be a way to detect this at
3975          completion time.  */
3976       scope = default_macro_scope ();
3977       if (scope)
3978         {
3979           macro_for_each_in_scope (scope->file, scope->line,
3980                                    add_macro_name, &datum);
3981           xfree (scope);
3982         }
3983
3984       /* User-defined macros are always visible.  */
3985       macro_for_each (macro_user_macros, add_macro_name, &datum);
3986     }
3987
3988   return (return_val);
3989 }
3990
3991 /* Return a NULL terminated array of all symbols (regardless of class)
3992    which begin by matching TEXT.  If the answer is no symbols, then
3993    the return value is an array which contains only a NULL pointer.  */
3994
3995 char **
3996 make_symbol_completion_list (char *text, char *word)
3997 {
3998   return current_language->la_make_symbol_completion_list (text, word);
3999 }
4000
4001 /* Like make_symbol_completion_list, but suitable for use as a
4002    completion function.  */
4003
4004 char **
4005 make_symbol_completion_list_fn (struct cmd_list_element *ignore,
4006                                 char *text, char *word)
4007 {
4008   return make_symbol_completion_list (text, word);
4009 }
4010
4011 /* Like make_symbol_completion_list, but returns a list of symbols
4012    defined in a source file FILE.  */
4013
4014 char **
4015 make_file_symbol_completion_list (char *text, char *word, char *srcfile)
4016 {
4017   struct symbol *sym;
4018   struct symtab *s;
4019   struct block *b;
4020   struct dict_iterator iter;
4021   /* The symbol we are completing on.  Points in same buffer as text.  */
4022   char *sym_text;
4023   /* Length of sym_text.  */
4024   int sym_text_len;
4025
4026   /* Now look for the symbol we are supposed to complete on.
4027      FIXME: This should be language-specific.  */
4028   {
4029     char *p;
4030     char quote_found;
4031     char *quote_pos = NULL;
4032
4033     /* First see if this is a quoted string.  */
4034     quote_found = '\0';
4035     for (p = text; *p != '\0'; ++p)
4036       {
4037         if (quote_found != '\0')
4038           {
4039             if (*p == quote_found)
4040               /* Found close quote.  */
4041               quote_found = '\0';
4042             else if (*p == '\\' && p[1] == quote_found)
4043               /* A backslash followed by the quote character
4044                  doesn't end the string.  */
4045               ++p;
4046           }
4047         else if (*p == '\'' || *p == '"')
4048           {
4049             quote_found = *p;
4050             quote_pos = p;
4051           }
4052       }
4053     if (quote_found == '\'')
4054       /* A string within single quotes can be a symbol, so complete on it.  */
4055       sym_text = quote_pos + 1;
4056     else if (quote_found == '"')
4057       /* A double-quoted string is never a symbol, nor does it make sense
4058          to complete it any other way.  */
4059       {
4060         return_val = (char **) xmalloc (sizeof (char *));
4061         return_val[0] = NULL;
4062         return return_val;
4063       }
4064     else
4065       {
4066         /* Not a quoted string.  */
4067         sym_text = language_search_unquoted_string (text, p);
4068       }
4069   }
4070
4071   sym_text_len = strlen (sym_text);
4072
4073   return_val_size = 10;
4074   return_val_index = 0;
4075   return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *));
4076   return_val[0] = NULL;
4077
4078   /* Find the symtab for SRCFILE (this loads it if it was not yet read
4079      in).  */
4080   s = lookup_symtab (srcfile);
4081   if (s == NULL)
4082     {
4083       /* Maybe they typed the file with leading directories, while the
4084          symbol tables record only its basename.  */
4085       const char *tail = lbasename (srcfile);
4086
4087       if (tail > srcfile)
4088         s = lookup_symtab (tail);
4089     }
4090
4091   /* If we have no symtab for that file, return an empty list.  */
4092   if (s == NULL)
4093     return (return_val);
4094
4095   /* Go through this symtab and check the externs and statics for
4096      symbols which match.  */
4097
4098   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
4099   ALL_BLOCK_SYMBOLS (b, iter, sym)
4100     {
4101       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4102     }
4103
4104   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
4105   ALL_BLOCK_SYMBOLS (b, iter, sym)
4106     {
4107       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
4108     }
4109
4110   return (return_val);
4111 }
4112
4113 /* A helper function for make_source_files_completion_list.  It adds
4114    another file name to a list of possible completions, growing the
4115    list as necessary.  */
4116
4117 static void
4118 add_filename_to_list (const char *fname, char *text, char *word,
4119                       char ***list, int *list_used, int *list_alloced)
4120 {
4121   char *new;
4122   size_t fnlen = strlen (fname);
4123
4124   if (*list_used + 1 >= *list_alloced)
4125     {
4126       *list_alloced *= 2;
4127       *list = (char **) xrealloc ((char *) *list,
4128                                   *list_alloced * sizeof (char *));
4129     }
4130
4131   if (word == text)
4132     {
4133       /* Return exactly fname.  */
4134       new = xmalloc (fnlen + 5);
4135       strcpy (new, fname);
4136     }
4137   else if (word > text)
4138     {
4139       /* Return some portion of fname.  */
4140       new = xmalloc (fnlen + 5);
4141       strcpy (new, fname + (word - text));
4142     }
4143   else
4144     {
4145       /* Return some of TEXT plus fname.  */
4146       new = xmalloc (fnlen + (text - word) + 5);
4147       strncpy (new, word, text - word);
4148       new[text - word] = '\0';
4149       strcat (new, fname);
4150     }
4151   (*list)[*list_used] = new;
4152   (*list)[++*list_used] = NULL;
4153 }
4154
4155 static int
4156 not_interesting_fname (const char *fname)
4157 {
4158   static const char *illegal_aliens[] = {
4159     "_globals_",        /* inserted by coff_symtab_read */
4160     NULL
4161   };
4162   int i;
4163
4164   for (i = 0; illegal_aliens[i]; i++)
4165     {
4166       if (strcmp (fname, illegal_aliens[i]) == 0)
4167         return 1;
4168     }
4169   return 0;
4170 }
4171
4172 /* Return a NULL terminated array of all source files whose names
4173    begin with matching TEXT.  The file names are looked up in the
4174    symbol tables of this program.  If the answer is no matchess, then
4175    the return value is an array which contains only a NULL pointer.  */
4176
4177 char **
4178 make_source_files_completion_list (char *text, char *word)
4179 {
4180   struct symtab *s;
4181   struct partial_symtab *ps;
4182   struct objfile *objfile;
4183   int first = 1;
4184   int list_alloced = 1;
4185   int list_used = 0;
4186   size_t text_len = strlen (text);
4187   char **list = (char **) xmalloc (list_alloced * sizeof (char *));
4188   const char *base_name;
4189
4190   list[0] = NULL;
4191
4192   if (!have_full_symbols () && !have_partial_symbols ())
4193     return list;
4194
4195   ALL_SYMTABS (objfile, s)
4196     {
4197       if (not_interesting_fname (s->filename))
4198         continue;
4199       if (!filename_seen (s->filename, 1, &first)
4200 #if HAVE_DOS_BASED_FILE_SYSTEM
4201           && strncasecmp (s->filename, text, text_len) == 0
4202 #else
4203           && strncmp (s->filename, text, text_len) == 0
4204 #endif
4205           )
4206         {
4207           /* This file matches for a completion; add it to the current
4208              list of matches.  */
4209           add_filename_to_list (s->filename, text, word,
4210                                 &list, &list_used, &list_alloced);
4211         }
4212       else
4213         {
4214           /* NOTE: We allow the user to type a base name when the
4215              debug info records leading directories, but not the other
4216              way around.  This is what subroutines of breakpoint
4217              command do when they parse file names.  */
4218           base_name = lbasename (s->filename);
4219           if (base_name != s->filename
4220               && !filename_seen (base_name, 1, &first)
4221 #if HAVE_DOS_BASED_FILE_SYSTEM
4222               && strncasecmp (base_name, text, text_len) == 0
4223 #else
4224               && strncmp (base_name, text, text_len) == 0
4225 #endif
4226               )
4227             add_filename_to_list (base_name, text, word,
4228                                   &list, &list_used, &list_alloced);
4229         }
4230     }
4231
4232   ALL_PSYMTABS (objfile, ps)
4233     {
4234       if (not_interesting_fname (ps->filename))
4235         continue;
4236       if (!ps->readin)
4237         {
4238           if (!filename_seen (ps->filename, 1, &first)
4239 #if HAVE_DOS_BASED_FILE_SYSTEM
4240               && strncasecmp (ps->filename, text, text_len) == 0
4241 #else
4242               && strncmp (ps->filename, text, text_len) == 0
4243 #endif
4244               )
4245             {
4246               /* This file matches for a completion; add it to the
4247                  current list of matches.  */
4248               add_filename_to_list (ps->filename, text, word,
4249                                     &list, &list_used, &list_alloced);
4250
4251             }
4252           else
4253             {
4254               base_name = lbasename (ps->filename);
4255               if (base_name != ps->filename
4256                   && !filename_seen (base_name, 1, &first)
4257 #if HAVE_DOS_BASED_FILE_SYSTEM
4258                   && strncasecmp (base_name, text, text_len) == 0
4259 #else
4260                   && strncmp (base_name, text, text_len) == 0
4261 #endif
4262                   )
4263                 add_filename_to_list (base_name, text, word,
4264                                       &list, &list_used, &list_alloced);
4265             }
4266         }
4267     }
4268
4269   return list;
4270 }
4271
4272 /* Determine if PC is in the prologue of a function.  The prologue is the area
4273    between the first instruction of a function, and the first executable line.
4274    Returns 1 if PC *might* be in prologue, 0 if definately *not* in prologue.
4275
4276    If non-zero, func_start is where we think the prologue starts, possibly
4277    by previous examination of symbol table information.
4278  */
4279
4280 int
4281 in_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR func_start)
4282 {
4283   struct symtab_and_line sal;
4284   CORE_ADDR func_addr, func_end;
4285
4286   /* We have several sources of information we can consult to figure
4287      this out.
4288      - Compilers usually emit line number info that marks the prologue
4289        as its own "source line".  So the ending address of that "line"
4290        is the end of the prologue.  If available, this is the most
4291        reliable method.
4292      - The minimal symbols and partial symbols, which can usually tell
4293        us the starting and ending addresses of a function.
4294      - If we know the function's start address, we can call the
4295        architecture-defined gdbarch_skip_prologue function to analyze the
4296        instruction stream and guess where the prologue ends.
4297      - Our `func_start' argument; if non-zero, this is the caller's
4298        best guess as to the function's entry point.  At the time of
4299        this writing, handle_inferior_event doesn't get this right, so
4300        it should be our last resort.  */
4301
4302   /* Consult the partial symbol table, to find which function
4303      the PC is in.  */
4304   if (! find_pc_partial_function (pc, NULL, &func_addr, &func_end))
4305     {
4306       CORE_ADDR prologue_end;
4307
4308       /* We don't even have minsym information, so fall back to using
4309          func_start, if given.  */
4310       if (! func_start)
4311         return 1;               /* We *might* be in a prologue.  */
4312
4313       prologue_end = gdbarch_skip_prologue (gdbarch, func_start);
4314
4315       return func_start <= pc && pc < prologue_end;
4316     }
4317
4318   /* If we have line number information for the function, that's
4319      usually pretty reliable.  */
4320   sal = find_pc_line (func_addr, 0);
4321
4322   /* Now sal describes the source line at the function's entry point,
4323      which (by convention) is the prologue.  The end of that "line",
4324      sal.end, is the end of the prologue.
4325
4326      Note that, for functions whose source code is all on a single
4327      line, the line number information doesn't always end up this way.
4328      So we must verify that our purported end-of-prologue address is
4329      *within* the function, not at its start or end.  */
4330   if (sal.line == 0
4331       || sal.end <= func_addr
4332       || func_end <= sal.end)
4333     {
4334       /* We don't have any good line number info, so use the minsym
4335          information, together with the architecture-specific prologue
4336          scanning code.  */
4337       CORE_ADDR prologue_end = gdbarch_skip_prologue (gdbarch, func_addr);
4338
4339       return func_addr <= pc && pc < prologue_end;
4340     }
4341
4342   /* We have line number info, and it looks good.  */
4343   return func_addr <= pc && pc < sal.end;
4344 }
4345
4346 /* Given PC at the function's start address, attempt to find the
4347    prologue end using SAL information.  Return zero if the skip fails.
4348
4349    A non-optimized prologue traditionally has one SAL for the function
4350    and a second for the function body.  A single line function has
4351    them both pointing at the same line.
4352
4353    An optimized prologue is similar but the prologue may contain
4354    instructions (SALs) from the instruction body.  Need to skip those
4355    while not getting into the function body.
4356
4357    The functions end point and an increasing SAL line are used as
4358    indicators of the prologue's endpoint.
4359
4360    This code is based on the function refine_prologue_limit (versions
4361    found in both ia64 and ppc).  */
4362
4363 CORE_ADDR
4364 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
4365 {
4366   struct symtab_and_line prologue_sal;
4367   CORE_ADDR start_pc;
4368   CORE_ADDR end_pc;
4369   struct block *bl;
4370
4371   /* Get an initial range for the function.  */
4372   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
4373   start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
4374
4375   prologue_sal = find_pc_line (start_pc, 0);
4376   if (prologue_sal.line != 0)
4377     {
4378       /* For langauges other than assembly, treat two consecutive line
4379          entries at the same address as a zero-instruction prologue.
4380          The GNU assembler emits separate line notes for each instruction
4381          in a multi-instruction macro, but compilers generally will not
4382          do this.  */
4383       if (prologue_sal.symtab->language != language_asm)
4384         {
4385           struct linetable *linetable = LINETABLE (prologue_sal.symtab);
4386           int exact;
4387           int idx = 0;
4388
4389           /* Skip any earlier lines, and any end-of-sequence marker
4390              from a previous function.  */
4391           while (linetable->item[idx].pc != prologue_sal.pc
4392                  || linetable->item[idx].line == 0)
4393             idx++;
4394
4395           if (idx+1 < linetable->nitems
4396               && linetable->item[idx+1].line != 0
4397               && linetable->item[idx+1].pc == start_pc)
4398             return start_pc;
4399         }
4400
4401       /* If there is only one sal that covers the entire function,
4402          then it is probably a single line function, like
4403          "foo(){}". */
4404       if (prologue_sal.end >= end_pc)
4405         return 0;
4406
4407       while (prologue_sal.end < end_pc)
4408         {
4409           struct symtab_and_line sal;
4410
4411           sal = find_pc_line (prologue_sal.end, 0);
4412           if (sal.line == 0)
4413             break;
4414           /* Assume that a consecutive SAL for the same (or larger)
4415              line mark the prologue -> body transition.  */
4416           if (sal.line >= prologue_sal.line)
4417             break;
4418
4419           /* The line number is smaller.  Check that it's from the
4420              same function, not something inlined.  If it's inlined,
4421              then there is no point comparing the line numbers.  */
4422           bl = block_for_pc (prologue_sal.end);
4423           while (bl)
4424             {
4425               if (block_inlined_p (bl))
4426                 break;
4427               if (BLOCK_FUNCTION (bl))
4428                 {
4429                   bl = NULL;
4430                   break;
4431                 }
4432               bl = BLOCK_SUPERBLOCK (bl);
4433             }
4434           if (bl != NULL)
4435             break;
4436
4437           /* The case in which compiler's optimizer/scheduler has
4438              moved instructions into the prologue.  We look ahead in
4439              the function looking for address ranges whose
4440              corresponding line number is less the first one that we
4441              found for the function.  This is more conservative then
4442              refine_prologue_limit which scans a large number of SALs
4443              looking for any in the prologue */
4444           prologue_sal = sal;
4445         }
4446     }
4447
4448   if (prologue_sal.end < end_pc)
4449     /* Return the end of this line, or zero if we could not find a
4450        line.  */
4451     return prologue_sal.end;
4452   else
4453     /* Don't return END_PC, which is past the end of the function.  */
4454     return prologue_sal.pc;
4455 }
4456 \f
4457 struct symtabs_and_lines
4458 decode_line_spec (char *string, int funfirstline)
4459 {
4460   struct symtabs_and_lines sals;
4461   struct symtab_and_line cursal;
4462
4463   if (string == 0)
4464     error (_("Empty line specification."));
4465
4466   /* We use whatever is set as the current source line. We do not try
4467      and get a default  or it will recursively call us! */
4468   cursal = get_current_source_symtab_and_line ();
4469
4470   sals = decode_line_1 (&string, funfirstline,
4471                         cursal.symtab, cursal.line,
4472                         (char ***) NULL, NULL);
4473
4474   if (*string)
4475     error (_("Junk at end of line specification: %s"), string);
4476   return sals;
4477 }
4478
4479 /* Track MAIN */
4480 static char *name_of_main;
4481
4482 void
4483 set_main_name (const char *name)
4484 {
4485   if (name_of_main != NULL)
4486     {
4487       xfree (name_of_main);
4488       name_of_main = NULL;
4489     }
4490   if (name != NULL)
4491     {
4492       name_of_main = xstrdup (name);
4493     }
4494 }
4495
4496 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
4497    accordingly.  */
4498
4499 static void
4500 find_main_name (void)
4501 {
4502   const char *new_main_name;
4503
4504   /* Try to see if the main procedure is in Ada.  */
4505   /* FIXME: brobecker/2005-03-07: Another way of doing this would
4506      be to add a new method in the language vector, and call this
4507      method for each language until one of them returns a non-empty
4508      name.  This would allow us to remove this hard-coded call to
4509      an Ada function.  It is not clear that this is a better approach
4510      at this point, because all methods need to be written in a way
4511      such that false positives never be returned. For instance, it is
4512      important that a method does not return a wrong name for the main
4513      procedure if the main procedure is actually written in a different
4514      language.  It is easy to guaranty this with Ada, since we use a
4515      special symbol generated only when the main in Ada to find the name
4516      of the main procedure. It is difficult however to see how this can
4517      be guarantied for languages such as C, for instance.  This suggests
4518      that order of call for these methods becomes important, which means
4519      a more complicated approach.  */
4520   new_main_name = ada_main_name ();
4521   if (new_main_name != NULL)
4522     {
4523       set_main_name (new_main_name);
4524       return;
4525     }
4526
4527   new_main_name = pascal_main_name ();
4528   if (new_main_name != NULL)
4529     {
4530       set_main_name (new_main_name);
4531       return;
4532     }
4533
4534   /* The languages above didn't identify the name of the main procedure.
4535      Fallback to "main".  */
4536   set_main_name ("main");
4537 }
4538
4539 char *
4540 main_name (void)
4541 {
4542   if (name_of_main == NULL)
4543     find_main_name ();
4544
4545   return name_of_main;
4546 }
4547
4548 /* Handle ``executable_changed'' events for the symtab module.  */
4549
4550 static void
4551 symtab_observer_executable_changed (void)
4552 {
4553   /* NAME_OF_MAIN may no longer be the same, so reset it for now.  */
4554   set_main_name (NULL);
4555 }
4556
4557 /* Helper to expand_line_sal below.  Appends new sal to SAL,
4558    initializing it from SYMTAB, LINENO and PC.  */
4559 static void
4560 append_expanded_sal (struct symtabs_and_lines *sal,
4561                      struct symtab *symtab,
4562                      int lineno, CORE_ADDR pc)
4563 {
4564   sal->sals = xrealloc (sal->sals,
4565                         sizeof (sal->sals[0])
4566                         * (sal->nelts + 1));
4567   init_sal (sal->sals + sal->nelts);
4568   sal->sals[sal->nelts].symtab = symtab;
4569   sal->sals[sal->nelts].section = NULL;
4570   sal->sals[sal->nelts].end = 0;
4571   sal->sals[sal->nelts].line = lineno;
4572   sal->sals[sal->nelts].pc = pc;
4573   ++sal->nelts;
4574 }
4575
4576 /* Helper to expand_line_sal below.  Search in the symtabs for any
4577    linetable entry that exactly matches FILENAME and LINENO and append
4578    them to RET. If there is at least one match, return 1; otherwise,
4579    return 0, and return the best choice in BEST_ITEM and BEST_SYMTAB.  */
4580
4581 static int
4582 append_exact_match_to_sals (char *filename, int lineno,
4583                             struct symtabs_and_lines *ret,
4584                             struct linetable_entry **best_item,
4585                             struct symtab **best_symtab)
4586 {
4587   struct objfile *objfile;
4588   struct symtab *symtab;
4589   int exact = 0;
4590   int j;
4591   *best_item = 0;
4592   *best_symtab = 0;
4593   
4594   ALL_SYMTABS (objfile, symtab)
4595     {
4596       if (strcmp (filename, symtab->filename) == 0)
4597         {
4598           struct linetable *l;
4599           int len;
4600           l = LINETABLE (symtab);
4601           if (!l)
4602             continue;
4603           len = l->nitems;
4604
4605           for (j = 0; j < len; j++)
4606             {
4607               struct linetable_entry *item = &(l->item[j]);
4608
4609               if (item->line == lineno)
4610                 {
4611                   exact = 1;
4612                   append_expanded_sal (ret, symtab, lineno, item->pc);
4613                 }
4614               else if (!exact && item->line > lineno
4615                        && (*best_item == NULL
4616                            || item->line < (*best_item)->line))
4617                 {
4618                   *best_item = item;
4619                   *best_symtab = symtab;
4620                 }
4621             }
4622         }
4623     }
4624   return exact;
4625 }
4626
4627 /* Compute a set of all sals in
4628    the entire program that correspond to same file
4629    and line as SAL and return those.  If there
4630    are several sals that belong to the same block,
4631    only one sal for the block is included in results.  */
4632
4633 struct symtabs_and_lines
4634 expand_line_sal (struct symtab_and_line sal)
4635 {
4636   struct symtabs_and_lines ret, this_line;
4637   int i, j;
4638   struct objfile *objfile;
4639   struct partial_symtab *psymtab;
4640   struct symtab *symtab;
4641   int lineno;
4642   int deleted = 0;
4643   struct block **blocks = NULL;
4644   int *filter;
4645
4646   ret.nelts = 0;
4647   ret.sals = NULL;
4648
4649   if (sal.symtab == NULL || sal.line == 0 || sal.pc != 0)
4650     {
4651       ret.sals = xmalloc (sizeof (struct symtab_and_line));
4652       ret.sals[0] = sal;
4653       ret.nelts = 1;
4654       return ret;
4655     }
4656   else
4657     {
4658       struct linetable_entry *best_item = 0;
4659       struct symtab *best_symtab = 0;
4660       int exact = 0;
4661
4662       lineno = sal.line;
4663
4664       /* We need to find all symtabs for a file which name
4665          is described by sal.  We cannot just directly
4666          iterate over symtabs, since a symtab might not be
4667          yet created.  We also cannot iterate over psymtabs,
4668          calling PSYMTAB_TO_SYMTAB and working on that symtab,
4669          since PSYMTAB_TO_SYMTAB will return NULL for psymtab
4670          corresponding to an included file.  Therefore, we do
4671          first pass over psymtabs, reading in those with
4672          the right name.  Then, we iterate over symtabs, knowing
4673          that all symtabs we're interested in are loaded.  */
4674
4675       ALL_PSYMTABS (objfile, psymtab)
4676         {
4677           if (strcmp (sal.symtab->filename,
4678                       psymtab->filename) == 0)
4679             PSYMTAB_TO_SYMTAB (psymtab);
4680         }
4681
4682       /* Now search the symtab for exact matches and append them.  If
4683          none is found, append the best_item and all its exact
4684          matches.  */
4685       exact = append_exact_match_to_sals (sal.symtab->filename, lineno,
4686                                           &ret, &best_item, &best_symtab);
4687       if (!exact && best_item)
4688         append_exact_match_to_sals (best_symtab->filename, best_item->line,
4689                                     &ret, &best_item, &best_symtab);
4690     }
4691
4692   /* For optimized code, compiler can scatter one source line accross
4693      disjoint ranges of PC values, even when no duplicate functions
4694      or inline functions are involved.  For example, 'for (;;)' inside
4695      non-template non-inline non-ctor-or-dtor function can result
4696      in two PC ranges.  In this case, we don't want to set breakpoint
4697      on first PC of each range.  To filter such cases, we use containing
4698      blocks -- for each PC found above we see if there are other PCs
4699      that are in the same block.  If yes, the other PCs are filtered out.  */
4700
4701   filter = alloca (ret.nelts * sizeof (int));
4702   blocks = alloca (ret.nelts * sizeof (struct block *));
4703   for (i = 0; i < ret.nelts; ++i)
4704     {
4705       filter[i] = 1;
4706       blocks[i] = block_for_pc (ret.sals[i].pc);
4707     }
4708
4709   for (i = 0; i < ret.nelts; ++i)
4710     if (blocks[i] != NULL)
4711       for (j = i+1; j < ret.nelts; ++j)
4712         if (blocks[j] == blocks[i])
4713           {
4714             filter[j] = 0;
4715             ++deleted;
4716             break;
4717           }
4718
4719   {
4720     struct symtab_and_line *final =
4721       xmalloc (sizeof (struct symtab_and_line) * (ret.nelts-deleted));
4722
4723     for (i = 0, j = 0; i < ret.nelts; ++i)
4724       if (filter[i])
4725         final[j++] = ret.sals[i];
4726
4727     ret.nelts -= deleted;
4728     xfree (ret.sals);
4729     ret.sals = final;
4730   }
4731
4732   return ret;
4733 }
4734
4735
4736 void
4737 _initialize_symtab (void)
4738 {
4739   add_info ("variables", variables_info, _("\
4740 All global and static variable names, or those matching REGEXP."));
4741   if (dbx_commands)
4742     add_com ("whereis", class_info, variables_info, _("\
4743 All global and static variable names, or those matching REGEXP."));
4744
4745   add_info ("functions", functions_info,
4746             _("All function names, or those matching REGEXP."));
4747
4748   /* FIXME:  This command has at least the following problems:
4749      1.  It prints builtin types (in a very strange and confusing fashion).
4750      2.  It doesn't print right, e.g. with
4751      typedef struct foo *FOO
4752      type_print prints "FOO" when we want to make it (in this situation)
4753      print "struct foo *".
4754      I also think "ptype" or "whatis" is more likely to be useful (but if
4755      there is much disagreement "info types" can be fixed).  */
4756   add_info ("types", types_info,
4757             _("All type names, or those matching REGEXP."));
4758
4759   add_info ("sources", sources_info,
4760             _("Source files in the program."));
4761
4762   add_com ("rbreak", class_breakpoint, rbreak_command,
4763            _("Set a breakpoint for all functions matching REGEXP."));
4764
4765   if (xdb_commands)
4766     {
4767       add_com ("lf", class_info, sources_info,
4768                _("Source files in the program"));
4769       add_com ("lg", class_info, variables_info, _("\
4770 All global and static variable names, or those matching REGEXP."));
4771     }
4772
4773   add_setshow_enum_cmd ("multiple-symbols", no_class,
4774                         multiple_symbols_modes, &multiple_symbols_mode,
4775                         _("\
4776 Set the debugger behavior when more than one symbol are possible matches\n\
4777 in an expression."), _("\
4778 Show how the debugger handles ambiguities in expressions."), _("\
4779 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
4780                         NULL, NULL, &setlist, &showlist);
4781
4782   /* Initialize the one built-in type that isn't language dependent... */
4783   builtin_type_error = init_type (TYPE_CODE_ERROR, 0, 0,
4784                                   "<unknown type>", (struct objfile *) NULL);
4785
4786   observer_attach_executable_changed (symtab_observer_executable_changed);
4787 }