diff options
Diffstat (limited to 'gdb/windows-tdep.h')
-rw-r--r-- | gdb/windows-tdep.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/gdb/windows-tdep.h b/gdb/windows-tdep.h index f122f7a..87a618e 100644 --- a/gdb/windows-tdep.h +++ b/gdb/windows-tdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef WINDOWS_TDEP_H -#define WINDOWS_TDEP_H +#ifndef GDB_WINDOWS_TDEP_H +#define GDB_WINDOWS_TDEP_H #include "frame-unwind.h" @@ -60,8 +60,9 @@ extern bool is_linked_with_cygwin_dll (bfd *abfd); /* Cygwin sigwapper unwinder. Unwinds signal frames over sigbe/sigdelayed. */ -struct cygwin_sigwrapper_frame_unwind : public frame_unwind +class cygwin_sigwrapper_frame_unwind : public frame_unwind { +public: explicit cygwin_sigwrapper_frame_unwind (gdb::array_view<const gdb::array_view<const gdb_byte>> patterns_list); @@ -73,6 +74,19 @@ struct cygwin_sigwrapper_frame_unwind : public frame_unwind If any pattern in the list matches, then the frame is assumed to be a sigwrapper frame. */ gdb::array_view<const gdb::array_view<const gdb_byte>> patterns_list; + + /* Calculate the frame ID of a cygwin wrapper. */ + void this_id (const frame_info_ptr &this_frame, void **this_prologue_cache, + struct frame_id *id) const override; + + /* Sniff the frame to tell if this unwinder should be used. */ + int sniff (const frame_info_ptr &this_frame, + void **this_prologue_cache) const override; + + /* Calculate the value of a given register in the previous frame. */ + struct value *prev_register (const frame_info_ptr &this_frame, + void **this_cache, + int regnum) const override; }; -#endif +#endif /* GDB_WINDOWS_TDEP_H */ |