diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2020-12-20 13:29:04 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2020-12-20 13:29:41 -0800 |
commit | 5675a2ffc6961e68f0a26750490cc25b7d8243fe (patch) | |
tree | 89338354bd7e9386175aa8857d2870ede92d2b71 /m4/free.m4 | |
parent | 11355826c881b3cfb621aa1317cad58c49799eee (diff) | |
download | gnulib-5675a2ffc6961e68f0a26750490cc25b7d8243fe.tar.gz |
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.
Diffstat (limited to 'm4/free.m4')
-rw-r--r-- | m4/free.m4 | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/m4/free.m4 b/m4/free.m4 index 53df7439b5..bf9fc31d9b 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 <https://sourceware.org/bugzilla/show_bug.cgi?id=17924> dnl * OpenBSD >= 4.5, thanks to this commit: dnl <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdlib/malloc.c.diff?r1=1.100&r2=1.101&f=h> 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 <stdlib.h> + ]], + [[#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 |