Index: /trunk/src/VBox/Runtime/r0drv/darwin/dbgkrnlinfo-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/dbgkrnlinfo-r0drv-darwin.cpp	(revision 41051)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/dbgkrnlinfo-r0drv-darwin.cpp	(revision 41052)
@@ -145,4 +145,6 @@
     /** The file offset of the symbol table. */
     uint32_t            offSyms;
+    /** Offset between link address and actual load address. */
+    uintptr_t           offLoad;
     /** @} */
 
@@ -359,5 +361,4 @@
  * Looks up a kernel symbol.
  *
- *
  * @returns The symbol address on success, 0 on failure.
  * @param   pThis               The internal scratch data.
@@ -380,5 +381,5 @@
         if (   *pszTabName == '_'
             && strcmp(pszTabName + 1, pszSymbol) == 0)
-            return pSym->n_value;
+            return pSym->n_value + pThis->offLoad;
     }
 #else
@@ -524,4 +525,6 @@
         KNOWN_ENTRY(vm_map_wire),
         KNOWN_ENTRY(PE_kputc),
+        KNOWN_ENTRY(kernel_map),
+        KNOWN_ENTRY(kernel_pmap),
     };
 
@@ -1037,5 +1040,15 @@
         rc = rtR0DbgKrnlDarwinLoadSymTab(pThis);
     if (RT_SUCCESS(rc))
+    {
+#ifdef IN_RING0
+        /*
+         * Determine the load displacement (10.8 kernels are PIE).
+         */
+        uintptr_t uLinkAddr = rtR0DbgKrnlDarwinLookup(pThis, "kernel_map");
+        if (uLinkAddr != 0)
+            pThis->offLoad = (uintptr_t)&kernel_map - uLinkAddr;
+#endif
         rc = rtR0DbgKrnlDarwinCheckStandardSymbols(pThis);
+    }
 
     rtR0DbgKrnlDarwinLoadDone(pThis);
