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