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