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