* configure.in: Check that the pthdebug library is recent enough
[deliverable/binutils-gdb.git] / gdb / stack.c
CommitLineData
c906108c 1/* Print and select stack frames for GDB, the GNU debugger.
8926118c
AC
2
3 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
5 Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b
JM
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
c906108c
SS
23
24#include <ctype.h>
25#include "defs.h"
26#include "gdb_string.h"
27#include "value.h"
28#include "symtab.h"
29#include "gdbtypes.h"
30#include "expression.h"
31#include "language.h"
32#include "frame.h"
33#include "gdbcmd.h"
34#include "gdbcore.h"
35#include "target.h"
0378c332 36#include "source.h"
c906108c
SS
37#include "breakpoint.h"
38#include "demangle.h"
39#include "inferior.h"
40#include "annotate.h"
8b93c638 41#include "ui-out.h"
c906108c
SS
42
43/* Prototypes for exported functions. */
44
a14ed312 45void args_info (char *, int);
c906108c 46
a14ed312 47void locals_info (char *, int);
c906108c 48
507f3c78 49void (*selected_frame_level_changed_hook) (int);
c906108c 50
a14ed312 51void _initialize_stack (void);
c906108c 52
a58dd373 53void return_command (char *, int);
c906108c 54
a58dd373 55/* Prototypes for local functions. */
c906108c 56
a14ed312 57static void down_command (char *, int);
c906108c 58
a14ed312 59static void down_silently_base (char *);
c906108c 60
a14ed312 61static void down_silently_command (char *, int);
c906108c 62
a14ed312 63static void up_command (char *, int);
c906108c 64
a14ed312 65static void up_silently_base (char *);
c906108c 66
a14ed312 67static void up_silently_command (char *, int);
c906108c 68
a14ed312 69void frame_command (char *, int);
c906108c 70
a14ed312 71static void current_frame_command (char *, int);
7a292a7a 72
a14ed312 73static void select_frame_command (char *, int);
c906108c 74
d9fcf2fb 75static void print_frame_arg_vars (struct frame_info *, struct ui_file *);
c906108c 76
a14ed312 77static void catch_info (char *, int);
c906108c 78
a14ed312 79static void args_plus_locals_info (char *, int);
c906108c 80
d9fcf2fb
JM
81static void print_frame_label_vars (struct frame_info *, int,
82 struct ui_file *);
c906108c 83
d9fcf2fb
JM
84static void print_frame_local_vars (struct frame_info *, int,
85 struct ui_file *);
c906108c 86
d9fcf2fb
JM
87static int print_block_frame_labels (struct block *, int *,
88 struct ui_file *);
c906108c 89
d9fcf2fb
JM
90static int print_block_frame_locals (struct block *,
91 struct frame_info *,
92 int,
93 struct ui_file *);
c906108c 94
c5394b80
JM
95static void print_frame (struct frame_info *fi,
96 int level,
97 int source,
98 int args,
99 struct symtab_and_line sal);
100
a14ed312 101static void print_frame_info_base (struct frame_info *, int, int, int);
c5aa993b 102
a14ed312 103static void print_stack_frame_base (struct frame_info *, int, int);
c906108c 104
a14ed312 105static void backtrace_command (char *, int);
c906108c 106
a14ed312 107struct frame_info *parse_frame_specification (char *);
c906108c 108
a14ed312 109static void frame_info (char *, int);
c906108c
SS
110
111extern int addressprint; /* Print addresses, or stay symbolic only? */
c906108c
SS
112
113/* The "selected" stack frame is used by default for local and arg access.
114 May be zero, for no selected frame. */
115
116struct frame_info *selected_frame;
117
c906108c
SS
118/* Zero means do things normally; we are interacting directly with the
119 user. One means print the full filename and linenumber when a
120 frame is printed, and do so in a format emacs18/emacs19.22 can
121 parse. Two means print similar annotations, but in many more
122 cases and in a slightly different syntax. */
123
124int annotation_level = 0;
c906108c 125\f
c5aa993b
JM
126
127struct print_stack_frame_args
128 {
129 struct frame_info *fi;
130 int level;
131 int source;
132 int args;
133 };
c906108c 134
a14ed312 135static int print_stack_frame_base_stub (char *);
c906108c
SS
136
137/* Show and print the frame arguments.
138 Pass the args the way catch_errors wants them. */
a14ed312 139static int show_and_print_stack_frame_stub (void *args);
c906108c 140static int
fba45db2 141show_and_print_stack_frame_stub (void *args)
c906108c 142{
c5aa993b 143 struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
c906108c 144
c906108c
SS
145 print_frame_info (p->fi, p->level, p->source, p->args);
146
147 return 0;
148}
149
150/* Show or print the frame arguments.
151 Pass the args the way catch_errors wants them. */
a14ed312 152static int print_stack_frame_stub (void *args);
c906108c 153static int
fba45db2 154print_stack_frame_stub (void *args)
c906108c 155{
c5aa993b 156 struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
c906108c 157
37767e42 158 print_frame_info_base (p->fi, p->level, p->source, p->args);
c906108c
SS
159 return 0;
160}
161
162/* Print a stack frame briefly. FRAME_INFI should be the frame info
163 and LEVEL should be its level in the stack (or -1 for level not
164 defined). */
165
166/* Pass the args the way catch_errors wants them. */
167static int
fba45db2 168print_stack_frame_base_stub (char *args)
c906108c 169{
c5aa993b 170 struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
c906108c
SS
171
172 print_frame_info_base (p->fi, p->level, p->source, p->args);
173 return 0;
174}
175
176/* print the frame arguments to the terminal.
177 Pass the args the way catch_errors wants them. */
a14ed312 178static int print_only_stack_frame_stub (void *);
c906108c 179static int
fba45db2 180print_only_stack_frame_stub (void *args)
c906108c 181{
c5aa993b 182 struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
c906108c
SS
183
184 print_frame_info_base (p->fi, p->level, p->source, p->args);
185 return 0;
186}
187
188/* Print a stack frame briefly. FRAME_INFI should be the frame info
189 and LEVEL should be its level in the stack (or -1 for level not defined).
190 This prints the level, the function executing, the arguments,
191 and the file name and line number.
192 If the pc is not at the beginning of the source line,
193 the actual pc is printed at the beginning.
194
195 If SOURCE is 1, print the source line as well.
196 If SOURCE is -1, print ONLY the source line. */
197
198static void
fba45db2 199print_stack_frame_base (struct frame_info *fi, int level, int source)
c906108c
SS
200{
201 struct print_stack_frame_args args;
202
203 args.fi = fi;
204 args.level = level;
205 args.source = source;
206 args.args = 1;
207
7a292a7a 208 catch_errors (print_stack_frame_stub, &args, "", RETURN_MASK_ALL);
c906108c
SS
209}
210
211/* Show and print a stack frame briefly. FRAME_INFI should be the frame info
212 and LEVEL should be its level in the stack (or -1 for level not defined).
213 This prints the level, the function executing, the arguments,
214 and the file name and line number.
215 If the pc is not at the beginning of the source line,
216 the actual pc is printed at the beginning.
217
218 If SOURCE is 1, print the source line as well.
219 If SOURCE is -1, print ONLY the source line. */
220
221void
fba45db2 222show_and_print_stack_frame (struct frame_info *fi, int level, int source)
c906108c
SS
223{
224 struct print_stack_frame_args args;
225
226 args.fi = fi;
227 args.level = level;
228 args.source = source;
229 args.args = 1;
230
7a292a7a 231 catch_errors (show_and_print_stack_frame_stub, &args, "", RETURN_MASK_ALL);
c906108c
SS
232}
233
234
235/* Show or print a stack frame briefly. FRAME_INFI should be the frame info
236 and LEVEL should be its level in the stack (or -1 for level not defined).
237 This prints the level, the function executing, the arguments,
238 and the file name and line number.
239 If the pc is not at the beginning of the source line,
240 the actual pc is printed at the beginning.
241
242 If SOURCE is 1, print the source line as well.
243 If SOURCE is -1, print ONLY the source line. */
244
245void
fba45db2 246print_stack_frame (struct frame_info *fi, int level, int source)
c906108c
SS
247{
248 struct print_stack_frame_args args;
249
250 args.fi = fi;
251 args.level = level;
252 args.source = source;
253 args.args = 1;
254
c5aa993b 255 catch_errors (print_stack_frame_stub, (char *) &args, "", RETURN_MASK_ALL);
c906108c
SS
256}
257
258/* Print a stack frame briefly. FRAME_INFI should be the frame info
259 and LEVEL should be its level in the stack (or -1 for level not defined).
260 This prints the level, the function executing, the arguments,
261 and the file name and line number.
262 If the pc is not at the beginning of the source line,
263 the actual pc is printed at the beginning.
264
265 If SOURCE is 1, print the source line as well.
266 If SOURCE is -1, print ONLY the source line. */
267
268void
fba45db2 269print_only_stack_frame (struct frame_info *fi, int level, int source)
c906108c
SS
270{
271 struct print_stack_frame_args args;
272
273 args.fi = fi;
274 args.level = level;
275 args.source = source;
276 args.args = 1;
277
7a292a7a 278 catch_errors (print_only_stack_frame_stub, &args, "", RETURN_MASK_ALL);
c906108c
SS
279}
280
c5aa993b
JM
281struct print_args_args
282{
c906108c
SS
283 struct symbol *func;
284 struct frame_info *fi;
d9fcf2fb 285 struct ui_file *stream;
c906108c
SS
286};
287
a14ed312 288static int print_args_stub (PTR);
c906108c
SS
289
290/* Pass the args the way catch_errors wants them. */
291
292static int
fba45db2 293print_args_stub (PTR args)
c906108c
SS
294{
295 int numargs;
c5aa993b 296 struct print_args_args *p = (struct print_args_args *) args;
c906108c 297
392a587b 298 numargs = FRAME_NUM_ARGS (p->fi);
ac9a91a7 299 print_frame_args (p->func, p->fi, numargs, p->stream);
c906108c
SS
300 return 0;
301}
302
303/* Print information about a frame for frame "fi" at level "level".
c5394b80
JM
304 Used in "where" output, also used to emit breakpoint or step
305 messages.
306 LEVEL is the level of the frame, or -1 if it is the
307 innermost frame but we don't want to print the level.
308 The meaning of the SOURCE argument is:
309 SRC_LINE: Print only source line
310 LOCATION: Print only location
311 LOC_AND_SRC: Print location and source line. */
c906108c
SS
312
313static void
fba45db2 314print_frame_info_base (struct frame_info *fi, int level, int source, int args)
c906108c
SS
315{
316 struct symtab_and_line sal;
c5394b80
JM
317 int source_print;
318 int location_print;
c906108c 319
0225421b 320 if (get_frame_type (fi) == DUMMY_FRAME)
c906108c
SS
321 {
322 annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
323
324 /* Do this regardless of SOURCE because we don't have any source
c5aa993b 325 to list for this frame. */
c906108c 326 if (level >= 0)
52c6a6ac
JJ
327 {
328 ui_out_text (uiout, "#");
329 ui_out_field_fmt_int (uiout, 2, ui_left, "level", level);
330 }
c906108c
SS
331 annotate_function_call ();
332 printf_filtered ("<function called from gdb>\n");
333 annotate_frame_end ();
334 return;
335 }
5a203e44 336 if ((get_frame_type (fi) == SIGTRAMP_FRAME))
c906108c
SS
337 {
338 annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
339
340 /* Do this regardless of SOURCE because we don't have any source
c5aa993b 341 to list for this frame. */
c906108c 342 if (level >= 0)
52c6a6ac
JJ
343 {
344 ui_out_text (uiout, "#");
345 ui_out_field_fmt_int (uiout, 2, ui_left, "level", level);
346 }
c906108c
SS
347 annotate_signal_handler_caller ();
348 printf_filtered ("<signal handler called>\n");
349 annotate_frame_end ();
350 return;
351 }
352
353 /* If fi is not the innermost frame, that normally means that fi->pc
5a203e44
AC
354 points to *after* the call instruction, and we want to get the
355 line containing the call, never the next line. But if the next
356 frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the next frame
357 was not entered as the result of a call, and we want to get the
358 line containing fi->pc. */
c906108c
SS
359 sal =
360 find_pc_line (fi->pc,
361 fi->next != NULL
5a203e44 362 && !(get_frame_type (fi->next) == SIGTRAMP_FRAME)
0225421b 363 && !(get_frame_type (fi->next) == DUMMY_FRAME));
c906108c 364
c5394b80
JM
365 location_print = (source == LOCATION
366 || source == LOC_AND_ADDRESS
367 || source == SRC_AND_LOC);
368
369 if (location_print || !sal.symtab)
370 print_frame (fi, level, source, args, sal);
371
372 source_print = (source == SRC_LINE || source == SRC_AND_LOC);
0378c332 373
66609862 374 if (sal.symtab)
0378c332 375 set_current_source_symtab_and_line (&sal);
c5394b80
JM
376
377 if (source_print && sal.symtab)
378 {
0378c332 379 struct symtab_and_line cursal;
c5394b80
JM
380 int done = 0;
381 int mid_statement = (source == SRC_LINE) && (fi->pc != sal.pc);
382
383 if (annotation_level)
384 done = identify_source_line (sal.symtab, sal.line, mid_statement,
385 fi->pc);
386 if (!done)
387 {
ba4bbdcb 388 if (print_frame_info_listing_hook)
66609862 389 print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
ba4bbdcb 390 else
c5394b80 391 {
ba4bbdcb
KS
392 /* We used to do this earlier, but that is clearly
393 wrong. This function is used by many different
394 parts of gdb, including normal_stop in infrun.c,
395 which uses this to print out the current PC
396 when we stepi/nexti into the middle of a source
397 line. Only the command line really wants this
398 behavior. Other UIs probably would like the
399 ability to decide for themselves if it is desired. */
400 if (addressprint && mid_statement)
401 {
ba4bbdcb
KS
402 ui_out_field_core_addr (uiout, "addr", fi->pc);
403 ui_out_text (uiout, "\t");
ba4bbdcb
KS
404 }
405
406 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
c5394b80 407 }
c5394b80 408 }
53cb0458
FN
409 /* Make sure we have at least a default source file */
410 set_default_source_symtab_and_line ();
411 cursal = get_current_source_symtab_and_line ();
0378c332
FN
412 cursal.line = max (sal.line - get_lines_to_list () / 2, 1);
413 set_current_source_symtab_and_line (&cursal);
c5394b80
JM
414 }
415
416 if (source != 0)
417 set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
418
419 annotate_frame_end ();
420
421 gdb_flush (gdb_stdout);
422}
423
424static void
425print_frame (struct frame_info *fi,
426 int level,
427 int source,
428 int args,
429 struct symtab_and_line sal)
430{
431 struct symbol *func;
432 register char *funname = 0;
433 enum language funlang = language_unknown;
8b93c638
JM
434 struct ui_stream *stb;
435 struct cleanup *old_chain;
e6e0bfab 436 struct cleanup *list_chain;
8b93c638
JM
437
438 stb = ui_out_stream_new (uiout);
b02eeafb 439 old_chain = make_cleanup_ui_out_stream_delete (stb);
c5394b80 440
6f0eaa01 441 func = find_pc_function (frame_address_in_block (fi));
c906108c
SS
442 if (func)
443 {
444 /* In certain pathological cases, the symtabs give the wrong
c5aa993b
JM
445 function (when we are in the first function in a file which
446 is compiled without debugging symbols, the previous function
447 is compiled with debugging symbols, and the "foo.o" symbol
448 that is supposed to tell us where the file with debugging symbols
449 ends has been truncated by ar because it is longer than 15
450 characters). This also occurs if the user uses asm() to create
451 a function but not stabs for it (in a file compiled -g).
452
453 So look in the minimal symbol tables as well, and if it comes
454 up with a larger address for the function use that instead.
455 I don't think this can ever cause any problems; there shouldn't
456 be any minimal symbols in the middle of a function; if this is
457 ever changed many parts of GDB will need to be changed (and we'll
458 create a find_pc_minimal_function or some such). */
c906108c 459
6f0eaa01 460 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (frame_address_in_block (fi));
c906108c 461 if (msymbol != NULL
c5aa993b 462 && (SYMBOL_VALUE_ADDRESS (msymbol)
c906108c
SS
463 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
464 {
465#if 0
466 /* There is no particular reason to think the line number
467 information is wrong. Someone might have just put in
468 a label with asm() but left the line numbers alone. */
469 /* In this case we have no way of knowing the source file
470 and line number, so don't print them. */
471 sal.symtab = 0;
472#endif
473 /* We also don't know anything about the function besides
474 its address and name. */
475 func = 0;
476 funname = SYMBOL_NAME (msymbol);
477 funlang = SYMBOL_LANGUAGE (msymbol);
478 }
479 else
480 {
c5394b80
JM
481 /* I'd like to use SYMBOL_SOURCE_NAME() here, to display the
482 demangled name that we already have stored in the symbol
483 table, but we stored a version with DMGL_PARAMS turned
484 on, and here we don't want to display parameters. So call
485 the demangler again, with DMGL_ANSI only. (Yes, I know
486 that printf_symbol_filtered() will again try to demangle
487 the name on the fly, but the issue is that if
488 cplus_demangle() fails here, it'll fail there too. So we
489 want to catch the failure ("demangled==NULL" case below)
490 here, while we still have our hands on the function
491 symbol.) */
c5aa993b 492 char *demangled;
c906108c
SS
493 funname = SYMBOL_NAME (func);
494 funlang = SYMBOL_LANGUAGE (func);
c5aa993b
JM
495 if (funlang == language_cplus)
496 {
497 demangled = cplus_demangle (funname, DMGL_ANSI);
498 if (demangled == NULL)
c5394b80
JM
499 /* If the demangler fails, try the demangled name from
500 the symbol table. This'll have parameters, but
501 that's preferable to diplaying a mangled name. */
c5aa993b
JM
502 funname = SYMBOL_SOURCE_NAME (func);
503 }
c906108c
SS
504 }
505 }
506 else
507 {
6f0eaa01 508 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (frame_address_in_block (fi));
c906108c
SS
509 if (msymbol != NULL)
510 {
511 funname = SYMBOL_NAME (msymbol);
512 funlang = SYMBOL_LANGUAGE (msymbol);
513 }
514 }
515
c5394b80
JM
516 annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
517
666547aa 518 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c5394b80
JM
519
520 if (level >= 0)
8b93c638 521 {
8b93c638 522 ui_out_text (uiout, "#");
52c6a6ac 523 ui_out_field_fmt_int (uiout, 2, ui_left, "level", level);
8b93c638 524 }
c5394b80
JM
525 if (addressprint)
526 if (fi->pc != sal.pc || !sal.symtab || source == LOC_AND_ADDRESS)
527 {
528 annotate_frame_address ();
8b93c638
JM
529 ui_out_field_core_addr (uiout, "addr", fi->pc);
530 annotate_frame_address_end ();
531 ui_out_text (uiout, " in ");
c5394b80
JM
532 }
533 annotate_frame_function_name ();
8b93c638
JM
534 fprintf_symbol_filtered (stb->stream, funname ? funname : "??", funlang,
535 DMGL_ANSI);
536 ui_out_field_stream (uiout, "func", stb);
537 ui_out_wrap_hint (uiout, " ");
c5394b80
JM
538 annotate_frame_args ();
539
8b93c638 540 ui_out_text (uiout, " (");
c5394b80 541 if (args)
c906108c 542 {
c5394b80 543 struct print_args_args args;
d493eb33 544 struct cleanup *args_list_chain;
c5394b80
JM
545 args.fi = fi;
546 args.func = func;
547 args.stream = gdb_stdout;
68c81b54 548 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
c5394b80 549 catch_errors (print_args_stub, &args, "", RETURN_MASK_ALL);
8b93c638
JM
550 /* FIXME: args must be a list. If one argument is a string it will
551 have " that will not be properly escaped. */
666547aa 552 /* Invoke ui_out_tuple_end. */
d493eb33 553 do_cleanups (args_list_chain);
c5394b80
JM
554 QUIT;
555 }
8b93c638 556 ui_out_text (uiout, ")");
c5394b80
JM
557 if (sal.symtab && sal.symtab->filename)
558 {
559 annotate_frame_source_begin ();
8b93c638
JM
560 ui_out_wrap_hint (uiout, " ");
561 ui_out_text (uiout, " at ");
562 annotate_frame_source_file ();
563 ui_out_field_string (uiout, "file", sal.symtab->filename);
564 annotate_frame_source_file_end ();
565 ui_out_text (uiout, ":");
566 annotate_frame_source_line ();
567 ui_out_field_int (uiout, "line", sal.line);
c5394b80
JM
568 annotate_frame_source_end ();
569 }
c906108c 570
c5394b80
JM
571#ifdef PC_SOLIB
572 if (!funname || (!sal.symtab || !sal.symtab->filename))
c906108c 573 {
c5394b80
JM
574 char *lib = PC_SOLIB (fi->pc);
575 if (lib)
c906108c 576 {
c5394b80 577 annotate_frame_where ();
8b93c638
JM
578 ui_out_wrap_hint (uiout, " ");
579 ui_out_text (uiout, " from ");
580 ui_out_field_string (uiout, "from", lib);
c906108c 581 }
c906108c 582 }
c5394b80 583#endif /* PC_SOLIB */
e514a9d6 584
666547aa 585 /* do_cleanups will call ui_out_tuple_end() for us. */
e6e0bfab 586 do_cleanups (list_chain);
8b93c638
JM
587 ui_out_text (uiout, "\n");
588 do_cleanups (old_chain);
c906108c
SS
589}
590\f
591
c906108c
SS
592/* Show or print the frame info. If this is the tui, it will be shown in
593 the source display */
594void
fba45db2
KB
595print_frame_info (struct frame_info *fi, register int level, int source,
596 int args)
c906108c 597{
37767e42 598 print_frame_info_base (fi, level, source, args);
c906108c
SS
599}
600
601/* Show the frame info. If this is the tui, it will be shown in
602 the source display otherwise, nothing is done */
603void
fba45db2 604show_stack_frame (struct frame_info *fi)
c906108c 605{
c906108c 606}
c906108c 607\f
c5aa993b 608
c906108c
SS
609/* Read a frame specification in whatever the appropriate format is.
610 Call error() if the specification is in any way invalid (i.e.
611 this function never returns NULL). */
612
613struct frame_info *
fba45db2 614parse_frame_specification (char *frame_exp)
c906108c
SS
615{
616 int numargs = 0;
617#define MAXARGS 4
618 CORE_ADDR args[MAXARGS];
ec9a3449 619 int level;
c5aa993b 620
c906108c
SS
621 if (frame_exp)
622 {
623 char *addr_string, *p;
624 struct cleanup *tmp_cleanup;
625
c5aa993b
JM
626 while (*frame_exp == ' ')
627 frame_exp++;
c906108c
SS
628
629 while (*frame_exp)
630 {
631 if (numargs > MAXARGS)
632 error ("Too many args in frame specification");
633 /* Parse an argument. */
c5aa993b 634 for (p = frame_exp; *p && *p != ' '; p++)
c906108c 635 ;
c5aa993b 636 addr_string = savestring (frame_exp, p - frame_exp);
c906108c
SS
637
638 {
3d6d86c6 639 struct value *vp;
ec9a3449 640
b8c9b27d 641 tmp_cleanup = make_cleanup (xfree, addr_string);
ec9a3449 642
24285e3a 643 /* NOTE: we call parse_and_eval and then both
1aa20aa8 644 value_as_long and value_as_address rather than calling
24285e3a
DT
645 parse_and_eval_long and parse_and_eval_address because
646 of the issue of potential side effects from evaluating
647 the expression. */
ec9a3449
DT
648 vp = parse_and_eval (addr_string);
649 if (numargs == 0)
650 level = value_as_long (vp);
651
1aa20aa8 652 args[numargs++] = value_as_address (vp);
c906108c
SS
653 do_cleanups (tmp_cleanup);
654 }
655
656 /* Skip spaces, move to possible next arg. */
c5aa993b
JM
657 while (*p == ' ')
658 p++;
c906108c
SS
659 frame_exp = p;
660 }
661 }
662
663 switch (numargs)
664 {
665 case 0:
666 if (selected_frame == NULL)
667 error ("No selected frame.");
668 return selected_frame;
669 /* NOTREACHED */
670 case 1:
671 {
c906108c 672 struct frame_info *fid =
c5aa993b 673 find_relative_frame (get_current_frame (), &level);
c906108c
SS
674 struct frame_info *tfid;
675
676 if (level == 0)
677 /* find_relative_frame was successful */
678 return fid;
679
680 /* If SETUP_ARBITRARY_FRAME is defined, then frame specifications
681 take at least 2 addresses. It is important to detect this case
682 here so that "frame 100" does not give a confusing error message
683 like "frame specification requires two addresses". This of course
684 does not solve the "frame 100" problem for machines on which
685 a frame specification can be made with one address. To solve
686 that, we need a new syntax for a specifying a frame by address.
687 I think the cleanest syntax is $frame(0x45) ($frame(0x23,0x45) for
688 two args, etc.), but people might think that is too much typing,
689 so I guess *0x23,0x45 would be a possible alternative (commas
690 really should be used instead of spaces to delimit; using spaces
691 normally works in an expression). */
692#ifdef SETUP_ARBITRARY_FRAME
823ca731 693 error ("No frame %s", paddr_d (args[0]));
c906108c
SS
694#endif
695
696 /* If (s)he specifies the frame with an address, he deserves what
697 (s)he gets. Still, give the highest one that matches. */
698
699 for (fid = get_current_frame ();
700 fid && fid->frame != args[0];
701 fid = get_prev_frame (fid))
702 ;
703
704 if (fid)
705 while ((tfid = get_prev_frame (fid)) &&
706 (tfid->frame == args[0]))
707 fid = tfid;
c5aa993b 708
c906108c
SS
709 /* We couldn't identify the frame as an existing frame, but
710 perhaps we can create one with a single argument. */
711 }
712
c5aa993b 713 default:
c906108c
SS
714#ifdef SETUP_ARBITRARY_FRAME
715 return SETUP_ARBITRARY_FRAME (numargs, args);
716#else
717 /* Usual case. Do it here rather than have everyone supply
c5aa993b 718 a SETUP_ARBITRARY_FRAME that does this. */
c906108c
SS
719 if (numargs == 1)
720 return create_new_frame (args[0], 0);
721 error ("Too many args in frame specification");
722#endif
723 /* NOTREACHED */
724 }
725 /* NOTREACHED */
726}
727
728/* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
729 that if it is unsure about the answer, it returns 0
730 instead of guessing (this happens on the VAX and i960, for example).
731
732 On most machines, we never have to guess about the args address,
733 so FRAME_ARGS_ADDRESS{,_CORRECT} are the same. */
734#if !defined (FRAME_ARGS_ADDRESS_CORRECT)
735#define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
736#endif
737
738/* Print verbosely the selected frame or the frame at address ADDR.
739 This means absolutely all information in the frame is printed. */
740
741static void
fba45db2 742frame_info (char *addr_exp, int from_tty)
c906108c
SS
743{
744 struct frame_info *fi;
745 struct symtab_and_line sal;
746 struct symbol *func;
747 struct symtab *s;
748 struct frame_info *calling_frame_info;
749 int i, count, numregs;
750 char *funname = 0;
751 enum language funlang = language_unknown;
752
753 if (!target_has_stack)
754 error ("No stack.");
755
756 fi = parse_frame_specification (addr_exp);
757 if (fi == NULL)
758 error ("Invalid frame specified.");
759
760 sal = find_pc_line (fi->pc,
761 fi->next != NULL
5a203e44 762 && !(get_frame_type (fi->next) == SIGTRAMP_FRAME)
0225421b 763 && !(get_frame_type (fi->next) == DUMMY_FRAME));
c906108c 764 func = get_frame_function (fi);
c5aa993b 765 s = find_pc_symtab (fi->pc);
c906108c
SS
766 if (func)
767 {
768 /* I'd like to use SYMBOL_SOURCE_NAME() here, to display
769 * the demangled name that we already have stored in
770 * the symbol table, but we stored a version with
771 * DMGL_PARAMS turned on, and here we don't want
772 * to display parameters. So call the demangler again,
773 * with DMGL_ANSI only. RT
774 * (Yes, I know that printf_symbol_filtered() will
775 * again try to demangle the name on the fly, but
776 * the issue is that if cplus_demangle() fails here,
777 * it'll fail there too. So we want to catch the failure
778 * ("demangled==NULL" case below) here, while we still
779 * have our hands on the function symbol.)
780 */
c5aa993b
JM
781 char *demangled;
782 funname = SYMBOL_NAME (func);
783 funlang = SYMBOL_LANGUAGE (func);
784 if (funlang == language_cplus)
785 {
786 demangled = cplus_demangle (funname, DMGL_ANSI);
787 /* If the demangler fails, try the demangled name
788 * from the symbol table. This'll have parameters,
789 * but that's preferable to diplaying a mangled name.
790 */
791 if (demangled == NULL)
792 funname = SYMBOL_SOURCE_NAME (func);
793 }
c906108c
SS
794 }
795 else
796 {
797 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
798 if (msymbol != NULL)
799 {
800 funname = SYMBOL_NAME (msymbol);
801 funlang = SYMBOL_LANGUAGE (msymbol);
802 }
803 }
804 calling_frame_info = get_prev_frame (fi);
805
b31da25e 806 if (!addr_exp && frame_relative_level (selected_frame) >= 0)
c906108c 807 {
b31da25e
AC
808 printf_filtered ("Stack level %d, frame at ",
809 frame_relative_level (selected_frame));
c906108c
SS
810 print_address_numeric (fi->frame, 1, gdb_stdout);
811 printf_filtered (":\n");
812 }
813 else
814 {
815 printf_filtered ("Stack frame at ");
816 print_address_numeric (fi->frame, 1, gdb_stdout);
817 printf_filtered (":\n");
818 }
819 printf_filtered (" %s = ", REGISTER_NAME (PC_REGNUM));
820 print_address_numeric (fi->pc, 1, gdb_stdout);
821
822 wrap_here (" ");
823 if (funname)
824 {
825 printf_filtered (" in ");
826 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
827 DMGL_ANSI | DMGL_PARAMS);
828 }
829 wrap_here (" ");
830 if (sal.symtab)
831 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
832 puts_filtered ("; ");
833 wrap_here (" ");
834 printf_filtered ("saved %s ", REGISTER_NAME (PC_REGNUM));
f18c5a73 835 print_address_numeric (frame_pc_unwind (fi), 1, gdb_stdout);
c906108c
SS
836 printf_filtered ("\n");
837
838 {
392a587b
JM
839 int frameless;
840 frameless = FRAMELESS_FUNCTION_INVOCATION (fi);
c906108c
SS
841 if (frameless)
842 printf_filtered (" (FRAMELESS),");
843 }
844
845 if (calling_frame_info)
846 {
847 printf_filtered (" called by frame at ");
848 print_address_numeric (calling_frame_info->frame, 1, gdb_stdout);
849 }
850 if (fi->next && calling_frame_info)
851 puts_filtered (",");
852 wrap_here (" ");
853 if (fi->next)
854 {
855 printf_filtered (" caller of frame at ");
856 print_address_numeric (fi->next->frame, 1, gdb_stdout);
857 }
858 if (fi->next || calling_frame_info)
859 puts_filtered ("\n");
860 if (s)
861 printf_filtered (" source language %s.\n", language_str (s->language));
862
863#ifdef PRINT_EXTRA_FRAME_INFO
864 PRINT_EXTRA_FRAME_INFO (fi);
865#endif
866
867 {
868 /* Address of the argument list for this frame, or 0. */
869 CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
870 /* Number of args for this frame, or -1 if unknown. */
871 int numargs;
872
873 if (arg_list == 0)
874 printf_filtered (" Arglist at unknown address.\n");
875 else
876 {
877 printf_filtered (" Arglist at ");
878 print_address_numeric (arg_list, 1, gdb_stdout);
879 printf_filtered (",");
880
392a587b 881 numargs = FRAME_NUM_ARGS (fi);
c906108c
SS
882 if (numargs < 0)
883 puts_filtered (" args: ");
884 else if (numargs == 0)
885 puts_filtered (" no args.");
886 else if (numargs == 1)
887 puts_filtered (" 1 arg: ");
888 else
889 printf_filtered (" %d args: ", numargs);
890 print_frame_args (func, fi, numargs, gdb_stdout);
891 puts_filtered ("\n");
892 }
893 }
894 {
895 /* Address of the local variables for this frame, or 0. */
896 CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
897
898 if (arg_list == 0)
899 printf_filtered (" Locals at unknown address,");
900 else
901 {
902 printf_filtered (" Locals at ");
903 print_address_numeric (arg_list, 1, gdb_stdout);
904 printf_filtered (",");
905 }
906 }
907
4f460812
AC
908 if (fi->saved_regs == NULL)
909 FRAME_INIT_SAVED_REGS (fi);
910 /* Print as much information as possible on the location of all the
911 registers. */
912 {
913 enum lval_type lval;
914 int optimized;
915 CORE_ADDR addr;
916 int realnum;
917 int count;
918 int i;
919 int need_nl = 1;
920
921 /* The sp is special; what's displayed isn't the save address, but
922 the value of the previous frame's sp. This is a legacy thing,
923 at one stage the frame cached the previous frame's SP instead
924 of its address, hence it was easiest to just display the cached
925 value. */
926 if (SP_REGNUM >= 0)
927 {
928 /* Find out the location of the saved stack pointer with out
929 actually evaluating it. */
930 frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
931 &realnum, NULL);
932 if (!optimized && lval == not_lval)
c906108c 933 {
4f460812
AC
934 void *value = alloca (MAX_REGISTER_RAW_SIZE);
935 CORE_ADDR sp;
936 frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
937 &realnum, value);
938 sp = extract_address (value, REGISTER_RAW_SIZE (SP_REGNUM));
939 printf_filtered (" Previous frame's sp is ");
940 print_address_numeric (sp, 1, gdb_stdout);
941 printf_filtered ("\n");
942 need_nl = 0;
c906108c 943 }
4f460812
AC
944 else if (!optimized && lval == lval_memory)
945 {
946 printf_filtered (" Previous frame's sp at ");
947 print_address_numeric (addr, 1, gdb_stdout);
948 printf_filtered ("\n");
949 need_nl = 0;
950 }
951 else if (!optimized && lval == lval_register)
952 {
953 printf_filtered (" Previous frame's sp in %s\n",
954 REGISTER_NAME (realnum));
955 need_nl = 0;
956 }
957 /* else keep quiet. */
958 }
959
960 count = 0;
961 numregs = NUM_REGS + NUM_PSEUDO_REGS;
962 for (i = 0; i < numregs; i++)
963 if (i != SP_REGNUM)
964 {
965 /* Find out the location of the saved register without
966 fetching the corresponding value. */
967 frame_register_unwind (fi, i, &optimized, &lval, &addr, &realnum,
968 NULL);
969 /* For moment, only display registers that were saved on the
970 stack. */
971 if (!optimized && lval == lval_memory)
972 {
973 if (count == 0)
974 puts_filtered (" Saved registers:\n ");
975 else
976 puts_filtered (",");
977 wrap_here (" ");
978 printf_filtered (" %s at ", REGISTER_NAME (i));
979 print_address_numeric (addr, 1, gdb_stdout);
980 count++;
981 }
982 }
983 if (count || need_nl)
c906108c 984 puts_filtered ("\n");
4f460812 985 }
c906108c
SS
986}
987
988#if 0
989/* Set a limit on the number of frames printed by default in a
990 backtrace. */
991
992static int backtrace_limit;
993
994static void
fba45db2 995set_backtrace_limit_command (char *count_exp, int from_tty)
c906108c 996{
bb518678 997 int count = parse_and_eval_long (count_exp);
c906108c
SS
998
999 if (count < 0)
1000 error ("Negative argument not meaningful as backtrace limit.");
1001
1002 backtrace_limit = count;
1003}
1004
1005static void
fba45db2 1006backtrace_limit_info (char *arg, int from_tty)
c906108c
SS
1007{
1008 if (arg)
1009 error ("\"Info backtrace-limit\" takes no arguments.");
1010
1011 printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
1012}
1013#endif
1014
1015/* Print briefly all stack frames or just the innermost COUNT frames. */
1016
a14ed312
KB
1017static void backtrace_command_1 (char *count_exp, int show_locals,
1018 int from_tty);
c906108c 1019static void
fba45db2 1020backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
c906108c
SS
1021{
1022 struct frame_info *fi;
1023 register int count;
1024 register int i;
1025 register struct frame_info *trailing;
1026 register int trailing_level;
1027
1028 if (!target_has_stack)
1029 error ("No stack.");
1030
1031 /* The following code must do two things. First, it must
1032 set the variable TRAILING to the frame from which we should start
1033 printing. Second, it must set the variable count to the number
1034 of frames which we should print, or -1 if all of them. */
1035 trailing = get_current_frame ();
d082b2bb
AC
1036
1037 /* The target can be in a state where there is no valid frames
1038 (e.g., just connected). */
1039 if (trailing == NULL)
1040 error ("No stack.");
1041
c906108c
SS
1042 trailing_level = 0;
1043 if (count_exp)
1044 {
bb518678 1045 count = parse_and_eval_long (count_exp);
c906108c
SS
1046 if (count < 0)
1047 {
1048 struct frame_info *current;
1049
1050 count = -count;
1051
1052 current = trailing;
1053 while (current && count--)
1054 {
1055 QUIT;
1056 current = get_prev_frame (current);
1057 }
c5aa993b 1058
c906108c
SS
1059 /* Will stop when CURRENT reaches the top of the stack. TRAILING
1060 will be COUNT below it. */
1061 while (current)
1062 {
1063 QUIT;
1064 trailing = get_prev_frame (trailing);
1065 current = get_prev_frame (current);
1066 trailing_level++;
1067 }
c5aa993b 1068
c906108c
SS
1069 count = -1;
1070 }
1071 }
1072 else
1073 count = -1;
1074
1075 if (info_verbose)
1076 {
1077 struct partial_symtab *ps;
c5aa993b 1078
c906108c 1079 /* Read in symbols for all of the frames. Need to do this in
c5aa993b
JM
1080 a separate pass so that "Reading in symbols for xxx" messages
1081 don't screw up the appearance of the backtrace. Also
1082 if people have strong opinions against reading symbols for
1083 backtrace this may have to be an option. */
c906108c
SS
1084 i = count;
1085 for (fi = trailing;
1086 fi != NULL && i--;
1087 fi = get_prev_frame (fi))
1088 {
1089 QUIT;
6f0eaa01 1090 ps = find_pc_psymtab (frame_address_in_block (fi));
c906108c
SS
1091 if (ps)
1092 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
1093 }
1094 }
1095
1096 for (i = 0, fi = trailing;
1097 fi && count--;
1098 i++, fi = get_prev_frame (fi))
1099 {
1100 QUIT;
1101
1102 /* Don't use print_stack_frame; if an error() occurs it probably
c5aa993b
JM
1103 means further attempts to backtrace would fail (on the other
1104 hand, perhaps the code does or could be fixed to make sure
1105 the frame->prev field gets set to NULL in that case). */
c906108c
SS
1106 print_frame_info_base (fi, trailing_level + i, 0, 1);
1107 if (show_locals)
c5aa993b 1108 print_frame_local_vars (fi, 1, gdb_stdout);
c906108c
SS
1109 }
1110
1111 /* If we've stopped before the end, mention that. */
1112 if (fi && from_tty)
1113 printf_filtered ("(More stack frames follow...)\n");
1114}
1115
1116static void
fba45db2 1117backtrace_command (char *arg, int from_tty)
c906108c 1118{
c5aa993b
JM
1119 struct cleanup *old_chain = (struct cleanup *) NULL;
1120 char **argv = (char **) NULL;
1121 int argIndicatingFullTrace = (-1), totArgLen = 0, argc = 0;
1122 char *argPtr = arg;
c906108c 1123
c5aa993b 1124 if (arg != (char *) NULL)
c906108c
SS
1125 {
1126 int i;
1127
c5aa993b 1128 argv = buildargv (arg);
7a292a7a 1129 old_chain = make_cleanup_freeargv (argv);
c906108c 1130 argc = 0;
c5aa993b
JM
1131 for (i = 0; (argv[i] != (char *) NULL); i++)
1132 {
745b8ca0 1133 unsigned int j;
c5aa993b
JM
1134
1135 for (j = 0; (j < strlen (argv[i])); j++)
1136 argv[i][j] = tolower (argv[i][j]);
1137
1138 if (argIndicatingFullTrace < 0 && subset_compare (argv[i], "full"))
1139 argIndicatingFullTrace = argc;
1140 else
1141 {
1142 argc++;
1143 totArgLen += strlen (argv[i]);
1144 }
1145 }
c906108c
SS
1146 totArgLen += argc;
1147 if (argIndicatingFullTrace >= 0)
c5aa993b
JM
1148 {
1149 if (totArgLen > 0)
1150 {
1151 argPtr = (char *) xmalloc (totArgLen + 1);
1152 if (!argPtr)
1153 nomem (0);
1154 else
1155 {
1156 memset (argPtr, 0, totArgLen + 1);
1157 for (i = 0; (i < (argc + 1)); i++)
1158 {
1159 if (i != argIndicatingFullTrace)
1160 {
1161 strcat (argPtr, argv[i]);
1162 strcat (argPtr, " ");
1163 }
1164 }
1165 }
1166 }
1167 else
1168 argPtr = (char *) NULL;
1169 }
c906108c
SS
1170 }
1171
1172 backtrace_command_1 (argPtr, (argIndicatingFullTrace >= 0), from_tty);
1173
1174 if (argIndicatingFullTrace >= 0 && totArgLen > 0)
b8c9b27d 1175 xfree (argPtr);
c906108c
SS
1176
1177 if (old_chain)
c5aa993b 1178 do_cleanups (old_chain);
c906108c
SS
1179}
1180
a14ed312 1181static void backtrace_full_command (char *arg, int from_tty);
c906108c 1182static void
fba45db2 1183backtrace_full_command (char *arg, int from_tty)
c906108c
SS
1184{
1185 backtrace_command_1 (arg, 1, from_tty);
1186}
c906108c 1187\f
c5aa993b 1188
c906108c
SS
1189/* Print the local variables of a block B active in FRAME.
1190 Return 1 if any variables were printed; 0 otherwise. */
1191
1192static int
fba45db2
KB
1193print_block_frame_locals (struct block *b, register struct frame_info *fi,
1194 int num_tabs, register struct ui_file *stream)
c906108c 1195{
c906108c
SS
1196 register int i, j;
1197 register struct symbol *sym;
1198 register int values_printed = 0;
1199
e88c90f2 1200 ALL_BLOCK_SYMBOLS (b, i, sym)
c906108c 1201 {
c906108c
SS
1202 switch (SYMBOL_CLASS (sym))
1203 {
1204 case LOC_LOCAL:
1205 case LOC_REGISTER:
1206 case LOC_STATIC:
1207 case LOC_BASEREG:
1208 values_printed = 1;
1209 for (j = 0; j < num_tabs; j++)
c5aa993b 1210 fputs_filtered ("\t", stream);
c906108c
SS
1211 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1212 fputs_filtered (" = ", stream);
1213 print_variable_value (sym, fi, stream);
1214 fprintf_filtered (stream, "\n");
1215 break;
1216
1217 default:
1218 /* Ignore symbols which are not locals. */
1219 break;
1220 }
1221 }
1222 return values_printed;
1223}
1224
1225/* Same, but print labels. */
1226
1227static int
fba45db2
KB
1228print_block_frame_labels (struct block *b, int *have_default,
1229 register struct ui_file *stream)
c906108c 1230{
c906108c
SS
1231 register int i;
1232 register struct symbol *sym;
1233 register int values_printed = 0;
1234
e88c90f2 1235 ALL_BLOCK_SYMBOLS (b, i, sym)
c906108c 1236 {
c906108c
SS
1237 if (STREQ (SYMBOL_NAME (sym), "default"))
1238 {
1239 if (*have_default)
1240 continue;
1241 *have_default = 1;
1242 }
1243 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1244 {
1245 struct symtab_and_line sal;
1246 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1247 values_printed = 1;
1248 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1249 if (addressprint)
1250 {
1251 fprintf_filtered (stream, " ");
1252 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
1253 }
1254 fprintf_filtered (stream, " in file %s, line %d\n",
1255 sal.symtab->filename, sal.line);
1256 }
1257 }
1258 return values_printed;
1259}
1260
1261/* Print on STREAM all the local variables in frame FRAME,
1262 including all the blocks active in that frame
1263 at its current pc.
1264
1265 Returns 1 if the job was done,
1266 or 0 if nothing was printed because we have no info
1267 on the function running in FRAME. */
1268
1269static void
fba45db2
KB
1270print_frame_local_vars (register struct frame_info *fi, register int num_tabs,
1271 register struct ui_file *stream)
c906108c 1272{
ae767bfb 1273 register struct block *block = get_frame_block (fi, 0);
c906108c
SS
1274 register int values_printed = 0;
1275
1276 if (block == 0)
1277 {
1278 fprintf_filtered (stream, "No symbol table info available.\n");
1279 return;
1280 }
c5aa993b 1281
c906108c
SS
1282 while (block != 0)
1283 {
1284 if (print_block_frame_locals (block, fi, num_tabs, stream))
1285 values_printed = 1;
1286 /* After handling the function's top-level block, stop.
c5aa993b
JM
1287 Don't continue to its superblock, the block of
1288 per-file symbols. */
c906108c
SS
1289 if (BLOCK_FUNCTION (block))
1290 break;
1291 block = BLOCK_SUPERBLOCK (block);
1292 }
1293
1294 if (!values_printed)
1295 {
1296 fprintf_filtered (stream, "No locals.\n");
1297 }
1298}
1299
1300/* Same, but print labels. */
1301
1302static void
fba45db2
KB
1303print_frame_label_vars (register struct frame_info *fi, int this_level_only,
1304 register struct ui_file *stream)
c906108c
SS
1305{
1306 register struct blockvector *bl;
ae767bfb 1307 register struct block *block = get_frame_block (fi, 0);
c906108c
SS
1308 register int values_printed = 0;
1309 int index, have_default = 0;
1310 char *blocks_printed;
1311 CORE_ADDR pc = fi->pc;
1312
1313 if (block == 0)
1314 {
1315 fprintf_filtered (stream, "No symbol table info available.\n");
1316 return;
1317 }
1318
1319 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1320 blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1321 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1322
1323 while (block != 0)
1324 {
1325 CORE_ADDR end = BLOCK_END (block) - 4;
1326 int last_index;
1327
1328 if (bl != blockvector_for_pc (end, &index))
1329 error ("blockvector blotch");
1330 if (BLOCKVECTOR_BLOCK (bl, index) != block)
1331 error ("blockvector botch");
1332 last_index = BLOCKVECTOR_NBLOCKS (bl);
1333 index += 1;
1334
1335 /* Don't print out blocks that have gone by. */
1336 while (index < last_index
1337 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1338 index++;
1339
1340 while (index < last_index
1341 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1342 {
1343 if (blocks_printed[index] == 0)
1344 {
1345 if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
1346 values_printed = 1;
1347 blocks_printed[index] = 1;
1348 }
1349 index++;
1350 }
1351 if (have_default)
1352 return;
1353 if (values_printed && this_level_only)
1354 return;
1355
1356 /* After handling the function's top-level block, stop.
c5aa993b
JM
1357 Don't continue to its superblock, the block of
1358 per-file symbols. */
c906108c
SS
1359 if (BLOCK_FUNCTION (block))
1360 break;
1361 block = BLOCK_SUPERBLOCK (block);
1362 }
1363
1364 if (!values_printed && !this_level_only)
1365 {
1366 fprintf_filtered (stream, "No catches.\n");
1367 }
1368}
1369
1370/* ARGSUSED */
1371void
fba45db2 1372locals_info (char *args, int from_tty)
c906108c
SS
1373{
1374 if (!selected_frame)
1375 error ("No frame selected.");
1376 print_frame_local_vars (selected_frame, 0, gdb_stdout);
1377}
1378
1379static void
fba45db2 1380catch_info (char *ignore, int from_tty)
c906108c 1381{
c5aa993b 1382 struct symtab_and_line *sal;
c906108c 1383
c5aa993b 1384 /* Check for target support for exception handling */
c906108c
SS
1385 sal = target_enable_exception_callback (EX_EVENT_CATCH, 1);
1386 if (sal)
1387 {
1388 /* Currently not handling this */
1389 /* Ideally, here we should interact with the C++ runtime
1390 system to find the list of active handlers, etc. */
1391 fprintf_filtered (gdb_stdout, "Info catch not supported with this target/compiler combination.\n");
1392#if 0
c5aa993b
JM
1393 if (!selected_frame)
1394 error ("No frame selected.");
c906108c
SS
1395#endif
1396 }
1397 else
1398 {
c5aa993b 1399 /* Assume g++ compiled code -- old v 4.16 behaviour */
c906108c 1400 if (!selected_frame)
c5aa993b
JM
1401 error ("No frame selected.");
1402
c906108c
SS
1403 print_frame_label_vars (selected_frame, 0, gdb_stdout);
1404 }
1405}
1406
1407static void
fba45db2
KB
1408print_frame_arg_vars (register struct frame_info *fi,
1409 register struct ui_file *stream)
c906108c
SS
1410{
1411 struct symbol *func = get_frame_function (fi);
1412 register struct block *b;
c906108c
SS
1413 register int i;
1414 register struct symbol *sym, *sym2;
1415 register int values_printed = 0;
1416
1417 if (func == 0)
1418 {
1419 fprintf_filtered (stream, "No symbol table info available.\n");
1420 return;
1421 }
1422
1423 b = SYMBOL_BLOCK_VALUE (func);
e88c90f2 1424 ALL_BLOCK_SYMBOLS (b, i, sym)
c906108c 1425 {
c906108c
SS
1426 switch (SYMBOL_CLASS (sym))
1427 {
1428 case LOC_ARG:
1429 case LOC_LOCAL_ARG:
1430 case LOC_REF_ARG:
1431 case LOC_REGPARM:
1432 case LOC_REGPARM_ADDR:
1433 case LOC_BASEREG_ARG:
1434 values_printed = 1;
1435 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1436 fputs_filtered (" = ", stream);
1437
1438 /* We have to look up the symbol because arguments can have
1439 two entries (one a parameter, one a local) and the one we
1440 want is the local, which lookup_symbol will find for us.
1441 This includes gcc1 (not gcc2) on the sparc when passing a
1442 small structure and gcc2 when the argument type is float
1443 and it is passed as a double and converted to float by
1444 the prologue (in the latter case the type of the LOC_ARG
1445 symbol is double and the type of the LOC_LOCAL symbol is
1446 float). There are also LOC_ARG/LOC_REGISTER pairs which
1447 are not combined in symbol-reading. */
1448
1449 sym2 = lookup_symbol (SYMBOL_NAME (sym),
c5aa993b 1450 b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
c906108c
SS
1451 print_variable_value (sym2, fi, stream);
1452 fprintf_filtered (stream, "\n");
1453 break;
1454
1455 default:
1456 /* Don't worry about things which aren't arguments. */
1457 break;
1458 }
1459 }
c906108c
SS
1460 if (!values_printed)
1461 {
1462 fprintf_filtered (stream, "No arguments.\n");
1463 }
1464}
1465
1466void
fba45db2 1467args_info (char *ignore, int from_tty)
c906108c
SS
1468{
1469 if (!selected_frame)
1470 error ("No frame selected.");
1471 print_frame_arg_vars (selected_frame, gdb_stdout);
1472}
1473
1474
1475static void
fba45db2 1476args_plus_locals_info (char *ignore, int from_tty)
c906108c 1477{
c5aa993b
JM
1478 args_info (ignore, from_tty);
1479 locals_info (ignore, from_tty);
c906108c 1480}
c906108c 1481\f
c5aa993b 1482
0f7d239c 1483/* Select frame FI (or NULL - to invalidate the current frame). */
c906108c
SS
1484
1485void
0f7d239c 1486select_frame (struct frame_info *fi)
c906108c
SS
1487{
1488 register struct symtab *s;
1489
1490 selected_frame = fi;
0f7d239c
AC
1491 /* NOTE: cagney/2002-05-04: FI can be NULL. This occures when the
1492 frame is being invalidated. */
c906108c 1493 if (selected_frame_level_changed_hook)
0f7d239c 1494 selected_frame_level_changed_hook (frame_relative_level (fi));
c906108c 1495
bfb3754e
KS
1496 /* FIXME: kseitz/2002-08-28: It would be nice to call
1497 selected_frame_level_changed_event right here, but due to limitations
1498 in the current interfaces, we would end up flooding UIs with events
1499 because select_frame is used extensively internally.
1500
1501 Once we have frame-parameterized frame (and frame-related) commands,
1502 the event notification can be moved here, since this function will only
1503 be called when the users selected frame is being changed. */
1504
c906108c
SS
1505 /* Ensure that symbols for this frame are read in. Also, determine the
1506 source language of this frame, and switch to it if desired. */
1507 if (fi)
c5aa993b
JM
1508 {
1509 s = find_pc_symtab (fi->pc);
1510 if (s
1511 && s->language != current_language->la_language
1512 && s->language != language_unknown
1513 && language_mode == language_mode_auto)
1514 {
1515 set_language (s->language);
1516 }
c906108c 1517 }
c906108c 1518}
c906108c 1519\f
c5aa993b 1520
0f7d239c
AC
1521/* Select frame FI. Also print the stack frame and show the source if
1522 this is the tui version. */
bedfa57b
AC
1523static void
1524select_and_print_frame (struct frame_info *fi)
c906108c 1525{
0f7d239c 1526 select_frame (fi);
c906108c
SS
1527 if (fi)
1528 {
bedfa57b 1529 print_stack_frame (fi, frame_relative_level (fi), 1);
c906108c
SS
1530 }
1531}
c906108c 1532\f
c906108c 1533/* Return the symbol-block in which the selected frame is executing.
ae767bfb
JB
1534 Can return zero under various legitimate circumstances.
1535
1536 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1537 code address within the block returned. We use this to decide
1538 which macros are in scope. */
c906108c
SS
1539
1540struct block *
ae767bfb 1541get_selected_block (CORE_ADDR *addr_in_block)
c906108c
SS
1542{
1543 if (!target_has_stack)
1544 return 0;
1545
8c69fc49
AC
1546 /* NOTE: cagney/2002-11-28: Why go to all this effort to not create
1547 a selected/current frame? Perhaphs this function is called,
1548 indirectly, by WFI in "infrun.c" where avoiding the creation of
1549 an inner most frame is very important (it slows down single
1550 step). I suspect, though that this was true in the deep dark
1551 past but is no longer the case. A mindless look at all the
1552 callers tends to support this theory. I think we should be able
1553 to assume that there is always a selcted frame. */
1554 /* gdb_assert (selected_frame != NULL); So, do you feel lucky? */
c906108c 1555 if (!selected_frame)
8c69fc49
AC
1556 {
1557 CORE_ADDR pc = read_pc ();
1558 if (addr_in_block != NULL)
1559 *addr_in_block = pc;
1560 return block_for_pc (pc);
1561 }
ae767bfb 1562 return get_frame_block (selected_frame, addr_in_block);
c906108c
SS
1563}
1564
1565/* Find a frame a certain number of levels away from FRAME.
1566 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1567 Positive means go to earlier frames (up); negative, the reverse.
1568 The int that contains the number of levels is counted toward
1569 zero as the frames for those levels are found.
1570 If the top or bottom frame is reached, that frame is returned,
1571 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1572 how much farther the original request asked to go. */
1573
1574struct frame_info *
fba45db2
KB
1575find_relative_frame (register struct frame_info *frame,
1576 register int *level_offset_ptr)
c906108c
SS
1577{
1578 register struct frame_info *prev;
1579 register struct frame_info *frame1;
1580
1581 /* Going up is simple: just do get_prev_frame enough times
1582 or until initial frame is reached. */
1583 while (*level_offset_ptr > 0)
1584 {
1585 prev = get_prev_frame (frame);
1586 if (prev == 0)
1587 break;
1588 (*level_offset_ptr)--;
1589 frame = prev;
1590 }
1591 /* Going down is just as simple. */
1592 if (*level_offset_ptr < 0)
1593 {
c5aa993b
JM
1594 while (*level_offset_ptr < 0)
1595 {
1596 frame1 = get_next_frame (frame);
1597 if (!frame1)
1598 break;
1599 frame = frame1;
1600 (*level_offset_ptr)++;
1601 }
c906108c
SS
1602 }
1603 return frame;
1604}
1605
1606/* The "select_frame" command. With no arg, NOP.
1607 With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1608 valid level. Otherwise, treat level_exp as an address expression
1609 and select it. See parse_frame_specification for more info on proper
1610 frame expressions. */
1611
1612/* ARGSUSED */
8b93c638 1613void
fba45db2 1614select_frame_command_wrapper (char *level_exp, int from_tty)
8b93c638
JM
1615{
1616 select_frame_command (level_exp, from_tty);
1617}
8926118c 1618
c906108c 1619static void
fba45db2 1620select_frame_command (char *level_exp, int from_tty)
c906108c 1621{
bfb3754e
KS
1622 struct frame_info *frame;
1623 int level = frame_relative_level (selected_frame);
c906108c
SS
1624
1625 if (!target_has_stack)
1626 error ("No stack.");
1627
1628 frame = parse_frame_specification (level_exp);
1629
0f7d239c 1630 select_frame (frame);
bfb3754e
KS
1631 if (level != frame_relative_level (selected_frame))
1632 selected_frame_level_changed_event (frame_relative_level (selected_frame));
c906108c
SS
1633}
1634
1635/* The "frame" command. With no arg, print selected frame briefly.
1636 With arg, behaves like select_frame and then prints the selected
1637 frame. */
1638
1639void
fba45db2 1640frame_command (char *level_exp, int from_tty)
c906108c
SS
1641{
1642 select_frame_command (level_exp, from_tty);
b31da25e
AC
1643 show_and_print_stack_frame (selected_frame,
1644 frame_relative_level (selected_frame), 1);
c906108c
SS
1645}
1646
1647/* The XDB Compatibility command to print the current frame. */
1648
7a292a7a 1649static void
fba45db2 1650current_frame_command (char *level_exp, int from_tty)
c906108c
SS
1651{
1652 if (target_has_stack == 0 || selected_frame == 0)
c5aa993b 1653 error ("No stack.");
b31da25e
AC
1654 print_only_stack_frame (selected_frame,
1655 frame_relative_level (selected_frame), 1);
7a292a7a 1656}
c906108c
SS
1657
1658/* Select the frame up one or COUNT stack levels
1659 from the previously selected frame, and print it briefly. */
1660
1661/* ARGSUSED */
1662static void
fba45db2 1663up_silently_base (char *count_exp)
c906108c
SS
1664{
1665 register struct frame_info *fi;
1666 int count = 1, count1;
1667 if (count_exp)
bb518678 1668 count = parse_and_eval_long (count_exp);
c906108c 1669 count1 = count;
c5aa993b 1670
c906108c
SS
1671 if (target_has_stack == 0 || selected_frame == 0)
1672 error ("No stack.");
1673
1674 fi = find_relative_frame (selected_frame, &count1);
1675 if (count1 != 0 && count_exp == 0)
1676 error ("Initial frame selected; you cannot go up.");
0f7d239c 1677 select_frame (fi);
bfb3754e 1678 selected_frame_level_changed_event (frame_relative_level (selected_frame));
c906108c
SS
1679}
1680
1681static void
fba45db2 1682up_silently_command (char *count_exp, int from_tty)
c906108c 1683{
c5aa993b 1684 up_silently_base (count_exp);
c906108c
SS
1685}
1686
1687static void
fba45db2 1688up_command (char *count_exp, int from_tty)
c906108c
SS
1689{
1690 up_silently_base (count_exp);
b31da25e
AC
1691 show_and_print_stack_frame (selected_frame,
1692 frame_relative_level (selected_frame), 1);
c906108c
SS
1693}
1694
1695/* Select the frame down one or COUNT stack levels
1696 from the previously selected frame, and print it briefly. */
1697
1698/* ARGSUSED */
1699static void
fba45db2 1700down_silently_base (char *count_exp)
c906108c
SS
1701{
1702 register struct frame_info *frame;
1703 int count = -1, count1;
1704 if (count_exp)
bb518678 1705 count = -parse_and_eval_long (count_exp);
c906108c 1706 count1 = count;
c5aa993b 1707
c906108c
SS
1708 if (target_has_stack == 0 || selected_frame == 0)
1709 error ("No stack.");
1710
1711 frame = find_relative_frame (selected_frame, &count1);
1712 if (count1 != 0 && count_exp == 0)
1713 {
1714
1715 /* We only do this if count_exp is not specified. That way "down"
c5aa993b
JM
1716 means to really go down (and let me know if that is
1717 impossible), but "down 9999" can be used to mean go all the way
1718 down without getting an error. */
c906108c
SS
1719
1720 error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1721 }
1722
0f7d239c 1723 select_frame (frame);
bfb3754e 1724 selected_frame_level_changed_event (frame_relative_level (selected_frame));
c906108c
SS
1725}
1726
1727/* ARGSUSED */
1728static void
fba45db2 1729down_silently_command (char *count_exp, int from_tty)
c906108c
SS
1730{
1731 down_silently_base (count_exp);
c906108c
SS
1732}
1733
1734static void
fba45db2 1735down_command (char *count_exp, int from_tty)
c906108c
SS
1736{
1737 down_silently_base (count_exp);
b31da25e
AC
1738 show_and_print_stack_frame (selected_frame,
1739 frame_relative_level (selected_frame), 1);
c906108c
SS
1740}
1741\f
8b93c638 1742void
fba45db2 1743return_command (char *retval_exp, int from_tty)
c906108c
SS
1744{
1745 struct symbol *thisfun;
1746 CORE_ADDR selected_frame_addr;
1747 CORE_ADDR selected_frame_pc;
1748 struct frame_info *frame;
3d6d86c6 1749 struct value *return_value = NULL;
c906108c
SS
1750
1751 if (selected_frame == NULL)
1752 error ("No selected frame.");
1753 thisfun = get_frame_function (selected_frame);
c193f6ac 1754 selected_frame_addr = get_frame_base (selected_frame);
c906108c
SS
1755 selected_frame_pc = selected_frame->pc;
1756
1757 /* Compute the return value (if any -- possibly getting errors here). */
1758
1759 if (retval_exp)
1760 {
1761 struct type *return_type = NULL;
1762
1763 return_value = parse_and_eval (retval_exp);
1764
1765 /* Cast return value to the return type of the function. */
1766 if (thisfun != NULL)
1767 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1768 if (return_type == NULL)
1769 return_type = builtin_type_int;
1770 return_value = value_cast (return_type, return_value);
1771
1772 /* Make sure we have fully evaluated it, since
c5aa993b 1773 it might live in the stack frame we're about to pop. */
c906108c
SS
1774 if (VALUE_LAZY (return_value))
1775 value_fetch_lazy (return_value);
1776 }
1777
1778 /* If interactive, require confirmation. */
1779
1780 if (from_tty)
1781 {
1782 if (thisfun != 0)
1783 {
1784 if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1785 {
1786 error ("Not confirmed.");
1787 /* NOTREACHED */
1788 }
1789 }
c5aa993b
JM
1790 else if (!query ("Make selected stack frame return now? "))
1791 error ("Not confirmed.");
c906108c
SS
1792 }
1793
1794 /* Do the real work. Pop until the specified frame is current. We
1795 use this method because the selected_frame is not valid after
1796 a POP_FRAME. The pc comparison makes this work even if the
1797 selected frame shares its fp with another frame. */
1798
c5aa993b 1799 while (selected_frame_addr != (frame = get_current_frame ())->frame
c906108c
SS
1800 || selected_frame_pc != frame->pc)
1801 POP_FRAME;
1802
1803 /* Then pop that frame. */
1804
1805 POP_FRAME;
1806
1807 /* Compute the return value (if any) and store in the place
1808 for return values. */
1809
1810 if (retval_exp)
1811 set_return_value (return_value);
1812
1a2aab69
PS
1813 /* If we are at the end of a call dummy now, pop the dummy frame too. */
1814
1815 if (CALL_DUMMY_HAS_COMPLETED (read_pc(), read_sp (),
c193f6ac 1816 get_frame_base (get_current_frame ())))
1a2aab69
PS
1817 POP_FRAME;
1818
c906108c
SS
1819 /* If interactive, print the frame that is now current. */
1820
1821 if (from_tty)
1822 frame_command ("0", 1);
1823 else
1824 select_frame_command ("0", 0);
1825}
1826
1827/* Sets the scope to input function name, provided that the
1828 function is within the current stack frame */
1829
1830struct function_bounds
1831{
1832 CORE_ADDR low, high;
1833};
1834
a14ed312 1835static void func_command (char *arg, int from_tty);
c906108c 1836static void
fba45db2 1837func_command (char *arg, int from_tty)
c906108c
SS
1838{
1839 struct frame_info *fp;
1840 int found = 0;
1841 struct symtabs_and_lines sals;
1842 int i;
1843 int level = 1;
1844 struct function_bounds *func_bounds = (struct function_bounds *) NULL;
1845
1846 if (arg != (char *) NULL)
1847 return;
1848
1849 fp = parse_frame_specification ("0");
1850 sals = decode_line_spec (arg, 1);
1851 func_bounds = (struct function_bounds *) xmalloc (
1852 sizeof (struct function_bounds) * sals.nelts);
1853 for (i = 0; (i < sals.nelts && !found); i++)
1854 {
1855 if (sals.sals[i].pc == (CORE_ADDR) 0 ||
1856 find_pc_partial_function (sals.sals[i].pc,
1857 (char **) NULL,
1858 &func_bounds[i].low,
1859 &func_bounds[i].high) == 0)
1860 {
1861 func_bounds[i].low =
1862 func_bounds[i].high = (CORE_ADDR) NULL;
1863 }
1864 }
1865
1866 do
1867 {
1868 for (i = 0; (i < sals.nelts && !found); i++)
1869 found = (fp->pc >= func_bounds[i].low &&
1870 fp->pc < func_bounds[i].high);
1871 if (!found)
1872 {
1873 level = 1;
1874 fp = find_relative_frame (fp, &level);
1875 }
1876 }
1877 while (!found && level == 0);
1878
1879 if (func_bounds)
b8c9b27d 1880 xfree (func_bounds);
c906108c
SS
1881
1882 if (!found)
1883 printf_filtered ("'%s' not within current stack frame.\n", arg);
1884 else if (fp != selected_frame)
bedfa57b 1885 select_and_print_frame (fp);
c906108c
SS
1886}
1887
1888/* Gets the language of the current frame. */
1889
1890enum language
fba45db2 1891get_frame_language (void)
c906108c
SS
1892{
1893 register struct symtab *s;
1894 enum language flang; /* The language of the current frame */
c5aa993b 1895
c906108c
SS
1896 if (selected_frame)
1897 {
c5aa993b 1898 s = find_pc_symtab (selected_frame->pc);
c906108c
SS
1899 if (s)
1900 flang = s->language;
1901 else
1902 flang = language_unknown;
1903 }
1904 else
1905 flang = language_unknown;
1906
1907 return flang;
1908}
1909\f
1910void
fba45db2 1911_initialize_stack (void)
c906108c 1912{
c5aa993b 1913#if 0
c906108c
SS
1914 backtrace_limit = 30;
1915#endif
1916
1917 add_com ("return", class_stack, return_command,
1918 "Make selected stack frame return to its caller.\n\
1919Control remains in the debugger, but when you continue\n\
1920execution will resume in the frame above the one now selected.\n\
1921If an argument is given, it is an expression for the value to return.");
1922
1923 add_com ("up", class_stack, up_command,
1924 "Select and print stack frame that called this one.\n\
1925An argument says how many frames up to go.");
1926 add_com ("up-silently", class_support, up_silently_command,
1927 "Same as the `up' command, but does not print anything.\n\
1928This is useful in command scripts.");
1929
1930 add_com ("down", class_stack, down_command,
1931 "Select and print stack frame called by this one.\n\
1932An argument says how many frames down to go.");
1933 add_com_alias ("do", "down", class_stack, 1);
1934 add_com_alias ("dow", "down", class_stack, 1);
1935 add_com ("down-silently", class_support, down_silently_command,
1936 "Same as the `down' command, but does not print anything.\n\
1937This is useful in command scripts.");
1938
1939 add_com ("frame", class_stack, frame_command,
1940 "Select and print a stack frame.\n\
1941With no argument, print the selected stack frame. (See also \"info frame\").\n\
1942An argument specifies the frame to select.\n\
1943It can be a stack frame number or the address of the frame.\n\
1944With argument, nothing is printed if input is coming from\n\
1945a command file or a user-defined command.");
1946
1947 add_com_alias ("f", "frame", class_stack, 1);
1948
1949 if (xdb_commands)
1950 {
c5aa993b
JM
1951 add_com ("L", class_stack, current_frame_command,
1952 "Print the current stack frame.\n");
c906108c
SS
1953 add_com_alias ("V", "frame", class_stack, 1);
1954 }
1955 add_com ("select-frame", class_stack, select_frame_command,
1956 "Select a stack frame without printing anything.\n\
1957An argument specifies the frame to select.\n\
1958It can be a stack frame number or the address of the frame.\n");
1959
1960 add_com ("backtrace", class_stack, backtrace_command,
1961 "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1962With a negative argument, print outermost -COUNT frames.\n\
1963Use of the 'full' qualifier also prints the values of the local variables.\n");
1964 add_com_alias ("bt", "backtrace", class_stack, 0);
1965 if (xdb_commands)
1966 {
1967 add_com_alias ("t", "backtrace", class_stack, 0);
1968 add_com ("T", class_stack, backtrace_full_command,
c5aa993b 1969 "Print backtrace of all stack frames, or innermost COUNT frames \n\
c906108c
SS
1970and the values of the local variables.\n\
1971With a negative argument, print outermost -COUNT frames.\n\
1972Usage: T <count>\n");
1973 }
1974
1975 add_com_alias ("where", "backtrace", class_alias, 0);
1976 add_info ("stack", backtrace_command,
1977 "Backtrace of the stack, or innermost COUNT frames.");
1978 add_info_alias ("s", "stack", 1);
1979 add_info ("frame", frame_info,
1980 "All about selected stack frame, or frame at ADDR.");
1981 add_info_alias ("f", "frame", 1);
1982 add_info ("locals", locals_info,
1983 "Local variables of current stack frame.");
1984 add_info ("args", args_info,
1985 "Argument variables of current stack frame.");
1986 if (xdb_commands)
c5aa993b
JM
1987 add_com ("l", class_info, args_plus_locals_info,
1988 "Argument and local variables of current stack frame.");
c906108c
SS
1989
1990 if (dbx_commands)
c5aa993b
JM
1991 add_com ("func", class_stack, func_command,
1992 "Select the stack frame that contains <func>.\nUsage: func <name>\n");
c906108c
SS
1993
1994 add_info ("catch", catch_info,
1995 "Exceptions that can be caught in the current stack frame.");
1996
1997#if 0
c5aa993b
JM
1998 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
1999 "Specify maximum number of frames for \"backtrace\" to print by default.",
c906108c
SS
2000 &setlist);
2001 add_info ("backtrace-limit", backtrace_limit_info,
c5aa993b 2002 "The maximum number of frames for \"backtrace\" to print by default.");
c906108c
SS
2003#endif
2004}
This page took 0.534096 seconds and 4 git commands to generate.