gcc 4.6 hasn't been patched to avoid strict W^X violations in the
bundled libffi copy. I think we'd better stay consistent ports-wise
regarding wxneeded/W^X violations handling, arch-specific details on
this matter are already not easy to grok...
ok?
Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/gcc/4.6/Makefile,v
retrieving revision 1.86
diff -u -p -r1.86 Makefile
--- Makefile 12 May 2016 01:17:13 -0000 1.86
+++ Makefile 7 Jun 2016 11:42:43 -0000
@@ -1,7 +1,7 @@
# $OpenBSD: Makefile,v 1.86 2016/05/12 01:17:13 naddy Exp $
#ONLY_FOR_ARCHS = alpha amd64 hppa i386 powerpc sparc64
-# ignore arches that have a valid 4.8 port
+# ignore arches that have a more recent gcc port
ONLY_FOR_ARCHS = alpha
DPB_PROPERTIES = parallel
@@ -31,6 +31,8 @@ PKGNAME-go = gccgo-${FULL_PKGVERSION}
PKGSPEC-main = gcc->=4.6,<4.7
REVISION = 16
+REVISION-java = 17
+REVISION-go = 17
SHARED_LIBS = estdc++ 14.0 \
gfortran 3.0 \
Index: patches/patch-libffi_src_closures_c
===================================================================
RCS file: patches/patch-libffi_src_closures_c
diff -N patches/patch-libffi_src_closures_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-libffi_src_closures_c 6 Jun 2016 19:07:15 -0000
@@ -0,0 +1,19 @@
+$OpenBSD$
+--- libffi/src/closures.c.orig Mon Jun 6 21:05:54 2016
++++ libffi/src/closures.c Mon Jun 6 21:06:55 2016
+@@ -453,6 +453,7 @@ dlmmap (void *start, size_t length, int prot,
+ printf ("mapping in %zi\n", length);
+ #endif
+
++#if 0
+ if (execfd == -1 && !is_selinux_enabled ())
+ {
+ ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
+@@ -465,6 +466,7 @@ dlmmap (void *start, size_t length, int prot,
+ with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with
+ MREMAP_DUP and prot at this point. */
+ }
++#endif
+
+ if (execsize == 0 || execfd == -1)
+ {
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE