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