d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/* $Id$ */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/** @file
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * DBGC Testcase - Command Parser.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2012 Oracle Corporation
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * available from http://www.virtualbox.org. This file is free software;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * you can redistribute it and/or modify it under the terms of the GNU
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * General Public License (GPL) as published by the Free Software
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/*******************************************************************************
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync* Header Files *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync*******************************************************************************/
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync#include <VBox/dbg.h>
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync#include "../DBGCInternal.h"
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync#include <iprt/string.h>
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync#include <iprt/test.h>
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync#include <VBox/err.h>
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/*******************************************************************************
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync* Internal Functions *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync*******************************************************************************/
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DECLCALLBACK(bool) tstDBGCBackInput(PDBGCBACK pBack, uint32_t cMillies);
dbaea008579d49e032559f9927733871a72d3ab6vboxsyncstatic DECLCALLBACK(int) tstDBGCBackRead(PDBGCBACK pBack, void *pvBuf, size_t cbBuf, size_t *pcbRead);
dbaea008579d49e032559f9927733871a72d3ab6vboxsyncstatic DECLCALLBACK(int) tstDBGCBackWrite(PDBGCBACK pBack, const void *pvBuf, size_t cbBuf, size_t *pcbWritten);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DECLCALLBACK(void) tstDBGCBackSetReady(PDBGCBACK pBack, bool fReady);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/*******************************************************************************
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync* Global Variables *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync*******************************************************************************/
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync/** The test handle. */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic RTTEST g_hTest = NIL_RTTEST;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/** The DBGC backend structure for use in this testcase. */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DBGCBACK g_tstBack =
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync tstDBGCBackInput,
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync tstDBGCBackRead,
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync tstDBGCBackWrite,
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync tstDBGCBackSetReady
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync};
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/** For keeping track of output prefixing. */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic bool g_fPendingPrefix = true;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/** Pointer to the current input position. */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncconst char *g_pszInput = NULL;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync/** The output of the last command. */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic char g_szOutput[1024];
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync/** The current offset into g_szOutput. */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic size_t g_offOutput = 0;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/**
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Checks if there is input.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @returns true if there is input ready.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @returns false if there not input ready.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pBack Pointer to the backend structure supplied by
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * the backend. The backend can use this to find
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * it's instance data.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param cMillies Number of milliseconds to wait on input data.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DECLCALLBACK(bool) tstDBGCBackInput(PDBGCBACK pBack, uint32_t cMillies)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync return g_pszInput != NULL
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync && *g_pszInput != '\0';
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/**
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Read input.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @returns VBox status code.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pBack Pointer to the backend structure supplied by
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * the backend. The backend can use this to find
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * it's instance data.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pvBuf Where to put the bytes we read.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param cbBuf Maximum nymber of bytes to read.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pcbRead Where to store the number of bytes actually read.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * If NULL the entire buffer must be filled for a
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * successful return.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DECLCALLBACK(int) tstDBGCBackRead(PDBGCBACK pBack, void *pvBuf, size_t cbBuf, size_t *pcbRead)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (g_pszInput && *g_pszInput)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync {
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync size_t cb = strlen(g_pszInput);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (cb > cbBuf)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync cb = cbBuf;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *pcbRead = cb;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync memcpy(pvBuf, g_pszInput, cb);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync g_pszInput += cb;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync }
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync else
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *pcbRead = 0;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync return VINF_SUCCESS;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/**
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Write (output).
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @returns VBox status code.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pBack Pointer to the backend structure supplied by
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * the backend. The backend can use this to find
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * it's instance data.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pvBuf What to write.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param cbBuf Number of bytes to write.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pcbWritten Where to store the number of bytes actually written.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * If NULL the entire buffer must be successfully written.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DECLCALLBACK(int) tstDBGCBackWrite(PDBGCBACK pBack, const void *pvBuf, size_t cbBuf, size_t *pcbWritten)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync const char *pch = (const char *)pvBuf;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (pcbWritten)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *pcbWritten = cbBuf;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync while (cbBuf-- > 0)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync {
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync /* screen/log output */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (g_fPendingPrefix)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync {
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestPrintfNl(g_hTest, RTTESTLVL_ALWAYS, "OUTPUT: ");
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync g_fPendingPrefix = false;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync }
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (*pch == '\n')
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync g_fPendingPrefix = true;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "%c", *pch);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync /* buffer output */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync if (g_offOutput < sizeof(g_szOutput) - 1)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync {
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync g_szOutput[g_offOutput++] = *pch;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync g_szOutput[g_offOutput] = '\0';
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync }
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync /* advance */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync pch++;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync }
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync return VINF_SUCCESS;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/**
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Ready / busy notification.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync *
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pBack Pointer to the backend structure supplied by
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * the backend. The backend can use this to find
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * it's instance data.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param fReady Whether it's ready (true) or busy (false).
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic DECLCALLBACK(void) tstDBGCBackSetReady(PDBGCBACK pBack, bool fReady)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/**
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Completes the output, making sure that we're in
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * the 1 position of a new line.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncstatic void tstCompleteOutput(void)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (!g_fPendingPrefix)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "\n");
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync g_fPendingPrefix = true;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync/**
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * Checks if two DBGC variables are identical
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync *
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @returns
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param pVar1 .
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param pVar2 .
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync */
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsyncbool DBGCVarAreIdentical(PCDBGCVAR pVar1, PCDBGCVAR pVar2)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync{
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (!pVar1)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1 == pVar2)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return true;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->enmType != pVar2->enmType)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync switch (pVar1->enmType)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_GC_FLAT:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.GCFlat != pVar2->u.GCFlat)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_GC_FAR:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.GCFar.off != pVar2->u.GCFar.off)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.GCFar.sel != pVar2->u.GCFar.sel)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_GC_PHYS:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.GCPhys != pVar2->u.GCPhys)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_HC_FLAT:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.pvHCFlat != pVar2->u.pvHCFlat)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_HC_PHYS:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.HCPhys != pVar2->u.HCPhys)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_NUMBER:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u.u64Number != pVar2->u.u64Number)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_STRING:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_SYMBOL:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (RTStrCmp(pVar1->u.pszString, pVar2->u.pszString) != 0)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync default:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync AssertFailedReturn(false);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->enmRangeType != pVar2->enmRangeType)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync switch (pVar1->enmRangeType)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_RANGE_NONE:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_RANGE_ELEMENTS:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_RANGE_BYTES:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (pVar1->u64Range != pVar2->u64Range)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return false;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync default:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync AssertFailedReturn(false);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return true;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync}
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync/**
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Tries one command string.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pDbgc Pointer to the debugger instance.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param pszCmds The command to test.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * @param rcCmd The expected result.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param fNoExecute When set, the command is not executed.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pszExpected Expected output. This does not need to include all
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * of the output, just the start of it. Thus the
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * prompt can be omitted.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param cArgs The number of expected arguments. -1 if we don't
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * want to check the parsed arguments.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param va Info about expected parsed arguments. For each
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * argument a DBGCVARTYPE, value (depends on type),
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * DBGCVARRANGETYPE and optionally range value.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsyncstatic void tstTryExV(PDBGC pDbgc, const char *pszCmds, int rcCmd, bool fNoExecute, const char *pszExpected,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync int32_t cArgs, va_list va)
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RT_ZERO(g_szOutput);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync g_offOutput = 0;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync g_pszInput = pszCmds;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (strchr(pszCmds, '\0')[-1] == '\n')
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestPrintfNl(g_hTest, RTTESTLVL_ALWAYS, "RUNNING: %s", pszCmds);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync else
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestPrintfNl(g_hTest, RTTESTLVL_ALWAYS, "RUNNING: %s\n", pszCmds);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync pDbgc->rcCmd = VERR_INTERNAL_ERROR;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync dbgcProcessInput(pDbgc, fNoExecute);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync tstCompleteOutput();
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (pDbgc->rcCmd != rcCmd)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestFailed(g_hTest, "rcCmd=%Rrc expected =%Rrc\n", pDbgc->rcCmd, rcCmd);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync else if ( !fNoExecute
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync && pszExpected
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync && strncmp(pszExpected, g_szOutput, strlen(pszExpected)))
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestFailed(g_hTest, "Wrong output - expected \"%s\"", pszExpected);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (cArgs >= 0)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync PCDBGCVAR paArgs = pDbgc->aArgs;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync for (int32_t iArg = 0; iArg < cArgs; iArg++)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR ExpectedArg;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync ExpectedArg.enmType = (DBGCVARTYPE)va_arg(va, int/*DBGCVARTYPE*/);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync switch (ExpectedArg.enmType)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_GC_FLAT: ExpectedArg.u.GCFlat = va_arg(va, RTGCPTR); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_GC_FAR: ExpectedArg.u.GCFar.sel = va_arg(va, int /*RTSEL*/);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync ExpectedArg.u.GCFar.off = va_arg(va, uint32_t); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_GC_PHYS: ExpectedArg.u.GCPhys = va_arg(va, RTGCPHYS); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_HC_FLAT: ExpectedArg.u.pvHCFlat = va_arg(va, void *); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_HC_PHYS: ExpectedArg.u.HCPhys = va_arg(va, RTHCPHYS); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_NUMBER: ExpectedArg.u.u64Number = va_arg(va, uint64_t); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_STRING: ExpectedArg.u.pszString = va_arg(va, const char *); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_TYPE_SYMBOL: ExpectedArg.u.pszString = va_arg(va, const char *); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync default:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync RTTestFailed(g_hTest, "enmType=%u iArg=%u\n", ExpectedArg.enmType, iArg);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync ExpectedArg.u.u64Number = 0;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync ExpectedArg.enmRangeType = (DBGCVARRANGETYPE)va_arg(va, int /*DBGCVARRANGETYPE*/);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync switch (ExpectedArg.enmRangeType)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_RANGE_NONE: ExpectedArg.u64Range = 0; break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_RANGE_ELEMENTS: ExpectedArg.u64Range = va_arg(va, uint64_t); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync case DBGCVAR_RANGE_BYTES: ExpectedArg.u64Range = va_arg(va, uint64_t); break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync default:
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync RTTestFailed(g_hTest, "enmRangeType=%u iArg=%u\n", ExpectedArg.enmRangeType, iArg);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync ExpectedArg.u64Range = 0;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync break;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (!DBGCVarAreIdentical(&ExpectedArg, &paArgs[iArg]))
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync RTTestFailed(g_hTest,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync "Arg #%u\n"
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync "actual: enmType=%u u64=%#RX64 enmRangeType=%u u64Range=%#RX64\n"
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync "expected: enmType=%u u64=%#RX64 enmRangeType=%u u64Range=%#RX64\n",
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync iArg,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync paArgs[iArg].enmType, paArgs[iArg].u.u64Number, paArgs[iArg].enmRangeType, paArgs[iArg].u64Range,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync ExpectedArg.enmType, ExpectedArg.u.u64Number, ExpectedArg.enmRangeType, ExpectedArg.u64Range);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync}
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync/**
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * Tries one command string.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync *
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param pDbgc Pointer to the debugger instance.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param pszCmds The command to test.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param rcCmd The expected result.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param fNoExecute When set, the command is not executed.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param pszExpected Expected output. This does not need to include all
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * of the output, just the start of it. Thus the
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * prompt can be omitted.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param cArgs The number of expected arguments. -1 if we don't
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * want to check the parsed arguments.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * @param ... Info about expected parsed arguments. For each
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * argument a DBGCVARTYPE, value (depends on type),
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync * DBGCVARRANGETYPE and optionally range value.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync */
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsyncstatic void tstTryEx(PDBGC pDbgc, const char *pszCmds, int rcCmd, bool fNoExecute, const char *pszExpected, int32_t cArgs, ...)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync{
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync va_list va;
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync va_start(va, cArgs);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTryExV(pDbgc, pszCmds, rcCmd, fNoExecute, pszExpected, cArgs, va);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync va_end(va);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync}
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync/**
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * Tries one command string without executing it.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync *
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pDbgc Pointer to the debugger instance.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pszCmds The command to test.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param rcCmd The expected result.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic void tstTry(PDBGC pDbgc, const char *pszCmds, int rcCmd)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync{
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return tstTryEx(pDbgc, pszCmds, rcCmd, true /*fNoExecute*/, NULL, -1);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync}
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
f7f5cd7b1e530eb5636da51c974b48ae0c1775b3vboxsync#ifdef SOME_UNUSED_FUNCTION
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync/**
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * Tries to execute one command string.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pDbgc Pointer to the debugger instance.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pszCmds The command to test.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param rcCmd The expected result.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pszExpected Expected output. This does not need to include all
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * of the output, just the start of it. Thus the
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * prompt can be omitted.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic void tstTryExec(PDBGC pDbgc, const char *pszCmds, int rcCmd, const char *pszExpected)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync{
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return tstTryEx(pDbgc, pszCmds, rcCmd, false /*fNoExecute*/, pszExpected, -1);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}
f7f5cd7b1e530eb5636da51c974b48ae0c1775b3vboxsync#endif
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync/**
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * Test an operator on an expression resulting a plain number.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync *
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pDbgc Pointer to the debugger instance.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param pszExpr The express to test.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync * @param u64Expect The expected result.
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsyncstatic void tstNumOp(PDBGC pDbgc, const char *pszExpr, uint64_t u64Expect)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync{
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync char szCmd[80];
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTStrPrintf(szCmd, sizeof(szCmd), "format %s\n", pszExpr);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync char szExpected[80];
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTStrPrintf(szExpected, sizeof(szExpected),
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync "Number: hex %llx dec 0i%lld oct 0t%llo", u64Expect, u64Expect, u64Expect);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync return tstTryEx(pDbgc, szCmd, VINF_SUCCESS, false /*fNoExecute*/, szExpected, -1);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync}
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync/*
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync *
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * CodeView emulation commands.
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * CodeView emulation commands.
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * CodeView emulation commands.
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync *
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync */
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsyncstatic void testCodeView_ba(PDBGC pDbgc)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync{
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync RTTestISub("codeview - ba");
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 0f000:0000\n", VINF_SUCCESS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 0f000:0000 0\n", VINF_SUCCESS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 0f000:0000 0 ~0\n", VINF_SUCCESS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 0f000:0000 0 ~0 \"command\"\n", VINF_SUCCESS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 0f000:0000 0 ~0 \"command\" too_many\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1\n", VERR_DBGC_PARSE_TOO_FEW_ARGUMENTS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTryEx(pDbgc, "ba x 1 0f000:1234 5 1000 \"command\"\n", VINF_SUCCESS,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync true /*fNoExecute*/, NULL /*pszExpected*/, 6 /*cArgs*/,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_STRING, "x", DBGCVAR_RANGE_BYTES, UINT64_C(1),
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(1), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_GC_FAR, 0xf000, UINT32_C(0x1234), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(0x5), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(0x1000), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_STRING, "command", DBGCVAR_RANGE_BYTES, UINT64_C(7));
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTryEx(pDbgc, "ba x 1 %0f000:1234 5 1000 \"command\"\n", VINF_SUCCESS,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync true /*fNoExecute*/, NULL /*pszExpected*/, 6 /*cArgs*/,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_STRING, "x", DBGCVAR_RANGE_BYTES, UINT64_C(1),
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(1), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_GC_FLAT, UINT64_C(0xf1234), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(0x5), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(0x1000), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_STRING, "command", DBGCVAR_RANGE_BYTES, UINT64_C(7));
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 bad:bad 5 1000 \"command\"\n", VINF_SUCCESS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTry(pDbgc, "ba x 1 %bad:bad 5 1000 \"command\"\n", VERR_DBGC_PARSE_CONVERSION_FAILED);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync tstTryEx(pDbgc, "ba f 1 0f000:1234 5 1000 \"command\"\n", VINF_SUCCESS,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync true /*fNoExecute*/, NULL /*pszExpected*/, 6 /*cArgs*/,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_STRING, "f", DBGCVAR_RANGE_BYTES, UINT64_C(1),
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(1), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_GC_FAR, 0xf000, UINT32_C(0x1234), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(0x5), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_NUMBER, UINT64_C(0x1000), DBGCVAR_RANGE_NONE,
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync DBGCVAR_TYPE_STRING, "command", DBGCVAR_RANGE_BYTES, UINT64_C(7));
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "ba x 1 0f000:1234 qnx 1000 \"command\"\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "ba x 1 0f000:1234 5 qnx \"command\"\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "ba x qnx 0f000:1234 5 1000 \"command\"\n", VERR_DBGC_PARSE_INVALID_NUMBER);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "ba x 1 qnx 5 1000 \"command\"\n", VERR_DBGC_PARSE_INVALID_NUMBER);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_bc(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - bc");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_bd(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - bc");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_be(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - be");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_bl(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - bl");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_bp(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - bp");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_br(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - br");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_d(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - d");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_da(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - da");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_db(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - db");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dd(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dd");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dg(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dg");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dga(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dga");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_di(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - di");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dia(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dia");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dl(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dl");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dla(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dla");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dpd(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dpd");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dpda(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dpda");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dpdb(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dpdb");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dpdg(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dpdg");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dpdh(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dpdh");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dph(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dph");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dphg(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dphg");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dphh(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dphh");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dq(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dq");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dt(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dt");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dt16(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dt16");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dt32(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dt32");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dt64(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dt64");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_dw(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - dw");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_eb(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - eb");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_ew(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - ew");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_ed(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - ed");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_eq(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - eq");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_g(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - g");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_k(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - k");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_kg(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - kg");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_kh(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - kh");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_lm(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - lm");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_lmo(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - lmo");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_ln(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - ln");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_ls(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - ls");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_m(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - m");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_r(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - r");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_rg(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - rg");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_rg32(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - rg32");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_rg64(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - rg64");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_rh(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - rh");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_rt(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - rt");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_s(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - s");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_sa(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - sa");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_sb(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - sb");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_sd(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - sd");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_sq(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - sq");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_su(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - su");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_sw(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - sw");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_t(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - t");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_y(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - y");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_u64(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - u64");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_u32(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - u32");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_u16(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - u16");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCodeView_uv86(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("codeview - uv86");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync/*
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * Common commands.
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync */
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_bye_exit_quit(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - bye/exit/quit");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync /* These have the same parameter descriptor and handler, the command really
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync just has a couple of aliases.*/
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "bye\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "bye x\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "bye 1\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "bye %bad:bad\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "exit\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "quit\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_cpu(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - cpu");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "cpu\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "cpu 1\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "cpu 1 1\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "cpu emt\n", VERR_DBGC_PARSE_INVALID_NUMBER);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "cpu @eax\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "cpu %bad:bad\n", VERR_DBGC_PARSE_CONVERSION_FAILED);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "cpu '1'\n", VERR_DBGC_PARSE_INVALID_NUMBER);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_echo(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - echo");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "echo\n", VERR_DBGC_PARSE_TOO_FEW_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "echo 1\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo 1 2 3 4 5 6\n", VINF_SUCCESS, false, "1 2 3 4 5 6", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync /* The idea here is that since the prefered input is a string, we
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync definitely won't be confused by the number like beginning. */
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo 1234567890abcdefghijklmn\n", VINF_SUCCESS, false, "1234567890abcdefghijklmn", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync /* The idea here is that we'll perform the + operation and then convert the
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync result to a string (hex). */
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo 1 + 1\n", VINF_SUCCESS, false, "2", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo \"1 + 1\"\n", VINF_SUCCESS, false, "1 + 1", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo 0i10 + 6\n", VINF_SUCCESS, false, "10", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo \"0i10 + 6\"\n", VINF_SUCCESS, false, "0i10 + 6", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo %f000:0010\n", VINF_SUCCESS, false, "%00000000000f0010", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTryEx(pDbgc, "echo \"%f000:0010\"\n", VINF_SUCCESS, false, "%f000:0010", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "echo %bad:bad\n", VERR_DBGC_PARSE_CONVERSION_FAILED);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_format(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - format");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_detect(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - detect");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_harakiri(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - harakiri");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_help(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - help");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_info(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - info");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "info 12fg\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "info fflags argument\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_loadimage(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - loadimage");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_loadmap(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - loadmap");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_loadplugin(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - loadplugin");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_loadseg(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - loadseg");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_loadsyms(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - loadsyms");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_loadvars(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - loadvars");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_log(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - log");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_logdest(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - logdest");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_logflags(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - logflags");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_runscript(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - runscript");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_set(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - set");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_showplugins(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - showplugins");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_showvars(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - showvars");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_stop(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - stop");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_unloadplugin(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - unloadplugin");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_unset(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - unset");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testCommon_writecore(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("common - writecore");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync/*
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * Basic tests.
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync */
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testBasicsOddCases(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("Odd cases");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "r @rax\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "r @eax\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "r @ah\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "r @notavalidregister\n", VERR_DBGF_REGISTER_NOT_FOUND);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testBasicsOperators(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("Operators");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "+1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "++++++1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "-1", UINT64_MAX);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "--1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "---1", UINT64_MAX);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "----1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "~0", UINT64_MAX);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "~1", UINT64_MAX-1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "~~0", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "~~1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "!1", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "!0", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "!42", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "!!42", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "!!!42", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "!!!!42", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 +1", 2);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 + 1", 2);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1+1", 2);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1+ 1", 2);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 - 1", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "99 - 90", 9);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "2 * 2", 4);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "2 / 2", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "2 / 0", UINT64_MAX);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0i1024 / 0i4", 256);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "8 mod 7", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1<<1", 2);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1<<0i32", UINT64_C(0x0000000100000000));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1<<0i48", UINT64_C(0x0001000000000000));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1<<0i63", UINT64_C(0x8000000000000000));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "fedcba0987654321>>0i04", UINT64_C(0x0fedcba098765432));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "fedcba0987654321>>0i32", UINT64_C(0xfedcba09));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "fedcba0987654321>>0i48", UINT64_C(0x0000fedc));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0ef & 4", 4);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "01234567891 & fff", UINT64_C(0x00000000891));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "01234567891 & ~fff", UINT64_C(0x01234567000));
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 | 1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0 | 4", 4);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "4 | 0", 4);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "4 | 4", 4);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 | 4 | 2", 7);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 ^ 1", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 ^ 0", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0 ^ 1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "3 ^ 1", 2);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "7 ^ 3", 4);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "7 || 3", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 || 0", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0 || 1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0 || 0", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0 && 0", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 && 0", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "0 && 1", 0);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "1 && 1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstNumOp(pDbgc, "4 && 1", 1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync}
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsyncstatic void testBasicsFundametalParsing(PDBGC pDbgc)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync{
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync RTTestISub("Fundamental parsing");
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "stop\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "format 1\n", VINF_SUCCESS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "format \n", VERR_DBGC_PARSE_TOO_FEW_ARGUMENTS);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "format 0 1 23 4\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format 'x'\n", VINF_SUCCESS);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format 'x' 'x'\n", VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format 'x''x'\n", VINF_SUCCESS);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format 'x'\"x\"\n", VERR_DBGC_PARSE_EXPECTED_BINARY_OP);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format 'x'1\n", VERR_DBGC_PARSE_EXPECTED_BINARY_OP);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format (1)1\n", VERR_DBGC_PARSE_EXPECTED_BINARY_OP);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format (1)(1)\n", VERR_DBGC_PARSE_EXPECTED_BINARY_OP);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "format (1)''\n", VERR_DBGC_PARSE_EXPECTED_BINARY_OP);
93a534ee306a762aa144c80bdf77ced37446ade0vboxsync tstTry(pDbgc, "format nosuchfunction(1)\n", VERR_DBGC_PARSE_FUNCTION_NOT_FOUND);
93a534ee306a762aa144c80bdf77ced37446ade0vboxsync tstTry(pDbgc, "format nosuchfunction(1,2,3)\n", VERR_DBGC_PARSE_FUNCTION_NOT_FOUND);
93a534ee306a762aa144c80bdf77ced37446ade0vboxsync tstTry(pDbgc, "format nosuchfunction()\n", VERR_DBGC_PARSE_FUNCTION_NOT_FOUND);
93a534ee306a762aa144c80bdf77ced37446ade0vboxsync tstTry(pDbgc, "format randu32()\n", VINF_SUCCESS);
3009d189e498dc1af8c7024cd02d358aa3e60bd9vboxsync tstTryEx(pDbgc, "format %0\n", VINF_SUCCESS, false, "Guest flat address: %00000000", -1);
3009d189e498dc1af8c7024cd02d358aa3e60bd9vboxsync tstTryEx(pDbgc, "format %eax\n", VINF_SUCCESS, false, "Guest flat address: %cafebabe", -1);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync tstTry(pDbgc, "sa 3 23 4 'q' \"21123123\" 'b' \n", VINF_SUCCESS);
eee9f4ec6c8788c42eebc5be54dbe6e7aa3be14bvboxsync tstTry(pDbgc, "sa 3,23, 4,'q' ,\"21123123\" , 'b' \n", VINF_SUCCESS);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync}
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsyncint main()
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync{
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync /*
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Init.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync int rc = RTTestInitAndCreate("tstDBGCParser", &g_hTest);
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync if (rc)
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync return rc;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync RTTestBanner(g_hTest);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync /*
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Create a DBGC instance.
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
dbaea008579d49e032559f9927733871a72d3ab6vboxsync RTTestSub(g_hTest, "dbgcCreate");
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync PDBGC pDbgc;
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync rc = dbgcCreate(&pDbgc, &g_tstBack, 0);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (RT_SUCCESS(rc))
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync pDbgc->pVM = (PVM)pDbgc;
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync rc = dbgcProcessInput(pDbgc, true /* fNoExecute */);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync tstCompleteOutput();
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync if (RT_SUCCESS(rc))
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync {
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync /*
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * Perform basic tests first.
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync */
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testBasicsFundametalParsing(pDbgc);
dbaea008579d49e032559f9927733871a72d3ab6vboxsync if (RTTestErrorCount(g_hTest) == 0)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testBasicsOperators(pDbgc);
dbaea008579d49e032559f9927733871a72d3ab6vboxsync if (RTTestErrorCount(g_hTest) == 0)
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testBasicsOddCases(pDbgc);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync /*
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync * Test commands.
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync */
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync if (RTTestErrorCount(g_hTest) == 0)
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync {
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync testCodeView_ba(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_bc(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_bd(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_be(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_bl(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_bp(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_br(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_d(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_da(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_db(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dd(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dg(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dga(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_di(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dia(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dl(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dla(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dpd(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dpda(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dpdb(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dpdg(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dpdh(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dph(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dphg(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dphh(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dq(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dt(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dt16(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dt32(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dt64(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_dw(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_eb(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_ew(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_ed(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_eq(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_g(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_k(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_kg(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_kh(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_lm(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_lmo(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_ln(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_ls(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_m(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_r(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_rg(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_rg32(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_rg64(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_rh(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_rt(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_s(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_sa(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_sb(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_sd(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_sq(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_su(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_sw(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_t(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_y(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_u64(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_u32(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_u16(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCodeView_uv86(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_bye_exit_quit(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_cpu(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_echo(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_format(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_detect(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_harakiri(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_help(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_info(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_loadimage(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_loadmap(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_loadplugin(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_loadseg(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_loadsyms(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_loadvars(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_log(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_logdest(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_logflags(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_runscript(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_set(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_showplugins(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_showvars(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_stop(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_unloadplugin(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_unset(pDbgc);
c9cc4dc782381dceb4de3f0b5b9255dddde34b34vboxsync testCommon_writecore(pDbgc);
5dd0f48aea5b772d5b217101f71606345feb8d3bvboxsync }
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync }
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync dbgcDestroy(pDbgc);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync }
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync /*
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync * Summary
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync */
41b364444d2602cfae7837e8ad6a01d337ce12e6vboxsync return RTTestSummaryAndDestroy(g_hTest);
d2b90125e86633783a62cdf31cb6fd9b01b3d35evboxsync}