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