>From 493c37a7ba0cb0f461ffbcd3b1d9a20e5e58f656 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 20 Dec 2020 13:29:04 -0800 Subject: [PATCH] free-posix: assume glibc 2.33 fixes this. * m4/free.m4 (gl_FUNC_FREE): Assume glibc 2.33+ is fixed. Use compile-time test rather than guessing for cross-builds. --- ChangeLog | 6 ++++++ m4/free.m4 | 35 +++++++++++++++++------------------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index d21388a99..c281ec439 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2020-12-20 Paul Eggert + + free-posix: assume glibc 2.33 fixes this. + * m4/free.m4 (gl_FUNC_FREE): Assume glibc 2.33+ is fixed. + Use compile-time test rather than guessing for cross-builds. + 2020-12-20 Bruno Haible backupfile: Fix compilation error on native Windows (regr. 2018-10-23). diff --git a/m4/free.m4 b/m4/free.m4 index 53df7439b..bf9fc31d9 100644 --- a/m4/free.m4 +++ b/m4/free.m4 @@ -1,4 +1,4 @@ -# free.m4 serial 4 +# free.m4 serial 5 # Copyright (C) 2003-2005, 2009-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9,12 +9,13 @@ AC_DEFUN([gl_FUNC_FREE], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) dnl In the next release of POSIX, free must preserve errno. dnl https://www.austingroupbugs.net/view.php?id=385 dnl https://sourceware.org/bugzilla/show_bug.cgi?id=17924 - dnl So far, we know of two platforms that do this: + dnl So far, we know of three platforms that do this: + dnl * glibc >= 2.33, thanks to the fix for this bug: + dnl dnl * OpenBSD >= 4.5, thanks to this commit: dnl dnl * Solaris, because its malloc() implementation is based on brk(), @@ -23,21 +24,19 @@ AC_DEFUN([gl_FUNC_FREE], dnl documentation, or by code inspection of the free() implementation in libc. AC_CACHE_CHECK([whether free is known to preserve errno], [gl_cv_func_free_preserves_errno], - [case "$host_os" in - # Say yes only if we know it. - openbsd* | solaris*) - gl_cv_func_free_preserves_errno=yes - ;; - # It's no on Linux, for implementations that call munmap(), due to - # /proc/sys/vm/max_map_count. - linux*) - gl_cv_func_free_preserves_errno=no - ;; - # If we don't know, obey --enable-cross-guesses. - *) - gl_cv_func_free_preserves_errno="$gl_cross_guess_normal" - ;; - esac + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[#if 2 < __GLIBC__ + (33 <= __GLIBC_MINOR__) + #elif defined __OpenBSD__ + #elif defined __sun + #else + #error "'free' is not known to preserve errno" + #endif + ]])], + [gl_cv_func_free_preserves_errno=yes], + [gl_cv_func_free_preserves_errno=no]) ]) case $gl_cv_func_free_preserves_errno in -- 2.27.0