90 lines
2.6 KiB
Plaintext
90 lines
2.6 KiB
Plaintext
Index: alibffi/src/closures.c
|
|
===================================================================
|
|
--- alibffi.orig/src/closures.c
|
|
+++ alibffi/src/closures.c
|
|
@@ -214,6 +214,8 @@ static int dlmunmap(void *, size_t);
|
|
|
|
#if !(defined(X86_WIN32) || defined(X86_WIN64)) || defined (__CYGWIN__)
|
|
|
|
+#if FFI_MMAP_EXEC_SELINUX
|
|
+
|
|
/* A mutex used to synchronize access to *exec* variables in this file. */
|
|
static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
|
|
|
|
@@ -483,6 +485,27 @@ dlmmap (void *start, size_t length, int
|
|
return dlmmap_locked (start, length, prot, flags, offset);
|
|
}
|
|
|
|
+#else
|
|
+
|
|
+static void *
|
|
+dlmmap (void *start, size_t length, int prot,
|
|
+ int flags, int fd, off_t offset)
|
|
+{
|
|
+
|
|
+ assert (start == NULL && length % malloc_getpagesize == 0
|
|
+ && prot == (PROT_READ | PROT_WRITE)
|
|
+ && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
|
|
+ && fd == -1 && offset == 0);
|
|
+
|
|
+#if FFI_CLOSURE_TEST
|
|
+ printf ("mapping in %zi\n", length);
|
|
+#endif
|
|
+
|
|
+ return mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
|
|
+}
|
|
+
|
|
+#endif
|
|
+
|
|
/* Release memory at the given address, as well as the corresponding
|
|
executable page if it's separate. */
|
|
static int
|
|
Index: alibffi/ChangeLog.libffi
|
|
===================================================================
|
|
--- alibffi.orig/ChangeLog.libffi
|
|
+++ alibffi/ChangeLog.libffi
|
|
@@ -1,3 +1,11 @@
|
|
+2009-10-27 Abdulaziz Ghuloum <aghuloum@gmail.com>
|
|
+
|
|
+ * configure.ac (FFI_MMAP_EXEC_WRIT): Define for snow
|
|
+ leopard (i?86-apple-darwin10*).
|
|
+ * configure: Rebuilt.
|
|
+ * fficonfig.h.in: Rebuilt.
|
|
+ * src/closures.c (dlmmap): Define version for snow leopard.
|
|
+
|
|
2009-10-05 Bradley Smith <brad@brad-smith.co.uk>
|
|
|
|
* configure.ac, Makefile.am, src/avr32/ffi.c,
|
|
Index: alibffi/configure.ac
|
|
===================================================================
|
|
--- alibffi.orig/configure.ac
|
|
+++ alibffi/configure.ac
|
|
@@ -274,6 +274,14 @@ if test x$TARGET = xX86 || test x$TARGET
|
|
fi
|
|
fi
|
|
|
|
+case "$target" in
|
|
+ *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
|
|
+ AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
|
|
+ [Cannot use malloc on this target, so, we revert to
|
|
+ alternative means])
|
|
+ ;;
|
|
+esac
|
|
+
|
|
AC_CACHE_CHECK([whether .eh_frame section should be read-only],
|
|
libffi_cv_ro_eh_frame, [
|
|
libffi_cv_ro_eh_frame=no
|
|
Index: alibffi/configure
|
|
===================================================================
|
|
--- alibffi.orig/configure
|
|
+++ alibffi/configure
|
|
@@ -14498,7 +14498,7 @@ _ACEOF
|
|
fi
|
|
|
|
case "$target" in
|
|
- i?86-apple-darwin10*)
|
|
+ *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
|
|
|
|
cat >>confdefs.h <<\_ACEOF
|
|
#define FFI_MMAP_EXEC_WRIT 1
|