OSDN Git Service

* sigproc.h (sigframe::set): Accept a default frame pointer.
authorcgf <cgf>
Fri, 26 May 2000 06:24:58 +0000 (06:24 +0000)
committercgf <cgf>
Fri, 26 May 2000 06:24:58 +0000 (06:24 +0000)
* sigproc.cc (sig_send): Use passed in frame pointer, if appropriate.

winsup/cygwin/ChangeLog
winsup/cygwin/sigproc.cc
winsup/cygwin/sigproc.h

index f986939..fb46e6d 100644 (file)
@@ -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
index 7c18e62..b9a68af 100644 (file)
@@ -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)))
index d850ec9..581a5b5 100644 (file)
@@ -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 ();
   }