From e1e61b9ae5921d8f97f8089c53a281839224b3ed Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 26 May 2000 06:24:58 +0000 Subject: [PATCH] * sigproc.h (sigframe::set): Accept a default frame pointer. * sigproc.cc (sig_send): Use passed in frame pointer, if appropriate. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/sigproc.cc | 2 +- winsup/cygwin/sigproc.h | 9 ++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f98693911..fb46e6d80 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Fri May 26 02:23:35 2000 Christopher Faylor + + * sigproc.h (sigframe::set): Accept a default frame pointer. + * sigproc.cc (sig_send): Use passed in frame pointer, if appropriate. + Thu May 25 17:44:25 2000 Christopher Faylor * dir.cc (rmdir): Use file attributes that have already been discovered diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 7c18e6259..b9a68af73 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -755,7 +755,7 @@ sig_send (pinfo *p, int sig, DWORD ebp) { thiscatch = sigcatch_main; thiscomplete = sigcomplete_main; - thisframe.set (mainthread); + thisframe.set (mainthread, 1, ebp); } } else if (!(thiscatch = getsem (p, "sigcatch", 0, 0))) diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h index d850ec923..581a5b5bd 100644 --- a/winsup/cygwin/sigproc.h +++ b/winsup/cygwin/sigproc.h @@ -49,12 +49,15 @@ private: sigthread *st; public: - void set (sigthread &t, int up = 1) + void set (sigthread &t, int up = 1, DWORD ebp = 0) { t.lock->acquire (); st = &t; - t.frame = (DWORD) (up ? __builtin_frame_address (1) : - __builtin_frame_address (0)); + if (ebp) + t.frame = ebp; + else + t.frame = (DWORD) (up ? __builtin_frame_address (1) : + __builtin_frame_address (0)); t.lock->release (); } -- 2.43.5