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

Reply via email to