VirtualBox

Changeset 46109 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
May 15, 2013 7:54:06 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
85797
Message:

Made deferred loading work.

Location:
trunk/src/VBox/Runtime/common/dbg
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/dbg/dbgmod.cpp

    r46108 r46109  
    11451145
    11461146
     1147RTDECL(bool) RTDbgModIsDeferred(RTDBGMOD hDbgMod)
     1148{
     1149    PRTDBGMODINT pDbgMod = hDbgMod;
     1150    RTDBGMOD_VALID_RETURN_RC(pDbgMod, false);
     1151    return pDbgMod->fDeferred;
     1152}
     1153
     1154
     1155RTDECL(bool) RTDbgModIsExports(RTDBGMOD hDbgMod)
     1156{
     1157    PRTDBGMODINT pDbgMod = hDbgMod;
     1158    RTDBGMOD_VALID_RETURN_RC(pDbgMod, false);
     1159    return pDbgMod->fExports;
     1160}
     1161
     1162
    11471163RTDECL(RTDBGSEGIDX) RTDbgModRvaToSegOff(RTDBGMOD hDbgMod, RTUINTPTR uRva, PRTUINTPTR poffSeg)
    11481164{
  • trunk/src/VBox/Runtime/common/dbg/dbgmoddeferred.cpp

    r45997 r46109  
    108108
    109109            rtDbgModDeferredReleaseInstanceData(pThis);
     110            if (fImgVt && fDbgVt)
     111                rtDbgModDeferredReleaseInstanceData(pThis);
    110112        }
    111113        else
     
    116118            if (fDbgVt)
    117119            {
     120                Assert(!pMod->pDbgVt);
     121                pMod->pDbgVt    = &g_rtDbgModVtDbgDeferred;
    118122                pMod->pvDbgPriv = pThis;
    119                 pMod->pDbgVt    = &g_rtDbgModVtDbgDeferred;
    120123            }
    121124
    122125            if (fImgVt)
    123126            {
     127                Assert(!pMod->pImgVt);
     128                pMod->pImgVt    = &g_rtDbgModVtImgDeferred;
    124129                pMod->pvImgPriv = pThis;
    125                 pMod->pImgVt    = &g_rtDbgModVtImgDeferred;
    126130            }
    127131        }
     
    544548{
    545549    AssertReturn(!pDbgMod->pDbgVt, VERR_DBG_MOD_IPE);
    546     AssertReturn(!pDbgMod->pImgVt, VERR_DBG_MOD_IPE);
    547550
    548551    PRTDBGMODDEFERRED pDeferred = (PRTDBGMODDEFERRED)RTMemAllocZ(sizeof(*pDeferred));
     
    551554
    552555    pDeferred->cbImage     = cbImage;
    553     pDeferred->cRefs       = 2;
     556    pDeferred->cRefs       = 1 + (pDbgMod->pImgVt == NULL);
    554557    if (hDbgCfg != NIL_RTDBGCFG)
    555558        RTDbgCfgRetain(hDbgCfg);
     
    557560    pDeferred->pfnDeferred = pfnDeferred;
    558561
    559     pDbgMod->pImgVt              = &g_rtDbgModVtImgDeferred;
    560     pDbgMod->pvImgPriv           = pDeferred;
    561     pDbgMod->pDbgVt              = &g_rtDbgModVtDbgDeferred;
    562     pDbgMod->pvDbgPriv           = pDeferred;
    563     pDbgMod->fDeferred           = true;
    564     pDbgMod->fDeferredFailed     = false;
     562    pDbgMod->pDbgVt             = &g_rtDbgModVtDbgDeferred;
     563    pDbgMod->pvDbgPriv          = pDeferred;
     564    if (!pDbgMod->pImgVt)
     565    {
     566        pDbgMod->pImgVt         = &g_rtDbgModVtImgDeferred;
     567        pDbgMod->pvImgPriv      = pDeferred;
     568    }
     569    pDbgMod->fDeferred          = true;
     570    pDbgMod->fDeferredFailed    = false;
    565571
    566572    if (ppDeferred)
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