summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-05-26 06:24:58 +0000
committerChristopher Faylor <me@cgf.cx>2000-05-26 06:24:58 +0000
commite1e61b9ae5921d8f97f8089c53a281839224b3ed (patch)
tree1e2ea55938ec044baef435ffdad353d78ef6d435 /winsup/cygwin
parent6880ecefaaa4f2f081809b52f5f35b26b17526b0 (diff)
downloadcygnal-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/ChangeLog5
-rw-r--r--winsup/cygwin/sigproc.cc2
-rw-r--r--winsup/cygwin/sigproc.h9
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 ();
}