Changeset 10107


Ignore:
Timestamp:
Jul 18, 2008, 8:58:42 PM (11 years ago)
Author:
gb
Message:

On Solaris, the handle returned by dlopen() isn't a link map but can
be mapped to one (as on FreeBSD.)

File:
1 edited

Legend:

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

    r10048 r10107  
    278278                         :unsigned-fullword *dlopen-flags*
    279279                         :address)))
    280          (link-map #-freebsd-target handle
    281                    #+freebsd-target (if (%null-ptr-p handle)
    282                                       handle
    283                                       (rlet ((p :address))
    284                                         (if (eql 0 (ff-call
    285                                                     (foreign-symbol-entry "dlinfo")
    286                                                     :address handle
    287                                                     :int #$RTLD_DI_LINKMAP
    288                                                     :address p
    289                                                     :int))
    290                                           (pref p :address)
    291                                           (%null-ptr))))))
     280         (link-map #-(or freebsd-target solaris-target) handle
     281                   #+(or freebsd-target solaris-target)
     282                   (if (%null-ptr-p handle)
     283                     handle
     284                     (rlet ((p :address))
     285                       (if (eql 0 (ff-call
     286                                   (foreign-symbol-entry "dlinfo")
     287                                   :address handle
     288                                   :int #$RTLD_DI_LINKMAP
     289                                   :address p
     290                                   :int))
     291                         (pref p :address)
     292                         (%null-ptr))))))
    292293    (if (%null-ptr-p link-map)
    293294      (error "Error opening shared library ~s: ~a" name (dlerror))
     
    706707                       :unsigned-fullword *dlopen-flags*
    707708                       :address))
    708                 #-freebsd-target (setq map handle)
    709                 #+freebsd-target (setq map
    710                                        (if (%null-ptr-p handle)
    711                                       handle
    712                                       (rlet ((p :address))
    713                                         (if (eql 0 (ff-call
    714                                                     (foreign-symbol-entry "dlinfo")
    715                                                     :address handle
    716                                                     :int #$RTLD_DI_LINKMAP
    717                                                     :address p
    718                                                     :int))
    719                                           (pref p :address)
    720                                           (%null-ptr)))))
     709                #-(or freebsd-target solaris-target) (setq map handle)
     710                #+(or freebsd-target solaris-target)
     711                (setq map
     712                      (if (%null-ptr-p handle)
     713                        handle
     714                        (rlet ((p :address))
     715                          (if (eql 0 (ff-call
     716                                      (foreign-symbol-entry "dlinfo")
     717                                      :address handle
     718                                      :int #$RTLD_DI_LINKMAP
     719                                      :address p
     720                                      :int))
     721                            (pref p :address)
     722                            (%null-ptr)))))
    721723                (if (%null-ptr-p map)
    722724                  (setq lose t)
Note: See TracChangeset for help on using the changeset viewer.