svn commit: r337118 - in head/devel/libffi: . files
Kubilay Kocak
koobs at FreeBSD.org
Sat Dec 21 05:22:06 UTC 2013
Author: koobs
Date: Sat Dec 21 05:22:05 2013
New Revision: 337118
URL: http://svnweb.freebsd.org/changeset/ports/337118
Log:
devel/libffi: Fix abort() on ARM related to __clear_cache()
The current FreeBSD/ARM __clear_cache() implementation does nothing #if
__i386__ || __x86_64__ #else abort();
cognet@ advises this is an issue for anything !Apple that is using the
libcompiler_rt provided by Clang on ARM, and requires upstreaming.
Additionally, two Python ports (python26 and python31) use devel/libffi for
unrelated reasons, so this addresses the related PR for those ports too [2].
- Enable STAGE support
- Remove MAN* entries and update pkg-plist accordingly
- Add LICENSE
- Sort USE/USES section
- Use install-strip as the INSTALL_TARGET
PR: ports/149167
PR: ports/184517 [2]
Approved by: maintainer timeout (2 weeks)
Added:
head/devel/libffi/files/
head/devel/libffi/files/patch-src__arm__ffi.c (contents, props changed)
Modified:
head/devel/libffi/Makefile (contents, props changed)
head/devel/libffi/pkg-plist (contents, props changed)
Modified: head/devel/libffi/Makefile
==============================================================================
--- head/devel/libffi/Makefile Sat Dec 21 04:39:52 2013 (r337117)
+++ head/devel/libffi/Makefile Sat Dec 21 05:22:05 2013 (r337118)
@@ -3,6 +3,7 @@
PORTNAME= libffi
PORTVERSION= 3.0.13
+PORTREVISION= 1
CATEGORIES= devel
MASTER_SITES= SOURCEWARE
MASTER_SITE_SUBDIR= ${PORTNAME}
@@ -10,32 +11,32 @@ MASTER_SITE_SUBDIR= ${PORTNAME}
MAINTAINER= zeising at FreeBSD.org
COMMENT= Foreign Function Interface
+LICENSE= MIT
+
TEST_DEPENDS= runtest:${PORTSDIR}/misc/dejagnu
+USES= pathfix pkgconfig
+USE_LDCONFIG= yes
+GNU_CONFIGURE= yes
+
OPTIONS_DEFINE= TESTS
TESTS_DESC= Include tools for test suite
-NO_STAGE= yes
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MTESTS}
BUILD_DEPENDS:= ${TEST_DEPENDS}
.endif
-GNU_CONFIGURE= yes
-USE_LDCONFIG= yes
-USES= pathfix pkgconfig
-PLIST_SUB= PORTVERSION=${PORTVERSION}
-
+INSTALL_TARGET= install-strip
INFO= libffi
-
-MAN3= ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
+PLIST_SUB= PORTVERSION=${PORTVERSION}
post-install:
@${LN} -sf ../lib/libffi-${PORTVERSION}/include/ffi.h \
- ${PREFIX}/include/
+ ${STAGEDIR}${PREFIX}/include/
@${LN} -sf ../lib/libffi-${PORTVERSION}/include/ffitarget.h \
- ${PREFIX}/include/
+ ${STAGEDIR}${PREFIX}/include/
regression-test: build
@cd ${WRKSRC} && ${MAKE} check
Added: head/devel/libffi/files/patch-src__arm__ffi.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libffi/files/patch-src__arm__ffi.c Sat Dec 21 05:22:05 2013 (r337118)
@@ -0,0 +1,36 @@
+# Description: Fix abort() on ARM related to __clear_cache(). This is an issue
+# for anything !apple that is using the libcompiler_rt provided by clang on ARM
+# PR: ports/149167 ports/184517
+# Patch by: cognet@ (to be upstreamed @ LLVM)
+
+--- ./src/arm/ffi.c.orig 2013-03-16 22:19:39.000000000 +1100
++++ ./src/arm/ffi.c 2013-12-03 19:30:58.440924300 +1100
+@@ -33,6 +33,11 @@
+
+ #include <stdlib.h>
+
++#if defined(__FreeBSD__) && defined(__arm__)
++#include <sys/types.h>
++#include <machine/sysarch.h>
++#endif
++
+ /* Forward declares. */
+ static int vfp_type_p (ffi_type *);
+ static void layout_vfp_args (ffi_cif *);
+@@ -582,6 +587,16 @@
+
+ #else
+
++#if defined(__FreeBSD__) && defined(__arm__)
++#define __clear_cache(start, end) do { \
++ struct arm_sync_icache_args ua; \
++ \
++ ua.addr = (uintptr_t)(start); \
++ ua.len = (char *)(end) - (char *)start; \
++ sysarch(ARM_SYNC_ICACHE, &ua); \
++ } while (0);
++#endif
++
+ #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \
+ ({ unsigned char *__tramp = (unsigned char*)(TRAMP); \
+ unsigned int __fun = (unsigned int)(FUN); \
Modified: head/devel/libffi/pkg-plist
==============================================================================
--- head/devel/libffi/pkg-plist Sat Dec 21 04:39:52 2013 (r337117)
+++ head/devel/libffi/pkg-plist Sat Dec 21 05:22:05 2013 (r337118)
@@ -7,5 +7,9 @@ lib/libffi.la
lib/libffi.so
lib/libffi.so.6
libdata/pkgconfig/libffi.pc
+man/man3/ffi.3.gz
+man/man3/ffi_call.3.gz
+man/man3/ffi_prep_cif.3.gz
+man/man3/ffi_prep_cif_var.3.gz
@dirrm lib/libffi-%%PORTVERSION%%/include
@dirrm lib/libffi-%%PORTVERSION%%
More information about the svn-ports-all
mailing list