Re: [Buildroot] [PATCH] package/uclibc: bump to 1.0.57

Waldemar Brodkorb
2026-03-02T21:40:36Z

Hi Julien,
Julien Olivain wrote,

> Hi Waldemar,
>
> On 02/03/2026 18:23, Waldemar Brodkorb wrote:
> > Hi Julien,
> > Julien Olivain wrote,
> >
> > > Hi Waldemar,
> > >
> > > Thanks for the patch.
> > >
> > > On 01/03/2026 13:42, Waldemar Brodkorb wrote:
> > > > Following changes made it into the release:
> > > >
> > > > Joris van Rantwijk (1):
> > > > Fix adjtimex() with TIME64
> > > >
> > > > Waldemar Brodkorb (8):
> > > > sys/stat.h: remove _STAT_VER/_MKNOD_VER
> > > > fix gettid() declaration
> > > > add statx syscall wrapper
> > >
> > > This new uclibc version is introducing a test failure
> > > with zfs. See:
> > > https://gitlab.com/jolivain/buildroot/-/jobs/13308829775
> > >
> > > Running with the previous uclibc 1.0.56 works fine:
> > > https://gitlab.com/jolivain/buildroot/-/jobs/13308875027
> > >
> > > It seems related to commit:
> > > https://github.com/wbx-github/uclibc-ng/commit/d3a819aff25af436e22abd5ba01ff2cfc0631b32
> > >
> > > Do you have any idea which component should be fixed?
> > > (uclibc, zfs, or the rutime test_xzf?)
> >
> > It is uclibc-ng fault. A fix and a patch v2 will follow.
>
> I looked a bit more into this. The statx headers for glibc and uclibc-ng
> are indeed the same:
>
> https://sourceware.org/git/?p=glibc.git;a=blob;f=io/bits/statx-generic.h;h=9bb9701dc67eccad968b338aeb15d87378fe65cd;hb=ea37298b65bd67f94c3c2640e91ec5865a5019ad#l66
>
> https://github.com/wbx-github/uclibc-ng/blob/v1.0.57/libc/sysdeps/linux/common/bits/statx.h#L88
>
> On its side, zfs is (re)defining the function slightly
> differently in its test:
> https://github.com/openzfs/zfs/blob/zfs-2.4.1/tests/zfs-tests/cmd/statx.c#L57-L59
>
> Also, this test does not include the <sys/stat.h> header. It includes
> only <fcntl.h>. In the case this test is compiled with glibc, stat.h
> is never included, so the error does not happen.
>
> For some reason, in the uclibc-ng case, sys/stat.h gets
> included from fcntl.h, generating the error. See:
> https://gitlab.com/jolivain/buildroot/-/jobs/13308829775#L237
>
> Maybe the zfs statx test should protect the statx() definition
> with a "#ifndef HAVE_STATX".
>
> Or could uclibc avoid to include sys/stat.h from fcntl.h,
> when it's not needed?
>
> What do you think?

Just in this moment I came to the same conclusion. Glibc includes
only <bits/stat.h> since commit f095bb7204d80f609a73a22796edd6cffd4c6add
in 2010. uclibc uses <sys/stat.h> since 2000.

I am actually not sure what can of worms I will open up when
changing it to <bits/stat.h>.

But the zfs test is nevertheless broken, as it always use the
fallback even if glibc provides statx(). We should change it to
check HAVE_STATX as you suggested. And the STATX_MNT_ID check
is also broken, because it is not compile with -D_GNU_SOURCE as
required for a GNU extension.

Can you report it upstream?

In the meanwhile I will sync statx headers in uClibc-ng as they are
heavily outdated. At least this was a good thing to find out.

best regards
Waldemar