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