[PATCH] Use a configure test to detect the form of malloc_usable_size in malloc.h
Jason Evans
jasone at canonware.com
Tue May 27 15:44:15 PDT 2014
On May 21, 2014, at 6:40 AM, Mike Hommey <mh+jemalloc at glandium.org> wrote:
> On Wed, May 21, 2014 at 10:37:26PM +0900, Mike Hommey wrote:
>> From: Mike Hommey <mh at glandium.org>
>>
>> ---
>> configure.ac | 18 ++++++++++++++++--
>> 1 file changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index 57015d1..0a3d8a8 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -258,7 +258,6 @@ dnl Define cpp macros in CPPFLAGS, rather than doing AC_DEFINE(macro), since the
>> dnl definitions need to be seen before any headers are included, which is a pain
>> dnl to make happen otherwise.
>> default_munmap="1"
>> -JEMALLOC_USABLE_SIZE_CONST="const"
>> case "${host}" in
>> *-*-darwin*)
>> CFLAGS="$CFLAGS"
>> @@ -286,7 +285,6 @@ case "${host}" in
>> AC_DEFINE([JEMALLOC_HAS_ALLOCA_H])
>> AC_DEFINE([JEMALLOC_PURGE_MADVISE_DONTNEED], [ ])
>> AC_DEFINE([JEMALLOC_THREADED_INIT], [ ])
>> - JEMALLOC_USABLE_SIZE_CONST=""
>> default_munmap="0"
>> ;;
>> *-*-netbsd*)
>> @@ -351,6 +349,22 @@ case "${host}" in
>> abi="elf"
>> ;;
>> esac
>> +
>> +JEMALLOC_USABLE_SIZE_CONST=
>> +AC_CHECK_HEADERS([malloc.h], [
>> + AC_MSG_CHECKING([whether system malloc_usable_size definition uses const argument])
>
> Note, this sentence is wrong on windows, where there is no system
> malloc_usable_size, but where the test *does* run and return yes.
>
> Also, it might be better to check independently of whether malloc.h is
> available or not.
>
> Tell me if you want me to fix those.
I'm not sure there's a way to write a resilient configure test. Because malloc_usable_size() isn't a standard function, there's not a standard header for it. For example, here's FreeBSD's malloc.h (malloc_usable_size() is defined in malloc_np.h):
#if __STDC__
#error "<malloc.h> has been replaced by <stdlib.h>"
#else
#include <stdlib.h>
#endif
If nothing else, JEMALLOC_USABLE_SIZE_CONST="const" needs to be added to the FreeBSD (and NetBSD?) sections for this diff to work correctly.
Thanks,
Jason
More information about the jemalloc-discuss
mailing list