* go32-nat.c (go32_create_inferior): Use inferior_appeared, not
[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
JB
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
5 2009 Free Software Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 21
c906108c 22#include "defs.h"
c906108c
SS
23#include "value.h"
24#include "symtab.h"
25#include "gdbtypes.h"
26#include "expression.h"
27#include "language.h"
28#include "frame.h"
29#include "gdbcmd.h"
30#include "gdbcore.h"
31#include "target.h"
0378c332 32#include "source.h"
c906108c
SS
33#include "breakpoint.h"
34#include "demangle.h"
35#include "inferior.h"
36#include "annotate.h"
8b93c638 37#include "ui-out.h"
fe898f56 38#include "block.h"
b9362cc7 39#include "stack.h"
de4f826b 40#include "dictionary.h"
60250e8b 41#include "exceptions.h"
898c62f5 42#include "reggroups.h"
fc70c2a0 43#include "regcache.h"
a77053c2 44#include "solib.h"
033a42c2 45#include "valprint.h"
8ea051c5 46#include "gdbthread.h"
3567439c 47#include "cp-support.h"
30c33a9f 48#include "disasm.h"
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
9a4105ab 55void (*deprecated_selected_frame_level_changed_hook) (int);
c906108c 56
88408340
JB
57/* The possible choices of "set print frame-arguments, and the value
58 of this setting. */
59
60static const char *print_frame_arguments_choices[] =
61 {"all", "scalars", "none", NULL};
476f7b68 62static const char *print_frame_arguments = "scalars";
88408340 63
a58dd373 64/* Prototypes for local functions. */
c906108c 65
d9fcf2fb
JM
66static void print_frame_local_vars (struct frame_info *, int,
67 struct ui_file *);
c906108c 68
033a42c2
MK
69static void print_frame (struct frame_info *frame, int print_level,
70 enum print_what print_what, int print_args,
c5394b80
JM
71 struct symtab_and_line sal);
72
c906108c
SS
73/* Zero means do things normally; we are interacting directly with the
74 user. One means print the full filename and linenumber when a
75 frame is printed, and do so in a format emacs18/emacs19.22 can
76 parse. Two means print similar annotations, but in many more
77 cases and in a slightly different syntax. */
78
79int annotation_level = 0;
c906108c 80\f
c5aa993b
JM
81
82struct print_stack_frame_args
033a42c2
MK
83{
84 struct frame_info *frame;
85 int print_level;
86 enum print_what print_what;
87 int print_args;
88};
89
90/* Show or print the frame arguments; stub for catch_errors. */
91
c906108c 92static int
fba45db2 93print_stack_frame_stub (void *args)
c906108c 94{
c789492a 95 struct print_stack_frame_args *p = args;
033a42c2 96 int center = (p->print_what == SRC_LINE || p->print_what == SRC_AND_LOC);
c906108c 97
033a42c2
MK
98 print_frame_info (p->frame, p->print_level, p->print_what, p->print_args);
99 set_current_sal_from_frame (p->frame, center);
c906108c
SS
100 return 0;
101}
102
edb3359d
DJ
103/* Return 1 if we should display the address in addition to the location,
104 because we are in the middle of a statement. */
105
106static int
107frame_show_address (struct frame_info *frame,
108 struct symtab_and_line sal)
109{
110 /* If there is a line number, but no PC, then there is no location
111 information associated with this sal. The only way that should
112 happen is for the call sites of inlined functions (SAL comes from
113 find_frame_sal). Otherwise, we would have some PC range if the
114 SAL came from a line table. */
115 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
116 {
117 if (get_next_frame (frame) == NULL)
118 gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
119 else
120 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
121 return 0;
122 }
123
124 return get_frame_pc (frame) != sal.pc;
125}
126
033a42c2 127/* Show or print a stack frame FRAME briefly. The output is format
d762c46a
AC
128 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
129 relative level, function name, argument list, and file name and
130 line number. If the frame's PC is not at the beginning of the
131 source line, the actual PC is printed at the beginning. */
c906108c
SS
132
133void
033a42c2 134print_stack_frame (struct frame_info *frame, int print_level,
0faf0076 135 enum print_what print_what)
c906108c
SS
136{
137 struct print_stack_frame_args args;
138
033a42c2 139 args.frame = frame;
0faf0076
AC
140 args.print_level = print_level;
141 args.print_what = print_what;
aaf9e9fd
DP
142 /* For mi, alway print location and address. */
143 args.print_what = ui_out_is_mi_like_p (uiout) ? LOC_AND_ADDRESS : print_what;
0faf0076 144 args.print_args = 1;
c906108c 145
5c3ce3f7 146 catch_errors (print_stack_frame_stub, &args, "", RETURN_MASK_ERROR);
7789c6f5 147}
c906108c 148
c5aa993b
JM
149struct print_args_args
150{
c906108c 151 struct symbol *func;
033a42c2 152 struct frame_info *frame;
d9fcf2fb 153 struct ui_file *stream;
c906108c
SS
154};
155
033a42c2 156static int print_args_stub (void *args);
c906108c 157
033a42c2
MK
158/* Print nameless arguments of frame FRAME on STREAM, where START is
159 the offset of the first nameless argument, and NUM is the number of
160 nameless arguments to print. FIRST is nonzero if this is the first
161 argument (not just the first nameless argument). */
8d3b0994
AC
162
163static void
033a42c2 164print_frame_nameless_args (struct frame_info *frame, long start, int num,
8d3b0994
AC
165 int first, struct ui_file *stream)
166{
e17a4113
UW
167 struct gdbarch *gdbarch = get_frame_arch (frame);
168 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
8d3b0994
AC
169 int i;
170 CORE_ADDR argsaddr;
171 long arg_value;
172
173 for (i = 0; i < num; i++)
174 {
175 QUIT;
033a42c2 176 argsaddr = get_frame_args_address (frame);
8d3b0994
AC
177 if (!argsaddr)
178 return;
e17a4113
UW
179 arg_value = read_memory_integer (argsaddr + start,
180 sizeof (int), byte_order);
8d3b0994
AC
181 if (!first)
182 fprintf_filtered (stream, ", ");
183 fprintf_filtered (stream, "%ld", arg_value);
184 first = 0;
185 start += sizeof (int);
186 }
187}
188
033a42c2
MK
189/* Print the arguments of frame FRAME on STREAM, given the function
190 FUNC running in that frame (as a symbol), where NUM is the number
191 of arguments according to the stack frame (or -1 if the number of
192 arguments is unknown). */
8d3b0994 193
e3168615 194/* Note that currently the "number of arguments according to the
033a42c2 195 stack frame" is only known on VAX where i refers to the "number of
e3168615 196 ints of arguments according to the stack frame". */
8d3b0994
AC
197
198static void
033a42c2
MK
199print_frame_args (struct symbol *func, struct frame_info *frame,
200 int num, struct ui_file *stream)
8d3b0994 201{
8d3b0994 202 int first = 1;
8d3b0994 203 /* Offset of next stack argument beyond the one we have seen that is
033a42c2
MK
204 at the highest offset, or -1 if we haven't come to a stack
205 argument yet. */
8d3b0994 206 long highest_offset = -1;
8d3b0994
AC
207 /* Number of ints of arguments that we have printed so far. */
208 int args_printed = 0;
209 struct cleanup *old_chain, *list_chain;
210 struct ui_stream *stb;
a6bac58e
TT
211 /* True if we should print arguments, false otherwise. */
212 int print_args = strcmp (print_frame_arguments, "none");
213 /* True in "summary" mode, false otherwise. */
214 int summary = !strcmp (print_frame_arguments, "scalars");
8d3b0994
AC
215
216 stb = ui_out_stream_new (uiout);
217 old_chain = make_cleanup_ui_out_stream_delete (stb);
218
219 if (func)
220 {
033a42c2
MK
221 struct block *b = SYMBOL_BLOCK_VALUE (func);
222 struct dict_iterator iter;
223 struct symbol *sym;
224 struct value *val;
8d3b0994 225
de4f826b 226 ALL_BLOCK_SYMBOLS (b, iter, sym)
8d3b0994
AC
227 {
228 QUIT;
229
230 /* Keep track of the highest stack argument offset seen, and
231 skip over any kinds of symbols we don't care about. */
232
2a2d4dc3
AS
233 if (!SYMBOL_IS_ARGUMENT (sym))
234 continue;
235
8d3b0994
AC
236 switch (SYMBOL_CLASS (sym))
237 {
238 case LOC_ARG:
239 case LOC_REF_ARG:
240 {
241 long current_offset = SYMBOL_VALUE (sym);
033a42c2 242 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
8d3b0994
AC
243
244 /* Compute address of next argument by adding the size of
245 this argument and rounding to an int boundary. */
246 current_offset =
247 ((current_offset + arg_size + sizeof (int) - 1)
248 & ~(sizeof (int) - 1));
249
033a42c2
MK
250 /* If this is the highest offset seen yet, set
251 highest_offset. */
8d3b0994
AC
252 if (highest_offset == -1
253 || (current_offset > highest_offset))
254 highest_offset = current_offset;
255
033a42c2
MK
256 /* Add the number of ints we're about to print to
257 args_printed. */
8d3b0994
AC
258 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
259 }
260
033a42c2
MK
261 /* We care about types of symbols, but don't need to
262 keep track of stack offsets in them. */
2a2d4dc3 263 case LOC_REGISTER:
8d3b0994 264 case LOC_REGPARM_ADDR:
2a2d4dc3
AS
265 case LOC_COMPUTED:
266 case LOC_OPTIMIZED_OUT:
8d3b0994 267 default:
2a2d4dc3 268 break;
8d3b0994
AC
269 }
270
271 /* We have to look up the symbol because arguments can have
272 two entries (one a parameter, one a local) and the one we
273 want is the local, which lookup_symbol will find for us.
033a42c2 274 This includes gcc1 (not gcc2) on SPARC when passing a
8d3b0994
AC
275 small structure and gcc2 when the argument type is float
276 and it is passed as a double and converted to float by
277 the prologue (in the latter case the type of the LOC_ARG
278 symbol is double and the type of the LOC_LOCAL symbol is
279 float). */
033a42c2
MK
280 /* But if the parameter name is null, don't try it. Null
281 parameter names occur on the RS/6000, for traceback
282 tables. FIXME, should we even print them? */
8d3b0994 283
3567439c 284 if (*SYMBOL_LINKAGE_NAME (sym))
8d3b0994
AC
285 {
286 struct symbol *nsym;
3567439c 287 nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2570f2b7 288 b, VAR_DOMAIN, NULL);
55765a25 289 gdb_assert (nsym != NULL);
2a2d4dc3
AS
290 if (SYMBOL_CLASS (nsym) == LOC_REGISTER
291 && !SYMBOL_IS_ARGUMENT (nsym))
8d3b0994 292 {
033a42c2
MK
293 /* There is a LOC_ARG/LOC_REGISTER pair. This means
294 that it was passed on the stack and loaded into a
295 register, or passed in a register and stored in a
296 stack slot. GDB 3.x used the LOC_ARG; GDB
297 4.0-4.11 used the LOC_REGISTER.
8d3b0994
AC
298
299 Reasons for using the LOC_ARG:
033a42c2
MK
300
301 (1) Because find_saved_registers may be slow for
302 remote debugging.
303
304 (2) Because registers are often re-used and stack
305 slots rarely (never?) are. Therefore using
306 the stack slot is much less likely to print
307 garbage.
8d3b0994
AC
308
309 Reasons why we might want to use the LOC_REGISTER:
033a42c2
MK
310
311 (1) So that the backtrace prints the same value
312 as "print foo". I see no compelling reason
313 why this needs to be the case; having the
314 backtrace print the value which was passed
315 in, and "print foo" print the value as
316 modified within the called function, makes
317 perfect sense to me.
318
319 Additional note: It might be nice if "info args"
320 displayed both values.
321
322 One more note: There is a case with SPARC
323 structure passing where we need to use the
324 LOC_REGISTER, but this is dealt with by creating
325 a single LOC_REGPARM in symbol reading. */
8d3b0994
AC
326
327 /* Leave sym (the LOC_ARG) alone. */
328 ;
329 }
330 else
331 sym = nsym;
332 }
333
334 /* Print the current arg. */
335 if (!first)
336 ui_out_text (uiout, ", ");
337 ui_out_wrap_hint (uiout, " ");
338
339 annotate_arg_begin ();
340
341 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
342 fprintf_symbol_filtered (stb->stream, SYMBOL_PRINT_NAME (sym),
033a42c2
MK
343 SYMBOL_LANGUAGE (sym),
344 DMGL_PARAMS | DMGL_ANSI);
8d3b0994
AC
345 ui_out_field_stream (uiout, "name", stb);
346 annotate_arg_name_end ();
347 ui_out_text (uiout, "=");
348
a6bac58e 349 if (print_args)
88408340
JB
350 {
351 /* Avoid value_print because it will deref ref parameters.
352 We just want to print their addresses. Print ??? for
353 args whose address we do not know. We pass 2 as
354 "recurse" to val_print because our standard indentation
355 here is 4 spaces, and val_print indents 2 for each
356 recurse. */
357 val = read_var_value (sym, frame);
358
359 annotate_arg_value (val == NULL ? NULL : value_type (val));
360
361 if (val)
362 {
d8ca156b 363 const struct language_defn *language;
79a45b7d 364 struct value_print_options opts;
d8ca156b
JB
365
366 /* Use the appropriate language to display our symbol,
367 unless the user forced the language to a specific
368 language. */
369 if (language_mode == language_mode_auto)
370 language = language_def (SYMBOL_LANGUAGE (sym));
371 else
372 language = current_language;
373
79a45b7d
TT
374 get_raw_print_options (&opts);
375 opts.deref_ref = 0;
a6bac58e
TT
376 opts.summary = summary;
377 common_val_print (val, stb->stream, 2, &opts, language);
88408340
JB
378 ui_out_field_stream (uiout, "value", stb);
379 }
380 else
381 ui_out_text (uiout, "???");
382 }
383 else
384 ui_out_text (uiout, "...");
8d3b0994 385
8d3b0994
AC
386
387 /* Invoke ui_out_tuple_end. */
388 do_cleanups (list_chain);
389
390 annotate_arg_end ();
391
392 first = 0;
393 }
394 }
395
396 /* Don't print nameless args in situations where we don't know
397 enough about the stack to find them. */
398 if (num != -1)
399 {
400 long start;
401
402 if (highest_offset == -1)
7500260a 403 start = gdbarch_frame_args_skip (get_frame_arch (frame));
8d3b0994
AC
404 else
405 start = highest_offset;
406
033a42c2 407 print_frame_nameless_args (frame, start, num - args_printed,
8d3b0994
AC
408 first, stream);
409 }
033a42c2 410
8d3b0994
AC
411 do_cleanups (old_chain);
412}
413
033a42c2 414/* Stub for catch_errors. */
c906108c
SS
415
416static int
4efb68b1 417print_args_stub (void *args)
c906108c 418{
033a42c2 419 struct print_args_args *p = args;
12368003 420 struct gdbarch *gdbarch = get_frame_arch (p->frame);
c906108c 421 int numargs;
c906108c 422
12368003 423 if (gdbarch_frame_num_args_p (gdbarch))
983a287a 424 {
12368003 425 numargs = gdbarch_frame_num_args (gdbarch, p->frame);
983a287a
AC
426 gdb_assert (numargs >= 0);
427 }
428 else
429 numargs = -1;
033a42c2 430 print_frame_args (p->func, p->frame, numargs, p->stream);
c906108c
SS
431 return 0;
432}
433
033a42c2
MK
434/* Set the current source and line to the location given by frame
435 FRAME, if possible. When CENTER is true, adjust so the relevant
436 line is in the center of the next 'list'. */
c789492a 437
7abfe014 438void
033a42c2 439set_current_sal_from_frame (struct frame_info *frame, int center)
c789492a
FL
440{
441 struct symtab_and_line sal;
442
033a42c2 443 find_frame_sal (frame, &sal);
c789492a
FL
444 if (sal.symtab)
445 {
446 if (center)
447 sal.line = max (sal.line - get_lines_to_list () / 2, 1);
448 set_current_source_symtab_and_line (&sal);
449 }
450}
451
30c33a9f
HZ
452/* If ON, GDB will display disassembly of the next source line when
453 execution of the program being debugged stops.
481df73e
HZ
454 If AUTO (which is the default), or there's no line info to determine
455 the source line of the next instruction, display disassembly of next
456 instruction instead. */
30c33a9f
HZ
457
458static enum auto_boolean disassemble_next_line;
459
460static void
461show_disassemble_next_line (struct ui_file *file, int from_tty,
462 struct cmd_list_element *c,
463 const char *value)
464{
465 fprintf_filtered (file, _("\
466Debugger's willingness to use disassemble-next-line is %s.\n"),
467 value);
468}
469
470/* Show assembly codes; stub for catch_errors. */
471
472struct gdb_disassembly_stub_args
473{
13274fc3 474 struct gdbarch *gdbarch;
30c33a9f
HZ
475 int how_many;
476 CORE_ADDR low;
477 CORE_ADDR high;
478};
479
480static void
481gdb_disassembly_stub (void *args)
482{
483 struct gdb_disassembly_stub_args *p = args;
e6158f16 484 gdb_disassembly (p->gdbarch, uiout, 0,
858031d9 485 DISASSEMBLY_RAW_INSN, p->how_many,
e6158f16 486 p->low, p->high);
30c33a9f
HZ
487}
488
489/* Use TRY_CATCH to catch the exception from the gdb_disassembly
490 because it will be broken by filter sometime. */
491
492static void
13274fc3
UW
493do_gdb_disassembly (struct gdbarch *gdbarch,
494 int how_many, CORE_ADDR low, CORE_ADDR high)
30c33a9f
HZ
495{
496 volatile struct gdb_exception exception;
497 struct gdb_disassembly_stub_args args;
498
13274fc3 499 args.gdbarch = gdbarch;
30c33a9f
HZ
500 args.how_many = how_many;
501 args.low = low;
502 args.high = high;
503 TRY_CATCH (exception, RETURN_MASK_ALL)
504 {
505 gdb_disassembly_stub (&args);
506 }
465f42bb
JB
507 /* If an exception was thrown while doing the disassembly, print
508 the error message, to give the user a clue of what happened. */
509 if (exception.reason == RETURN_ERROR)
510 exception_print (gdb_stderr, exception);
30c33a9f
HZ
511}
512
033a42c2
MK
513/* Print information about frame FRAME. The output is format according
514 to PRINT_LEVEL and PRINT_WHAT and PRINT ARGS. The meaning of
515 PRINT_WHAT is:
516
517 SRC_LINE: Print only source line.
518 LOCATION: Print only location.
519 LOC_AND_SRC: Print location and source line.
520
521 Used in "where" output, and to emit breakpoint or step
522 messages. */
c906108c 523
7789c6f5 524void
033a42c2 525print_frame_info (struct frame_info *frame, int print_level,
0faf0076 526 enum print_what print_what, int print_args)
c906108c 527{
5af949e3 528 struct gdbarch *gdbarch = get_frame_arch (frame);
c906108c 529 struct symtab_and_line sal;
c5394b80
JM
530 int source_print;
531 int location_print;
c906108c 532
033a42c2 533 if (get_frame_type (frame) == DUMMY_FRAME
36f15f55
UW
534 || get_frame_type (frame) == SIGTRAMP_FRAME
535 || get_frame_type (frame) == ARCH_FRAME)
c906108c 536 {
075559bc
AC
537 struct cleanup *uiout_cleanup
538 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c906108c 539
033a42c2 540 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
5af949e3 541 gdbarch, get_frame_pc (frame));
6a3fe0a4 542
c906108c 543 /* Do this regardless of SOURCE because we don't have any source
c5aa993b 544 to list for this frame. */
0faf0076 545 if (print_level)
52c6a6ac
JJ
546 {
547 ui_out_text (uiout, "#");
0faf0076 548 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
033a42c2 549 frame_relative_level (frame));
52c6a6ac 550 }
075559bc 551 if (ui_out_is_mi_like_p (uiout))
52c6a6ac 552 {
075559bc 553 annotate_frame_address ();
5af949e3
UW
554 ui_out_field_core_addr (uiout, "addr",
555 gdbarch, get_frame_pc (frame));
075559bc 556 annotate_frame_address_end ();
52c6a6ac 557 }
6a3fe0a4 558
033a42c2 559 if (get_frame_type (frame) == DUMMY_FRAME)
075559bc
AC
560 {
561 annotate_function_call ();
562 ui_out_field_string (uiout, "func", "<function called from gdb>");
563 }
033a42c2 564 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
075559bc
AC
565 {
566 annotate_signal_handler_caller ();
567 ui_out_field_string (uiout, "func", "<signal handler called>");
568 }
36f15f55
UW
569 else if (get_frame_type (frame) == ARCH_FRAME)
570 {
571 ui_out_field_string (uiout, "func", "<cross-architecture call>");
572 }
075559bc 573 ui_out_text (uiout, "\n");
c906108c 574 annotate_frame_end ();
075559bc
AC
575
576 do_cleanups (uiout_cleanup);
c906108c
SS
577 return;
578 }
579
033a42c2
MK
580 /* If FRAME is not the innermost frame, that normally means that
581 FRAME->pc points to *after* the call instruction, and we want to
582 get the line containing the call, never the next line. But if
583 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
584 next frame was not entered as the result of a call, and we want
585 to get the line containing FRAME->pc. */
586 find_frame_sal (frame, &sal);
c906108c 587
0faf0076
AC
588 location_print = (print_what == LOCATION
589 || print_what == LOC_AND_ADDRESS
590 || print_what == SRC_AND_LOC);
c5394b80
JM
591
592 if (location_print || !sal.symtab)
033a42c2 593 print_frame (frame, print_level, print_what, print_args, sal);
c5394b80 594
0faf0076 595 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
0378c332 596
30c33a9f
HZ
597 /* If disassemble-next-line is set to auto or on and doesn't have
598 the line debug messages for $pc, output the next instruction. */
599 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
600 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
601 && source_print && !sal.symtab)
13274fc3
UW
602 do_gdb_disassembly (get_frame_arch (frame), 1,
603 get_frame_pc (frame), get_frame_pc (frame) + 1);
30c33a9f 604
c5394b80
JM
605 if (source_print && sal.symtab)
606 {
607 int done = 0;
0faf0076 608 int mid_statement = ((print_what == SRC_LINE)
edb3359d 609 && frame_show_address (frame, sal));
c5394b80
JM
610
611 if (annotation_level)
612 done = identify_source_line (sal.symtab, sal.line, mid_statement,
033a42c2 613 get_frame_pc (frame));
c5394b80
JM
614 if (!done)
615 {
9a4105ab 616 if (deprecated_print_frame_info_listing_hook)
cbd3c883
MS
617 deprecated_print_frame_info_listing_hook (sal.symtab,
618 sal.line,
619 sal.line + 1, 0);
ba4bbdcb 620 else
c5394b80 621 {
79a45b7d
TT
622 struct value_print_options opts;
623 get_user_print_options (&opts);
ba4bbdcb
KS
624 /* We used to do this earlier, but that is clearly
625 wrong. This function is used by many different
626 parts of gdb, including normal_stop in infrun.c,
627 which uses this to print out the current PC
628 when we stepi/nexti into the middle of a source
629 line. Only the command line really wants this
630 behavior. Other UIs probably would like the
cbd3c883 631 ability to decide for themselves if it is desired. */
79a45b7d 632 if (opts.addressprint && mid_statement)
ba4bbdcb 633 {
5af949e3
UW
634 ui_out_field_core_addr (uiout, "addr",
635 gdbarch, get_frame_pc (frame));
ba4bbdcb 636 ui_out_text (uiout, "\t");
ba4bbdcb
KS
637 }
638
639 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
c5394b80 640 }
c5394b80 641 }
30c33a9f
HZ
642
643 /* If disassemble-next-line is set to on and there is line debug
644 messages, output assembly codes for next line. */
645 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
13274fc3
UW
646 do_gdb_disassembly (get_frame_arch (frame), -1,
647 get_frame_pc (frame), sal.end);
c5394b80
JM
648 }
649
0faf0076 650 if (print_what != LOCATION)
6c95b8df
PA
651 set_default_breakpoint (1, sal.pspace,
652 get_frame_pc (frame), sal.symtab, sal.line);
c5394b80
JM
653
654 annotate_frame_end ();
655
656 gdb_flush (gdb_stdout);
657}
658
f8f6f20b
TJB
659/* Attempt to obtain the FUNNAME and FUNLANG of the function corresponding
660 to FRAME. */
661void
662find_frame_funname (struct frame_info *frame, char **funname,
663 enum language *funlang)
c5394b80
JM
664{
665 struct symbol *func;
8b93c638 666
f8f6f20b
TJB
667 *funname = NULL;
668 *funlang = language_unknown;
c5394b80 669
edb3359d 670 func = get_frame_function (frame);
c906108c
SS
671 if (func)
672 {
673 /* In certain pathological cases, the symtabs give the wrong
c5aa993b
JM
674 function (when we are in the first function in a file which
675 is compiled without debugging symbols, the previous function
676 is compiled with debugging symbols, and the "foo.o" symbol
033a42c2
MK
677 that is supposed to tell us where the file with debugging
678 symbols ends has been truncated by ar because it is longer
679 than 15 characters). This also occurs if the user uses asm()
680 to create a function but not stabs for it (in a file compiled
681 with -g).
c5aa993b
JM
682
683 So look in the minimal symbol tables as well, and if it comes
684 up with a larger address for the function use that instead.
033a42c2
MK
685 I don't think this can ever cause any problems; there
686 shouldn't be any minimal symbols in the middle of a function;
687 if this is ever changed many parts of GDB will need to be
688 changed (and we'll create a find_pc_minimal_function or some
689 such). */
690
edb3359d
DJ
691 struct minimal_symbol *msymbol = NULL;
692
693 /* Don't attempt to do this for inlined functions, which do not
694 have a corresponding minimal symbol. */
695 if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
696 msymbol
697 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
c906108c 698
c906108c 699 if (msymbol != NULL
c5aa993b 700 && (SYMBOL_VALUE_ADDRESS (msymbol)
c906108c
SS
701 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
702 {
c906108c
SS
703 /* We also don't know anything about the function besides
704 its address and name. */
705 func = 0;
f8f6f20b
TJB
706 *funname = SYMBOL_PRINT_NAME (msymbol);
707 *funlang = SYMBOL_LANGUAGE (msymbol);
c906108c
SS
708 }
709 else
710 {
f8f6f20b
TJB
711 *funname = SYMBOL_PRINT_NAME (func);
712 *funlang = SYMBOL_LANGUAGE (func);
713 if (*funlang == language_cplus)
c5aa993b 714 {
033a42c2
MK
715 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
716 to display the demangled name that we already have
717 stored in the symbol table, but we stored a version
718 with DMGL_PARAMS turned on, and here we don't want to
3567439c 719 display parameters. So remove the parameters. */
f8f6f20b 720 char *func_only = cp_remove_params (*funname);
3567439c
DJ
721 if (func_only)
722 {
f8f6f20b 723 *funname = func_only;
3567439c
DJ
724 make_cleanup (xfree, func_only);
725 }
c5aa993b 726 }
c906108c
SS
727 }
728 }
729 else
730 {
033a42c2
MK
731 struct minimal_symbol *msymbol =
732 lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
733
c906108c
SS
734 if (msymbol != NULL)
735 {
f8f6f20b
TJB
736 *funname = SYMBOL_PRINT_NAME (msymbol);
737 *funlang = SYMBOL_LANGUAGE (msymbol);
c906108c
SS
738 }
739 }
f8f6f20b
TJB
740}
741
742static void
743print_frame (struct frame_info *frame, int print_level,
744 enum print_what print_what, int print_args,
745 struct symtab_and_line sal)
746{
5af949e3 747 struct gdbarch *gdbarch = get_frame_arch (frame);
f8f6f20b
TJB
748 char *funname = NULL;
749 enum language funlang = language_unknown;
750 struct ui_stream *stb;
751 struct cleanup *old_chain, *list_chain;
752 struct value_print_options opts;
753
754 stb = ui_out_stream_new (uiout);
755 old_chain = make_cleanup_ui_out_stream_delete (stb);
756
757 find_frame_funname (frame, &funname, &funlang);
c906108c 758
033a42c2 759 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
5af949e3 760 gdbarch, get_frame_pc (frame));
c5394b80 761
666547aa 762 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c5394b80 763
0faf0076 764 if (print_level)
8b93c638 765 {
8b93c638 766 ui_out_text (uiout, "#");
0faf0076 767 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
033a42c2 768 frame_relative_level (frame));
8b93c638 769 }
79a45b7d
TT
770 get_user_print_options (&opts);
771 if (opts.addressprint)
edb3359d 772 if (frame_show_address (frame, sal) || !sal.symtab
0faf0076 773 || print_what == LOC_AND_ADDRESS)
c5394b80
JM
774 {
775 annotate_frame_address ();
5af949e3 776 ui_out_field_core_addr (uiout, "addr", gdbarch, get_frame_pc (frame));
8b93c638
JM
777 annotate_frame_address_end ();
778 ui_out_text (uiout, " in ");
c5394b80
JM
779 }
780 annotate_frame_function_name ();
033a42c2
MK
781 fprintf_symbol_filtered (stb->stream, funname ? funname : "??",
782 funlang, DMGL_ANSI);
8b93c638
JM
783 ui_out_field_stream (uiout, "func", stb);
784 ui_out_wrap_hint (uiout, " ");
c5394b80
JM
785 annotate_frame_args ();
786
8b93c638 787 ui_out_text (uiout, " (");
0faf0076 788 if (print_args)
c906108c 789 {
c5394b80 790 struct print_args_args args;
d493eb33 791 struct cleanup *args_list_chain;
033a42c2 792 args.frame = frame;
f8f6f20b 793 args.func = find_pc_function (get_frame_address_in_block (frame));
c5394b80 794 args.stream = gdb_stdout;
68c81b54 795 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
5c3ce3f7 796 catch_errors (print_args_stub, &args, "", RETURN_MASK_ERROR);
033a42c2
MK
797 /* FIXME: ARGS must be a list. If one argument is a string it
798 will have " that will not be properly escaped. */
666547aa 799 /* Invoke ui_out_tuple_end. */
d493eb33 800 do_cleanups (args_list_chain);
c5394b80
JM
801 QUIT;
802 }
8b93c638 803 ui_out_text (uiout, ")");
c5394b80
JM
804 if (sal.symtab && sal.symtab->filename)
805 {
806 annotate_frame_source_begin ();
8b93c638
JM
807 ui_out_wrap_hint (uiout, " ");
808 ui_out_text (uiout, " at ");
809 annotate_frame_source_file ();
810 ui_out_field_string (uiout, "file", sal.symtab->filename);
76ff342d
DJ
811 if (ui_out_is_mi_like_p (uiout))
812 {
813 const char *fullname = symtab_to_fullname (sal.symtab);
814 if (fullname != NULL)
815 ui_out_field_string (uiout, "fullname", fullname);
816 }
8b93c638
JM
817 annotate_frame_source_file_end ();
818 ui_out_text (uiout, ":");
819 annotate_frame_source_line ();
820 ui_out_field_int (uiout, "line", sal.line);
c5394b80
JM
821 annotate_frame_source_end ();
822 }
c906108c 823
c5394b80 824 if (!funname || (!sal.symtab || !sal.symtab->filename))
c906108c 825 {
a77053c2 826#ifdef PC_SOLIB
033a42c2 827 char *lib = PC_SOLIB (get_frame_pc (frame));
a77053c2 828#else
6c95b8df
PA
829 char *lib = solib_name_from_address (get_frame_program_space (frame),
830 get_frame_pc (frame));
a77053c2 831#endif
c5394b80 832 if (lib)
c906108c 833 {
c5394b80 834 annotate_frame_where ();
8b93c638
JM
835 ui_out_wrap_hint (uiout, " ");
836 ui_out_text (uiout, " from ");
837 ui_out_field_string (uiout, "from", lib);
c906108c 838 }
c906108c 839 }
e514a9d6 840
666547aa 841 /* do_cleanups will call ui_out_tuple_end() for us. */
e6e0bfab 842 do_cleanups (list_chain);
8b93c638
JM
843 ui_out_text (uiout, "\n");
844 do_cleanups (old_chain);
c906108c
SS
845}
846\f
c5aa993b 847
033a42c2
MK
848/* Read a frame specification in whatever the appropriate format is
849 from FRAME_EXP. Call error(), printing MESSAGE, if the
850 specification is in any way invalid (so this function never returns
851 NULL). When SEPECTED_P is non-NULL set its target to indicate that
852 the default selected frame was used. */
c906108c 853
1c8831c5
AC
854static struct frame_info *
855parse_frame_specification_1 (const char *frame_exp, const char *message,
856 int *selected_frame_p)
c906108c 857{
1c8831c5
AC
858 int numargs;
859 struct value *args[4];
860 CORE_ADDR addrs[ARRAY_SIZE (args)];
c5aa993b 861
1c8831c5
AC
862 if (frame_exp == NULL)
863 numargs = 0;
864 else
c906108c 865 {
1c8831c5 866 char *addr_string;
c906108c
SS
867 struct cleanup *tmp_cleanup;
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;
995 int i, count, numregs;
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 {
1315 struct partial_symtab *ps;
c5aa993b 1316
033a42c2
MK
1317 /* Read in symbols for all of the frames. Need to do this in a
1318 separate pass so that "Reading in symbols for xxx" messages
1319 don't screw up the appearance of the backtrace. Also if
1320 people have strong opinions against reading symbols for
c5aa993b 1321 backtrace this may have to be an option. */
c906108c 1322 i = count;
033a42c2 1323 for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
c906108c
SS
1324 {
1325 QUIT;
c4a09524 1326 ps = find_pc_psymtab (get_frame_address_in_block (fi));
c906108c 1327 if (ps)
033a42c2 1328 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in. */
c906108c
SS
1329 }
1330 }
1331
033a42c2 1332 for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
c906108c
SS
1333 {
1334 QUIT;
1335
1336 /* Don't use print_stack_frame; if an error() occurs it probably
c5aa993b
JM
1337 means further attempts to backtrace would fail (on the other
1338 hand, perhaps the code does or could be fixed to make sure
1339 the frame->prev field gets set to NULL in that case). */
0faf0076 1340 print_frame_info (fi, 1, LOCATION, 1);
c906108c 1341 if (show_locals)
c5aa993b 1342 print_frame_local_vars (fi, 1, gdb_stdout);
55feb689
DJ
1343
1344 /* Save the last frame to check for error conditions. */
1345 trailing = fi;
c906108c
SS
1346 }
1347
1348 /* If we've stopped before the end, mention that. */
1349 if (fi && from_tty)
a3f17187 1350 printf_filtered (_("(More stack frames follow...)\n"));
55feb689
DJ
1351
1352 /* If we've run out of frames, and the reason appears to be an error
1353 condition, print it. */
1354 if (fi == NULL && trailing != NULL)
1355 {
1356 enum unwind_stop_reason reason;
1357
1358 reason = get_frame_unwind_stop_reason (trailing);
1359 if (reason > UNWIND_FIRST_ERROR)
1360 printf_filtered (_("Backtrace stopped: %s\n"),
1361 frame_stop_reason_string (reason));
1362 }
c906108c
SS
1363}
1364
d75e3c94 1365struct backtrace_command_args
033a42c2
MK
1366{
1367 char *count_exp;
1368 int show_locals;
1369 int from_tty;
1370};
1371
1372/* Stub for catch_errors. */
d75e3c94 1373
d75e3c94
JJ
1374static int
1375backtrace_command_stub (void *data)
1376{
033a42c2 1377 struct backtrace_command_args *args = data;
d75e3c94
JJ
1378 backtrace_command_1 (args->count_exp, args->show_locals, args->from_tty);
1379 return 0;
1380}
1381
c906108c 1382static void
fba45db2 1383backtrace_command (char *arg, int from_tty)
c906108c 1384{
033a42c2
MK
1385 struct cleanup *old_chain = NULL;
1386 int fulltrace_arg = -1, arglen = 0, argc = 0;
d75e3c94 1387 struct backtrace_command_args btargs;
c906108c 1388
033a42c2 1389 if (arg)
c906108c 1390 {
033a42c2 1391 char **argv;
c906108c
SS
1392 int i;
1393
d1a41061 1394 argv = gdb_buildargv (arg);
7a292a7a 1395 old_chain = make_cleanup_freeargv (argv);
c906108c 1396 argc = 0;
033a42c2 1397 for (i = 0; argv[i]; i++)
c5aa993b 1398 {
745b8ca0 1399 unsigned int j;
c5aa993b 1400
033a42c2 1401 for (j = 0; j < strlen (argv[i]); j++)
c5aa993b
JM
1402 argv[i][j] = tolower (argv[i][j]);
1403
033a42c2
MK
1404 if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1405 fulltrace_arg = argc;
c5aa993b
JM
1406 else
1407 {
033a42c2 1408 arglen += strlen (argv[i]);
c5aa993b 1409 argc++;
c5aa993b
JM
1410 }
1411 }
033a42c2
MK
1412 arglen += argc;
1413 if (fulltrace_arg >= 0)
c5aa993b 1414 {
033a42c2 1415 if (arglen > 0)
c5aa993b 1416 {
033a42c2
MK
1417 arg = xmalloc (arglen + 1);
1418 memset (arg, 0, arglen + 1);
1419 for (i = 0; i < (argc + 1); i++)
c5aa993b 1420 {
033a42c2 1421 if (i != fulltrace_arg)
c5aa993b 1422 {
033a42c2
MK
1423 strcat (arg, argv[i]);
1424 strcat (arg, " ");
c5aa993b
JM
1425 }
1426 }
1427 }
1428 else
033a42c2 1429 arg = NULL;
c5aa993b 1430 }
c906108c
SS
1431 }
1432
033a42c2
MK
1433 btargs.count_exp = arg;
1434 btargs.show_locals = (fulltrace_arg >= 0);
d75e3c94 1435 btargs.from_tty = from_tty;
033a42c2 1436 catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
c906108c 1437
033a42c2
MK
1438 if (fulltrace_arg >= 0 && arglen > 0)
1439 xfree (arg);
c906108c
SS
1440
1441 if (old_chain)
c5aa993b 1442 do_cleanups (old_chain);
c906108c
SS
1443}
1444
1445static void
fba45db2 1446backtrace_full_command (char *arg, int from_tty)
c906108c 1447{
d75e3c94
JJ
1448 struct backtrace_command_args btargs;
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
033a42c2 1456/* Print the local variables of a block B active in FRAME on STREAM.
c906108c
SS
1457 Return 1 if any variables were printed; 0 otherwise. */
1458
1459static int
033a42c2 1460print_block_frame_locals (struct block *b, struct frame_info *frame,
de4f826b 1461 int num_tabs, struct ui_file *stream)
c906108c 1462{
de4f826b 1463 struct dict_iterator iter;
de4f826b
DC
1464 struct symbol *sym;
1465 int values_printed = 0;
033a42c2 1466 int j;
c906108c 1467
de4f826b 1468 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1469 {
c906108c
SS
1470 switch (SYMBOL_CLASS (sym))
1471 {
1472 case LOC_LOCAL:
1473 case LOC_REGISTER:
1474 case LOC_STATIC:
4c2df51b 1475 case LOC_COMPUTED:
2a2d4dc3
AS
1476 if (SYMBOL_IS_ARGUMENT (sym))
1477 break;
c906108c 1478 values_printed = 1;
aad95b57 1479 print_variable_and_value (NULL, sym, frame, stream, 4 * num_tabs);
c906108c
SS
1480 break;
1481
1482 default:
1483 /* Ignore symbols which are not locals. */
1484 break;
1485 }
1486 }
033a42c2 1487
c906108c
SS
1488 return values_printed;
1489}
1490
1491/* Same, but print labels. */
1492
1493static int
5af949e3
UW
1494print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1495 int *have_default, struct ui_file *stream)
c906108c 1496{
de4f826b 1497 struct dict_iterator iter;
52f0bd74
AC
1498 struct symbol *sym;
1499 int values_printed = 0;
c906108c 1500
de4f826b 1501 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1502 {
3567439c 1503 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
c906108c
SS
1504 {
1505 if (*have_default)
1506 continue;
1507 *have_default = 1;
1508 }
1509 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1510 {
1511 struct symtab_and_line sal;
79a45b7d 1512 struct value_print_options opts;
c906108c
SS
1513 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1514 values_printed = 1;
de5ad195 1515 fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
79a45b7d
TT
1516 get_user_print_options (&opts);
1517 if (opts.addressprint)
c906108c
SS
1518 {
1519 fprintf_filtered (stream, " ");
5af949e3
UW
1520 fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
1521 stream);
c906108c
SS
1522 }
1523 fprintf_filtered (stream, " in file %s, line %d\n",
1524 sal.symtab->filename, sal.line);
1525 }
1526 }
033a42c2 1527
c906108c
SS
1528 return values_printed;
1529}
1530
033a42c2
MK
1531/* Print on STREAM all the local variables in frame FRAME, including
1532 all the blocks active in that frame at its current PC.
c906108c 1533
033a42c2
MK
1534 Returns 1 if the job was done, or 0 if nothing was printed because
1535 we have no info on the function running in FRAME. */
c906108c
SS
1536
1537static void
033a42c2 1538print_frame_local_vars (struct frame_info *frame, int num_tabs,
aa1ee363 1539 struct ui_file *stream)
c906108c 1540{
033a42c2 1541 struct block *block = get_frame_block (frame, 0);
52f0bd74 1542 int values_printed = 0;
c906108c
SS
1543
1544 if (block == 0)
1545 {
1546 fprintf_filtered (stream, "No symbol table info available.\n");
1547 return;
1548 }
c5aa993b 1549
033a42c2 1550 while (block)
c906108c 1551 {
033a42c2 1552 if (print_block_frame_locals (block, frame, num_tabs, stream))
c906108c 1553 values_printed = 1;
033a42c2 1554 /* After handling the function's top-level block, stop. Don't
edb3359d
DJ
1555 continue to its superblock, the block of per-file symbols.
1556 Also do not continue to the containing function of an inlined
1557 function. */
c906108c
SS
1558 if (BLOCK_FUNCTION (block))
1559 break;
1560 block = BLOCK_SUPERBLOCK (block);
1561 }
1562
1563 if (!values_printed)
033a42c2 1564 fprintf_filtered (stream, _("No locals.\n"));
c906108c
SS
1565}
1566
1567/* Same, but print labels. */
1568
1569static void
033a42c2 1570print_frame_label_vars (struct frame_info *frame, int this_level_only,
aa1ee363 1571 struct ui_file *stream)
c906108c 1572{
801e3a5b
JB
1573#if 1
1574 fprintf_filtered (stream, "print_frame_label_vars disabled.\n");
1575#else
52f0bd74 1576 struct blockvector *bl;
033a42c2 1577 struct block *block = get_frame_block (frame, 0);
5af949e3 1578 struct gdbarch *gdbarch = get_frame_arch (frame);
52f0bd74 1579 int values_printed = 0;
c906108c
SS
1580 int index, have_default = 0;
1581 char *blocks_printed;
033a42c2 1582 CORE_ADDR pc = get_frame_pc (frame);
c906108c
SS
1583
1584 if (block == 0)
1585 {
1586 fprintf_filtered (stream, "No symbol table info available.\n");
1587 return;
1588 }
1589
1590 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
033a42c2 1591 blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
c906108c
SS
1592 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1593
1594 while (block != 0)
1595 {
1596 CORE_ADDR end = BLOCK_END (block) - 4;
1597 int last_index;
1598
1599 if (bl != blockvector_for_pc (end, &index))
8a3fe4f8 1600 error (_("blockvector blotch"));
c906108c 1601 if (BLOCKVECTOR_BLOCK (bl, index) != block)
8a3fe4f8 1602 error (_("blockvector botch"));
c906108c
SS
1603 last_index = BLOCKVECTOR_NBLOCKS (bl);
1604 index += 1;
1605
1606 /* Don't print out blocks that have gone by. */
1607 while (index < last_index
1608 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1609 index++;
1610
1611 while (index < last_index
1612 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1613 {
1614 if (blocks_printed[index] == 0)
1615 {
5af949e3
UW
1616 if (print_block_frame_labels (gdbarch,
1617 BLOCKVECTOR_BLOCK (bl, index),
033a42c2 1618 &have_default, stream))
c906108c
SS
1619 values_printed = 1;
1620 blocks_printed[index] = 1;
1621 }
1622 index++;
1623 }
1624 if (have_default)
1625 return;
1626 if (values_printed && this_level_only)
1627 return;
1628
033a42c2 1629 /* After handling the function's top-level block, stop. Don't
edb3359d
DJ
1630 continue to its superblock, the block of per-file symbols.
1631 Also do not continue to the containing function of an inlined
1632 function. */
c906108c
SS
1633 if (BLOCK_FUNCTION (block))
1634 break;
1635 block = BLOCK_SUPERBLOCK (block);
1636 }
1637
1638 if (!values_printed && !this_level_only)
033a42c2 1639 fprintf_filtered (stream, _("No catches.\n"));
801e3a5b 1640#endif
c906108c
SS
1641}
1642
c906108c 1643void
fba45db2 1644locals_info (char *args, int from_tty)
c906108c 1645{
033a42c2 1646 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
b04f3ab4 1647 0, gdb_stdout);
c906108c
SS
1648}
1649
1650static void
fba45db2 1651catch_info (char *ignore, int from_tty)
c906108c 1652{
c5aa993b 1653 struct symtab_and_line *sal;
c906108c 1654
dfdfb3ca
JB
1655 /* Assume g++ compiled code; old GDB 4.16 behaviour. */
1656 print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1657 0, gdb_stdout);
c906108c
SS
1658}
1659
1660static void
033a42c2 1661print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
c906108c 1662{
033a42c2 1663 struct symbol *func = get_frame_function (frame);
52f0bd74 1664 struct block *b;
de4f826b 1665 struct dict_iterator iter;
52f0bd74
AC
1666 struct symbol *sym, *sym2;
1667 int values_printed = 0;
c906108c
SS
1668
1669 if (func == 0)
1670 {
033a42c2 1671 fprintf_filtered (stream, _("No symbol table info available.\n"));
c906108c
SS
1672 return;
1673 }
1674
1675 b = SYMBOL_BLOCK_VALUE (func);
de4f826b 1676 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1677 {
2a2d4dc3
AS
1678 /* Don't worry about things which aren't arguments. */
1679 if (SYMBOL_IS_ARGUMENT (sym))
c906108c 1680 {
c906108c 1681 values_printed = 1;
c906108c
SS
1682
1683 /* We have to look up the symbol because arguments can have
1684 two entries (one a parameter, one a local) and the one we
1685 want is the local, which lookup_symbol will find for us.
1686 This includes gcc1 (not gcc2) on the sparc when passing a
1687 small structure and gcc2 when the argument type is float
1688 and it is passed as a double and converted to float by
1689 the prologue (in the latter case the type of the LOC_ARG
1690 symbol is double and the type of the LOC_LOCAL symbol is
1691 float). There are also LOC_ARG/LOC_REGISTER pairs which
1692 are not combined in symbol-reading. */
1693
3567439c 1694 sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2570f2b7 1695 b, VAR_DOMAIN, NULL);
aad95b57
TT
1696 print_variable_and_value (SYMBOL_PRINT_NAME (sym), sym2,
1697 frame, stream, 0);
c906108c
SS
1698 }
1699 }
033a42c2 1700
c906108c 1701 if (!values_printed)
033a42c2 1702 fprintf_filtered (stream, _("No arguments.\n"));
c906108c
SS
1703}
1704
1705void
fba45db2 1706args_info (char *ignore, int from_tty)
c906108c 1707{
033a42c2 1708 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
b04f3ab4 1709 gdb_stdout);
c906108c
SS
1710}
1711
1712
1713static void
fba45db2 1714args_plus_locals_info (char *ignore, int from_tty)
c906108c 1715{
c5aa993b
JM
1716 args_info (ignore, from_tty);
1717 locals_info (ignore, from_tty);
c906108c 1718}
c906108c 1719\f
c5aa993b 1720
033a42c2
MK
1721/* Select frame FRAME. Also print the stack frame and show the source
1722 if this is the tui version. */
bedfa57b 1723static void
033a42c2 1724select_and_print_frame (struct frame_info *frame)
c906108c 1725{
033a42c2
MK
1726 select_frame (frame);
1727 if (frame)
1728 print_stack_frame (frame, 1, SRC_AND_LOC);
c906108c 1729}
c906108c 1730\f
c906108c 1731/* Return the symbol-block in which the selected frame is executing.
ae767bfb
JB
1732 Can return zero under various legitimate circumstances.
1733
1734 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1735 code address within the block returned. We use this to decide
1736 which macros are in scope. */
c906108c
SS
1737
1738struct block *
ae767bfb 1739get_selected_block (CORE_ADDR *addr_in_block)
c906108c 1740{
d729566a 1741 if (!has_stack_frames ())
8ea051c5
PA
1742 return 0;
1743
206415a3 1744 return get_frame_block (get_selected_frame (NULL), addr_in_block);
c906108c
SS
1745}
1746
1747/* Find a frame a certain number of levels away from FRAME.
1748 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1749 Positive means go to earlier frames (up); negative, the reverse.
1750 The int that contains the number of levels is counted toward
1751 zero as the frames for those levels are found.
1752 If the top or bottom frame is reached, that frame is returned,
1753 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1754 how much farther the original request asked to go. */
1755
1756struct frame_info *
033a42c2 1757find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
c906108c 1758{
033a42c2
MK
1759 /* Going up is simple: just call get_prev_frame enough times or
1760 until the initial frame is reached. */
c906108c
SS
1761 while (*level_offset_ptr > 0)
1762 {
033a42c2
MK
1763 struct frame_info *prev = get_prev_frame (frame);
1764 if (!prev)
c906108c
SS
1765 break;
1766 (*level_offset_ptr)--;
1767 frame = prev;
1768 }
033a42c2 1769
c906108c 1770 /* Going down is just as simple. */
033a42c2 1771 while (*level_offset_ptr < 0)
c906108c 1772 {
033a42c2
MK
1773 struct frame_info *next = get_next_frame (frame);
1774 if (!next)
1775 break;
1776 (*level_offset_ptr)++;
1777 frame = next;
c906108c 1778 }
033a42c2 1779
c906108c
SS
1780 return frame;
1781}
1782
033a42c2
MK
1783/* The "select_frame" command. With no argument this is a NOP.
1784 Select the frame at level LEVEL_EXP if it is a valid level.
1785 Otherwise, treat LEVEL_EXP as an address expression and select it.
1786
1787 See parse_frame_specification for more info on proper frame
1788 expressions. */
c906108c 1789
8b93c638 1790void
fba45db2 1791select_frame_command (char *level_exp, int from_tty)
c906108c 1792{
1c8831c5 1793 select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
c906108c
SS
1794}
1795
033a42c2
MK
1796/* The "frame" command. With no argument, print the selected frame
1797 briefly. With an argument, behave like select_frame and then print
1798 the selected frame. */
c906108c 1799
033a42c2 1800static void
fba45db2 1801frame_command (char *level_exp, int from_tty)
c906108c
SS
1802{
1803 select_frame_command (level_exp, from_tty);
b04f3ab4 1804 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
c906108c
SS
1805}
1806
033a42c2 1807/* The XDB Compatibility command to print the current frame. */
c906108c 1808
7a292a7a 1809static void
fba45db2 1810current_frame_command (char *level_exp, int from_tty)
c906108c 1811{
033a42c2 1812 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
7a292a7a 1813}
c906108c 1814
033a42c2
MK
1815/* Select the frame up one or COUNT_EXP stack levels from the
1816 previously selected frame, and print it briefly. */
c906108c 1817
c906108c 1818static void
fba45db2 1819up_silently_base (char *count_exp)
c906108c 1820{
033a42c2
MK
1821 struct frame_info *frame;
1822 int count = 1;
1823
c906108c 1824 if (count_exp)
bb518678 1825 count = parse_and_eval_long (count_exp);
c5aa993b 1826
033a42c2
MK
1827 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1828 if (count != 0 && count_exp == NULL)
8a3fe4f8 1829 error (_("Initial frame selected; you cannot go up."));
033a42c2 1830 select_frame (frame);
c906108c
SS
1831}
1832
1833static void
fba45db2 1834up_silently_command (char *count_exp, int from_tty)
c906108c 1835{
c5aa993b 1836 up_silently_base (count_exp);
c906108c
SS
1837}
1838
1839static void
fba45db2 1840up_command (char *count_exp, int from_tty)
c906108c
SS
1841{
1842 up_silently_base (count_exp);
b04f3ab4 1843 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
c906108c
SS
1844}
1845
033a42c2
MK
1846/* Select the frame down one or COUNT_EXP stack levels from the previously
1847 selected frame, and print it briefly. */
c906108c 1848
c906108c 1849static void
fba45db2 1850down_silently_base (char *count_exp)
c906108c 1851{
52f0bd74 1852 struct frame_info *frame;
033a42c2 1853 int count = -1;
c906108c 1854 if (count_exp)
bb518678 1855 count = -parse_and_eval_long (count_exp);
c5aa993b 1856
033a42c2
MK
1857 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1858 if (count != 0 && count_exp == NULL)
c906108c 1859 {
033a42c2
MK
1860 /* We only do this if COUNT_EXP is not specified. That way
1861 "down" means to really go down (and let me know if that is
1862 impossible), but "down 9999" can be used to mean go all the
1863 way down without getting an error. */
c906108c 1864
033a42c2 1865 error (_("Bottom (innermost) frame selected; you cannot go down."));
c906108c
SS
1866 }
1867
0f7d239c 1868 select_frame (frame);
c906108c
SS
1869}
1870
c906108c 1871static void
fba45db2 1872down_silently_command (char *count_exp, int from_tty)
c906108c
SS
1873{
1874 down_silently_base (count_exp);
c906108c
SS
1875}
1876
1877static void
fba45db2 1878down_command (char *count_exp, int from_tty)
c906108c
SS
1879{
1880 down_silently_base (count_exp);
b04f3ab4 1881 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
c906108c
SS
1882}
1883\f
033a42c2 1884
8b93c638 1885void
fba45db2 1886return_command (char *retval_exp, int from_tty)
c906108c 1887{
5ed92fa8 1888 struct frame_info *thisframe;
d80b854b 1889 struct gdbarch *gdbarch;
c906108c 1890 struct symbol *thisfun;
3d6d86c6 1891 struct value *return_value = NULL;
fc70c2a0 1892 const char *query_prefix = "";
c906108c 1893
5ed92fa8
UW
1894 thisframe = get_selected_frame ("No selected frame.");
1895 thisfun = get_frame_function (thisframe);
d80b854b 1896 gdbarch = get_frame_arch (thisframe);
c906108c 1897
edb3359d
DJ
1898 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
1899 error (_("Can not force return from an inlined function."));
1900
fc70c2a0
AC
1901 /* Compute the return value. If the computation triggers an error,
1902 let it bail. If the return type can't be handled, set
1903 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1904 message. */
c906108c
SS
1905 if (retval_exp)
1906 {
61ff14c6
JK
1907 struct expression *retval_expr = parse_expression (retval_exp);
1908 struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
c906108c
SS
1909 struct type *return_type = NULL;
1910
fc70c2a0
AC
1911 /* Compute the return value. Should the computation fail, this
1912 call throws an error. */
61ff14c6 1913 return_value = evaluate_expression (retval_expr);
c906108c 1914
fc70c2a0
AC
1915 /* Cast return value to the return type of the function. Should
1916 the cast fail, this call throws an error. */
c906108c
SS
1917 if (thisfun != NULL)
1918 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1919 if (return_type == NULL)
61ff14c6
JK
1920 {
1921 if (retval_expr->elts[0].opcode != UNOP_CAST)
1922 error (_("Return value type not available for selected "
1923 "stack frame.\n"
1924 "Please use an explicit cast of the value to return."));
1925 return_type = value_type (return_value);
1926 }
1927 do_cleanups (old_chain);
3e9a183c 1928 CHECK_TYPEDEF (return_type);
c906108c
SS
1929 return_value = value_cast (return_type, return_value);
1930
fc70c2a0
AC
1931 /* Make sure the value is fully evaluated. It may live in the
1932 stack frame we're about to pop. */
d69fe07e 1933 if (value_lazy (return_value))
c906108c 1934 value_fetch_lazy (return_value);
c906108c 1935
667e784f
AC
1936 if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1937 /* If the return-type is "void", don't try to find the
1938 return-value's location. However, do still evaluate the
1939 return expression so that, even when the expression result
1940 is discarded, side effects such as "return i++" still
033a42c2 1941 occur. */
667e784f 1942 return_value = NULL;
42e2132c 1943 else if (thisfun != NULL
d80b854b
UW
1944 && using_struct_return (gdbarch,
1945 SYMBOL_TYPE (thisfun), return_type))
fc70c2a0 1946 {
667e784f
AC
1947 query_prefix = "\
1948The location at which to store the function's return value is unknown.\n\
1949If you continue, the return value that you specified will be ignored.\n";
1950 return_value = NULL;
fc70c2a0 1951 }
c906108c
SS
1952 }
1953
fc70c2a0
AC
1954 /* Does an interactive user really want to do this? Include
1955 information, such as how well GDB can handle the return value, in
1956 the query message. */
1957 if (from_tty)
1958 {
1959 int confirmed;
1960 if (thisfun == NULL)
e2e0b3e5 1961 confirmed = query (_("%sMake selected stack frame return now? "),
fc70c2a0
AC
1962 query_prefix);
1963 else
e2e0b3e5 1964 confirmed = query (_("%sMake %s return now? "), query_prefix,
fc70c2a0
AC
1965 SYMBOL_PRINT_NAME (thisfun));
1966 if (!confirmed)
8a3fe4f8 1967 error (_("Not confirmed"));
fc70c2a0 1968 }
c906108c 1969
a45ae3ed
UW
1970 /* Discard the selected frame and all frames inner-to it. */
1971 frame_pop (get_selected_frame (NULL));
c906108c 1972
a1f5b845 1973 /* Store RETURN_VALUE in the just-returned register set. */
fc70c2a0
AC
1974 if (return_value != NULL)
1975 {
df407dfe 1976 struct type *return_type = value_type (return_value);
7500260a 1977 struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
42e2132c
JK
1978 struct type *func_type = thisfun == NULL ? NULL : SYMBOL_TYPE (thisfun);
1979
1980 gdb_assert (gdbarch_return_value (gdbarch, func_type, return_type, NULL,
1981 NULL, NULL)
750eb019 1982 == RETURN_VALUE_REGISTER_CONVENTION);
42e2132c 1983 gdbarch_return_value (gdbarch, func_type, return_type,
594f7785 1984 get_current_regcache (), NULL /*read*/,
0fd88904 1985 value_contents (return_value) /*write*/);
fc70c2a0 1986 }
1a2aab69 1987
fc70c2a0
AC
1988 /* If we are at the end of a call dummy now, pop the dummy frame
1989 too. */
e8bcf01f
AC
1990 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
1991 frame_pop (get_current_frame ());
1a2aab69 1992
c906108c 1993 /* If interactive, print the frame that is now current. */
c906108c
SS
1994 if (from_tty)
1995 frame_command ("0", 1);
1996 else
1997 select_frame_command ("0", 0);
1998}
1999
033a42c2
MK
2000/* Sets the scope to input function name, provided that the function
2001 is within the current stack frame */
c906108c
SS
2002
2003struct function_bounds
2004{
2005 CORE_ADDR low, high;
2006};
2007
2008static void
fba45db2 2009func_command (char *arg, int from_tty)
c906108c 2010{
033a42c2 2011 struct frame_info *frame;
c906108c
SS
2012 int found = 0;
2013 struct symtabs_and_lines sals;
2014 int i;
2015 int level = 1;
033a42c2 2016 struct function_bounds *func_bounds = NULL;
c906108c 2017
033a42c2 2018 if (arg != NULL)
c906108c
SS
2019 return;
2020
033a42c2 2021 frame = parse_frame_specification ("0");
c906108c
SS
2022 sals = decode_line_spec (arg, 1);
2023 func_bounds = (struct function_bounds *) xmalloc (
2024 sizeof (struct function_bounds) * sals.nelts);
2025 for (i = 0; (i < sals.nelts && !found); i++)
2026 {
033a42c2
MK
2027 if (sals.sals[i].pc == 0
2028 || find_pc_partial_function (sals.sals[i].pc, NULL,
2029 &func_bounds[i].low,
2030 &func_bounds[i].high) == 0)
c906108c 2031 {
033a42c2 2032 func_bounds[i].low = func_bounds[i].high = 0;
c906108c
SS
2033 }
2034 }
2035
2036 do
2037 {
2038 for (i = 0; (i < sals.nelts && !found); i++)
033a42c2
MK
2039 found = (get_frame_pc (frame) >= func_bounds[i].low
2040 && get_frame_pc (frame) < func_bounds[i].high);
c906108c
SS
2041 if (!found)
2042 {
2043 level = 1;
033a42c2 2044 frame = find_relative_frame (frame, &level);
c906108c
SS
2045 }
2046 }
2047 while (!found && level == 0);
2048
2049 if (func_bounds)
b8c9b27d 2050 xfree (func_bounds);
c906108c
SS
2051
2052 if (!found)
a3f17187 2053 printf_filtered (_("'%s' not within current stack frame.\n"), arg);
206415a3 2054 else if (frame != get_selected_frame (NULL))
033a42c2 2055 select_and_print_frame (frame);
c906108c
SS
2056}
2057
2058/* Gets the language of the current frame. */
2059
2060enum language
fba45db2 2061get_frame_language (void)
c906108c 2062{
206415a3 2063 struct frame_info *frame = deprecated_safe_get_selected_frame ();
c5aa993b 2064
033a42c2 2065 if (frame)
c906108c 2066 {
7ae4c3a5 2067 /* We determine the current frame language by looking up its
033a42c2
MK
2068 associated symtab. To retrieve this symtab, we use the frame
2069 PC. However we cannot use the frame PC as is, because it
2070 usually points to the instruction following the "call", which
2071 is sometimes the first instruction of another function. So
2072 we rely on get_frame_address_in_block(), it provides us with
2073 a PC that is guaranteed to be inside the frame's code
2074 block. */
2075 CORE_ADDR pc = get_frame_address_in_block (frame);
2076 struct symtab *s = find_pc_symtab (pc);
2077
c906108c 2078 if (s)
033a42c2 2079 return s->language;
c906108c 2080 }
c906108c 2081
033a42c2 2082 return language_unknown;
c906108c
SS
2083}
2084\f
033a42c2
MK
2085
2086/* Provide a prototype to silence -Wmissing-prototypes. */
2087void _initialize_stack (void);
2088
c906108c 2089void
fba45db2 2090_initialize_stack (void)
c906108c 2091{
c5aa993b 2092#if 0
c906108c
SS
2093 backtrace_limit = 30;
2094#endif
2095
1bedd215
AC
2096 add_com ("return", class_stack, return_command, _("\
2097Make selected stack frame return to its caller.\n\
c906108c
SS
2098Control remains in the debugger, but when you continue\n\
2099execution will resume in the frame above the one now selected.\n\
1bedd215
AC
2100If an argument is given, it is an expression for the value to return."));
2101
2102 add_com ("up", class_stack, up_command, _("\
2103Select and print stack frame that called this one.\n\
2104An argument says how many frames up to go."));
2105 add_com ("up-silently", class_support, up_silently_command, _("\
2106Same as the `up' command, but does not print anything.\n\
2107This is useful in command scripts."));
2108
2109 add_com ("down", class_stack, down_command, _("\
2110Select and print stack frame called by this one.\n\
2111An argument says how many frames down to go."));
c906108c
SS
2112 add_com_alias ("do", "down", class_stack, 1);
2113 add_com_alias ("dow", "down", class_stack, 1);
1bedd215
AC
2114 add_com ("down-silently", class_support, down_silently_command, _("\
2115Same as the `down' command, but does not print anything.\n\
2116This is useful in command scripts."));
c906108c 2117
1bedd215
AC
2118 add_com ("frame", class_stack, frame_command, _("\
2119Select and print a stack frame.\n\
c906108c
SS
2120With no argument, print the selected stack frame. (See also \"info frame\").\n\
2121An argument specifies the frame to select.\n\
2122It can be a stack frame number or the address of the frame.\n\
2123With argument, nothing is printed if input is coming from\n\
1bedd215 2124a command file or a user-defined command."));
c906108c
SS
2125
2126 add_com_alias ("f", "frame", class_stack, 1);
2127
2128 if (xdb_commands)
2129 {
c5aa993b 2130 add_com ("L", class_stack, current_frame_command,
1bedd215 2131 _("Print the current stack frame.\n"));
c906108c
SS
2132 add_com_alias ("V", "frame", class_stack, 1);
2133 }
1bedd215
AC
2134 add_com ("select-frame", class_stack, select_frame_command, _("\
2135Select a stack frame without printing anything.\n\
c906108c 2136An argument specifies the frame to select.\n\
1bedd215 2137It can be a stack frame number or the address of the frame.\n"));
c906108c 2138
1bedd215
AC
2139 add_com ("backtrace", class_stack, backtrace_command, _("\
2140Print backtrace of all stack frames, or innermost COUNT frames.\n\
c906108c 2141With a negative argument, print outermost -COUNT frames.\n\
1bedd215 2142Use of the 'full' qualifier also prints the values of the local variables.\n"));
c906108c
SS
2143 add_com_alias ("bt", "backtrace", class_stack, 0);
2144 if (xdb_commands)
2145 {
2146 add_com_alias ("t", "backtrace", class_stack, 0);
1bedd215
AC
2147 add_com ("T", class_stack, backtrace_full_command, _("\
2148Print backtrace of all stack frames, or innermost COUNT frames \n\
c906108c
SS
2149and the values of the local variables.\n\
2150With a negative argument, print outermost -COUNT frames.\n\
1bedd215 2151Usage: T <count>\n"));
c906108c
SS
2152 }
2153
2154 add_com_alias ("where", "backtrace", class_alias, 0);
2155 add_info ("stack", backtrace_command,
1bedd215 2156 _("Backtrace of the stack, or innermost COUNT frames."));
c906108c
SS
2157 add_info_alias ("s", "stack", 1);
2158 add_info ("frame", frame_info,
1bedd215 2159 _("All about selected stack frame, or frame at ADDR."));
c906108c
SS
2160 add_info_alias ("f", "frame", 1);
2161 add_info ("locals", locals_info,
1bedd215 2162 _("Local variables of current stack frame."));
c906108c 2163 add_info ("args", args_info,
1bedd215 2164 _("Argument variables of current stack frame."));
c906108c 2165 if (xdb_commands)
c5aa993b 2166 add_com ("l", class_info, args_plus_locals_info,
1bedd215 2167 _("Argument and local variables of current stack frame."));
c906108c
SS
2168
2169 if (dbx_commands)
1bedd215
AC
2170 add_com ("func", class_stack, func_command, _("\
2171Select the stack frame that contains <func>.\n\
2172Usage: func <name>\n"));
c906108c
SS
2173
2174 add_info ("catch", catch_info,
1bedd215 2175 _("Exceptions that can be caught in the current stack frame."));
c906108c 2176
88408340
JB
2177 add_setshow_enum_cmd ("frame-arguments", class_stack,
2178 print_frame_arguments_choices, &print_frame_arguments,
2179 _("Set printing of non-scalar frame arguments"),
2180 _("Show printing of non-scalar frame arguments"),
2181 NULL, NULL, NULL, &setprintlist, &showprintlist);
2182
30c33a9f
HZ
2183 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2184 &disassemble_next_line, _("\
80a0ea0f
EZ
2185Set whether to disassemble next source line or insn when execution stops."), _("\
2186Show whether to disassemble next source line or insn when execution stops."), _("\
2187If ON, GDB will display disassembly of the next source line, in addition\n\
2188to displaying the source line itself. If the next source line cannot\n\
2189be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2190will display disassembly of next instruction instead of showing the\n\
2191source line.\n\
2192If AUTO, display disassembly of next instruction only if the source line\n\
2193cannot be displayed.\n\
2194If OFF (which is the default), never display the disassembly of the next\n\
2195source line."),
30c33a9f
HZ
2196 NULL,
2197 show_disassemble_next_line,
2198 &setlist, &showlist);
a362e3d3 2199 disassemble_next_line = AUTO_BOOLEAN_FALSE;
30c33a9f 2200
c906108c 2201#if 0
1a966eab
AC
2202 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\
2203"Specify maximum number of frames for \"backtrace\" to print by default."),
c906108c 2204 &setlist);
1bedd215
AC
2205 add_info ("backtrace-limit", backtrace_limit_info, _("\
2206The maximum number of frames for \"backtrace\" to print by default."));
c906108c
SS
2207#endif
2208}
This page took 1.055588 seconds and 4 git commands to generate.