Index: /trunk/src/VBox/Runtime/r0drv/darwin/mach_kernel-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/mach_kernel-r0drv-darwin.cpp	(revision 37561)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/mach_kernel-r0drv-darwin.cpp	(revision 37562)
@@ -211,7 +211,8 @@
         if (pSym->n_type & MACHO_N_STAB)
             continue;
-        const char *pszSym = &pKernel->pachStrTab[(uint32_t)pSym->n_un.n_strx];
-        if (   *pszSym == '_'
-            && strcmp(pszSym + 1, pszSymbol) == 0)
+
+        const char *pszTabName= &pKernel->pachStrTab[(uint32_t)pSym->n_un.n_strx];
+        if (   *pszTabName == '_'
+            && strcmp(pszTabName + 1, pszSymbol) == 0)
             return pSym->n_value;
     }
@@ -224,4 +225,7 @@
 
 
+extern "C" void OSRuntimeFinalizeCPP(void);
+extern "C" void OSRuntimeInitializeCPP(void);
+
 static int rtR0DarwinMachKernelCheckStandardSymbols(PRTR0DARWINKERNEL pKernel)
 {
@@ -232,10 +236,10 @@
     } const s_aStandardCandles[] =
     {
-#if 0/// @todo def IN_RING0
+#ifdef IN_RING0
 # define KNOWN_ENTRY(a_Sym)  { #a_Sym, (uintptr_t)&a_Sym }
 #else
 # define KNOWN_ENTRY(a_Sym)  { #a_Sym, 0 }
 #endif
-        KNOWN_ENTRY(IOMAlloc),
+        KNOWN_ENTRY(IOMalloc),
         KNOWN_ENTRY(IOFree),
         KNOWN_ENTRY(OSRuntimeFinalizeCPP),
@@ -322,5 +326,5 @@
                     if (pSym->n_sect > pKernel->cSections)
                         RETURN_VERR_BAD_EXE_FORMAT;
-                    if (pSym->n_desc != 0)
+                    if (pSym->n_desc & ~(REFERENCED_DYNAMICALLY))
                         RETURN_VERR_BAD_EXE_FORMAT;
                     if (pSym->n_value < pKernel->apSections[pSym->n_sect - 1]->addr)
@@ -332,7 +336,11 @@
 
                 case MACHO_N_ABS:
+#if 0 /* Spec say MACHO_NO_SECT, __mh_execute_header has 1 with 10.7/amd64 */
                     if (pSym->n_sect != MACHO_NO_SECT)
-                        RETURN_VERR_BAD_EXE_FORMAT;
-                    if (pSym->n_desc != 0)
+#else
+                    if (pSym->n_sect > pKernel->cSections) 
+#endif
+                        RETURN_VERR_BAD_EXE_FORMAT;
+                    if (pSym->n_desc & ~(REFERENCED_DYNAMICALLY))
                         RETURN_VERR_BAD_EXE_FORMAT;
                     break;
