From d15cf102d4d7bcb4e2ce16a80d10f1efd7038273 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 19 Jun 2023 14:08:06 -0700 Subject: [PATCH] largefile: port to GNU/Linux alpha and s390x This patch syncs from Autoconf master. Problem reported by Matoro . * lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_CODE): New overridable macro FTYPE, to test types other than off_t. (_AC_SYS_LARGEFILE_TEST_CODE): Test ino_t for -D_FILE_OFFSETBITS=64 too, if no flags are needed for off_t. Needed for GNU/Linux on alpha and s390x. --- ChangeLog | 11 +++++++++++ m4/largefile.m4 | 23 ++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 830113e0e2..e9cb20c330 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2023-06-19 Paul Eggert + + largefile: port to GNU/Linux s390x and alpha + This patch syncs from Autoconf master. + Problem reported by Matoro . + * lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_CODE): + New overridable macro FTYPE, to test types other than off_t. + (_AC_SYS_LARGEFILE_TEST_CODE): Test ino_t for + -D_FILE_OFFSETBITS=64 too, if no flags are needed for off_t. + Needed for GNU/Linux on alpha and s390x. + 2023-06-15 Bruno Haible aligned-malloc, rmdir-errno: Sanitize configuration test result. diff --git a/m4/largefile.m4 b/m4/largefile.m4 index 42c2f9780c..de55f6353c 100644 --- a/m4/largefile.m4 +++ b/m4/largefile.m4 @@ -1,7 +1,7 @@ # Enable large files on systems where this is not the default. # Enable support for files on Linux file systems with 64-bit inode numbers. -# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc. +# Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -210,13 +210,16 @@ AC_DEFUN([AC_SYS_YEAR2038], # C code used to probe for large file support. m4_define([_AC_SYS_LARGEFILE_TEST_CODE], [@%:@include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) ? 1 : -1]];[]dnl ]) @@ -254,7 +257,13 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], AS_IF([test x"$ac_opt" != x"none needed"], [CC="$ac_save_CC $ac_opt"]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], - [ac_cv_sys_largefile_opts="$ac_opt" + [AS_IF([test x"$ac_opt" = x"none needed"], + [# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. + CC="$CC -DFTYPE=ino_t" + AC_COMPILE_IFELSE([], [], + [CC="$CC -D_FILE_OFFSET_BITS=64" + AC_COMPILE_IFELSE([], [ac_opt='-D_FILE_OFFSET_BITS=64'])])]) + ac_cv_sys_largefile_opts=$ac_opt ac_opt_found=yes]) test $ac_opt_found = no || break done -- 2.39.5