diff options
author | Christopher Faylor <me@cgf.cx> | 2000-05-26 06:24:58 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-05-26 06:24:58 +0000 |
commit | e1e61b9ae5921d8f97f8089c53a281839224b3ed (patch) | |
tree | 1e2ea55938ec044baef435ffdad353d78ef6d435 /winsup/cygwin | |
parent | 6880ecefaaa4f2f081809b52f5f35b26b17526b0 (diff) | |
download | cygnal-e1e61b9ae5921d8f97f8089c53a281839224b3ed.tar.gz cygnal-e1e61b9ae5921d8f97f8089c53a281839224b3ed.tar.bz2 cygnal-e1e61b9ae5921d8f97f8089c53a281839224b3ed.zip |
* sigproc.h (sigframe::set): Accept a default frame pointer.
* sigproc.cc (sig_send): Use passed in frame pointer, if appropriate.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/sigproc.cc | 2 | ||||
-rw-r--r-- | 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 <cgf@cygnus.com> + + * 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 <cgf@cygnus.com> * 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 (); } |