VirtualBox

Changeset 40975 in vbox


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.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.kmk

    r40957 r40975  
    620620 VBOX_WITH_DTRACE_R0DRV = 1
    621621endif
    622 # Set this to enable all kernel driver dtrace probes.
    623 if1of ($(KBUILD_TARGET), darwin solaris)
    624  VBOX_WITH_NATIVE_DTRACE_R0DRV = 1
    625 endif
    626622# Set this to enable dtrace probes in platform agnostic kernel code.
    627623ifn1of ($(KBUILD_TARGET), os2)
     
    632628# Set this to enable support for dtrace probes in guest code.
    633629#VBOX_WITH_DTRACE_GST = 1
     630# Set this to indicate that the host shipts with DTrace.
     631if1of ($(KBUILD_TARGET), darwin solaris freebsd)
     632 VBOX_WITH_NATIVE_DTRACE = 1
     633endif
    634634## @}
    635635
     
    29442944 TEMPLATE_VBOXR0DRV_DTRACETOOL         = VBoxTpG
    29452945 TEMPLATE_VBOXR0DRV_DEFS              += VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R0DRV
    2946  ifdef VBOX_WITH_NATIVE_DTRACE_R0DRV
    2947   TEMPLATE_VBOXR0DRV_DEFS             += VBOX_WITH_NATIVE_DTRACE_R0DRV
     2946 ifdef VBOX_WITH_NATIVE_DTRACE
     2947  TEMPLATE_VBOXR0DRV_DEFS             += VBOX_WITH_NATIVE_DTRACE
    29482948 endif
    29492949else
     
    32013201TEMPLATE_VBOXR3EXE_ASFLAGS.x86         = $(VBOX_ASFLAGS32)
    32023202TEMPLATE_VBOXR3EXE_ASFLAGS.amd64       = $(VBOX_ASFLAGS64)
     3203TEMPLATE_VBOXR3EXE_DEFS                = IN_RING3 $(ARCH_BITS_DEFS)
    32033204TEMPLATE_VBOXR3EXE_USES                = dtrace
    32043205ifdef VBOX_WITH_DTRACE_R3
    3205  TEMPLATE_VBOXR3EXE_DTRACETOOL         = StandardDTrace
    3206  TEMPLATE_VBOXR3EXE_DTRACE_OBJ_FLAGS   = -C
    3207  TEMPLATE_VBOXR3EXE_DTRACE_HDR_FLAGS   = -C
     3206 ifdef VBOX_WITH_NATIVE_DTRACE
     3207  TEMPLATE_VBOXR3EXE_DTRACETOOL        = StandardDTrace
     3208  TEMPLATE_VBOXR3EXE_DTRACE_OBJ_FLAGS  = -C
     3209  TEMPLATE_VBOXR3EXE_DTRACE_HDR_FLAGS  = -C
     3210  TEMPLATE_VBOXR3EXE_DEFS             += VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R3 VBOX_WITH_NATIVE_DTRACE
     3211 else
     3212  TEMPLATE_VBOXR3EXE_DTRACETOOL        = VBoxTpG
     3213  TEMPLATE_VBOXR3EXE_DTRACE_OBJ_FLAGS  = --pic --probe-fn-imported --probe-fn-name "SUPTracerFireProbe"
     3214  TEMPLATE_VBOXR3EXE_DEFS             += VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R3
     3215 endif
    32083216else
    32093217 TEMPLATE_VBOXR3EXE_DTRACETOOL         = VBoxTpG-Disabled
    32103218endif
    3211 TEMPLATE_VBOXR3EXE_DEFS                = IN_RING3 $(ARCH_BITS_DEFS)
    32123219TEMPLATE_VBOXR3EXE_LIBS.kprofile       = $(LIB_KPROFILE)
    32133220ifeq ($(KBUILD_TARGET),win)
     
    33093316        -Wl,--rpath-link,$(L4_LIBDIR)
    33103317TEMPLATE_VBOXR3EXE_LDFLAGS.linux       = -Wl,-z,noexecstack $(VBOX_LD_as_needed)
     3318ifdef VBOX_WITH_DTRACE_R3
     3319 TEMPLATE_VBOXR3EXE_LDFLAGS.linux     += -Wl,--verbose
     3320endif
     3321
    33113322 ifeq ($(KBUILD_TARGET),linux)
    33123323TEMPLATE_VBOXR3EXE_LIBS                = pthread m rt dl
  • trunk/src/VBox/HostDrivers/Support/Makefile.kmk

    r40861 r40975  
    313313        SUPDrvTracer.cpp \
    314314        SUPDrv.d
    315  ifdef VBOX_WITH_NATIVE_DTRACE_R0DRV
     315 ifdef VBOX_WITH_NATIVE_DTRACE
    316316  VBoxDrv_SOURCES        += \
    317317        SUPDrv-dtrace.cpp
  • trunk/src/VBox/HostDrivers/Support/SUPDrv-dtrace.cpp

    r40898 r40975  
    218218    dtrace_provider_id_t    idProvider   = pProv->TracerData.DTrace.idProvider;
    219219    AssertPtrReturnVoid(idProvider);
    220    
     220
    221221    AssertPtrReturnVoid(pProv->pHdr);
    222222    PVTGPROBELOC            pProbeLoc    = pProv->pHdr->paProbLocs;
     
    837837}
    838838
    839 #ifndef VBOX_WITH_NATIVE_DTRACE_R0DRV
    840 # error "VBOX_WITH_NATIVE_DTRACE_R0DRV is not defined as it should"
     839#ifndef VBOX_WITH_NATIVE_DTRACE
     840# error "VBOX_WITH_NATIVE_DTRACE is not defined as it should"
    841841#endif
    842842
  • trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h

    r40851 r40975  
    661661DECLASM(void)   supdrvTracerProbeFireStub(void);
    662662
    663 #ifdef VBOX_WITH_NATIVE_DTRACE_R0DRV
     663#ifdef VBOX_WITH_NATIVE_DTRACE
    664664const SUPDRVTRACERREG * VBOXCALL supdrvDTraceInit(void);
    665665#endif
  • trunk/src/VBox/HostDrivers/Support/SUPDrvTracer.cpp

    r40892 r40975  
    14241424        RTListInit(&pDevExt->TracerProviderZombieList);
    14251425
    1426 #ifdef VBOX_WITH_NATIVE_DTRACE_R0DRV
     1426#ifdef VBOX_WITH_NATIVE_DTRACE
    14271427        pDevExt->pTracerOps = supdrvDTraceInit();
    14281428        if (pDevExt->pTracerOps)
  • trunk/src/VBox/HostDrivers/Support/SUPLib.cpp

    r40820 r40975  
    23872387}
    23882388
     2389extern "C"
     2390{
     2391    SUPDECL(void) SUPTracerFireProbe(uint32_t idProbe, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
     2392                                     uintptr_t uArg3, uintptr_t uArg4);
     2393}
     2394
     2395SUPDECL(void) SUPTracerFireProbe(uint32_t idProbe, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2,
     2396                                 uintptr_t uArg3, uintptr_t uArg4)
     2397{
     2398    /* C and stubbed for now. */
     2399}
     2400
  • trunk/src/VBox/VMM/VMMR3/VM.cpp

    r40274 r40975  
    7272
    7373#include <VBox/sup.h>
     74#if defined(VBOX_WITH_DTRACE_R3) && !defined(VBOX_WITH_NATIVE_DTRACE)
     75# include <VBox/VBoxTpG.h>
     76#endif
    7477#include <VBox/dbg.h>
    7578#include <VBox/err.h>
     
    156159        return VINF_SUCCESS;
    157160
     161#if defined(VBOX_WITH_DTRACE_R3) && !defined(VBOX_WITH_NATIVE_DTRACE)
     162    //SUPR3TracerRegisterModule(&g_VTGObjHeader, "VBoxVMM");
     163#endif
     164
    158165    /*
    159166     * We're done.
     
    162169    return VINF_SUCCESS;
    163170}
    164 
    165171
    166172
  • 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