2012-04-18 Pedro Alves <palves@redhat.com>
[external/binutils.git] / gdb / inline-frame.h
1 /* Definitions for inline frame support.
2
3    Copyright (C) 2008-2012 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 #if !defined (INLINE_FRAME_H)
21 #define INLINE_FRAME_H 1
22
23 struct frame_info;
24 struct frame_unwind;
25
26 /* The inline frame unwinder.  */
27
28 extern const struct frame_unwind inline_frame_unwind;
29
30 /* Skip all inlined functions whose call sites are at the current PC.
31    Frames for the hidden functions will not appear in the backtrace until the
32    user steps into them.  */
33
34 void skip_inline_frames (ptid_t ptid);
35
36 /* Forget about any hidden inlined functions in PTID, which is new or
37    about to be resumed.  If PTID is minus_one_ptid, forget about all
38    hidden inlined functions.  */
39
40 void clear_inline_frame_state (ptid_t ptid);
41
42 /* Step into an inlined function by unhiding it.  */
43
44 void step_into_inline_frame (ptid_t ptid);
45
46 /* Return the number of hidden functions inlined into the current
47    frame.  */
48
49 int inline_skipped_frames (ptid_t ptid);
50
51 /* If one or more inlined functions are hidden, return the symbol for
52    the function inlined into the current frame.  */
53
54 struct symbol *inline_skipped_symbol (ptid_t ptid);
55
56 /* Return the number of functions inlined into THIS_FRAME.  Some of
57    the callees may not have associated frames (see
58    skip_inline_frames).  */
59
60 int frame_inlined_callees (struct frame_info *this_frame);
61
62 #endif /* !defined (INLINE_FRAME_H) */