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