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