(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))))
;; 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
#!+os-provides-dlopen
(reopen-shared-objects)
#!+linkage-table
- (linkage-table-reinit))
+ (update-linkage-table))
;;; Cleanups before saving a core
#-sb-xc-host
;; 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 "~@<Saving cores with alien definitions referring to non-static
- foreign symbols is unsupported on this platform: references to
- such foreign symbols from the restarted core will not work. You
- may be able to work around this limitation by reloading all
- foreign definitions and code using them in the restarted core,
- but no guarantees.~%~:@>")
+ (when (dynamic-foreign-symbols)
+ (warn "~@<Saving cores with alien definitions referring to non-static ~
+ foreign symbols is unsupported on this platform: references to ~
+ such foreign symbols from the restarted core will not work. You ~
+ may be able to work around this limitation by reloading all ~
+ foreign definitions and code using them in the restarted core, ~
+ but no guarantees.~%~%Dynamic foreign symbols in this core: ~
+ ~{~A~^, ~}~:@>" (dynamic-foreign-symbols)))
#!+os-provides-dlopen
(close-shared-objects))
(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