0.pre7.67:
[sbcl.git] / src / code / load.lisp
index de45d75..e68ff75 100644 (file)
          (or (check-version "native code"
                             +backend-fasl-file-implementation+
                             +fasl-file-version+)
-             (check-version "byte code"
-                            (backend-byte-fasl-file-implementation)
-                            +fasl-file-version+)
              (error "~S was compiled for implementation ~A, but this is a ~A."
                     stream
                     implementation
   ;; don't. (CMU CL did, but implemented it in a non-ANSI way, and I
   ;; just disabled that instead of rewriting it.) -- WHN 20000131
   (declare (ignore print))
-
-  ;; FIXME: In sbcl-0.6.12.8 the OpenBSD implementation of FILE-LENGTH
-  ;; broke because changed handling of Unix stat(2) stuff couldn't
-  ;; deal with OpenBSD's 64-bit size slot. Once that's fixed, this
-  ;; code can be restored.
-  #!-openbsd
   (when (zerop (file-length stream))
     (error "attempt to load an empty FASL file:~%  ~S" (namestring stream)))
-
   (do-load-verbose stream verbose)
   (let* ((*fasl-input-stream* stream)
         (*current-fop-table* (or (pop *free-fop-tables*) (make-array 1000)))
       (fill *fop-stack* nil :end *fop-stack-pointer-on-entry*)
       (fill *current-fop-table* nil)))
   t)
+
+;;; This is used in in target-load and also genesis, using
+;;; *COLD-FOREIGN-SYMBOL-TABLE*. All the speculative prefix-adding
+;;; code for foreign symbol lookup should be here.
+(defun find-foreign-symbol-in-table (name table)
+  (let ((prefixes
+         #!+(or linux freebsd) #("" "ldso_stub__")
+        #!+openbsd #("" "_")))    
+    (some (lambda (prefix)
+           (gethash (concatenate 'string prefix name)
+                    table
+                    nil))
+         prefixes)))
+
 \f
 ;;;; stuff for debugging/tuning by collecting statistics on FOPs (?)