On 20.12.09 09:12, Andreas Tobler wrote:
On 20.12.09 03:21, Gerald Pfeifer wrote:
On Thu, 10 Dec 2009, Andreas Tobler wrote:
Anyway, there are other architectures which do have the same issue.
FreeBSD,
OpenBSD, apple-darwin10. We 'solved' this with adding the snippet
below in the
configure.ac (from the libffi sources, not in the gcc repo yet.):
case "$target" in
*-apple-darwin10* | *-*-freebsd* | *-*-openbsd*)
AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
[Cannot use malloc on this target, so, we revert to
alternative means])
;;
So, my question, shall we move the three remaining OS variants into the
closures.c file. Or should we move the solaris/x86 part from the
closures.c
file into the configure.ac part?
Are you planning on addressing this for the three platforms (Darwin,
FreeBSD, OpenBSD) for GCC 4.5? Or do we have a different fix in the
GCC tree for the time being?
Yes, it's planned. I should come up soon with a proposal.
Here it is.
The patch is against gcc trunk.
For standalone libffi the closures.c part can be ignored.
I tested it under the given targets except darwin10, no installation yet.
(sparc64-*-freebsd9, amd64/x86_64-*freebsd9, amd64/x86_64-*-openbsd4.6,
i386-pc-solaris2.11(multilib), i?86-*-freebsd9,)
The tests were done within the gcc libffi and with libffi standalone
(3.0.9rc3) tree.
On OpenBSD I only tested with the standalone libffi.
The remaining part is the snippet from src/closures.c I want to move to
the configure part: # if defined(X86_WIN32) || defined(X86_WIN64)
But here I lack the test environment, any volunteers?
I can hack an untested patch for these targets.
Ok for gcc trunk?
Thanks,
Andreas
2009-12-22 Andreas Tobler<a.tobler@schweiz.org>
* configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
* configure: Regenerate.
* fficonfig.h.in: Likewise.
* src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
Solaris/x86.