Check for mmap()
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 17 May 2011 19:05:34 +0000 (15:05 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Tue, 17 May 2011 19:56:31 +0000 (15:56 -0400)
Apparently there exist systems with mprotect(), but not mmap()?

configure.ac
test/test-blob.c

index 96dbca5..ba3290a 100644 (file)
@@ -34,7 +34,7 @@ AC_SUBST(HB_VERSION)
 
 
 # Functions and headers
-AC_CHECK_FUNCS(mprotect sysconf getpagesize)
+AC_CHECK_FUNCS(mprotect sysconf getpagesize mmap)
 AC_CHECK_HEADERS(unistd.h sys/mman.h)
 
 # Compiler flags
index f3f7a86..5fcb208 100644 (file)
@@ -28,7 +28,7 @@
 
 /* Unit tests for hb-blob.h */
 
-#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MPROTECT)
+#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MPROTECT) && defined(HAVE_MMAP)
 
 # define TEST_MMAP 1
 
@@ -109,6 +109,7 @@ free_up_free (fixture_t *fixture)
 }
 
 
+#ifdef TEST_MMAP
 static uintptr_t
 get_pagesize (void)
 {
@@ -133,6 +134,7 @@ free_up_munmap (fixture_t *fixture)
   free_up (fixture);
   munmap (fixture->data, get_pagesize ());
 }
+#endif
 
 #include <errno.h>
 static void
@@ -164,7 +166,7 @@ fixture_init (fixture_t *fixture, gconstpointer user_data)
       free_func = (hb_destroy_func_t) free_up_free;
       break;
 
-#if TEST_MMAP
+#ifdef TEST_MMAP
     case HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE:
     {
       uintptr_t pagesize = get_pagesize ();