xref: /dflybsd-src/contrib/gdb-7/gdb/inline-frame.h (revision 5796c8dc12c637f18a1740c26afd8d40ffa9b719)
1*5796c8dcSSimon Schubert /* Definitions for inline frame support.
2*5796c8dcSSimon Schubert 
3*5796c8dcSSimon Schubert    Copyright (C) 2008 Free Software Foundation, Inc.
4*5796c8dcSSimon Schubert 
5*5796c8dcSSimon Schubert    This file is part of GDB.
6*5796c8dcSSimon Schubert 
7*5796c8dcSSimon Schubert    This program is free software; you can redistribute it and/or modify
8*5796c8dcSSimon Schubert    it under the terms of the GNU General Public License as published by
9*5796c8dcSSimon Schubert    the Free Software Foundation; either version 3 of the License, or
10*5796c8dcSSimon Schubert    (at your option) any later version.
11*5796c8dcSSimon Schubert 
12*5796c8dcSSimon Schubert    This program is distributed in the hope that it will be useful,
13*5796c8dcSSimon Schubert    but WITHOUT ANY WARRANTY; without even the implied warranty of
14*5796c8dcSSimon Schubert    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*5796c8dcSSimon Schubert    GNU General Public License for more details.
16*5796c8dcSSimon Schubert 
17*5796c8dcSSimon Schubert    You should have received a copy of the GNU General Public License
18*5796c8dcSSimon Schubert    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19*5796c8dcSSimon Schubert 
20*5796c8dcSSimon Schubert #if !defined (INLINE_FRAME_H)
21*5796c8dcSSimon Schubert #define INLINE_FRAME_H 1
22*5796c8dcSSimon Schubert 
23*5796c8dcSSimon Schubert struct frame_info;
24*5796c8dcSSimon Schubert struct frame_unwind;
25*5796c8dcSSimon Schubert 
26*5796c8dcSSimon Schubert /* The inline frame unwinder.  */
27*5796c8dcSSimon Schubert 
28*5796c8dcSSimon Schubert extern const struct frame_unwind *const inline_frame_unwind;
29*5796c8dcSSimon Schubert 
30*5796c8dcSSimon Schubert /* Skip all inlined functions whose call sites are at the current PC.
31*5796c8dcSSimon Schubert    Frames for the hidden functions will not appear in the backtrace until the
32*5796c8dcSSimon Schubert    user steps into them.  */
33*5796c8dcSSimon Schubert 
34*5796c8dcSSimon Schubert void skip_inline_frames (ptid_t ptid);
35*5796c8dcSSimon Schubert 
36*5796c8dcSSimon Schubert /* Forget about any hidden inlined functions in PTID, which is new or
37*5796c8dcSSimon Schubert    about to be resumed.  If PTID is minus_one_ptid, forget about all
38*5796c8dcSSimon Schubert    hidden inlined functions.  */
39*5796c8dcSSimon Schubert 
40*5796c8dcSSimon Schubert void clear_inline_frame_state (ptid_t ptid);
41*5796c8dcSSimon Schubert 
42*5796c8dcSSimon Schubert /* Step into an inlined function by unhiding it.  */
43*5796c8dcSSimon Schubert 
44*5796c8dcSSimon Schubert void step_into_inline_frame (ptid_t ptid);
45*5796c8dcSSimon Schubert 
46*5796c8dcSSimon Schubert /* Return the number of hidden functions inlined into the current
47*5796c8dcSSimon Schubert    frame.  */
48*5796c8dcSSimon Schubert 
49*5796c8dcSSimon Schubert int inline_skipped_frames (ptid_t ptid);
50*5796c8dcSSimon Schubert 
51*5796c8dcSSimon Schubert /* If one or more inlined functions are hidden, return the symbol for
52*5796c8dcSSimon Schubert    the function inlined into the current frame.  */
53*5796c8dcSSimon Schubert 
54*5796c8dcSSimon Schubert struct symbol *inline_skipped_symbol (ptid_t ptid);
55*5796c8dcSSimon Schubert 
56*5796c8dcSSimon Schubert /* Return the number of functions inlined into THIS_FRAME.  Some of
57*5796c8dcSSimon Schubert    the callees may not have associated frames (see
58*5796c8dcSSimon Schubert    skip_inline_frames).  */
59*5796c8dcSSimon Schubert 
60*5796c8dcSSimon Schubert int frame_inlined_callees (struct frame_info *this_frame);
61*5796c8dcSSimon Schubert 
62*5796c8dcSSimon Schubert #endif /* !defined (INLINE_FRAME_H) */
63