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