summaryrefslogtreecommitdiff
path: root/m4/free.m4
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-12-20 13:29:04 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2020-12-20 13:29:41 -0800
commit5675a2ffc6961e68f0a26750490cc25b7d8243fe (patch)
tree89338354bd7e9386175aa8857d2870ede92d2b71 /m4/free.m4
parent11355826c881b3cfb621aa1317cad58c49799eee (diff)
downloadgnulib-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.m435
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