aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-09-10 09:22:19 -0300
committerAndreas K. Hüttel <dilfridge@gentoo.org>2024-10-08 17:32:13 +0200
commita67049643a14e9ba245bba56eb2d3e12eb96bf78 (patch)
treeeab2d2883df49796a2ba41de8bf7af154e57954b
parentDisable _FILE_OFFSET_BITS if the compiler defaults to it (diff)
downloadglibc-gentoo/2.39.tar.gz
glibc-gentoo/2.39.tar.bz2
glibc-gentoo/2.39.zip
Disable _TIME_BITS if the compiler defaults to itgentoo/glibc-2.39-11gentoo/2.39
Even though building glibc with 64 bit time_t flags is not supported, and the usual way is to patch the build system to avoid it; some systems do enable it by default, and it increases the requirements to build glibc in such cases (it also does not help newcomers when trying to build glibc). The conform namespace and linknamespace tests also do not expect that flag to be set by default, so disable it as well. Checked with a build/check for major ABI and some (i386, arm, mipsel, hppa) with a toolchain that has LFS flags by default. Reviewed-by: DJ Delorie <dj@redhat.com> (cherry picked from commit 4d8965f1304a205f7580fe23bb2d462828d1f8e5)
-rw-r--r--Makeconfig3
-rwxr-xr-xconfigure30
-rw-r--r--configure.ac11
-rw-r--r--conform/Makefile2
4 files changed, 45 insertions, 1 deletions
diff --git a/Makeconfig b/Makeconfig
index 86eff8686a..db51d8851a 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1006,6 +1006,9 @@ endif
# Filter out LFS flags if compiler defines it by default.
+cflags += $(no-file-offset-bits-source)
+# Filter out 64 bit time_t flags if compiler defines it by default.
++cflags += $(no-time-bits-source)
+
# Each sysdeps directory can contain header files that both will be
# used to compile and will be installed. Each can also contain an
# include/ subdirectory, whose header files will be used to compile
diff --git a/configure b/configure
index e16f588a8e..10ea2fe22f 100755
--- a/configure
+++ b/configure
@@ -642,6 +642,7 @@ libc_cv_gcc_unwind_find_fde
libc_extra_cppflags
libc_extra_cflags
libc_cv_cxx_thread_local
+no_time_bits_source
no_file_offset_bits_source
fortify_source
no_fortify_source
@@ -7568,6 +7569,35 @@ fi
config_vars="$config_vars
no-file-offset-bits-source = $no_file_offset_bits_source"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+#ifndef _TIME_BITS
+# error _TIME_BITS not defined
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ libc_cv_compiler_default_time_bits=yes
+else case e in #(
+ e) libc_cv_compiler_default_time_bits=no ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+if test "$libc_cv_compiler_default_time_bits" = yes
+then :
+ no_time_bits_source="-U_TIME_BITS"
+fi
+
+config_vars="$config_vars
+no-time-bits-source = $no_time_bits_source"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the assembler requires one version per symbol" >&5
printf %s "checking whether the assembler requires one version per symbol... " >&6; }
diff --git a/configure.ac b/configure.ac
index e1a3404475..4ff134577a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1543,6 +1543,17 @@ AS_IF([test "$libc_cv_compiler_default_file_offset_bits" = yes],
AC_SUBST(no_file_offset_bits_source)
LIBC_CONFIG_VAR([no-file-offset-bits-source], [$no_file_offset_bits_source])
+dnl Check if compiler define _TIME_BITS by default
+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
+#ifndef _TIME_BITS
+# error _TIME_BITS not defined
+#endif]])],
+ [libc_cv_compiler_default_time_bits=yes],
+ [libc_cv_compiler_default_time_bits=no])
+AS_IF([test "$libc_cv_compiler_default_time_bits" = yes],
+ [no_time_bits_source="-U_TIME_BITS"])
+AC_SUBST(no_time_bits_source)
+LIBC_CONFIG_VAR([no-time-bits-source], [$no_time_bits_source])
dnl Starting with binutils 2.35, GAS can attach multiple symbol versions
dnl to one symbol (PR 23840).
diff --git a/conform/Makefile b/conform/Makefile
index 30ceeeed51..94939d32f1 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -160,7 +160,7 @@ test-xfail-UNIX98/ndbm.h/conform = yes
test-xfail-XOPEN2K/ndbm.h/conform = yes
test-xfail-XOPEN2K8/ndbm.h/conform = yes
-conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I.. $(no-file-offset-bits-source)
+conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I.. $(no-file-offset-bits-source) $(no-time-bits-source)
# conformtest-xfail-conds may be set by a sysdeps Makefile fragment to
# a list of conditions that are considered to be true when encountered
# in xfail[cond]- lines in test expectations.