[LTP] [uclibc-ng-devel] LTP test fstatat01.c FTBFS on Buildroot bootlin-sh4-uclibc toolchain

Nadav Tasher tashernadav@gmail.com
Thu Jan 30 00:35:19 CET 2025


On Wed, Jan 29, 2025 at 11:46:31PM +0100, Petr Vorel wrote:
> Hi all,
> 
> LTP test fstatat01.c [1] FTBFS on Buildroot bootlin-sh4-uclibc toolchain
> (uclibc: 1.0.50, kernel headers: 4.19.255). It looks to me that other bootlin
> uclibc based toolchains are working, therefore it's probably sh4 problem.
> 
> Looking into include/sys/stat.h in uclibc-ng [2], extern int fstatat (int __fd,
> ...) definition is guarded only by: #  ifdef __REDIRECT_NTH.
> But in glibc io/sys/stat.h [3] guardes it with #  ifdef __USE_TIME64_REDIRECTS
> added glibc 2.40 a4ed0471d7 ("Always define __USE_TIME_BITS64 when 64 bit time_t is used")
> which replaced previous __USE_TIME_BITS64 added in in glibc 2.34 47f24c21ee [4]
> ("y2038: Add support for 64-bit time on legacy ABIs") [5]. Should similar change
> be added to uclibc-ng?
> 
> Kind regards,
> Petr
> 
> $ cd ~/br-test-pkg/bootlin-sh4-uclibc/build/ltp-testsuite-728759506cbe08612183275b3543007d1c47f7f4/testcases/kernel/syscalls/fstatat
> $ make V=1 fstatat01
> br-test-pkg/bootlin-sh4-uclibc/host/bin/sh4-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -I../../../../include -I../../../../include -I../../../../include/old/ -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -O2 -g0  -Ibr-test-pkg/bootlin-sh4-uclibc/host/bin/../sh4-buildroot-linux-uclibc/sysroot/usr/include/tirpc -g -O2 -fno-strict-aliasing -pipe -Wall -W -Wold-style-definition -std=gnu99 -L../../../../lib fstatat01.c  -Lbr-test-pkg/bootlin-sh4-uclibc/host/bin/../sh4-buildroot-linux-uclibc/sysroot/usr/lib -ltirpc -lfts -lltp -o fstatat01
> fstatat01.c:63:5: error: conflicting types for ‘fstatat’; have ‘int(int,  const char *, struct stat64 *, int)’
>    63 | int fstatat(int dirfd, const char *filename, struct stat64 *statbuf, int flags)
>       |     ^~~~~~~
> In file included from br-test-pkg/bootlin-sh4-uclibc/host/sh4-buildroot-linux-uclibc/sysroot/usr/include/features.h:409,
>                  from br-test-pkg/bootlin-sh4-uclibc/host/sh4-buildroot-linux-uclibc/sysroot/usr/include/sys/types.h:26,
>                  from fstatat01.c:27:
> br-test-pkg/bootlin-sh4-uclibc/host/sh4-buildroot-linux-uclibc/sysroot/usr/include/sys/stat.h:243:12: note: previous declaration of ‘fstatat’ with type ‘int(int,  const char * restrict,  struct stat * restrict,  int)’
>   243 | extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
>       |            ^~~~~~~~~~~~~~
> 
> [1] https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/syscalls/fstatat/fstatat01.c
> [2] https://cgit.openadk.org/cgi/cgit/uclibc-ng.git/tree/include/sys/stat.h#n247
> [3] https://sourceware.org/git/?p=glibc.git;a=blob;f=io/sys/stat.h;h=4bea9e9a7785f51af8eefd035874f475b92bb26d;hb=HEAD#l268
> [4] https://sourceware.org/git/?p=glibc.git;a=commit;h=a4ed0471d71739928a0d0fa3258b3ff3b158e9b9
> [5] https://sourceware.org/git/?p=glibc.git;a=commit;h=47f24c21ee38701ae275aa9e451f70fa3e77478c
> _______________________________________________
> devel mailing list -- devel@uclibc-ng.org
> To unsubscribe send an email to devel-leave@uclibc-ng.org
My guess is that this is somehow caused by the fact that time64 on 32-bit targets is
not supported on Linux < 5.1.0.

Regards,
Nadav


More information about the ltp mailing list