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