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