- ;; Doesn't take care of it's own locking -- callers are responsible
- (maphash (lambda (name info)
- (let ((datap (linkage-info-datap info))
- (table-address (linkage-info-address info))
- (real-address (get-dynamic-foreign-symbol-address name)))
- (cond (real-address
- (write-linkage-table-entry table-address
- real-address
- datap))
- (t
- (/show0 "oops")
- (cerror "Ignore. Attempts to access this foreign symbol ~
- will lead to badness characterized by ~
- segfaults, and potential corruption."
- "Could not resolve foreign function ~S for ~
- linkage-table." name)))))
- *linkage-info*))
+ (dohash ((name-and-datap info) *linkage-info* :locked t)
+ (let* ((name (car name-and-datap))
+ (datap (cdr name-and-datap))
+ (table-address (linkage-info-address info))
+ (real-address
+ (ensure-dynamic-foreign-symbol-address name datap)))
+ (aver (and table-address real-address))
+ (write-linkage-table-entry table-address
+ real-address
+ datap))))