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