X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fforeign.lisp;h=d3837548d56befaef6cda086ab668f455fe42b6e;hb=5cc68148d1a5f9bacf4eb12e396b680d992fc2c2;hp=5cc3cd38a8fec1915fb543661048a160d33230a0;hpb=1f7bb609de31bba1a85817496ecbde52a07edf14;p=sbcl.git diff --git a/src/code/foreign.lisp b/src/code/foreign.lisp index 5cc3cd3..d383754 100644 --- a/src/code/foreign.lisp +++ b/src/code/foreign.lisp @@ -30,7 +30,7 @@ (progn #-sb-xc-host (values #!-linkage-table - (get-dynamic-foreign-symbol-address name) + (get-dynamic-foreign-symbol-address name datap) #!+linkage-table (ensure-foreign-symbol-linkage name datap) t)))) @@ -52,8 +52,7 @@ ;; If the address is from linkage-table and refers to data ;; we need to do a bit of juggling. (if (and sharedp datap) - ;; FIXME: 64bit badness here - (int-sap (sap-ref-32 (int-sap addr) 0)) + (int-sap (sap-ref-word (int-sap addr) 0)) (int-sap addr))))) #-sb-xc-host @@ -61,7 +60,7 @@ #!+os-provides-dlopen (reopen-shared-objects) #!+linkage-table - (linkage-table-reinit)) + (update-linkage-table)) ;;; Cleanups before saving a core #-sb-xc-host @@ -71,12 +70,14 @@ ;; get dynamic symbols thru the runtime as well, so cheking the ;; list of *shared-objects* is not enough. Eugh & blech. #!+(and os-provides-dlopen (not linkage-table)) - (warn "~@") + (when (dynamic-foreign-symbols) + (warn "~@" (dynamic-foreign-symbols))) #!+os-provides-dlopen (close-shared-objects)) @@ -120,7 +121,7 @@ (dolist (symbol *!initial-foreign-symbols*) (setf (gethash (car symbol) *static-foreign-symbols*) (cdr symbol))) #!+os-provides-dlopen - (setf *runtime-dlhandle* (dlopen-or-lose nil) + (setf *runtime-dlhandle* (dlopen-or-lose) *shared-objects* nil)) #!-os-provides-dlopen