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