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