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