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