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