From: Xi Ruoyao Date: Wed, 22 Jul 2026 11:26:10 +0000 (+0800) Subject: io: fix ftw ABI on MIPS n64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6758def7171;p=thirdparty%2Fglibc.git io: fix ftw ABI on MIPS n64 On MIPS n64 off_t is same as off64_t, but struct stat is not same as struct stat64 (very peculiar but see the "as tempting as it..." comment in linux/mips/kernel_stat.h). As the ftw/ftw64 callback accepts a pointer to a function who accepts struct stat/stat64, for MIPS n64 we must use different implementations for ftw and ftw64. Thus for testing if ftw64 can be aliased to ftw, we should check XSTAT_IS_XSTAT64 instead of __OFF_T_MATCHES_OFF64_T. This resolves the io/tst-ftw-lnk failure observed on MIPS n64. Link: https://sourceware.org/glibc/wiki/Testing/Tests/io/tst-ftw-lnk Signed-off-by: Xi Ruoyao Reviewed-by: Adhemerval Zanella --- diff --git a/io/ftw.c b/io/ftw.c index ed0eeb3904..a9368a706e 100644 --- a/io/ftw.c +++ b/io/ftw.c @@ -18,7 +18,9 @@ #include -#ifndef __OFF_T_MATCHES_OFF64_T +#include + +#if !XSTAT_IS_XSTAT64 # include "ftw-common.c" versioned_symbol (libc, __new_nftw, nftw, GLIBC_2_3_3); diff --git a/io/ftw64.c b/io/ftw64.c index d3cd14c21a..fa7b05df22 100644 --- a/io/ftw64.c +++ b/io/ftw64.c @@ -31,6 +31,9 @@ #define ftw __rename_ftw #define nftw __rename_nftw +#include + +#include #include #include "ftw-common.c" @@ -44,7 +47,7 @@ versioned_symbol (libc, __new_nftw64, nftw64, GLIBC_2_3_3); compat_symbol (libc, __old_nftw64, nftw64, GLIBC_2_1); #endif -#ifdef __OFF_T_MATCHES_OFF64_T +#if XSTAT_IS_XSTAT64 weak_alias (__ftw64, ftw) versioned_symbol (libc, __new_nftw64, nftw, GLIBC_2_3_3); # if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_3_3)