master: Detection redefs in genesis for #+linkage-space

snuglas via Sbcl-commits <[email protected]> Tue, 28 Jul 2026 14:43:02 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  10d014d56bbb626b3bfcfcc443d54ae0c3f3823b (commit)
      from  10cab6fb1c5e5764d84d54b1b9e852691c325622 (commit)

- Log -----------------------------------------------------------------
commit 10d014d56bbb626b3bfcfcc443d54ae0c3f3823b
Author: Douglas Katzman <[email protected]>
Date:   Tue Jul 28 14:42:18 2026 +0000

    Detection redefs in genesis for #+linkage-space
    
    And there's no reason to allow continuing, as the error indicates
    with near certainly that cold-init will fail on your screw up.
---
 src/compiler/generic/genesis.lisp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/compiler/generic/genesis.lisp b/src/compiler/generic/genesis.lisp
index 107477ec9..d065d8afb 100644
--- a/src/compiler/generic/genesis.lisp
+++ b/src/compiler/generic/genesis.lisp
@@ -2236,9 +2236,8 @@ core and return a descriptor to it."
                 (if (symbolp name) (cold-intern name) name))))
     (let ((existing (read-wordindexed fdefn sb-vm:fdefn-fun-slot)))
       (unless (or (cold-null existing) (descriptor= existing function))
-        (cerror "Overwrite" "Function multiply defined: ~S. Was ~x is ~x" name
-                 (descriptor-bits existing)
-                 (descriptor-bits function))))
+        (error "Function multiply defined: ~S. Was ~x is ~x" name
+               (descriptor-bits existing) (descriptor-bits function))))
     (write-wordindexed fdefn sb-vm:fdefn-fun-slot function)
     (write-wordindexed/raw
      fdefn sb-vm:fdefn-raw-addr-slot
@@ -2250,6 +2249,10 @@ core and return a descriptor to it."
     fdefn)
   #+linkage-space
   (let ((fname (if (symbolp name) (cold-intern name) (ensure-cold-fdefn name))))
+    (let ((existing (read-bits-wordindexed fname sb-vm:fdefn-fun-slot)))
+      (unless (or (zerop existing) (= existing (descriptor-bits function)))
+        (error "Function multiply defined: ~S. Was ~x is ~x" name
+               existing (descriptor-bits function))))
     (write-wordindexed fname sb-vm:fdefn-fun-slot function)
     fname))
 

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL