From Abdulaziz Ghuloum. Adds special case for Snow Leopard.
This commit is contained in:
10
configure
vendored
10
configure
vendored
@@ -22797,6 +22797,16 @@ _ACEOF
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
i?86-apple-darwin10*)
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define FFI_MMAP_EXEC_WRIT 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
{ $as_echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5
|
{ $as_echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5
|
||||||
$as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
|
$as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
|
||||||
if test "${libffi_cv_ro_eh_frame+set}" = set; then
|
if test "${libffi_cv_ro_eh_frame+set}" = set; then
|
||||||
|
|||||||
@@ -273,6 +273,14 @@ if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
i?86-apple-darwin10*)
|
||||||
|
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],
|
AC_CACHE_CHECK([whether .eh_frame section should be read-only],
|
||||||
libffi_cv_ro_eh_frame, [
|
libffi_cv_ro_eh_frame, [
|
||||||
libffi_cv_ro_eh_frame=no
|
libffi_cv_ro_eh_frame=no
|
||||||
|
|||||||
@@ -209,6 +209,7 @@ static int dlmunmap(void *, size_t);
|
|||||||
|
|
||||||
#if !(defined(X86_WIN32) || defined(X86_WIN64)) || defined (__CYGWIN__)
|
#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. */
|
/* A mutex used to synchronize access to *exec* variables in this file. */
|
||||||
static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
|
||||||
@@ -478,6 +479,27 @@ dlmmap (void *start, size_t length, int prot,
|
|||||||
return dlmmap_locked (start, length, prot, flags, offset);
|
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
|
/* Release memory at the given address, as well as the corresponding
|
||||||
executable page if it's separate. */
|
executable page if it's separate. */
|
||||||
static int
|
static int
|
||||||
|
|||||||
Reference in New Issue
Block a user