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