fix runtime error for deallocating memory from separate DLLs

This commit is contained in:
SinaKarvandi 2024-09-27 14:32:03 +02:00
parent a336ad80e0
commit 35ca575bfd
8 changed files with 92 additions and 33 deletions

View file

@ -54,6 +54,9 @@ HardwareScriptInterpreterConvertSymbolToHwdbgShortSymbolBuffer(
HWDBG_SHORT_SYMBOL ** NewShortSymbolBuffer,
size_t * NewBufferSize);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID
HardwareScriptInterpreterFreeHwdbgShortSymbolBuffer(HWDBG_SHORT_SYMBOL * NewShortSymbolBuffer);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE PVOID
ScriptEngineParse(char * str);

View file

@ -67,7 +67,6 @@ CommandHwClk(vector<CommandToken> CommandTokens, string Command)
{
TCHAR TestFilePath[MAX_PATH] = {0};
const SIZE_T BufferSize = 256; // Adjust based on the number of memory entries of the file
UINT32 PortNum = 0;
UINT32 MemoryBuffer[BufferSize];
if (SetupPathForFileName(HWDBG_TEST_READ_INSTANCE_INFO_PATH, TestFilePath, sizeof(TestFilePath), TRUE) &&
@ -90,34 +89,7 @@ CommandHwClk(vector<CommandToken> CommandTokens, string Command)
{
ShowMessages("instance info interpreted successfully\n");
ShowMessages("Debuggee Version: 0x%x\n", g_HwdbgInstanceInfo.version);
ShowMessages("Debuggee Maximum Number Of Stages: 0x%x\n", g_HwdbgInstanceInfo.maximumNumberOfStages);
ShowMessages("Debuggee Script Variable Length: 0x%x\n", g_HwdbgInstanceInfo.scriptVariableLength);
ShowMessages("Debuggee Number of Supported Local (and global) Variables: 0x%x\n", g_HwdbgInstanceInfo.numberOfSupportedLocalAndGlobalVariables);
ShowMessages("Debuggee Number of Supported Temporary Variables: 0x%x\n", g_HwdbgInstanceInfo.numberOfSupportedTemporaryVariables);
ShowMessages("Debuggee Maximum Number Of Supported GET Script Operators: 0x%x\n", g_HwdbgInstanceInfo.maximumNumberOfSupportedGetScriptOperators);
ShowMessages("Debuggee Maximum Number Of Supported SET Script Operators: 0x%x\n", g_HwdbgInstanceInfo.maximumNumberOfSupportedSetScriptOperators);
ShowMessages("Debuggee Shared Memory Size: 0x%x\n", g_HwdbgInstanceInfo.sharedMemorySize);
ShowMessages("Debuggee Debugger Area Offset: 0x%x\n", g_HwdbgInstanceInfo.debuggerAreaOffset);
ShowMessages("Debuggee Debuggee Area Offset: 0x%x\n", g_HwdbgInstanceInfo.debuggeeAreaOffset);
ShowMessages("Debuggee Script Capabilities Mask: 0x%llx\n", g_HwdbgInstanceInfo.scriptCapabilities);
//
// Show script capabilities
//
HardwareScriptInterpreterShowScriptCapabilities(&g_HwdbgInstanceInfo);
ShowMessages("Debuggee Number Of Pins: 0x%x\n", g_HwdbgInstanceInfo.numberOfPins);
ShowMessages("Debuggee Number Of Ports: 0x%x\n", g_HwdbgInstanceInfo.numberOfPorts);
ShowMessages("Debuggee BRAM Address Width: 0x%x\n", g_HwdbgInstanceInfo.bramAddrWidth);
ShowMessages("Debuggee BRAM Data Width: 0x%x (%d bit)\n", g_HwdbgInstanceInfo.bramDataWidth, g_HwdbgInstanceInfo.bramDataWidth);
for (auto item : g_HwdbgPortConfiguration)
{
ShowMessages("Port number %d ($hw_port%d): 0x%x\n", PortNum, PortNum, item);
PortNum++;
}
HwdbgShowIntanceInfo(&g_HwdbgInstanceInfo);
}
else
{
@ -278,12 +250,16 @@ CommandHwClk(vector<CommandToken> CommandTokens, string Command)
}
//
// Free the allocated memory
// Free the allocated memory for the short symbol buffer
//
if (NewScriptBuffer != NULL)
{
free(NewScriptBuffer);
HardwareScriptInterpreterFreeHwdbgShortSymbolBuffer(NewScriptBuffer);
}
//
// Free the allocated memory
//
FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
}
else

View file

@ -585,3 +585,45 @@ HwdbgInterpreterSendScriptPacket(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
return Result;
}
/**
* @brief Show instance info details
*
* @param InstanceInfo
*
* @return VOID
*/
VOID
HwdbgShowIntanceInfo(HWDBG_INSTANCE_INFORMATION * InstanceInfo)
{
UINT32 PortNum = 0;
ShowMessages("Debuggee Version: 0x%x\n", InstanceInfo->version);
ShowMessages("Debuggee Maximum Number Of Stages: 0x%x\n", InstanceInfo->maximumNumberOfStages);
ShowMessages("Debuggee Script Variable Length: 0x%x\n", InstanceInfo->scriptVariableLength);
ShowMessages("Debuggee Number of Supported Local (and global) Variables: 0x%x\n", InstanceInfo->numberOfSupportedLocalAndGlobalVariables);
ShowMessages("Debuggee Number of Supported Temporary Variables: 0x%x\n", InstanceInfo->numberOfSupportedTemporaryVariables);
ShowMessages("Debuggee Maximum Number Of Supported GET Script Operators: 0x%x\n", InstanceInfo->maximumNumberOfSupportedGetScriptOperators);
ShowMessages("Debuggee Maximum Number Of Supported SET Script Operators: 0x%x\n", InstanceInfo->maximumNumberOfSupportedSetScriptOperators);
ShowMessages("Debuggee Shared Memory Size: 0x%x\n", InstanceInfo->sharedMemorySize);
ShowMessages("Debuggee Debugger Area Offset: 0x%x\n", InstanceInfo->debuggerAreaOffset);
ShowMessages("Debuggee Debuggee Area Offset: 0x%x\n", InstanceInfo->debuggeeAreaOffset);
ShowMessages("Debuggee Script Capabilities Mask: 0x%llx\n", InstanceInfo->scriptCapabilities);
//
// Show script capabilities
//
HardwareScriptInterpreterShowScriptCapabilities(&g_HwdbgInstanceInfo);
ShowMessages("Debuggee Number Of Pins: 0x%x\n", InstanceInfo->numberOfPins);
ShowMessages("Debuggee Number Of Ports: 0x%x\n", InstanceInfo->numberOfPorts);
ShowMessages("Debuggee BRAM Address Width: 0x%x\n", InstanceInfo->bramAddrWidth);
ShowMessages("Debuggee BRAM Data Width: 0x%x (%d bit)\n", InstanceInfo->bramDataWidth, InstanceInfo->bramDataWidth);
for (auto item : g_HwdbgPortConfiguration)
{
ShowMessages("Port number %d ($hw_port%d): 0x%x\n", PortNum, PortNum, item);
PortNum++;
}
}

View file

@ -72,3 +72,6 @@ HwdbgInterpreterSendScriptPacket(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
UINT32 NumberOfSymbols,
HWDBG_SHORT_SYMBOL * Buffer,
UINT32 BufferLength);
VOID
HwdbgShowIntanceInfo(HWDBG_INSTANCE_INFORMATION * InstanceInfo);

View file

@ -687,3 +687,19 @@ HardwareScriptInterpreterConvertSymbolToHwdbgShortSymbolBuffer(
return TRUE;
}
/**
* @brief Function free the short symbol buffer
*
* @param NewShortSymbolBuffer
*
* @return VOID
*/
VOID
HardwareScriptInterpreterFreeHwdbgShortSymbolBuffer(HWDBG_SHORT_SYMBOL * NewShortSymbolBuffer)
{
if (NewShortSymbolBuffer)
{
free(NewShortSymbolBuffer);
}
}

View file

@ -0,0 +1,12 @@
/**
* @file pch.h
* @author M.H. Gholamrezaei (mh@hyperdbg.org)
*
* @details Pre-compiled headers
* @version 0.1
* @date 2020-10-22
*
* @copyright This project is released under the GNU Public License v3.
*
*/
#include "pch.h"

View file

@ -60,7 +60,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;SCRIPTENGINE_EXPORTS</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Create</PrecompiledHeader>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\script-engine\header;$(SolutionDir)\include;$(SolutionDir)\script-engine;$(SolutionDir)\script-eval;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -86,7 +86,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;SCRIPTENGINE_EXPORTS</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Create</PrecompiledHeader>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\script-engine\header;$(SolutionDir)\include;$(SolutionDir)\script-engine;$(SolutionDir)\script-eval;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@ -122,6 +122,10 @@
<ClCompile Include="code\globals.c" />
<ClCompile Include="code\hardware.c" />
<ClCompile Include="code\parse-table.c" />
<ClCompile Include="code\pch.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='debug|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="code\scanner.c" />
<ClCompile Include="code\script-engine.c" />
<ClCompile Include="code\type.c" />

View file

@ -64,5 +64,8 @@
<ClCompile Include="code\hardware.c">
<Filter>code</Filter>
</ClCompile>
<ClCompile Include="code\pch.c">
<Filter>code</Filter>
</ClCompile>
</ItemGroup>
</Project>