LTP test fstatat01.c FTBFS on Buildroot bootlin-sh4-uclibc toolchain

Petr Vorel <[email protected]>
Newsgroups gmane.linux.ltp,gmane.comp.lib.uclibc-ng,gmane.linux.ports.sh.devel
Message-ID <20250129224631.GA452802@pevik>
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

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.