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