Index: /trunk/source/level-0/l0-cfm-support.lisp
===================================================================
--- /trunk/source/level-0/l0-cfm-support.lisp	(revision 15085)
+++ /trunk/source/level-0/l0-cfm-support.lisp	(revision 15086)
@@ -171,4 +171,10 @@
     `(%get-ptr ,ptr ,offset)))
 
+(defmacro link_map.l_ld (ptr)
+  (let* ((record (%find-foreign-record :link_map))
+         (field (%find-foreign-record-type-field record :l_ld))
+         (offset (/ (foreign-record-field-offset field) 8)))
+    `(%get-ptr ,ptr ,offset)))
+
 (defun soname-ptr-from-link-map (map)
   (let* ((path (pref map :link_map.l_name)))
@@ -180,5 +186,5 @@
         path
         (with-macptrs ((dyn-strings)
-                       (dynamic-entries (pref map :link_map.l_ld)))
+                       (dynamic-entries (link_map.l_ld map)))
           (if (%null-ptr-p dynamic-entries)
             (%null-ptr)
@@ -257,5 +263,5 @@
     ;; address within the library and returns a reasonable "base address".
     (when (%null-ptr-p base)
-      (let* ((addr (%library-base-containing-address (pref m :link_map.l_ld))))
+      (let* ((addr (%library-base-containing-address (link_map.l_ld m))))
         (if addr (setq base addr))))
     (unless (%null-ptr-p base)
