summaryrefslogtreecommitdiffstats
path: root/gl/m4/malloc.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gl/m4/malloc.m4')
-rw-r--r--gl/m4/malloc.m479
1 files changed, 68 insertions, 11 deletions
diff --git a/gl/m4/malloc.m4 b/gl/m4/malloc.m4
index 910ac92..4b24a0b 100644
--- a/gl/m4/malloc.m4
+++ b/gl/m4/malloc.m4
@@ -1,25 +1,78 @@
1# malloc.m4 serial 9 1# malloc.m4 serial 14
2dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. 2dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved. 5dnl with or without modifications, as long as this notice is preserved.
6 6
7m4_version_prereq([2.70], [] ,[
8
9# This is taken from the following Autoconf patch:
10# http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9
11AC_DEFUN([_AC_FUNC_MALLOC_IF],
12[
13 AC_REQUIRE([AC_HEADER_STDC])dnl
14 AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
15 AC_CHECK_HEADERS([stdlib.h])
16 AC_CACHE_CHECK([for GNU libc compatible malloc],
17 [ac_cv_func_malloc_0_nonnull],
18 [AC_RUN_IFELSE(
19 [AC_LANG_PROGRAM(
20 [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H
21 # include <stdlib.h>
22 #else
23 char *malloc ();
24 #endif
25 ]],
26 [[return ! malloc (0);]])
27 ],
28 [ac_cv_func_malloc_0_nonnull=yes],
29 [ac_cv_func_malloc_0_nonnull=no],
30 [case "$host_os" in
31 # Guess yes on platforms where we know the result.
32 *-gnu* | freebsd* | netbsd* | openbsd* \
33 | hpux* | solaris* | cygwin* | mingw*)
34 ac_cv_func_malloc_0_nonnull=yes ;;
35 # If we don't know, assume the worst.
36 *) ac_cv_func_malloc_0_nonnull=no ;;
37 esac
38 ])
39 ])
40 AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2])
41])# _AC_FUNC_MALLOC_IF
42
43])
44
45# gl_FUNC_MALLOC_GNU
46# ------------------
47# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
48# it is not.
49AC_DEFUN([gl_FUNC_MALLOC_GNU],
50[
51 AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
52 dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
53 _AC_FUNC_MALLOC_IF(
54 [AC_DEFINE([HAVE_MALLOC_GNU], [1],
55 [Define to 1 if your system has a GNU libc compatible 'malloc'
56 function, and to 0 otherwise.])],
57 [AC_DEFINE([HAVE_MALLOC_GNU], [0])
58 REPLACE_MALLOC=1
59 ])
60])
61
7# gl_FUNC_MALLOC_POSIX 62# gl_FUNC_MALLOC_POSIX
8# -------------------- 63# --------------------
9# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it 64# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
10# fails), and replace malloc if it is not. 65# fails), and replace malloc if it is not.
11AC_DEFUN([gl_FUNC_MALLOC_POSIX], 66AC_DEFUN([gl_FUNC_MALLOC_POSIX],
12[ 67[
68 AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
13 AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) 69 AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
14 if test $gl_cv_func_malloc_posix = yes; then 70 if test $gl_cv_func_malloc_posix = yes; then
15 HAVE_MALLOC_POSIX=1
16 AC_DEFINE([HAVE_MALLOC_POSIX], [1], 71 AC_DEFINE([HAVE_MALLOC_POSIX], [1],
17 [Define if the 'malloc' function is POSIX compliant.]) 72 [Define if the 'malloc' function is POSIX compliant.])
18 else 73 else
19 AC_LIBOBJ([malloc]) 74 REPLACE_MALLOC=1
20 HAVE_MALLOC_POSIX=0
21 fi 75 fi
22 AC_SUBST([HAVE_MALLOC_POSIX])
23]) 76])
24 77
25# Test whether malloc, realloc, calloc are POSIX compliant, 78# Test whether malloc, realloc, calloc are POSIX compliant,
@@ -32,10 +85,14 @@ AC_DEFUN([gl_CHECK_MALLOC_POSIX],
32 dnl It is too dangerous to try to allocate a large amount of memory: 85 dnl It is too dangerous to try to allocate a large amount of memory:
33 dnl some systems go to their knees when you do that. So assume that 86 dnl some systems go to their knees when you do that. So assume that
34 dnl all Unix implementations of the function are POSIX compliant. 87 dnl all Unix implementations of the function are POSIX compliant.
35 AC_TRY_COMPILE([], 88 AC_COMPILE_IFELSE(
36 [#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ 89 [AC_LANG_PROGRAM(
37 choke me 90 [[]],
38 #endif 91 [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
39 ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no]) 92 choke me
93 #endif
94 ]])],
95 [gl_cv_func_malloc_posix=yes],
96 [gl_cv_func_malloc_posix=no])
40 ]) 97 ])
41]) 98])