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