Files
cpython-source-deps/patches/snow-leopard
Anthony Green 39c8792ece 3.0.9rc7
2009-12-25 21:52:28 -05:00

132 lines
3.8 KiB
Plaintext

Index: libffi/src/closures.c
===================================================================
--- libffi.orig/src/closures.c
+++ libffi/src/closures.c
@@ -50,11 +50,6 @@
executable memory. */
# define FFI_MMAP_EXEC_WRIT 1
# endif
-# if defined(X86_64) && defined(__sun__) && defined(__svr4__)
-/* The data segment on 64-bit Solaris/x86 isn't executable, so use mmap
- instead. */
-# define FFI_MMAP_EXEC_WRIT 1
-# endif
#endif
#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX
@@ -214,6 +209,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 +480,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: libffi/ChangeLog.libffi
===================================================================
--- libffi.orig/ChangeLog.libffi
+++ libffi/ChangeLog.libffi
@@ -1,3 +1,17 @@
+2009-12-25 Andreas Tobler <a.tobler@schweiz.org>
+
+ * fficonfig.h.in: Rebuilt again.
+ * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
+ Solaris/x86.
+
+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: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/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: libffi/configure
===================================================================
--- libffi.orig/configure
+++ libffi/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
Index: libffi/fficonfig.h.in
===================================================================
--- libffi.orig/fficonfig.h.in
+++ libffi/fficonfig.h.in
@@ -17,6 +17,9 @@
/* Define this if you want extra debugging. */
#undef FFI_DEBUG
+/* Cannot use malloc on this target, so, we revert to alternative means */
+#undef FFI_MMAP_EXEC_WRIT
+
/* Define this is you do not want support for the raw API. */
#undef FFI_NO_RAW_API
@@ -122,9 +125,6 @@
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
/* Define to the version of this package. */
#undef PACKAGE_VERSION