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