Hi, Bruno Haible kindly notified us of the release of libffcall-1.13.
http://marc.info/?l=openbsd-ports&m=149830931016250&w=2 This new release will hopefully let us drop the not-so-nice patches we have. With the following diff, ''make test'' works fine on amd64 and arm. ''make test'' passes for lang/clisp and lang/gforth on amd64, lang/clisp can now be unlocked on arm. Test reports are welcome, especially on those architectures: alpha hppa i386 mips64 mips64el powerpc sparc64 ok/comments? Index: Makefile =================================================================== RCS file: /d/cvs/ports/devel/ffcall/Makefile,v retrieving revision 1.29 diff -u -p -r1.29 Makefile --- Makefile 1 Sep 2016 10:53:26 -0000 1.29 +++ Makefile 30 Jun 2017 14:44:57 -0000 @@ -1,24 +1,27 @@ # $OpenBSD: Makefile,v 1.29 2016/09/01 10:53:26 jasper Exp $ -# arm: doesn't build super-old and broken assember files -ONLY_FOR_ARCHS= alpha amd64 hppa i386 mips64 mips64el powerpc sparc64 +# Needed for tests, wxneeded has no effect on the installed shared libs. +USE_WXNEEDED= Yes COMMENT= foreign function call libraries -DISTNAME= ffcall-1.10 -REVISION = 3 -SHARED_LIBS= avcall 1.0 \ - callback 1.0 +DISTNAME= libffcall-1.13 +PKGNAME= ffcall-1.13 + +SHARED_LIBS += avcall 2.0 # 0.0 +SHARED_LIBS += callback 2.0 # 0.0 +SHARED_LIBS += trampoline 0.0 # 0.0 + CATEGORIES= devel -MASTER_SITES= http://www.haible.de/bruno/gnu/ -HOMEPAGE= http://www.haible.de/bruno/packages-ffcall.html -# GPLv2 only +HOMEPAGE= https://www.gnu.org/software/libffcall/ + +# GPLv2+ PERMIT_PACKAGE_CDROM= Yes -WANTLIB= c + +MASTER_SITES= ${MASTER_SITE_GNU:=libffcall/} CONFIGURE_STYLE=gnu -MODGNU_CONFIG_GUESS_DIRS=${WRKSRC}/autoconf .if ${MACHINE_ARCH} == "sparc64" CONFIGURE_ENV += cl_cv_c_struct_return_small=yes Index: distinfo =================================================================== RCS file: /d/cvs/ports/devel/ffcall/distinfo,v retrieving revision 1.6 diff -u -p -r1.6 distinfo --- distinfo 18 Jan 2015 03:13:11 -0000 1.6 +++ distinfo 30 Jun 2017 08:19:03 -0000 @@ -1,2 +1,2 @@ -SHA256 (ffcall-1.10.tar.gz) = bxtbj8hLLABRY3+x5OT4uXX1+Yv/j+BTwZkjR7qkmD0= -SIZE (ffcall-1.10.tar.gz) = 914870 +SHA256 (libffcall-1.13.tar.gz) = FwfOcH279X8bvpqlaSnA2oZgRrDVom6w2W2fC7KbvOc= +SIZE (libffcall-1.13.tar.gz) = 985185 Index: patches/patch-avcall_Makefile_in =================================================================== RCS file: patches/patch-avcall_Makefile_in diff -N patches/patch-avcall_Makefile_in --- patches/patch-avcall_Makefile_in 1 Aug 2015 12:07:46 -0000 1.6 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,19 +0,0 @@ -$OpenBSD: patch-avcall_Makefile_in,v 1.6 2015/08/01 12:07:46 tobiasu Exp $ ---- avcall/Makefile.in.orig Sun Jan 25 18:34:21 2004 -+++ avcall/Makefile.in Thu Jul 30 14:59:25 2015 -@@ -120,13 +120,11 @@ avcall-rs6000.lo : $(srcdir)/avcall-rs6000-aix.old.s $ - case "$(OS)" in \ - aix3*) syntax=aix.old;; \ - aix*) syntax=aix.new;; \ -- linux* | netbsd*) syntax=linux;; \ -+ linux* | netbsd* | openbsd*) syntax=linux;; \ - macos* | darwin*) syntax=macos;; \ - *) syntax=sysv4;; \ - esac; \ -- $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/avcall-rs6000-$${syntax}.s ; \ -- cp avcall-rs6000-$${syntax}.lo avcall-rs6000.lo ; rm -f avcall-rs6000-$${syntax}.lo ; \ -- if test -f avcall-rs6000-$${syntax}.o; then mv avcall-rs6000-$${syntax}.o avcall-rs6000.o; fi -+ $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/avcall-rs6000-$${syntax}.s -o avcall-rs6000.lo - - avcall-m88k.lo : $(srcdir)/avcall-m88k.s - $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/avcall-m88k.s Index: patches/patch-avcall_avcall-sparc64_S =================================================================== RCS file: patches/patch-avcall_avcall-sparc64_S diff -N patches/patch-avcall_avcall-sparc64_S --- patches/patch-avcall_avcall-sparc64_S 23 Sep 2010 13:38:33 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,254 +0,0 @@ -$OpenBSD: patch-avcall_avcall-sparc64_S,v 1.3 2010/09/23 13:38:33 joshe Exp $ - -Add missing .register declaration for %g3. -Account for the stack bias when using %sp. -Use [foo,bar] syntax instead of bar(foo). - ---- avcall/avcall-sparc64.S.orig Fri Nov 26 12:28:33 1999 -+++ avcall/avcall-sparc64.S Tue Apr 7 14:20:26 2009 -@@ -3,6 +3,7 @@ - .version "01.01" - .section ".text" - .align 4 -+ .register %g3, #scratch - .global __builtin_avcall - DECLARE_FUNCTION(__builtin_avcall) - .type __builtin_avcall,$function -@@ -14,7 +15,7 @@ __builtin_avcall: - ldx [%i0+40], %g3 - ld [%i0+60], %o7 - add %g3, -72, %g3 -- add %sp, 136, %g1 -+ add %sp, 2175, %g1 - sub %g3, %i0, %g3 - cmp %o7, 0 - sdivx %g3, 8, %g3 -@@ -24,98 +25,98 @@ __builtin_avcall: - cmp %g3, 0 - be,pn %icc, .LL161 - and %o7, 2, %g3 -- ld 72(%i0),%f1 -+ ld [%i0+72],%f1 - and %o7, 2, %g3 - .LL161: - cmp %g3, 0 - be,pn %icc, .LL162 - and %o7, 4, %g3 -- ld 80(%i0),%f3 -+ ld [%i0+80],%f3 - and %o7, 4, %g3 - .LL162: - cmp %g3, 0 - be,pn %icc, .LL163 - and %o7, 8, %g3 -- ld 88(%i0),%f5 -+ ld [%i0+88],%f5 - and %o7, 8, %g3 - .LL163: - cmp %g3, 0 - be,pn %icc, .LL164 - and %o7, 16, %g3 -- ld 96(%i0),%f7 -+ ld [%i0+96],%f7 - and %o7, 16, %g3 - .LL164: - cmp %g3, 0 - be,pn %icc, .LL165 - and %o7, 32, %g3 -- ld 104(%i0),%f9 -+ ld [%i0+104],%f9 - and %o7, 32, %g3 - .LL165: - cmp %g3, 0 - be,pn %icc, .LL166 - and %o7, 64, %g3 -- ld 112(%i0),%f11 -+ ld [%i0+112],%f11 - and %o7, 64, %g3 - .LL166: - cmp %g3, 0 - be,pn %icc, .LL167 - and %o7, 128, %g3 -- ld 120(%i0),%f13 -+ ld [%i0+120],%f13 - and %o7, 128, %g3 - .LL167: - cmp %g3, 0 - be,pn %icc, .LL168 - and %o7, 256, %g3 -- ld 128(%i0),%f15 -+ ld [%i0+128],%f15 - and %o7, 256, %g3 - .LL168: - cmp %g3, 0 - be,pn %icc, .LL169 - and %o7, 512, %g3 -- ld 136(%i0),%f17 -+ ld [%i0+136],%f17 - and %o7, 512, %g3 - .LL169: - cmp %g3, 0 - be,a,pn %icc, .LL170 - ld [%i0+60], %o7 -- ld 144(%i0),%f19 -+ ld [%i0+144],%f19 - ld [%i0+60], %o7 - .LL170: - and %o7, 1024, %g3 - cmp %g3, 0 - be,pn %icc, .LL171 - and %o7, 2048, %g3 -- ld 152(%i0),%f21 -+ ld [%i0+152],%f21 - and %o7, 2048, %g3 - .LL171: - cmp %g3, 0 - be,pn %icc, .LL172 - sethi %hi(4096), %g3 -- ld 160(%i0),%f23 -+ ld [%i0+160],%f23 - sethi %hi(4096), %g3 - .LL172: - andcc %o7, %g3, %g0 - be,pn %icc, .LL173 - sethi %hi(8192), %g3 -- ld 168(%i0),%f25 -+ ld [%i0+168],%f25 - sethi %hi(8192), %g3 - .LL173: - andcc %o7, %g3, %g0 - be,pn %icc, .LL174 - sethi %hi(16384), %g3 -- ld 176(%i0),%f27 -+ ld [%i0+176],%f27 - sethi %hi(16384), %g3 - .LL174: - andcc %o7, %g3, %g0 - be,pn %icc, .LL175 - sethi %hi(32768), %g3 -- ld 184(%i0),%f29 -+ ld [%i0+184],%f29 - sethi %hi(32768), %g3 - .LL175: - andcc %o7, %g3, %g0 - be,a,pn %icc, .LL176 - ld [%i0+64], %g3 -- ld 192(%i0),%f31 -+ ld [%i0+192],%f31 - .LL3: - ld [%i0+64], %g3 - .LL176: -@@ -126,97 +127,97 @@ __builtin_avcall: - cmp %g3, 0 - be,pn %icc, .LL177 - and %o7, 2, %g3 -- ldd 72(%i0),%f0 -+ ldd [%i0+72],%f0 - and %o7, 2, %g3 - .LL177: - cmp %g3, 0 - be,pn %icc, .LL178 - and %o7, 4, %g3 -- ldd 80(%i0),%f2 -+ ldd [%i0+80],%f2 - and %o7, 4, %g3 - .LL178: - cmp %g3, 0 - be,pn %icc, .LL179 - and %o7, 8, %g3 -- ldd 88(%i0),%f4 -+ ldd [%i0+88],%f4 - and %o7, 8, %g3 - .LL179: - cmp %g3, 0 - be,pn %icc, .LL180 - and %o7, 16, %g3 -- ldd 96(%i0),%f6 -+ ldd [%i0+96],%f6 - and %o7, 16, %g3 - .LL180: - cmp %g3, 0 - be,pn %icc, .LL181 - and %o7, 32, %g3 -- ldd 104(%i0),%f8 -+ ldd [%i0+104],%f8 - and %o7, 32, %g3 - .LL181: - cmp %g3, 0 - be,pn %icc, .LL182 - and %o7, 64, %g3 -- ldd 112(%i0),%f10 -+ ldd [%i0+112],%f10 - and %o7, 64, %g3 - .LL182: - cmp %g3, 0 - be,pn %icc, .LL183 - and %o7, 128, %g3 -- ldd 120(%i0),%f12 -+ ldd [%i0+120],%f12 - and %o7, 128, %g3 - .LL183: - cmp %g3, 0 - be,pn %icc, .LL184 - and %o7, 256, %g3 -- ldd 128(%i0),%f14 -+ ldd [%i0+128],%f14 - and %o7, 256, %g3 - .LL184: - cmp %g3, 0 - be,pn %icc, .LL185 - and %o7, 512, %g3 -- ldd 136(%i0),%f16 -+ ldd [%i0+136],%f16 - and %o7, 512, %g3 - .LL185: - cmp %g3, 0 - be,pn %icc, .LL186 - and %o7, 1024, %g3 -- ldd 144(%i0),%f18 -+ ldd [%i0+144],%f18 - and %o7, 1024, %g3 - .LL186: - cmp %g3, 0 - be,pn %icc, .LL187 - and %o7, 2048, %g3 -- ldd 152(%i0),%f20 -+ ldd [%i0+152],%f20 - and %o7, 2048, %g3 - .LL187: - cmp %g3, 0 - be,pn %icc, .LL188 - sethi %hi(4096), %g3 -- ldd 160(%i0),%f22 -+ ldd [%i0+160],%f22 - sethi %hi(4096), %g3 - .LL188: - andcc %o7, %g3, %g0 - be,pn %icc, .LL189 - sethi %hi(8192), %g3 -- ldd 168(%i0),%f24 -+ ldd [%i0+168],%f24 - sethi %hi(8192), %g3 - .LL189: - andcc %o7, %g3, %g0 - be,pn %icc, .LL190 - sethi %hi(16384), %g3 -- ldd 176(%i0),%f26 -+ ldd [%i0+176],%f26 - sethi %hi(16384), %g3 - .LL190: - andcc %o7, %g3, %g0 - be,pn %icc, .LL191 - sethi %hi(32768), %g3 -- ldd 184(%i0),%f28 -+ ldd [%i0+184],%f28 - sethi %hi(32768), %g3 - .LL191: - andcc %o7, %g3, %g0 - be,pn %icc, .LL192 - mov 6, %l1 -- ldd 192(%i0),%f30 -+ ldd [%i0+192],%f30 - .LL20: - mov 6, %l1 - .LL192: Index: patches/patch-avcall_avcall_h_in =================================================================== RCS file: patches/patch-avcall_avcall_h_in diff -N patches/patch-avcall_avcall_h_in --- patches/patch-avcall_avcall_h_in 23 Sep 2010 13:38:33 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,15 +0,0 @@ -$OpenBSD: patch-avcall_avcall_h_in,v 1.1 2010/09/23 13:38:33 joshe Exp $ ---- avcall/avcall.h.in.orig Mon Jan 26 06:58:41 2004 -+++ avcall/avcall.h.in Sat Apr 25 16:17:43 2009 -@@ -1307,8 +1307,9 @@ typedef struct - ? -1 : (ASSIGN(TYPE,TYPE_SIZE,TYPE_ALIGN,(void*)((__avword)(LIST).aptr-(TYPE_SIZE)),VAL),\ - (LIST).aptr = (__avword*)(((__avword)(LIST).aptr+sizeof(__avword)-1) & -(long)sizeof(__avword)),\ - ((LIST).anum < 16 \ -- && ((LIST).farg_mask |= (-1 << (LIST).anum), \ -- (LIST).darg_mask |= (-1 << (LIST).anum))), \ -+ && ((TYPE_SIZE) > 4 \ -+ ? ((LIST).darg_mask |= (-1 << (LIST).anum)) \ -+ : ((LIST).farg_mask |= (-1 << (LIST).anum)))), \ - (LIST).anum += (((((TYPE_SIZE)+(TYPE_ALIGN)-1) & -(long)(TYPE_ALIGN)) + sizeof(__avword)-1) & -(long)sizeof(__avword))/sizeof(__avword),\ - (LIST).farg_mask &= (1 << ((LIST).anum < 16 ? (LIST).anum : 16)) - 1, \ - (LIST).darg_mask &= (1 << ((LIST).anum < 16 ? (LIST).anum : 16)) - 1, \ Index: patches/patch-avcall_configure =================================================================== RCS file: patches/patch-avcall_configure diff -N patches/patch-avcall_configure --- patches/patch-avcall_configure 14 Jun 2010 08:22:19 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-avcall_configure,v 1.1 2010/06/14 08:22:19 jasper Exp $ ---- avcall/configure.orig Mon Jun 14 09:58:37 2010 -+++ avcall/configure Mon Jun 14 09:58:43 2010 -@@ -3026,7 +3026,7 @@ case "$host_cpu" in - arm* ) - host_cpu=arm - ;; -- mips ) -+ mips* ) - echo "$as_me:$LINENO: checking for 64-bit MIPS" >&5 - echo $ECHO_N "checking for 64-bit MIPS... $ECHO_C" >&6 - if test "${cl_cv_host_mips64+set}" = set; then Index: patches/patch-callback_trampoline_r_Makefile_in =================================================================== RCS file: patches/patch-callback_trampoline_r_Makefile_in diff -N patches/patch-callback_trampoline_r_Makefile_in --- patches/patch-callback_trampoline_r_Makefile_in 1 Aug 2015 12:07:46 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ -$OpenBSD: patch-callback_trampoline_r_Makefile_in,v 1.3 2015/08/01 12:07:46 tobiasu Exp $ ---- callback/trampoline_r/Makefile.in.orig Thu Jul 30 15:10:21 2015 -+++ callback/trampoline_r/Makefile.in Thu Jul 30 15:11:45 2015 -@@ -101,7 +101,8 @@ cache-rs6000.lo : $(srcdir)/cache-rs6000-sysv4.s $(src - macos* | darwin*) syntax=macos;; \ - *) syntax=sysv4;; \ - esac; \ -- $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/cache-rs6000-$${syntax}.s ; mv -f cache-rs6000-$${syntax}.o cache-rs6000.o ; mv -f cache-rs6000-$${syntax}.lo cache-rs6000.lo -+ $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/cache-rs6000-$${syntax}.s \ -+ -o cache-rs6000.lo - - cache-convex.lo : $(srcdir)/cache-convex.s - $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/cache-convex.s Index: patches/patch-callback_trampoline_r_test1_c =================================================================== RCS file: patches/patch-callback_trampoline_r_test1_c diff -N patches/patch-callback_trampoline_r_test1_c --- patches/patch-callback_trampoline_r_test1_c 23 Aug 2010 14:16:09 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-callback_trampoline_r_test1_c,v 1.1 2010/08/23 14:16:09 jasper Exp $ ---- callback/trampoline_r/test1.c.orig Sun Apr 26 06:46:30 2009 -+++ callback/trampoline_r/test1.c Sun Apr 26 06:46:30 2009 -@@ -70,7 +70,7 @@ register void* env __asm__("%r29"); - register void* env __asm__("r12"); - #endif - #ifdef __rs6000__ --#ifdef __NetBSD__ -+#if defined(__NetBSD__) || defined(__OpenBSD__) - register void* env __asm__("r13"); - #else - register void* env __asm__("r11"); Index: patches/patch-callback_trampoline_r_trampoline_c =================================================================== RCS file: patches/patch-callback_trampoline_r_trampoline_c diff -N patches/patch-callback_trampoline_r_trampoline_c --- patches/patch-callback_trampoline_r_trampoline_c 23 Sep 2010 13:38:33 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,129 +0,0 @@ -$OpenBSD: patch-callback_trampoline_r_trampoline_c,v 1.3 2010/09/23 13:38:33 joshe Exp $ - -Fix the horrible trampoline code to work on sparc and -sparc64. OpenBSD's runtime linker trashes registers which are supposed -to be preserved across function calls, so steal some space on the -stack instead. - -Also fix powerpc and mips64. - ---- callback/trampoline_r/trampoline.c.orig Mon Jan 26 07:00:05 2004 -+++ callback/trampoline_r/trampoline.c Fri Jul 30 14:34:10 2010 -@@ -21,7 +21,7 @@ - #endif - #endif - #if defined(__rs6000__) --#if defined(__NetBSD__) -+#if defined(__NetBSD__) || defined(__OpenBSD__) - #define __rs6000netbsd__ - #else - #if !defined(_AIX) -@@ -196,8 +196,12 @@ extern RETGETPAGESIZETYPE getpagesize (); - #ifdef linux - #include <asm/cachectl.h> - #else -+#ifdef __OpenBSD__ -+#include <mips64/sysarch.h> -+#else - #ifdef HAVE_SYS_CACHECTL_H - #include <sys/cachectl.h> -+#endif - #endif - #endif - #endif -@@ -259,11 +259,11 @@ extern void __TR_clear_cache(); - #define TRAMP_ALIGN 8 - #endif - #if defined(__sparc__) && !defined(__sparc64__) --#define TRAMP_LENGTH 16 -+#define TRAMP_LENGTH 24 - #define TRAMP_ALIGN 16 - #endif - #ifdef __sparc64__ --#define TRAMP_LENGTH 32 -+#define TRAMP_LENGTH 40 - #define TRAMP_ALIGN 16 - #endif - #ifdef __alpha__ -@@ -614,52 +614,64 @@ __TR_function alloc_trampoline_r (address, data0, data - /* function: - * sethi %hi(<data>),%g2 05000000 | (<data> >> 10) - * sethi %hi(<address>),%g1 03000000 | (<address> >> 10) -- * jmp %g1+%lo(<address>) 81C06000 | (<address> & 0x3ff) -+ * add %sp,-8,%sp 9C03BFF8 - * or %g2,%lo(<data>),%g2 8410A000 | (<data> & 0x3ff) -+ * jmp %g1+%lo(<address>) 81C06000 | (<address> & 0x3ff) -+ * st %g2,[%sp+96] C423A060 - */ - #define hi(word) ((unsigned long) (word) >> 10) - #define lo(word) ((unsigned long) (word) & 0x3ff) - *(long *) (function + 0) = 0x05000000 | hi(data); - *(long *) (function + 4) = 0x03000000 | hi(address); -- *(long *) (function + 8) = 0x81C06000 | lo(address); -+ *(long *) (function + 8) = 0x9C03BFF8; - *(long *) (function +12) = 0x8410A000 | lo(data); -+ *(long *) (function +16) = 0x81C06000 | lo(address); -+ *(long *) (function +20) = 0xC423A060; - #define is_tramp(function) \ - (*(long *) (function + 0) & 0xffc00000) == 0x05000000 && \ - (*(long *) (function + 4) & 0xffc00000) == 0x03000000 && \ -- (*(long *) (function + 8) & 0xfffffc00) == 0x81C06000 && \ -- (*(long *) (function +12) & 0xfffffc00) == 0x8410A000 -+ (*(long *) (function + 8)) == 0x9C03BFF8 && \ -+ (*(long *) (function +12) & 0xfffffc00) == 0x8410A000 && \ -+ (*(long *) (function +16) & 0xfffffc00) == 0x81C06000 && \ -+ (*(long *) (function +20)) == 0xC423A060 - #define hilo(hiword,loword) (((hiword) << 10) | ((loword) & 0x3ff)) - #define tramp_address(function) \ -- hilo(*(long *) (function + 4), *(long *) (function + 8)) -+ hilo(*(long *) (function + 4), *(long *) (function +16)) - #define tramp_data(function) \ - hilo(*(long *) (function + 0), *(long *) (function +12)) - #endif - #ifdef __sparc64__ - /* function: - * rd %pc,%g1 83414000 -- * ldx [%g1+24],%g2 C4586018 -+ * ldx [%g1+32],%g2 C4586020 -+ * ldx [%g1+24],%g5 CA586018 -+ * add %sp,-32,%sp 9C03BFE0 - * jmp %g2 81C08000 -- * ldx [%g1+16],%g5 CA586010 -+ * stx %g5,[%sp+2239] CA73A8BF - * .long high32(<data>) <data> >> 32 - * .long low32(<data>) <data> & 0xffffffff - * .long high32(<address>) <address> >> 32 - * .long low32(<address>) <address> & 0xffffffff - */ - *(int *) (function + 0) = 0x83414000; -- *(int *) (function + 4) = 0xC4586018; -- *(int *) (function + 8) = 0x81C08000; -- *(int *) (function +12) = 0xCA586010; -- *(long *) (function +16) = (long) data; -- *(long *) (function +24) = (long) address; -+ *(int *) (function + 4) = 0xC4586020; -+ *(int *) (function + 8) = 0xCA586018; -+ *(int *) (function +12) = 0x9C03BFE0; -+ *(int *) (function +16) = 0x81C08000; -+ *(int *) (function +20) = 0xCA73A8BF; -+ *(long *) (function +24) = (long) data; -+ *(long *) (function +32) = (long) address; - #define is_tramp(function) \ - *(int *) (function + 0) == 0x83414000 && \ -- *(int *) (function + 4) == 0xC4586018 && \ -- *(int *) (function + 8) == 0x81C08000 && \ -- *(int *) (function +12) == 0xCA586010 -+ *(int *) (function + 4) == 0xC4586020 && \ -+ *(int *) (function + 8) == 0xCA586018 && \ -+ *(int *) (function +12) == 0x9C03BFE0 && \ -+ *(int *) (function +16) == 0x81C08000 && \ -+ *(int *) (function +20) == 0xCA73A8BF - #define tramp_address(function) \ -- *(long *) (function +24) -+ *(long *) (function +32) - #define tramp_data(function) \ -- *(long *) (function +16) -+ *(long *) (function +24) - #endif - #ifdef __alpha__ - /* function: Index: patches/patch-callback_vacall_r_Makefile_in =================================================================== RCS file: patches/patch-callback_vacall_r_Makefile_in diff -N patches/patch-callback_vacall_r_Makefile_in --- patches/patch-callback_vacall_r_Makefile_in 1 Aug 2015 12:07:46 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,19 +0,0 @@ -$OpenBSD: patch-callback_vacall_r_Makefile_in,v 1.4 2015/08/01 12:07:46 tobiasu Exp $ ---- callback/vacall_r/Makefile.in.orig Sun Jan 25 15:17:01 2004 -+++ callback/vacall_r/Makefile.in Thu Jul 30 15:07:56 2015 -@@ -120,13 +120,11 @@ vacall-rs6000.lo : $(srcdir)/vacall-rs6000-aix.old.s $ - case "$(OS)" in \ - aix3*) syntax=aix.old;; \ - aix*) syntax=aix.new;; \ -- linux*) syntax=linux;; \ -+ linux* | openbsd*) syntax=linux;; \ - macos* | darwin*) syntax=macos;; \ - *) syntax=sysv4;; \ - esac; \ -- $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/vacall-rs6000-$${syntax}.s ; \ -- cp vacall-rs6000-$${syntax}.lo vacall-rs6000.lo ; rm -f vacall-rs6000-$${syntax}.lo ; \ -- if test -f vacall-rs6000-$${syntax}.o; then mv vacall-rs6000-$${syntax}.o vacall-rs6000.o; fi -+ $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/vacall-rs6000-$${syntax}.s -o vacall-rs6000.lo - - vacall-m88k.lo : $(srcdir)/vacall-m88k.s - $(LIBTOOL_COMPILE) $(CC) @GCC_X_NONE@ -c $(srcdir)/vacall-m88k.s Index: patches/patch-callback_vacall_r_configure =================================================================== RCS file: patches/patch-callback_vacall_r_configure diff -N patches/patch-callback_vacall_r_configure --- patches/patch-callback_vacall_r_configure 14 Jun 2010 08:22:19 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-callback_vacall_r_configure,v 1.1 2010/06/14 08:22:19 jasper Exp $ ---- callback/vacall_r/configure.orig Mon Jun 14 10:11:14 2010 -+++ callback/vacall_r/configure Mon Jun 14 10:11:18 2010 -@@ -3026,7 +3026,7 @@ case "$host_cpu" in - arm* ) - host_cpu=arm - ;; -- mips ) -+ mips* ) - echo "$as_me:$LINENO: checking for 64-bit MIPS" >&5 - echo $ECHO_N "checking for 64-bit MIPS... $ECHO_C" >&6 - if test "${cl_cv_host_mips64+set}" = set; then Index: patches/patch-callback_vacall_r_vacall-rs6000-linux_s =================================================================== RCS file: patches/patch-callback_vacall_r_vacall-rs6000-linux_s diff -N patches/patch-callback_vacall_r_vacall-rs6000-linux_s --- patches/patch-callback_vacall_r_vacall-rs6000-linux_s 23 Aug 2010 14:16:09 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,17 +0,0 @@ -$OpenBSD: patch-callback_vacall_r_vacall-rs6000-linux_s,v 1.1 2010/08/23 14:16:09 jasper Exp $ - -We're using %r13 like on NetBSD instead of %r11. - ---- callback/vacall_r/vacall-rs6000-linux.s.orig Mon Jan 29 13:55:18 2001 -+++ callback/vacall_r/vacall-rs6000-linux.s Sun Apr 26 07:01:24 2009 -@@ -35,8 +35,8 @@ __vacall_r: - stw 9,20(1) - addi 0,1,48 - stw 0,40(1) -- lwz 9,0(11) -- lwz 3,4(11) -+ lwz 9,0(13) -+ lwz 3,4(13) - addi 4,1,8 - mtlr 9 - blrl Index: patches/patch-callback_vacall_r_vacall-sparc64_S =================================================================== RCS file: patches/patch-callback_vacall_r_vacall-sparc64_S diff -N patches/patch-callback_vacall_r_vacall-sparc64_S --- patches/patch-callback_vacall_r_vacall-sparc64_S 23 Sep 2010 13:38:33 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,32 +0,0 @@ -$OpenBSD: patch-callback_vacall_r_vacall-sparc64_S,v 1.2 2010/09/23 13:38:33 joshe Exp $ - -Add missing .register declarations. -Load the saved callback data from the stack into %g5, see the - trampoline.c patch for more info. -Initalize __va_alist->anum to 0. - ---- callback/vacall_r/vacall-sparc64.S.orig Fri Nov 26 12:35:23 1999 -+++ callback/vacall_r/vacall-sparc64.S Sat Apr 25 13:58:31 2009 -@@ -4,10 +4,14 @@ - .section ".text" - .align 4 - .global __vacall_r -+ .register %g2, #scratch -+ .register %g3, #scratch - DECLARE_FUNCTION(__vacall_r) - .type __vacall_r,$function - .proc 020 - __vacall_r: -+ ldx [%sp+2239], %g5 -+ add %sp, 32, %sp - !$PROLOGUE$ 0 - save %sp, -448, %sp - !$PROLOGUE$ 1 -@@ -55,6 +59,7 @@ __vacall_r: - st %f31, [%fp+1895] - st %g0, [%fp+1775] - stx %g0, [%fp+1791] -+ st %g0, [%fp+1831] - st %g0, [%fp+1799] - ldx [%g5], %o2 - call %o2, 0 Index: patches/patch-callback_vacall_r_vacall-sparc_S =================================================================== RCS file: patches/patch-callback_vacall_r_vacall-sparc_S diff -N patches/patch-callback_vacall_r_vacall-sparc_S --- patches/patch-callback_vacall_r_vacall-sparc_S 23 Sep 2010 13:38:33 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ -$OpenBSD: patch-callback_vacall_r_vacall-sparc_S,v 1.1 2010/09/23 13:38:33 joshe Exp $ - -Load the saved callback data from the stack into %g2, see the - trampoline.c patch for more info. - ---- callback/vacall_r/vacall-sparc.S.orig Fri Nov 26 12:13:06 1999 -+++ callback/vacall_r/vacall-sparc.S Sat May 2 20:13:30 2009 -@@ -5,6 +5,8 @@ - DECLARE_FUNCTION(__vacall_r) - .proc 020 - C(__vacall_r:) -+ ld [%sp+96], %g2 -+ add %sp, 8, %sp - !$PROLOGUE$ 0 - save %sp, -144, %sp - !$PROLOGUE$ 1 Index: patches/patch-callback_vacall_r_vacall_r_h_in =================================================================== RCS file: patches/patch-callback_vacall_r_vacall_r_h_in diff -N patches/patch-callback_vacall_r_vacall_r_h_in --- patches/patch-callback_vacall_r_vacall_r_h_in 23 Feb 2010 20:11:15 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,70 +0,0 @@ -$OpenBSD: patch-callback_vacall_r_vacall_r_h_in,v 1.1 2010/02/23 20:11:15 jasper Exp $ - -On OpenBSD the mips64(el) architectures define both __mips__ and __mips64__, -which leads to confusion and redeclarations here. - ---- callback/vacall_r/vacall_r.h.in.orig Thu Feb 11 23:44:38 2010 -+++ callback/vacall_r/vacall_r.h.in Thu Feb 11 23:48:22 2010 -@@ -395,7 +395,7 @@ typedef struct - float farg[4]; - double darg[2]; - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - int anum; - float farg[2]; - double darg[2]; -@@ -545,7 +545,7 @@ typedef __va_alist* va_alist; - #define __va_start_struct1(LIST,TYPE_SIZE,TYPE_ALIGN,TYPE_SPLITTABLE) \ - 0 - #endif --#if defined(__mips__) && !defined(__mipsn32__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__m88k__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__m88k__) - #define __va_reg_struct_return(LIST,TYPE_SIZE,TYPE_SPLITTABLE) \ - ((TYPE_SIZE) == 1 || (TYPE_SIZE) == 2 || (TYPE_SIZE) == 4) - /* Test __VA_SMALL_STRUCT_RETURN instead of __VA_REGISTER_STRUCT_RETURN. */ -@@ -651,7 +651,7 @@ typedef __va_alist* va_alist; - /* Padding of non-struct arguments. */ - #define __va_argsize(TYPE_SIZE) \ - (((TYPE_SIZE) + sizeof(__vaword)-1) & -(long)sizeof(__vaword)) --#if defined(__i386__) || defined(__m68k__) || defined(__mips__) && !defined(__mipsn32__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__alpha__) || defined(__arm__) || (defined(__rs6000__) && (defined(_AIX) || (defined(__MACH__) && defined(__APPLE__)))) || defined(__m88k__) || defined(__convex__) || defined(__ia64__) || defined(__x86_64__) -+#if defined(__i386__) || defined(__m68k__) || defined(__mips__) && !defined(__mips64__) && !defined(__mipsn32__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__alpha__) || defined(__arm__) || (defined(__rs6000__) && (defined(_AIX) || (defined(__MACH__) && defined(__APPLE__)))) || defined(__m88k__) || defined(__convex__) || defined(__ia64__) || defined(__x86_64__) - /* args grow up */ - /* small structures < 1 word are adjusted depending on compiler */ - #define __va_arg_leftadjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ -@@ -747,7 +747,7 @@ typedef __va_alist* va_alist; - #define __va_arg_adjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ - __va_arg_rightadjusted(LIST,TYPE_SIZE,TYPE_ALIGN) - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - /* big endian -> small args < 1 word are adjusted to the right */ - #define __va_arg_adjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ - ((LIST)->anum++, __va_arg_rightadjusted(LIST,TYPE_SIZE,TYPE_ALIGN)) -@@ -828,7 +828,7 @@ typedef __va_alist* va_alist; - #if defined(__i386__) || defined(__m68k__) || defined(__mipsn32__) || defined(__mips64__) || defined(__sparc__) || defined(__sparc64__) || defined(__alpha__) || defined(__arm__) || defined(__rs6000__) || defined(__convex__) || defined(__ia64__) || defined(__x86_64__) || defined(__s390__) - #define __va_align_double(LIST) - #endif --#if defined(__mips__) && !defined(__mipsn32__) || defined(__m88k__) -+#if defined(__mips__) && !defined(__mipsn32__) || defined(__m88k__) && !defined(__mips64__) - /* __VA_alignof(double) > sizeof(__vaword) */ - #define __va_align_double(LIST) \ - (LIST)->aptr = ((LIST)->aptr + sizeof(double)-1) & -(long)sizeof(double), -@@ -893,7 +893,7 @@ typedef __va_alist* va_alist; - )) - #endif - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - /* The first 0,1,2 registers are stored elsewhere if they are floating-point - * parameters. - */ -@@ -1092,7 +1092,7 @@ typedef __va_alist* va_alist; - __va_arg_adjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ - ) - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - /* small structures < 1 word are adjusted depending on compiler */ - #define __va_arg_struct(LIST,TYPE_SIZE,TYPE_ALIGN) \ - (__va_align_struct(LIST,TYPE_SIZE,TYPE_ALIGN) \ Index: patches/patch-trampoline_configure =================================================================== RCS file: patches/patch-trampoline_configure diff -N patches/patch-trampoline_configure --- patches/patch-trampoline_configure 14 Jun 2010 08:22:19 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-trampoline_configure,v 1.1 2010/06/14 08:22:19 jasper Exp $ ---- trampoline/configure.orig Mon Jun 14 10:04:16 2010 -+++ trampoline/configure Mon Jun 14 10:04:24 2010 -@@ -5459,7 +5459,7 @@ case "$host_cpu" in - arm* ) - host_cpu=arm - ;; -- mips ) -+ mips* ) - echo "$as_me:$LINENO: checking for 64-bit MIPS" >&5 - echo $ECHO_N "checking for 64-bit MIPS... $ECHO_C" >&6 - if test "${cl_cv_host_mips64+set}" = set; then Index: patches/patch-trampoline_trampoline_c =================================================================== RCS file: patches/patch-trampoline_trampoline_c diff -N patches/patch-trampoline_trampoline_c --- patches/patch-trampoline_trampoline_c 23 Feb 2010 20:11:15 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ -$OpenBSD: patch-trampoline_trampoline_c,v 1.1 2010/02/23 20:11:15 jasper Exp $ ---- trampoline/trampoline.c.orig Thu Feb 11 23:38:13 2010 -+++ trampoline/trampoline.c Thu Feb 11 23:40:59 2010 -@@ -192,8 +192,12 @@ extern RETGETPAGESIZETYPE getpagesize (); - #ifdef linux - #include <asm/cachectl.h> - #else -+#ifdef __OpenBSD__ -+#include <mips64/sysarch.h> -+#else - #ifdef HAVE_SYS_CACHECTL_H - #include <sys/cachectl.h> -+#endif - #endif - #endif - #endif Index: patches/patch-vacall_Makefile_in =================================================================== RCS file: patches/patch-vacall_Makefile_in diff -N patches/patch-vacall_Makefile_in --- patches/patch-vacall_Makefile_in 23 Aug 2010 14:16:09 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-vacall_Makefile_in,v 1.3 2010/08/23 14:16:09 jasper Exp $ ---- vacall/Makefile.in.orig Sun Jan 25 05:46:00 2004 -+++ vacall/Makefile.in Sat Apr 25 21:46:06 2009 -@@ -111,7 +111,7 @@ vacall-rs6000.o : $(srcdir)/vacall-rs6000-aix.old.s $( - case "$(OS)" in \ - aix3*) syntax=aix.old;; \ - aix*) syntax=aix.new;; \ -- linux* | netbsd*) syntax=linux;; \ -+ linux* | netbsd* | openbsd*) syntax=linux;; \ - macos* | darwin*) syntax=macos;; \ - *) syntax=sysv4;; \ - esac; \ Index: patches/patch-vacall_configure =================================================================== RCS file: patches/patch-vacall_configure diff -N patches/patch-vacall_configure --- patches/patch-vacall_configure 14 Jun 2010 08:22:19 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-vacall_configure,v 1.1 2010/06/14 08:22:19 jasper Exp $ ---- vacall/configure.orig Mon Jun 14 10:03:36 2010 -+++ vacall/configure Mon Jun 14 10:03:57 2010 -@@ -2853,7 +2853,7 @@ case "$host_cpu" in - arm* ) - host_cpu=arm - ;; -- mips ) -+ mips* ) - echo "$as_me:$LINENO: checking for 64-bit MIPS" >&5 - echo $ECHO_N "checking for 64-bit MIPS... $ECHO_C" >&6 - if test "${cl_cv_host_mips64+set}" = set; then Index: patches/patch-vacall_vacall-sparc64_S =================================================================== RCS file: patches/patch-vacall_vacall-sparc64_S diff -N patches/patch-vacall_vacall-sparc64_S --- patches/patch-vacall_vacall-sparc64_S 23 Sep 2010 13:38:33 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,24 +0,0 @@ -$OpenBSD: patch-vacall_vacall-sparc64_S,v 1.3 2010/09/23 13:38:33 joshe Exp $ - -Add missing .register declarations. -Initalize __va_alist->anum to 0. - ---- vacall/vacall-sparc64.S.orig Wed Jun 2 12:00:42 2004 -+++ vacall/vacall-sparc64.S Thu Apr 9 19:15:56 2009 -@@ -4,6 +4,8 @@ - .section ".text" - .align 4 - .global __vacall -+ .register %g2, #scratch -+ .register %g3, #scratch - DECLARE_FUNCTION(__vacall) - .type __vacall,$function - .proc 020 -@@ -57,6 +59,7 @@ __vacall: - st %f31, [%fp+1895] - st %g0, [%fp+1775] - stx %g0, [%fp+1791] -+ st %g0, [%fp+1831] - call %o2, 0 - st %g0, [%fp+1799] - ld [%fp+1799], %o0 Index: patches/patch-vacall_vacall_h_in =================================================================== RCS file: patches/patch-vacall_vacall_h_in diff -N patches/patch-vacall_vacall_h_in --- patches/patch-vacall_vacall_h_in 23 Feb 2010 20:11:15 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,75 +0,0 @@ -$OpenBSD: patch-vacall_vacall_h_in,v 1.1 2010/02/23 20:11:15 jasper Exp $ - -On OpenBSD the mips64(el) architectures define both __mips__ and __mips64__, -which leads to confusion and redeclarations here. - ---- vacall/vacall.h.in.orig Thu Feb 11 23:25:13 2010 -+++ vacall/vacall.h.in Thu Feb 11 23:30:34 2010 -@@ -395,7 +395,7 @@ typedef struct - float farg[4]; - double darg[2]; - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - int anum; - float farg[2]; - double darg[2]; -@@ -545,11 +545,11 @@ typedef __va_alist* va_alist; - #define __va_start_struct1(LIST,TYPE_SIZE,TYPE_ALIGN,TYPE_SPLITTABLE) \ - 0 - #endif --#if defined(__mips__) && !defined(__mipsn32__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__m88k__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__m88k__) - #define __va_reg_struct_return(LIST,TYPE_SIZE,TYPE_SPLITTABLE) \ - ((TYPE_SIZE) == 1 || (TYPE_SIZE) == 2 || (TYPE_SIZE) == 4) - /* Test __VA_SMALL_STRUCT_RETURN instead of __VA_REGISTER_STRUCT_RETURN. */ --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - #define __va_start_struct1(LIST,TYPE_SIZE,TYPE_ALIGN,TYPE_SPLITTABLE) \ - ((LIST)->anum++, \ - 0 \ -@@ -651,7 +651,7 @@ typedef __va_alist* va_alist; - /* Padding of non-struct arguments. */ - #define __va_argsize(TYPE_SIZE) \ - (((TYPE_SIZE) + sizeof(__vaword)-1) & -(long)sizeof(__vaword)) --#if defined(__i386__) || defined(__m68k__) || defined(__mips__) && !defined(__mipsn32__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__alpha__) || defined(__arm__) || (defined(__rs6000__) && (defined(_AIX) || (defined(__MACH__) && defined(__APPLE__)))) || defined(__m88k__) || defined(__convex__) || defined(__ia64__) || defined(__x86_64__) -+#if defined(__i386__) || defined(__m68k__) || defined(__mips__) && !defined(__mips64__) && !defined(__mipsn32__) || (defined(__sparc__) && !defined(__sparc64__)) || defined(__alpha__) || defined(__arm__) || (defined(__rs6000__) && (defined(_AIX) || (defined(__MACH__) && defined(__APPLE__)))) || defined(__m88k__) || defined(__convex__) || defined(__ia64__) || defined(__x86_64__) - /* args grow up */ - /* small structures < 1 word are adjusted depending on compiler */ - #define __va_arg_leftadjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ -@@ -747,7 +747,7 @@ typedef __va_alist* va_alist; - #define __va_arg_adjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ - __va_arg_rightadjusted(LIST,TYPE_SIZE,TYPE_ALIGN) - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - /* big endian -> small args < 1 word are adjusted to the right */ - #define __va_arg_adjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ - ((LIST)->anum++, __va_arg_rightadjusted(LIST,TYPE_SIZE,TYPE_ALIGN)) -@@ -828,7 +828,7 @@ typedef __va_alist* va_alist; - #if defined(__i386__) || defined(__m68k__) || defined(__mipsn32__) || defined(__mips64__) || defined(__sparc__) || defined(__sparc64__) || defined(__alpha__) || defined(__arm__) || defined(__rs6000__) || defined(__convex__) || defined(__ia64__) || defined(__x86_64__) || defined(__s390__) - #define __va_align_double(LIST) - #endif --#if defined(__mips__) && !defined(__mipsn32__) || defined(__m88k__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) || defined(__m88k__) - /* __VA_alignof(double) > sizeof(__vaword) */ - #define __va_align_double(LIST) \ - (LIST)->aptr = ((LIST)->aptr + sizeof(double)-1) & -(long)sizeof(double), -@@ -893,7 +893,7 @@ typedef __va_alist* va_alist; - )) - #endif - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - /* The first 0,1,2 registers are stored elsewhere if they are floating-point - * parameters. - */ -@@ -1092,7 +1092,7 @@ typedef __va_alist* va_alist; - __va_arg_adjusted(LIST,TYPE_SIZE,TYPE_ALIGN) \ - ) - #endif --#if defined(__mips__) && !defined(__mipsn32__) -+#if defined(__mips__) && !defined(__mipsn32__) && !defined(__mips64__) - /* small structures < 1 word are adjusted depending on compiler */ - #define __va_arg_struct(LIST,TYPE_SIZE,TYPE_ALIGN) \ - (__va_align_struct(LIST,TYPE_SIZE,TYPE_ALIGN) \ Index: pkg/DESCR =================================================================== RCS file: /d/cvs/ports/devel/ffcall/pkg/DESCR,v retrieving revision 1.2 diff -u -p -r1.2 DESCR --- pkg/DESCR 15 Dec 2003 21:42:18 -0000 1.2 +++ pkg/DESCR 30 Jun 2017 09:00:10 -0000 @@ -10,5 +10,5 @@ The four packages are: trampoline - closures as first-class C functions callback - closures with variable arguments as first-class C - functions (a reentrant combination of vacall and + functions (a reentrant combination of vacall and trampoline) Index: pkg/PLIST =================================================================== RCS file: /d/cvs/ports/devel/ffcall/pkg/PLIST,v retrieving revision 1.3 diff -u -p -r1.3 PLIST --- pkg/PLIST 16 Mar 2015 18:07:40 -0000 1.3 +++ pkg/PLIST 30 Jun 2017 08:20:32 -0000 @@ -12,6 +12,8 @@ lib/libcallback.a lib/libcallback.la @lib lib/libcallback.so.${LIBcallback_VERSION} lib/libtrampoline.a +lib/libtrampoline.la +@lib lib/libtrampoline.so.${LIBtrampoline_VERSION} lib/libvacall.a @man man/man3/avcall.3 @man man/man3/callback.3 -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE