aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2023-10-31 13:07:36 +0100
committerCorinna Vinschen <corinna@vinschen.de>2023-10-31 13:29:15 +0100
commit97a975dac2dee9640964f54fa9693f0295c2363c (patch)
tree8886c6a801e537d192514337d3394966b46e3970
parentf0c90d3a8aa4409608abe76e035eab5919133a61 (diff)
downloadnewlib-97a975dac2dee9640964f54fa9693f0295c2363c.zip
newlib-97a975dac2dee9640964f54fa9693f0295c2363c.tar.gz
newlib-97a975dac2dee9640964f54fa9693f0295c2363c.tar.bz2
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>
-rw-r--r--winsup/cygwin/cygwin.din2
-rw-r--r--winsup/cygwin/release/3.4.103
2 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din
index be40426..c70380f 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 c752839..ec28cdf 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