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