Add symbol lookup cache.
[deliverable/binutils-gdb.git] / gdb / symtab.c
1 /* Symbol table lookup for the GNU debugger, GDB.
2
3 Copyright (C) 1986-2015 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "gdbcore.h"
24 #include "frame.h"
25 #include "target.h"
26 #include "value.h"
27 #include "symfile.h"
28 #include "objfiles.h"
29 #include "gdbcmd.h"
30 #include "gdb_regex.h"
31 #include "expression.h"
32 #include "language.h"
33 #include "demangle.h"
34 #include "inferior.h"
35 #include "source.h"
36 #include "filenames.h" /* for FILENAME_CMP */
37 #include "objc-lang.h"
38 #include "d-lang.h"
39 #include "ada-lang.h"
40 #include "go-lang.h"
41 #include "p-lang.h"
42 #include "addrmap.h"
43 #include "cli/cli-utils.h"
44
45 #include "hashtab.h"
46
47 #include "gdb_obstack.h"
48 #include "block.h"
49 #include "dictionary.h"
50
51 #include <sys/types.h>
52 #include <fcntl.h>
53 #include <sys/stat.h>
54 #include <ctype.h>
55 #include "cp-abi.h"
56 #include "cp-support.h"
57 #include "observer.h"
58 #include "solist.h"
59 #include "macrotab.h"
60 #include "macroscope.h"
61
62 #include "parser-defs.h"
63
64 /* Forward declarations for local functions. */
65
66 static void rbreak_command (char *, int);
67
68 static int find_line_common (struct linetable *, int, int *, int);
69
70 static struct symbol *lookup_symbol_aux (const char *name,
71 const struct block *block,
72 const domain_enum domain,
73 enum language language,
74 struct field_of_this_result *);
75
76 static
77 struct symbol *lookup_local_symbol (const char *name,
78 const struct block *block,
79 const domain_enum domain,
80 enum language language);
81
82 static struct symbol *
83 lookup_symbol_in_objfile (struct objfile *objfile, int block_index,
84 const char *name, const domain_enum domain);
85
86 extern initialize_file_ftype _initialize_symtab;
87
88 /* Program space key for finding name and language of "main". */
89
90 static const struct program_space_data *main_progspace_key;
91
92 /* Type of the data stored on the program space. */
93
94 struct main_info
95 {
96 /* Name of "main". */
97
98 char *name_of_main;
99
100 /* Language of "main". */
101
102 enum language language_of_main;
103 };
104
105 /* Program space key for finding its symbol cache. */
106
107 static const struct program_space_data *symbol_cache_key;
108
109 /* The default symbol cache size.
110 There is no extra cpu cost for large N (except when flushing the cache,
111 which is rare). The value here is just a first attempt. A better default
112 value may be higher or lower. A prime number can make up for a bad hash
113 computation, so that's why the number is what it is. */
114 #define DEFAULT_SYMBOL_CACHE_SIZE 1021
115
116 /* The maximum symbol cache size.
117 There's no method to the decision of what value to use here, other than
118 there's no point in allowing a user typo to make gdb consume all memory. */
119 #define MAX_SYMBOL_CACHE_SIZE (1024*1024)
120
121 /* symbol_cache_lookup returns this if a previous lookup failed to find the
122 symbol in any objfile. */
123 #define SYMBOL_LOOKUP_FAILED ((struct symbol *) 1)
124
125 /* Recording lookups that don't find the symbol is just as important, if not
126 more so, than recording found symbols. */
127
128 enum symbol_cache_slot_state
129 {
130 SYMBOL_SLOT_UNUSED,
131 SYMBOL_SLOT_NOT_FOUND,
132 SYMBOL_SLOT_FOUND
133 };
134
135 /* Symbols don't specify global vs static block.
136 So keep them in separate caches. */
137
138 struct block_symbol_cache
139 {
140 unsigned int hits;
141 unsigned int misses;
142 unsigned int collisions;
143
144 /* SYMBOLS is a variable length array of this size.
145 One can imagine that in general one cache (global/static) should be a
146 fraction of the size of the other, but there's no data at the moment
147 on which to decide. */
148 unsigned int size;
149
150 struct symbol_cache_slot
151 {
152 enum symbol_cache_slot_state state;
153
154 /* The objfile that was current when the symbol was looked up.
155 This is only needed for global blocks, but for simplicity's sake
156 we allocate the space for both. If data shows the extra space used
157 for static blocks is a problem, we can split things up then.
158
159 Global blocks need cache lookup to include the objfile context because
160 we need to account for gdbarch_iterate_over_objfiles_in_search_order
161 which can traverse objfiles in, effectively, any order, depending on
162 the current objfile, thus affecting which symbol is found. Normally,
163 only the current objfile is searched first, and then the rest are
164 searched in recorded order; but putting cache lookup inside
165 gdbarch_iterate_over_objfiles_in_search_order would be awkward.
166 Instead we just make the current objfile part of the context of
167 cache lookup. This means we can record the same symbol multiple times,
168 each with a different "current objfile" that was in effect when the
169 lookup was saved in the cache, but cache space is pretty cheap. */
170 const struct objfile *objfile_context;
171
172 union
173 {
174 struct symbol *found;
175 struct
176 {
177 char *name;
178 domain_enum domain;
179 } not_found;
180 } value;
181 } symbols[1];
182 };
183
184 /* The symbol cache.
185
186 Searching for symbols in the static and global blocks over multiple objfiles
187 again and again can be slow, as can searching very big objfiles. This is a
188 simple cache to improve symbol lookup performance, which is critical to
189 overall gdb performance.
190
191 Symbols are hashed on the name, its domain, and block.
192 They are also hashed on their objfile for objfile-specific lookups. */
193
194 struct symbol_cache
195 {
196 struct block_symbol_cache *global_symbols;
197 struct block_symbol_cache *static_symbols;
198 };
199
200 /* When non-zero, print debugging messages related to symtab creation. */
201 unsigned int symtab_create_debug = 0;
202
203 /* When non-zero, print debugging messages related to symbol lookup. */
204 unsigned int symbol_lookup_debug = 0;
205
206 /* The size of the cache is staged here. */
207 static unsigned int new_symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
208
209 /* The current value of the symbol cache size.
210 This is saved so that if the user enters a value too big we can restore
211 the original value from here. */
212 static unsigned int symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
213
214 /* Non-zero if a file may be known by two different basenames.
215 This is the uncommon case, and significantly slows down gdb.
216 Default set to "off" to not slow down the common case. */
217 int basenames_may_differ = 0;
218
219 /* Allow the user to configure the debugger behavior with respect
220 to multiple-choice menus when more than one symbol matches during
221 a symbol lookup. */
222
223 const char multiple_symbols_ask[] = "ask";
224 const char multiple_symbols_all[] = "all";
225 const char multiple_symbols_cancel[] = "cancel";
226 static const char *const multiple_symbols_modes[] =
227 {
228 multiple_symbols_ask,
229 multiple_symbols_all,
230 multiple_symbols_cancel,
231 NULL
232 };
233 static const char *multiple_symbols_mode = multiple_symbols_all;
234
235 /* Read-only accessor to AUTO_SELECT_MODE. */
236
237 const char *
238 multiple_symbols_select_mode (void)
239 {
240 return multiple_symbols_mode;
241 }
242
243 /* Block in which the most recently searched-for symbol was found.
244 Might be better to make this a parameter to lookup_symbol and
245 value_of_this. */
246
247 const struct block *block_found;
248
249 /* Return the name of a domain_enum. */
250
251 const char *
252 domain_name (domain_enum e)
253 {
254 switch (e)
255 {
256 case UNDEF_DOMAIN: return "UNDEF_DOMAIN";
257 case VAR_DOMAIN: return "VAR_DOMAIN";
258 case STRUCT_DOMAIN: return "STRUCT_DOMAIN";
259 case MODULE_DOMAIN: return "MODULE_DOMAIN";
260 case LABEL_DOMAIN: return "LABEL_DOMAIN";
261 case COMMON_BLOCK_DOMAIN: return "COMMON_BLOCK_DOMAIN";
262 default: gdb_assert_not_reached ("bad domain_enum");
263 }
264 }
265
266 /* Return the name of a search_domain . */
267
268 const char *
269 search_domain_name (enum search_domain e)
270 {
271 switch (e)
272 {
273 case VARIABLES_DOMAIN: return "VARIABLES_DOMAIN";
274 case FUNCTIONS_DOMAIN: return "FUNCTIONS_DOMAIN";
275 case TYPES_DOMAIN: return "TYPES_DOMAIN";
276 case ALL_DOMAIN: return "ALL_DOMAIN";
277 default: gdb_assert_not_reached ("bad search_domain");
278 }
279 }
280
281 /* See symtab.h. */
282
283 struct symtab *
284 compunit_primary_filetab (const struct compunit_symtab *cust)
285 {
286 gdb_assert (COMPUNIT_FILETABS (cust) != NULL);
287
288 /* The primary file symtab is the first one in the list. */
289 return COMPUNIT_FILETABS (cust);
290 }
291
292 /* See symtab.h. */
293
294 enum language
295 compunit_language (const struct compunit_symtab *cust)
296 {
297 struct symtab *symtab = compunit_primary_filetab (cust);
298
299 /* The language of the compunit symtab is the language of its primary
300 source file. */
301 return SYMTAB_LANGUAGE (symtab);
302 }
303
304 /* See whether FILENAME matches SEARCH_NAME using the rule that we
305 advertise to the user. (The manual's description of linespecs
306 describes what we advertise). Returns true if they match, false
307 otherwise. */
308
309 int
310 compare_filenames_for_search (const char *filename, const char *search_name)
311 {
312 int len = strlen (filename);
313 size_t search_len = strlen (search_name);
314
315 if (len < search_len)
316 return 0;
317
318 /* The tail of FILENAME must match. */
319 if (FILENAME_CMP (filename + len - search_len, search_name) != 0)
320 return 0;
321
322 /* Either the names must completely match, or the character
323 preceding the trailing SEARCH_NAME segment of FILENAME must be a
324 directory separator.
325
326 The check !IS_ABSOLUTE_PATH ensures SEARCH_NAME "/dir/file.c"
327 cannot match FILENAME "/path//dir/file.c" - as user has requested
328 absolute path. The sama applies for "c:\file.c" possibly
329 incorrectly hypothetically matching "d:\dir\c:\file.c".
330
331 The HAS_DRIVE_SPEC purpose is to make FILENAME "c:file.c"
332 compatible with SEARCH_NAME "file.c". In such case a compiler had
333 to put the "c:file.c" name into debug info. Such compatibility
334 works only on GDB built for DOS host. */
335 return (len == search_len
336 || (!IS_ABSOLUTE_PATH (search_name)
337 && IS_DIR_SEPARATOR (filename[len - search_len - 1]))
338 || (HAS_DRIVE_SPEC (filename)
339 && STRIP_DRIVE_SPEC (filename) == &filename[len - search_len]));
340 }
341
342 /* Check for a symtab of a specific name by searching some symtabs.
343 This is a helper function for callbacks of iterate_over_symtabs.
344
345 If NAME is not absolute, then REAL_PATH is NULL
346 If NAME is absolute, then REAL_PATH is the gdb_realpath form of NAME.
347
348 The return value, NAME, REAL_PATH, CALLBACK, and DATA
349 are identical to the `map_symtabs_matching_filename' method of
350 quick_symbol_functions.
351
352 FIRST and AFTER_LAST indicate the range of compunit symtabs to search.
353 Each symtab within the specified compunit symtab is also searched.
354 AFTER_LAST is one past the last compunit symtab to search; NULL means to
355 search until the end of the list. */
356
357 int
358 iterate_over_some_symtabs (const char *name,
359 const char *real_path,
360 int (*callback) (struct symtab *symtab,
361 void *data),
362 void *data,
363 struct compunit_symtab *first,
364 struct compunit_symtab *after_last)
365 {
366 struct compunit_symtab *cust;
367 struct symtab *s;
368 const char* base_name = lbasename (name);
369
370 for (cust = first; cust != NULL && cust != after_last; cust = cust->next)
371 {
372 ALL_COMPUNIT_FILETABS (cust, s)
373 {
374 if (compare_filenames_for_search (s->filename, name))
375 {
376 if (callback (s, data))
377 return 1;
378 continue;
379 }
380
381 /* Before we invoke realpath, which can get expensive when many
382 files are involved, do a quick comparison of the basenames. */
383 if (! basenames_may_differ
384 && FILENAME_CMP (base_name, lbasename (s->filename)) != 0)
385 continue;
386
387 if (compare_filenames_for_search (symtab_to_fullname (s), name))
388 {
389 if (callback (s, data))
390 return 1;
391 continue;
392 }
393
394 /* If the user gave us an absolute path, try to find the file in
395 this symtab and use its absolute path. */
396 if (real_path != NULL)
397 {
398 const char *fullname = symtab_to_fullname (s);
399
400 gdb_assert (IS_ABSOLUTE_PATH (real_path));
401 gdb_assert (IS_ABSOLUTE_PATH (name));
402 if (FILENAME_CMP (real_path, fullname) == 0)
403 {
404 if (callback (s, data))
405 return 1;
406 continue;
407 }
408 }
409 }
410 }
411
412 return 0;
413 }
414
415 /* Check for a symtab of a specific name; first in symtabs, then in
416 psymtabs. *If* there is no '/' in the name, a match after a '/'
417 in the symtab filename will also work.
418
419 Calls CALLBACK with each symtab that is found and with the supplied
420 DATA. If CALLBACK returns true, the search stops. */
421
422 void
423 iterate_over_symtabs (const char *name,
424 int (*callback) (struct symtab *symtab,
425 void *data),
426 void *data)
427 {
428 struct objfile *objfile;
429 char *real_path = NULL;
430 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
431
432 /* Here we are interested in canonicalizing an absolute path, not
433 absolutizing a relative path. */
434 if (IS_ABSOLUTE_PATH (name))
435 {
436 real_path = gdb_realpath (name);
437 make_cleanup (xfree, real_path);
438 gdb_assert (IS_ABSOLUTE_PATH (real_path));
439 }
440
441 ALL_OBJFILES (objfile)
442 {
443 if (iterate_over_some_symtabs (name, real_path, callback, data,
444 objfile->compunit_symtabs, NULL))
445 {
446 do_cleanups (cleanups);
447 return;
448 }
449 }
450
451 /* Same search rules as above apply here, but now we look thru the
452 psymtabs. */
453
454 ALL_OBJFILES (objfile)
455 {
456 if (objfile->sf
457 && objfile->sf->qf->map_symtabs_matching_filename (objfile,
458 name,
459 real_path,
460 callback,
461 data))
462 {
463 do_cleanups (cleanups);
464 return;
465 }
466 }
467
468 do_cleanups (cleanups);
469 }
470
471 /* The callback function used by lookup_symtab. */
472
473 static int
474 lookup_symtab_callback (struct symtab *symtab, void *data)
475 {
476 struct symtab **result_ptr = data;
477
478 *result_ptr = symtab;
479 return 1;
480 }
481
482 /* A wrapper for iterate_over_symtabs that returns the first matching
483 symtab, or NULL. */
484
485 struct symtab *
486 lookup_symtab (const char *name)
487 {
488 struct symtab *result = NULL;
489
490 iterate_over_symtabs (name, lookup_symtab_callback, &result);
491 return result;
492 }
493
494 \f
495 /* Mangle a GDB method stub type. This actually reassembles the pieces of the
496 full method name, which consist of the class name (from T), the unadorned
497 method name from METHOD_ID, and the signature for the specific overload,
498 specified by SIGNATURE_ID. Note that this function is g++ specific. */
499
500 char *
501 gdb_mangle_name (struct type *type, int method_id, int signature_id)
502 {
503 int mangled_name_len;
504 char *mangled_name;
505 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
506 struct fn_field *method = &f[signature_id];
507 const char *field_name = TYPE_FN_FIELDLIST_NAME (type, method_id);
508 const char *physname = TYPE_FN_FIELD_PHYSNAME (f, signature_id);
509 const char *newname = type_name_no_tag (type);
510
511 /* Does the form of physname indicate that it is the full mangled name
512 of a constructor (not just the args)? */
513 int is_full_physname_constructor;
514
515 int is_constructor;
516 int is_destructor = is_destructor_name (physname);
517 /* Need a new type prefix. */
518 char *const_prefix = method->is_const ? "C" : "";
519 char *volatile_prefix = method->is_volatile ? "V" : "";
520 char buf[20];
521 int len = (newname == NULL ? 0 : strlen (newname));
522
523 /* Nothing to do if physname already contains a fully mangled v3 abi name
524 or an operator name. */
525 if ((physname[0] == '_' && physname[1] == 'Z')
526 || is_operator_name (field_name))
527 return xstrdup (physname);
528
529 is_full_physname_constructor = is_constructor_name (physname);
530
531 is_constructor = is_full_physname_constructor
532 || (newname && strcmp (field_name, newname) == 0);
533
534 if (!is_destructor)
535 is_destructor = (strncmp (physname, "__dt", 4) == 0);
536
537 if (is_destructor || is_full_physname_constructor)
538 {
539 mangled_name = (char *) xmalloc (strlen (physname) + 1);
540 strcpy (mangled_name, physname);
541 return mangled_name;
542 }
543
544 if (len == 0)
545 {
546 xsnprintf (buf, sizeof (buf), "__%s%s", const_prefix, volatile_prefix);
547 }
548 else if (physname[0] == 't' || physname[0] == 'Q')
549 {
550 /* The physname for template and qualified methods already includes
551 the class name. */
552 xsnprintf (buf, sizeof (buf), "__%s%s", const_prefix, volatile_prefix);
553 newname = NULL;
554 len = 0;
555 }
556 else
557 {
558 xsnprintf (buf, sizeof (buf), "__%s%s%d", const_prefix,
559 volatile_prefix, len);
560 }
561 mangled_name_len = ((is_constructor ? 0 : strlen (field_name))
562 + strlen (buf) + len + strlen (physname) + 1);
563
564 mangled_name = (char *) xmalloc (mangled_name_len);
565 if (is_constructor)
566 mangled_name[0] = '\0';
567 else
568 strcpy (mangled_name, field_name);
569
570 strcat (mangled_name, buf);
571 /* If the class doesn't have a name, i.e. newname NULL, then we just
572 mangle it using 0 for the length of the class. Thus it gets mangled
573 as something starting with `::' rather than `classname::'. */
574 if (newname != NULL)
575 strcat (mangled_name, newname);
576
577 strcat (mangled_name, physname);
578 return (mangled_name);
579 }
580
581 /* Set the demangled name of GSYMBOL to NAME. NAME must be already
582 correctly allocated. */
583
584 void
585 symbol_set_demangled_name (struct general_symbol_info *gsymbol,
586 const char *name,
587 struct obstack *obstack)
588 {
589 if (gsymbol->language == language_ada)
590 {
591 if (name == NULL)
592 {
593 gsymbol->ada_mangled = 0;
594 gsymbol->language_specific.obstack = obstack;
595 }
596 else
597 {
598 gsymbol->ada_mangled = 1;
599 gsymbol->language_specific.mangled_lang.demangled_name = name;
600 }
601 }
602 else
603 gsymbol->language_specific.mangled_lang.demangled_name = name;
604 }
605
606 /* Return the demangled name of GSYMBOL. */
607
608 const char *
609 symbol_get_demangled_name (const struct general_symbol_info *gsymbol)
610 {
611 if (gsymbol->language == language_ada)
612 {
613 if (!gsymbol->ada_mangled)
614 return NULL;
615 /* Fall through. */
616 }
617
618 return gsymbol->language_specific.mangled_lang.demangled_name;
619 }
620
621 \f
622 /* Initialize the language dependent portion of a symbol
623 depending upon the language for the symbol. */
624
625 void
626 symbol_set_language (struct general_symbol_info *gsymbol,
627 enum language language,
628 struct obstack *obstack)
629 {
630 gsymbol->language = language;
631 if (gsymbol->language == language_cplus
632 || gsymbol->language == language_d
633 || gsymbol->language == language_go
634 || gsymbol->language == language_java
635 || gsymbol->language == language_objc
636 || gsymbol->language == language_fortran)
637 {
638 symbol_set_demangled_name (gsymbol, NULL, obstack);
639 }
640 else if (gsymbol->language == language_ada)
641 {
642 gdb_assert (gsymbol->ada_mangled == 0);
643 gsymbol->language_specific.obstack = obstack;
644 }
645 else
646 {
647 memset (&gsymbol->language_specific, 0,
648 sizeof (gsymbol->language_specific));
649 }
650 }
651
652 /* Functions to initialize a symbol's mangled name. */
653
654 /* Objects of this type are stored in the demangled name hash table. */
655 struct demangled_name_entry
656 {
657 const char *mangled;
658 char demangled[1];
659 };
660
661 /* Hash function for the demangled name hash. */
662
663 static hashval_t
664 hash_demangled_name_entry (const void *data)
665 {
666 const struct demangled_name_entry *e = data;
667
668 return htab_hash_string (e->mangled);
669 }
670
671 /* Equality function for the demangled name hash. */
672
673 static int
674 eq_demangled_name_entry (const void *a, const void *b)
675 {
676 const struct demangled_name_entry *da = a;
677 const struct demangled_name_entry *db = b;
678
679 return strcmp (da->mangled, db->mangled) == 0;
680 }
681
682 /* Create the hash table used for demangled names. Each hash entry is
683 a pair of strings; one for the mangled name and one for the demangled
684 name. The entry is hashed via just the mangled name. */
685
686 static void
687 create_demangled_names_hash (struct objfile *objfile)
688 {
689 /* Choose 256 as the starting size of the hash table, somewhat arbitrarily.
690 The hash table code will round this up to the next prime number.
691 Choosing a much larger table size wastes memory, and saves only about
692 1% in symbol reading. */
693
694 objfile->per_bfd->demangled_names_hash = htab_create_alloc
695 (256, hash_demangled_name_entry, eq_demangled_name_entry,
696 NULL, xcalloc, xfree);
697 }
698
699 /* Try to determine the demangled name for a symbol, based on the
700 language of that symbol. If the language is set to language_auto,
701 it will attempt to find any demangling algorithm that works and
702 then set the language appropriately. The returned name is allocated
703 by the demangler and should be xfree'd. */
704
705 static char *
706 symbol_find_demangled_name (struct general_symbol_info *gsymbol,
707 const char *mangled)
708 {
709 char *demangled = NULL;
710
711 if (gsymbol->language == language_unknown)
712 gsymbol->language = language_auto;
713
714 if (gsymbol->language == language_objc
715 || gsymbol->language == language_auto)
716 {
717 demangled =
718 objc_demangle (mangled, 0);
719 if (demangled != NULL)
720 {
721 gsymbol->language = language_objc;
722 return demangled;
723 }
724 }
725 if (gsymbol->language == language_cplus
726 || gsymbol->language == language_auto)
727 {
728 demangled =
729 gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
730 if (demangled != NULL)
731 {
732 gsymbol->language = language_cplus;
733 return demangled;
734 }
735 }
736 if (gsymbol->language == language_java)
737 {
738 demangled =
739 gdb_demangle (mangled,
740 DMGL_PARAMS | DMGL_ANSI | DMGL_JAVA);
741 if (demangled != NULL)
742 {
743 gsymbol->language = language_java;
744 return demangled;
745 }
746 }
747 if (gsymbol->language == language_d
748 || gsymbol->language == language_auto)
749 {
750 demangled = d_demangle(mangled, 0);
751 if (demangled != NULL)
752 {
753 gsymbol->language = language_d;
754 return demangled;
755 }
756 }
757 /* FIXME(dje): Continually adding languages here is clumsy.
758 Better to just call la_demangle if !auto, and if auto then call
759 a utility routine that tries successive languages in turn and reports
760 which one it finds. I realize the la_demangle options may be different
761 for different languages but there's already a FIXME for that. */
762 if (gsymbol->language == language_go
763 || gsymbol->language == language_auto)
764 {
765 demangled = go_demangle (mangled, 0);
766 if (demangled != NULL)
767 {
768 gsymbol->language = language_go;
769 return demangled;
770 }
771 }
772
773 /* We could support `gsymbol->language == language_fortran' here to provide
774 module namespaces also for inferiors with only minimal symbol table (ELF
775 symbols). Just the mangling standard is not standardized across compilers
776 and there is no DW_AT_producer available for inferiors with only the ELF
777 symbols to check the mangling kind. */
778
779 /* Check for Ada symbols last. See comment below explaining why. */
780
781 if (gsymbol->language == language_auto)
782 {
783 const char *demangled = ada_decode (mangled);
784
785 if (demangled != mangled && demangled != NULL && demangled[0] != '<')
786 {
787 /* Set the gsymbol language to Ada, but still return NULL.
788 Two reasons for that:
789
790 1. For Ada, we prefer computing the symbol's decoded name
791 on the fly rather than pre-compute it, in order to save
792 memory (Ada projects are typically very large).
793
794 2. There are some areas in the definition of the GNAT
795 encoding where, with a bit of bad luck, we might be able
796 to decode a non-Ada symbol, generating an incorrect
797 demangled name (Eg: names ending with "TB" for instance
798 are identified as task bodies and so stripped from
799 the decoded name returned).
800
801 Returning NULL, here, helps us get a little bit of
802 the best of both worlds. Because we're last, we should
803 not affect any of the other languages that were able to
804 demangle the symbol before us; we get to correctly tag
805 Ada symbols as such; and even if we incorrectly tagged
806 a non-Ada symbol, which should be rare, any routing
807 through the Ada language should be transparent (Ada
808 tries to behave much like C/C++ with non-Ada symbols). */
809 gsymbol->language = language_ada;
810 return NULL;
811 }
812 }
813
814 return NULL;
815 }
816
817 /* Set both the mangled and demangled (if any) names for GSYMBOL based
818 on LINKAGE_NAME and LEN. Ordinarily, NAME is copied onto the
819 objfile's obstack; but if COPY_NAME is 0 and if NAME is
820 NUL-terminated, then this function assumes that NAME is already
821 correctly saved (either permanently or with a lifetime tied to the
822 objfile), and it will not be copied.
823
824 The hash table corresponding to OBJFILE is used, and the memory
825 comes from the per-BFD storage_obstack. LINKAGE_NAME is copied,
826 so the pointer can be discarded after calling this function. */
827
828 /* We have to be careful when dealing with Java names: when we run
829 into a Java minimal symbol, we don't know it's a Java symbol, so it
830 gets demangled as a C++ name. This is unfortunate, but there's not
831 much we can do about it: but when demangling partial symbols and
832 regular symbols, we'd better not reuse the wrong demangled name.
833 (See PR gdb/1039.) We solve this by putting a distinctive prefix
834 on Java names when storing them in the hash table. */
835
836 /* FIXME: carlton/2003-03-13: This is an unfortunate situation. I
837 don't mind the Java prefix so much: different languages have
838 different demangling requirements, so it's only natural that we
839 need to keep language data around in our demangling cache. But
840 it's not good that the minimal symbol has the wrong demangled name.
841 Unfortunately, I can't think of any easy solution to that
842 problem. */
843
844 #define JAVA_PREFIX "##JAVA$$"
845 #define JAVA_PREFIX_LEN 8
846
847 void
848 symbol_set_names (struct general_symbol_info *gsymbol,
849 const char *linkage_name, int len, int copy_name,
850 struct objfile *objfile)
851 {
852 struct demangled_name_entry **slot;
853 /* A 0-terminated copy of the linkage name. */
854 const char *linkage_name_copy;
855 /* A copy of the linkage name that might have a special Java prefix
856 added to it, for use when looking names up in the hash table. */
857 const char *lookup_name;
858 /* The length of lookup_name. */
859 int lookup_len;
860 struct demangled_name_entry entry;
861 struct objfile_per_bfd_storage *per_bfd = objfile->per_bfd;
862
863 if (gsymbol->language == language_ada)
864 {
865 /* In Ada, we do the symbol lookups using the mangled name, so
866 we can save some space by not storing the demangled name.
867
868 As a side note, we have also observed some overlap between
869 the C++ mangling and Ada mangling, similarly to what has
870 been observed with Java. Because we don't store the demangled
871 name with the symbol, we don't need to use the same trick
872 as Java. */
873 if (!copy_name)
874 gsymbol->name = linkage_name;
875 else
876 {
877 char *name = obstack_alloc (&per_bfd->storage_obstack, len + 1);
878
879 memcpy (name, linkage_name, len);
880 name[len] = '\0';
881 gsymbol->name = name;
882 }
883 symbol_set_demangled_name (gsymbol, NULL, &per_bfd->storage_obstack);
884
885 return;
886 }
887
888 if (per_bfd->demangled_names_hash == NULL)
889 create_demangled_names_hash (objfile);
890
891 /* The stabs reader generally provides names that are not
892 NUL-terminated; most of the other readers don't do this, so we
893 can just use the given copy, unless we're in the Java case. */
894 if (gsymbol->language == language_java)
895 {
896 char *alloc_name;
897
898 lookup_len = len + JAVA_PREFIX_LEN;
899 alloc_name = alloca (lookup_len + 1);
900 memcpy (alloc_name, JAVA_PREFIX, JAVA_PREFIX_LEN);
901 memcpy (alloc_name + JAVA_PREFIX_LEN, linkage_name, len);
902 alloc_name[lookup_len] = '\0';
903
904 lookup_name = alloc_name;
905 linkage_name_copy = alloc_name + JAVA_PREFIX_LEN;
906 }
907 else if (linkage_name[len] != '\0')
908 {
909 char *alloc_name;
910
911 lookup_len = len;
912 alloc_name = alloca (lookup_len + 1);
913 memcpy (alloc_name, linkage_name, len);
914 alloc_name[lookup_len] = '\0';
915
916 lookup_name = alloc_name;
917 linkage_name_copy = alloc_name;
918 }
919 else
920 {
921 lookup_len = len;
922 lookup_name = linkage_name;
923 linkage_name_copy = linkage_name;
924 }
925
926 entry.mangled = lookup_name;
927 slot = ((struct demangled_name_entry **)
928 htab_find_slot (per_bfd->demangled_names_hash,
929 &entry, INSERT));
930
931 /* If this name is not in the hash table, add it. */
932 if (*slot == NULL
933 /* A C version of the symbol may have already snuck into the table.
934 This happens to, e.g., main.init (__go_init_main). Cope. */
935 || (gsymbol->language == language_go
936 && (*slot)->demangled[0] == '\0'))
937 {
938 char *demangled_name = symbol_find_demangled_name (gsymbol,
939 linkage_name_copy);
940 int demangled_len = demangled_name ? strlen (demangled_name) : 0;
941
942 /* Suppose we have demangled_name==NULL, copy_name==0, and
943 lookup_name==linkage_name. In this case, we already have the
944 mangled name saved, and we don't have a demangled name. So,
945 you might think we could save a little space by not recording
946 this in the hash table at all.
947
948 It turns out that it is actually important to still save such
949 an entry in the hash table, because storing this name gives
950 us better bcache hit rates for partial symbols. */
951 if (!copy_name && lookup_name == linkage_name)
952 {
953 *slot = obstack_alloc (&per_bfd->storage_obstack,
954 offsetof (struct demangled_name_entry,
955 demangled)
956 + demangled_len + 1);
957 (*slot)->mangled = lookup_name;
958 }
959 else
960 {
961 char *mangled_ptr;
962
963 /* If we must copy the mangled name, put it directly after
964 the demangled name so we can have a single
965 allocation. */
966 *slot = obstack_alloc (&per_bfd->storage_obstack,
967 offsetof (struct demangled_name_entry,
968 demangled)
969 + lookup_len + demangled_len + 2);
970 mangled_ptr = &((*slot)->demangled[demangled_len + 1]);
971 strcpy (mangled_ptr, lookup_name);
972 (*slot)->mangled = mangled_ptr;
973 }
974
975 if (demangled_name != NULL)
976 {
977 strcpy ((*slot)->demangled, demangled_name);
978 xfree (demangled_name);
979 }
980 else
981 (*slot)->demangled[0] = '\0';
982 }
983
984 gsymbol->name = (*slot)->mangled + lookup_len - len;
985 if ((*slot)->demangled[0] != '\0')
986 symbol_set_demangled_name (gsymbol, (*slot)->demangled,
987 &per_bfd->storage_obstack);
988 else
989 symbol_set_demangled_name (gsymbol, NULL, &per_bfd->storage_obstack);
990 }
991
992 /* Return the source code name of a symbol. In languages where
993 demangling is necessary, this is the demangled name. */
994
995 const char *
996 symbol_natural_name (const struct general_symbol_info *gsymbol)
997 {
998 switch (gsymbol->language)
999 {
1000 case language_cplus:
1001 case language_d:
1002 case language_go:
1003 case language_java:
1004 case language_objc:
1005 case language_fortran:
1006 if (symbol_get_demangled_name (gsymbol) != NULL)
1007 return symbol_get_demangled_name (gsymbol);
1008 break;
1009 case language_ada:
1010 return ada_decode_symbol (gsymbol);
1011 default:
1012 break;
1013 }
1014 return gsymbol->name;
1015 }
1016
1017 /* Return the demangled name for a symbol based on the language for
1018 that symbol. If no demangled name exists, return NULL. */
1019
1020 const char *
1021 symbol_demangled_name (const struct general_symbol_info *gsymbol)
1022 {
1023 const char *dem_name = NULL;
1024
1025 switch (gsymbol->language)
1026 {
1027 case language_cplus:
1028 case language_d:
1029 case language_go:
1030 case language_java:
1031 case language_objc:
1032 case language_fortran:
1033 dem_name = symbol_get_demangled_name (gsymbol);
1034 break;
1035 case language_ada:
1036 dem_name = ada_decode_symbol (gsymbol);
1037 break;
1038 default:
1039 break;
1040 }
1041 return dem_name;
1042 }
1043
1044 /* Return the search name of a symbol---generally the demangled or
1045 linkage name of the symbol, depending on how it will be searched for.
1046 If there is no distinct demangled name, then returns the same value
1047 (same pointer) as SYMBOL_LINKAGE_NAME. */
1048
1049 const char *
1050 symbol_search_name (const struct general_symbol_info *gsymbol)
1051 {
1052 if (gsymbol->language == language_ada)
1053 return gsymbol->name;
1054 else
1055 return symbol_natural_name (gsymbol);
1056 }
1057
1058 /* Initialize the structure fields to zero values. */
1059
1060 void
1061 init_sal (struct symtab_and_line *sal)
1062 {
1063 memset (sal, 0, sizeof (*sal));
1064 }
1065 \f
1066
1067 /* Return 1 if the two sections are the same, or if they could
1068 plausibly be copies of each other, one in an original object
1069 file and another in a separated debug file. */
1070
1071 int
1072 matching_obj_sections (struct obj_section *obj_first,
1073 struct obj_section *obj_second)
1074 {
1075 asection *first = obj_first? obj_first->the_bfd_section : NULL;
1076 asection *second = obj_second? obj_second->the_bfd_section : NULL;
1077 struct objfile *obj;
1078
1079 /* If they're the same section, then they match. */
1080 if (first == second)
1081 return 1;
1082
1083 /* If either is NULL, give up. */
1084 if (first == NULL || second == NULL)
1085 return 0;
1086
1087 /* This doesn't apply to absolute symbols. */
1088 if (first->owner == NULL || second->owner == NULL)
1089 return 0;
1090
1091 /* If they're in the same object file, they must be different sections. */
1092 if (first->owner == second->owner)
1093 return 0;
1094
1095 /* Check whether the two sections are potentially corresponding. They must
1096 have the same size, address, and name. We can't compare section indexes,
1097 which would be more reliable, because some sections may have been
1098 stripped. */
1099 if (bfd_get_section_size (first) != bfd_get_section_size (second))
1100 return 0;
1101
1102 /* In-memory addresses may start at a different offset, relativize them. */
1103 if (bfd_get_section_vma (first->owner, first)
1104 - bfd_get_start_address (first->owner)
1105 != bfd_get_section_vma (second->owner, second)
1106 - bfd_get_start_address (second->owner))
1107 return 0;
1108
1109 if (bfd_get_section_name (first->owner, first) == NULL
1110 || bfd_get_section_name (second->owner, second) == NULL
1111 || strcmp (bfd_get_section_name (first->owner, first),
1112 bfd_get_section_name (second->owner, second)) != 0)
1113 return 0;
1114
1115 /* Otherwise check that they are in corresponding objfiles. */
1116
1117 ALL_OBJFILES (obj)
1118 if (obj->obfd == first->owner)
1119 break;
1120 gdb_assert (obj != NULL);
1121
1122 if (obj->separate_debug_objfile != NULL
1123 && obj->separate_debug_objfile->obfd == second->owner)
1124 return 1;
1125 if (obj->separate_debug_objfile_backlink != NULL
1126 && obj->separate_debug_objfile_backlink->obfd == second->owner)
1127 return 1;
1128
1129 return 0;
1130 }
1131
1132 /* See symtab.h. */
1133
1134 void
1135 expand_symtab_containing_pc (CORE_ADDR pc, struct obj_section *section)
1136 {
1137 struct objfile *objfile;
1138 struct bound_minimal_symbol msymbol;
1139
1140 /* If we know that this is not a text address, return failure. This is
1141 necessary because we loop based on texthigh and textlow, which do
1142 not include the data ranges. */
1143 msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
1144 if (msymbol.minsym
1145 && (MSYMBOL_TYPE (msymbol.minsym) == mst_data
1146 || MSYMBOL_TYPE (msymbol.minsym) == mst_bss
1147 || MSYMBOL_TYPE (msymbol.minsym) == mst_abs
1148 || MSYMBOL_TYPE (msymbol.minsym) == mst_file_data
1149 || MSYMBOL_TYPE (msymbol.minsym) == mst_file_bss))
1150 return;
1151
1152 ALL_OBJFILES (objfile)
1153 {
1154 struct compunit_symtab *cust = NULL;
1155
1156 if (objfile->sf)
1157 cust = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile, msymbol,
1158 pc, section, 0);
1159 if (cust)
1160 return;
1161 }
1162 }
1163 \f
1164 /* Hash function for the symbol cache. */
1165
1166 static unsigned int
1167 hash_symbol_entry (const struct objfile *objfile_context,
1168 const char *name, domain_enum domain)
1169 {
1170 unsigned int hash = (uintptr_t) objfile_context;
1171
1172 if (name != NULL)
1173 hash += htab_hash_string (name);
1174
1175 hash += domain;
1176
1177 return hash;
1178 }
1179
1180 /* Equality function for the symbol cache. */
1181
1182 static int
1183 eq_symbol_entry (const struct symbol_cache_slot *slot,
1184 const struct objfile *objfile_context,
1185 const char *name, domain_enum domain)
1186 {
1187 const char *slot_name;
1188 domain_enum slot_domain;
1189
1190 if (slot->state == SYMBOL_SLOT_UNUSED)
1191 return 0;
1192
1193 if (slot->objfile_context != objfile_context)
1194 return 0;
1195
1196 if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1197 {
1198 slot_name = slot->value.not_found.name;
1199 slot_domain = slot->value.not_found.domain;
1200 }
1201 else
1202 {
1203 slot_name = SYMBOL_SEARCH_NAME (slot->value.found);
1204 slot_domain = SYMBOL_DOMAIN (slot->value.found);
1205 }
1206
1207 /* NULL names match. */
1208 if (slot_name == NULL && name == NULL)
1209 {
1210 /* But there's no point in calling symbol_matches_domain in the
1211 SYMBOL_SLOT_FOUND case. */
1212 if (slot_domain != domain)
1213 return 0;
1214 }
1215 else if (slot_name != NULL && name != NULL)
1216 {
1217 /* It's important that we use the same comparison that was done the
1218 first time through. If the slot records a found symbol, then this
1219 means using strcmp_iw on SYMBOL_SEARCH_NAME. See dictionary.c.
1220 It also means using symbol_matches_domain for found symbols.
1221 See block.c.
1222
1223 If the slot records a not-found symbol, then require a precise match.
1224 We could still be lax with whitespace like strcmp_iw though. */
1225
1226 if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1227 {
1228 if (strcmp (slot_name, name) != 0)
1229 return 0;
1230 if (slot_domain != domain)
1231 return 0;
1232 }
1233 else
1234 {
1235 struct symbol *sym = slot->value.found;
1236
1237 if (strcmp_iw (slot_name, name) != 0)
1238 return 0;
1239 if (!symbol_matches_domain (SYMBOL_LANGUAGE (sym),
1240 slot_domain, domain))
1241 return 0;
1242 }
1243 }
1244 else
1245 {
1246 /* Only one name is NULL. */
1247 return 0;
1248 }
1249
1250 return 1;
1251 }
1252
1253 /* Given a cache of size SIZE, return the size of the struct (with variable
1254 length array) in bytes. */
1255
1256 static size_t
1257 symbol_cache_byte_size (unsigned int size)
1258 {
1259 return (sizeof (struct block_symbol_cache)
1260 + ((size - 1) * sizeof (struct symbol_cache_slot)));
1261 }
1262
1263 /* Resize CACHE. */
1264
1265 static void
1266 resize_symbol_cache (struct symbol_cache *cache, unsigned int new_size)
1267 {
1268 /* If there's no change in size, don't do anything.
1269 All caches have the same size, so we can just compare with the size
1270 of the global symbols cache. */
1271 if ((cache->global_symbols != NULL
1272 && cache->global_symbols->size == new_size)
1273 || (cache->global_symbols == NULL
1274 && new_size == 0))
1275 return;
1276
1277 xfree (cache->global_symbols);
1278 xfree (cache->static_symbols);
1279
1280 if (new_size == 0)
1281 {
1282 cache->global_symbols = NULL;
1283 cache->static_symbols = NULL;
1284 }
1285 else
1286 {
1287 size_t total_size = symbol_cache_byte_size (new_size);
1288
1289 cache->global_symbols = xcalloc (1, total_size);
1290 cache->static_symbols = xcalloc (1, total_size);
1291 cache->global_symbols->size = new_size;
1292 cache->static_symbols->size = new_size;
1293 }
1294 }
1295
1296 /* Make a symbol cache of size SIZE. */
1297
1298 static struct symbol_cache *
1299 make_symbol_cache (unsigned int size)
1300 {
1301 struct symbol_cache *cache;
1302
1303 cache = XCNEW (struct symbol_cache);
1304 resize_symbol_cache (cache, symbol_cache_size);
1305 return cache;
1306 }
1307
1308 /* Free the space used by CACHE. */
1309
1310 static void
1311 free_symbol_cache (struct symbol_cache *cache)
1312 {
1313 xfree (cache->global_symbols);
1314 xfree (cache->static_symbols);
1315 xfree (cache);
1316 }
1317
1318 /* Return the symbol cache of PSPACE.
1319 Create one if it doesn't exist yet. */
1320
1321 static struct symbol_cache *
1322 get_symbol_cache (struct program_space *pspace)
1323 {
1324 struct symbol_cache *cache = program_space_data (pspace, symbol_cache_key);
1325
1326 if (cache == NULL)
1327 {
1328 cache = make_symbol_cache (symbol_cache_size);
1329 set_program_space_data (pspace, symbol_cache_key, cache);
1330 }
1331
1332 return cache;
1333 }
1334
1335 /* Delete the symbol cache of PSPACE.
1336 Called when PSPACE is destroyed. */
1337
1338 static void
1339 symbol_cache_cleanup (struct program_space *pspace, void *data)
1340 {
1341 struct symbol_cache *cache = data;
1342
1343 free_symbol_cache (cache);
1344 }
1345
1346 /* Set the size of the symbol cache in all program spaces. */
1347
1348 static void
1349 set_symbol_cache_size (unsigned int new_size)
1350 {
1351 struct program_space *pspace;
1352
1353 ALL_PSPACES (pspace)
1354 {
1355 struct symbol_cache *cache
1356 = program_space_data (pspace, symbol_cache_key);
1357
1358 /* The pspace could have been created but not have a cache yet. */
1359 if (cache != NULL)
1360 resize_symbol_cache (cache, new_size);
1361 }
1362 }
1363
1364 /* Called when symbol-cache-size is set. */
1365
1366 static void
1367 set_symbol_cache_size_handler (char *args, int from_tty,
1368 struct cmd_list_element *c)
1369 {
1370 if (new_symbol_cache_size > MAX_SYMBOL_CACHE_SIZE)
1371 {
1372 /* Restore the previous value.
1373 This is the value the "show" command prints. */
1374 new_symbol_cache_size = symbol_cache_size;
1375
1376 error (_("Symbol cache size is too large, max is %u."),
1377 MAX_SYMBOL_CACHE_SIZE);
1378 }
1379 symbol_cache_size = new_symbol_cache_size;
1380
1381 set_symbol_cache_size (symbol_cache_size);
1382 }
1383
1384 /* Lookup symbol NAME,DOMAIN in BLOCK in the symbol cache of PSPACE.
1385 OBJFILE_CONTEXT is the current objfile, which may be NULL.
1386 The result is the symbol if found, SYMBOL_LOOKUP_FAILED if a previous lookup
1387 failed (and thus this one will too), or NULL if the symbol is not present
1388 in the cache.
1389 *BSC_PTR, *SLOT_PTR are set to the cache and slot of the symbol, whether
1390 found or not found. */
1391
1392 static struct symbol *
1393 symbol_cache_lookup (struct symbol_cache *cache,
1394 struct objfile *objfile_context, int block,
1395 const char *name, domain_enum domain,
1396 struct block_symbol_cache **bsc_ptr,
1397 struct symbol_cache_slot **slot_ptr)
1398 {
1399 struct block_symbol_cache *bsc;
1400 unsigned int hash;
1401 struct symbol_cache_slot *slot;
1402
1403 if (block == GLOBAL_BLOCK)
1404 bsc = cache->global_symbols;
1405 else
1406 bsc = cache->static_symbols;
1407 if (bsc == NULL)
1408 {
1409 *bsc_ptr = NULL;
1410 *slot_ptr = NULL;
1411 return NULL;
1412 }
1413
1414 hash = hash_symbol_entry (objfile_context, name, domain);
1415 slot = bsc->symbols + hash % bsc->size;
1416 *bsc_ptr = bsc;
1417 *slot_ptr = slot;
1418
1419 if (eq_symbol_entry (slot, objfile_context, name, domain))
1420 {
1421 if (symbol_lookup_debug)
1422 fprintf_unfiltered (gdb_stdlog,
1423 "%s block symbol cache hit%s for %s, %s\n",
1424 block == GLOBAL_BLOCK ? "Global" : "Static",
1425 slot->state == SYMBOL_SLOT_NOT_FOUND
1426 ? " (not found)" : "",
1427 name, domain_name (domain));
1428 ++bsc->hits;
1429 if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1430 return SYMBOL_LOOKUP_FAILED;
1431 return slot->value.found;
1432 }
1433
1434 if (symbol_lookup_debug)
1435 {
1436 fprintf_unfiltered (gdb_stdlog,
1437 "%s block symbol cache miss for %s, %s\n",
1438 block == GLOBAL_BLOCK ? "Global" : "Static",
1439 name, domain_name (domain));
1440 }
1441 ++bsc->misses;
1442 return NULL;
1443 }
1444
1445 /* Clear out SLOT. */
1446
1447 static void
1448 symbol_cache_clear_slot (struct symbol_cache_slot *slot)
1449 {
1450 if (slot->state == SYMBOL_SLOT_NOT_FOUND)
1451 xfree (slot->value.not_found.name);
1452 slot->state = SYMBOL_SLOT_UNUSED;
1453 }
1454
1455 /* Mark SYMBOL as found in SLOT.
1456 OBJFILE_CONTEXT is the current objfile when the lookup was done, or NULL
1457 if it's not needed to distinguish lookups (STATIC_BLOCK). It is *not*
1458 necessarily the objfile the symbol was found in. */
1459
1460 static void
1461 symbol_cache_mark_found (struct block_symbol_cache *bsc,
1462 struct symbol_cache_slot *slot,
1463 struct objfile *objfile_context,
1464 struct symbol *symbol)
1465 {
1466 if (bsc == NULL)
1467 return;
1468 if (slot->state != SYMBOL_SLOT_UNUSED)
1469 {
1470 ++bsc->collisions;
1471 symbol_cache_clear_slot (slot);
1472 }
1473 slot->state = SYMBOL_SLOT_FOUND;
1474 slot->objfile_context = objfile_context;
1475 slot->value.found = symbol;
1476 }
1477
1478 /* Mark symbol NAME, DOMAIN as not found in SLOT.
1479 OBJFILE_CONTEXT is the current objfile when the lookup was done, or NULL
1480 if it's not needed to distinguish lookups (STATIC_BLOCK). */
1481
1482 static void
1483 symbol_cache_mark_not_found (struct block_symbol_cache *bsc,
1484 struct symbol_cache_slot *slot,
1485 struct objfile *objfile_context,
1486 const char *name, domain_enum domain)
1487 {
1488 if (bsc == NULL)
1489 return;
1490 if (slot->state != SYMBOL_SLOT_UNUSED)
1491 {
1492 ++bsc->collisions;
1493 symbol_cache_clear_slot (slot);
1494 }
1495 slot->state = SYMBOL_SLOT_NOT_FOUND;
1496 slot->objfile_context = objfile_context;
1497 slot->value.not_found.name = xstrdup (name);
1498 slot->value.not_found.domain = domain;
1499 }
1500
1501 /* Flush the symbol cache of PSPACE. */
1502
1503 static void
1504 symbol_cache_flush (struct program_space *pspace)
1505 {
1506 struct symbol_cache *cache = program_space_data (pspace, symbol_cache_key);
1507 int pass;
1508 size_t total_size;
1509
1510 if (cache == NULL)
1511 return;
1512 if (cache->global_symbols == NULL)
1513 {
1514 gdb_assert (symbol_cache_size == 0);
1515 gdb_assert (cache->static_symbols == NULL);
1516 return;
1517 }
1518
1519 /* If the cache is untouched since the last flush, early exit.
1520 This is important for performance during the startup of a program linked
1521 with 100s (or 1000s) of shared libraries. */
1522 if (cache->global_symbols->misses == 0
1523 && cache->static_symbols->misses == 0)
1524 return;
1525
1526 gdb_assert (cache->global_symbols->size == symbol_cache_size);
1527 gdb_assert (cache->static_symbols->size == symbol_cache_size);
1528
1529 for (pass = 0; pass < 2; ++pass)
1530 {
1531 struct block_symbol_cache *bsc
1532 = pass == 0 ? cache->global_symbols : cache->static_symbols;
1533 unsigned int i;
1534
1535 for (i = 0; i < bsc->size; ++i)
1536 symbol_cache_clear_slot (&bsc->symbols[i]);
1537 }
1538
1539 cache->global_symbols->hits = 0;
1540 cache->global_symbols->misses = 0;
1541 cache->global_symbols->collisions = 0;
1542 cache->static_symbols->hits = 0;
1543 cache->static_symbols->misses = 0;
1544 cache->static_symbols->collisions = 0;
1545 }
1546
1547 /* Dump CACHE. */
1548
1549 static void
1550 symbol_cache_dump (const struct symbol_cache *cache)
1551 {
1552 int pass;
1553
1554 if (cache->global_symbols == NULL)
1555 {
1556 printf_filtered (" <disabled>\n");
1557 return;
1558 }
1559
1560 for (pass = 0; pass < 2; ++pass)
1561 {
1562 const struct block_symbol_cache *bsc
1563 = pass == 0 ? cache->global_symbols : cache->static_symbols;
1564 unsigned int i;
1565
1566 if (pass == 0)
1567 printf_filtered ("Global symbols:\n");
1568 else
1569 printf_filtered ("Static symbols:\n");
1570
1571 for (i = 0; i < bsc->size; ++i)
1572 {
1573 const struct symbol_cache_slot *slot = &bsc->symbols[i];
1574
1575 QUIT;
1576
1577 switch (slot->state)
1578 {
1579 case SYMBOL_SLOT_UNUSED:
1580 break;
1581 case SYMBOL_SLOT_NOT_FOUND:
1582 printf_filtered (" [%-4u] = %s, %s (not found)\n", i,
1583 host_address_to_string (slot->objfile_context),
1584 slot->value.not_found.name);
1585 break;
1586 case SYMBOL_SLOT_FOUND:
1587 printf_filtered (" [%-4u] = %s, %s\n", i,
1588 host_address_to_string (slot->objfile_context),
1589 SYMBOL_PRINT_NAME (slot->value.found));
1590 break;
1591 }
1592 }
1593 }
1594 }
1595
1596 /* The "mt print symbol-cache" command. */
1597
1598 static void
1599 maintenance_print_symbol_cache (char *args, int from_tty)
1600 {
1601 struct program_space *pspace;
1602
1603 ALL_PSPACES (pspace)
1604 {
1605 struct symbol_cache *cache;
1606
1607 printf_filtered (_("Symbol cache for pspace %d\n%s:\n"),
1608 pspace->num,
1609 pspace->symfile_object_file != NULL
1610 ? objfile_name (pspace->symfile_object_file)
1611 : "(no object file)");
1612
1613 /* If the cache hasn't been created yet, avoid creating one. */
1614 cache = program_space_data (pspace, symbol_cache_key);
1615 if (cache == NULL)
1616 printf_filtered (" <empty>\n");
1617 else
1618 symbol_cache_dump (cache);
1619 }
1620 }
1621
1622 /* The "mt flush-symbol-cache" command. */
1623
1624 static void
1625 maintenance_flush_symbol_cache (char *args, int from_tty)
1626 {
1627 struct program_space *pspace;
1628
1629 ALL_PSPACES (pspace)
1630 {
1631 symbol_cache_flush (pspace);
1632 }
1633 }
1634
1635 /* Print usage statistics of CACHE. */
1636
1637 static void
1638 symbol_cache_stats (struct symbol_cache *cache)
1639 {
1640 int pass;
1641
1642 if (cache->global_symbols == NULL)
1643 {
1644 printf_filtered (" <disabled>\n");
1645 return;
1646 }
1647
1648 for (pass = 0; pass < 2; ++pass)
1649 {
1650 const struct block_symbol_cache *bsc
1651 = pass == 0 ? cache->global_symbols : cache->static_symbols;
1652
1653 QUIT;
1654
1655 if (pass == 0)
1656 printf_filtered ("Global block cache stats:\n");
1657 else
1658 printf_filtered ("Static block cache stats:\n");
1659
1660 printf_filtered (" size: %u\n", bsc->size);
1661 printf_filtered (" hits: %u\n", bsc->hits);
1662 printf_filtered (" misses: %u\n", bsc->misses);
1663 printf_filtered (" collisions: %u\n", bsc->collisions);
1664 }
1665 }
1666
1667 /* The "mt print symbol-cache-statistics" command. */
1668
1669 static void
1670 maintenance_print_symbol_cache_statistics (char *args, int from_tty)
1671 {
1672 struct program_space *pspace;
1673
1674 ALL_PSPACES (pspace)
1675 {
1676 struct symbol_cache *cache;
1677
1678 printf_filtered (_("Symbol cache statistics for pspace %d\n%s:\n"),
1679 pspace->num,
1680 pspace->symfile_object_file != NULL
1681 ? objfile_name (pspace->symfile_object_file)
1682 : "(no object file)");
1683
1684 /* If the cache hasn't been created yet, avoid creating one. */
1685 cache = program_space_data (pspace, symbol_cache_key);
1686 if (cache == NULL)
1687 printf_filtered (" empty, no stats available\n");
1688 else
1689 symbol_cache_stats (cache);
1690 }
1691 }
1692
1693 /* This module's 'new_objfile' observer. */
1694
1695 static void
1696 symtab_new_objfile_observer (struct objfile *objfile)
1697 {
1698 /* Ideally we'd use OBJFILE->pspace, but OBJFILE may be NULL. */
1699 symbol_cache_flush (current_program_space);
1700 }
1701
1702 /* This module's 'free_objfile' observer. */
1703
1704 static void
1705 symtab_free_objfile_observer (struct objfile *objfile)
1706 {
1707 symbol_cache_flush (objfile->pspace);
1708 }
1709 \f
1710 /* Debug symbols usually don't have section information. We need to dig that
1711 out of the minimal symbols and stash that in the debug symbol. */
1712
1713 void
1714 fixup_section (struct general_symbol_info *ginfo,
1715 CORE_ADDR addr, struct objfile *objfile)
1716 {
1717 struct minimal_symbol *msym;
1718
1719 /* First, check whether a minimal symbol with the same name exists
1720 and points to the same address. The address check is required
1721 e.g. on PowerPC64, where the minimal symbol for a function will
1722 point to the function descriptor, while the debug symbol will
1723 point to the actual function code. */
1724 msym = lookup_minimal_symbol_by_pc_name (addr, ginfo->name, objfile);
1725 if (msym)
1726 ginfo->section = MSYMBOL_SECTION (msym);
1727 else
1728 {
1729 /* Static, function-local variables do appear in the linker
1730 (minimal) symbols, but are frequently given names that won't
1731 be found via lookup_minimal_symbol(). E.g., it has been
1732 observed in frv-uclinux (ELF) executables that a static,
1733 function-local variable named "foo" might appear in the
1734 linker symbols as "foo.6" or "foo.3". Thus, there is no
1735 point in attempting to extend the lookup-by-name mechanism to
1736 handle this case due to the fact that there can be multiple
1737 names.
1738
1739 So, instead, search the section table when lookup by name has
1740 failed. The ``addr'' and ``endaddr'' fields may have already
1741 been relocated. If so, the relocation offset (i.e. the
1742 ANOFFSET value) needs to be subtracted from these values when
1743 performing the comparison. We unconditionally subtract it,
1744 because, when no relocation has been performed, the ANOFFSET
1745 value will simply be zero.
1746
1747 The address of the symbol whose section we're fixing up HAS
1748 NOT BEEN adjusted (relocated) yet. It can't have been since
1749 the section isn't yet known and knowing the section is
1750 necessary in order to add the correct relocation value. In
1751 other words, we wouldn't even be in this function (attempting
1752 to compute the section) if it were already known.
1753
1754 Note that it is possible to search the minimal symbols
1755 (subtracting the relocation value if necessary) to find the
1756 matching minimal symbol, but this is overkill and much less
1757 efficient. It is not necessary to find the matching minimal
1758 symbol, only its section.
1759
1760 Note that this technique (of doing a section table search)
1761 can fail when unrelocated section addresses overlap. For
1762 this reason, we still attempt a lookup by name prior to doing
1763 a search of the section table. */
1764
1765 struct obj_section *s;
1766 int fallback = -1;
1767
1768 ALL_OBJFILE_OSECTIONS (objfile, s)
1769 {
1770 int idx = s - objfile->sections;
1771 CORE_ADDR offset = ANOFFSET (objfile->section_offsets, idx);
1772
1773 if (fallback == -1)
1774 fallback = idx;
1775
1776 if (obj_section_addr (s) - offset <= addr
1777 && addr < obj_section_endaddr (s) - offset)
1778 {
1779 ginfo->section = idx;
1780 return;
1781 }
1782 }
1783
1784 /* If we didn't find the section, assume it is in the first
1785 section. If there is no allocated section, then it hardly
1786 matters what we pick, so just pick zero. */
1787 if (fallback == -1)
1788 ginfo->section = 0;
1789 else
1790 ginfo->section = fallback;
1791 }
1792 }
1793
1794 struct symbol *
1795 fixup_symbol_section (struct symbol *sym, struct objfile *objfile)
1796 {
1797 CORE_ADDR addr;
1798
1799 if (!sym)
1800 return NULL;
1801
1802 if (!SYMBOL_OBJFILE_OWNED (sym))
1803 return sym;
1804
1805 /* We either have an OBJFILE, or we can get at it from the sym's
1806 symtab. Anything else is a bug. */
1807 gdb_assert (objfile || symbol_symtab (sym));
1808
1809 if (objfile == NULL)
1810 objfile = symbol_objfile (sym);
1811
1812 if (SYMBOL_OBJ_SECTION (objfile, sym))
1813 return sym;
1814
1815 /* We should have an objfile by now. */
1816 gdb_assert (objfile);
1817
1818 switch (SYMBOL_CLASS (sym))
1819 {
1820 case LOC_STATIC:
1821 case LOC_LABEL:
1822 addr = SYMBOL_VALUE_ADDRESS (sym);
1823 break;
1824 case LOC_BLOCK:
1825 addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1826 break;
1827
1828 default:
1829 /* Nothing else will be listed in the minsyms -- no use looking
1830 it up. */
1831 return sym;
1832 }
1833
1834 fixup_section (&sym->ginfo, addr, objfile);
1835
1836 return sym;
1837 }
1838
1839 /* Compute the demangled form of NAME as used by the various symbol
1840 lookup functions. The result is stored in *RESULT_NAME. Returns a
1841 cleanup which can be used to clean up the result.
1842
1843 For Ada, this function just sets *RESULT_NAME to NAME, unmodified.
1844 Normally, Ada symbol lookups are performed using the encoded name
1845 rather than the demangled name, and so it might seem to make sense
1846 for this function to return an encoded version of NAME.
1847 Unfortunately, we cannot do this, because this function is used in
1848 circumstances where it is not appropriate to try to encode NAME.
1849 For instance, when displaying the frame info, we demangle the name
1850 of each parameter, and then perform a symbol lookup inside our
1851 function using that demangled name. In Ada, certain functions
1852 have internally-generated parameters whose name contain uppercase
1853 characters. Encoding those name would result in those uppercase
1854 characters to become lowercase, and thus cause the symbol lookup
1855 to fail. */
1856
1857 struct cleanup *
1858 demangle_for_lookup (const char *name, enum language lang,
1859 const char **result_name)
1860 {
1861 char *demangled_name = NULL;
1862 const char *modified_name = NULL;
1863 struct cleanup *cleanup = make_cleanup (null_cleanup, 0);
1864
1865 modified_name = name;
1866
1867 /* If we are using C++, D, Go, or Java, demangle the name before doing a
1868 lookup, so we can always binary search. */
1869 if (lang == language_cplus)
1870 {
1871 demangled_name = gdb_demangle (name, DMGL_ANSI | DMGL_PARAMS);
1872 if (demangled_name)
1873 {
1874 modified_name = demangled_name;
1875 make_cleanup (xfree, demangled_name);
1876 }
1877 else
1878 {
1879 /* If we were given a non-mangled name, canonicalize it
1880 according to the language (so far only for C++). */
1881 demangled_name = cp_canonicalize_string (name);
1882 if (demangled_name)
1883 {
1884 modified_name = demangled_name;
1885 make_cleanup (xfree, demangled_name);
1886 }
1887 }
1888 }
1889 else if (lang == language_java)
1890 {
1891 demangled_name = gdb_demangle (name,
1892 DMGL_ANSI | DMGL_PARAMS | DMGL_JAVA);
1893 if (demangled_name)
1894 {
1895 modified_name = demangled_name;
1896 make_cleanup (xfree, demangled_name);
1897 }
1898 }
1899 else if (lang == language_d)
1900 {
1901 demangled_name = d_demangle (name, 0);
1902 if (demangled_name)
1903 {
1904 modified_name = demangled_name;
1905 make_cleanup (xfree, demangled_name);
1906 }
1907 }
1908 else if (lang == language_go)
1909 {
1910 demangled_name = go_demangle (name, 0);
1911 if (demangled_name)
1912 {
1913 modified_name = demangled_name;
1914 make_cleanup (xfree, demangled_name);
1915 }
1916 }
1917
1918 *result_name = modified_name;
1919 return cleanup;
1920 }
1921
1922 /* See symtab.h.
1923
1924 This function (or rather its subordinates) have a bunch of loops and
1925 it would seem to be attractive to put in some QUIT's (though I'm not really
1926 sure whether it can run long enough to be really important). But there
1927 are a few calls for which it would appear to be bad news to quit
1928 out of here: e.g., find_proc_desc in alpha-mdebug-tdep.c. (Note
1929 that there is C++ code below which can error(), but that probably
1930 doesn't affect these calls since they are looking for a known
1931 variable and thus can probably assume it will never hit the C++
1932 code). */
1933
1934 struct symbol *
1935 lookup_symbol_in_language (const char *name, const struct block *block,
1936 const domain_enum domain, enum language lang,
1937 struct field_of_this_result *is_a_field_of_this)
1938 {
1939 const char *modified_name;
1940 struct symbol *returnval;
1941 struct cleanup *cleanup = demangle_for_lookup (name, lang, &modified_name);
1942
1943 returnval = lookup_symbol_aux (modified_name, block, domain, lang,
1944 is_a_field_of_this);
1945 do_cleanups (cleanup);
1946
1947 return returnval;
1948 }
1949
1950 /* See symtab.h. */
1951
1952 struct symbol *
1953 lookup_symbol (const char *name, const struct block *block,
1954 domain_enum domain,
1955 struct field_of_this_result *is_a_field_of_this)
1956 {
1957 return lookup_symbol_in_language (name, block, domain,
1958 current_language->la_language,
1959 is_a_field_of_this);
1960 }
1961
1962 /* See symtab.h. */
1963
1964 struct symbol *
1965 lookup_language_this (const struct language_defn *lang,
1966 const struct block *block)
1967 {
1968 if (lang->la_name_of_this == NULL || block == NULL)
1969 return NULL;
1970
1971 if (symbol_lookup_debug > 1)
1972 {
1973 struct objfile *objfile = lookup_objfile_from_block (block);
1974
1975 fprintf_unfiltered (gdb_stdlog,
1976 "lookup_language_this (%s, %s (objfile %s))",
1977 lang->la_name, host_address_to_string (block),
1978 objfile_debug_name (objfile));
1979 }
1980
1981 while (block)
1982 {
1983 struct symbol *sym;
1984
1985 sym = block_lookup_symbol (block, lang->la_name_of_this, VAR_DOMAIN);
1986 if (sym != NULL)
1987 {
1988 if (symbol_lookup_debug > 1)
1989 {
1990 fprintf_unfiltered (gdb_stdlog, " = %s (%s, block %s)\n",
1991 SYMBOL_PRINT_NAME (sym),
1992 host_address_to_string (sym),
1993 host_address_to_string (block));
1994 }
1995 block_found = block;
1996 return sym;
1997 }
1998 if (BLOCK_FUNCTION (block))
1999 break;
2000 block = BLOCK_SUPERBLOCK (block);
2001 }
2002
2003 if (symbol_lookup_debug > 1)
2004 fprintf_unfiltered (gdb_stdlog, " = NULL\n");
2005 return NULL;
2006 }
2007
2008 /* Given TYPE, a structure/union,
2009 return 1 if the component named NAME from the ultimate target
2010 structure/union is defined, otherwise, return 0. */
2011
2012 static int
2013 check_field (struct type *type, const char *name,
2014 struct field_of_this_result *is_a_field_of_this)
2015 {
2016 int i;
2017
2018 /* The type may be a stub. */
2019 CHECK_TYPEDEF (type);
2020
2021 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2022 {
2023 const char *t_field_name = TYPE_FIELD_NAME (type, i);
2024
2025 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2026 {
2027 is_a_field_of_this->type = type;
2028 is_a_field_of_this->field = &TYPE_FIELD (type, i);
2029 return 1;
2030 }
2031 }
2032
2033 /* C++: If it was not found as a data field, then try to return it
2034 as a pointer to a method. */
2035
2036 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2037 {
2038 if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2039 {
2040 is_a_field_of_this->type = type;
2041 is_a_field_of_this->fn_field = &TYPE_FN_FIELDLIST (type, i);
2042 return 1;
2043 }
2044 }
2045
2046 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2047 if (check_field (TYPE_BASECLASS (type, i), name, is_a_field_of_this))
2048 return 1;
2049
2050 return 0;
2051 }
2052
2053 /* Behave like lookup_symbol except that NAME is the natural name
2054 (e.g., demangled name) of the symbol that we're looking for. */
2055
2056 static struct symbol *
2057 lookup_symbol_aux (const char *name, const struct block *block,
2058 const domain_enum domain, enum language language,
2059 struct field_of_this_result *is_a_field_of_this)
2060 {
2061 struct symbol *sym;
2062 const struct language_defn *langdef;
2063
2064 if (symbol_lookup_debug)
2065 {
2066 struct objfile *objfile = lookup_objfile_from_block (block);
2067
2068 fprintf_unfiltered (gdb_stdlog,
2069 "lookup_symbol_aux (%s, %s (objfile %s), %s, %s)\n",
2070 name, host_address_to_string (block),
2071 objfile != NULL
2072 ? objfile_debug_name (objfile) : "NULL",
2073 domain_name (domain), language_str (language));
2074 }
2075
2076 /* Initialize block_found so that the language la_lookup_symbol_nonlocal
2077 routines don't have to set it (to NULL) if a primitive type is found.
2078 We do this early so that block_found is also NULL if no symbol is
2079 found (though this is not part of the API, and callers cannot assume
2080 this). */
2081 block_found = NULL;
2082
2083 /* Make sure we do something sensible with is_a_field_of_this, since
2084 the callers that set this parameter to some non-null value will
2085 certainly use it later. If we don't set it, the contents of
2086 is_a_field_of_this are undefined. */
2087 if (is_a_field_of_this != NULL)
2088 memset (is_a_field_of_this, 0, sizeof (*is_a_field_of_this));
2089
2090 /* Search specified block and its superiors. Don't search
2091 STATIC_BLOCK or GLOBAL_BLOCK. */
2092
2093 sym = lookup_local_symbol (name, block, domain, language);
2094 if (sym != NULL)
2095 {
2096 if (symbol_lookup_debug)
2097 {
2098 fprintf_unfiltered (gdb_stdlog, "lookup_symbol_aux (...) = %s\n",
2099 host_address_to_string (sym));
2100 }
2101 return sym;
2102 }
2103
2104 /* If requested to do so by the caller and if appropriate for LANGUAGE,
2105 check to see if NAME is a field of `this'. */
2106
2107 langdef = language_def (language);
2108
2109 /* Don't do this check if we are searching for a struct. It will
2110 not be found by check_field, but will be found by other
2111 means. */
2112 if (is_a_field_of_this != NULL && domain != STRUCT_DOMAIN)
2113 {
2114 struct symbol *sym = lookup_language_this (langdef, block);
2115
2116 if (sym)
2117 {
2118 struct type *t = sym->type;
2119
2120 /* I'm not really sure that type of this can ever
2121 be typedefed; just be safe. */
2122 CHECK_TYPEDEF (t);
2123 if (TYPE_CODE (t) == TYPE_CODE_PTR
2124 || TYPE_CODE (t) == TYPE_CODE_REF)
2125 t = TYPE_TARGET_TYPE (t);
2126
2127 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2128 && TYPE_CODE (t) != TYPE_CODE_UNION)
2129 error (_("Internal error: `%s' is not an aggregate"),
2130 langdef->la_name_of_this);
2131
2132 if (check_field (t, name, is_a_field_of_this))
2133 {
2134 if (symbol_lookup_debug)
2135 {
2136 fprintf_unfiltered (gdb_stdlog,
2137 "lookup_symbol_aux (...) = NULL\n");
2138 }
2139 return NULL;
2140 }
2141 }
2142 }
2143
2144 /* Now do whatever is appropriate for LANGUAGE to look
2145 up static and global variables. */
2146
2147 sym = langdef->la_lookup_symbol_nonlocal (langdef, name, block, domain);
2148 if (sym != NULL)
2149 {
2150 if (symbol_lookup_debug)
2151 {
2152 fprintf_unfiltered (gdb_stdlog, "lookup_symbol_aux (...) = %s\n",
2153 host_address_to_string (sym));
2154 }
2155 return sym;
2156 }
2157
2158 /* Now search all static file-level symbols. Not strictly correct,
2159 but more useful than an error. */
2160
2161 sym = lookup_static_symbol (name, domain);
2162 if (symbol_lookup_debug)
2163 {
2164 fprintf_unfiltered (gdb_stdlog, "lookup_symbol_aux (...) = %s\n",
2165 sym != NULL ? host_address_to_string (sym) : "NULL");
2166 }
2167 return sym;
2168 }
2169
2170 /* Check to see if the symbol is defined in BLOCK or its superiors.
2171 Don't search STATIC_BLOCK or GLOBAL_BLOCK. */
2172
2173 static struct symbol *
2174 lookup_local_symbol (const char *name, const struct block *block,
2175 const domain_enum domain,
2176 enum language language)
2177 {
2178 struct symbol *sym;
2179 const struct block *static_block = block_static_block (block);
2180 const char *scope = block_scope (block);
2181
2182 /* Check if either no block is specified or it's a global block. */
2183
2184 if (static_block == NULL)
2185 return NULL;
2186
2187 while (block != static_block)
2188 {
2189 sym = lookup_symbol_in_block (name, block, domain);
2190 if (sym != NULL)
2191 return sym;
2192
2193 if (language == language_cplus || language == language_fortran)
2194 {
2195 sym = cp_lookup_symbol_imports_or_template (scope, name, block,
2196 domain);
2197 if (sym != NULL)
2198 return sym;
2199 }
2200
2201 if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block))
2202 break;
2203 block = BLOCK_SUPERBLOCK (block);
2204 }
2205
2206 /* We've reached the end of the function without finding a result. */
2207
2208 return NULL;
2209 }
2210
2211 /* See symtab.h. */
2212
2213 struct objfile *
2214 lookup_objfile_from_block (const struct block *block)
2215 {
2216 struct objfile *obj;
2217 struct compunit_symtab *cust;
2218
2219 if (block == NULL)
2220 return NULL;
2221
2222 block = block_global_block (block);
2223 /* Look through all blockvectors. */
2224 ALL_COMPUNITS (obj, cust)
2225 if (block == BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
2226 GLOBAL_BLOCK))
2227 {
2228 if (obj->separate_debug_objfile_backlink)
2229 obj = obj->separate_debug_objfile_backlink;
2230
2231 return obj;
2232 }
2233
2234 return NULL;
2235 }
2236
2237 /* See symtab.h. */
2238
2239 struct symbol *
2240 lookup_symbol_in_block (const char *name, const struct block *block,
2241 const domain_enum domain)
2242 {
2243 struct symbol *sym;
2244
2245 if (symbol_lookup_debug > 1)
2246 {
2247 struct objfile *objfile = lookup_objfile_from_block (block);
2248
2249 fprintf_unfiltered (gdb_stdlog,
2250 "lookup_symbol_in_block (%s, %s (objfile %s), %s)",
2251 name, host_address_to_string (block),
2252 objfile_debug_name (objfile),
2253 domain_name (domain));
2254 }
2255
2256 sym = block_lookup_symbol (block, name, domain);
2257 if (sym)
2258 {
2259 if (symbol_lookup_debug > 1)
2260 {
2261 fprintf_unfiltered (gdb_stdlog, " = %s\n",
2262 host_address_to_string (sym));
2263 }
2264 block_found = block;
2265 return fixup_symbol_section (sym, NULL);
2266 }
2267
2268 if (symbol_lookup_debug > 1)
2269 fprintf_unfiltered (gdb_stdlog, " = NULL\n");
2270 return NULL;
2271 }
2272
2273 /* See symtab.h. */
2274
2275 struct symbol *
2276 lookup_global_symbol_from_objfile (struct objfile *main_objfile,
2277 const char *name,
2278 const domain_enum domain)
2279 {
2280 struct objfile *objfile;
2281
2282 for (objfile = main_objfile;
2283 objfile;
2284 objfile = objfile_separate_debug_iterate (main_objfile, objfile))
2285 {
2286 struct symbol *sym = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK,
2287 name, domain);
2288
2289 if (sym != NULL)
2290 return sym;
2291 }
2292
2293 return NULL;
2294 }
2295
2296 /* Check to see if the symbol is defined in one of the OBJFILE's
2297 symtabs. BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
2298 depending on whether or not we want to search global symbols or
2299 static symbols. */
2300
2301 static struct symbol *
2302 lookup_symbol_in_objfile_symtabs (struct objfile *objfile, int block_index,
2303 const char *name, const domain_enum domain)
2304 {
2305 struct compunit_symtab *cust;
2306
2307 gdb_assert (block_index == GLOBAL_BLOCK || block_index == STATIC_BLOCK);
2308
2309 if (symbol_lookup_debug > 1)
2310 {
2311 fprintf_unfiltered (gdb_stdlog,
2312 "lookup_symbol_in_objfile_symtabs (%s, %s, %s, %s)",
2313 objfile_debug_name (objfile),
2314 block_index == GLOBAL_BLOCK
2315 ? "GLOBAL_BLOCK" : "STATIC_BLOCK",
2316 name, domain_name (domain));
2317 }
2318
2319 ALL_OBJFILE_COMPUNITS (objfile, cust)
2320 {
2321 const struct blockvector *bv;
2322 const struct block *block;
2323 struct symbol *sym;
2324
2325 bv = COMPUNIT_BLOCKVECTOR (cust);
2326 block = BLOCKVECTOR_BLOCK (bv, block_index);
2327 sym = block_lookup_symbol_primary (block, name, domain);
2328 if (sym)
2329 {
2330 if (symbol_lookup_debug > 1)
2331 {
2332 fprintf_unfiltered (gdb_stdlog, " = %s (block %s)\n",
2333 host_address_to_string (sym),
2334 host_address_to_string (block));
2335 }
2336 block_found = block;
2337 return fixup_symbol_section (sym, objfile);
2338 }
2339 }
2340
2341 if (symbol_lookup_debug > 1)
2342 fprintf_unfiltered (gdb_stdlog, " = NULL\n");
2343 return NULL;
2344 }
2345
2346 /* Wrapper around lookup_symbol_in_objfile_symtabs for search_symbols.
2347 Look up LINKAGE_NAME in DOMAIN in the global and static blocks of OBJFILE
2348 and all associated separate debug objfiles.
2349
2350 Normally we only look in OBJFILE, and not any separate debug objfiles
2351 because the outer loop will cause them to be searched too. This case is
2352 different. Here we're called from search_symbols where it will only
2353 call us for the the objfile that contains a matching minsym. */
2354
2355 static struct symbol *
2356 lookup_symbol_in_objfile_from_linkage_name (struct objfile *objfile,
2357 const char *linkage_name,
2358 domain_enum domain)
2359 {
2360 enum language lang = current_language->la_language;
2361 const char *modified_name;
2362 struct cleanup *cleanup = demangle_for_lookup (linkage_name, lang,
2363 &modified_name);
2364 struct objfile *main_objfile, *cur_objfile;
2365
2366 if (objfile->separate_debug_objfile_backlink)
2367 main_objfile = objfile->separate_debug_objfile_backlink;
2368 else
2369 main_objfile = objfile;
2370
2371 for (cur_objfile = main_objfile;
2372 cur_objfile;
2373 cur_objfile = objfile_separate_debug_iterate (main_objfile, cur_objfile))
2374 {
2375 struct symbol *sym;
2376
2377 sym = lookup_symbol_in_objfile_symtabs (cur_objfile, GLOBAL_BLOCK,
2378 modified_name, domain);
2379 if (sym == NULL)
2380 sym = lookup_symbol_in_objfile_symtabs (cur_objfile, STATIC_BLOCK,
2381 modified_name, domain);
2382 if (sym != NULL)
2383 {
2384 do_cleanups (cleanup);
2385 return sym;
2386 }
2387 }
2388
2389 do_cleanups (cleanup);
2390 return NULL;
2391 }
2392
2393 /* A helper function that throws an exception when a symbol was found
2394 in a psymtab but not in a symtab. */
2395
2396 static void ATTRIBUTE_NORETURN
2397 error_in_psymtab_expansion (int block_index, const char *name,
2398 struct compunit_symtab *cust)
2399 {
2400 error (_("\
2401 Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n\
2402 %s may be an inlined function, or may be a template function\n \
2403 (if a template, try specifying an instantiation: %s<type>)."),
2404 block_index == GLOBAL_BLOCK ? "global" : "static",
2405 name,
2406 symtab_to_filename_for_display (compunit_primary_filetab (cust)),
2407 name, name);
2408 }
2409
2410 /* A helper function for various lookup routines that interfaces with
2411 the "quick" symbol table functions. */
2412
2413 static struct symbol *
2414 lookup_symbol_via_quick_fns (struct objfile *objfile, int block_index,
2415 const char *name, const domain_enum domain)
2416 {
2417 struct compunit_symtab *cust;
2418 const struct blockvector *bv;
2419 const struct block *block;
2420 struct symbol *sym;
2421
2422 if (!objfile->sf)
2423 return NULL;
2424
2425 if (symbol_lookup_debug > 1)
2426 {
2427 fprintf_unfiltered (gdb_stdlog,
2428 "lookup_symbol_via_quick_fns (%s, %s, %s, %s)\n",
2429 objfile_debug_name (objfile),
2430 block_index == GLOBAL_BLOCK
2431 ? "GLOBAL_BLOCK" : "STATIC_BLOCK",
2432 name, domain_name (domain));
2433 }
2434
2435 cust = objfile->sf->qf->lookup_symbol (objfile, block_index, name, domain);
2436 if (cust == NULL)
2437 {
2438 if (symbol_lookup_debug > 1)
2439 {
2440 fprintf_unfiltered (gdb_stdlog,
2441 "lookup_symbol_via_quick_fns (...) = NULL\n");
2442 }
2443 return NULL;
2444 }
2445
2446 bv = COMPUNIT_BLOCKVECTOR (cust);
2447 block = BLOCKVECTOR_BLOCK (bv, block_index);
2448 sym = block_lookup_symbol (block, name, domain);
2449 if (!sym)
2450 error_in_psymtab_expansion (block_index, name, cust);
2451
2452 if (symbol_lookup_debug > 1)
2453 {
2454 fprintf_unfiltered (gdb_stdlog,
2455 "lookup_symbol_via_quick_fns (...) = %s (block %s)\n",
2456 host_address_to_string (sym),
2457 host_address_to_string (block));
2458 }
2459
2460 block_found = block;
2461 return fixup_symbol_section (sym, objfile);
2462 }
2463
2464 /* See symtab.h. */
2465
2466 struct symbol *
2467 basic_lookup_symbol_nonlocal (const struct language_defn *langdef,
2468 const char *name,
2469 const struct block *block,
2470 const domain_enum domain)
2471 {
2472 struct symbol *sym;
2473
2474 /* NOTE: carlton/2003-05-19: The comments below were written when
2475 this (or what turned into this) was part of lookup_symbol_aux;
2476 I'm much less worried about these questions now, since these
2477 decisions have turned out well, but I leave these comments here
2478 for posterity. */
2479
2480 /* NOTE: carlton/2002-12-05: There is a question as to whether or
2481 not it would be appropriate to search the current global block
2482 here as well. (That's what this code used to do before the
2483 is_a_field_of_this check was moved up.) On the one hand, it's
2484 redundant with the lookup in all objfiles search that happens
2485 next. On the other hand, if decode_line_1 is passed an argument
2486 like filename:var, then the user presumably wants 'var' to be
2487 searched for in filename. On the third hand, there shouldn't be
2488 multiple global variables all of which are named 'var', and it's
2489 not like decode_line_1 has ever restricted its search to only
2490 global variables in a single filename. All in all, only
2491 searching the static block here seems best: it's correct and it's
2492 cleanest. */
2493
2494 /* NOTE: carlton/2002-12-05: There's also a possible performance
2495 issue here: if you usually search for global symbols in the
2496 current file, then it would be slightly better to search the
2497 current global block before searching all the symtabs. But there
2498 are other factors that have a much greater effect on performance
2499 than that one, so I don't think we should worry about that for
2500 now. */
2501
2502 /* NOTE: dje/2014-10-26: The lookup in all objfiles search could skip
2503 the current objfile. Searching the current objfile first is useful
2504 for both matching user expectations as well as performance. */
2505
2506 sym = lookup_symbol_in_static_block (name, block, domain);
2507 if (sym != NULL)
2508 return sym;
2509
2510 /* If we didn't find a definition for a builtin type in the static block,
2511 search for it now. This is actually the right thing to do and can be
2512 a massive performance win. E.g., when debugging a program with lots of
2513 shared libraries we could search all of them only to find out the
2514 builtin type isn't defined in any of them. This is common for types
2515 like "void". */
2516 if (domain == VAR_DOMAIN)
2517 {
2518 struct gdbarch *gdbarch;
2519
2520 if (block == NULL)
2521 gdbarch = target_gdbarch ();
2522 else
2523 gdbarch = block_gdbarch (block);
2524 sym = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
2525 if (sym != NULL)
2526 return sym;
2527 }
2528
2529 return lookup_global_symbol (name, block, domain);
2530 }
2531
2532 /* See symtab.h. */
2533
2534 struct symbol *
2535 lookup_symbol_in_static_block (const char *name,
2536 const struct block *block,
2537 const domain_enum domain)
2538 {
2539 const struct block *static_block = block_static_block (block);
2540 struct symbol *sym;
2541
2542 if (static_block == NULL)
2543 return NULL;
2544
2545 if (symbol_lookup_debug)
2546 {
2547 struct objfile *objfile = lookup_objfile_from_block (static_block);
2548
2549 fprintf_unfiltered (gdb_stdlog,
2550 "lookup_symbol_in_static_block (%s, %s (objfile %s),"
2551 " %s)\n",
2552 name,
2553 host_address_to_string (block),
2554 objfile_debug_name (objfile),
2555 domain_name (domain));
2556 }
2557
2558 sym = lookup_symbol_in_block (name, static_block, domain);
2559 if (symbol_lookup_debug)
2560 {
2561 fprintf_unfiltered (gdb_stdlog,
2562 "lookup_symbol_in_static_block (...) = %s\n",
2563 sym != NULL ? host_address_to_string (sym) : "NULL");
2564 }
2565 return sym;
2566 }
2567
2568 /* Perform the standard symbol lookup of NAME in OBJFILE:
2569 1) First search expanded symtabs, and if not found
2570 2) Search the "quick" symtabs (partial or .gdb_index).
2571 BLOCK_INDEX is one of GLOBAL_BLOCK or STATIC_BLOCK. */
2572
2573 static struct symbol *
2574 lookup_symbol_in_objfile (struct objfile *objfile, int block_index,
2575 const char *name, const domain_enum domain)
2576 {
2577 struct symbol *result;
2578
2579 if (symbol_lookup_debug)
2580 {
2581 fprintf_unfiltered (gdb_stdlog,
2582 "lookup_symbol_in_objfile (%s, %s, %s, %s)\n",
2583 objfile_debug_name (objfile),
2584 block_index == GLOBAL_BLOCK
2585 ? "GLOBAL_BLOCK" : "STATIC_BLOCK",
2586 name, domain_name (domain));
2587 }
2588
2589 result = lookup_symbol_in_objfile_symtabs (objfile, block_index,
2590 name, domain);
2591 if (result != NULL)
2592 {
2593 if (symbol_lookup_debug)
2594 {
2595 fprintf_unfiltered (gdb_stdlog,
2596 "lookup_symbol_in_objfile (...) = %s"
2597 " (in symtabs)\n",
2598 host_address_to_string (result));
2599 }
2600 return result;
2601 }
2602
2603 result = lookup_symbol_via_quick_fns (objfile, block_index,
2604 name, domain);
2605 if (symbol_lookup_debug)
2606 {
2607 fprintf_unfiltered (gdb_stdlog,
2608 "lookup_symbol_in_objfile (...) = %s%s\n",
2609 result != NULL
2610 ? host_address_to_string (result)
2611 : "NULL",
2612 result != NULL ? " (via quick fns)" : "");
2613 }
2614 return result;
2615 }
2616
2617 /* See symtab.h. */
2618
2619 struct symbol *
2620 lookup_static_symbol (const char *name, const domain_enum domain)
2621 {
2622 struct symbol_cache *cache = get_symbol_cache (current_program_space);
2623 struct objfile *objfile;
2624 struct symbol *result;
2625 struct block_symbol_cache *bsc;
2626 struct symbol_cache_slot *slot;
2627
2628 /* Lookup in STATIC_BLOCK is not current-objfile-dependent, so just pass
2629 NULL for OBJFILE_CONTEXT. */
2630 result = symbol_cache_lookup (cache, NULL, STATIC_BLOCK, name, domain,
2631 &bsc, &slot);
2632 if (result != NULL)
2633 {
2634 if (result == SYMBOL_LOOKUP_FAILED)
2635 return NULL;
2636 return result;
2637 }
2638
2639 ALL_OBJFILES (objfile)
2640 {
2641 result = lookup_symbol_in_objfile (objfile, STATIC_BLOCK, name, domain);
2642 if (result != NULL)
2643 {
2644 /* Still pass NULL for OBJFILE_CONTEXT here. */
2645 symbol_cache_mark_found (bsc, slot, NULL, result);
2646 return result;
2647 }
2648 }
2649
2650 /* Still pass NULL for OBJFILE_CONTEXT here. */
2651 symbol_cache_mark_not_found (bsc, slot, NULL, name, domain);
2652 return NULL;
2653 }
2654
2655 /* Private data to be used with lookup_symbol_global_iterator_cb. */
2656
2657 struct global_sym_lookup_data
2658 {
2659 /* The name of the symbol we are searching for. */
2660 const char *name;
2661
2662 /* The domain to use for our search. */
2663 domain_enum domain;
2664
2665 /* The field where the callback should store the symbol if found.
2666 It should be initialized to NULL before the search is started. */
2667 struct symbol *result;
2668 };
2669
2670 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
2671 It searches by name for a symbol in the GLOBAL_BLOCK of the given
2672 OBJFILE. The arguments for the search are passed via CB_DATA,
2673 which in reality is a pointer to struct global_sym_lookup_data. */
2674
2675 static int
2676 lookup_symbol_global_iterator_cb (struct objfile *objfile,
2677 void *cb_data)
2678 {
2679 struct global_sym_lookup_data *data =
2680 (struct global_sym_lookup_data *) cb_data;
2681
2682 gdb_assert (data->result == NULL);
2683
2684 data->result = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK,
2685 data->name, data->domain);
2686
2687 /* If we found a match, tell the iterator to stop. Otherwise,
2688 keep going. */
2689 return (data->result != NULL);
2690 }
2691
2692 /* See symtab.h. */
2693
2694 struct symbol *
2695 lookup_global_symbol (const char *name,
2696 const struct block *block,
2697 const domain_enum domain)
2698 {
2699 struct symbol_cache *cache = get_symbol_cache (current_program_space);
2700 struct symbol *sym;
2701 struct objfile *objfile;
2702 struct global_sym_lookup_data lookup_data;
2703 struct block_symbol_cache *bsc;
2704 struct symbol_cache_slot *slot;
2705
2706 objfile = lookup_objfile_from_block (block);
2707
2708 /* First see if we can find the symbol in the cache.
2709 This works because we use the current objfile to qualify the lookup. */
2710 sym = symbol_cache_lookup (cache, objfile, GLOBAL_BLOCK, name, domain,
2711 &bsc, &slot);
2712 if (sym != NULL)
2713 {
2714 if (sym == SYMBOL_LOOKUP_FAILED)
2715 return NULL;
2716 return sym;
2717 }
2718
2719 /* Call library-specific lookup procedure. */
2720 if (objfile != NULL)
2721 sym = solib_global_lookup (objfile, name, domain);
2722
2723 /* If that didn't work go a global search (of global blocks, heh). */
2724 if (sym == NULL)
2725 {
2726 memset (&lookup_data, 0, sizeof (lookup_data));
2727 lookup_data.name = name;
2728 lookup_data.domain = domain;
2729 gdbarch_iterate_over_objfiles_in_search_order
2730 (objfile != NULL ? get_objfile_arch (objfile) : target_gdbarch (),
2731 lookup_symbol_global_iterator_cb, &lookup_data, objfile);
2732 sym = lookup_data.result;
2733 }
2734
2735 if (sym != NULL)
2736 symbol_cache_mark_found (bsc, slot, objfile, sym);
2737 else
2738 symbol_cache_mark_not_found (bsc, slot, objfile, name, domain);
2739
2740 return sym;
2741 }
2742
2743 int
2744 symbol_matches_domain (enum language symbol_language,
2745 domain_enum symbol_domain,
2746 domain_enum domain)
2747 {
2748 /* For C++ "struct foo { ... }" also defines a typedef for "foo".
2749 A Java class declaration also defines a typedef for the class.
2750 Similarly, any Ada type declaration implicitly defines a typedef. */
2751 if (symbol_language == language_cplus
2752 || symbol_language == language_d
2753 || symbol_language == language_java
2754 || symbol_language == language_ada)
2755 {
2756 if ((domain == VAR_DOMAIN || domain == STRUCT_DOMAIN)
2757 && symbol_domain == STRUCT_DOMAIN)
2758 return 1;
2759 }
2760 /* For all other languages, strict match is required. */
2761 return (symbol_domain == domain);
2762 }
2763
2764 /* See symtab.h. */
2765
2766 struct type *
2767 lookup_transparent_type (const char *name)
2768 {
2769 return current_language->la_lookup_transparent_type (name);
2770 }
2771
2772 /* A helper for basic_lookup_transparent_type that interfaces with the
2773 "quick" symbol table functions. */
2774
2775 static struct type *
2776 basic_lookup_transparent_type_quick (struct objfile *objfile, int block_index,
2777 const char *name)
2778 {
2779 struct compunit_symtab *cust;
2780 const struct blockvector *bv;
2781 struct block *block;
2782 struct symbol *sym;
2783
2784 if (!objfile->sf)
2785 return NULL;
2786 cust = objfile->sf->qf->lookup_symbol (objfile, block_index, name,
2787 STRUCT_DOMAIN);
2788 if (cust == NULL)
2789 return NULL;
2790
2791 bv = COMPUNIT_BLOCKVECTOR (cust);
2792 block = BLOCKVECTOR_BLOCK (bv, block_index);
2793 sym = block_lookup_symbol (block, name, STRUCT_DOMAIN);
2794 if (!sym)
2795 error_in_psymtab_expansion (block_index, name, cust);
2796
2797 if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
2798 return SYMBOL_TYPE (sym);
2799
2800 return NULL;
2801 }
2802
2803 /* The standard implementation of lookup_transparent_type. This code
2804 was modeled on lookup_symbol -- the parts not relevant to looking
2805 up types were just left out. In particular it's assumed here that
2806 types are available in STRUCT_DOMAIN and only in file-static or
2807 global blocks. */
2808
2809 struct type *
2810 basic_lookup_transparent_type (const char *name)
2811 {
2812 struct symbol *sym;
2813 struct compunit_symtab *cust;
2814 const struct blockvector *bv;
2815 struct objfile *objfile;
2816 struct block *block;
2817 struct type *t;
2818
2819 /* Now search all the global symbols. Do the symtab's first, then
2820 check the psymtab's. If a psymtab indicates the existence
2821 of the desired name as a global, then do psymtab-to-symtab
2822 conversion on the fly and return the found symbol. */
2823
2824 ALL_OBJFILES (objfile)
2825 {
2826 ALL_OBJFILE_COMPUNITS (objfile, cust)
2827 {
2828 bv = COMPUNIT_BLOCKVECTOR (cust);
2829 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
2830 sym = block_lookup_symbol (block, name, STRUCT_DOMAIN);
2831 if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
2832 {
2833 return SYMBOL_TYPE (sym);
2834 }
2835 }
2836 }
2837
2838 ALL_OBJFILES (objfile)
2839 {
2840 t = basic_lookup_transparent_type_quick (objfile, GLOBAL_BLOCK, name);
2841 if (t)
2842 return t;
2843 }
2844
2845 /* Now search the static file-level symbols.
2846 Not strictly correct, but more useful than an error.
2847 Do the symtab's first, then
2848 check the psymtab's. If a psymtab indicates the existence
2849 of the desired name as a file-level static, then do psymtab-to-symtab
2850 conversion on the fly and return the found symbol. */
2851
2852 ALL_OBJFILES (objfile)
2853 {
2854 ALL_OBJFILE_COMPUNITS (objfile, cust)
2855 {
2856 bv = COMPUNIT_BLOCKVECTOR (cust);
2857 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
2858 sym = block_lookup_symbol (block, name, STRUCT_DOMAIN);
2859 if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
2860 {
2861 return SYMBOL_TYPE (sym);
2862 }
2863 }
2864 }
2865
2866 ALL_OBJFILES (objfile)
2867 {
2868 t = basic_lookup_transparent_type_quick (objfile, STATIC_BLOCK, name);
2869 if (t)
2870 return t;
2871 }
2872
2873 return (struct type *) 0;
2874 }
2875
2876 /* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
2877
2878 For each symbol that matches, CALLBACK is called. The symbol and
2879 DATA are passed to the callback.
2880
2881 If CALLBACK returns zero, the iteration ends. Otherwise, the
2882 search continues. */
2883
2884 void
2885 iterate_over_symbols (const struct block *block, const char *name,
2886 const domain_enum domain,
2887 symbol_found_callback_ftype *callback,
2888 void *data)
2889 {
2890 struct block_iterator iter;
2891 struct symbol *sym;
2892
2893 ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
2894 {
2895 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
2896 SYMBOL_DOMAIN (sym), domain))
2897 {
2898 if (!callback (sym, data))
2899 return;
2900 }
2901 }
2902 }
2903
2904 /* Find the compunit symtab associated with PC and SECTION.
2905 This will read in debug info as necessary. */
2906
2907 struct compunit_symtab *
2908 find_pc_sect_compunit_symtab (CORE_ADDR pc, struct obj_section *section)
2909 {
2910 struct compunit_symtab *cust;
2911 struct compunit_symtab *best_cust = NULL;
2912 struct objfile *objfile;
2913 CORE_ADDR distance = 0;
2914 struct bound_minimal_symbol msymbol;
2915
2916 /* If we know that this is not a text address, return failure. This is
2917 necessary because we loop based on the block's high and low code
2918 addresses, which do not include the data ranges, and because
2919 we call find_pc_sect_psymtab which has a similar restriction based
2920 on the partial_symtab's texthigh and textlow. */
2921 msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
2922 if (msymbol.minsym
2923 && (MSYMBOL_TYPE (msymbol.minsym) == mst_data
2924 || MSYMBOL_TYPE (msymbol.minsym) == mst_bss
2925 || MSYMBOL_TYPE (msymbol.minsym) == mst_abs
2926 || MSYMBOL_TYPE (msymbol.minsym) == mst_file_data
2927 || MSYMBOL_TYPE (msymbol.minsym) == mst_file_bss))
2928 return NULL;
2929
2930 /* Search all symtabs for the one whose file contains our address, and which
2931 is the smallest of all the ones containing the address. This is designed
2932 to deal with a case like symtab a is at 0x1000-0x2000 and 0x3000-0x4000
2933 and symtab b is at 0x2000-0x3000. So the GLOBAL_BLOCK for a is from
2934 0x1000-0x4000, but for address 0x2345 we want to return symtab b.
2935
2936 This happens for native ecoff format, where code from included files
2937 gets its own symtab. The symtab for the included file should have
2938 been read in already via the dependency mechanism.
2939 It might be swifter to create several symtabs with the same name
2940 like xcoff does (I'm not sure).
2941
2942 It also happens for objfiles that have their functions reordered.
2943 For these, the symtab we are looking for is not necessarily read in. */
2944
2945 ALL_COMPUNITS (objfile, cust)
2946 {
2947 struct block *b;
2948 const struct blockvector *bv;
2949
2950 bv = COMPUNIT_BLOCKVECTOR (cust);
2951 b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
2952
2953 if (BLOCK_START (b) <= pc
2954 && BLOCK_END (b) > pc
2955 && (distance == 0
2956 || BLOCK_END (b) - BLOCK_START (b) < distance))
2957 {
2958 /* For an objfile that has its functions reordered,
2959 find_pc_psymtab will find the proper partial symbol table
2960 and we simply return its corresponding symtab. */
2961 /* In order to better support objfiles that contain both
2962 stabs and coff debugging info, we continue on if a psymtab
2963 can't be found. */
2964 if ((objfile->flags & OBJF_REORDERED) && objfile->sf)
2965 {
2966 struct compunit_symtab *result;
2967
2968 result
2969 = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile,
2970 msymbol,
2971 pc, section,
2972 0);
2973 if (result != NULL)
2974 return result;
2975 }
2976 if (section != 0)
2977 {
2978 struct block_iterator iter;
2979 struct symbol *sym = NULL;
2980
2981 ALL_BLOCK_SYMBOLS (b, iter, sym)
2982 {
2983 fixup_symbol_section (sym, objfile);
2984 if (matching_obj_sections (SYMBOL_OBJ_SECTION (objfile, sym),
2985 section))
2986 break;
2987 }
2988 if (sym == NULL)
2989 continue; /* No symbol in this symtab matches
2990 section. */
2991 }
2992 distance = BLOCK_END (b) - BLOCK_START (b);
2993 best_cust = cust;
2994 }
2995 }
2996
2997 if (best_cust != NULL)
2998 return best_cust;
2999
3000 /* Not found in symtabs, search the "quick" symtabs (e.g. psymtabs). */
3001
3002 ALL_OBJFILES (objfile)
3003 {
3004 struct compunit_symtab *result;
3005
3006 if (!objfile->sf)
3007 continue;
3008 result = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile,
3009 msymbol,
3010 pc, section,
3011 1);
3012 if (result != NULL)
3013 return result;
3014 }
3015
3016 return NULL;
3017 }
3018
3019 /* Find the compunit symtab associated with PC.
3020 This will read in debug info as necessary.
3021 Backward compatibility, no section. */
3022
3023 struct compunit_symtab *
3024 find_pc_compunit_symtab (CORE_ADDR pc)
3025 {
3026 return find_pc_sect_compunit_symtab (pc, find_pc_mapped_section (pc));
3027 }
3028 \f
3029
3030 /* Find the source file and line number for a given PC value and SECTION.
3031 Return a structure containing a symtab pointer, a line number,
3032 and a pc range for the entire source line.
3033 The value's .pc field is NOT the specified pc.
3034 NOTCURRENT nonzero means, if specified pc is on a line boundary,
3035 use the line that ends there. Otherwise, in that case, the line
3036 that begins there is used. */
3037
3038 /* The big complication here is that a line may start in one file, and end just
3039 before the start of another file. This usually occurs when you #include
3040 code in the middle of a subroutine. To properly find the end of a line's PC
3041 range, we must search all symtabs associated with this compilation unit, and
3042 find the one whose first PC is closer than that of the next line in this
3043 symtab. */
3044
3045 /* If it's worth the effort, we could be using a binary search. */
3046
3047 struct symtab_and_line
3048 find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
3049 {
3050 struct compunit_symtab *cust;
3051 struct symtab *iter_s;
3052 struct linetable *l;
3053 int len;
3054 int i;
3055 struct linetable_entry *item;
3056 struct symtab_and_line val;
3057 const struct blockvector *bv;
3058 struct bound_minimal_symbol msymbol;
3059
3060 /* Info on best line seen so far, and where it starts, and its file. */
3061
3062 struct linetable_entry *best = NULL;
3063 CORE_ADDR best_end = 0;
3064 struct symtab *best_symtab = 0;
3065
3066 /* Store here the first line number
3067 of a file which contains the line at the smallest pc after PC.
3068 If we don't find a line whose range contains PC,
3069 we will use a line one less than this,
3070 with a range from the start of that file to the first line's pc. */
3071 struct linetable_entry *alt = NULL;
3072
3073 /* Info on best line seen in this file. */
3074
3075 struct linetable_entry *prev;
3076
3077 /* If this pc is not from the current frame,
3078 it is the address of the end of a call instruction.
3079 Quite likely that is the start of the following statement.
3080 But what we want is the statement containing the instruction.
3081 Fudge the pc to make sure we get that. */
3082
3083 init_sal (&val); /* initialize to zeroes */
3084
3085 val.pspace = current_program_space;
3086
3087 /* It's tempting to assume that, if we can't find debugging info for
3088 any function enclosing PC, that we shouldn't search for line
3089 number info, either. However, GAS can emit line number info for
3090 assembly files --- very helpful when debugging hand-written
3091 assembly code. In such a case, we'd have no debug info for the
3092 function, but we would have line info. */
3093
3094 if (notcurrent)
3095 pc -= 1;
3096
3097 /* elz: added this because this function returned the wrong
3098 information if the pc belongs to a stub (import/export)
3099 to call a shlib function. This stub would be anywhere between
3100 two functions in the target, and the line info was erroneously
3101 taken to be the one of the line before the pc. */
3102
3103 /* RT: Further explanation:
3104
3105 * We have stubs (trampolines) inserted between procedures.
3106 *
3107 * Example: "shr1" exists in a shared library, and a "shr1" stub also
3108 * exists in the main image.
3109 *
3110 * In the minimal symbol table, we have a bunch of symbols
3111 * sorted by start address. The stubs are marked as "trampoline",
3112 * the others appear as text. E.g.:
3113 *
3114 * Minimal symbol table for main image
3115 * main: code for main (text symbol)
3116 * shr1: stub (trampoline symbol)
3117 * foo: code for foo (text symbol)
3118 * ...
3119 * Minimal symbol table for "shr1" image:
3120 * ...
3121 * shr1: code for shr1 (text symbol)
3122 * ...
3123 *
3124 * So the code below is trying to detect if we are in the stub
3125 * ("shr1" stub), and if so, find the real code ("shr1" trampoline),
3126 * and if found, do the symbolization from the real-code address
3127 * rather than the stub address.
3128 *
3129 * Assumptions being made about the minimal symbol table:
3130 * 1. lookup_minimal_symbol_by_pc() will return a trampoline only
3131 * if we're really in the trampoline.s If we're beyond it (say
3132 * we're in "foo" in the above example), it'll have a closer
3133 * symbol (the "foo" text symbol for example) and will not
3134 * return the trampoline.
3135 * 2. lookup_minimal_symbol_text() will find a real text symbol
3136 * corresponding to the trampoline, and whose address will
3137 * be different than the trampoline address. I put in a sanity
3138 * check for the address being the same, to avoid an
3139 * infinite recursion.
3140 */
3141 msymbol = lookup_minimal_symbol_by_pc (pc);
3142 if (msymbol.minsym != NULL)
3143 if (MSYMBOL_TYPE (msymbol.minsym) == mst_solib_trampoline)
3144 {
3145 struct bound_minimal_symbol mfunsym
3146 = lookup_minimal_symbol_text (MSYMBOL_LINKAGE_NAME (msymbol.minsym),
3147 NULL);
3148
3149 if (mfunsym.minsym == NULL)
3150 /* I eliminated this warning since it is coming out
3151 * in the following situation:
3152 * gdb shmain // test program with shared libraries
3153 * (gdb) break shr1 // function in shared lib
3154 * Warning: In stub for ...
3155 * In the above situation, the shared lib is not loaded yet,
3156 * so of course we can't find the real func/line info,
3157 * but the "break" still works, and the warning is annoying.
3158 * So I commented out the warning. RT */
3159 /* warning ("In stub for %s; unable to find real function/line info",
3160 SYMBOL_LINKAGE_NAME (msymbol)); */
3161 ;
3162 /* fall through */
3163 else if (BMSYMBOL_VALUE_ADDRESS (mfunsym)
3164 == BMSYMBOL_VALUE_ADDRESS (msymbol))
3165 /* Avoid infinite recursion */
3166 /* See above comment about why warning is commented out. */
3167 /* warning ("In stub for %s; unable to find real function/line info",
3168 SYMBOL_LINKAGE_NAME (msymbol)); */
3169 ;
3170 /* fall through */
3171 else
3172 return find_pc_line (BMSYMBOL_VALUE_ADDRESS (mfunsym), 0);
3173 }
3174
3175
3176 cust = find_pc_sect_compunit_symtab (pc, section);
3177 if (cust == NULL)
3178 {
3179 /* If no symbol information, return previous pc. */
3180 if (notcurrent)
3181 pc++;
3182 val.pc = pc;
3183 return val;
3184 }
3185
3186 bv = COMPUNIT_BLOCKVECTOR (cust);
3187
3188 /* Look at all the symtabs that share this blockvector.
3189 They all have the same apriori range, that we found was right;
3190 but they have different line tables. */
3191
3192 ALL_COMPUNIT_FILETABS (cust, iter_s)
3193 {
3194 /* Find the best line in this symtab. */
3195 l = SYMTAB_LINETABLE (iter_s);
3196 if (!l)
3197 continue;
3198 len = l->nitems;
3199 if (len <= 0)
3200 {
3201 /* I think len can be zero if the symtab lacks line numbers
3202 (e.g. gcc -g1). (Either that or the LINETABLE is NULL;
3203 I'm not sure which, and maybe it depends on the symbol
3204 reader). */
3205 continue;
3206 }
3207
3208 prev = NULL;
3209 item = l->item; /* Get first line info. */
3210
3211 /* Is this file's first line closer than the first lines of other files?
3212 If so, record this file, and its first line, as best alternate. */
3213 if (item->pc > pc && (!alt || item->pc < alt->pc))
3214 alt = item;
3215
3216 for (i = 0; i < len; i++, item++)
3217 {
3218 /* Leave prev pointing to the linetable entry for the last line
3219 that started at or before PC. */
3220 if (item->pc > pc)
3221 break;
3222
3223 prev = item;
3224 }
3225
3226 /* At this point, prev points at the line whose start addr is <= pc, and
3227 item points at the next line. If we ran off the end of the linetable
3228 (pc >= start of the last line), then prev == item. If pc < start of
3229 the first line, prev will not be set. */
3230
3231 /* Is this file's best line closer than the best in the other files?
3232 If so, record this file, and its best line, as best so far. Don't
3233 save prev if it represents the end of a function (i.e. line number
3234 0) instead of a real line. */
3235
3236 if (prev && prev->line && (!best || prev->pc > best->pc))
3237 {
3238 best = prev;
3239 best_symtab = iter_s;
3240
3241 /* Discard BEST_END if it's before the PC of the current BEST. */
3242 if (best_end <= best->pc)
3243 best_end = 0;
3244 }
3245
3246 /* If another line (denoted by ITEM) is in the linetable and its
3247 PC is after BEST's PC, but before the current BEST_END, then
3248 use ITEM's PC as the new best_end. */
3249 if (best && i < len && item->pc > best->pc
3250 && (best_end == 0 || best_end > item->pc))
3251 best_end = item->pc;
3252 }
3253
3254 if (!best_symtab)
3255 {
3256 /* If we didn't find any line number info, just return zeros.
3257 We used to return alt->line - 1 here, but that could be
3258 anywhere; if we don't have line number info for this PC,
3259 don't make some up. */
3260 val.pc = pc;
3261 }
3262 else if (best->line == 0)
3263 {
3264 /* If our best fit is in a range of PC's for which no line
3265 number info is available (line number is zero) then we didn't
3266 find any valid line information. */
3267 val.pc = pc;
3268 }
3269 else
3270 {
3271 val.symtab = best_symtab;
3272 val.line = best->line;
3273 val.pc = best->pc;
3274 if (best_end && (!alt || best_end < alt->pc))
3275 val.end = best_end;
3276 else if (alt)
3277 val.end = alt->pc;
3278 else
3279 val.end = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
3280 }
3281 val.section = section;
3282 return val;
3283 }
3284
3285 /* Backward compatibility (no section). */
3286
3287 struct symtab_and_line
3288 find_pc_line (CORE_ADDR pc, int notcurrent)
3289 {
3290 struct obj_section *section;
3291
3292 section = find_pc_overlay (pc);
3293 if (pc_in_unmapped_range (pc, section))
3294 pc = overlay_mapped_address (pc, section);
3295 return find_pc_sect_line (pc, section, notcurrent);
3296 }
3297
3298 /* See symtab.h. */
3299
3300 struct symtab *
3301 find_pc_line_symtab (CORE_ADDR pc)
3302 {
3303 struct symtab_and_line sal;
3304
3305 /* This always passes zero for NOTCURRENT to find_pc_line.
3306 There are currently no callers that ever pass non-zero. */
3307 sal = find_pc_line (pc, 0);
3308 return sal.symtab;
3309 }
3310 \f
3311 /* Find line number LINE in any symtab whose name is the same as
3312 SYMTAB.
3313
3314 If found, return the symtab that contains the linetable in which it was
3315 found, set *INDEX to the index in the linetable of the best entry
3316 found, and set *EXACT_MATCH nonzero if the value returned is an
3317 exact match.
3318
3319 If not found, return NULL. */
3320
3321 struct symtab *
3322 find_line_symtab (struct symtab *symtab, int line,
3323 int *index, int *exact_match)
3324 {
3325 int exact = 0; /* Initialized here to avoid a compiler warning. */
3326
3327 /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
3328 so far seen. */
3329
3330 int best_index;
3331 struct linetable *best_linetable;
3332 struct symtab *best_symtab;
3333
3334 /* First try looking it up in the given symtab. */
3335 best_linetable = SYMTAB_LINETABLE (symtab);
3336 best_symtab = symtab;
3337 best_index = find_line_common (best_linetable, line, &exact, 0);
3338 if (best_index < 0 || !exact)
3339 {
3340 /* Didn't find an exact match. So we better keep looking for
3341 another symtab with the same name. In the case of xcoff,
3342 multiple csects for one source file (produced by IBM's FORTRAN
3343 compiler) produce multiple symtabs (this is unavoidable
3344 assuming csects can be at arbitrary places in memory and that
3345 the GLOBAL_BLOCK of a symtab has a begin and end address). */
3346
3347 /* BEST is the smallest linenumber > LINE so far seen,
3348 or 0 if none has been seen so far.
3349 BEST_INDEX and BEST_LINETABLE identify the item for it. */
3350 int best;
3351
3352 struct objfile *objfile;
3353 struct compunit_symtab *cu;
3354 struct symtab *s;
3355
3356 if (best_index >= 0)
3357 best = best_linetable->item[best_index].line;
3358 else
3359 best = 0;
3360
3361 ALL_OBJFILES (objfile)
3362 {
3363 if (objfile->sf)
3364 objfile->sf->qf->expand_symtabs_with_fullname (objfile,
3365 symtab_to_fullname (symtab));
3366 }
3367
3368 ALL_FILETABS (objfile, cu, s)
3369 {
3370 struct linetable *l;
3371 int ind;
3372
3373 if (FILENAME_CMP (symtab->filename, s->filename) != 0)
3374 continue;
3375 if (FILENAME_CMP (symtab_to_fullname (symtab),
3376 symtab_to_fullname (s)) != 0)
3377 continue;
3378 l = SYMTAB_LINETABLE (s);
3379 ind = find_line_common (l, line, &exact, 0);
3380 if (ind >= 0)
3381 {
3382 if (exact)
3383 {
3384 best_index = ind;
3385 best_linetable = l;
3386 best_symtab = s;
3387 goto done;
3388 }
3389 if (best == 0 || l->item[ind].line < best)
3390 {
3391 best = l->item[ind].line;
3392 best_index = ind;
3393 best_linetable = l;
3394 best_symtab = s;
3395 }
3396 }
3397 }
3398 }
3399 done:
3400 if (best_index < 0)
3401 return NULL;
3402
3403 if (index)
3404 *index = best_index;
3405 if (exact_match)
3406 *exact_match = exact;
3407
3408 return best_symtab;
3409 }
3410
3411 /* Given SYMTAB, returns all the PCs function in the symtab that
3412 exactly match LINE. Returns NULL if there are no exact matches,
3413 but updates BEST_ITEM in this case. */
3414
3415 VEC (CORE_ADDR) *
3416 find_pcs_for_symtab_line (struct symtab *symtab, int line,
3417 struct linetable_entry **best_item)
3418 {
3419 int start = 0;
3420 VEC (CORE_ADDR) *result = NULL;
3421
3422 /* First, collect all the PCs that are at this line. */
3423 while (1)
3424 {
3425 int was_exact;
3426 int idx;
3427
3428 idx = find_line_common (SYMTAB_LINETABLE (symtab), line, &was_exact,
3429 start);
3430 if (idx < 0)
3431 break;
3432
3433 if (!was_exact)
3434 {
3435 struct linetable_entry *item = &SYMTAB_LINETABLE (symtab)->item[idx];
3436
3437 if (*best_item == NULL || item->line < (*best_item)->line)
3438 *best_item = item;
3439
3440 break;
3441 }
3442
3443 VEC_safe_push (CORE_ADDR, result,
3444 SYMTAB_LINETABLE (symtab)->item[idx].pc);
3445 start = idx + 1;
3446 }
3447
3448 return result;
3449 }
3450
3451 \f
3452 /* Set the PC value for a given source file and line number and return true.
3453 Returns zero for invalid line number (and sets the PC to 0).
3454 The source file is specified with a struct symtab. */
3455
3456 int
3457 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
3458 {
3459 struct linetable *l;
3460 int ind;
3461
3462 *pc = 0;
3463 if (symtab == 0)
3464 return 0;
3465
3466 symtab = find_line_symtab (symtab, line, &ind, NULL);
3467 if (symtab != NULL)
3468 {
3469 l = SYMTAB_LINETABLE (symtab);
3470 *pc = l->item[ind].pc;
3471 return 1;
3472 }
3473 else
3474 return 0;
3475 }
3476
3477 /* Find the range of pc values in a line.
3478 Store the starting pc of the line into *STARTPTR
3479 and the ending pc (start of next line) into *ENDPTR.
3480 Returns 1 to indicate success.
3481 Returns 0 if could not find the specified line. */
3482
3483 int
3484 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
3485 CORE_ADDR *endptr)
3486 {
3487 CORE_ADDR startaddr;
3488 struct symtab_and_line found_sal;
3489
3490 startaddr = sal.pc;
3491 if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
3492 return 0;
3493
3494 /* This whole function is based on address. For example, if line 10 has
3495 two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
3496 "info line *0x123" should say the line goes from 0x100 to 0x200
3497 and "info line *0x355" should say the line goes from 0x300 to 0x400.
3498 This also insures that we never give a range like "starts at 0x134
3499 and ends at 0x12c". */
3500
3501 found_sal = find_pc_sect_line (startaddr, sal.section, 0);
3502 if (found_sal.line != sal.line)
3503 {
3504 /* The specified line (sal) has zero bytes. */
3505 *startptr = found_sal.pc;
3506 *endptr = found_sal.pc;
3507 }
3508 else
3509 {
3510 *startptr = found_sal.pc;
3511 *endptr = found_sal.end;
3512 }
3513 return 1;
3514 }
3515
3516 /* Given a line table and a line number, return the index into the line
3517 table for the pc of the nearest line whose number is >= the specified one.
3518 Return -1 if none is found. The value is >= 0 if it is an index.
3519 START is the index at which to start searching the line table.
3520
3521 Set *EXACT_MATCH nonzero if the value returned is an exact match. */
3522
3523 static int
3524 find_line_common (struct linetable *l, int lineno,
3525 int *exact_match, int start)
3526 {
3527 int i;
3528 int len;
3529
3530 /* BEST is the smallest linenumber > LINENO so far seen,
3531 or 0 if none has been seen so far.
3532 BEST_INDEX identifies the item for it. */
3533
3534 int best_index = -1;
3535 int best = 0;
3536
3537 *exact_match = 0;
3538
3539 if (lineno <= 0)
3540 return -1;
3541 if (l == 0)
3542 return -1;
3543
3544 len = l->nitems;
3545 for (i = start; i < len; i++)
3546 {
3547 struct linetable_entry *item = &(l->item[i]);
3548
3549 if (item->line == lineno)
3550 {
3551 /* Return the first (lowest address) entry which matches. */
3552 *exact_match = 1;
3553 return i;
3554 }
3555
3556 if (item->line > lineno && (best == 0 || item->line < best))
3557 {
3558 best = item->line;
3559 best_index = i;
3560 }
3561 }
3562
3563 /* If we got here, we didn't get an exact match. */
3564 return best_index;
3565 }
3566
3567 int
3568 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
3569 {
3570 struct symtab_and_line sal;
3571
3572 sal = find_pc_line (pc, 0);
3573 *startptr = sal.pc;
3574 *endptr = sal.end;
3575 return sal.symtab != 0;
3576 }
3577
3578 /* Given a function symbol SYM, find the symtab and line for the start
3579 of the function.
3580 If the argument FUNFIRSTLINE is nonzero, we want the first line
3581 of real code inside the function. */
3582
3583 struct symtab_and_line
3584 find_function_start_sal (struct symbol *sym, int funfirstline)
3585 {
3586 struct symtab_and_line sal;
3587 struct obj_section *section;
3588
3589 fixup_symbol_section (sym, NULL);
3590 section = SYMBOL_OBJ_SECTION (symbol_objfile (sym), sym);
3591 sal = find_pc_sect_line (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), section, 0);
3592
3593 /* We always should have a line for the function start address.
3594 If we don't, something is odd. Create a plain SAL refering
3595 just the PC and hope that skip_prologue_sal (if requested)
3596 can find a line number for after the prologue. */
3597 if (sal.pc < BLOCK_START (SYMBOL_BLOCK_VALUE (sym)))
3598 {
3599 init_sal (&sal);
3600 sal.pspace = current_program_space;
3601 sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3602 sal.section = section;
3603 }
3604
3605 if (funfirstline)
3606 skip_prologue_sal (&sal);
3607
3608 return sal;
3609 }
3610
3611 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
3612 address for that function that has an entry in SYMTAB's line info
3613 table. If such an entry cannot be found, return FUNC_ADDR
3614 unaltered. */
3615
3616 static CORE_ADDR
3617 skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab)
3618 {
3619 CORE_ADDR func_start, func_end;
3620 struct linetable *l;
3621 int i;
3622
3623 /* Give up if this symbol has no lineinfo table. */
3624 l = SYMTAB_LINETABLE (symtab);
3625 if (l == NULL)
3626 return func_addr;
3627
3628 /* Get the range for the function's PC values, or give up if we
3629 cannot, for some reason. */
3630 if (!find_pc_partial_function (func_addr, NULL, &func_start, &func_end))
3631 return func_addr;
3632
3633 /* Linetable entries are ordered by PC values, see the commentary in
3634 symtab.h where `struct linetable' is defined. Thus, the first
3635 entry whose PC is in the range [FUNC_START..FUNC_END[ is the
3636 address we are looking for. */
3637 for (i = 0; i < l->nitems; i++)
3638 {
3639 struct linetable_entry *item = &(l->item[i]);
3640
3641 /* Don't use line numbers of zero, they mark special entries in
3642 the table. See the commentary on symtab.h before the
3643 definition of struct linetable. */
3644 if (item->line > 0 && func_start <= item->pc && item->pc < func_end)
3645 return item->pc;
3646 }
3647
3648 return func_addr;
3649 }
3650
3651 /* Adjust SAL to the first instruction past the function prologue.
3652 If the PC was explicitly specified, the SAL is not changed.
3653 If the line number was explicitly specified, at most the SAL's PC
3654 is updated. If SAL is already past the prologue, then do nothing. */
3655
3656 void
3657 skip_prologue_sal (struct symtab_and_line *sal)
3658 {
3659 struct symbol *sym;
3660 struct symtab_and_line start_sal;
3661 struct cleanup *old_chain;
3662 CORE_ADDR pc, saved_pc;
3663 struct obj_section *section;
3664 const char *name;
3665 struct objfile *objfile;
3666 struct gdbarch *gdbarch;
3667 const struct block *b, *function_block;
3668 int force_skip, skip;
3669
3670 /* Do not change the SAL if PC was specified explicitly. */
3671 if (sal->explicit_pc)
3672 return;
3673
3674 old_chain = save_current_space_and_thread ();
3675 switch_to_program_space_and_thread (sal->pspace);
3676
3677 sym = find_pc_sect_function (sal->pc, sal->section);
3678 if (sym != NULL)
3679 {
3680 fixup_symbol_section (sym, NULL);
3681
3682 objfile = symbol_objfile (sym);
3683 pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
3684 section = SYMBOL_OBJ_SECTION (objfile, sym);
3685 name = SYMBOL_LINKAGE_NAME (sym);
3686 }
3687 else
3688 {
3689 struct bound_minimal_symbol msymbol
3690 = lookup_minimal_symbol_by_pc_section (sal->pc, sal->section);
3691
3692 if (msymbol.minsym == NULL)
3693 {
3694 do_cleanups (old_chain);
3695 return;
3696 }
3697
3698 objfile = msymbol.objfile;
3699 pc = BMSYMBOL_VALUE_ADDRESS (msymbol);
3700 section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
3701 name = MSYMBOL_LINKAGE_NAME (msymbol.minsym);
3702 }
3703
3704 gdbarch = get_objfile_arch (objfile);
3705
3706 /* Process the prologue in two passes. In the first pass try to skip the
3707 prologue (SKIP is true) and verify there is a real need for it (indicated
3708 by FORCE_SKIP). If no such reason was found run a second pass where the
3709 prologue is not skipped (SKIP is false). */
3710
3711 skip = 1;
3712 force_skip = 1;
3713
3714 /* Be conservative - allow direct PC (without skipping prologue) only if we
3715 have proven the CU (Compilation Unit) supports it. sal->SYMTAB does not
3716 have to be set by the caller so we use SYM instead. */
3717 if (sym != NULL
3718 && COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (symbol_symtab (sym))))
3719 force_skip = 0;
3720
3721 saved_pc = pc;
3722 do
3723 {
3724 pc = saved_pc;
3725
3726 /* If the function is in an unmapped overlay, use its unmapped LMA address,
3727 so that gdbarch_skip_prologue has something unique to work on. */
3728 if (section_is_overlay (section) && !section_is_mapped (section))
3729 pc = overlay_unmapped_address (pc, section);
3730
3731 /* Skip "first line" of function (which is actually its prologue). */
3732 pc += gdbarch_deprecated_function_start_offset (gdbarch);
3733 if (gdbarch_skip_entrypoint_p (gdbarch))
3734 pc = gdbarch_skip_entrypoint (gdbarch, pc);
3735 if (skip)
3736 pc = gdbarch_skip_prologue (gdbarch, pc);
3737
3738 /* For overlays, map pc back into its mapped VMA range. */
3739 pc = overlay_mapped_address (pc, section);
3740
3741 /* Calculate line number. */
3742 start_sal = find_pc_sect_line (pc, section, 0);
3743
3744 /* Check if gdbarch_skip_prologue left us in mid-line, and the next
3745 line is still part of the same function. */
3746 if (skip && start_sal.pc != pc
3747 && (sym ? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
3748 && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
3749 : (lookup_minimal_symbol_by_pc_section (start_sal.end, section).minsym
3750 == lookup_minimal_symbol_by_pc_section (pc, section).minsym)))
3751 {
3752 /* First pc of next line */
3753 pc = start_sal.end;
3754 /* Recalculate the line number (might not be N+1). */
3755 start_sal = find_pc_sect_line (pc, section, 0);
3756 }
3757
3758 /* On targets with executable formats that don't have a concept of
3759 constructors (ELF with .init has, PE doesn't), gcc emits a call
3760 to `__main' in `main' between the prologue and before user
3761 code. */
3762 if (gdbarch_skip_main_prologue_p (gdbarch)
3763 && name && strcmp_iw (name, "main") == 0)
3764 {
3765 pc = gdbarch_skip_main_prologue (gdbarch, pc);
3766 /* Recalculate the line number (might not be N+1). */
3767 start_sal = find_pc_sect_line (pc, section, 0);
3768 force_skip = 1;
3769 }
3770 }
3771 while (!force_skip && skip--);
3772
3773 /* If we still don't have a valid source line, try to find the first
3774 PC in the lineinfo table that belongs to the same function. This
3775 happens with COFF debug info, which does not seem to have an
3776 entry in lineinfo table for the code after the prologue which has
3777 no direct relation to source. For example, this was found to be
3778 the case with the DJGPP target using "gcc -gcoff" when the
3779 compiler inserted code after the prologue to make sure the stack
3780 is aligned. */
3781 if (!force_skip && sym && start_sal.symtab == NULL)
3782 {
3783 pc = skip_prologue_using_lineinfo (pc, symbol_symtab (sym));
3784 /* Recalculate the line number. */
3785 start_sal = find_pc_sect_line (pc, section, 0);
3786 }
3787
3788 do_cleanups (old_chain);
3789
3790 /* If we're already past the prologue, leave SAL unchanged. Otherwise
3791 forward SAL to the end of the prologue. */
3792 if (sal->pc >= pc)
3793 return;
3794
3795 sal->pc = pc;
3796 sal->section = section;
3797
3798 /* Unless the explicit_line flag was set, update the SAL line
3799 and symtab to correspond to the modified PC location. */
3800 if (sal->explicit_line)
3801 return;
3802
3803 sal->symtab = start_sal.symtab;
3804 sal->line = start_sal.line;
3805 sal->end = start_sal.end;
3806
3807 /* Check if we are now inside an inlined function. If we can,
3808 use the call site of the function instead. */
3809 b = block_for_pc_sect (sal->pc, sal->section);
3810 function_block = NULL;
3811 while (b != NULL)
3812 {
3813 if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
3814 function_block = b;
3815 else if (BLOCK_FUNCTION (b) != NULL)
3816 break;
3817 b = BLOCK_SUPERBLOCK (b);
3818 }
3819 if (function_block != NULL
3820 && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0)
3821 {
3822 sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block));
3823 sal->symtab = symbol_symtab (BLOCK_FUNCTION (function_block));
3824 }
3825 }
3826
3827 /* Given PC at the function's start address, attempt to find the
3828 prologue end using SAL information. Return zero if the skip fails.
3829
3830 A non-optimized prologue traditionally has one SAL for the function
3831 and a second for the function body. A single line function has
3832 them both pointing at the same line.
3833
3834 An optimized prologue is similar but the prologue may contain
3835 instructions (SALs) from the instruction body. Need to skip those
3836 while not getting into the function body.
3837
3838 The functions end point and an increasing SAL line are used as
3839 indicators of the prologue's endpoint.
3840
3841 This code is based on the function refine_prologue_limit
3842 (found in ia64). */
3843
3844 CORE_ADDR
3845 skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
3846 {
3847 struct symtab_and_line prologue_sal;
3848 CORE_ADDR start_pc;
3849 CORE_ADDR end_pc;
3850 const struct block *bl;
3851
3852 /* Get an initial range for the function. */
3853 find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
3854 start_pc += gdbarch_deprecated_function_start_offset (gdbarch);
3855
3856 prologue_sal = find_pc_line (start_pc, 0);
3857 if (prologue_sal.line != 0)
3858 {
3859 /* For languages other than assembly, treat two consecutive line
3860 entries at the same address as a zero-instruction prologue.
3861 The GNU assembler emits separate line notes for each instruction
3862 in a multi-instruction macro, but compilers generally will not
3863 do this. */
3864 if (prologue_sal.symtab->language != language_asm)
3865 {
3866 struct linetable *linetable = SYMTAB_LINETABLE (prologue_sal.symtab);
3867 int idx = 0;
3868
3869 /* Skip any earlier lines, and any end-of-sequence marker
3870 from a previous function. */
3871 while (linetable->item[idx].pc != prologue_sal.pc
3872 || linetable->item[idx].line == 0)
3873 idx++;
3874
3875 if (idx+1 < linetable->nitems
3876 && linetable->item[idx+1].line != 0
3877 && linetable->item[idx+1].pc == start_pc)
3878 return start_pc;
3879 }
3880
3881 /* If there is only one sal that covers the entire function,
3882 then it is probably a single line function, like
3883 "foo(){}". */
3884 if (prologue_sal.end >= end_pc)
3885 return 0;
3886
3887 while (prologue_sal.end < end_pc)
3888 {
3889 struct symtab_and_line sal;
3890
3891 sal = find_pc_line (prologue_sal.end, 0);
3892 if (sal.line == 0)
3893 break;
3894 /* Assume that a consecutive SAL for the same (or larger)
3895 line mark the prologue -> body transition. */
3896 if (sal.line >= prologue_sal.line)
3897 break;
3898 /* Likewise if we are in a different symtab altogether
3899 (e.g. within a file included via #include).  */
3900 if (sal.symtab != prologue_sal.symtab)
3901 break;
3902
3903 /* The line number is smaller. Check that it's from the
3904 same function, not something inlined. If it's inlined,
3905 then there is no point comparing the line numbers. */
3906 bl = block_for_pc (prologue_sal.end);
3907 while (bl)
3908 {
3909 if (block_inlined_p (bl))
3910 break;
3911 if (BLOCK_FUNCTION (bl))
3912 {
3913 bl = NULL;
3914 break;
3915 }
3916 bl = BLOCK_SUPERBLOCK (bl);
3917 }
3918 if (bl != NULL)
3919 break;
3920
3921 /* The case in which compiler's optimizer/scheduler has
3922 moved instructions into the prologue. We look ahead in
3923 the function looking for address ranges whose
3924 corresponding line number is less the first one that we
3925 found for the function. This is more conservative then
3926 refine_prologue_limit which scans a large number of SALs
3927 looking for any in the prologue. */
3928 prologue_sal = sal;
3929 }
3930 }
3931
3932 if (prologue_sal.end < end_pc)
3933 /* Return the end of this line, or zero if we could not find a
3934 line. */
3935 return prologue_sal.end;
3936 else
3937 /* Don't return END_PC, which is past the end of the function. */
3938 return prologue_sal.pc;
3939 }
3940 \f
3941 /* If P is of the form "operator[ \t]+..." where `...' is
3942 some legitimate operator text, return a pointer to the
3943 beginning of the substring of the operator text.
3944 Otherwise, return "". */
3945
3946 static const char *
3947 operator_chars (const char *p, const char **end)
3948 {
3949 *end = "";
3950 if (strncmp (p, "operator", 8))
3951 return *end;
3952 p += 8;
3953
3954 /* Don't get faked out by `operator' being part of a longer
3955 identifier. */
3956 if (isalpha (*p) || *p == '_' || *p == '$' || *p == '\0')
3957 return *end;
3958
3959 /* Allow some whitespace between `operator' and the operator symbol. */
3960 while (*p == ' ' || *p == '\t')
3961 p++;
3962
3963 /* Recognize 'operator TYPENAME'. */
3964
3965 if (isalpha (*p) || *p == '_' || *p == '$')
3966 {
3967 const char *q = p + 1;
3968
3969 while (isalnum (*q) || *q == '_' || *q == '$')
3970 q++;
3971 *end = q;
3972 return p;
3973 }
3974
3975 while (*p)
3976 switch (*p)
3977 {
3978 case '\\': /* regexp quoting */
3979 if (p[1] == '*')
3980 {
3981 if (p[2] == '=') /* 'operator\*=' */
3982 *end = p + 3;
3983 else /* 'operator\*' */
3984 *end = p + 2;
3985 return p;
3986 }
3987 else if (p[1] == '[')
3988 {
3989 if (p[2] == ']')
3990 error (_("mismatched quoting on brackets, "
3991 "try 'operator\\[\\]'"));
3992 else if (p[2] == '\\' && p[3] == ']')
3993 {
3994 *end = p + 4; /* 'operator\[\]' */
3995 return p;
3996 }
3997 else
3998 error (_("nothing is allowed between '[' and ']'"));
3999 }
4000 else
4001 {
4002 /* Gratuitous qoute: skip it and move on. */
4003 p++;
4004 continue;
4005 }
4006 break;
4007 case '!':
4008 case '=':
4009 case '*':
4010 case '/':
4011 case '%':
4012 case '^':
4013 if (p[1] == '=')
4014 *end = p + 2;
4015 else
4016 *end = p + 1;
4017 return p;
4018 case '<':
4019 case '>':
4020 case '+':
4021 case '-':
4022 case '&':
4023 case '|':
4024 if (p[0] == '-' && p[1] == '>')
4025 {
4026 /* Struct pointer member operator 'operator->'. */
4027 if (p[2] == '*')
4028 {
4029 *end = p + 3; /* 'operator->*' */
4030 return p;
4031 }
4032 else if (p[2] == '\\')
4033 {
4034 *end = p + 4; /* Hopefully 'operator->\*' */
4035 return p;
4036 }
4037 else
4038 {
4039 *end = p + 2; /* 'operator->' */
4040 return p;
4041 }
4042 }
4043 if (p[1] == '=' || p[1] == p[0])
4044 *end = p + 2;
4045 else
4046 *end = p + 1;
4047 return p;
4048 case '~':
4049 case ',':
4050 *end = p + 1;
4051 return p;
4052 case '(':
4053 if (p[1] != ')')
4054 error (_("`operator ()' must be specified "
4055 "without whitespace in `()'"));
4056 *end = p + 2;
4057 return p;
4058 case '?':
4059 if (p[1] != ':')
4060 error (_("`operator ?:' must be specified "
4061 "without whitespace in `?:'"));
4062 *end = p + 2;
4063 return p;
4064 case '[':
4065 if (p[1] != ']')
4066 error (_("`operator []' must be specified "
4067 "without whitespace in `[]'"));
4068 *end = p + 2;
4069 return p;
4070 default:
4071 error (_("`operator %s' not supported"), p);
4072 break;
4073 }
4074
4075 *end = "";
4076 return *end;
4077 }
4078 \f
4079
4080 /* Cache to watch for file names already seen by filename_seen. */
4081
4082 struct filename_seen_cache
4083 {
4084 /* Table of files seen so far. */
4085 htab_t tab;
4086 /* Initial size of the table. It automagically grows from here. */
4087 #define INITIAL_FILENAME_SEEN_CACHE_SIZE 100
4088 };
4089
4090 /* filename_seen_cache constructor. */
4091
4092 static struct filename_seen_cache *
4093 create_filename_seen_cache (void)
4094 {
4095 struct filename_seen_cache *cache;
4096
4097 cache = XNEW (struct filename_seen_cache);
4098 cache->tab = htab_create_alloc (INITIAL_FILENAME_SEEN_CACHE_SIZE,
4099 filename_hash, filename_eq,
4100 NULL, xcalloc, xfree);
4101
4102 return cache;
4103 }
4104
4105 /* Empty the cache, but do not delete it. */
4106
4107 static void
4108 clear_filename_seen_cache (struct filename_seen_cache *cache)
4109 {
4110 htab_empty (cache->tab);
4111 }
4112
4113 /* filename_seen_cache destructor.
4114 This takes a void * argument as it is generally used as a cleanup. */
4115
4116 static void
4117 delete_filename_seen_cache (void *ptr)
4118 {
4119 struct filename_seen_cache *cache = ptr;
4120
4121 htab_delete (cache->tab);
4122 xfree (cache);
4123 }
4124
4125 /* If FILE is not already in the table of files in CACHE, return zero;
4126 otherwise return non-zero. Optionally add FILE to the table if ADD
4127 is non-zero.
4128
4129 NOTE: We don't manage space for FILE, we assume FILE lives as long
4130 as the caller needs. */
4131
4132 static int
4133 filename_seen (struct filename_seen_cache *cache, const char *file, int add)
4134 {
4135 void **slot;
4136
4137 /* Is FILE in tab? */
4138 slot = htab_find_slot (cache->tab, file, add ? INSERT : NO_INSERT);
4139 if (*slot != NULL)
4140 return 1;
4141
4142 /* No; maybe add it to tab. */
4143 if (add)
4144 *slot = (char *) file;
4145
4146 return 0;
4147 }
4148
4149 /* Data structure to maintain printing state for output_source_filename. */
4150
4151 struct output_source_filename_data
4152 {
4153 /* Cache of what we've seen so far. */
4154 struct filename_seen_cache *filename_seen_cache;
4155
4156 /* Flag of whether we're printing the first one. */
4157 int first;
4158 };
4159
4160 /* Slave routine for sources_info. Force line breaks at ,'s.
4161 NAME is the name to print.
4162 DATA contains the state for printing and watching for duplicates. */
4163
4164 static void
4165 output_source_filename (const char *name,
4166 struct output_source_filename_data *data)
4167 {
4168 /* Since a single source file can result in several partial symbol
4169 tables, we need to avoid printing it more than once. Note: if
4170 some of the psymtabs are read in and some are not, it gets
4171 printed both under "Source files for which symbols have been
4172 read" and "Source files for which symbols will be read in on
4173 demand". I consider this a reasonable way to deal with the
4174 situation. I'm not sure whether this can also happen for
4175 symtabs; it doesn't hurt to check. */
4176
4177 /* Was NAME already seen? */
4178 if (filename_seen (data->filename_seen_cache, name, 1))
4179 {
4180 /* Yes; don't print it again. */
4181 return;
4182 }
4183
4184 /* No; print it and reset *FIRST. */
4185 if (! data->first)
4186 printf_filtered (", ");
4187 data->first = 0;
4188
4189 wrap_here ("");
4190 fputs_filtered (name, gdb_stdout);
4191 }
4192
4193 /* A callback for map_partial_symbol_filenames. */
4194
4195 static void
4196 output_partial_symbol_filename (const char *filename, const char *fullname,
4197 void *data)
4198 {
4199 output_source_filename (fullname ? fullname : filename, data);
4200 }
4201
4202 static void
4203 sources_info (char *ignore, int from_tty)
4204 {
4205 struct compunit_symtab *cu;
4206 struct symtab *s;
4207 struct objfile *objfile;
4208 struct output_source_filename_data data;
4209 struct cleanup *cleanups;
4210
4211 if (!have_full_symbols () && !have_partial_symbols ())
4212 {
4213 error (_("No symbol table is loaded. Use the \"file\" command."));
4214 }
4215
4216 data.filename_seen_cache = create_filename_seen_cache ();
4217 cleanups = make_cleanup (delete_filename_seen_cache,
4218 data.filename_seen_cache);
4219
4220 printf_filtered ("Source files for which symbols have been read in:\n\n");
4221
4222 data.first = 1;
4223 ALL_FILETABS (objfile, cu, s)
4224 {
4225 const char *fullname = symtab_to_fullname (s);
4226
4227 output_source_filename (fullname, &data);
4228 }
4229 printf_filtered ("\n\n");
4230
4231 printf_filtered ("Source files for which symbols "
4232 "will be read in on demand:\n\n");
4233
4234 clear_filename_seen_cache (data.filename_seen_cache);
4235 data.first = 1;
4236 map_symbol_filenames (output_partial_symbol_filename, &data,
4237 1 /*need_fullname*/);
4238 printf_filtered ("\n");
4239
4240 do_cleanups (cleanups);
4241 }
4242
4243 /* Compare FILE against all the NFILES entries of FILES. If BASENAMES is
4244 non-zero compare only lbasename of FILES. */
4245
4246 static int
4247 file_matches (const char *file, const char *files[], int nfiles, int basenames)
4248 {
4249 int i;
4250
4251 if (file != NULL && nfiles != 0)
4252 {
4253 for (i = 0; i < nfiles; i++)
4254 {
4255 if (compare_filenames_for_search (file, (basenames
4256 ? lbasename (files[i])
4257 : files[i])))
4258 return 1;
4259 }
4260 }
4261 else if (nfiles == 0)
4262 return 1;
4263 return 0;
4264 }
4265
4266 /* Free any memory associated with a search. */
4267
4268 void
4269 free_search_symbols (struct symbol_search *symbols)
4270 {
4271 struct symbol_search *p;
4272 struct symbol_search *next;
4273
4274 for (p = symbols; p != NULL; p = next)
4275 {
4276 next = p->next;
4277 xfree (p);
4278 }
4279 }
4280
4281 static void
4282 do_free_search_symbols_cleanup (void *symbolsp)
4283 {
4284 struct symbol_search *symbols = *(struct symbol_search **) symbolsp;
4285
4286 free_search_symbols (symbols);
4287 }
4288
4289 struct cleanup *
4290 make_cleanup_free_search_symbols (struct symbol_search **symbolsp)
4291 {
4292 return make_cleanup (do_free_search_symbols_cleanup, symbolsp);
4293 }
4294
4295 /* Helper function for sort_search_symbols_remove_dups and qsort. Can only
4296 sort symbols, not minimal symbols. */
4297
4298 static int
4299 compare_search_syms (const void *sa, const void *sb)
4300 {
4301 struct symbol_search *sym_a = *(struct symbol_search **) sa;
4302 struct symbol_search *sym_b = *(struct symbol_search **) sb;
4303 int c;
4304
4305 c = FILENAME_CMP (symbol_symtab (sym_a->symbol)->filename,
4306 symbol_symtab (sym_b->symbol)->filename);
4307 if (c != 0)
4308 return c;
4309
4310 if (sym_a->block != sym_b->block)
4311 return sym_a->block - sym_b->block;
4312
4313 return strcmp (SYMBOL_PRINT_NAME (sym_a->symbol),
4314 SYMBOL_PRINT_NAME (sym_b->symbol));
4315 }
4316
4317 /* Sort the NFOUND symbols in list FOUND and remove duplicates.
4318 The duplicates are freed, and the new list is returned in
4319 *NEW_HEAD, *NEW_TAIL. */
4320
4321 static void
4322 sort_search_symbols_remove_dups (struct symbol_search *found, int nfound,
4323 struct symbol_search **new_head,
4324 struct symbol_search **new_tail)
4325 {
4326 struct symbol_search **symbols, *symp, *old_next;
4327 int i, j, nunique;
4328
4329 gdb_assert (found != NULL && nfound > 0);
4330
4331 /* Build an array out of the list so we can easily sort them. */
4332 symbols = (struct symbol_search **) xmalloc (sizeof (struct symbol_search *)
4333 * nfound);
4334 symp = found;
4335 for (i = 0; i < nfound; i++)
4336 {
4337 gdb_assert (symp != NULL);
4338 gdb_assert (symp->block >= 0 && symp->block <= 1);
4339 symbols[i] = symp;
4340 symp = symp->next;
4341 }
4342 gdb_assert (symp == NULL);
4343
4344 qsort (symbols, nfound, sizeof (struct symbol_search *),
4345 compare_search_syms);
4346
4347 /* Collapse out the dups. */
4348 for (i = 1, j = 1; i < nfound; ++i)
4349 {
4350 if (compare_search_syms (&symbols[j - 1], &symbols[i]) != 0)
4351 symbols[j++] = symbols[i];
4352 else
4353 xfree (symbols[i]);
4354 }
4355 nunique = j;
4356 symbols[j - 1]->next = NULL;
4357
4358 /* Rebuild the linked list. */
4359 for (i = 0; i < nunique - 1; i++)
4360 symbols[i]->next = symbols[i + 1];
4361 symbols[nunique - 1]->next = NULL;
4362
4363 *new_head = symbols[0];
4364 *new_tail = symbols[nunique - 1];
4365 xfree (symbols);
4366 }
4367
4368 /* An object of this type is passed as the user_data to the
4369 expand_symtabs_matching method. */
4370 struct search_symbols_data
4371 {
4372 int nfiles;
4373 const char **files;
4374
4375 /* It is true if PREG contains valid data, false otherwise. */
4376 unsigned preg_p : 1;
4377 regex_t preg;
4378 };
4379
4380 /* A callback for expand_symtabs_matching. */
4381
4382 static int
4383 search_symbols_file_matches (const char *filename, void *user_data,
4384 int basenames)
4385 {
4386 struct search_symbols_data *data = user_data;
4387
4388 return file_matches (filename, data->files, data->nfiles, basenames);
4389 }
4390
4391 /* A callback for expand_symtabs_matching. */
4392
4393 static int
4394 search_symbols_name_matches (const char *symname, void *user_data)
4395 {
4396 struct search_symbols_data *data = user_data;
4397
4398 return !data->preg_p || regexec (&data->preg, symname, 0, NULL, 0) == 0;
4399 }
4400
4401 /* Search the symbol table for matches to the regular expression REGEXP,
4402 returning the results in *MATCHES.
4403
4404 Only symbols of KIND are searched:
4405 VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
4406 and constants (enums)
4407 FUNCTIONS_DOMAIN - search all functions
4408 TYPES_DOMAIN - search all type names
4409 ALL_DOMAIN - an internal error for this function
4410
4411 free_search_symbols should be called when *MATCHES is no longer needed.
4412
4413 Within each file the results are sorted locally; each symtab's global and
4414 static blocks are separately alphabetized.
4415 Duplicate entries are removed. */
4416
4417 void
4418 search_symbols (const char *regexp, enum search_domain kind,
4419 int nfiles, const char *files[],
4420 struct symbol_search **matches)
4421 {
4422 struct compunit_symtab *cust;
4423 const struct blockvector *bv;
4424 struct block *b;
4425 int i = 0;
4426 struct block_iterator iter;
4427 struct symbol *sym;
4428 struct objfile *objfile;
4429 struct minimal_symbol *msymbol;
4430 int found_misc = 0;
4431 static const enum minimal_symbol_type types[]
4432 = {mst_data, mst_text, mst_abs};
4433 static const enum minimal_symbol_type types2[]
4434 = {mst_bss, mst_file_text, mst_abs};
4435 static const enum minimal_symbol_type types3[]
4436 = {mst_file_data, mst_solib_trampoline, mst_abs};
4437 static const enum minimal_symbol_type types4[]
4438 = {mst_file_bss, mst_text_gnu_ifunc, mst_abs};
4439 enum minimal_symbol_type ourtype;
4440 enum minimal_symbol_type ourtype2;
4441 enum minimal_symbol_type ourtype3;
4442 enum minimal_symbol_type ourtype4;
4443 struct symbol_search *found;
4444 struct symbol_search *tail;
4445 struct search_symbols_data datum;
4446 int nfound;
4447
4448 /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
4449 CLEANUP_CHAIN is freed only in the case of an error. */
4450 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
4451 struct cleanup *retval_chain;
4452
4453 gdb_assert (kind <= TYPES_DOMAIN);
4454
4455 ourtype = types[kind];
4456 ourtype2 = types2[kind];
4457 ourtype3 = types3[kind];
4458 ourtype4 = types4[kind];
4459
4460 *matches = NULL;
4461 datum.preg_p = 0;
4462
4463 if (regexp != NULL)
4464 {
4465 /* Make sure spacing is right for C++ operators.
4466 This is just a courtesy to make the matching less sensitive
4467 to how many spaces the user leaves between 'operator'
4468 and <TYPENAME> or <OPERATOR>. */
4469 const char *opend;
4470 const char *opname = operator_chars (regexp, &opend);
4471 int errcode;
4472
4473 if (*opname)
4474 {
4475 int fix = -1; /* -1 means ok; otherwise number of
4476 spaces needed. */
4477
4478 if (isalpha (*opname) || *opname == '_' || *opname == '$')
4479 {
4480 /* There should 1 space between 'operator' and 'TYPENAME'. */
4481 if (opname[-1] != ' ' || opname[-2] == ' ')
4482 fix = 1;
4483 }
4484 else
4485 {
4486 /* There should 0 spaces between 'operator' and 'OPERATOR'. */
4487 if (opname[-1] == ' ')
4488 fix = 0;
4489 }
4490 /* If wrong number of spaces, fix it. */
4491 if (fix >= 0)
4492 {
4493 char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1);
4494
4495 sprintf (tmp, "operator%.*s%s", fix, " ", opname);
4496 regexp = tmp;
4497 }
4498 }
4499
4500 errcode = regcomp (&datum.preg, regexp,
4501 REG_NOSUB | (case_sensitivity == case_sensitive_off
4502 ? REG_ICASE : 0));
4503 if (errcode != 0)
4504 {
4505 char *err = get_regcomp_error (errcode, &datum.preg);
4506
4507 make_cleanup (xfree, err);
4508 error (_("Invalid regexp (%s): %s"), err, regexp);
4509 }
4510 datum.preg_p = 1;
4511 make_regfree_cleanup (&datum.preg);
4512 }
4513
4514 /* Search through the partial symtabs *first* for all symbols
4515 matching the regexp. That way we don't have to reproduce all of
4516 the machinery below. */
4517
4518 datum.nfiles = nfiles;
4519 datum.files = files;
4520 expand_symtabs_matching ((nfiles == 0
4521 ? NULL
4522 : search_symbols_file_matches),
4523 search_symbols_name_matches,
4524 kind, &datum);
4525
4526 /* Here, we search through the minimal symbol tables for functions
4527 and variables that match, and force their symbols to be read.
4528 This is in particular necessary for demangled variable names,
4529 which are no longer put into the partial symbol tables.
4530 The symbol will then be found during the scan of symtabs below.
4531
4532 For functions, find_pc_symtab should succeed if we have debug info
4533 for the function, for variables we have to call
4534 lookup_symbol_in_objfile_from_linkage_name to determine if the variable
4535 has debug info.
4536 If the lookup fails, set found_misc so that we will rescan to print
4537 any matching symbols without debug info.
4538 We only search the objfile the msymbol came from, we no longer search
4539 all objfiles. In large programs (1000s of shared libs) searching all
4540 objfiles is not worth the pain. */
4541
4542 if (nfiles == 0 && (kind == VARIABLES_DOMAIN || kind == FUNCTIONS_DOMAIN))
4543 {
4544 ALL_MSYMBOLS (objfile, msymbol)
4545 {
4546 QUIT;
4547
4548 if (msymbol->created_by_gdb)
4549 continue;
4550
4551 if (MSYMBOL_TYPE (msymbol) == ourtype
4552 || MSYMBOL_TYPE (msymbol) == ourtype2
4553 || MSYMBOL_TYPE (msymbol) == ourtype3
4554 || MSYMBOL_TYPE (msymbol) == ourtype4)
4555 {
4556 if (!datum.preg_p
4557 || regexec (&datum.preg, MSYMBOL_NATURAL_NAME (msymbol), 0,
4558 NULL, 0) == 0)
4559 {
4560 /* Note: An important side-effect of these lookup functions
4561 is to expand the symbol table if msymbol is found, for the
4562 benefit of the next loop on ALL_COMPUNITS. */
4563 if (kind == FUNCTIONS_DOMAIN
4564 ? (find_pc_compunit_symtab
4565 (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL)
4566 : (lookup_symbol_in_objfile_from_linkage_name
4567 (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4568 == NULL))
4569 found_misc = 1;
4570 }
4571 }
4572 }
4573 }
4574
4575 found = NULL;
4576 tail = NULL;
4577 nfound = 0;
4578 retval_chain = make_cleanup_free_search_symbols (&found);
4579
4580 ALL_COMPUNITS (objfile, cust)
4581 {
4582 bv = COMPUNIT_BLOCKVECTOR (cust);
4583 for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
4584 {
4585 b = BLOCKVECTOR_BLOCK (bv, i);
4586 ALL_BLOCK_SYMBOLS (b, iter, sym)
4587 {
4588 struct symtab *real_symtab = symbol_symtab (sym);
4589
4590 QUIT;
4591
4592 /* Check first sole REAL_SYMTAB->FILENAME. It does not need to be
4593 a substring of symtab_to_fullname as it may contain "./" etc. */
4594 if ((file_matches (real_symtab->filename, files, nfiles, 0)
4595 || ((basenames_may_differ
4596 || file_matches (lbasename (real_symtab->filename),
4597 files, nfiles, 1))
4598 && file_matches (symtab_to_fullname (real_symtab),
4599 files, nfiles, 0)))
4600 && ((!datum.preg_p
4601 || regexec (&datum.preg, SYMBOL_NATURAL_NAME (sym), 0,
4602 NULL, 0) == 0)
4603 && ((kind == VARIABLES_DOMAIN
4604 && SYMBOL_CLASS (sym) != LOC_TYPEDEF
4605 && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
4606 && SYMBOL_CLASS (sym) != LOC_BLOCK
4607 /* LOC_CONST can be used for more than just enums,
4608 e.g., c++ static const members.
4609 We only want to skip enums here. */
4610 && !(SYMBOL_CLASS (sym) == LOC_CONST
4611 && (TYPE_CODE (SYMBOL_TYPE (sym))
4612 == TYPE_CODE_ENUM)))
4613 || (kind == FUNCTIONS_DOMAIN
4614 && SYMBOL_CLASS (sym) == LOC_BLOCK)
4615 || (kind == TYPES_DOMAIN
4616 && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
4617 {
4618 /* match */
4619 struct symbol_search *psr = (struct symbol_search *)
4620 xmalloc (sizeof (struct symbol_search));
4621 psr->block = i;
4622 psr->symbol = sym;
4623 memset (&psr->msymbol, 0, sizeof (psr->msymbol));
4624 psr->next = NULL;
4625 if (tail == NULL)
4626 found = psr;
4627 else
4628 tail->next = psr;
4629 tail = psr;
4630 nfound ++;
4631 }
4632 }
4633 }
4634 }
4635
4636 if (found != NULL)
4637 {
4638 sort_search_symbols_remove_dups (found, nfound, &found, &tail);
4639 /* Note: nfound is no longer useful beyond this point. */
4640 }
4641
4642 /* If there are no eyes, avoid all contact. I mean, if there are
4643 no debug symbols, then add matching minsyms. */
4644
4645 if (found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
4646 {
4647 ALL_MSYMBOLS (objfile, msymbol)
4648 {
4649 QUIT;
4650
4651 if (msymbol->created_by_gdb)
4652 continue;
4653
4654 if (MSYMBOL_TYPE (msymbol) == ourtype
4655 || MSYMBOL_TYPE (msymbol) == ourtype2
4656 || MSYMBOL_TYPE (msymbol) == ourtype3
4657 || MSYMBOL_TYPE (msymbol) == ourtype4)
4658 {
4659 if (!datum.preg_p
4660 || regexec (&datum.preg, MSYMBOL_NATURAL_NAME (msymbol), 0,
4661 NULL, 0) == 0)
4662 {
4663 /* For functions we can do a quick check of whether the
4664 symbol might be found via find_pc_symtab. */
4665 if (kind != FUNCTIONS_DOMAIN
4666 || (find_pc_compunit_symtab
4667 (MSYMBOL_VALUE_ADDRESS (objfile, msymbol)) == NULL))
4668 {
4669 if (lookup_symbol_in_objfile_from_linkage_name
4670 (objfile, MSYMBOL_LINKAGE_NAME (msymbol), VAR_DOMAIN)
4671 == NULL)
4672 {
4673 /* match */
4674 struct symbol_search *psr = (struct symbol_search *)
4675 xmalloc (sizeof (struct symbol_search));
4676 psr->block = i;
4677 psr->msymbol.minsym = msymbol;
4678 psr->msymbol.objfile = objfile;
4679 psr->symbol = NULL;
4680 psr->next = NULL;
4681 if (tail == NULL)
4682 found = psr;
4683 else
4684 tail->next = psr;
4685 tail = psr;
4686 }
4687 }
4688 }
4689 }
4690 }
4691 }
4692
4693 discard_cleanups (retval_chain);
4694 do_cleanups (old_chain);
4695 *matches = found;
4696 }
4697
4698 /* Helper function for symtab_symbol_info, this function uses
4699 the data returned from search_symbols() to print information
4700 regarding the match to gdb_stdout. */
4701
4702 static void
4703 print_symbol_info (enum search_domain kind,
4704 struct symbol *sym,
4705 int block, const char *last)
4706 {
4707 struct symtab *s = symbol_symtab (sym);
4708 const char *s_filename = symtab_to_filename_for_display (s);
4709
4710 if (last == NULL || filename_cmp (last, s_filename) != 0)
4711 {
4712 fputs_filtered ("\nFile ", gdb_stdout);
4713 fputs_filtered (s_filename, gdb_stdout);
4714 fputs_filtered (":\n", gdb_stdout);
4715 }
4716
4717 if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
4718 printf_filtered ("static ");
4719
4720 /* Typedef that is not a C++ class. */
4721 if (kind == TYPES_DOMAIN
4722 && SYMBOL_DOMAIN (sym) != STRUCT_DOMAIN)
4723 typedef_print (SYMBOL_TYPE (sym), sym, gdb_stdout);
4724 /* variable, func, or typedef-that-is-c++-class. */
4725 else if (kind < TYPES_DOMAIN
4726 || (kind == TYPES_DOMAIN
4727 && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN))
4728 {
4729 type_print (SYMBOL_TYPE (sym),
4730 (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4731 ? "" : SYMBOL_PRINT_NAME (sym)),
4732 gdb_stdout, 0);
4733
4734 printf_filtered (";\n");
4735 }
4736 }
4737
4738 /* This help function for symtab_symbol_info() prints information
4739 for non-debugging symbols to gdb_stdout. */
4740
4741 static void
4742 print_msymbol_info (struct bound_minimal_symbol msymbol)
4743 {
4744 struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
4745 char *tmp;
4746
4747 if (gdbarch_addr_bit (gdbarch) <= 32)
4748 tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol)
4749 & (CORE_ADDR) 0xffffffff,
4750 8);
4751 else
4752 tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol),
4753 16);
4754 printf_filtered ("%s %s\n",
4755 tmp, MSYMBOL_PRINT_NAME (msymbol.minsym));
4756 }
4757
4758 /* This is the guts of the commands "info functions", "info types", and
4759 "info variables". It calls search_symbols to find all matches and then
4760 print_[m]symbol_info to print out some useful information about the
4761 matches. */
4762
4763 static void
4764 symtab_symbol_info (char *regexp, enum search_domain kind, int from_tty)
4765 {
4766 static const char * const classnames[] =
4767 {"variable", "function", "type"};
4768 struct symbol_search *symbols;
4769 struct symbol_search *p;
4770 struct cleanup *old_chain;
4771 const char *last_filename = NULL;
4772 int first = 1;
4773
4774 gdb_assert (kind <= TYPES_DOMAIN);
4775
4776 /* Must make sure that if we're interrupted, symbols gets freed. */
4777 search_symbols (regexp, kind, 0, NULL, &symbols);
4778 old_chain = make_cleanup_free_search_symbols (&symbols);
4779
4780 if (regexp != NULL)
4781 printf_filtered (_("All %ss matching regular expression \"%s\":\n"),
4782 classnames[kind], regexp);
4783 else
4784 printf_filtered (_("All defined %ss:\n"), classnames[kind]);
4785
4786 for (p = symbols; p != NULL; p = p->next)
4787 {
4788 QUIT;
4789
4790 if (p->msymbol.minsym != NULL)
4791 {
4792 if (first)
4793 {
4794 printf_filtered (_("\nNon-debugging symbols:\n"));
4795 first = 0;
4796 }
4797 print_msymbol_info (p->msymbol);
4798 }
4799 else
4800 {
4801 print_symbol_info (kind,
4802 p->symbol,
4803 p->block,
4804 last_filename);
4805 last_filename
4806 = symtab_to_filename_for_display (symbol_symtab (p->symbol));
4807 }
4808 }
4809
4810 do_cleanups (old_chain);
4811 }
4812
4813 static void
4814 variables_info (char *regexp, int from_tty)
4815 {
4816 symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
4817 }
4818
4819 static void
4820 functions_info (char *regexp, int from_tty)
4821 {
4822 symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
4823 }
4824
4825
4826 static void
4827 types_info (char *regexp, int from_tty)
4828 {
4829 symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
4830 }
4831
4832 /* Breakpoint all functions matching regular expression. */
4833
4834 void
4835 rbreak_command_wrapper (char *regexp, int from_tty)
4836 {
4837 rbreak_command (regexp, from_tty);
4838 }
4839
4840 /* A cleanup function that calls end_rbreak_breakpoints. */
4841
4842 static void
4843 do_end_rbreak_breakpoints (void *ignore)
4844 {
4845 end_rbreak_breakpoints ();
4846 }
4847
4848 static void
4849 rbreak_command (char *regexp, int from_tty)
4850 {
4851 struct symbol_search *ss;
4852 struct symbol_search *p;
4853 struct cleanup *old_chain;
4854 char *string = NULL;
4855 int len = 0;
4856 const char **files = NULL;
4857 const char *file_name;
4858 int nfiles = 0;
4859
4860 if (regexp)
4861 {
4862 char *colon = strchr (regexp, ':');
4863
4864 if (colon && *(colon + 1) != ':')
4865 {
4866 int colon_index;
4867 char *local_name;
4868
4869 colon_index = colon - regexp;
4870 local_name = alloca (colon_index + 1);
4871 memcpy (local_name, regexp, colon_index);
4872 local_name[colon_index--] = 0;
4873 while (isspace (local_name[colon_index]))
4874 local_name[colon_index--] = 0;
4875 file_name = local_name;
4876 files = &file_name;
4877 nfiles = 1;
4878 regexp = skip_spaces (colon + 1);
4879 }
4880 }
4881
4882 search_symbols (regexp, FUNCTIONS_DOMAIN, nfiles, files, &ss);
4883 old_chain = make_cleanup_free_search_symbols (&ss);
4884 make_cleanup (free_current_contents, &string);
4885
4886 start_rbreak_breakpoints ();
4887 make_cleanup (do_end_rbreak_breakpoints, NULL);
4888 for (p = ss; p != NULL; p = p->next)
4889 {
4890 if (p->msymbol.minsym == NULL)
4891 {
4892 struct symtab *symtab = symbol_symtab (p->symbol);
4893 const char *fullname = symtab_to_fullname (symtab);
4894
4895 int newlen = (strlen (fullname)
4896 + strlen (SYMBOL_LINKAGE_NAME (p->symbol))
4897 + 4);
4898
4899 if (newlen > len)
4900 {
4901 string = xrealloc (string, newlen);
4902 len = newlen;
4903 }
4904 strcpy (string, fullname);
4905 strcat (string, ":'");
4906 strcat (string, SYMBOL_LINKAGE_NAME (p->symbol));
4907 strcat (string, "'");
4908 break_command (string, from_tty);
4909 print_symbol_info (FUNCTIONS_DOMAIN,
4910 p->symbol,
4911 p->block,
4912 symtab_to_filename_for_display (symtab));
4913 }
4914 else
4915 {
4916 int newlen = (strlen (MSYMBOL_LINKAGE_NAME (p->msymbol.minsym)) + 3);
4917
4918 if (newlen > len)
4919 {
4920 string = xrealloc (string, newlen);
4921 len = newlen;
4922 }
4923 strcpy (string, "'");
4924 strcat (string, MSYMBOL_LINKAGE_NAME (p->msymbol.minsym));
4925 strcat (string, "'");
4926
4927 break_command (string, from_tty);
4928 printf_filtered ("<function, no debug info> %s;\n",
4929 MSYMBOL_PRINT_NAME (p->msymbol.minsym));
4930 }
4931 }
4932
4933 do_cleanups (old_chain);
4934 }
4935 \f
4936
4937 /* Evaluate if NAME matches SYM_TEXT and SYM_TEXT_LEN.
4938
4939 Either sym_text[sym_text_len] != '(' and then we search for any
4940 symbol starting with SYM_TEXT text.
4941
4942 Otherwise sym_text[sym_text_len] == '(' and then we require symbol name to
4943 be terminated at that point. Partial symbol tables do not have parameters
4944 information. */
4945
4946 static int
4947 compare_symbol_name (const char *name, const char *sym_text, int sym_text_len)
4948 {
4949 int (*ncmp) (const char *, const char *, size_t);
4950
4951 ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
4952
4953 if (ncmp (name, sym_text, sym_text_len) != 0)
4954 return 0;
4955
4956 if (sym_text[sym_text_len] == '(')
4957 {
4958 /* User searches for `name(someth...'. Require NAME to be terminated.
4959 Normally psymtabs and gdbindex have no parameter types so '\0' will be
4960 present but accept even parameters presence. In this case this
4961 function is in fact strcmp_iw but whitespace skipping is not supported
4962 for tab completion. */
4963
4964 if (name[sym_text_len] != '\0' && name[sym_text_len] != '(')
4965 return 0;
4966 }
4967
4968 return 1;
4969 }
4970
4971 /* Free any memory associated with a completion list. */
4972
4973 static void
4974 free_completion_list (VEC (char_ptr) **list_ptr)
4975 {
4976 int i;
4977 char *p;
4978
4979 for (i = 0; VEC_iterate (char_ptr, *list_ptr, i, p); ++i)
4980 xfree (p);
4981 VEC_free (char_ptr, *list_ptr);
4982 }
4983
4984 /* Callback for make_cleanup. */
4985
4986 static void
4987 do_free_completion_list (void *list)
4988 {
4989 free_completion_list (list);
4990 }
4991
4992 /* Helper routine for make_symbol_completion_list. */
4993
4994 static VEC (char_ptr) *return_val;
4995
4996 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
4997 completion_list_add_name \
4998 (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
4999
5000 #define MCOMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
5001 completion_list_add_name \
5002 (MSYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
5003
5004 /* Test to see if the symbol specified by SYMNAME (which is already
5005 demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
5006 characters. If so, add it to the current completion list. */
5007
5008 static void
5009 completion_list_add_name (const char *symname,
5010 const char *sym_text, int sym_text_len,
5011 const char *text, const char *word)
5012 {
5013 /* Clip symbols that cannot match. */
5014 if (!compare_symbol_name (symname, sym_text, sym_text_len))
5015 return;
5016
5017 /* We have a match for a completion, so add SYMNAME to the current list
5018 of matches. Note that the name is moved to freshly malloc'd space. */
5019
5020 {
5021 char *new;
5022
5023 if (word == sym_text)
5024 {
5025 new = xmalloc (strlen (symname) + 5);
5026 strcpy (new, symname);
5027 }
5028 else if (word > sym_text)
5029 {
5030 /* Return some portion of symname. */
5031 new = xmalloc (strlen (symname) + 5);
5032 strcpy (new, symname + (word - sym_text));
5033 }
5034 else
5035 {
5036 /* Return some of SYM_TEXT plus symname. */
5037 new = xmalloc (strlen (symname) + (sym_text - word) + 5);
5038 strncpy (new, word, sym_text - word);
5039 new[sym_text - word] = '\0';
5040 strcat (new, symname);
5041 }
5042
5043 VEC_safe_push (char_ptr, return_val, new);
5044 }
5045 }
5046
5047 /* ObjC: In case we are completing on a selector, look as the msymbol
5048 again and feed all the selectors into the mill. */
5049
5050 static void
5051 completion_list_objc_symbol (struct minimal_symbol *msymbol,
5052 const char *sym_text, int sym_text_len,
5053 const char *text, const char *word)
5054 {
5055 static char *tmp = NULL;
5056 static unsigned int tmplen = 0;
5057
5058 const char *method, *category, *selector;
5059 char *tmp2 = NULL;
5060
5061 method = MSYMBOL_NATURAL_NAME (msymbol);
5062
5063 /* Is it a method? */
5064 if ((method[0] != '-') && (method[0] != '+'))
5065 return;
5066
5067 if (sym_text[0] == '[')
5068 /* Complete on shortened method method. */
5069 completion_list_add_name (method + 1, sym_text, sym_text_len, text, word);
5070
5071 while ((strlen (method) + 1) >= tmplen)
5072 {
5073 if (tmplen == 0)
5074 tmplen = 1024;
5075 else
5076 tmplen *= 2;
5077 tmp = xrealloc (tmp, tmplen);
5078 }
5079 selector = strchr (method, ' ');
5080 if (selector != NULL)
5081 selector++;
5082
5083 category = strchr (method, '(');
5084
5085 if ((category != NULL) && (selector != NULL))
5086 {
5087 memcpy (tmp, method, (category - method));
5088 tmp[category - method] = ' ';
5089 memcpy (tmp + (category - method) + 1, selector, strlen (selector) + 1);
5090 completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
5091 if (sym_text[0] == '[')
5092 completion_list_add_name (tmp + 1, sym_text, sym_text_len, text, word);
5093 }
5094
5095 if (selector != NULL)
5096 {
5097 /* Complete on selector only. */
5098 strcpy (tmp, selector);
5099 tmp2 = strchr (tmp, ']');
5100 if (tmp2 != NULL)
5101 *tmp2 = '\0';
5102
5103 completion_list_add_name (tmp, sym_text, sym_text_len, text, word);
5104 }
5105 }
5106
5107 /* Break the non-quoted text based on the characters which are in
5108 symbols. FIXME: This should probably be language-specific. */
5109
5110 static const char *
5111 language_search_unquoted_string (const char *text, const char *p)
5112 {
5113 for (; p > text; --p)
5114 {
5115 if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
5116 continue;
5117 else
5118 {
5119 if ((current_language->la_language == language_objc))
5120 {
5121 if (p[-1] == ':') /* Might be part of a method name. */
5122 continue;
5123 else if (p[-1] == '[' && (p[-2] == '-' || p[-2] == '+'))
5124 p -= 2; /* Beginning of a method name. */
5125 else if (p[-1] == ' ' || p[-1] == '(' || p[-1] == ')')
5126 { /* Might be part of a method name. */
5127 const char *t = p;
5128
5129 /* Seeing a ' ' or a '(' is not conclusive evidence
5130 that we are in the middle of a method name. However,
5131 finding "-[" or "+[" should be pretty un-ambiguous.
5132 Unfortunately we have to find it now to decide. */
5133
5134 while (t > text)
5135 if (isalnum (t[-1]) || t[-1] == '_' ||
5136 t[-1] == ' ' || t[-1] == ':' ||
5137 t[-1] == '(' || t[-1] == ')')
5138 --t;
5139 else
5140 break;
5141
5142 if (t[-1] == '[' && (t[-2] == '-' || t[-2] == '+'))
5143 p = t - 2; /* Method name detected. */
5144 /* Else we leave with p unchanged. */
5145 }
5146 }
5147 break;
5148 }
5149 }
5150 return p;
5151 }
5152
5153 static void
5154 completion_list_add_fields (struct symbol *sym, const char *sym_text,
5155 int sym_text_len, const char *text,
5156 const char *word)
5157 {
5158 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5159 {
5160 struct type *t = SYMBOL_TYPE (sym);
5161 enum type_code c = TYPE_CODE (t);
5162 int j;
5163
5164 if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
5165 for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
5166 if (TYPE_FIELD_NAME (t, j))
5167 completion_list_add_name (TYPE_FIELD_NAME (t, j),
5168 sym_text, sym_text_len, text, word);
5169 }
5170 }
5171
5172 /* Type of the user_data argument passed to add_macro_name or
5173 symbol_completion_matcher. The contents are simply whatever is
5174 needed by completion_list_add_name. */
5175 struct add_name_data
5176 {
5177 const char *sym_text;
5178 int sym_text_len;
5179 const char *text;
5180 const char *word;
5181 };
5182
5183 /* A callback used with macro_for_each and macro_for_each_in_scope.
5184 This adds a macro's name to the current completion list. */
5185
5186 static void
5187 add_macro_name (const char *name, const struct macro_definition *ignore,
5188 struct macro_source_file *ignore2, int ignore3,
5189 void *user_data)
5190 {
5191 struct add_name_data *datum = (struct add_name_data *) user_data;
5192
5193 completion_list_add_name (name,
5194 datum->sym_text, datum->sym_text_len,
5195 datum->text, datum->word);
5196 }
5197
5198 /* A callback for expand_symtabs_matching. */
5199
5200 static int
5201 symbol_completion_matcher (const char *name, void *user_data)
5202 {
5203 struct add_name_data *datum = (struct add_name_data *) user_data;
5204
5205 return compare_symbol_name (name, datum->sym_text, datum->sym_text_len);
5206 }
5207
5208 VEC (char_ptr) *
5209 default_make_symbol_completion_list_break_on (const char *text,
5210 const char *word,
5211 const char *break_on,
5212 enum type_code code)
5213 {
5214 /* Problem: All of the symbols have to be copied because readline
5215 frees them. I'm not going to worry about this; hopefully there
5216 won't be that many. */
5217
5218 struct symbol *sym;
5219 struct compunit_symtab *cust;
5220 struct minimal_symbol *msymbol;
5221 struct objfile *objfile;
5222 const struct block *b;
5223 const struct block *surrounding_static_block, *surrounding_global_block;
5224 struct block_iterator iter;
5225 /* The symbol we are completing on. Points in same buffer as text. */
5226 const char *sym_text;
5227 /* Length of sym_text. */
5228 int sym_text_len;
5229 struct add_name_data datum;
5230 struct cleanup *back_to;
5231
5232 /* Now look for the symbol we are supposed to complete on. */
5233 {
5234 const char *p;
5235 char quote_found;
5236 const char *quote_pos = NULL;
5237
5238 /* First see if this is a quoted string. */
5239 quote_found = '\0';
5240 for (p = text; *p != '\0'; ++p)
5241 {
5242 if (quote_found != '\0')
5243 {
5244 if (*p == quote_found)
5245 /* Found close quote. */
5246 quote_found = '\0';
5247 else if (*p == '\\' && p[1] == quote_found)
5248 /* A backslash followed by the quote character
5249 doesn't end the string. */
5250 ++p;
5251 }
5252 else if (*p == '\'' || *p == '"')
5253 {
5254 quote_found = *p;
5255 quote_pos = p;
5256 }
5257 }
5258 if (quote_found == '\'')
5259 /* A string within single quotes can be a symbol, so complete on it. */
5260 sym_text = quote_pos + 1;
5261 else if (quote_found == '"')
5262 /* A double-quoted string is never a symbol, nor does it make sense
5263 to complete it any other way. */
5264 {
5265 return NULL;
5266 }
5267 else
5268 {
5269 /* It is not a quoted string. Break it based on the characters
5270 which are in symbols. */
5271 while (p > text)
5272 {
5273 if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0'
5274 || p[-1] == ':' || strchr (break_on, p[-1]) != NULL)
5275 --p;
5276 else
5277 break;
5278 }
5279 sym_text = p;
5280 }
5281 }
5282
5283 sym_text_len = strlen (sym_text);
5284
5285 /* Prepare SYM_TEXT_LEN for compare_symbol_name. */
5286
5287 if (current_language->la_language == language_cplus
5288 || current_language->la_language == language_java
5289 || current_language->la_language == language_fortran)
5290 {
5291 /* These languages may have parameters entered by user but they are never
5292 present in the partial symbol tables. */
5293
5294 const char *cs = memchr (sym_text, '(', sym_text_len);
5295
5296 if (cs)
5297 sym_text_len = cs - sym_text;
5298 }
5299 gdb_assert (sym_text[sym_text_len] == '\0' || sym_text[sym_text_len] == '(');
5300
5301 return_val = NULL;
5302 back_to = make_cleanup (do_free_completion_list, &return_val);
5303
5304 datum.sym_text = sym_text;
5305 datum.sym_text_len = sym_text_len;
5306 datum.text = text;
5307 datum.word = word;
5308
5309 /* Look through the partial symtabs for all symbols which begin
5310 by matching SYM_TEXT. Expand all CUs that you find to the list.
5311 The real names will get added by COMPLETION_LIST_ADD_SYMBOL below. */
5312 expand_symtabs_matching (NULL, symbol_completion_matcher, ALL_DOMAIN,
5313 &datum);
5314
5315 /* At this point scan through the misc symbol vectors and add each
5316 symbol you find to the list. Eventually we want to ignore
5317 anything that isn't a text symbol (everything else will be
5318 handled by the psymtab code above). */
5319
5320 if (code == TYPE_CODE_UNDEF)
5321 {
5322 ALL_MSYMBOLS (objfile, msymbol)
5323 {
5324 QUIT;
5325 MCOMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text,
5326 word);
5327
5328 completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text,
5329 word);
5330 }
5331 }
5332
5333 /* Search upwards from currently selected frame (so that we can
5334 complete on local vars). Also catch fields of types defined in
5335 this places which match our text string. Only complete on types
5336 visible from current context. */
5337
5338 b = get_selected_block (0);
5339 surrounding_static_block = block_static_block (b);
5340 surrounding_global_block = block_global_block (b);
5341 if (surrounding_static_block != NULL)
5342 while (b != surrounding_static_block)
5343 {
5344 QUIT;
5345
5346 ALL_BLOCK_SYMBOLS (b, iter, sym)
5347 {
5348 if (code == TYPE_CODE_UNDEF)
5349 {
5350 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
5351 word);
5352 completion_list_add_fields (sym, sym_text, sym_text_len, text,
5353 word);
5354 }
5355 else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5356 && TYPE_CODE (SYMBOL_TYPE (sym)) == code)
5357 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
5358 word);
5359 }
5360
5361 /* Stop when we encounter an enclosing function. Do not stop for
5362 non-inlined functions - the locals of the enclosing function
5363 are in scope for a nested function. */
5364 if (BLOCK_FUNCTION (b) != NULL && block_inlined_p (b))
5365 break;
5366 b = BLOCK_SUPERBLOCK (b);
5367 }
5368
5369 /* Add fields from the file's types; symbols will be added below. */
5370
5371 if (code == TYPE_CODE_UNDEF)
5372 {
5373 if (surrounding_static_block != NULL)
5374 ALL_BLOCK_SYMBOLS (surrounding_static_block, iter, sym)
5375 completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
5376
5377 if (surrounding_global_block != NULL)
5378 ALL_BLOCK_SYMBOLS (surrounding_global_block, iter, sym)
5379 completion_list_add_fields (sym, sym_text, sym_text_len, text, word);
5380 }
5381
5382 /* Go through the symtabs and check the externs and statics for
5383 symbols which match. */
5384
5385 ALL_COMPUNITS (objfile, cust)
5386 {
5387 QUIT;
5388 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), GLOBAL_BLOCK);
5389 ALL_BLOCK_SYMBOLS (b, iter, sym)
5390 {
5391 if (code == TYPE_CODE_UNDEF
5392 || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5393 && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
5394 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
5395 }
5396 }
5397
5398 ALL_COMPUNITS (objfile, cust)
5399 {
5400 QUIT;
5401 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), STATIC_BLOCK);
5402 ALL_BLOCK_SYMBOLS (b, iter, sym)
5403 {
5404 if (code == TYPE_CODE_UNDEF
5405 || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
5406 && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
5407 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
5408 }
5409 }
5410
5411 /* Skip macros if we are completing a struct tag -- arguable but
5412 usually what is expected. */
5413 if (current_language->la_macro_expansion == macro_expansion_c
5414 && code == TYPE_CODE_UNDEF)
5415 {
5416 struct macro_scope *scope;
5417
5418 /* Add any macros visible in the default scope. Note that this
5419 may yield the occasional wrong result, because an expression
5420 might be evaluated in a scope other than the default. For
5421 example, if the user types "break file:line if <TAB>", the
5422 resulting expression will be evaluated at "file:line" -- but
5423 at there does not seem to be a way to detect this at
5424 completion time. */
5425 scope = default_macro_scope ();
5426 if (scope)
5427 {
5428 macro_for_each_in_scope (scope->file, scope->line,
5429 add_macro_name, &datum);
5430 xfree (scope);
5431 }
5432
5433 /* User-defined macros are always visible. */
5434 macro_for_each (macro_user_macros, add_macro_name, &datum);
5435 }
5436
5437 discard_cleanups (back_to);
5438 return (return_val);
5439 }
5440
5441 VEC (char_ptr) *
5442 default_make_symbol_completion_list (const char *text, const char *word,
5443 enum type_code code)
5444 {
5445 return default_make_symbol_completion_list_break_on (text, word, "", code);
5446 }
5447
5448 /* Return a vector of all symbols (regardless of class) which begin by
5449 matching TEXT. If the answer is no symbols, then the return value
5450 is NULL. */
5451
5452 VEC (char_ptr) *
5453 make_symbol_completion_list (const char *text, const char *word)
5454 {
5455 return current_language->la_make_symbol_completion_list (text, word,
5456 TYPE_CODE_UNDEF);
5457 }
5458
5459 /* Like make_symbol_completion_list, but only return STRUCT_DOMAIN
5460 symbols whose type code is CODE. */
5461
5462 VEC (char_ptr) *
5463 make_symbol_completion_type (const char *text, const char *word,
5464 enum type_code code)
5465 {
5466 gdb_assert (code == TYPE_CODE_UNION
5467 || code == TYPE_CODE_STRUCT
5468 || code == TYPE_CODE_ENUM);
5469 return current_language->la_make_symbol_completion_list (text, word, code);
5470 }
5471
5472 /* Like make_symbol_completion_list, but suitable for use as a
5473 completion function. */
5474
5475 VEC (char_ptr) *
5476 make_symbol_completion_list_fn (struct cmd_list_element *ignore,
5477 const char *text, const char *word)
5478 {
5479 return make_symbol_completion_list (text, word);
5480 }
5481
5482 /* Like make_symbol_completion_list, but returns a list of symbols
5483 defined in a source file FILE. */
5484
5485 VEC (char_ptr) *
5486 make_file_symbol_completion_list (const char *text, const char *word,
5487 const char *srcfile)
5488 {
5489 struct symbol *sym;
5490 struct symtab *s;
5491 struct block *b;
5492 struct block_iterator iter;
5493 /* The symbol we are completing on. Points in same buffer as text. */
5494 const char *sym_text;
5495 /* Length of sym_text. */
5496 int sym_text_len;
5497
5498 /* Now look for the symbol we are supposed to complete on.
5499 FIXME: This should be language-specific. */
5500 {
5501 const char *p;
5502 char quote_found;
5503 const char *quote_pos = NULL;
5504
5505 /* First see if this is a quoted string. */
5506 quote_found = '\0';
5507 for (p = text; *p != '\0'; ++p)
5508 {
5509 if (quote_found != '\0')
5510 {
5511 if (*p == quote_found)
5512 /* Found close quote. */
5513 quote_found = '\0';
5514 else if (*p == '\\' && p[1] == quote_found)
5515 /* A backslash followed by the quote character
5516 doesn't end the string. */
5517 ++p;
5518 }
5519 else if (*p == '\'' || *p == '"')
5520 {
5521 quote_found = *p;
5522 quote_pos = p;
5523 }
5524 }
5525 if (quote_found == '\'')
5526 /* A string within single quotes can be a symbol, so complete on it. */
5527 sym_text = quote_pos + 1;
5528 else if (quote_found == '"')
5529 /* A double-quoted string is never a symbol, nor does it make sense
5530 to complete it any other way. */
5531 {
5532 return NULL;
5533 }
5534 else
5535 {
5536 /* Not a quoted string. */
5537 sym_text = language_search_unquoted_string (text, p);
5538 }
5539 }
5540
5541 sym_text_len = strlen (sym_text);
5542
5543 return_val = NULL;
5544
5545 /* Find the symtab for SRCFILE (this loads it if it was not yet read
5546 in). */
5547 s = lookup_symtab (srcfile);
5548 if (s == NULL)
5549 {
5550 /* Maybe they typed the file with leading directories, while the
5551 symbol tables record only its basename. */
5552 const char *tail = lbasename (srcfile);
5553
5554 if (tail > srcfile)
5555 s = lookup_symtab (tail);
5556 }
5557
5558 /* If we have no symtab for that file, return an empty list. */
5559 if (s == NULL)
5560 return (return_val);
5561
5562 /* Go through this symtab and check the externs and statics for
5563 symbols which match. */
5564
5565 b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (s), GLOBAL_BLOCK);
5566 ALL_BLOCK_SYMBOLS (b, iter, sym)
5567 {
5568 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
5569 }
5570
5571 b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (s), STATIC_BLOCK);
5572 ALL_BLOCK_SYMBOLS (b, iter, sym)
5573 {
5574 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
5575 }
5576
5577 return (return_val);
5578 }
5579
5580 /* A helper function for make_source_files_completion_list. It adds
5581 another file name to a list of possible completions, growing the
5582 list as necessary. */
5583
5584 static void
5585 add_filename_to_list (const char *fname, const char *text, const char *word,
5586 VEC (char_ptr) **list)
5587 {
5588 char *new;
5589 size_t fnlen = strlen (fname);
5590
5591 if (word == text)
5592 {
5593 /* Return exactly fname. */
5594 new = xmalloc (fnlen + 5);
5595 strcpy (new, fname);
5596 }
5597 else if (word > text)
5598 {
5599 /* Return some portion of fname. */
5600 new = xmalloc (fnlen + 5);
5601 strcpy (new, fname + (word - text));
5602 }
5603 else
5604 {
5605 /* Return some of TEXT plus fname. */
5606 new = xmalloc (fnlen + (text - word) + 5);
5607 strncpy (new, word, text - word);
5608 new[text - word] = '\0';
5609 strcat (new, fname);
5610 }
5611 VEC_safe_push (char_ptr, *list, new);
5612 }
5613
5614 static int
5615 not_interesting_fname (const char *fname)
5616 {
5617 static const char *illegal_aliens[] = {
5618 "_globals_", /* inserted by coff_symtab_read */
5619 NULL
5620 };
5621 int i;
5622
5623 for (i = 0; illegal_aliens[i]; i++)
5624 {
5625 if (filename_cmp (fname, illegal_aliens[i]) == 0)
5626 return 1;
5627 }
5628 return 0;
5629 }
5630
5631 /* An object of this type is passed as the user_data argument to
5632 map_partial_symbol_filenames. */
5633 struct add_partial_filename_data
5634 {
5635 struct filename_seen_cache *filename_seen_cache;
5636 const char *text;
5637 const char *word;
5638 int text_len;
5639 VEC (char_ptr) **list;
5640 };
5641
5642 /* A callback for map_partial_symbol_filenames. */
5643
5644 static void
5645 maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
5646 void *user_data)
5647 {
5648 struct add_partial_filename_data *data = user_data;
5649
5650 if (not_interesting_fname (filename))
5651 return;
5652 if (!filename_seen (data->filename_seen_cache, filename, 1)
5653 && filename_ncmp (filename, data->text, data->text_len) == 0)
5654 {
5655 /* This file matches for a completion; add it to the
5656 current list of matches. */
5657 add_filename_to_list (filename, data->text, data->word, data->list);
5658 }
5659 else
5660 {
5661 const char *base_name = lbasename (filename);
5662
5663 if (base_name != filename
5664 && !filename_seen (data->filename_seen_cache, base_name, 1)
5665 && filename_ncmp (base_name, data->text, data->text_len) == 0)
5666 add_filename_to_list (base_name, data->text, data->word, data->list);
5667 }
5668 }
5669
5670 /* Return a vector of all source files whose names begin with matching
5671 TEXT. The file names are looked up in the symbol tables of this
5672 program. If the answer is no matchess, then the return value is
5673 NULL. */
5674
5675 VEC (char_ptr) *
5676 make_source_files_completion_list (const char *text, const char *word)
5677 {
5678 struct compunit_symtab *cu;
5679 struct symtab *s;
5680 struct objfile *objfile;
5681 size_t text_len = strlen (text);
5682 VEC (char_ptr) *list = NULL;
5683 const char *base_name;
5684 struct add_partial_filename_data datum;
5685 struct filename_seen_cache *filename_seen_cache;
5686 struct cleanup *back_to, *cache_cleanup;
5687
5688 if (!have_full_symbols () && !have_partial_symbols ())
5689 return list;
5690
5691 back_to = make_cleanup (do_free_completion_list, &list);
5692
5693 filename_seen_cache = create_filename_seen_cache ();
5694 cache_cleanup = make_cleanup (delete_filename_seen_cache,
5695 filename_seen_cache);
5696
5697 ALL_FILETABS (objfile, cu, s)
5698 {
5699 if (not_interesting_fname (s->filename))
5700 continue;
5701 if (!filename_seen (filename_seen_cache, s->filename, 1)
5702 && filename_ncmp (s->filename, text, text_len) == 0)
5703 {
5704 /* This file matches for a completion; add it to the current
5705 list of matches. */
5706 add_filename_to_list (s->filename, text, word, &list);
5707 }
5708 else
5709 {
5710 /* NOTE: We allow the user to type a base name when the
5711 debug info records leading directories, but not the other
5712 way around. This is what subroutines of breakpoint
5713 command do when they parse file names. */
5714 base_name = lbasename (s->filename);
5715 if (base_name != s->filename
5716 && !filename_seen (filename_seen_cache, base_name, 1)
5717 && filename_ncmp (base_name, text, text_len) == 0)
5718 add_filename_to_list (base_name, text, word, &list);
5719 }
5720 }
5721
5722 datum.filename_seen_cache = filename_seen_cache;
5723 datum.text = text;
5724 datum.word = word;
5725 datum.text_len = text_len;
5726 datum.list = &list;
5727 map_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
5728 0 /*need_fullname*/);
5729
5730 do_cleanups (cache_cleanup);
5731 discard_cleanups (back_to);
5732
5733 return list;
5734 }
5735 \f
5736 /* Track MAIN */
5737
5738 /* Return the "main_info" object for the current program space. If
5739 the object has not yet been created, create it and fill in some
5740 default values. */
5741
5742 static struct main_info *
5743 get_main_info (void)
5744 {
5745 struct main_info *info = program_space_data (current_program_space,
5746 main_progspace_key);
5747
5748 if (info == NULL)
5749 {
5750 /* It may seem strange to store the main name in the progspace
5751 and also in whatever objfile happens to see a main name in
5752 its debug info. The reason for this is mainly historical:
5753 gdb returned "main" as the name even if no function named
5754 "main" was defined the program; and this approach lets us
5755 keep compatibility. */
5756 info = XCNEW (struct main_info);
5757 info->language_of_main = language_unknown;
5758 set_program_space_data (current_program_space, main_progspace_key,
5759 info);
5760 }
5761
5762 return info;
5763 }
5764
5765 /* A cleanup to destroy a struct main_info when a progspace is
5766 destroyed. */
5767
5768 static void
5769 main_info_cleanup (struct program_space *pspace, void *data)
5770 {
5771 struct main_info *info = data;
5772
5773 if (info != NULL)
5774 xfree (info->name_of_main);
5775 xfree (info);
5776 }
5777
5778 static void
5779 set_main_name (const char *name, enum language lang)
5780 {
5781 struct main_info *info = get_main_info ();
5782
5783 if (info->name_of_main != NULL)
5784 {
5785 xfree (info->name_of_main);
5786 info->name_of_main = NULL;
5787 info->language_of_main = language_unknown;
5788 }
5789 if (name != NULL)
5790 {
5791 info->name_of_main = xstrdup (name);
5792 info->language_of_main = lang;
5793 }
5794 }
5795
5796 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
5797 accordingly. */
5798
5799 static void
5800 find_main_name (void)
5801 {
5802 const char *new_main_name;
5803 struct objfile *objfile;
5804
5805 /* First check the objfiles to see whether a debuginfo reader has
5806 picked up the appropriate main name. Historically the main name
5807 was found in a more or less random way; this approach instead
5808 relies on the order of objfile creation -- which still isn't
5809 guaranteed to get the correct answer, but is just probably more
5810 accurate. */
5811 ALL_OBJFILES (objfile)
5812 {
5813 if (objfile->per_bfd->name_of_main != NULL)
5814 {
5815 set_main_name (objfile->per_bfd->name_of_main,
5816 objfile->per_bfd->language_of_main);
5817 return;
5818 }
5819 }
5820
5821 /* Try to see if the main procedure is in Ada. */
5822 /* FIXME: brobecker/2005-03-07: Another way of doing this would
5823 be to add a new method in the language vector, and call this
5824 method for each language until one of them returns a non-empty
5825 name. This would allow us to remove this hard-coded call to
5826 an Ada function. It is not clear that this is a better approach
5827 at this point, because all methods need to be written in a way
5828 such that false positives never be returned. For instance, it is
5829 important that a method does not return a wrong name for the main
5830 procedure if the main procedure is actually written in a different
5831 language. It is easy to guaranty this with Ada, since we use a
5832 special symbol generated only when the main in Ada to find the name
5833 of the main procedure. It is difficult however to see how this can
5834 be guarantied for languages such as C, for instance. This suggests
5835 that order of call for these methods becomes important, which means
5836 a more complicated approach. */
5837 new_main_name = ada_main_name ();
5838 if (new_main_name != NULL)
5839 {
5840 set_main_name (new_main_name, language_ada);
5841 return;
5842 }
5843
5844 new_main_name = d_main_name ();
5845 if (new_main_name != NULL)
5846 {
5847 set_main_name (new_main_name, language_d);
5848 return;
5849 }
5850
5851 new_main_name = go_main_name ();
5852 if (new_main_name != NULL)
5853 {
5854 set_main_name (new_main_name, language_go);
5855 return;
5856 }
5857
5858 new_main_name = pascal_main_name ();
5859 if (new_main_name != NULL)
5860 {
5861 set_main_name (new_main_name, language_pascal);
5862 return;
5863 }
5864
5865 /* The languages above didn't identify the name of the main procedure.
5866 Fallback to "main". */
5867 set_main_name ("main", language_unknown);
5868 }
5869
5870 char *
5871 main_name (void)
5872 {
5873 struct main_info *info = get_main_info ();
5874
5875 if (info->name_of_main == NULL)
5876 find_main_name ();
5877
5878 return info->name_of_main;
5879 }
5880
5881 /* Return the language of the main function. If it is not known,
5882 return language_unknown. */
5883
5884 enum language
5885 main_language (void)
5886 {
5887 struct main_info *info = get_main_info ();
5888
5889 if (info->name_of_main == NULL)
5890 find_main_name ();
5891
5892 return info->language_of_main;
5893 }
5894
5895 /* Handle ``executable_changed'' events for the symtab module. */
5896
5897 static void
5898 symtab_observer_executable_changed (void)
5899 {
5900 /* NAME_OF_MAIN may no longer be the same, so reset it for now. */
5901 set_main_name (NULL, language_unknown);
5902 }
5903
5904 /* Return 1 if the supplied producer string matches the ARM RealView
5905 compiler (armcc). */
5906
5907 int
5908 producer_is_realview (const char *producer)
5909 {
5910 static const char *const arm_idents[] = {
5911 "ARM C Compiler, ADS",
5912 "Thumb C Compiler, ADS",
5913 "ARM C++ Compiler, ADS",
5914 "Thumb C++ Compiler, ADS",
5915 "ARM/Thumb C/C++ Compiler, RVCT",
5916 "ARM C/C++ Compiler, RVCT"
5917 };
5918 int i;
5919
5920 if (producer == NULL)
5921 return 0;
5922
5923 for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
5924 if (strncmp (producer, arm_idents[i], strlen (arm_idents[i])) == 0)
5925 return 1;
5926
5927 return 0;
5928 }
5929
5930 \f
5931
5932 /* The next index to hand out in response to a registration request. */
5933
5934 static int next_aclass_value = LOC_FINAL_VALUE;
5935
5936 /* The maximum number of "aclass" registrations we support. This is
5937 constant for convenience. */
5938 #define MAX_SYMBOL_IMPLS (LOC_FINAL_VALUE + 10)
5939
5940 /* The objects representing the various "aclass" values. The elements
5941 from 0 up to LOC_FINAL_VALUE-1 represent themselves, and subsequent
5942 elements are those registered at gdb initialization time. */
5943
5944 static struct symbol_impl symbol_impl[MAX_SYMBOL_IMPLS];
5945
5946 /* The globally visible pointer. This is separate from 'symbol_impl'
5947 so that it can be const. */
5948
5949 const struct symbol_impl *symbol_impls = &symbol_impl[0];
5950
5951 /* Make sure we saved enough room in struct symbol. */
5952
5953 gdb_static_assert (MAX_SYMBOL_IMPLS <= (1 << SYMBOL_ACLASS_BITS));
5954
5955 /* Register a computed symbol type. ACLASS must be LOC_COMPUTED. OPS
5956 is the ops vector associated with this index. This returns the new
5957 index, which should be used as the aclass_index field for symbols
5958 of this type. */
5959
5960 int
5961 register_symbol_computed_impl (enum address_class aclass,
5962 const struct symbol_computed_ops *ops)
5963 {
5964 int result = next_aclass_value++;
5965
5966 gdb_assert (aclass == LOC_COMPUTED);
5967 gdb_assert (result < MAX_SYMBOL_IMPLS);
5968 symbol_impl[result].aclass = aclass;
5969 symbol_impl[result].ops_computed = ops;
5970
5971 /* Sanity check OPS. */
5972 gdb_assert (ops != NULL);
5973 gdb_assert (ops->tracepoint_var_ref != NULL);
5974 gdb_assert (ops->describe_location != NULL);
5975 gdb_assert (ops->read_needs_frame != NULL);
5976 gdb_assert (ops->read_variable != NULL);
5977
5978 return result;
5979 }
5980
5981 /* Register a function with frame base type. ACLASS must be LOC_BLOCK.
5982 OPS is the ops vector associated with this index. This returns the
5983 new index, which should be used as the aclass_index field for symbols
5984 of this type. */
5985
5986 int
5987 register_symbol_block_impl (enum address_class aclass,
5988 const struct symbol_block_ops *ops)
5989 {
5990 int result = next_aclass_value++;
5991
5992 gdb_assert (aclass == LOC_BLOCK);
5993 gdb_assert (result < MAX_SYMBOL_IMPLS);
5994 symbol_impl[result].aclass = aclass;
5995 symbol_impl[result].ops_block = ops;
5996
5997 /* Sanity check OPS. */
5998 gdb_assert (ops != NULL);
5999 gdb_assert (ops->find_frame_base_location != NULL);
6000
6001 return result;
6002 }
6003
6004 /* Register a register symbol type. ACLASS must be LOC_REGISTER or
6005 LOC_REGPARM_ADDR. OPS is the register ops vector associated with
6006 this index. This returns the new index, which should be used as
6007 the aclass_index field for symbols of this type. */
6008
6009 int
6010 register_symbol_register_impl (enum address_class aclass,
6011 const struct symbol_register_ops *ops)
6012 {
6013 int result = next_aclass_value++;
6014
6015 gdb_assert (aclass == LOC_REGISTER || aclass == LOC_REGPARM_ADDR);
6016 gdb_assert (result < MAX_SYMBOL_IMPLS);
6017 symbol_impl[result].aclass = aclass;
6018 symbol_impl[result].ops_register = ops;
6019
6020 return result;
6021 }
6022
6023 /* Initialize elements of 'symbol_impl' for the constants in enum
6024 address_class. */
6025
6026 static void
6027 initialize_ordinary_address_classes (void)
6028 {
6029 int i;
6030
6031 for (i = 0; i < LOC_FINAL_VALUE; ++i)
6032 symbol_impl[i].aclass = i;
6033 }
6034
6035 \f
6036
6037 /* Helper function to initialize the fields of an objfile-owned symbol.
6038 It assumed that *SYM is already all zeroes. */
6039
6040 static void
6041 initialize_objfile_symbol_1 (struct symbol *sym)
6042 {
6043 SYMBOL_OBJFILE_OWNED (sym) = 1;
6044 SYMBOL_SECTION (sym) = -1;
6045 }
6046
6047 /* Initialize the symbol SYM, and mark it as being owned by an objfile. */
6048
6049 void
6050 initialize_objfile_symbol (struct symbol *sym)
6051 {
6052 memset (sym, 0, sizeof (*sym));
6053 initialize_objfile_symbol_1 (sym);
6054 }
6055
6056 /* Allocate and initialize a new 'struct symbol' on OBJFILE's
6057 obstack. */
6058
6059 struct symbol *
6060 allocate_symbol (struct objfile *objfile)
6061 {
6062 struct symbol *result;
6063
6064 result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
6065 initialize_objfile_symbol_1 (result);
6066
6067 return result;
6068 }
6069
6070 /* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
6071 obstack. */
6072
6073 struct template_symbol *
6074 allocate_template_symbol (struct objfile *objfile)
6075 {
6076 struct template_symbol *result;
6077
6078 result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct template_symbol);
6079 initialize_objfile_symbol_1 (&result->base);
6080
6081 return result;
6082 }
6083
6084 /* See symtab.h. */
6085
6086 struct objfile *
6087 symbol_objfile (const struct symbol *symbol)
6088 {
6089 gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6090 return SYMTAB_OBJFILE (symbol->owner.symtab);
6091 }
6092
6093 /* See symtab.h. */
6094
6095 struct gdbarch *
6096 symbol_arch (const struct symbol *symbol)
6097 {
6098 if (!SYMBOL_OBJFILE_OWNED (symbol))
6099 return symbol->owner.arch;
6100 return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
6101 }
6102
6103 /* See symtab.h. */
6104
6105 struct symtab *
6106 symbol_symtab (const struct symbol *symbol)
6107 {
6108 gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6109 return symbol->owner.symtab;
6110 }
6111
6112 /* See symtab.h. */
6113
6114 void
6115 symbol_set_symtab (struct symbol *symbol, struct symtab *symtab)
6116 {
6117 gdb_assert (SYMBOL_OBJFILE_OWNED (symbol));
6118 symbol->owner.symtab = symtab;
6119 }
6120
6121 \f
6122
6123 void
6124 _initialize_symtab (void)
6125 {
6126 initialize_ordinary_address_classes ();
6127
6128 main_progspace_key
6129 = register_program_space_data_with_cleanup (NULL, main_info_cleanup);
6130
6131 symbol_cache_key
6132 = register_program_space_data_with_cleanup (NULL, symbol_cache_cleanup);
6133
6134 add_info ("variables", variables_info, _("\
6135 All global and static variable names, or those matching REGEXP."));
6136 if (dbx_commands)
6137 add_com ("whereis", class_info, variables_info, _("\
6138 All global and static variable names, or those matching REGEXP."));
6139
6140 add_info ("functions", functions_info,
6141 _("All function names, or those matching REGEXP."));
6142
6143 /* FIXME: This command has at least the following problems:
6144 1. It prints builtin types (in a very strange and confusing fashion).
6145 2. It doesn't print right, e.g. with
6146 typedef struct foo *FOO
6147 type_print prints "FOO" when we want to make it (in this situation)
6148 print "struct foo *".
6149 I also think "ptype" or "whatis" is more likely to be useful (but if
6150 there is much disagreement "info types" can be fixed). */
6151 add_info ("types", types_info,
6152 _("All type names, or those matching REGEXP."));
6153
6154 add_info ("sources", sources_info,
6155 _("Source files in the program."));
6156
6157 add_com ("rbreak", class_breakpoint, rbreak_command,
6158 _("Set a breakpoint for all functions matching REGEXP."));
6159
6160 if (xdb_commands)
6161 {
6162 add_com ("lf", class_info, sources_info,
6163 _("Source files in the program"));
6164 add_com ("lg", class_info, variables_info, _("\
6165 All global and static variable names, or those matching REGEXP."));
6166 }
6167
6168 add_setshow_enum_cmd ("multiple-symbols", no_class,
6169 multiple_symbols_modes, &multiple_symbols_mode,
6170 _("\
6171 Set the debugger behavior when more than one symbol are possible matches\n\
6172 in an expression."), _("\
6173 Show how the debugger handles ambiguities in expressions."), _("\
6174 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
6175 NULL, NULL, &setlist, &showlist);
6176
6177 add_setshow_boolean_cmd ("basenames-may-differ", class_obscure,
6178 &basenames_may_differ, _("\
6179 Set whether a source file may have multiple base names."), _("\
6180 Show whether a source file may have multiple base names."), _("\
6181 (A \"base name\" is the name of a file with the directory part removed.\n\
6182 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
6183 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
6184 before comparing them. Canonicalization is an expensive operation,\n\
6185 but it allows the same file be known by more than one base name.\n\
6186 If not set (the default), all source files are assumed to have just\n\
6187 one base name, and gdb will do file name comparisons more efficiently."),
6188 NULL, NULL,
6189 &setlist, &showlist);
6190
6191 add_setshow_zuinteger_cmd ("symtab-create", no_class, &symtab_create_debug,
6192 _("Set debugging of symbol table creation."),
6193 _("Show debugging of symbol table creation."), _("\
6194 When enabled (non-zero), debugging messages are printed when building\n\
6195 symbol tables. A value of 1 (one) normally provides enough information.\n\
6196 A value greater than 1 provides more verbose information."),
6197 NULL,
6198 NULL,
6199 &setdebuglist, &showdebuglist);
6200
6201 add_setshow_zuinteger_cmd ("symbol-lookup", no_class, &symbol_lookup_debug,
6202 _("\
6203 Set debugging of symbol lookup."), _("\
6204 Show debugging of symbol lookup."), _("\
6205 When enabled (non-zero), symbol lookups are logged."),
6206 NULL, NULL,
6207 &setdebuglist, &showdebuglist);
6208
6209 add_setshow_zuinteger_cmd ("symbol-cache-size", no_class,
6210 &new_symbol_cache_size,
6211 _("Set the size of the symbol cache."),
6212 _("Show the size of the symbol cache."), _("\
6213 The size of the symbol cache.\n\
6214 If zero then the symbol cache is disabled."),
6215 set_symbol_cache_size_handler, NULL,
6216 &maintenance_set_cmdlist,
6217 &maintenance_show_cmdlist);
6218
6219 add_cmd ("symbol-cache", class_maintenance, maintenance_print_symbol_cache,
6220 _("Dump the symbol cache for each program space."),
6221 &maintenanceprintlist);
6222
6223 add_cmd ("symbol-cache-statistics", class_maintenance,
6224 maintenance_print_symbol_cache_statistics,
6225 _("Print symbol cache statistics for each program space."),
6226 &maintenanceprintlist);
6227
6228 add_cmd ("flush-symbol-cache", class_maintenance,
6229 maintenance_flush_symbol_cache,
6230 _("Flush the symbol cache for each program space."),
6231 &maintenancelist);
6232
6233 observer_attach_executable_changed (symtab_observer_executable_changed);
6234 observer_attach_new_objfile (symtab_new_objfile_observer);
6235 observer_attach_free_objfile (symtab_free_objfile_observer);
6236 }
This page took 0.164236 seconds and 5 git commands to generate.