-(defun do-core-fixups (code fixups)
- (declare (list fixups))
- (dolist (info fixups)
- (let* ((kind (first info))
- (fixup (second info))
- (name (fixup-name fixup))
- (flavor (fixup-flavor fixup))
- (offset (third info))
- (value (ecase flavor
- (:assembly-routine
- (aver (symbolp name))
- (or (gethash name *assembler-routines*)
- (error "undefined assembler routine: ~S" name)))
- (:foreign
- (aver (stringp name))
- (or (foreign-symbol-address-as-integer name)
- (error "unknown foreign symbol: ~S")))
- #!+x86
- (:code-object
- (aver (null name))
- (values (get-lisp-obj-address code) t)))))
- (sb!vm:fixup-code-object code offset value kind))))
+(defun do-core-fixups (code fixup-notes)
+ (declare (list fixup-notes))
+ (dolist (note fixup-notes)
+ (let* ((kind (fixup-note-kind note))
+ (fixup (fixup-note-fixup note))
+ (position (fixup-note-position note))
+ (name (fixup-name fixup))
+ (flavor (fixup-flavor fixup))
+ (value (ecase flavor
+ (:assembly-routine
+ (aver (symbolp name))
+ (or (gethash name *assembler-routines*)
+ (error "undefined assembler routine: ~S" name)))
+ (:foreign
+ (aver (stringp name))
+ ;; FOREIGN-SYMBOL-ADDRESS signals an error
+ ;; if the symbol isn't found.
+ (foreign-symbol-address name))
+ #!+linkage-table
+ (:foreign-dataref
+ (aver (stringp name))
+ (foreign-symbol-address name t))
+ #!+(or x86 x86-64)
+ (:code-object
+ (aver (null name))
+ (values (get-lisp-obj-address code) t)))))
+ (sb!vm:fixup-code-object code position value kind))))