]> sourceware.org Git - glibc.git/commitdiff
Disable _TIME_BITS if the compiler defaults to it
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 10 Sep 2024 12:22:19 +0000 (09:22 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 1 Oct 2024 11:44:41 +0000 (08:44 -0300)
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>
Makeconfig
configure
configure.ac
conform/Makefile

index c0c89e668567f9d94066fb2badfff4c856924f11..a0abc2239b2875233020972eea36f5919e0332e7 100644 (file)
@@ -1014,6 +1014,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
index 5b9cc51067c2c4e12a362ca24dc6a05b4045bd4f..9c0c0dce032553fa4daaa2f5052b25e4007f4bd3 100755 (executable)
--- a/configure
+++ b/configure
@@ -635,6 +635,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
@@ -7815,6 +7816,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; }
index 160c86341636e5f74f8bec81b266e8205fff5d08..d5a00461ffad9d99913e55521c81962319516481 100644 (file)
@@ -1576,6 +1576,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).
index 50293a195b335916b97a340e2a20a358e7c7d1e4..57a1f5b546fda355f2269be56030ac315d07ce9d 100644 (file)
@@ -372,7 +372,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.
This page took 0.052148 seconds and 5 git commands to generate.