Source: glibc Followup-For: Bug #1079443 X-Debbugs-Cc: tj.iam...@proton.me fts_* functions, and fts_read() -> fts_build() end up calling
> sysdeps/unix/sysv/linux/readdir.c: #if !_DIRENT_MATCHES_DIRENT64 __readdir_unlocked() So follow this back to see why it is (not) set (on armhf) > sysdeps/unix/sysv/linux/bits/dirent.h: #if defined __OFF_T_MATCHES_OFF64_T && defined __INO_T_MATCHES_INO64_T /* Inform libc code that these two types are effectively identical. */ # define _DIRENT_MATCHES_DIRENT64 1 #else # define _DIRENT_MATCHES_DIRENT64 0 #endif > sysdeps/unix/sysv/linux/bits/typesizes.h: #if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32) /* Tell the libc code that off_t and off64_t are actually the same type for all ABI purposes, even if possibly expressed as different base types for C type-checking purposes. */ # define __OFF_T_MATCHES_OFF64_T 1 /* Same for ino_t and ino64_t. */ # define __INO_T_MATCHES_INO64_T 1 > sysdeps/unix/sysv/linux/arm/bits/timesize.h: #define __TIMESIZE 32 > or bits/timesize.h: #define __TIMESIZE 64 > sysdeps/wordsize-32/bits/wordsize.h: #define __WORDSIZE 32 > sysdeps/wordsize-64/bits/wordsize.h: #define __WORDSIZE 64 Debian 2.39-7 build log: $ getbuildlog glibc 2.39-7 armhf ... echo -n "Build started: " ; date --rfc-2822; \ echo "---------------"; \ cd build-tree/armhf-libc && \ CC="arm-linux-gnueabihf-gcc-13 -U_FILE_OFFSET_BITS -U_TIME_BITS" \ CXX="arm-linux-gnueabihf-g++-13 -U_FILE_OFFSET_BITS -U_TIME_BITS" \ ... and gcc's options have early in their list: -I../sysdeps/unix/sysv/linux/arm that likely means any #include <bits/timesize.h> will be using > sysdeps/unix/sysv/linux/arm/bits/timesize.h: #define __TIMESIZE 32