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