Hi Yann, Yann Sionneau wrote,
Hi Waldemar,
It's just not clear to me what __UCLIBC_HAVE_STATX__ is supposed to mean.
Does it mean the kernel supports the syscall?
I would say yes. It is for newer architectures which only support statx like c-sky. At least that is the reason it was introduced. The old functions are not available for c-sky. Now it is also used by kvx.
Or does it mean the arch want to expose some "statx" function which wraps the statx syscall? (because statx is non POSIX and is Linux specific)
In the first scenario I would think that it seems redundant with just checking __NR_statx
It seems not to be redundant, as you can see it breaks some architectures which in newer kernels define __NR_statx, but the old functions still are available and working fine like mips64 n32.
In the second scenario I would think that even if the arch does not want to expose a statx() function in the libc, the arch would still want to wrap the "old" functions (fstatat, stat, etc) around the new statx syscall, right?
In any case I am interested in understanding which of the 2 scenario is correct: what does __UCLIBC_HAVE_STATX__ mean?
Also, indeed I can see that in other files the check is done like this `#if defined __NR_statx && defined __UCLIBC_HAVE_STATX__` but maybe we need to make sure this is correct, and if it's not, fix this.
I at least hope this is correct, yes.
I hope I'm helping and not making this more complex than it's already is :)
Is it now sufficiently explained? Can I push the change?
best regards Waldemar