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