Changeset 9859 for release/1.2


Ignore:
Timestamp:
Jul 1, 2008, 12:09:45 PM (11 years ago)
Author:
gb
Message:

(In 1.2): Handle #+freebsd-target issues (handle returned by #_dlopen isn't
a link map, needs to be mapped to one) in %REOPEN-USER-LIBRARIES.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/1.2/source/level-0/l0-cfm-support.lisp

    r8587 r9859  
    718718             (lose nil))
    719719        (dolist (lib *shared-libraries*)
    720           (let* ((map (shlib.map lib)))
     720          (let* ((map (shlib.map lib))
     721                 (handle (shlib.handle lib)))
    721722            (unless map
    722723              (with-cstrs ((soname (shlib.soname lib)))
    723                 (setq map (ff-call
    724                            (%kernel-import target::kernel-import-GetSharedLibrary)
    725                            :address soname
    726                            :unsigned-fullword *dlopen-flags*
    727                            :address))
     724                (setq handle
     725                      (ff-call
     726                       (%kernel-import target::kernel-import-GetSharedLibrary)
     727                       :address soname
     728                       :unsigned-fullword *dlopen-flags*
     729                       :address))
     730                #-freebsd-target (setq map handle)
     731                #+freebsd-target (setq map
     732                                       (if (%null-ptr-p handle)
     733                                      handle
     734                                      (rlet ((p :address))
     735                                        (if (eql 0 (ff-call
     736                                                    (foreign-symbol-entry "dlinfo")
     737                                                    :address handle
     738                                                    :int #$RTLD_DI_LINKMAP
     739                                                    :address p
     740                                                    :int))
     741                                          (pref p :address)
     742                                          (%null-ptr)))))
    728743                (if (%null-ptr-p map)
    729744                  (setq lose t)
     
    733748                        (%int-to-ptr (pref map :link_map.l_addr))
    734749                        (shlib.map lib) map
     750                        (shlib.handle lib) handle
    735751                        win t))))))
    736752        (when (or (not lose) (not win)) (return)))))
Note: See TracChangeset for help on using the changeset viewer.