1 /* Print and select stack frames for GDB, the GNU debugger.
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.
7 This file is part of GDB.
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.
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.
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/>. */
26 #include "expression.h"
33 #include "breakpoint.h"
40 #include "dictionary.h"
41 #include "exceptions.h"
42 #include "reggroups.h"
46 #include "gdbthread.h"
47 #include "cp-support.h"
49 #include "inline-frame.h"
51 #include "gdb_assert.h"
53 #include "gdb_string.h"
55 void (*deprecated_selected_frame_level_changed_hook
) (int);
57 /* The possible choices of "set print frame-arguments, and the value
60 static const char *print_frame_arguments_choices
[] =
61 {"all", "scalars", "none", NULL
};
62 static const char *print_frame_arguments
= "scalars";
64 /* Prototypes for local functions. */
66 static void print_frame_local_vars (struct frame_info
*, int,
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
);
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. */
79 int annotation_level
= 0;
82 struct print_stack_frame_args
84 struct frame_info
*frame
;
86 enum print_what print_what
;
90 /* Show or print the frame arguments; stub for catch_errors. */
93 print_stack_frame_stub (void *args
)
95 struct print_stack_frame_args
*p
= args
;
96 int center
= (p
->print_what
== SRC_LINE
|| p
->print_what
== SRC_AND_LOC
);
98 print_frame_info (p
->frame
, p
->print_level
, p
->print_what
, p
->print_args
);
99 set_current_sal_from_frame (p
->frame
, center
);
103 /* Return 1 if we should display the address in addition to the location,
104 because we are in the middle of a statement. */
107 frame_show_address (struct frame_info
*frame
,
108 struct symtab_and_line sal
)
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)
117 if (get_next_frame (frame
) == NULL
)
118 gdb_assert (inline_skipped_frames (inferior_ptid
) > 0);
120 gdb_assert (get_frame_type (get_next_frame (frame
)) == INLINE_FRAME
);
124 return get_frame_pc (frame
) != sal
.pc
;
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. */
134 print_stack_frame (struct frame_info
*frame
, int print_level
,
135 enum print_what print_what
)
137 struct print_stack_frame_args args
;
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
;
146 catch_errors (print_stack_frame_stub
, &args
, "", RETURN_MASK_ERROR
);
149 struct print_args_args
152 struct frame_info
*frame
;
153 struct ui_file
*stream
;
156 static int print_args_stub (void *args
);
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). */
164 print_frame_nameless_args (struct frame_info
*frame
, long start
, int num
,
165 int first
, struct ui_file
*stream
)
167 struct gdbarch
*gdbarch
= get_frame_arch (frame
);
168 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
173 for (i
= 0; i
< num
; i
++)
176 argsaddr
= get_frame_args_address (frame
);
179 arg_value
= read_memory_integer (argsaddr
+ start
,
180 sizeof (int), byte_order
);
182 fprintf_filtered (stream
, ", ");
183 fprintf_filtered (stream
, "%ld", arg_value
);
185 start
+= sizeof (int);
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). */
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". */
199 print_frame_args (struct symbol
*func
, struct frame_info
*frame
,
200 int num
, struct ui_file
*stream
)
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
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");
216 stb
= ui_out_stream_new (uiout
);
217 old_chain
= make_cleanup_ui_out_stream_delete (stb
);
221 struct block
*b
= SYMBOL_BLOCK_VALUE (func
);
222 struct dict_iterator iter
;
226 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
230 /* Keep track of the highest stack argument offset seen, and
231 skip over any kinds of symbols we don't care about. */
233 if (!SYMBOL_IS_ARGUMENT (sym
))
236 switch (SYMBOL_CLASS (sym
))
241 long current_offset
= SYMBOL_VALUE (sym
);
242 int arg_size
= TYPE_LENGTH (SYMBOL_TYPE (sym
));
244 /* Compute address of next argument by adding the size of
245 this argument and rounding to an int boundary. */
247 ((current_offset
+ arg_size
+ sizeof (int) - 1)
248 & ~(sizeof (int) - 1));
250 /* If this is the highest offset seen yet, set
252 if (highest_offset
== -1
253 || (current_offset
> highest_offset
))
254 highest_offset
= current_offset
;
256 /* Add the number of ints we're about to print to
258 args_printed
+= (arg_size
+ sizeof (int) - 1) / sizeof (int);
261 /* We care about types of symbols, but don't need to
262 keep track of stack offsets in them. */
264 case LOC_REGPARM_ADDR
:
266 case LOC_OPTIMIZED_OUT
:
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
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? */
284 if (*SYMBOL_LINKAGE_NAME (sym
))
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
))
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.
299 Reasons for using the LOC_ARG:
301 (1) Because find_saved_registers may be slow for
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
309 Reasons why we might want to use the LOC_REGISTER:
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
319 Additional note: It might be nice if "info args"
320 displayed both values.
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. */
327 /* Leave sym (the LOC_ARG) alone. */
334 /* Print the current arg. */
336 ui_out_text (uiout
, ", ");
337 ui_out_wrap_hint (uiout
, " ");
339 annotate_arg_begin ();
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
, "=");
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
357 val
= read_var_value (sym
, frame
);
359 annotate_arg_value (val
== NULL
? NULL
: value_type (val
));
363 const struct language_defn
*language
;
364 struct value_print_options opts
;
366 /* Use the appropriate language to display our symbol,
367 unless the user forced the language to a specific
369 if (language_mode
== language_mode_auto
)
370 language
= language_def (SYMBOL_LANGUAGE (sym
));
372 language
= current_language
;
374 get_raw_print_options (&opts
);
376 opts
.summary
= summary
;
377 common_val_print (val
, stb
->stream
, 2, &opts
, language
);
378 ui_out_field_stream (uiout
, "value", stb
);
381 ui_out_text (uiout
, "???");
384 ui_out_text (uiout
, "...");
387 /* Invoke ui_out_tuple_end. */
388 do_cleanups (list_chain
);
396 /* Don't print nameless args in situations where we don't know
397 enough about the stack to find them. */
402 if (highest_offset
== -1)
403 start
= gdbarch_frame_args_skip (get_frame_arch (frame
));
405 start
= highest_offset
;
407 print_frame_nameless_args (frame
, start
, num
- args_printed
,
411 do_cleanups (old_chain
);
414 /* Stub for catch_errors. */
417 print_args_stub (void *args
)
419 struct print_args_args
*p
= args
;
420 struct gdbarch
*gdbarch
= get_frame_arch (p
->frame
);
423 if (gdbarch_frame_num_args_p (gdbarch
))
425 numargs
= gdbarch_frame_num_args (gdbarch
, p
->frame
);
426 gdb_assert (numargs
>= 0);
430 print_frame_args (p
->func
, p
->frame
, numargs
, p
->stream
);
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'. */
439 set_current_sal_from_frame (struct frame_info
*frame
, int center
)
441 struct symtab_and_line sal
;
443 find_frame_sal (frame
, &sal
);
447 sal
.line
= max (sal
.line
- get_lines_to_list () / 2, 1);
448 set_current_source_symtab_and_line (&sal
);
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. */
458 static enum auto_boolean disassemble_next_line
;
461 show_disassemble_next_line (struct ui_file
*file
, int from_tty
,
462 struct cmd_list_element
*c
,
465 fprintf_filtered (file
, _("\
466 Debugger's willingness to use disassemble-next-line is %s.\n"),
470 /* Show assembly codes; stub for catch_errors. */
472 struct gdb_disassembly_stub_args
474 struct gdbarch
*gdbarch
;
481 gdb_disassembly_stub (void *args
)
483 struct gdb_disassembly_stub_args
*p
= args
;
484 gdb_disassembly (p
->gdbarch
, uiout
, 0, 0, p
->how_many
, p
->low
, p
->high
);
487 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
488 because it will be broken by filter sometime. */
491 do_gdb_disassembly (struct gdbarch
*gdbarch
,
492 int how_many
, CORE_ADDR low
, CORE_ADDR high
)
494 volatile struct gdb_exception exception
;
495 struct gdb_disassembly_stub_args args
;
497 args
.gdbarch
= gdbarch
;
498 args
.how_many
= how_many
;
501 TRY_CATCH (exception
, RETURN_MASK_ALL
)
503 gdb_disassembly_stub (&args
);
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
);
511 /* Print information about frame FRAME. The output is format according
512 to PRINT_LEVEL and PRINT_WHAT and PRINT ARGS. The meaning of
515 SRC_LINE: Print only source line.
516 LOCATION: Print only location.
517 LOC_AND_SRC: Print location and source line.
519 Used in "where" output, and to emit breakpoint or step
523 print_frame_info (struct frame_info
*frame
, int print_level
,
524 enum print_what print_what
, int print_args
)
526 struct gdbarch
*gdbarch
= get_frame_arch (frame
);
527 struct symtab_and_line sal
;
531 if (get_frame_type (frame
) == DUMMY_FRAME
532 || get_frame_type (frame
) == SIGTRAMP_FRAME
533 || get_frame_type (frame
) == ARCH_FRAME
)
535 struct cleanup
*uiout_cleanup
536 = make_cleanup_ui_out_tuple_begin_end (uiout
, "frame");
538 annotate_frame_begin (print_level
? frame_relative_level (frame
) : 0,
539 gdbarch
, get_frame_pc (frame
));
541 /* Do this regardless of SOURCE because we don't have any source
542 to list for this frame. */
545 ui_out_text (uiout
, "#");
546 ui_out_field_fmt_int (uiout
, 2, ui_left
, "level",
547 frame_relative_level (frame
));
549 if (ui_out_is_mi_like_p (uiout
))
551 annotate_frame_address ();
552 ui_out_field_core_addr (uiout
, "addr",
553 gdbarch
, get_frame_pc (frame
));
554 annotate_frame_address_end ();
557 if (get_frame_type (frame
) == DUMMY_FRAME
)
559 annotate_function_call ();
560 ui_out_field_string (uiout
, "func", "<function called from gdb>");
562 else if (get_frame_type (frame
) == SIGTRAMP_FRAME
)
564 annotate_signal_handler_caller ();
565 ui_out_field_string (uiout
, "func", "<signal handler called>");
567 else if (get_frame_type (frame
) == ARCH_FRAME
)
569 ui_out_field_string (uiout
, "func", "<cross-architecture call>");
571 ui_out_text (uiout
, "\n");
572 annotate_frame_end ();
574 do_cleanups (uiout_cleanup
);
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
);
586 location_print
= (print_what
== LOCATION
587 || print_what
== LOC_AND_ADDRESS
588 || print_what
== SRC_AND_LOC
);
590 if (location_print
|| !sal
.symtab
)
591 print_frame (frame
, print_level
, print_what
, print_args
, sal
);
593 source_print
= (print_what
== SRC_LINE
|| print_what
== SRC_AND_LOC
);
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);
603 if (source_print
&& sal
.symtab
)
606 int mid_statement
= ((print_what
== SRC_LINE
)
607 && frame_show_address (frame
, sal
));
609 if (annotation_level
)
610 done
= identify_source_line (sal
.symtab
, sal
.line
, mid_statement
,
611 get_frame_pc (frame
));
614 if (deprecated_print_frame_info_listing_hook
)
615 deprecated_print_frame_info_listing_hook (sal
.symtab
,
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
)
632 ui_out_field_core_addr (uiout
, "addr",
633 gdbarch
, get_frame_pc (frame
));
634 ui_out_text (uiout
, "\t");
637 print_source_lines (sal
.symtab
, sal
.line
, sal
.line
+ 1, 0);
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
);
648 if (print_what
!= LOCATION
)
649 set_default_breakpoint (1, get_frame_pc (frame
), sal
.symtab
, sal
.line
);
651 annotate_frame_end ();
653 gdb_flush (gdb_stdout
);
656 /* Attempt to obtain the FUNNAME and FUNLANG of the function corresponding
659 find_frame_funname (struct frame_info
*frame
, char **funname
,
660 enum language
*funlang
)
665 *funlang
= language_unknown
;
667 func
= get_frame_function (frame
);
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
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
688 struct minimal_symbol
*msymbol
= NULL
;
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
)))
694 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame
));
697 && (SYMBOL_VALUE_ADDRESS (msymbol
)
698 > BLOCK_START (SYMBOL_BLOCK_VALUE (func
))))
700 /* We also don't know anything about the function besides
701 its address and name. */
703 *funname
= SYMBOL_PRINT_NAME (msymbol
);
704 *funlang
= SYMBOL_LANGUAGE (msymbol
);
708 *funname
= SYMBOL_PRINT_NAME (func
);
709 *funlang
= SYMBOL_LANGUAGE (func
);
710 if (*funlang
== language_cplus
)
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
);
720 *funname
= func_only
;
721 make_cleanup (xfree
, func_only
);
728 struct minimal_symbol
*msymbol
=
729 lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame
));
733 *funname
= SYMBOL_PRINT_NAME (msymbol
);
734 *funlang
= SYMBOL_LANGUAGE (msymbol
);
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
)
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
;
751 stb
= ui_out_stream_new (uiout
);
752 old_chain
= make_cleanup_ui_out_stream_delete (stb
);
754 find_frame_funname (frame
, &funname
, &funlang
);
756 annotate_frame_begin (print_level
? frame_relative_level (frame
) : 0,
757 gdbarch
, get_frame_pc (frame
));
759 list_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "frame");
763 ui_out_text (uiout
, "#");
764 ui_out_field_fmt_int (uiout
, 2, ui_left
, "level",
765 frame_relative_level (frame
));
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
)
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 ");
777 annotate_frame_function_name ();
778 fprintf_symbol_filtered (stb
->stream
, funname
? funname
: "??",
780 ui_out_field_stream (uiout
, "func", stb
);
781 ui_out_wrap_hint (uiout
, " ");
782 annotate_frame_args ();
784 ui_out_text (uiout
, " (");
787 struct print_args_args args
;
788 struct cleanup
*args_list_chain
;
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
);
800 ui_out_text (uiout
, ")");
801 if (sal
.symtab
&& sal
.symtab
->filename
)
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
))
810 const char *fullname
= symtab_to_fullname (sal
.symtab
);
811 if (fullname
!= NULL
)
812 ui_out_field_string (uiout
, "fullname", fullname
);
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 ();
821 if (!funname
|| (!sal
.symtab
|| !sal
.symtab
->filename
))
824 char *lib
= PC_SOLIB (get_frame_pc (frame
));
826 char *lib
= solib_name_from_address (get_frame_pc (frame
));
830 annotate_frame_where ();
831 ui_out_wrap_hint (uiout
, " ");
832 ui_out_text (uiout
, " from ");
833 ui_out_field_string (uiout
, "from", lib
);
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
);
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. */
850 static struct frame_info
*
851 parse_frame_specification_1 (const char *frame_exp
, const char *message
,
852 int *selected_frame_p
)
855 struct value
*args
[4];
856 CORE_ADDR addrs
[ARRAY_SIZE (args
)];
858 if (frame_exp
== NULL
)
863 struct cleanup
*tmp_cleanup
;
869 struct cleanup
*cleanup
;
872 /* Skip leading white space, bail of EOL. */
873 while (isspace (*frame_exp
))
878 /* Parse the argument, extract it, save it. */
882 addr_string
= savestring (frame_exp
, p
- frame_exp
);
884 cleanup
= make_cleanup (xfree
, addr_string
);
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
892 if (numargs
>= ARRAY_SIZE (args
))
893 error (_("Too many args in frame specification"));
894 args
[numargs
++] = parse_and_eval (addr_string
);
896 do_cleanups (cleanup
);
900 /* If no args, default to the selected frame. */
903 if (selected_frame_p
!= NULL
)
904 (*selected_frame_p
) = 1;
905 return get_selected_frame (message
);
908 /* None of the remaining use the selected frame. */
909 if (selected_frame_p
!= NULL
)
910 (*selected_frame_p
) = 0;
912 /* Assume the single arg[0] is an integer, and try using that to
913 select a frame relative to current. */
916 struct frame_info
*fid
;
917 int level
= value_as_long (args
[0]);
918 fid
= find_relative_frame (get_current_frame (), &level
);
920 /* find_relative_frame was successful */
924 /* Convert each value into a corresponding address. */
927 for (i
= 0; i
< numargs
; i
++)
928 addrs
[i
] = value_as_address (args
[i
]);
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
936 struct frame_id id
= frame_id_build_wild (addrs
[0]);
937 struct frame_info
*fid
;
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
943 for (fid
= get_current_frame ();
945 fid
= get_prev_frame (fid
))
947 if (frame_id_eq (id
, get_frame_id (fid
)))
949 struct frame_info
*prev_frame
;
953 prev_frame
= get_prev_frame (fid
);
955 || !frame_id_eq (id
, get_frame_id (prev_frame
)))
964 /* We couldn't identify the frame as an existing frame, but
965 perhaps we can create one with a single argument. */
967 return create_new_frame (addrs
[0], 0);
968 else if (numargs
== 2)
969 return create_new_frame (addrs
[0], addrs
[1]);
971 error (_("Too many args in frame specification"));
974 static struct frame_info
*
975 parse_frame_specification (char *frame_exp
)
977 return parse_frame_specification_1 (frame_exp
, NULL
, NULL
);
980 /* Print verbosely the selected frame or the frame at address
981 ADDR_EXP. Absolutely all information in the frame is printed. */
984 frame_info (char *addr_exp
, int from_tty
)
986 struct frame_info
*fi
;
987 struct symtab_and_line sal
;
990 struct frame_info
*calling_frame_info
;
991 int i
, count
, numregs
;
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
);
999 fi
= parse_frame_specification_1 (addr_exp
, "No stack.", &selected_frame_p
);
1000 gdbarch
= get_frame_arch (fi
);
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
1008 pc_regname
= gdbarch_register_name (gdbarch
, gdbarch_pc_regnum (gdbarch
));
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
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
1020 s
= find_pc_symtab (get_frame_pc (fi
));
1023 funname
= SYMBOL_PRINT_NAME (func
);
1024 funlang
= SYMBOL_LANGUAGE (func
);
1025 if (funlang
== language_cplus
)
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
);
1035 funname
= func_only
;
1036 make_cleanup (xfree
, func_only
);
1042 struct minimal_symbol
*msymbol
;
1044 msymbol
= lookup_minimal_symbol_by_pc (get_frame_pc (fi
));
1045 if (msymbol
!= NULL
)
1047 funname
= SYMBOL_PRINT_NAME (msymbol
);
1048 funlang
= SYMBOL_LANGUAGE (msymbol
);
1051 calling_frame_info
= get_prev_frame (fi
);
1053 if (selected_frame_p
&& frame_relative_level (fi
) >= 0)
1055 printf_filtered (_("Stack level %d, frame at "),
1056 frame_relative_level (fi
));
1060 printf_filtered (_("Stack frame at "));
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
);
1070 printf_filtered (" in ");
1071 fprintf_symbol_filtered (gdb_stdout
, funname
, funlang
,
1072 DMGL_ANSI
| DMGL_PARAMS
);
1076 printf_filtered (" (%s:%d)", sal
.symtab
->filename
, sal
.line
);
1077 puts_filtered ("; ");
1079 printf_filtered ("saved %s ", pc_regname
);
1080 fputs_filtered (paddress (gdbarch
, frame_unwind_caller_pc (fi
)), gdb_stdout
);
1081 printf_filtered ("\n");
1083 if (calling_frame_info
== NULL
)
1085 enum unwind_stop_reason reason
;
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
));
1092 else if (get_frame_type (fi
) == INLINE_FRAME
)
1093 printf_filtered (" inlined into frame %d",
1094 frame_relative_level (get_prev_frame (fi
)));
1097 printf_filtered (" called by frame at ");
1098 fputs_filtered (paddress (gdbarch
, get_frame_base (calling_frame_info
)),
1101 if (get_next_frame (fi
) && calling_frame_info
)
1102 puts_filtered (",");
1104 if (get_next_frame (fi
))
1106 printf_filtered (" caller of frame at ");
1107 fputs_filtered (paddress (gdbarch
, get_frame_base (get_next_frame (fi
))),
1110 if (get_next_frame (fi
) || calling_frame_info
)
1111 puts_filtered ("\n");
1114 printf_filtered (" source language %s.\n",
1115 language_str (s
->language
));
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. */
1124 printf_filtered (" Arglist at unknown address.\n");
1127 printf_filtered (" Arglist at ");
1128 fputs_filtered (paddress (gdbarch
, arg_list
), gdb_stdout
);
1129 printf_filtered (",");
1131 if (!gdbarch_frame_num_args_p (gdbarch
))
1134 puts_filtered (" args: ");
1138 numargs
= gdbarch_frame_num_args (gdbarch
, fi
);
1139 gdb_assert (numargs
>= 0);
1141 puts_filtered (" no args.");
1142 else if (numargs
== 1)
1143 puts_filtered (" 1 arg: ");
1145 printf_filtered (" %d args: ", numargs
);
1147 print_frame_args (func
, fi
, numargs
, gdb_stdout
);
1148 puts_filtered ("\n");
1152 /* Address of the local variables for this frame, or 0. */
1153 CORE_ADDR arg_list
= get_frame_locals_address (fi
);
1156 printf_filtered (" Locals at unknown address,");
1159 printf_filtered (" Locals at ");
1160 fputs_filtered (paddress (gdbarch
, arg_list
), gdb_stdout
);
1161 printf_filtered (",");
1165 /* Print as much information as possible on the location of all the
1168 enum lval_type lval
;
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
1181 if (gdbarch_sp_regnum (gdbarch
) >= 0)
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
,
1188 if (!optimized
&& lval
== not_lval
)
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
];
1194 frame_register_unwind (fi
, gdbarch_sp_regnum (gdbarch
),
1195 &optimized
, &lval
, &addr
,
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");
1206 else if (!optimized
&& lval
== lval_memory
)
1208 printf_filtered (" Previous frame's sp at ");
1209 fputs_filtered (paddress (gdbarch
, addr
), gdb_stdout
);
1210 printf_filtered ("\n");
1213 else if (!optimized
&& lval
== lval_register
)
1215 printf_filtered (" Previous frame's sp in %s\n",
1216 gdbarch_register_name (gdbarch
, realnum
));
1219 /* else keep quiet. */
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
))
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
,
1233 /* For moment, only display registers that were saved on the
1235 if (!optimized
&& lval
== lval_memory
)
1238 puts_filtered (" Saved registers:\n ");
1240 puts_filtered (",");
1242 printf_filtered (" %s at ",
1243 gdbarch_register_name (gdbarch
, i
));
1244 fputs_filtered (paddress (gdbarch
, addr
), gdb_stdout
);
1248 if (count
|| need_nl
)
1249 puts_filtered ("\n");
1252 do_cleanups (back_to
);
1255 /* Print briefly all stack frames or just the innermost COUNT_EXP
1259 backtrace_command_1 (char *count_exp
, int show_locals
, int from_tty
)
1261 struct frame_info
*fi
;
1264 struct frame_info
*trailing
;
1267 if (!target_has_stack
)
1268 error (_("No stack."));
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 ();
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."));
1284 count
= parse_and_eval_long (count_exp
);
1287 struct frame_info
*current
;
1292 while (current
&& count
--)
1295 current
= get_prev_frame (current
);
1298 /* Will stop when CURRENT reaches the top of the stack.
1299 TRAILING will be COUNT below it. */
1303 trailing
= get_prev_frame (trailing
);
1304 current
= get_prev_frame (current
);
1316 struct partial_symtab
*ps
;
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. */
1324 for (fi
= trailing
; fi
!= NULL
&& i
--; fi
= get_prev_frame (fi
))
1327 ps
= find_pc_psymtab (get_frame_address_in_block (fi
));
1329 PSYMTAB_TO_SYMTAB (ps
); /* Force syms to come in. */
1333 for (i
= 0, fi
= trailing
; fi
&& count
--; i
++, fi
= get_prev_frame (fi
))
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);
1343 print_frame_local_vars (fi
, 1, gdb_stdout
);
1345 /* Save the last frame to check for error conditions. */
1349 /* If we've stopped before the end, mention that. */
1351 printf_filtered (_("(More stack frames follow...)\n"));
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
)
1357 enum unwind_stop_reason reason
;
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
));
1366 struct backtrace_command_args
1373 /* Stub for catch_errors. */
1376 backtrace_command_stub (void *data
)
1378 struct backtrace_command_args
*args
= data
;
1379 backtrace_command_1 (args
->count_exp
, args
->show_locals
, args
->from_tty
);
1384 backtrace_command (char *arg
, int from_tty
)
1386 struct cleanup
*old_chain
= NULL
;
1387 int fulltrace_arg
= -1, arglen
= 0, argc
= 0;
1388 struct backtrace_command_args btargs
;
1395 argv
= gdb_buildargv (arg
);
1396 old_chain
= make_cleanup_freeargv (argv
);
1398 for (i
= 0; argv
[i
]; i
++)
1402 for (j
= 0; j
< strlen (argv
[i
]); j
++)
1403 argv
[i
][j
] = tolower (argv
[i
][j
]);
1405 if (fulltrace_arg
< 0 && subset_compare (argv
[i
], "full"))
1406 fulltrace_arg
= argc
;
1409 arglen
+= strlen (argv
[i
]);
1414 if (fulltrace_arg
>= 0)
1418 arg
= xmalloc (arglen
+ 1);
1419 memset (arg
, 0, arglen
+ 1);
1420 for (i
= 0; i
< (argc
+ 1); i
++)
1422 if (i
!= fulltrace_arg
)
1424 strcat (arg
, argv
[i
]);
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
);
1439 if (fulltrace_arg
>= 0 && arglen
> 0)
1443 do_cleanups (old_chain
);
1447 backtrace_full_command (char *arg
, int from_tty
)
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
);
1457 /* Print the local variables of a block B active in FRAME on STREAM.
1458 Return 1 if any variables were printed; 0 otherwise. */
1461 print_block_frame_locals (struct block
*b
, struct frame_info
*frame
,
1462 int num_tabs
, struct ui_file
*stream
)
1464 struct dict_iterator iter
;
1466 int values_printed
= 0;
1469 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
1471 switch (SYMBOL_CLASS (sym
))
1477 if (SYMBOL_IS_ARGUMENT (sym
))
1480 print_variable_and_value (NULL
, sym
, frame
, stream
, 4 * num_tabs
);
1484 /* Ignore symbols which are not locals. */
1489 return values_printed
;
1492 /* Same, but print labels. */
1495 print_block_frame_labels (struct gdbarch
*gdbarch
, struct block
*b
,
1496 int *have_default
, struct ui_file
*stream
)
1498 struct dict_iterator iter
;
1500 int values_printed
= 0;
1502 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
1504 if (strcmp (SYMBOL_LINKAGE_NAME (sym
), "default") == 0)
1510 if (SYMBOL_CLASS (sym
) == LOC_LABEL
)
1512 struct symtab_and_line sal
;
1513 struct value_print_options opts
;
1514 sal
= find_pc_line (SYMBOL_VALUE_ADDRESS (sym
), 0);
1516 fputs_filtered (SYMBOL_PRINT_NAME (sym
), stream
);
1517 get_user_print_options (&opts
);
1518 if (opts
.addressprint
)
1520 fprintf_filtered (stream
, " ");
1521 fputs_filtered (paddress (gdbarch
, SYMBOL_VALUE_ADDRESS (sym
)),
1524 fprintf_filtered (stream
, " in file %s, line %d\n",
1525 sal
.symtab
->filename
, sal
.line
);
1529 return values_printed
;
1532 /* Print on STREAM all the local variables in frame FRAME, including
1533 all the blocks active in that frame at its current PC.
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. */
1539 print_frame_local_vars (struct frame_info
*frame
, int num_tabs
,
1540 struct ui_file
*stream
)
1542 struct block
*block
= get_frame_block (frame
, 0);
1543 int values_printed
= 0;
1547 fprintf_filtered (stream
, "No symbol table info available.\n");
1553 if (print_block_frame_locals (block
, frame
, num_tabs
, stream
))
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
1559 if (BLOCK_FUNCTION (block
))
1561 block
= BLOCK_SUPERBLOCK (block
);
1564 if (!values_printed
)
1565 fprintf_filtered (stream
, _("No locals.\n"));
1568 /* Same, but print labels. */
1571 print_frame_label_vars (struct frame_info
*frame
, int this_level_only
,
1572 struct ui_file
*stream
)
1575 fprintf_filtered (stream
, "print_frame_label_vars disabled.\n");
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
);
1587 fprintf_filtered (stream
, "No symbol table info available.\n");
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));
1597 CORE_ADDR end
= BLOCK_END (block
) - 4;
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
);
1607 /* Don't print out blocks that have gone by. */
1608 while (index
< last_index
1609 && BLOCK_END (BLOCKVECTOR_BLOCK (bl
, index
)) < pc
)
1612 while (index
< last_index
1613 && BLOCK_END (BLOCKVECTOR_BLOCK (bl
, index
)) < end
)
1615 if (blocks_printed
[index
] == 0)
1617 if (print_block_frame_labels (gdbarch
,
1618 BLOCKVECTOR_BLOCK (bl
, index
),
1619 &have_default
, stream
))
1621 blocks_printed
[index
] = 1;
1627 if (values_printed
&& this_level_only
)
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
1634 if (BLOCK_FUNCTION (block
))
1636 block
= BLOCK_SUPERBLOCK (block
);
1639 if (!values_printed
&& !this_level_only
)
1640 fprintf_filtered (stream
, _("No catches.\n"));
1645 locals_info (char *args
, int from_tty
)
1647 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
1652 catch_info (char *ignore
, int from_tty
)
1654 struct symtab_and_line
*sal
;
1656 /* Assume g++ compiled code; old GDB 4.16 behaviour. */
1657 print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1662 print_frame_arg_vars (struct frame_info
*frame
, struct ui_file
*stream
)
1664 struct symbol
*func
= get_frame_function (frame
);
1666 struct dict_iterator iter
;
1667 struct symbol
*sym
, *sym2
;
1668 int values_printed
= 0;
1672 fprintf_filtered (stream
, _("No symbol table info available.\n"));
1676 b
= SYMBOL_BLOCK_VALUE (func
);
1677 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
1679 /* Don't worry about things which aren't arguments. */
1680 if (SYMBOL_IS_ARGUMENT (sym
))
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. */
1695 sym2
= lookup_symbol (SYMBOL_LINKAGE_NAME (sym
),
1696 b
, VAR_DOMAIN
, NULL
);
1697 print_variable_and_value (SYMBOL_PRINT_NAME (sym
), sym2
,
1702 if (!values_printed
)
1703 fprintf_filtered (stream
, _("No arguments.\n"));
1707 args_info (char *ignore
, int from_tty
)
1709 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1715 args_plus_locals_info (char *ignore
, int from_tty
)
1717 args_info (ignore
, from_tty
);
1718 locals_info (ignore
, from_tty
);
1722 /* Select frame FRAME. Also print the stack frame and show the source
1723 if this is the tui version. */
1725 select_and_print_frame (struct frame_info
*frame
)
1727 select_frame (frame
);
1729 print_stack_frame (frame
, 1, SRC_AND_LOC
);
1732 /* Return the symbol-block in which the selected frame is executing.
1733 Can return zero under various legitimate circumstances.
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. */
1740 get_selected_block (CORE_ADDR
*addr_in_block
)
1742 if (!has_stack_frames ())
1745 return get_frame_block (get_selected_frame (NULL
), addr_in_block
);
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. */
1758 find_relative_frame (struct frame_info
*frame
, int *level_offset_ptr
)
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)
1764 struct frame_info
*prev
= get_prev_frame (frame
);
1767 (*level_offset_ptr
)--;
1771 /* Going down is just as simple. */
1772 while (*level_offset_ptr
< 0)
1774 struct frame_info
*next
= get_next_frame (frame
);
1777 (*level_offset_ptr
)++;
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.
1788 See parse_frame_specification for more info on proper frame
1792 select_frame_command (char *level_exp
, int from_tty
)
1794 select_frame (parse_frame_specification_1 (level_exp
, "No stack.", NULL
));
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. */
1802 frame_command (char *level_exp
, int from_tty
)
1804 select_frame_command (level_exp
, from_tty
);
1805 print_stack_frame (get_selected_frame (NULL
), 1, SRC_AND_LOC
);
1808 /* The XDB Compatibility command to print the current frame. */
1811 current_frame_command (char *level_exp
, int from_tty
)
1813 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC
);
1816 /* Select the frame up one or COUNT_EXP stack levels from the
1817 previously selected frame, and print it briefly. */
1820 up_silently_base (char *count_exp
)
1822 struct frame_info
*frame
;
1826 count
= parse_and_eval_long (count_exp
);
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
);
1835 up_silently_command (char *count_exp
, int from_tty
)
1837 up_silently_base (count_exp
);
1841 up_command (char *count_exp
, int from_tty
)
1843 up_silently_base (count_exp
);
1844 print_stack_frame (get_selected_frame (NULL
), 1, SRC_AND_LOC
);
1847 /* Select the frame down one or COUNT_EXP stack levels from the previously
1848 selected frame, and print it briefly. */
1851 down_silently_base (char *count_exp
)
1853 struct frame_info
*frame
;
1856 count
= -parse_and_eval_long (count_exp
);
1858 frame
= find_relative_frame (get_selected_frame ("No stack."), &count
);
1859 if (count
!= 0 && count_exp
== NULL
)
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. */
1866 error (_("Bottom (innermost) frame selected; you cannot go down."));
1869 select_frame (frame
);
1873 down_silently_command (char *count_exp
, int from_tty
)
1875 down_silently_base (count_exp
);
1879 down_command (char *count_exp
, int from_tty
)
1881 down_silently_base (count_exp
);
1882 print_stack_frame (get_selected_frame (NULL
), 1, SRC_AND_LOC
);
1887 return_command (char *retval_exp
, int from_tty
)
1889 struct frame_info
*thisframe
;
1890 struct gdbarch
*gdbarch
;
1891 struct symbol
*thisfun
;
1892 struct value
*return_value
= NULL
;
1893 const char *query_prefix
= "";
1895 thisframe
= get_selected_frame ("No selected frame.");
1896 thisfun
= get_frame_function (thisframe
);
1897 gdbarch
= get_frame_arch (thisframe
);
1899 if (get_frame_type (get_current_frame ()) == INLINE_FRAME
)
1900 error (_("Can not force return from an inlined function."));
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
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
;
1912 /* Compute the return value. Should the computation fail, this
1913 call throws an error. */
1914 return_value
= evaluate_expression (retval_expr
);
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
)
1922 if (retval_expr
->elts
[0].opcode
!= UNOP_CAST
)
1923 error (_("Return value type not available for selected "
1925 "Please use an explicit cast of the value to return."));
1926 return_type
= value_type (return_value
);
1928 do_cleanups (old_chain
);
1929 CHECK_TYPEDEF (return_type
);
1930 return_value
= value_cast (return_type
, return_value
);
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
);
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
1943 return_value
= NULL
;
1944 else if (thisfun
!= NULL
1945 && using_struct_return (gdbarch
,
1946 SYMBOL_TYPE (thisfun
), return_type
))
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
;
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. */
1961 if (thisfun
== NULL
)
1962 confirmed
= query (_("%sMake selected stack frame return now? "),
1965 confirmed
= query (_("%sMake %s return now? "), query_prefix
,
1966 SYMBOL_PRINT_NAME (thisfun
));
1968 error (_("Not confirmed"));
1971 /* Discard the selected frame and all frames inner-to it. */
1972 frame_pop (get_selected_frame (NULL
));
1974 /* Store RETURN_VALUE in the just-returned register set. */
1975 if (return_value
!= NULL
)
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
);
1981 gdb_assert (gdbarch_return_value (gdbarch
, func_type
, return_type
, 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*/);
1989 /* If we are at the end of a call dummy now, pop the dummy frame
1991 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME
)
1992 frame_pop (get_current_frame ());
1994 /* If interactive, print the frame that is now current. */
1996 frame_command ("0", 1);
1998 select_frame_command ("0", 0);
2001 /* Sets the scope to input function name, provided that the function
2002 is within the current stack frame */
2004 struct function_bounds
2006 CORE_ADDR low
, high
;
2010 func_command (char *arg
, int from_tty
)
2012 struct frame_info
*frame
;
2014 struct symtabs_and_lines sals
;
2017 struct function_bounds
*func_bounds
= NULL
;
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
++)
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)
2033 func_bounds
[i
].low
= func_bounds
[i
].high
= 0;
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
);
2045 frame
= find_relative_frame (frame
, &level
);
2048 while (!found
&& level
== 0);
2051 xfree (func_bounds
);
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
);
2059 /* Gets the language of the current frame. */
2062 get_frame_language (void)
2064 struct frame_info
*frame
= deprecated_safe_get_selected_frame ();
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
2076 CORE_ADDR pc
= get_frame_address_in_block (frame
);
2077 struct symtab
*s
= find_pc_symtab (pc
);
2083 return language_unknown
;
2087 /* Provide a prototype to silence -Wmissing-prototypes. */
2088 void _initialize_stack (void);
2091 _initialize_stack (void)
2094 backtrace_limit
= 30;
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."));
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."));
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."));
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."));
2127 add_com_alias ("f", "frame", class_stack
, 1);
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);
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"));
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);
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"));
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."));
2167 add_com ("l", class_info
, args_plus_locals_info
,
2168 _("Argument and local variables of current stack frame."));
2171 add_com ("func", class_stack
, func_command
, _("\
2172 Select the stack frame that contains <func>.\n\
2173 Usage: func <name>\n"));
2175 add_info ("catch", catch_info
,
2176 _("Exceptions that can be caught in the current stack frame."));
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
);
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\
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\
2198 show_disassemble_next_line
,
2199 &setlist
, &showlist
);
2200 disassemble_next_line
= AUTO_BOOLEAN_FALSE
;
2203 add_cmd ("backtrace-limit", class_stack
, set_backtrace_limit_command
, _(\
2204 "Specify maximum number of frames for \"backtrace\" to print by default."),
2206 add_info ("backtrace-limit", backtrace_limit_info
, _("\
2207 The maximum number of frames for \"backtrace\" to print by default."));