Hi,

Here's an update to SBCL to bring it to latest version as I noticed the release
fixes the thread support on OpenBSD.

This also changes the thread backend to futex and adds support for core
compression using zlib.

I haven't tested this that much yet but tests seem to pass on amd64 at
least with it. 

Timo

Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/sbcl/Makefile,v
retrieving revision 1.38
diff -u -p -u -p -r1.38 Makefile
--- Makefile    24 Jun 2018 18:33:36 -0000      1.38
+++ Makefile    3 Dec 2018 07:06:41 -0000
@@ -6,7 +6,7 @@ USE_WXNEEDED =          Yes
 
 COMMENT=               compiler and runtime system for ANSI Common Lisp
 
-V =                    1.4.8
+V =                    1.4.14
 DISTNAME=              sbcl-${V}-source
 PKGNAME=               sbcl-${V}
 WRKDIST=               ${WRKDIR}/sbcl-${V}
@@ -21,7 +21,7 @@ PERMIT_PACKAGE_CDROM= Yes
 
 MASTER_SITES=          ${MASTER_SITE_SOURCEFORGE:=sbcl/}
 
-WANTLIB=               c m util
+WANTLIB=               c m util z
 
 PSEUDO_FLAVORS=                native_bootstrap
 
@@ -30,10 +30,10 @@ PSEUDO_FLAVORS=             native_bootstrap
 FLAVORS=               threads
 FLAVOR?=
 
-EXTRA_PARAMS=
+EXTRA_PARAMS=          --with-sb-core-compression
 .if ${FLAVOR:Mthreads}
 ONLY_FOR_ARCHS =       amd64
-EXTRA_PARAMS+=         --with-sb-thread
+EXTRA_PARAMS+=         --with-sb-thread --with-sb-futex
 WANTLIB+=              pthread
 .endif
 
Index: distinfo
===================================================================
RCS file: /cvs/ports/lang/sbcl/distinfo,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 distinfo
--- distinfo    24 Jun 2018 18:33:36 -0000      1.16
+++ distinfo    3 Dec 2018 07:06:41 -0000
@@ -1,2 +1,2 @@
-SHA256 (sbcl-1.4.8-source.tar.bz2) = 
ziS2K4hIJiHCKKT9bIAjUDMLYmPhsbmEYO60qB1/szU=
-SIZE (sbcl-1.4.8-source.tar.bz2) = 6040563
+SHA256 (sbcl-1.4.14-source.tar.bz2) = 
TfJu1E1FWAzuy/nhpunkCV3nPHaZxrlFu+jMhxAwHCw=
+SIZE (sbcl-1.4.14-source.tar.bz2) = 6187821
Index: patches/patch-src_runtime_Config_generic-openbsd
===================================================================
RCS file: 
/cvs/ports/lang/sbcl/patches/patch-src_runtime_Config_generic-openbsd,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-src_runtime_Config_generic-openbsd
--- patches/patch-src_runtime_Config_generic-openbsd    8 Mar 2018 15:17:39 
-0000       1.3
+++ patches/patch-src_runtime_Config_generic-openbsd    3 Dec 2018 07:06:41 
-0000
@@ -12,12 +12,12 @@ Index: src/runtime/Config.generic-openbs
  # provided with absolutely no warranty. See the COPYING and CREDITS
  # files for more information.
  
--LINKFLAGS += -export-dynamic -Wl,-z,wxneeded
+-LINKFLAGS += -Wl,-z,wxneeded
 +LINKFLAGS += -Wl,--export-dynamic -Wl,-z,wxneeded
  OS_LIBS += -lutil
  
  ifdef LISP_FEATURE_SB_THREAD
-@@ -17,9 +17,7 @@ CFLAGS += -pthread
+@@ -17,9 +17,7 @@ CFLAGS += -pthread -DOS_THREAD_STACK
  OS_LIBS += -pthread
  endif
  
Index: patches/patch-src_runtime_GNUmakefile
===================================================================
RCS file: /cvs/ports/lang/sbcl/patches/patch-src_runtime_GNUmakefile,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 patch-src_runtime_GNUmakefile
--- patches/patch-src_runtime_GNUmakefile       8 Mar 2018 15:17:39 -0000       
1.8
+++ patches/patch-src_runtime_GNUmakefile       3 Dec 2018 07:06:41 -0000
@@ -2,7 +2,7 @@ $OpenBSD: patch-src_runtime_GNUmakefile,
 Index: src/runtime/GNUmakefile
 --- src/runtime/GNUmakefile.orig
 +++ src/runtime/GNUmakefile
-@@ -30,7 +30,7 @@ __LDFLAGS__ =
+@@ -34,7 +34,7 @@ __LDFLAGS__ =
  
  include ../../output/prefix.def
  
Index: patches/patch-src_runtime_bsd-os_c
===================================================================
RCS file: patches/patch-src_runtime_bsd-os_c
diff -N patches/patch-src_runtime_bsd-os_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_runtime_bsd-os_c  3 Dec 2018 07:06:41 -0000
@@ -0,0 +1,63 @@
+OB$OpenBSD$
+
+Index: src/runtime/bsd-os.c
+--- src/runtime/bsd-os.c.orig
++++ src/runtime/bsd-os.c
+@@ -693,7 +693,57 @@ os_dlsym(void *handle, const char *symbol)
+     return ret;
+ }
+ 
++#if defined(LISP_FEATURE_SB_THREAD) && defined(LISP_FEATURE_SB_FUTEX) \
++    && !defined(LISP_FEATURE_SB_PTHREAD_FUTEX)
++
++#include <sys/syscall.h>
++#include <unistd.h>
++
++int __syscall(quad_t, ...);
++
++#define       FUTEX_WAIT              1
++#define       FUTEX_WAKE              2
++#define       FUTEX_REQUEUE           3
++
++#define       FUTEX_PRIVATE_FLAG      128
++
++#define       FUTEX_WAIT_PRIVATE      (FUTEX_WAIT | FUTEX_PRIVATE_FLAG)
++#define       FUTEX_WAKE_PRIVATE      (FUTEX_WAKE | FUTEX_PRIVATE_FLAG)
++#define       FUTEX_REQUEUE_PRIVATE   (FUTEX_REQUEUE | FUTEX_PRIVATE_FLAG)
++
++int
++futex_wait(int *lock_word, int oldval, long sec, unsigned long usec)
++{
++  struct timespec timeout;
++  int t;
++
++  if (sec < 0) {
++      t = __syscall(SYS_futex, lock_word, FUTEX_WAIT, oldval, NULL, NULL);
++  }
++  else {
++      timeout.tv_sec = sec;
++      timeout.tv_nsec = usec * 1000;
++      t = __syscall(SYS_futex, lock_word, FUTEX_WAIT, oldval, &timeout, NULL);
++  }
++  if (t == 0)
++      return 0;
++  else if (errno == ETIMEDOUT)
++      return 1;
++  else if (errno == EINTR)
++      return 2;
++  else
++      /* EWOULDBLOCK and others, need to check the lock */
++      return -1;
++}
++
++int
++futex_wake(int *lock_word, int n)
++{
++    return (__syscall(SYS_futex, lock_word, FUTEX_WAKE, n, NULL, NULL));
++}
++
+ #endif
++#endif /* __OpenBSD__ */
+ 
+ #if defined(LISP_FEATURE_SB_WTIMER) && !defined(LISP_FEATURE_DARWIN)
+ /*
Index: patches/patch-src_runtime_run-program_c
===================================================================
RCS file: /cvs/ports/lang/sbcl/patches/patch-src_runtime_run-program_c,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 patch-src_runtime_run-program_c
--- patches/patch-src_runtime_run-program_c     8 Mar 2018 15:17:39 -0000       
1.1
+++ patches/patch-src_runtime_run-program_c     3 Dec 2018 07:06:41 -0000
@@ -6,7 +6,7 @@ copy of environ than libc.
 Index: src/runtime/run-program.c
 --- src/runtime/run-program.c.orig
 +++ src/runtime/run-program.c
-@@ -200,14 +200,18 @@ int spawn(char *program, char *argv[], int sin, int so
+@@ -202,14 +202,18 @@ int spawn(char *program, char *argv[], int sin, int so
      if (pwd && chdir(pwd) < 0) {
         failure_code = 3;
      } else {
Index: patches/patch-src_runtime_thread_c
===================================================================
RCS file: patches/patch-src_runtime_thread_c
diff -N patches/patch-src_runtime_thread_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_runtime_thread_c  3 Dec 2018 07:06:41 -0000
@@ -0,0 +1,22 @@
+$OpenBSD: patch-src_runtime_thread_c,v 1.1 2018/03/08 15:17:39 sthen Exp $
+
+Index: src/runtime/thread.c
+--- src/runtime/thread.c.orig
++++ src/runtime/thread.c
+@@ -684,9 +684,16 @@ create_thread_struct(lispobj initial_function) {
+      * on the alignment passed from os_validate, since that might
+      * assume the current (e.g. 4k) pagesize, while we calculate with
+      * the biggest (e.g. 64k) pagesize allowed by the ABI. */
++#if defined(LISP_FEATURE_OPENBSD) && defined(MAP_STACK)
++    void *spaces = mmap(0, THREAD_STRUCT_SIZE, PROT_READ|PROT_WRITE,
++      MAP_PRIVATE|MAP_ANON|MAP_STACK, -1, 0);
++    if(spaces == MAP_FAILED)
++        return NULL;
++#else
+     void *spaces = os_validate(IS_THREAD_STRUCT, NULL, THREAD_STRUCT_SIZE);
+     if(!spaces)
+         return NULL;
++#endif
+     /* Aligning up is safe as THREAD_STRUCT_SIZE has
+      * THREAD_ALIGNMENT_BYTES padding. */
+     char *aligned_spaces = PTR_ALIGN_UP(spaces, THREAD_ALIGNMENT_BYTES);
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/lang/sbcl/pkg/PLIST,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 PLIST
--- pkg/PLIST   8 Mar 2018 15:17:39 -0000       1.11
+++ pkg/PLIST   3 Dec 2018 07:06:41 -0000
@@ -9,6 +9,8 @@ lib/sbcl/contrib/sb-aclrepl.asd
 lib/sbcl/contrib/sb-aclrepl.fasl
 lib/sbcl/contrib/sb-bsd-sockets.asd
 lib/sbcl/contrib/sb-bsd-sockets.fasl
+lib/sbcl/contrib/sb-capstone.asd
+lib/sbcl/contrib/sb-capstone.fasl
 lib/sbcl/contrib/sb-cltl2.asd
 lib/sbcl/contrib/sb-cltl2.fasl
 lib/sbcl/contrib/sb-concurrency.asd

Reply via email to