Date: Sat, 21 Dec 2013 05:22:05 +0000 (UTC) From: Kubilay Kocak <koobs@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r337118 - in head/devel/libffi: . files Message-ID: <201312210522.rBL5M58k051766@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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%%
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312210522.rBL5M58k051766>