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