Re: [PATCH] math: Fix unsupported check in test-narrowing-trap
Carlos O'Donell <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Organization | Red Hat, LLC. |
| Message-ID | <[email protected]> |
On 7/16/26 10:01 AM, Yury Khrustalev wrote: > --- > > Base commit: af51ed63d0 This was discussed on the Monday patch queue review in the context of the glibc 2.44 release. Andreas and I discussed that this is a test-only change and Andreas approved downthread. This patch is OK if you add the WIFEXITED check. Reviewed-by: Carlos O'Donell <[email protected]> > > Test change only. Passes regression on aarch64-linux-gnu, > x86_64-linux-gnu, i686-linux-gnu and build-tested for > several targets with build-many-glibcs.py. > > Andreas, I suppose we could merge this test fix now? It's OK if not. > > --- > math/test-narrowing-trap.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/math/test-narrowing-trap.c b/math/test-narrowing-trap.c > index 6d21357913..5820de42ad 100644 > --- a/math/test-narrowing-trap.c > +++ b/math/test-narrowing-trap.c > @@ -22,6 +22,7 @@ > #include <stdlib.h> > #include <support/check.h> > #include <support/xunistd.h> > +#include <support/test-driver.h> OK. Required. > > static int > do_test (void) > @@ -29,14 +30,14 @@ do_test (void) > #ifdef FE_INVALID > pid_t pid; > > - if (!EXCEPTION_ENABLE_SUPPORTED (FE_INVALID)) > - FAIL_UNSUPPORTED ("feenableexcept (FE_INVALID) not supported"); > - > pid = xfork (); > if (pid == 0) > { > int r = feenableexcept (FE_INVALID); > > + if (!EXCEPTION_ENABLE_SUPPORTED (FE_INVALID) && r == -1) > + FAIL_UNSUPPORTED ("feenableexcept (FE_INVALID) not supported"); OK. This converts a compile time test for an optional feature into a runtime test for an optional feature. We previously had: * Mark test UNSUPPORTED if feature is optional Now we have: * Mark test UNSUPPORTED if feature is optional and at runtime we detect it is mising. This is a better outcome and allows the test to run on more aarch64 systems. > + > TEST_COMPARE (r, 0); > fdiv (0.0, 0.0); > _exit (0); > @@ -46,6 +47,9 @@ do_test (void) > int status; > xwaitpid (pid, &status, 0); > > + if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) Nit: POSIX requires "WIFEXITED (status) && WEXITSTATUS (status) == EXIT_UNSUPPORTED" Caught by LLM. Yes, there are fixes we should do in the tree for this. > + FAIL_UNSUPPORTED ("feenableexcept (FE_INVALID) not supported"); OK. > + > TEST_VERIFY (WIFSIGNALED (status)); > TEST_COMPARE (WTERMSIG (status), SIGFPE); > } -- Cheers, Carlos.