bug 1083116 - build fails: malloc_decls.h conflicting types for 'malloc_usable_size' r=glandium
authorBrad Lassey <blassey@mozilla.com>
Tue, 06 Jan 2015 19:58:36 -0500
changeset 223145 bceadf54fee87aebcd295cd7bf1320d5976e0b27
parent 223144 17fc30214d848a64c87e87b043566d3499dd1c03
child 223146 e672c279ff312b2f42897ac0cef9701247c5ef8a
push id10769
push usercbook@mozilla.com
push dateMon, 12 Jan 2015 14:15:52 +0000
treeherderfx-team@0e9765732906 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1083116
milestone37.0a1
bug 1083116 - build fails: malloc_decls.h conflicting types for 'malloc_usable_size' r=glandium
configure.in
memory/build/malloc_decls.h
--- a/configure.in
+++ b/configure.in
@@ -3380,16 +3380,29 @@ for file in $MALLOC_HEADERS; do
   fi
 done
 
 MOZ_CHECK_HEADERS(alloca.h)
 
 AC_CHECK_FUNCS(strndup posix_memalign memalign)
 
 AC_CHECK_FUNCS(malloc_usable_size)
+MALLOC_USABLE_SIZE_CONST_PTR=const
+MOZ_CHECK_HEADERS([malloc.h], [
+  AC_MSG_CHECKING([whether malloc_usable_size definition can use const argument])
+  AC_TRY_COMPILE([#include <malloc.h>
+                  #include <stddef.h>
+                  size_t malloc_usable_size(const void *ptr);],
+                  [return malloc_usable_size(0);],
+                  AC_MSG_RESULT([yes]),
+                  AC_MSG_RESULT([no])
+                  MALLOC_USABLE_SIZE_CONST_PTR=)
+])
+AC_DEFINE_UNQUOTED([MALLOC_USABLE_SIZE_CONST_PTR],[$MALLOC_USABLE_SIZE_CONST_PTR])
+
 
 dnl In newer bionic headers, valloc is built but not defined,
 dnl so we check more carefully here.
 AC_MSG_CHECKING([for valloc in malloc.h])
 AC_EGREP_HEADER(valloc, malloc.h,
                 AC_DEFINE(HAVE_VALLOC)
                 AC_MSG_RESULT([yes]),
                 AC_MSG_RESULT([no]))
--- a/memory/build/malloc_decls.h
+++ b/memory/build/malloc_decls.h
@@ -10,21 +10,21 @@
  *   - argument types
  */
 
 #ifndef malloc_decls_h
 #  define malloc_decls_h
 
 #  include "jemalloc_types.h"
 
-#  if defined(__linux__) && (!defined(MOZ_MEMORY_ANDROID) || ANDROID_VERSION < 19)
-typedef void * usable_ptr_t;
-#  else
-typedef const void * usable_ptr_t;
-#  endif
+#ifndef MALLOC_USABLE_SIZE_CONST_PTR
+#define MALLOC_USABLE_SIZE_CONST_PTR const
+#endif
+
+typedef MALLOC_USABLE_SIZE_CONST_PTR void * usable_ptr_t;
 
 #  define MALLOC_FUNCS_MALLOC 1
 #  define MALLOC_FUNCS_JEMALLOC 2
 #  define MALLOC_FUNCS_INIT 4
 #  define MALLOC_FUNCS_BRIDGE 8
 #  define MALLOC_FUNCS_ALL (MALLOC_FUNCS_INIT | MALLOC_FUNCS_BRIDGE | \
                             MALLOC_FUNCS_MALLOC | MALLOC_FUNCS_JEMALLOC)