2010-05-13 Michael Snyder <msnyder@vmware.com>
[binutils-gdb.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
5 2009, 2010 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
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 3 of the License, or
12 (at your option) any later version.
13
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.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 #include "defs.h"
23 #include "value.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "expression.h"
27 #include "language.h"
28 #include "frame.h"
29 #include "gdbcmd.h"
30 #include "gdbcore.h"
31 #include "target.h"
32 #include "source.h"
33 #include "breakpoint.h"
34 #include "demangle.h"
35 #include "inferior.h"
36 #include "annotate.h"
37 #include "ui-out.h"
38 #include "block.h"
39 #include "stack.h"
40 #include "dictionary.h"
41 #include "exceptions.h"
42 #include "reggroups.h"
43 #include "regcache.h"
44 #include "solib.h"
45 #include "valprint.h"
46 #include "gdbthread.h"
47 #include "cp-support.h"
48 #include "disasm.h"
49 #include "inline-frame.h"
50
51 #include "gdb_assert.h"
52 #include <ctype.h>
53 #include "gdb_string.h"
54
55 #include "psymtab.h"
56 #include "symfile.h"
57
58 void (*deprecated_selected_frame_level_changed_hook) (int);
59
60 /* The possible choices of "set print frame-arguments, and the value
61 of this setting. */
62
63 static const char *print_frame_arguments_choices[] =
64 {"all", "scalars", "none", NULL};
65 static const char *print_frame_arguments = "scalars";
66
67 /* Prototypes for local functions. */
68
69 static void print_frame_local_vars (struct frame_info *, int,
70 struct ui_file *);
71
72 static void print_frame (struct frame_info *frame, int print_level,
73 enum print_what print_what, int print_args,
74 struct symtab_and_line sal);
75
76 /* Zero means do things normally; we are interacting directly with the
77 user. One means print the full filename and linenumber when a
78 frame is printed, and do so in a format emacs18/emacs19.22 can
79 parse. Two means print similar annotations, but in many more
80 cases and in a slightly different syntax. */
81
82 int annotation_level = 0;
83 \f
84
85 struct print_stack_frame_args
86 {
87 struct frame_info *frame;
88 int print_level;
89 enum print_what print_what;
90 int print_args;
91 };
92
93 /* Show or print the frame arguments; stub for catch_errors. */
94
95 static int
96 print_stack_frame_stub (void *args)
97 {
98 struct print_stack_frame_args *p = args;
99 int center = (p->print_what == SRC_LINE || p->print_what == SRC_AND_LOC);
100
101 print_frame_info (p->frame, p->print_level, p->print_what, p->print_args);
102 set_current_sal_from_frame (p->frame, center);
103 return 0;
104 }
105
106 /* Return 1 if we should display the address in addition to the location,
107 because we are in the middle of a statement. */
108
109 static int
110 frame_show_address (struct frame_info *frame,
111 struct symtab_and_line sal)
112 {
113 /* If there is a line number, but no PC, then there is no location
114 information associated with this sal. The only way that should
115 happen is for the call sites of inlined functions (SAL comes from
116 find_frame_sal). Otherwise, we would have some PC range if the
117 SAL came from a line table. */
118 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
119 {
120 if (get_next_frame (frame) == NULL)
121 gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
122 else
123 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
124 return 0;
125 }
126
127 return get_frame_pc (frame) != sal.pc;
128 }
129
130 /* Show or print a stack frame FRAME briefly. The output is format
131 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
132 relative level, function name, argument list, and file name and
133 line number. If the frame's PC is not at the beginning of the
134 source line, the actual PC is printed at the beginning. */
135
136 void
137 print_stack_frame (struct frame_info *frame, int print_level,
138 enum print_what print_what)
139 {
140 struct print_stack_frame_args args;
141
142 args.frame = frame;
143 args.print_level = print_level;
144 args.print_what = print_what;
145 /* For mi, alway print location and address. */
146 args.print_what = ui_out_is_mi_like_p (uiout) ? LOC_AND_ADDRESS : print_what;
147 args.print_args = 1;
148
149 catch_errors (print_stack_frame_stub, &args, "", RETURN_MASK_ERROR);
150 }
151
152 struct print_args_args
153 {
154 struct symbol *func;
155 struct frame_info *frame;
156 struct ui_file *stream;
157 };
158
159 static int print_args_stub (void *args);
160
161 /* Print nameless arguments of frame FRAME on STREAM, where START is
162 the offset of the first nameless argument, and NUM is the number of
163 nameless arguments to print. FIRST is nonzero if this is the first
164 argument (not just the first nameless argument). */
165
166 static void
167 print_frame_nameless_args (struct frame_info *frame, long start, int num,
168 int first, struct ui_file *stream)
169 {
170 struct gdbarch *gdbarch = get_frame_arch (frame);
171 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
172 int i;
173 CORE_ADDR argsaddr;
174 long arg_value;
175
176 for (i = 0; i < num; i++)
177 {
178 QUIT;
179 argsaddr = get_frame_args_address (frame);
180 if (!argsaddr)
181 return;
182 arg_value = read_memory_integer (argsaddr + start,
183 sizeof (int), byte_order);
184 if (!first)
185 fprintf_filtered (stream, ", ");
186 fprintf_filtered (stream, "%ld", arg_value);
187 first = 0;
188 start += sizeof (int);
189 }
190 }
191
192 /* Print the arguments of frame FRAME on STREAM, given the function
193 FUNC running in that frame (as a symbol), where NUM is the number
194 of arguments according to the stack frame (or -1 if the number of
195 arguments is unknown). */
196
197 /* Note that currently the "number of arguments according to the
198 stack frame" is only known on VAX where i refers to the "number of
199 ints of arguments according to the stack frame". */
200
201 static void
202 print_frame_args (struct symbol *func, struct frame_info *frame,
203 int num, struct ui_file *stream)
204 {
205 int first = 1;
206 /* Offset of next stack argument beyond the one we have seen that is
207 at the highest offset, or -1 if we haven't come to a stack
208 argument yet. */
209 long highest_offset = -1;
210 /* Number of ints of arguments that we have printed so far. */
211 int args_printed = 0;
212 struct cleanup *old_chain, *list_chain;
213 struct ui_stream *stb;
214 /* True if we should print arguments, false otherwise. */
215 int print_args = strcmp (print_frame_arguments, "none");
216 /* True in "summary" mode, false otherwise. */
217 int summary = !strcmp (print_frame_arguments, "scalars");
218
219 stb = ui_out_stream_new (uiout);
220 old_chain = make_cleanup_ui_out_stream_delete (stb);
221
222 if (func)
223 {
224 struct block *b = SYMBOL_BLOCK_VALUE (func);
225 struct dict_iterator iter;
226 struct symbol *sym;
227 struct value *val;
228
229 ALL_BLOCK_SYMBOLS (b, iter, sym)
230 {
231 QUIT;
232
233 /* Keep track of the highest stack argument offset seen, and
234 skip over any kinds of symbols we don't care about. */
235
236 if (!SYMBOL_IS_ARGUMENT (sym))
237 continue;
238
239 switch (SYMBOL_CLASS (sym))
240 {
241 case LOC_ARG:
242 case LOC_REF_ARG:
243 {
244 long current_offset = SYMBOL_VALUE (sym);
245 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
246
247 /* Compute address of next argument by adding the size of
248 this argument and rounding to an int boundary. */
249 current_offset =
250 ((current_offset + arg_size + sizeof (int) - 1)
251 & ~(sizeof (int) - 1));
252
253 /* If this is the highest offset seen yet, set
254 highest_offset. */
255 if (highest_offset == -1
256 || (current_offset > highest_offset))
257 highest_offset = current_offset;
258
259 /* Add the number of ints we're about to print to
260 args_printed. */
261 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
262 }
263
264 /* We care about types of symbols, but don't need to
265 keep track of stack offsets in them. */
266 case LOC_REGISTER:
267 case LOC_REGPARM_ADDR:
268 case LOC_COMPUTED:
269 case LOC_OPTIMIZED_OUT:
270 default:
271 break;
272 }
273
274 /* We have to look up the symbol because arguments can have
275 two entries (one a parameter, one a local) and the one we
276 want is the local, which lookup_symbol will find for us.
277 This includes gcc1 (not gcc2) on SPARC when passing a
278 small structure and gcc2 when the argument type is float
279 and it is passed as a double and converted to float by
280 the prologue (in the latter case the type of the LOC_ARG
281 symbol is double and the type of the LOC_LOCAL symbol is
282 float). */
283 /* But if the parameter name is null, don't try it. Null
284 parameter names occur on the RS/6000, for traceback
285 tables. FIXME, should we even print them? */
286
287 if (*SYMBOL_LINKAGE_NAME (sym))
288 {
289 struct symbol *nsym;
290 nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
291 b, VAR_DOMAIN, NULL);
292 gdb_assert (nsym != NULL);
293 if (SYMBOL_CLASS (nsym) == LOC_REGISTER
294 && !SYMBOL_IS_ARGUMENT (nsym))
295 {
296 /* There is a LOC_ARG/LOC_REGISTER pair. This means
297 that it was passed on the stack and loaded into a
298 register, or passed in a register and stored in a
299 stack slot. GDB 3.x used the LOC_ARG; GDB
300 4.0-4.11 used the LOC_REGISTER.
301
302 Reasons for using the LOC_ARG:
303
304 (1) Because find_saved_registers may be slow for
305 remote debugging.
306
307 (2) Because registers are often re-used and stack
308 slots rarely (never?) are. Therefore using
309 the stack slot is much less likely to print
310 garbage.
311
312 Reasons why we might want to use the LOC_REGISTER:
313
314 (1) So that the backtrace prints the same value
315 as "print foo". I see no compelling reason
316 why this needs to be the case; having the
317 backtrace print the value which was passed
318 in, and "print foo" print the value as
319 modified within the called function, makes
320 perfect sense to me.
321
322 Additional note: It might be nice if "info args"
323 displayed both values.
324
325 One more note: There is a case with SPARC
326 structure passing where we need to use the
327 LOC_REGISTER, but this is dealt with by creating
328 a single LOC_REGPARM in symbol reading. */
329
330 /* Leave sym (the LOC_ARG) alone. */
331 ;
332 }
333 else
334 sym = nsym;
335 }
336
337 /* Print the current arg. */
338 if (!first)
339 ui_out_text (uiout, ", ");
340 ui_out_wrap_hint (uiout, " ");
341
342 annotate_arg_begin ();
343
344 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
345 fprintf_symbol_filtered (stb->stream, SYMBOL_PRINT_NAME (sym),
346 SYMBOL_LANGUAGE (sym),
347 DMGL_PARAMS | DMGL_ANSI);
348 ui_out_field_stream (uiout, "name", stb);
349 annotate_arg_name_end ();
350 ui_out_text (uiout, "=");
351
352 if (print_args)
353 {
354 /* Avoid value_print because it will deref ref parameters.
355 We just want to print their addresses. Print ??? for
356 args whose address we do not know. We pass 2 as
357 "recurse" to val_print because our standard indentation
358 here is 4 spaces, and val_print indents 2 for each
359 recurse. */
360 val = read_var_value (sym, frame);
361
362 annotate_arg_value (val == NULL ? NULL : value_type (val));
363
364 if (val)
365 {
366 const struct language_defn *language;
367 struct value_print_options opts;
368
369 /* Use the appropriate language to display our symbol,
370 unless the user forced the language to a specific
371 language. */
372 if (language_mode == language_mode_auto)
373 language = language_def (SYMBOL_LANGUAGE (sym));
374 else
375 language = current_language;
376
377 get_raw_print_options (&opts);
378 opts.deref_ref = 0;
379 opts.summary = summary;
380 common_val_print (val, stb->stream, 2, &opts, language);
381 ui_out_field_stream (uiout, "value", stb);
382 }
383 else
384 ui_out_text (uiout, "???");
385 }
386 else
387 ui_out_text (uiout, "...");
388
389
390 /* Invoke ui_out_tuple_end. */
391 do_cleanups (list_chain);
392
393 annotate_arg_end ();
394
395 first = 0;
396 }
397 }
398
399 /* Don't print nameless args in situations where we don't know
400 enough about the stack to find them. */
401 if (num != -1)
402 {
403 long start;
404
405 if (highest_offset == -1)
406 start = gdbarch_frame_args_skip (get_frame_arch (frame));
407 else
408 start = highest_offset;
409
410 print_frame_nameless_args (frame, start, num - args_printed,
411 first, stream);
412 }
413
414 do_cleanups (old_chain);
415 }
416
417 /* Stub for catch_errors. */
418
419 static int
420 print_args_stub (void *args)
421 {
422 struct print_args_args *p = args;
423 struct gdbarch *gdbarch = get_frame_arch (p->frame);
424 int numargs;
425
426 if (gdbarch_frame_num_args_p (gdbarch))
427 {
428 numargs = gdbarch_frame_num_args (gdbarch, p->frame);
429 gdb_assert (numargs >= 0);
430 }
431 else
432 numargs = -1;
433 print_frame_args (p->func, p->frame, numargs, p->stream);
434 return 0;
435 }
436
437 /* Set the current source and line to the location given by frame
438 FRAME, if possible. When CENTER is true, adjust so the relevant
439 line is in the center of the next 'list'. */
440
441 void
442 set_current_sal_from_frame (struct frame_info *frame, int center)
443 {
444 struct symtab_and_line sal;
445
446 find_frame_sal (frame, &sal);
447 if (sal.symtab)
448 {
449 if (center)
450 sal.line = max (sal.line - get_lines_to_list () / 2, 1);
451 set_current_source_symtab_and_line (&sal);
452 }
453 }
454
455 /* If ON, GDB will display disassembly of the next source line when
456 execution of the program being debugged stops.
457 If AUTO (which is the default), or there's no line info to determine
458 the source line of the next instruction, display disassembly of next
459 instruction instead. */
460
461 static enum auto_boolean disassemble_next_line;
462
463 static void
464 show_disassemble_next_line (struct ui_file *file, int from_tty,
465 struct cmd_list_element *c,
466 const char *value)
467 {
468 fprintf_filtered (file, _("\
469 Debugger's willingness to use disassemble-next-line is %s.\n"),
470 value);
471 }
472
473 /* Show assembly codes; stub for catch_errors. */
474
475 struct gdb_disassembly_stub_args
476 {
477 struct gdbarch *gdbarch;
478 int how_many;
479 CORE_ADDR low;
480 CORE_ADDR high;
481 };
482
483 static void
484 gdb_disassembly_stub (void *args)
485 {
486 struct gdb_disassembly_stub_args *p = args;
487
488 gdb_disassembly (p->gdbarch, uiout, 0,
489 DISASSEMBLY_RAW_INSN, p->how_many,
490 p->low, p->high);
491 }
492
493 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
494 because it will be broken by filter sometime. */
495
496 static void
497 do_gdb_disassembly (struct gdbarch *gdbarch,
498 int how_many, CORE_ADDR low, CORE_ADDR high)
499 {
500 volatile struct gdb_exception exception;
501 struct gdb_disassembly_stub_args args;
502
503 args.gdbarch = gdbarch;
504 args.how_many = how_many;
505 args.low = low;
506 args.high = high;
507 TRY_CATCH (exception, RETURN_MASK_ALL)
508 {
509 gdb_disassembly_stub (&args);
510 }
511 /* If an exception was thrown while doing the disassembly, print
512 the error message, to give the user a clue of what happened. */
513 if (exception.reason == RETURN_ERROR)
514 exception_print (gdb_stderr, exception);
515 }
516
517 /* Print information about frame FRAME. The output is format according
518 to PRINT_LEVEL and PRINT_WHAT and PRINT ARGS. The meaning of
519 PRINT_WHAT is:
520
521 SRC_LINE: Print only source line.
522 LOCATION: Print only location.
523 LOC_AND_SRC: Print location and source line.
524
525 Used in "where" output, and to emit breakpoint or step
526 messages. */
527
528 void
529 print_frame_info (struct frame_info *frame, int print_level,
530 enum print_what print_what, int print_args)
531 {
532 struct gdbarch *gdbarch = get_frame_arch (frame);
533 struct symtab_and_line sal;
534 int source_print;
535 int location_print;
536
537 if (get_frame_type (frame) == DUMMY_FRAME
538 || get_frame_type (frame) == SIGTRAMP_FRAME
539 || get_frame_type (frame) == ARCH_FRAME)
540 {
541 struct cleanup *uiout_cleanup
542 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
543
544 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
545 gdbarch, get_frame_pc (frame));
546
547 /* Do this regardless of SOURCE because we don't have any source
548 to list for this frame. */
549 if (print_level)
550 {
551 ui_out_text (uiout, "#");
552 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
553 frame_relative_level (frame));
554 }
555 if (ui_out_is_mi_like_p (uiout))
556 {
557 annotate_frame_address ();
558 ui_out_field_core_addr (uiout, "addr",
559 gdbarch, get_frame_pc (frame));
560 annotate_frame_address_end ();
561 }
562
563 if (get_frame_type (frame) == DUMMY_FRAME)
564 {
565 annotate_function_call ();
566 ui_out_field_string (uiout, "func", "<function called from gdb>");
567 }
568 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
569 {
570 annotate_signal_handler_caller ();
571 ui_out_field_string (uiout, "func", "<signal handler called>");
572 }
573 else if (get_frame_type (frame) == ARCH_FRAME)
574 {
575 ui_out_field_string (uiout, "func", "<cross-architecture call>");
576 }
577 ui_out_text (uiout, "\n");
578 annotate_frame_end ();
579
580 do_cleanups (uiout_cleanup);
581 return;
582 }
583
584 /* If FRAME is not the innermost frame, that normally means that
585 FRAME->pc points to *after* the call instruction, and we want to
586 get the line containing the call, never the next line. But if
587 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
588 next frame was not entered as the result of a call, and we want
589 to get the line containing FRAME->pc. */
590 find_frame_sal (frame, &sal);
591
592 location_print = (print_what == LOCATION
593 || print_what == LOC_AND_ADDRESS
594 || print_what == SRC_AND_LOC);
595
596 if (location_print || !sal.symtab)
597 print_frame (frame, print_level, print_what, print_args, sal);
598
599 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
600
601 /* If disassemble-next-line is set to auto or on and doesn't have
602 the line debug messages for $pc, output the next instruction. */
603 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
604 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
605 && source_print && !sal.symtab)
606 do_gdb_disassembly (get_frame_arch (frame), 1,
607 get_frame_pc (frame), get_frame_pc (frame) + 1);
608
609 if (source_print && sal.symtab)
610 {
611 int done = 0;
612 int mid_statement = ((print_what == SRC_LINE)
613 && frame_show_address (frame, sal));
614
615 if (annotation_level)
616 done = identify_source_line (sal.symtab, sal.line, mid_statement,
617 get_frame_pc (frame));
618 if (!done)
619 {
620 if (deprecated_print_frame_info_listing_hook)
621 deprecated_print_frame_info_listing_hook (sal.symtab,
622 sal.line,
623 sal.line + 1, 0);
624 else
625 {
626 struct value_print_options opts;
627 get_user_print_options (&opts);
628 /* We used to do this earlier, but that is clearly
629 wrong. This function is used by many different
630 parts of gdb, including normal_stop in infrun.c,
631 which uses this to print out the current PC
632 when we stepi/nexti into the middle of a source
633 line. Only the command line really wants this
634 behavior. Other UIs probably would like the
635 ability to decide for themselves if it is desired. */
636 if (opts.addressprint && mid_statement)
637 {
638 ui_out_field_core_addr (uiout, "addr",
639 gdbarch, get_frame_pc (frame));
640 ui_out_text (uiout, "\t");
641 }
642
643 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
644 }
645 }
646
647 /* If disassemble-next-line is set to on and there is line debug
648 messages, output assembly codes for next line. */
649 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
650 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
651 }
652
653 if (print_what != LOCATION)
654 set_default_breakpoint (1, sal.pspace,
655 get_frame_pc (frame), sal.symtab, sal.line);
656
657 annotate_frame_end ();
658
659 gdb_flush (gdb_stdout);
660 }
661
662 /* Attempt to obtain the FUNNAME and FUNLANG of the function corresponding
663 to FRAME. */
664 void
665 find_frame_funname (struct frame_info *frame, char **funname,
666 enum language *funlang)
667 {
668 struct symbol *func;
669
670 *funname = NULL;
671 *funlang = language_unknown;
672
673 func = get_frame_function (frame);
674 if (func)
675 {
676 /* In certain pathological cases, the symtabs give the wrong
677 function (when we are in the first function in a file which
678 is compiled without debugging symbols, the previous function
679 is compiled with debugging symbols, and the "foo.o" symbol
680 that is supposed to tell us where the file with debugging
681 symbols ends has been truncated by ar because it is longer
682 than 15 characters). This also occurs if the user uses asm()
683 to create a function but not stabs for it (in a file compiled
684 with -g).
685
686 So look in the minimal symbol tables as well, and if it comes
687 up with a larger address for the function use that instead.
688 I don't think this can ever cause any problems; there
689 shouldn't be any minimal symbols in the middle of a function;
690 if this is ever changed many parts of GDB will need to be
691 changed (and we'll create a find_pc_minimal_function or some
692 such). */
693
694 struct minimal_symbol *msymbol = NULL;
695
696 /* Don't attempt to do this for inlined functions, which do not
697 have a corresponding minimal symbol. */
698 if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
699 msymbol
700 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
701
702 if (msymbol != NULL
703 && (SYMBOL_VALUE_ADDRESS (msymbol)
704 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
705 {
706 /* We also don't know anything about the function besides
707 its address and name. */
708 func = 0;
709 *funname = SYMBOL_PRINT_NAME (msymbol);
710 *funlang = SYMBOL_LANGUAGE (msymbol);
711 }
712 else
713 {
714 *funname = SYMBOL_PRINT_NAME (func);
715 *funlang = SYMBOL_LANGUAGE (func);
716 if (*funlang == language_cplus)
717 {
718 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
719 to display the demangled name that we already have
720 stored in the symbol table, but we stored a version
721 with DMGL_PARAMS turned on, and here we don't want to
722 display parameters. So remove the parameters. */
723 char *func_only = cp_remove_params (*funname);
724 if (func_only)
725 {
726 *funname = func_only;
727 make_cleanup (xfree, func_only);
728 }
729 }
730 }
731 }
732 else
733 {
734 struct minimal_symbol *msymbol =
735 lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
736
737 if (msymbol != NULL)
738 {
739 *funname = SYMBOL_PRINT_NAME (msymbol);
740 *funlang = SYMBOL_LANGUAGE (msymbol);
741 }
742 }
743 }
744
745 static void
746 print_frame (struct frame_info *frame, int print_level,
747 enum print_what print_what, int print_args,
748 struct symtab_and_line sal)
749 {
750 struct gdbarch *gdbarch = get_frame_arch (frame);
751 char *funname = NULL;
752 enum language funlang = language_unknown;
753 struct ui_stream *stb;
754 struct cleanup *old_chain, *list_chain;
755 struct value_print_options opts;
756
757 stb = ui_out_stream_new (uiout);
758 old_chain = make_cleanup_ui_out_stream_delete (stb);
759
760 find_frame_funname (frame, &funname, &funlang);
761
762 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
763 gdbarch, get_frame_pc (frame));
764
765 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
766
767 if (print_level)
768 {
769 ui_out_text (uiout, "#");
770 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
771 frame_relative_level (frame));
772 }
773 get_user_print_options (&opts);
774 if (opts.addressprint)
775 if (frame_show_address (frame, sal) || !sal.symtab
776 || print_what == LOC_AND_ADDRESS)
777 {
778 annotate_frame_address ();
779 ui_out_field_core_addr (uiout, "addr", gdbarch, get_frame_pc (frame));
780 annotate_frame_address_end ();
781 ui_out_text (uiout, " in ");
782 }
783 annotate_frame_function_name ();
784 fprintf_symbol_filtered (stb->stream, funname ? funname : "??",
785 funlang, DMGL_ANSI);
786 ui_out_field_stream (uiout, "func", stb);
787 ui_out_wrap_hint (uiout, " ");
788 annotate_frame_args ();
789
790 ui_out_text (uiout, " (");
791 if (print_args)
792 {
793 struct print_args_args args;
794 struct cleanup *args_list_chain;
795 args.frame = frame;
796 args.func = find_pc_function (get_frame_address_in_block (frame));
797 args.stream = gdb_stdout;
798 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
799 catch_errors (print_args_stub, &args, "", RETURN_MASK_ERROR);
800 /* FIXME: ARGS must be a list. If one argument is a string it
801 will have " that will not be properly escaped. */
802 /* Invoke ui_out_tuple_end. */
803 do_cleanups (args_list_chain);
804 QUIT;
805 }
806 ui_out_text (uiout, ")");
807 if (sal.symtab && sal.symtab->filename)
808 {
809 annotate_frame_source_begin ();
810 ui_out_wrap_hint (uiout, " ");
811 ui_out_text (uiout, " at ");
812 annotate_frame_source_file ();
813 ui_out_field_string (uiout, "file", sal.symtab->filename);
814 if (ui_out_is_mi_like_p (uiout))
815 {
816 const char *fullname = symtab_to_fullname (sal.symtab);
817 if (fullname != NULL)
818 ui_out_field_string (uiout, "fullname", fullname);
819 }
820 annotate_frame_source_file_end ();
821 ui_out_text (uiout, ":");
822 annotate_frame_source_line ();
823 ui_out_field_int (uiout, "line", sal.line);
824 annotate_frame_source_end ();
825 }
826
827 if (!funname || (!sal.symtab || !sal.symtab->filename))
828 {
829 #ifdef PC_SOLIB
830 char *lib = PC_SOLIB (get_frame_pc (frame));
831 #else
832 char *lib = solib_name_from_address (get_frame_program_space (frame),
833 get_frame_pc (frame));
834 #endif
835 if (lib)
836 {
837 annotate_frame_where ();
838 ui_out_wrap_hint (uiout, " ");
839 ui_out_text (uiout, " from ");
840 ui_out_field_string (uiout, "from", lib);
841 }
842 }
843
844 /* do_cleanups will call ui_out_tuple_end() for us. */
845 do_cleanups (list_chain);
846 ui_out_text (uiout, "\n");
847 do_cleanups (old_chain);
848 }
849 \f
850
851 /* Read a frame specification in whatever the appropriate format is
852 from FRAME_EXP. Call error(), printing MESSAGE, if the
853 specification is in any way invalid (so this function never returns
854 NULL). When SEPECTED_P is non-NULL set its target to indicate that
855 the default selected frame was used. */
856
857 static struct frame_info *
858 parse_frame_specification_1 (const char *frame_exp, const char *message,
859 int *selected_frame_p)
860 {
861 int numargs;
862 struct value *args[4];
863 CORE_ADDR addrs[ARRAY_SIZE (args)];
864
865 if (frame_exp == NULL)
866 numargs = 0;
867 else
868 {
869 numargs = 0;
870 while (1)
871 {
872 char *addr_string;
873 struct cleanup *cleanup;
874 const char *p;
875
876 /* Skip leading white space, bail of EOL. */
877 while (isspace (*frame_exp))
878 frame_exp++;
879 if (!*frame_exp)
880 break;
881
882 /* Parse the argument, extract it, save it. */
883 for (p = frame_exp;
884 *p && !isspace (*p);
885 p++);
886 addr_string = savestring (frame_exp, p - frame_exp);
887 frame_exp = p;
888 cleanup = make_cleanup (xfree, addr_string);
889
890 /* NOTE: Parse and evaluate expression, but do not use
891 functions such as parse_and_eval_long or
892 parse_and_eval_address to also extract the value.
893 Instead value_as_long and value_as_address are used.
894 This avoids problems with expressions that contain
895 side-effects. */
896 if (numargs >= ARRAY_SIZE (args))
897 error (_("Too many args in frame specification"));
898 args[numargs++] = parse_and_eval (addr_string);
899
900 do_cleanups (cleanup);
901 }
902 }
903
904 /* If no args, default to the selected frame. */
905 if (numargs == 0)
906 {
907 if (selected_frame_p != NULL)
908 (*selected_frame_p) = 1;
909 return get_selected_frame (message);
910 }
911
912 /* None of the remaining use the selected frame. */
913 if (selected_frame_p != NULL)
914 (*selected_frame_p) = 0;
915
916 /* Assume the single arg[0] is an integer, and try using that to
917 select a frame relative to current. */
918 if (numargs == 1)
919 {
920 struct frame_info *fid;
921 int level = value_as_long (args[0]);
922 fid = find_relative_frame (get_current_frame (), &level);
923 if (level == 0)
924 /* find_relative_frame was successful */
925 return fid;
926 }
927
928 /* Convert each value into a corresponding address. */
929 {
930 int i;
931 for (i = 0; i < numargs; i++)
932 addrs[i] = value_as_address (args[i]);
933 }
934
935 /* Assume that the single arg[0] is an address, use that to identify
936 a frame with a matching ID. Should this also accept stack/pc or
937 stack/pc/special. */
938 if (numargs == 1)
939 {
940 struct frame_id id = frame_id_build_wild (addrs[0]);
941 struct frame_info *fid;
942
943 /* If (s)he specifies the frame with an address, he deserves
944 what (s)he gets. Still, give the highest one that matches.
945 (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
946 know). */
947 for (fid = get_current_frame ();
948 fid != NULL;
949 fid = get_prev_frame (fid))
950 {
951 if (frame_id_eq (id, get_frame_id (fid)))
952 {
953 struct frame_info *prev_frame;
954
955 while (1)
956 {
957 prev_frame = get_prev_frame (fid);
958 if (!prev_frame
959 || !frame_id_eq (id, get_frame_id (prev_frame)))
960 break;
961 fid = prev_frame;
962 }
963 return fid;
964 }
965 }
966 }
967
968 /* We couldn't identify the frame as an existing frame, but
969 perhaps we can create one with a single argument. */
970 if (numargs == 1)
971 return create_new_frame (addrs[0], 0);
972 else if (numargs == 2)
973 return create_new_frame (addrs[0], addrs[1]);
974 else
975 error (_("Too many args in frame specification"));
976 }
977
978 static struct frame_info *
979 parse_frame_specification (char *frame_exp)
980 {
981 return parse_frame_specification_1 (frame_exp, NULL, NULL);
982 }
983
984 /* Print verbosely the selected frame or the frame at address
985 ADDR_EXP. Absolutely all information in the frame is printed. */
986
987 static void
988 frame_info (char *addr_exp, int from_tty)
989 {
990 struct frame_info *fi;
991 struct symtab_and_line sal;
992 struct symbol *func;
993 struct symtab *s;
994 struct frame_info *calling_frame_info;
995 int numregs;
996 char *funname = 0;
997 enum language funlang = language_unknown;
998 const char *pc_regname;
999 int selected_frame_p;
1000 struct gdbarch *gdbarch;
1001 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
1002
1003 fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
1004 gdbarch = get_frame_arch (fi);
1005
1006 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1007 is not a good name. */
1008 if (gdbarch_pc_regnum (gdbarch) >= 0)
1009 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1010 easily not match that of the internal value returned by
1011 get_frame_pc(). */
1012 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1013 else
1014 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1015 architectures will often have a hardware register called "pc",
1016 and that register's value, again, can easily not match
1017 get_frame_pc(). */
1018 pc_regname = "pc";
1019
1020 find_frame_sal (fi, &sal);
1021 func = get_frame_function (fi);
1022 /* FIXME: cagney/2002-11-28: Why bother? Won't sal.symtab contain
1023 the same value? */
1024 s = find_pc_symtab (get_frame_pc (fi));
1025 if (func)
1026 {
1027 funname = SYMBOL_PRINT_NAME (func);
1028 funlang = SYMBOL_LANGUAGE (func);
1029 if (funlang == language_cplus)
1030 {
1031 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1032 to display the demangled name that we already have
1033 stored in the symbol table, but we stored a version
1034 with DMGL_PARAMS turned on, and here we don't want to
1035 display parameters. So remove the parameters. */
1036 char *func_only = cp_remove_params (funname);
1037 if (func_only)
1038 {
1039 funname = func_only;
1040 make_cleanup (xfree, func_only);
1041 }
1042 }
1043 }
1044 else
1045 {
1046 struct minimal_symbol *msymbol;
1047
1048 msymbol = lookup_minimal_symbol_by_pc (get_frame_pc (fi));
1049 if (msymbol != NULL)
1050 {
1051 funname = SYMBOL_PRINT_NAME (msymbol);
1052 funlang = SYMBOL_LANGUAGE (msymbol);
1053 }
1054 }
1055 calling_frame_info = get_prev_frame (fi);
1056
1057 if (selected_frame_p && frame_relative_level (fi) >= 0)
1058 {
1059 printf_filtered (_("Stack level %d, frame at "),
1060 frame_relative_level (fi));
1061 }
1062 else
1063 {
1064 printf_filtered (_("Stack frame at "));
1065 }
1066 fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1067 printf_filtered (":\n");
1068 printf_filtered (" %s = ", pc_regname);
1069 fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1070
1071 wrap_here (" ");
1072 if (funname)
1073 {
1074 printf_filtered (" in ");
1075 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1076 DMGL_ANSI | DMGL_PARAMS);
1077 }
1078 wrap_here (" ");
1079 if (sal.symtab)
1080 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
1081 puts_filtered ("; ");
1082 wrap_here (" ");
1083 printf_filtered ("saved %s ", pc_regname);
1084 fputs_filtered (paddress (gdbarch, frame_unwind_caller_pc (fi)), gdb_stdout);
1085 printf_filtered ("\n");
1086
1087 if (calling_frame_info == NULL)
1088 {
1089 enum unwind_stop_reason reason;
1090
1091 reason = get_frame_unwind_stop_reason (fi);
1092 if (reason != UNWIND_NO_REASON)
1093 printf_filtered (_(" Outermost frame: %s\n"),
1094 frame_stop_reason_string (reason));
1095 }
1096 else if (get_frame_type (fi) == INLINE_FRAME)
1097 printf_filtered (" inlined into frame %d",
1098 frame_relative_level (get_prev_frame (fi)));
1099 else
1100 {
1101 printf_filtered (" called by frame at ");
1102 fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1103 gdb_stdout);
1104 }
1105 if (get_next_frame (fi) && calling_frame_info)
1106 puts_filtered (",");
1107 wrap_here (" ");
1108 if (get_next_frame (fi))
1109 {
1110 printf_filtered (" caller of frame at ");
1111 fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1112 gdb_stdout);
1113 }
1114 if (get_next_frame (fi) || calling_frame_info)
1115 puts_filtered ("\n");
1116
1117 if (s)
1118 printf_filtered (" source language %s.\n",
1119 language_str (s->language));
1120
1121 {
1122 /* Address of the argument list for this frame, or 0. */
1123 CORE_ADDR arg_list = get_frame_args_address (fi);
1124 /* Number of args for this frame, or -1 if unknown. */
1125 int numargs;
1126
1127 if (arg_list == 0)
1128 printf_filtered (" Arglist at unknown address.\n");
1129 else
1130 {
1131 printf_filtered (" Arglist at ");
1132 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1133 printf_filtered (",");
1134
1135 if (!gdbarch_frame_num_args_p (gdbarch))
1136 {
1137 numargs = -1;
1138 puts_filtered (" args: ");
1139 }
1140 else
1141 {
1142 numargs = gdbarch_frame_num_args (gdbarch, fi);
1143 gdb_assert (numargs >= 0);
1144 if (numargs == 0)
1145 puts_filtered (" no args.");
1146 else if (numargs == 1)
1147 puts_filtered (" 1 arg: ");
1148 else
1149 printf_filtered (" %d args: ", numargs);
1150 }
1151 print_frame_args (func, fi, numargs, gdb_stdout);
1152 puts_filtered ("\n");
1153 }
1154 }
1155 {
1156 /* Address of the local variables for this frame, or 0. */
1157 CORE_ADDR arg_list = get_frame_locals_address (fi);
1158
1159 if (arg_list == 0)
1160 printf_filtered (" Locals at unknown address,");
1161 else
1162 {
1163 printf_filtered (" Locals at ");
1164 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1165 printf_filtered (",");
1166 }
1167 }
1168
1169 /* Print as much information as possible on the location of all the
1170 registers. */
1171 {
1172 enum lval_type lval;
1173 int optimized;
1174 CORE_ADDR addr;
1175 int realnum;
1176 int count;
1177 int i;
1178 int need_nl = 1;
1179
1180 /* The sp is special; what's displayed isn't the save address, but
1181 the value of the previous frame's sp. This is a legacy thing,
1182 at one stage the frame cached the previous frame's SP instead
1183 of its address, hence it was easiest to just display the cached
1184 value. */
1185 if (gdbarch_sp_regnum (gdbarch) >= 0)
1186 {
1187 /* Find out the location of the saved stack pointer with out
1188 actually evaluating it. */
1189 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1190 &optimized, &lval, &addr,
1191 &realnum, NULL);
1192 if (!optimized && lval == not_lval)
1193 {
1194 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1195 int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
1196 gdb_byte value[MAX_REGISTER_SIZE];
1197 CORE_ADDR sp;
1198 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1199 &optimized, &lval, &addr,
1200 &realnum, value);
1201 /* NOTE: cagney/2003-05-22: This is assuming that the
1202 stack pointer was packed as an unsigned integer. That
1203 may or may not be valid. */
1204 sp = extract_unsigned_integer (value, sp_size, byte_order);
1205 printf_filtered (" Previous frame's sp is ");
1206 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1207 printf_filtered ("\n");
1208 need_nl = 0;
1209 }
1210 else if (!optimized && lval == lval_memory)
1211 {
1212 printf_filtered (" Previous frame's sp at ");
1213 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1214 printf_filtered ("\n");
1215 need_nl = 0;
1216 }
1217 else if (!optimized && lval == lval_register)
1218 {
1219 printf_filtered (" Previous frame's sp in %s\n",
1220 gdbarch_register_name (gdbarch, realnum));
1221 need_nl = 0;
1222 }
1223 /* else keep quiet. */
1224 }
1225
1226 count = 0;
1227 numregs = gdbarch_num_regs (gdbarch)
1228 + gdbarch_num_pseudo_regs (gdbarch);
1229 for (i = 0; i < numregs; i++)
1230 if (i != gdbarch_sp_regnum (gdbarch)
1231 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1232 {
1233 /* Find out the location of the saved register without
1234 fetching the corresponding value. */
1235 frame_register_unwind (fi, i, &optimized, &lval, &addr, &realnum,
1236 NULL);
1237 /* For moment, only display registers that were saved on the
1238 stack. */
1239 if (!optimized && lval == lval_memory)
1240 {
1241 if (count == 0)
1242 puts_filtered (" Saved registers:\n ");
1243 else
1244 puts_filtered (",");
1245 wrap_here (" ");
1246 printf_filtered (" %s at ",
1247 gdbarch_register_name (gdbarch, i));
1248 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1249 count++;
1250 }
1251 }
1252 if (count || need_nl)
1253 puts_filtered ("\n");
1254 }
1255
1256 do_cleanups (back_to);
1257 }
1258
1259 /* Print briefly all stack frames or just the innermost COUNT_EXP
1260 frames. */
1261
1262 static void
1263 backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
1264 {
1265 struct frame_info *fi;
1266 int count;
1267 int i;
1268 struct frame_info *trailing;
1269 int trailing_level;
1270
1271 if (!target_has_stack)
1272 error (_("No stack."));
1273
1274 /* The following code must do two things. First, it must set the
1275 variable TRAILING to the frame from which we should start
1276 printing. Second, it must set the variable count to the number
1277 of frames which we should print, or -1 if all of them. */
1278 trailing = get_current_frame ();
1279
1280 trailing_level = 0;
1281 if (count_exp)
1282 {
1283 count = parse_and_eval_long (count_exp);
1284 if (count < 0)
1285 {
1286 struct frame_info *current;
1287
1288 count = -count;
1289
1290 current = trailing;
1291 while (current && count--)
1292 {
1293 QUIT;
1294 current = get_prev_frame (current);
1295 }
1296
1297 /* Will stop when CURRENT reaches the top of the stack.
1298 TRAILING will be COUNT below it. */
1299 while (current)
1300 {
1301 QUIT;
1302 trailing = get_prev_frame (trailing);
1303 current = get_prev_frame (current);
1304 trailing_level++;
1305 }
1306
1307 count = -1;
1308 }
1309 }
1310 else
1311 count = -1;
1312
1313 if (info_verbose)
1314 {
1315 /* Read in symbols for all of the frames. Need to do this in a
1316 separate pass so that "Reading in symbols for xxx" messages
1317 don't screw up the appearance of the backtrace. Also if
1318 people have strong opinions against reading symbols for
1319 backtrace this may have to be an option. */
1320 i = count;
1321 for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1322 {
1323 CORE_ADDR pc;
1324 QUIT;
1325 pc = get_frame_address_in_block (fi);
1326 find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
1327 }
1328 }
1329
1330 for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1331 {
1332 QUIT;
1333
1334 /* Don't use print_stack_frame; if an error() occurs it probably
1335 means further attempts to backtrace would fail (on the other
1336 hand, perhaps the code does or could be fixed to make sure
1337 the frame->prev field gets set to NULL in that case). */
1338 print_frame_info (fi, 1, LOCATION, 1);
1339 if (show_locals)
1340 print_frame_local_vars (fi, 1, gdb_stdout);
1341
1342 /* Save the last frame to check for error conditions. */
1343 trailing = fi;
1344 }
1345
1346 /* If we've stopped before the end, mention that. */
1347 if (fi && from_tty)
1348 printf_filtered (_("(More stack frames follow...)\n"));
1349
1350 /* If we've run out of frames, and the reason appears to be an error
1351 condition, print it. */
1352 if (fi == NULL && trailing != NULL)
1353 {
1354 enum unwind_stop_reason reason;
1355
1356 reason = get_frame_unwind_stop_reason (trailing);
1357 if (reason > UNWIND_FIRST_ERROR)
1358 printf_filtered (_("Backtrace stopped: %s\n"),
1359 frame_stop_reason_string (reason));
1360 }
1361 }
1362
1363 struct backtrace_command_args
1364 {
1365 char *count_exp;
1366 int show_locals;
1367 int from_tty;
1368 };
1369
1370 /* Stub for catch_errors. */
1371
1372 static int
1373 backtrace_command_stub (void *data)
1374 {
1375 struct backtrace_command_args *args = data;
1376
1377 backtrace_command_1 (args->count_exp, args->show_locals, args->from_tty);
1378 return 0;
1379 }
1380
1381 static void
1382 backtrace_command (char *arg, int from_tty)
1383 {
1384 struct cleanup *old_chain = NULL;
1385 int fulltrace_arg = -1, arglen = 0, argc = 0;
1386 struct backtrace_command_args btargs;
1387
1388 if (arg)
1389 {
1390 char **argv;
1391 int i;
1392
1393 argv = gdb_buildargv (arg);
1394 old_chain = make_cleanup_freeargv (argv);
1395 argc = 0;
1396 for (i = 0; argv[i]; i++)
1397 {
1398 unsigned int j;
1399
1400 for (j = 0; j < strlen (argv[i]); j++)
1401 argv[i][j] = tolower (argv[i][j]);
1402
1403 if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1404 fulltrace_arg = argc;
1405 else
1406 {
1407 arglen += strlen (argv[i]);
1408 argc++;
1409 }
1410 }
1411 arglen += argc;
1412 if (fulltrace_arg >= 0)
1413 {
1414 if (arglen > 0)
1415 {
1416 arg = xmalloc (arglen + 1);
1417 memset (arg, 0, arglen + 1);
1418 for (i = 0; i < (argc + 1); i++)
1419 {
1420 if (i != fulltrace_arg)
1421 {
1422 strcat (arg, argv[i]);
1423 strcat (arg, " ");
1424 }
1425 }
1426 }
1427 else
1428 arg = NULL;
1429 }
1430 }
1431
1432 btargs.count_exp = arg;
1433 btargs.show_locals = (fulltrace_arg >= 0);
1434 btargs.from_tty = from_tty;
1435 catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
1436
1437 if (fulltrace_arg >= 0 && arglen > 0)
1438 xfree (arg);
1439
1440 if (old_chain)
1441 do_cleanups (old_chain);
1442 }
1443
1444 static void
1445 backtrace_full_command (char *arg, int from_tty)
1446 {
1447 struct backtrace_command_args btargs;
1448
1449 btargs.count_exp = arg;
1450 btargs.show_locals = 1;
1451 btargs.from_tty = from_tty;
1452 catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
1453 }
1454 \f
1455
1456 /* Iterate over the local variables of a block B, calling CB with
1457 CB_DATA. */
1458
1459 static void
1460 iterate_over_block_locals (struct block *b,
1461 iterate_over_block_arg_local_vars_cb cb,
1462 void *cb_data)
1463 {
1464 struct dict_iterator iter;
1465 struct symbol *sym;
1466
1467 ALL_BLOCK_SYMBOLS (b, iter, sym)
1468 {
1469 switch (SYMBOL_CLASS (sym))
1470 {
1471 case LOC_LOCAL:
1472 case LOC_REGISTER:
1473 case LOC_STATIC:
1474 case LOC_COMPUTED:
1475 if (SYMBOL_IS_ARGUMENT (sym))
1476 break;
1477 (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1478 break;
1479
1480 default:
1481 /* Ignore symbols which are not locals. */
1482 break;
1483 }
1484 }
1485 }
1486
1487
1488 /* Same, but print labels. */
1489
1490 #if 0
1491 /* Commented out, as the code using this function has also been
1492 commented out. FIXME:brobecker/2009-01-13: Find out why the code
1493 was commented out in the first place. The discussion introducing
1494 this change (2007-12-04: Support lexical blocks and function bodies
1495 that occupy non-contiguous address ranges) did not explain why
1496 this change was made. */
1497 static int
1498 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1499 int *have_default, struct ui_file *stream)
1500 {
1501 struct dict_iterator iter;
1502 struct symbol *sym;
1503 int values_printed = 0;
1504
1505 ALL_BLOCK_SYMBOLS (b, iter, sym)
1506 {
1507 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1508 {
1509 if (*have_default)
1510 continue;
1511 *have_default = 1;
1512 }
1513 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1514 {
1515 struct symtab_and_line sal;
1516 struct value_print_options opts;
1517 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1518 values_printed = 1;
1519 fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1520 get_user_print_options (&opts);
1521 if (opts.addressprint)
1522 {
1523 fprintf_filtered (stream, " ");
1524 fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
1525 stream);
1526 }
1527 fprintf_filtered (stream, " in file %s, line %d\n",
1528 sal.symtab->filename, sal.line);
1529 }
1530 }
1531
1532 return values_printed;
1533 }
1534 #endif
1535
1536 /* Iterate over all the local variables in block B, including all its
1537 superblocks, stopping when the top-level block is reached. */
1538
1539 void
1540 iterate_over_block_local_vars (struct block *block,
1541 iterate_over_block_arg_local_vars_cb cb,
1542 void *cb_data)
1543 {
1544 while (block)
1545 {
1546 iterate_over_block_locals (block, cb, cb_data);
1547 /* After handling the function's top-level block, stop. Don't
1548 continue to its superblock, the block of per-file
1549 symbols. */
1550 if (BLOCK_FUNCTION (block))
1551 break;
1552 block = BLOCK_SUPERBLOCK (block);
1553 }
1554 }
1555
1556 /* Data to be passed around in the calls to the locals and args
1557 iterators. */
1558
1559 struct print_variable_and_value_data
1560 {
1561 struct frame_info *frame;
1562 int num_tabs;
1563 struct ui_file *stream;
1564 int values_printed;
1565 };
1566
1567 /* The callback for the locals and args iterators */
1568
1569 static void
1570 do_print_variable_and_value (const char *print_name,
1571 struct symbol *sym,
1572 void *cb_data)
1573 {
1574 struct print_variable_and_value_data *p = cb_data;
1575
1576 print_variable_and_value (print_name, sym,
1577 p->frame, p->stream, p->num_tabs);
1578 p->values_printed = 1;
1579 }
1580
1581 static void
1582 print_frame_local_vars (struct frame_info *frame, int num_tabs,
1583 struct ui_file *stream)
1584 {
1585 struct print_variable_and_value_data cb_data;
1586 struct block *block;
1587
1588 block = get_frame_block (frame, 0);
1589 if (block == 0)
1590 {
1591 fprintf_filtered (stream, "No symbol table info available.\n");
1592 return;
1593 }
1594
1595 cb_data.frame = frame;
1596 cb_data.num_tabs = 4 * num_tabs;
1597 cb_data.stream = stream;
1598 cb_data.values_printed = 0;
1599
1600 iterate_over_block_local_vars (block,
1601 do_print_variable_and_value,
1602 &cb_data);
1603
1604 if (!cb_data.values_printed)
1605 fprintf_filtered (stream, _("No locals.\n"));
1606 }
1607
1608 /* Same, but print labels. */
1609
1610 static void
1611 print_frame_label_vars (struct frame_info *frame, int this_level_only,
1612 struct ui_file *stream)
1613 {
1614 #if 1
1615 fprintf_filtered (stream, "print_frame_label_vars disabled.\n");
1616 #else
1617 struct blockvector *bl;
1618 struct block *block = get_frame_block (frame, 0);
1619 struct gdbarch *gdbarch = get_frame_arch (frame);
1620 int values_printed = 0;
1621 int index, have_default = 0;
1622 char *blocks_printed;
1623 CORE_ADDR pc = get_frame_pc (frame);
1624
1625 if (block == 0)
1626 {
1627 fprintf_filtered (stream, "No symbol table info available.\n");
1628 return;
1629 }
1630
1631 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1632 blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1633 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1634
1635 while (block != 0)
1636 {
1637 CORE_ADDR end = BLOCK_END (block) - 4;
1638 int last_index;
1639
1640 if (bl != blockvector_for_pc (end, &index))
1641 error (_("blockvector blotch"));
1642 if (BLOCKVECTOR_BLOCK (bl, index) != block)
1643 error (_("blockvector botch"));
1644 last_index = BLOCKVECTOR_NBLOCKS (bl);
1645 index += 1;
1646
1647 /* Don't print out blocks that have gone by. */
1648 while (index < last_index
1649 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1650 index++;
1651
1652 while (index < last_index
1653 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1654 {
1655 if (blocks_printed[index] == 0)
1656 {
1657 if (print_block_frame_labels (gdbarch,
1658 BLOCKVECTOR_BLOCK (bl, index),
1659 &have_default, stream))
1660 values_printed = 1;
1661 blocks_printed[index] = 1;
1662 }
1663 index++;
1664 }
1665 if (have_default)
1666 return;
1667 if (values_printed && this_level_only)
1668 return;
1669
1670 /* After handling the function's top-level block, stop. Don't
1671 continue to its superblock, the block of per-file symbols.
1672 Also do not continue to the containing function of an inlined
1673 function. */
1674 if (BLOCK_FUNCTION (block))
1675 break;
1676 block = BLOCK_SUPERBLOCK (block);
1677 }
1678
1679 if (!values_printed && !this_level_only)
1680 fprintf_filtered (stream, _("No catches.\n"));
1681 #endif
1682 }
1683
1684 void
1685 locals_info (char *args, int from_tty)
1686 {
1687 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
1688 0, gdb_stdout);
1689 }
1690
1691 static void
1692 catch_info (char *ignore, int from_tty)
1693 {
1694 /* Assume g++ compiled code; old GDB 4.16 behaviour. */
1695 print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1696 0, gdb_stdout);
1697 }
1698
1699 /* Iterate over all the argument variables in block B.
1700
1701 Returns 1 if any argument was walked; 0 otherwise. */
1702
1703 void
1704 iterate_over_block_arg_vars (struct block *b,
1705 iterate_over_block_arg_local_vars_cb cb,
1706 void *cb_data)
1707 {
1708 struct dict_iterator iter;
1709 struct symbol *sym, *sym2;
1710
1711 ALL_BLOCK_SYMBOLS (b, iter, sym)
1712 {
1713 /* Don't worry about things which aren't arguments. */
1714 if (SYMBOL_IS_ARGUMENT (sym))
1715 {
1716 /* We have to look up the symbol because arguments can have
1717 two entries (one a parameter, one a local) and the one we
1718 want is the local, which lookup_symbol will find for us.
1719 This includes gcc1 (not gcc2) on the sparc when passing a
1720 small structure and gcc2 when the argument type is float
1721 and it is passed as a double and converted to float by
1722 the prologue (in the latter case the type of the LOC_ARG
1723 symbol is double and the type of the LOC_LOCAL symbol is
1724 float). There are also LOC_ARG/LOC_REGISTER pairs which
1725 are not combined in symbol-reading. */
1726
1727 sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
1728 b, VAR_DOMAIN, NULL);
1729 (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
1730 }
1731 }
1732 }
1733
1734 static void
1735 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1736 {
1737 struct print_variable_and_value_data cb_data;
1738 struct symbol *func;
1739
1740 func = get_frame_function (frame);
1741 if (func == NULL)
1742 {
1743 fprintf_filtered (stream, _("No symbol table info available.\n"));
1744 return;
1745 }
1746
1747 cb_data.frame = frame;
1748 cb_data.num_tabs = 0;
1749 cb_data.stream = gdb_stdout;
1750 cb_data.values_printed = 0;
1751
1752 iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
1753 do_print_variable_and_value, &cb_data);
1754
1755 if (!cb_data.values_printed)
1756 fprintf_filtered (stream, _("No arguments.\n"));
1757 }
1758
1759 void
1760 args_info (char *ignore, int from_tty)
1761 {
1762 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1763 gdb_stdout);
1764 }
1765
1766
1767 static void
1768 args_plus_locals_info (char *ignore, int from_tty)
1769 {
1770 args_info (ignore, from_tty);
1771 locals_info (ignore, from_tty);
1772 }
1773 \f
1774
1775 /* Select frame FRAME. Also print the stack frame and show the source
1776 if this is the tui version. */
1777 static void
1778 select_and_print_frame (struct frame_info *frame)
1779 {
1780 select_frame (frame);
1781 if (frame)
1782 print_stack_frame (frame, 1, SRC_AND_LOC);
1783 }
1784 \f
1785 /* Return the symbol-block in which the selected frame is executing.
1786 Can return zero under various legitimate circumstances.
1787
1788 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1789 code address within the block returned. We use this to decide
1790 which macros are in scope. */
1791
1792 struct block *
1793 get_selected_block (CORE_ADDR *addr_in_block)
1794 {
1795 if (!has_stack_frames ())
1796 return 0;
1797
1798 return get_frame_block (get_selected_frame (NULL), addr_in_block);
1799 }
1800
1801 /* Find a frame a certain number of levels away from FRAME.
1802 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1803 Positive means go to earlier frames (up); negative, the reverse.
1804 The int that contains the number of levels is counted toward
1805 zero as the frames for those levels are found.
1806 If the top or bottom frame is reached, that frame is returned,
1807 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1808 how much farther the original request asked to go. */
1809
1810 struct frame_info *
1811 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
1812 {
1813 /* Going up is simple: just call get_prev_frame enough times or
1814 until the initial frame is reached. */
1815 while (*level_offset_ptr > 0)
1816 {
1817 struct frame_info *prev = get_prev_frame (frame);
1818 if (!prev)
1819 break;
1820 (*level_offset_ptr)--;
1821 frame = prev;
1822 }
1823
1824 /* Going down is just as simple. */
1825 while (*level_offset_ptr < 0)
1826 {
1827 struct frame_info *next = get_next_frame (frame);
1828 if (!next)
1829 break;
1830 (*level_offset_ptr)++;
1831 frame = next;
1832 }
1833
1834 return frame;
1835 }
1836
1837 /* The "select_frame" command. With no argument this is a NOP.
1838 Select the frame at level LEVEL_EXP if it is a valid level.
1839 Otherwise, treat LEVEL_EXP as an address expression and select it.
1840
1841 See parse_frame_specification for more info on proper frame
1842 expressions. */
1843
1844 void
1845 select_frame_command (char *level_exp, int from_tty)
1846 {
1847 select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
1848 }
1849
1850 /* The "frame" command. With no argument, print the selected frame
1851 briefly. With an argument, behave like select_frame and then print
1852 the selected frame. */
1853
1854 static void
1855 frame_command (char *level_exp, int from_tty)
1856 {
1857 select_frame_command (level_exp, from_tty);
1858 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1859 }
1860
1861 /* The XDB Compatibility command to print the current frame. */
1862
1863 static void
1864 current_frame_command (char *level_exp, int from_tty)
1865 {
1866 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
1867 }
1868
1869 /* Select the frame up one or COUNT_EXP stack levels from the
1870 previously selected frame, and print it briefly. */
1871
1872 static void
1873 up_silently_base (char *count_exp)
1874 {
1875 struct frame_info *frame;
1876 int count = 1;
1877
1878 if (count_exp)
1879 count = parse_and_eval_long (count_exp);
1880
1881 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1882 if (count != 0 && count_exp == NULL)
1883 error (_("Initial frame selected; you cannot go up."));
1884 select_frame (frame);
1885 }
1886
1887 static void
1888 up_silently_command (char *count_exp, int from_tty)
1889 {
1890 up_silently_base (count_exp);
1891 }
1892
1893 static void
1894 up_command (char *count_exp, int from_tty)
1895 {
1896 up_silently_base (count_exp);
1897 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1898 }
1899
1900 /* Select the frame down one or COUNT_EXP stack levels from the previously
1901 selected frame, and print it briefly. */
1902
1903 static void
1904 down_silently_base (char *count_exp)
1905 {
1906 struct frame_info *frame;
1907 int count = -1;
1908
1909 if (count_exp)
1910 count = -parse_and_eval_long (count_exp);
1911
1912 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1913 if (count != 0 && count_exp == NULL)
1914 {
1915 /* We only do this if COUNT_EXP is not specified. That way
1916 "down" means to really go down (and let me know if that is
1917 impossible), but "down 9999" can be used to mean go all the
1918 way down without getting an error. */
1919
1920 error (_("Bottom (innermost) frame selected; you cannot go down."));
1921 }
1922
1923 select_frame (frame);
1924 }
1925
1926 static void
1927 down_silently_command (char *count_exp, int from_tty)
1928 {
1929 down_silently_base (count_exp);
1930 }
1931
1932 static void
1933 down_command (char *count_exp, int from_tty)
1934 {
1935 down_silently_base (count_exp);
1936 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1937 }
1938 \f
1939
1940 void
1941 return_command (char *retval_exp, int from_tty)
1942 {
1943 struct frame_info *thisframe;
1944 struct gdbarch *gdbarch;
1945 struct symbol *thisfun;
1946 struct value *return_value = NULL;
1947 const char *query_prefix = "";
1948
1949 thisframe = get_selected_frame ("No selected frame.");
1950 thisfun = get_frame_function (thisframe);
1951 gdbarch = get_frame_arch (thisframe);
1952
1953 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
1954 error (_("Can not force return from an inlined function."));
1955
1956 /* Compute the return value. If the computation triggers an error,
1957 let it bail. If the return type can't be handled, set
1958 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1959 message. */
1960 if (retval_exp)
1961 {
1962 struct expression *retval_expr = parse_expression (retval_exp);
1963 struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
1964 struct type *return_type = NULL;
1965
1966 /* Compute the return value. Should the computation fail, this
1967 call throws an error. */
1968 return_value = evaluate_expression (retval_expr);
1969
1970 /* Cast return value to the return type of the function. Should
1971 the cast fail, this call throws an error. */
1972 if (thisfun != NULL)
1973 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1974 if (return_type == NULL)
1975 {
1976 if (retval_expr->elts[0].opcode != UNOP_CAST)
1977 error (_("Return value type not available for selected "
1978 "stack frame.\n"
1979 "Please use an explicit cast of the value to return."));
1980 return_type = value_type (return_value);
1981 }
1982 do_cleanups (old_chain);
1983 CHECK_TYPEDEF (return_type);
1984 return_value = value_cast (return_type, return_value);
1985
1986 /* Make sure the value is fully evaluated. It may live in the
1987 stack frame we're about to pop. */
1988 if (value_lazy (return_value))
1989 value_fetch_lazy (return_value);
1990
1991 if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1992 /* If the return-type is "void", don't try to find the
1993 return-value's location. However, do still evaluate the
1994 return expression so that, even when the expression result
1995 is discarded, side effects such as "return i++" still
1996 occur. */
1997 return_value = NULL;
1998 else if (thisfun != NULL
1999 && using_struct_return (gdbarch,
2000 SYMBOL_TYPE (thisfun), return_type))
2001 {
2002 query_prefix = "\
2003 The location at which to store the function's return value is unknown.\n\
2004 If you continue, the return value that you specified will be ignored.\n";
2005 return_value = NULL;
2006 }
2007 }
2008
2009 /* Does an interactive user really want to do this? Include
2010 information, such as how well GDB can handle the return value, in
2011 the query message. */
2012 if (from_tty)
2013 {
2014 int confirmed;
2015 if (thisfun == NULL)
2016 confirmed = query (_("%sMake selected stack frame return now? "),
2017 query_prefix);
2018 else
2019 confirmed = query (_("%sMake %s return now? "), query_prefix,
2020 SYMBOL_PRINT_NAME (thisfun));
2021 if (!confirmed)
2022 error (_("Not confirmed"));
2023 }
2024
2025 /* Discard the selected frame and all frames inner-to it. */
2026 frame_pop (get_selected_frame (NULL));
2027
2028 /* Store RETURN_VALUE in the just-returned register set. */
2029 if (return_value != NULL)
2030 {
2031 struct type *return_type = value_type (return_value);
2032 struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
2033 struct type *func_type = thisfun == NULL ? NULL : SYMBOL_TYPE (thisfun);
2034
2035 gdb_assert (gdbarch_return_value (gdbarch, func_type, return_type, NULL,
2036 NULL, NULL)
2037 == RETURN_VALUE_REGISTER_CONVENTION);
2038 gdbarch_return_value (gdbarch, func_type, return_type,
2039 get_current_regcache (), NULL /*read*/,
2040 value_contents (return_value) /*write*/);
2041 }
2042
2043 /* If we are at the end of a call dummy now, pop the dummy frame
2044 too. */
2045 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2046 frame_pop (get_current_frame ());
2047
2048 /* If interactive, print the frame that is now current. */
2049 if (from_tty)
2050 frame_command ("0", 1);
2051 else
2052 select_frame_command ("0", 0);
2053 }
2054
2055 /* Sets the scope to input function name, provided that the function
2056 is within the current stack frame */
2057
2058 struct function_bounds
2059 {
2060 CORE_ADDR low, high;
2061 };
2062
2063 static void
2064 func_command (char *arg, int from_tty)
2065 {
2066 struct frame_info *frame;
2067 int found = 0;
2068 struct symtabs_and_lines sals;
2069 int i;
2070 int level = 1;
2071 struct function_bounds *func_bounds = NULL;
2072
2073 if (arg != NULL)
2074 return;
2075
2076 frame = parse_frame_specification ("0");
2077 sals = decode_line_spec (arg, 1);
2078 func_bounds = (struct function_bounds *) xmalloc (
2079 sizeof (struct function_bounds) * sals.nelts);
2080 for (i = 0; (i < sals.nelts && !found); i++)
2081 {
2082 if (sals.sals[i].pc == 0
2083 || find_pc_partial_function (sals.sals[i].pc, NULL,
2084 &func_bounds[i].low,
2085 &func_bounds[i].high) == 0)
2086 {
2087 func_bounds[i].low = func_bounds[i].high = 0;
2088 }
2089 }
2090
2091 do
2092 {
2093 for (i = 0; (i < sals.nelts && !found); i++)
2094 found = (get_frame_pc (frame) >= func_bounds[i].low
2095 && get_frame_pc (frame) < func_bounds[i].high);
2096 if (!found)
2097 {
2098 level = 1;
2099 frame = find_relative_frame (frame, &level);
2100 }
2101 }
2102 while (!found && level == 0);
2103
2104 if (func_bounds)
2105 xfree (func_bounds);
2106
2107 if (!found)
2108 printf_filtered (_("'%s' not within current stack frame.\n"), arg);
2109 else if (frame != get_selected_frame (NULL))
2110 select_and_print_frame (frame);
2111 }
2112
2113 /* Gets the language of the current frame. */
2114
2115 enum language
2116 get_frame_language (void)
2117 {
2118 struct frame_info *frame = deprecated_safe_get_selected_frame ();
2119
2120 if (frame)
2121 {
2122 /* We determine the current frame language by looking up its
2123 associated symtab. To retrieve this symtab, we use the frame
2124 PC. However we cannot use the frame PC as is, because it
2125 usually points to the instruction following the "call", which
2126 is sometimes the first instruction of another function. So
2127 we rely on get_frame_address_in_block(), it provides us with
2128 a PC that is guaranteed to be inside the frame's code
2129 block. */
2130 CORE_ADDR pc = get_frame_address_in_block (frame);
2131 struct symtab *s = find_pc_symtab (pc);
2132
2133 if (s)
2134 return s->language;
2135 }
2136
2137 return language_unknown;
2138 }
2139 \f
2140
2141 /* Provide a prototype to silence -Wmissing-prototypes. */
2142 void _initialize_stack (void);
2143
2144 void
2145 _initialize_stack (void)
2146 {
2147 add_com ("return", class_stack, return_command, _("\
2148 Make selected stack frame return to its caller.\n\
2149 Control remains in the debugger, but when you continue\n\
2150 execution will resume in the frame above the one now selected.\n\
2151 If an argument is given, it is an expression for the value to return."));
2152
2153 add_com ("up", class_stack, up_command, _("\
2154 Select and print stack frame that called this one.\n\
2155 An argument says how many frames up to go."));
2156 add_com ("up-silently", class_support, up_silently_command, _("\
2157 Same as the `up' command, but does not print anything.\n\
2158 This is useful in command scripts."));
2159
2160 add_com ("down", class_stack, down_command, _("\
2161 Select and print stack frame called by this one.\n\
2162 An argument says how many frames down to go."));
2163 add_com_alias ("do", "down", class_stack, 1);
2164 add_com_alias ("dow", "down", class_stack, 1);
2165 add_com ("down-silently", class_support, down_silently_command, _("\
2166 Same as the `down' command, but does not print anything.\n\
2167 This is useful in command scripts."));
2168
2169 add_com ("frame", class_stack, frame_command, _("\
2170 Select and print a stack frame.\n\
2171 With no argument, print the selected stack frame. (See also \"info frame\").\n\
2172 An argument specifies the frame to select.\n\
2173 It can be a stack frame number or the address of the frame.\n\
2174 With argument, nothing is printed if input is coming from\n\
2175 a command file or a user-defined command."));
2176
2177 add_com_alias ("f", "frame", class_stack, 1);
2178
2179 if (xdb_commands)
2180 {
2181 add_com ("L", class_stack, current_frame_command,
2182 _("Print the current stack frame.\n"));
2183 add_com_alias ("V", "frame", class_stack, 1);
2184 }
2185 add_com ("select-frame", class_stack, select_frame_command, _("\
2186 Select a stack frame without printing anything.\n\
2187 An argument specifies the frame to select.\n\
2188 It can be a stack frame number or the address of the frame.\n"));
2189
2190 add_com ("backtrace", class_stack, backtrace_command, _("\
2191 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2192 With a negative argument, print outermost -COUNT frames.\n\
2193 Use of the 'full' qualifier also prints the values of the local variables.\n"));
2194 add_com_alias ("bt", "backtrace", class_stack, 0);
2195 if (xdb_commands)
2196 {
2197 add_com_alias ("t", "backtrace", class_stack, 0);
2198 add_com ("T", class_stack, backtrace_full_command, _("\
2199 Print backtrace of all stack frames, or innermost COUNT frames \n\
2200 and the values of the local variables.\n\
2201 With a negative argument, print outermost -COUNT frames.\n\
2202 Usage: T <count>\n"));
2203 }
2204
2205 add_com_alias ("where", "backtrace", class_alias, 0);
2206 add_info ("stack", backtrace_command,
2207 _("Backtrace of the stack, or innermost COUNT frames."));
2208 add_info_alias ("s", "stack", 1);
2209 add_info ("frame", frame_info,
2210 _("All about selected stack frame, or frame at ADDR."));
2211 add_info_alias ("f", "frame", 1);
2212 add_info ("locals", locals_info,
2213 _("Local variables of current stack frame."));
2214 add_info ("args", args_info,
2215 _("Argument variables of current stack frame."));
2216 if (xdb_commands)
2217 add_com ("l", class_info, args_plus_locals_info,
2218 _("Argument and local variables of current stack frame."));
2219
2220 if (dbx_commands)
2221 add_com ("func", class_stack, func_command, _("\
2222 Select the stack frame that contains <func>.\n\
2223 Usage: func <name>\n"));
2224
2225 add_info ("catch", catch_info,
2226 _("Exceptions that can be caught in the current stack frame."));
2227
2228 add_setshow_enum_cmd ("frame-arguments", class_stack,
2229 print_frame_arguments_choices, &print_frame_arguments,
2230 _("Set printing of non-scalar frame arguments"),
2231 _("Show printing of non-scalar frame arguments"),
2232 NULL, NULL, NULL, &setprintlist, &showprintlist);
2233
2234 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2235 &disassemble_next_line, _("\
2236 Set whether to disassemble next source line or insn when execution stops."), _("\
2237 Show whether to disassemble next source line or insn when execution stops."), _("\
2238 If ON, GDB will display disassembly of the next source line, in addition\n\
2239 to displaying the source line itself. If the next source line cannot\n\
2240 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2241 will display disassembly of next instruction instead of showing the\n\
2242 source line.\n\
2243 If AUTO, display disassembly of next instruction only if the source line\n\
2244 cannot be displayed.\n\
2245 If OFF (which is the default), never display the disassembly of the next\n\
2246 source line."),
2247 NULL,
2248 show_disassemble_next_line,
2249 &setlist, &showlist);
2250 disassemble_next_line = AUTO_BOOLEAN_FALSE;
2251 }