1.0.10.36: support for Darwin versions that support __DARWIN_UNIX03
[sbcl.git] / src / code / foreign.lisp
index 49994d6..805c5ab 100644 (file)
   (let ((extern (extern-alien-name name)))
     (values
      (or (gethash extern table)
-         (gethash (concatenate 'base-string "ldso_stub__" extern) table)))))
+         (gethash (concatenate 'base-string
+                               #!+(and darwin (or x86 x86-64)) "_ldso_stub__"
+                               #!-(and darwin (or x86 x86-64)) "ldso_stub__"
+                               extern) table)))))
 
 (defun find-foreign-symbol-address (name)
   "Returns the address of the foreign symbol NAME, or NIL. Does not enter the
@@ -95,7 +98,11 @@ if the symbol isn't found."
   #!+os-provides-dlopen
   (reopen-shared-objects)
   #!+linkage-table
-  (update-linkage-table))
+  ;; Don't warn about undefined aliens on startup. The same core can
+  ;; reasonably be expected to work with different versions of the
+  ;; same library.
+  (handler-bind ((style-warning #'muffle-warning))
+    (update-linkage-table)))
 
 ;;; Cleanups before saving a core
 #-sb-xc-host
@@ -112,6 +119,7 @@ if the symbol isn't found."
   #!+os-provides-dlopen
   (close-shared-objects))
 
+(declaim (maybe-inline sap-foreign-symbol))
 (defun sap-foreign-symbol (sap)
   (declare (ignorable sap))
   #-sb-xc-host
@@ -151,9 +159,10 @@ if the symbol isn't found."
 (defun !foreign-cold-init ()
   (dolist (symbol *!initial-foreign-symbols*)
     (setf (gethash (car symbol) *static-foreign-symbols*) (cdr symbol)))
+  #!+(and os-provides-dlopen (not win32))
+  (setf *runtime-dlhandle* (dlopen-or-lose))
   #!+os-provides-dlopen
-  (setf *runtime-dlhandle* (dlopen-or-lose)
-        *shared-objects* nil))
+  (setf *shared-objects* nil))
 
 #!-os-provides-dlopen
 (define-unsupported-fun load-shared-object)