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