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