VirtualBox

Ignore:
Timestamp:
Jan 24, 2011 10:15:44 AM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
69597
Message:

Debugger Console: Some cleanups.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Debugger/DBGCCmdHlp.cpp

    r35637 r35673  
    699699
    700700/**
    701  * Converts a DBGC variable to a DBGF address structure.
    702  *
    703  * @returns VBox status code.
    704  * @param   pCmdHlp     Pointer to the command callback structure.
    705  * @param   pVar        The variable to convert.
    706  * @param   pAddress    The target address.
     701 * @interface_method_impl{DBGCCMDHLP,pfnVarToDbgfAddr}
    707702 */
    708703static DECLCALLBACK(int) dbgcHlpVarToDbgfAddr(PDBGCCMDHLP pCmdHlp, PCDBGCVAR pVar, PDBGFADDRESS pAddress)
    709704{
    710705    PDBGC pDbgc = DBGC_CMDHLP2DBGC(pCmdHlp);
    711     return dbgcVarToDbgfAddr(pDbgc, pVar, pAddress);
     706    AssertPtr(pVar);
     707    AssertPtr(pAddress);
     708
     709    switch (pVar->enmType)
     710    {
     711        case DBGCVAR_TYPE_GC_FLAT:
     712            DBGFR3AddrFromFlat(pDbgc->pVM, pAddress, pVar->u.GCFlat);
     713            return VINF_SUCCESS;
     714
     715        case DBGCVAR_TYPE_NUMBER:
     716            DBGFR3AddrFromFlat(pDbgc->pVM, pAddress, (RTGCUINTPTR)pVar->u.u64Number);
     717            return VINF_SUCCESS;
     718
     719        case DBGCVAR_TYPE_GC_FAR:
     720            return DBGFR3AddrFromSelOff(pDbgc->pVM, pDbgc->idCpu, pAddress, pVar->u.GCFar.sel, pVar->u.GCFar.off);
     721
     722        case DBGCVAR_TYPE_GC_PHYS:
     723            DBGFR3AddrFromPhys(pDbgc->pVM, pAddress, pVar->u.GCPhys);
     724            return VINF_SUCCESS;
     725
     726        case DBGCVAR_TYPE_STRING:
     727        case DBGCVAR_TYPE_SYMBOL:
     728        {
     729            DBGCVAR Var;
     730            int rc = DBGCCmdHlpEval(&pDbgc->CmdHlp, &Var, "%%(%DV)", pVar);
     731            if (RT_FAILURE(rc))
     732                return rc;
     733            return dbgcHlpVarToDbgfAddr(pCmdHlp, &Var, pAddress);
     734        }
     735
     736        case DBGCVAR_TYPE_HC_FLAT:
     737        case DBGCVAR_TYPE_HC_PHYS:
     738        default:
     739            return VERR_PARSE_CONVERSION_FAILED;
     740    }
     741}
     742
     743
     744/**
     745 * @interface_method_impl{DBGCCMDHLP,pfnVarFromDbgfAddr}
     746 */
     747static DECLCALLBACK(int) dbgcHlpVarFromDbgfAddr(PDBGCCMDHLP pCmdHlp, PCDBGFADDRESS pAddress, PDBGCVAR pResult)
     748{
     749    AssertPtrReturn(pAddress, VERR_INVALID_POINTER);
     750    AssertReturn(DBGFADDRESS_IS_VALID(pAddress), VERR_INVALID_PARAMETER);
     751    AssertPtrReturn(pResult,  VERR_INVALID_POINTER);
     752
     753    switch (pAddress->fFlags & DBGFADDRESS_FLAGS_TYPE_MASK)
     754    {
     755        case DBGFADDRESS_FLAGS_FAR16:
     756        case DBGFADDRESS_FLAGS_FAR32:
     757        case DBGFADDRESS_FLAGS_FAR64:
     758            DBGCVAR_INIT_GC_FAR(pResult, pAddress->Sel, pAddress->off);
     759            break;
     760
     761        case DBGFADDRESS_FLAGS_FLAT:
     762            DBGCVAR_INIT_GC_FLAT(pResult, pAddress->FlatPtr);
     763            break;
     764
     765        case DBGFADDRESS_FLAGS_PHYS:
     766            DBGCVAR_INIT_GC_PHYS(pResult, pAddress->FlatPtr);
     767            break;
     768
     769        default:
     770            DBGCVAR_INIT(pResult);
     771            AssertMsgFailedReturn(("%#x\n", pAddress->fFlags), VERR_INVALID_PARAMETER);
     772            break;
     773    }
     774
     775    return VINF_SUCCESS;
    712776}
    713777
     
    12571321    pDbgc->CmdHlp.pfnFailV              = dbgcHlpFailV;
    12581322    pDbgc->CmdHlp.pfnVarToDbgfAddr      = dbgcHlpVarToDbgfAddr;
     1323    pDbgc->CmdHlp.pfnVarFromDbgfAddr    = dbgcHlpVarFromDbgfAddr;
    12591324    pDbgc->CmdHlp.pfnVarToNumber        = dbgcHlpVarToNumber;
    12601325    pDbgc->CmdHlp.pfnVarToBool          = dbgcHlpVarToBool;
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