Re: API levels and functions on Android

2023-01-18 Thread Paul Eggert
On 1/18/23 15:23, Bruno Haible wrote: Defining REPLACE_GLOB=1 despite HAVE_GLOB=0 will be the way to make Gnulib define 'rpl_glob' instead of 'glob', so that there is no conflict with libc.so. I still need to work out the details how this would/will work. So as to do things correctly on

Re: Making _Noreturn a no-op in < Clang 16?

2023-01-18 Thread Paul Eggert
The problem we found in Gawk was that this sort of function call: (b ? f : g) (x) is mishandled by Clang < 16 when one function is _Noreturn and the other isn't, in that Clang mistakenly treats the call as if both functions are _Noreturn. I expect this sort of issue to be reasonably

Making _Noreturn a no-op in < Clang 16?

2023-01-18 Thread Sam James
Hi all, Over on bug-gawk, we ended up finding that Clang was miscompiling certain expressions involving _Noreturn. This is fixed in Clang's git repo but not in any released version. It should be in 16.0. Paul suggested [0] that gnulib ought to #define _Noreturn to blank for known-broken Clang

Re: Follow up to last post

2023-01-18 Thread Po Lu
Paul Eggert writes: > On 1/18/23 05:53, Po Lu wrote: >> + gl_CHECK_FUNCS_ANDROID([utimensat], [[#include ]]) >> if test $ac_cv_func_utimensat = no; then >> HAVE_UTIMENSAT=0 >> +REPLACE_UTIMENSAT=1 > > REPLACE_UTIMENSAT=1 means utimensat is present but broken and needs to > be

Re: API levels and functions on Android

2023-01-18 Thread Bruno Haible
Paul Eggert wrote: > > + gl_CHECK_FUNCS_ANDROID([utimensat], [[#include ]]) > > if test $ac_cv_func_utimensat = no; then > > HAVE_UTIMENSAT=0 > > +REPLACE_UTIMENSAT=1 > > REPLACE_UTIMENSAT=1 means utimensat is present but broken and needs to > be replaced. However,

Re: More Android patches

2023-01-18 Thread Bruno Haible
Po Lu wrote: > With the NDK 16.1.4479499 and __ANDROID_API__ set to 8, utimensat and > ftruncate appear in libc.so but not in the system headers. Thanks for the report. The problem, however, is much larger than these two symbols. Previously I handled the __INTRODUCED_IN that I found in the Termux

Re: Follow up to last post

2023-01-18 Thread Paul Eggert
On 1/18/23 05:53, Po Lu wrote: + gl_CHECK_FUNCS_ANDROID([utimensat], [[#include ]]) if test $ac_cv_func_utimensat = no; then HAVE_UTIMENSAT=0 +REPLACE_UTIMENSAT=1 REPLACE_UTIMENSAT=1 means utimensat is present but broken and needs to be replaced. However, $ac_cv_func_utimensat

Follow up to last post

2023-01-18 Thread Po Lu
Okay, the problem seems to be a little more involved than I initially thought. Apparently, it is not ok to use gl_CHECK_FUNCS_ANDROID without removing utimensat from AC_CHECK_FUNCS_ONCE, because the latter will define HAVE_UTIMENSAT, leading to a build failure later (I only found this after

More Android patches

2023-01-18 Thread Po Lu
With the NDK 16.1.4479499 and __ANDROID_API__ set to 8, utimensat and ftruncate appear in libc.so but not in the system headers. This patch seems to fix the problem, except for one part: REPLACE_UTIMENSAT is not defined. Would adding: REPLACE_UTIMENSAT=1 to the "ac_cv_func_utimensat" = no

getcwd: Speed up on Linux. Add support for Android.

2023-01-18 Thread Bruno Haible
On Android, in the Termux app, I see a test failure: FAIL: test-getcwd.sh FAIL test-getcwd.sh (exit status: 5) What happens, in the test_long_name() function of this test: - The directory in which the test is run is