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