Index: /trunk/src/bldprogs/VBoxTpG.cpp
===================================================================
--- /trunk/src/bldprogs/VBoxTpG.cpp	(revision 46861)
+++ /trunk/src/bldprogs/VBoxTpG.cpp	(revision 46862)
@@ -783,6 +783,5 @@
      */
     bool const fWin64   = g_cBits == 64 && (!strcmp(g_pszAssemblerFmtVal, "win64") || !strcmp(g_pszAssemblerFmtVal, "pe64"));
-    bool const fMachO64 = g_cBits == 64 && !strcmp(g_pszAssemblerFmtVal, "macho64");
-    bool const fMachO32 = g_cBits == 32 && !strcmp(g_pszAssemblerFmtVal, "macho32");
+    bool const fElf     = !strcmp(g_pszAssemblerFmtVal, "elf32") || !strcmp(g_pszAssemblerFmtVal, "elf64");
     ScmStreamPrintf(pStrm,
                     "\n"
@@ -791,12 +790,12 @@
                     ";\n"
                     "BEGINCODE\n"
-                    "extern %sNAME(%s)\n",
-                    g_fProbeFnImported ? "IMP" : "",
-                    g_pszProbeFnName);
-    if (fMachO64 && g_fProbeFnImported && !g_fPic)
+                    );
+    if (g_fProbeFnImported)
         ScmStreamPrintf(pStrm,
-                        "g_pfnVtgProbeFn:\n"
-                        "   dq NAME(%s)\n",
+                        "EXTERN_IMP2 %s\n"
+                        "BEGINCODE ; EXTERN_IMP2 changes section\n",
                         g_pszProbeFnName);
+    else
+        ScmStreamPrintf(pStrm, "extern NAME(%s)\n", g_pszProbeFnName);
 
     RTListForEach(&g_ProviderHead, pProvider, VTGPROVIDER, ListEntry)
@@ -836,5 +835,5 @@
              */
             if (g_cBits == 32)
-                ScmStreamPrintf(pStrm, g_fPic ?
+                ScmStreamPrintf(pStrm, g_fPic && fElf ?
                                 "        jmp     %s wrt ..plt\n"
                                 : g_fProbeFnImported ?
@@ -844,9 +843,6 @@
                                 "        jmp     NAME(%s)\n"
                                 , g_pszProbeFnName);
-            else if (fMachO64 && g_fProbeFnImported)
-                ScmStreamPrintf(pStrm,
-                                "        jmp     [g_pfnVtgProbeFn wrt rip]\n");
             else
-                ScmStreamPrintf(pStrm, g_fPic ?
+                ScmStreamPrintf(pStrm, g_fPic && fElf ?
                                 "        jmp     [rel %s wrt ..got]\n"
                                 : g_fProbeFnImported ?
