From 8fe8843f2371e31db54a660f318fd3a9488dd367 Mon Sep 17 00:00:00 2001 From: Andreas Wacknitz <A.Wacknitz@gmx.de> Date: Tue, 31 Oct 2023 17:57:27 +0100 Subject: [PATCH] sbcl: update to 2.3.10 --- components/runtime/sbcl/patches/04-rename-mutex.patch | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ components/runtime/sbcl/Makefile | 4 ++-- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/components/runtime/sbcl/Makefile b/components/runtime/sbcl/Makefile index 2f012c5..50b4708 100644 --- a/components/runtime/sbcl/Makefile +++ b/components/runtime/sbcl/Makefile @@ -17,12 +17,12 @@ include ../../../make-rules/shared-macros.mk COMPONENT_NAME= sbcl -COMPONENT_VERSION= 2.3.8 +COMPONENT_VERSION= 2.3.10 COMPONENT_SUMMARY= sbcl - Steel Bank Common Lisp COMPONENT_PROJECT_URL= https://sbcl.sourceforge.io/ COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) COMPONENT_ARCHIVE= $(COMPONENT_SRC)-source.tar.bz2 -COMPONENT_ARCHIVE_HASH= sha256:421571b2ac916e58be8ebcea5ef4abf8d7902863db6a1d0a5efa9500adca0d29 +COMPONENT_ARCHIVE_HASH= sha256:358033315d07e4c5a6c838ee7f22cfc4d49e94848eb71ec1389d494bc32dd2ab COMPONENT_ARCHIVE_URL= https://downloads.sourceforge.net/project/sbcl/sbcl/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE) COMPONENT_FMRI= runtime/sbcl COMPONENT_CLASSIFICATION= Development/Other Languages diff --git a/components/runtime/sbcl/patches/04-rename-mutex.patch b/components/runtime/sbcl/patches/04-rename-mutex.patch new file mode 100644 index 0000000..0ed349d --- /dev/null +++ b/components/runtime/sbcl/patches/04-rename-mutex.patch @@ -0,0 +1,56 @@ +Patch imported from https://sourceforge.net/p/sbcl/sbcl/ci/8fc35f2c2a3d794bc90556b85fa7eb0fa6b220e9/ + +--- a/src/compiler/generic/genesis.lisp ++++ b/src/compiler/generic/genesis.lisp +@@ -3373,7 +3373,7 @@ + (write-structure-object (layout-info (find-layout 'sb-thread::thread)) + *standard-output* "thread_instance" nil) + (write-structure-object (layout-info (find-layout 'sb-thread::mutex)) +- *standard-output* "mutex" nil) ++ *standard-output* "lispmutex" nil) + ;; The os_thread field is either pthread_t or lispobj. + ;; If no threads, then it's lispobj. #+win32 uses lispobj too + ;; but it gets cast to HANDLE upon use. +--- a/src/runtime/backtrace.c ++++ b/src/runtime/backtrace.c +@@ -721,7 +721,7 @@ + // and a mutex have a name at the same slot offset (if #+sb-futex). + // So to reiterate the comment from linux-os.c - + // "Use this only if you know what you're doing" +- struct mutex* lispmutex = (void*)native_pointer(lispthread->waiting_for); ++ struct lispmutex* lispmutex = (void*)native_pointer(lispthread->waiting_for); + if (lispmutex->name != NIL) { + fprintf(stderr, " (MUTEX:\""); + print_string(VECTOR(lispmutex->name), stderr); +--- a/src/runtime/linux-os.c ++++ b/src/runtime/linux-os.c +@@ -125,7 +125,7 @@ + rel_time.tv_sec -= basetime.tv_sec; + rel_time.tv_nsec -= basetime.tv_nsec; + if (rel_time.tv_nsec<0) rel_time.tv_nsec += 1000 * 1000 * 1000, rel_time.tv_sec--; +- lispobj threadname = ti->name; ++ lispobj threadname = ti->_name; + if (events[i].timeout >= 0) // must also have mutex_name in this case + fprintf(stderr, "[%d.%09ld] %s: %s '%s' timeout %ld\n", + (int)rel_time.tv_sec, rel_time.tv_nsec, +@@ -216,8 +216,8 @@ + int t; + + #ifdef MUTEX_EVENTRECORDING +- struct mutex* m = (void*)((char*)lock_word - offsetof(struct mutex,state)); +- char *name = m->name != NIL ? vector_sap((m->name) : "(unnamed)"; ++ struct lispmutex* m = (void*)((char*)lock_word - offsetof(struct lispmutex,uw_state)); ++ char *name = m->name != NIL ? vector_sap(m->name) : "(unnamed)"; + #endif + if (sec<0) { + lisp_mutex_event1("start futex wait", name); +@@ -245,7 +245,7 @@ + futex_wake(int *lock_word, int n) + { + #ifdef MUTEX_EVENTRECORDING +- struct mutex* m = (void*)((char*)lock_word - offsetof(struct mutex,state)); ++ struct lispmutex* m = (void*)((char*)lock_word - offsetof(struct lispmutex,uw_state)); + char *name = m->name != NIL ? vector_sap(m->name) : "(unnamed)"; + lisp_mutex_event1("waking futex", name); + #endif + -- Gitblit v1.9.3