mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-09 06:51:44 +00:00
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)
This commit is contained in:
parent
f25e7bd095
commit
a1214fd74a
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=337118
@ -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
|
||||
|
36
devel/libffi/files/patch-src__arm__ffi.c
Normal file
36
devel/libffi/files/patch-src__arm__ffi.c
Normal file
@ -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); \
|
@ -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%%
|
||||
|
Loading…
Reference in New Issue
Block a user