aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorGuillaume Le Vaillant <glv@posteo.net>2024-01-09 09:59:46 +0100
committerGuillaume Le Vaillant <glv@posteo.net>2024-01-09 10:04:20 +0100
commitea832b44b79fb06bac88679029773006fea15827 (patch)
tree2507d27d38dadb9c0145ad365f48a9ebe116fd93 /gnu/packages/patches
parent7f530f52c9c07b34c4df9c8fbeae0c3c9d0345e9 (diff)
downloadguix-ea832b44b79fb06bac88679029773006fea15827.tar.gz
guix-ea832b44b79fb06bac88679029773006fea15827.zip
gnu: sbcl: Fix build on powerpc64.
* gnu/packages/patches/sbcl-fix-ppc64-build.patch: New file. * gnu/local.mk: Register it. * gnu/packages/lisp.scm (sbcl)[source]: Use it. Change-Id: If81321bc7e4075ac7ec63f7b8d623011b4b975d5
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/sbcl-fix-ppc64-build.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/gnu/packages/patches/sbcl-fix-ppc64-build.patch b/gnu/packages/patches/sbcl-fix-ppc64-build.patch
new file mode 100644
index 0000000000..a7d4d9a21e
--- /dev/null
+++ b/gnu/packages/patches/sbcl-fix-ppc64-build.patch
@@ -0,0 +1,27 @@
+commit 255f3ead060129aa097b62f10d054cdc4997a431
+Author: Douglas Katzman <dougk@google.com>
+Date: Mon Jan 1 23:59:50 2024 -0500
+
+ Fix ppc64 failure-to-build (from a few weeks ago)
+
+ Git rev 7354472bb5 caused NIL to get a bogus widetag.
+
+diff --git a/make-target-2-load.lisp b/make-target-2-load.lisp
+index 6571ec27d..daef942ea 100644
+--- a/make-target-2-load.lisp
++++ b/make-target-2-load.lisp
+@@ -339,7 +339,13 @@ Please check that all strings which were not recognizable to the compiler
+
+
+ (do-all-symbols (symbol)
+- (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+)
++ ;; Don't futz with the header of static symbols.
++ ;; Technically LOGIOR-HEADER-BITS can only be used on an OTHER-POINTER-LOWTAG
++ ;; objects, so modifying NIL should not ever work, but it's especially wrong
++ ;; on ppc64 where OTHER- and LIST- pointer lowtags are 10 bytes apart instead
++ ;; of 8, so this was making a random alteration to the header.
++ (unless (eq (heap-allocated-p symbol) :static)
++ (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+))
+
+ ;; A symbol whose INFO slot underwent any kind of manipulation
+ ;; such that it now has neither properties nor globaldb info,