VirtualBox

Changeset 40975 in vbox for trunk/src/bldprogs


Ignore:
Timestamp:
Apr 18, 2012 2:49:24 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77533
Message:

VBoxTpG,SUPDrv,VBoxVMM: Working on static user land probes for the non-native platforms.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bldprogs/VBoxTpG.cpp

    r40892 r40975  
    183183static const char          *g_pszProbeFnName            = "SUPR0TracerFireProbe";
    184184static bool                 g_fProbeFnImported          = true;
     185static bool                 g_fPic                      = false;
    185186/** @} */
    186187
     
    750751                    g_fProbeFnImported ? "IMP" : "",
    751752                    g_pszProbeFnName);
    752     if (fMachO64 && g_fProbeFnImported)
     753    if (fMachO64 && g_fProbeFnImported && !g_fPic)
    753754        ScmStreamPrintf(pStrm,
    754755                        "g_pfnVtgProbeFn:\n"
     
    792793             */
    793794            if (g_cBits == 32)
    794                 ScmStreamPrintf(pStrm, g_fProbeFnImported ?
     795                ScmStreamPrintf(pStrm, g_fPic ?
     796                                "        call    .mov_ecx_eip_plus_5\n"
     797                                ".got_eip:\n"
     798                                "        add     ecx, _GLOBAL_OFFSET_TABLE + ($$ - .got_eip) wrt ..gotpc\n"
     799                                "        mov     ecx, [%s@GOT + ecx]\n"
     800                                "        jmp     ecx\n"
     801                                ".mov_ecx_eip_plus_5:\n"
     802                                "        pop     ecx\n"
     803                                "        jmp     ecx\n"
     804                                : g_fProbeFnImported ?
    795805                                "        mov     ecx, IMP2(%s)\n"
    796806                                "        jmp     ecx\n"
     
    809819                                "        jmp     [g_pfnVtgProbeFn wrt rip]\n");
    810820            else
    811                 ScmStreamPrintf(pStrm, g_fProbeFnImported ?
    812                                 "        lea     rax, [IMP2(%s)]\n" //??? macho64?
     821                ScmStreamPrintf(pStrm, g_fPic ?
     822                                "        jmp     [rel %s wrt ..got]\n"
     823                                : g_fProbeFnImported ?
     824                                "        lea     rax, [IMP2(%s)]\n"
    813825                                "        jmp     rax\n"
    814826                                :
     
    20432055        kVBoxTpGOpt_AssemblerOutputOpt,
    20442056        kVBoxTpGOpt_AssemblerOption,
     2057        kVBoxTpGOpt_Pic,
    20452058        kVBoxTpGOpt_ProbeFnName,
    20462059        kVBoxTpGOpt_ProbeFnImported,
     2060        kVBoxTpGOpt_ProbeFnNotImported,
    20472061        kVBoxTpGOpt_End
    20482062    };
     
    20652079        { "--assembler-output-opt",             kVBoxTpGOpt_AssemblerOutputOpt,         RTGETOPT_REQ_STRING  },
    20662080        { "--assembler-option",                 kVBoxTpGOpt_AssemblerOption,            RTGETOPT_REQ_STRING  },
     2081        { "--pic",                              kVBoxTpGOpt_Pic,                        RTGETOPT_REQ_NOTHING },
    20672082        { "--probe-fn-name",                    kVBoxTpGOpt_ProbeFnName,                RTGETOPT_REQ_STRING  },
    2068         { "--probe-fn-imported",                kVBoxTpGOpt_ProbeFnImported,            RTGETOPT_REQ_BOOL    },
     2083        { "--probe-fn-imported",                kVBoxTpGOpt_ProbeFnImported,            RTGETOPT_REQ_NOTHING },
     2084        { "--probe-fn-not-imported",            kVBoxTpGOpt_ProbeFnNotImported,         RTGETOPT_REQ_NOTHING },
    20692085        /** @todo We're missing a bunch of assembler options! */
    20702086    };
     
    21892205                break;
    21902206
     2207            case kVBoxTpGOpt_Pic:
     2208                g_fPic = true;
     2209                break;
     2210
    21912211            case kVBoxTpGOpt_ProbeFnName:
    21922212                g_pszProbeFnName = ValueUnion.psz;
     
    21942214
    21952215            case kVBoxTpGOpt_ProbeFnImported:
    2196                 g_pszProbeFnName = ValueUnion.psz;
     2216                g_fProbeFnImported = true;
     2217                break;
     2218
     2219            case kVBoxTpGOpt_ProbeFnNotImported:
     2220                g_fProbeFnImported = false;
    21972221                break;
    21982222
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette