Hi Bruno, On 1/3/21 3:06 AM, Bruno Haible wrote: > What was the result of > 'checking whether free is known to preserve errno...' > in your build?
"... no" > > If it was 'yes', you've got a problem with the configure test. > > If it was 'no', it seems that you are hitting this GCC bug: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98396 > LTO makes it harder to work around it. Can you try it nevertheless (by > modifying > the code in such a way that it disables the wrong optimization, especially in > lib/free.c)? hmm, I tried a couple of things like declaring the variable err as static. The only combination I found to work is: diff --git a/lib/free.c b/lib/free.c index 135c3eb..e923ee5 100644 --- a/lib/free.c +++ b/lib/free.c @@ -27,7 +27,10 @@ void rpl_free (void *p) #undef free { - int err = errno; + int err[2]; + err[0] = errno; + err[1] = errno; + errno = 0; free (p); - errno = err; + errno = err[errno==0]; } It's slow and ugly. ;-( >> BTW: I noticed that the __linux__ part of this test is only run if 'gltests' >> is the working directory, because the test relies on "test-free" being >> readable. >> Is that intended? > > Yes. Many of our tests (especially the shell scripts) assume that they get run > in the build directory. This test is no exception. Thanks & have a nice day, Berny