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