[newlib-cygwin/cygwin-3_4-branch] Cygwin: let feraiseexcept actually raise an exception

Corinna Vinschen corinna@sourceware.org
Tue Oct 31 12:31:54 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=97a975dac2dee9640964f54fa9693f0295c2363c

commit 97a975dac2dee9640964f54fa9693f0295c2363c
Author:     Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Tue Oct 31 13:07:36 2023 +0100
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Tue Oct 31 13:29:15 2023 +0100

    Cygwin: let feraiseexcept actually raise an exception
    
    The exception handling inside of Cygwin functions marked as SIGFE
    covers exceptions and lets the library code handle them gracefully.
    If these functions want to raise an exception, they have to send a
    signal explicitely via raise(3).
    
    That's not what we want in feraiseexcept(). It triggers a floating
    point exception explicitely by calling the i387 op "fwait".  Being
    marked as SIGFE, this exception will be suppressed and the normal
    exception handling won't kick in.
    
    Fix this by moving feraiseexcept into the NOSIGFE realm.
    
    Fixes: 0f81b5d4bcaa ("* Makefile.in (DLL_OFILES): Add new fenv.o module.")
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/cygwin.din     | 2 +-
 winsup/cygwin/release/3.4.10 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din
index be404263e605..c70380fe83fb 100644
--- a/winsup/cygwin/cygwin.din
+++ b/winsup/cygwin/cygwin.din
@@ -532,7 +532,7 @@ fegetround NOSIGFE
 feholdexcept SIGFE
 feof SIGFE
 feof_unlocked SIGFE
-feraiseexcept SIGFE
+feraiseexcept NOSIGFE
 ferror SIGFE
 ferror_unlocked SIGFE
 fesetenv SIGFE
diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10
index c75283991461..ec28cdf7e791 100644
--- a/winsup/cygwin/release/3.4.10
+++ b/winsup/cygwin/release/3.4.10
@@ -6,3 +6,6 @@ Bug Fixes
 
 - Fix hang in process initialization if cwd is unreadable.
   Addresses: https://cygwin.com/pipermail/cygwin/2023-October/254604.html
+
+- Let feraiseexcept actually raise an exception.
+  Addresses: https://cygwin.com/pipermail/cygwin/2023-October/254667.html


More information about the Cygwin-cvs mailing list