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