Change some project settings. Reorganize the symbol database code, step 1/2.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@292 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard
2008-08-24 15:46:08 +00:00
parent e3d7c44a8e
commit f44a06465a
38 changed files with 11398 additions and 11243 deletions
+147 -144
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Version="8.00"
Name="Bochs_disasm"
ProjectGUID="{29C2ABC1-ADA5-42CD-A5FC-96022D52A510}"
RootNamespace="Bochs_disasm"
@@ -49,7 +49,7 @@
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="true"
WarnAsError="false"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
ForcedIncludeFiles="stdafx.h"
@@ -82,132 +82,6 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
WholeProgramOptimization="false"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
WholeProgramOptimization="false"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -240,6 +114,70 @@
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="false"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
WholeProgramOptimization="false"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="false"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
@@ -305,6 +243,70 @@
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="false"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
WholeProgramOptimization="false"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="false"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
@@ -370,6 +372,7 @@
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
WarnAsError="false"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
@@ -457,22 +460,6 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
@@ -481,6 +468,14 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@@ -489,6 +484,14 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|x64"
>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+133 -131
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Version="8.00"
Name="zlib"
ProjectGUID="{3E03C179-8251-46E4-81F4-466F114BAC63}"
RootNamespace="zlib"
@@ -48,6 +48,7 @@
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
FloatingPointModel="0"
UsePrecompiledHeader="0"
WarningLevel="3"
WarnAsError="true"
@@ -81,134 +82,6 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="2"
UsePrecompiledHeader="0"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="2"
UsePrecompiledHeader="0"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -240,6 +113,7 @@
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
FloatingPointModel="0"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
@@ -272,6 +146,70 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="0"
UsePrecompiledHeader="0"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -303,7 +241,7 @@
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="2"
FloatingPointModel="0"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
@@ -336,6 +274,70 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="0"
UsePrecompiledHeader="0"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -367,7 +369,7 @@
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="2"
FloatingPointModel="0"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
+169 -162
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Version="8.00"
Name="Common"
ProjectGUID="{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}"
RootNamespace="Common"
@@ -54,7 +54,7 @@
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="true"
WarnAsError="false"
DebugInformationFormat="4"
ForcedIncludeFiles="stdafx.h"
/>
@@ -88,149 +88,6 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(ProjectDir)SubWCRev.exe $(SolutionDir) $(ProjectDir)\src\svnrev_template.h $(ProjectDir)\src\svnrev.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
AdditionalIncludeDirectories="../../PluginSpecs"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="0"
BufferSecurityCheck="true"
EnableEnhancedInstructionSet="2"
FloatingPointModel="2"
RuntimeTypeInfo="false"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="wsock32.lib"
OutputFile="$(OutDir)/Common.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(ProjectDir)SubWCRev.exe $(SolutionDir) $(ProjectDir)\src\svnrev_template.h $(ProjectDir)\src\svnrev.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="../../PluginSpecs"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_SECURE_SCL=0"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="wsock32.lib"
OutputFile="$(OutDir)/Common.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -266,10 +123,86 @@
BasicRuntimeChecks="3"
RuntimeLibrary="1"
BufferSecurityCheck="false"
FloatingPointModel="0"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="wsock32.lib"
OutputFile="$(OutDir)/Common.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(ProjectDir)SubWCRev.exe $(SolutionDir) $(ProjectDir)\src\svnrev_template.h $(ProjectDir)\src\svnrev.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
AdditionalIncludeDirectories="../../PluginSpecs"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableEnhancedInstructionSet="2"
FloatingPointModel="0"
RuntimeTypeInfo="false"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
@@ -339,11 +272,12 @@
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableEnhancedInstructionSet="0"
FloatingPointModel="2"
FloatingPointModel="0"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
@@ -377,6 +311,77 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="$(ProjectDir)SubWCRev.exe $(SolutionDir) $(ProjectDir)\src\svnrev_template.h $(ProjectDir)\src\svnrev.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="../../PluginSpecs"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableEnhancedInstructionSet="2"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="wsock32.lib"
OutputFile="$(OutDir)/Common.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -409,10 +414,12 @@
AdditionalIncludeDirectories="../../PluginSpecs"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_SECURE_SCL=0"
RuntimeLibrary="0"
FloatingPointModel="0"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
@@ -593,22 +600,6 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
@@ -617,6 +608,14 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@@ -625,6 +624,14 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|x64"
>
+180 -160
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Version="8.00"
Name="Core"
ProjectGUID="{F0B874CB-4476-4199-9315-8343D05AE684}"
RootNamespace="Core"
@@ -54,7 +54,7 @@
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="true"
WarnAsError="false"
DebugInformationFormat="4"
ForcedIncludeFiles="stdafx.h"
/>
@@ -87,6 +87,76 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\Common\Src;..\DiscIO\Src;..\..\PluginSpecs;..\Debugger\Src;..\..\..\Externals\Bochs_disasm"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LOGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
BufferSecurityCheck="true"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/Core.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -128,148 +198,7 @@
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/Core.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories="..\Common\Src;..\DiscIO\Src;..\..\PluginSpecs;..\Debugger\Src;..\..\..\Externals\Bochs_disasm"
PreprocessorDefinitions="NDEBUG;_LIB;LOGGING;DEBUGFAST;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="true"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/Core.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\Common\Src;..\DiscIO\Src;..\..\PluginSpecs;..\Debugger\Src;..\..\..\Externals\Bochs_disasm"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LOGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
BufferSecurityCheck="true"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
@@ -345,6 +274,7 @@
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="0"
ForcedIncludeFiles="stdafx.h"
/>
@@ -377,6 +307,79 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories="..\Common\Src;..\DiscIO\Src;..\..\PluginSpecs;..\Debugger\Src;..\..\..\Externals\Bochs_disasm"
PreprocessorDefinitions="NDEBUG;_LIB;LOGGING;DEBUGFAST;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableEnhancedInstructionSet="2"
FloatingPointModel="0"
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/Core.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DebugFast|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@@ -417,6 +420,7 @@
UsePrecompiledHeader="2"
AssemblerListingLocation="$(IntDir)\"
WarningLevel="3"
WarnAsError="false"
DebugInformationFormat="3"
ForcedIncludeFiles="stdafx.h"
/>
@@ -792,6 +796,14 @@
<Filter
Name="PowerPC"
>
<File
RelativePath=".\Src\PowerPC\FunctionDB.cpp"
>
</File>
<File
RelativePath=".\Src\PowerPC\FunctionDB.h"
>
</File>
<File
RelativePath=".\Src\PowerPC\Gekko.h"
>
@@ -824,6 +836,14 @@
RelativePath=".\Src\PowerPC\PPCTables.h"
>
</File>
<File
RelativePath=".\Src\PowerPC\SignatureDB.cpp"
>
</File>
<File
RelativePath=".\Src\PowerPC\SignatureDB.h"
>
</File>
<Filter
Name="Interpreter"
>
@@ -1220,22 +1240,6 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
@@ -1244,6 +1248,14 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@@ -1252,6 +1264,14 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugFast|x64"
>
+5 -32
View File
@@ -39,8 +39,8 @@
#include "../Host.h"
#include "../VolumeHandler.h"
#include "../PatchEngine.h"
#include "../Host.h"
#include "../PowerPC/SignatureDB.h"
#include "../PowerPC/FunctionDB.h"
#include "../MemTools.h"
#include "MappedFile.h"
@@ -376,7 +376,6 @@ bool CBoot::EmulatedBIOS_Wii(bool _bDebug)
void CBoot::UpdateDebugger_MapLoaded(const char *_gameID)
{
HLE::PatchFunctions();
Debugger::AnalyzeBackwards();
Host_NotifyMapLoaded();
Host_UpdateMemoryView();
}
@@ -412,6 +411,7 @@ bool CBoot::LoadMapFromFilename(const std::string &_rFilename, const char *_game
}
else
{
Debugger::PushMapToFunctionDB(&g_funcDB);
success = true;
}
@@ -502,19 +502,6 @@ bool CBoot::BootUp(const SCoreStartupParameter& _StartupPara)
{
HLE::PatchFunctions();
}
else
{
#if defined(_DEBUG) || defined(DEBUGFAST)
//PPCAnalyst::FindFunctions(0x81300000,0x81400000);
#if 0
PPCAnalyst::FindFunctions(0x80003100,0x80200000);
PPCAnalyst::LoadFuncDB("data/totaldb.dsy");
PPCAnalyst::UseFuncDB();
#endif
#endif
Debugger::GetFromAnalyzer();
UpdateDebugger_MapLoaded();
}
}
break;
@@ -525,14 +512,7 @@ bool CBoot::BootUp(const SCoreStartupParameter& _StartupPara)
CDolLoader dolLoader(_StartupPara.m_strFilename.c_str());
PC = dolLoader.GetEntryPoint();
#ifdef _DEBUG
if (!LoadMapFromFilename(_StartupPara.m_strFilename))
{
PPCAnalyst::FindFunctions(0x80003100,0x80400000);
PPCAnalyst::LoadFuncDB("data/totaldb.dsy");
PPCAnalyst::UseFuncDB();
Debugger::GetFromAnalyzer();
UpdateDebugger_MapLoaded();
}
LoadMapFromFilename(_StartupPara.m_strFilename);
#endif
}
break;
@@ -592,14 +572,7 @@ bool CBoot::BootUp(const SCoreStartupParameter& _StartupPara)
DVDInterface::SetDiscInside(false);
if (Load_BIOS(_StartupPara.m_strBios))
{
if (!LoadMapFromFilename(_StartupPara.m_strFilename))
{
PPCAnalyst::FindFunctions(0x81300000,0x81400000);
PPCAnalyst::LoadFuncDB("data/totaldb.dsy");
PPCAnalyst::UseFuncDB();
Debugger::GetFromAnalyzer();
UpdateDebugger_MapLoaded();
}
LoadMapFromFilename(_StartupPara.m_strFilename);
}
else
{
+1 -2
View File
@@ -244,8 +244,7 @@ bool ElfReader::LoadSymbols()
continue;
}
//host->AddSymbol(name, value, size, symtype);
Debugger::AddSymbol(
Debugger::CSymbol(value, size, symtype, name));
Debugger::AddSymbol(Debugger::Symbol(value, size, symtype, name));
hasSymbols = true;
//...
+5 -9
View File
@@ -27,6 +27,7 @@
#include "CoreTiming.h"
#include "Core.h"
#include "PowerPC/Jit64/JitCache.h"
#include "PowerPC/FunctionDB.h"
#include "PowerPCDisasm.h"
#define CASE(x) else if (memcmp(cmd, x, 4*sizeof(TCHAR))==0)
@@ -66,11 +67,6 @@ void Console_Submit(const char *cmd)
Core::StartTrace(true);
LOG(CONSOLE, "write tracing started.");
}
CASE("scan")
{
//LOG(CONSOLE,"test1");
PPCAnalyst::FindFunctions(0x80003100, 0x80400000);
}
CASE("trans")
{
TCHAR temp[256];
@@ -97,7 +93,7 @@ void Console_Submit(const char *cmd)
sscanf(cmd, "%s %08x", temp, &addr);
if (addr!=0)
{
PPCAnalyst::PrintCalls(addr);
g_funcDB.PrintCalls(addr);
}
else
{
@@ -111,7 +107,7 @@ void Console_Submit(const char *cmd)
sscanf(cmd, "%s %08x", temp, &addr);
if (addr!=0)
{
PPCAnalyst::PrintCallers(addr);
g_funcDB.PrintCallers(addr);
}
else
{
@@ -163,7 +159,7 @@ void Console_Submit(const char *cmd)
}
CASE("lisd")
{
PPCAnalyst::ListDB();
// PPCAnalyst::ListDB();
}
CASE("ipro")
{
@@ -171,7 +167,7 @@ void Console_Submit(const char *cmd)
}
CASE("lisf")
{
PPCAnalyst::ListFunctions();
g_funcDB.List();
}
else {
printf("blach\n");
@@ -157,7 +157,7 @@ void CBreakPoints::AddAutoBreakpoints()
XSymbolIndex idx = FindSymbol(bps[i]);
if (idx != 0)
{
const CSymbol &symbol = GetSymbol(idx);
const Symbol &symbol = GetSymbol(idx);
AddBreakPoint(symbol.vaddress, false);
}
}
@@ -22,14 +22,15 @@
#include "../HW/Memmap.h"
#include "../PowerPC/PowerPC.h"
#include "../PowerPC/PPCAnalyst.h"
#include "../PowerPC/FunctionDB.h"
#include "../../../../Externals/Bochs_disasm/PowerPCDisasm.h"
namespace Debugger
{
static XVectorSymbol m_VectorSymbols;
static XVectorSymbol g_Symbols;
CSymbol::CSymbol(u32 _Address, u32 _Size, ESymbolType _Type, const char *_rName) :
Symbol::Symbol(u32 _Address, u32 _Size, ESymbolType _Type, const char *_rName) :
vaddress(_Address),
size(_Size),
runCount(0),
@@ -44,57 +45,57 @@ CSymbol::CSymbol(u32 _Address, u32 _Size, ESymbolType _Type, const char *_rName)
}
}
CSymbol::~CSymbol()
Symbol::~Symbol()
{
m_vecBackwardLinks.clear();
}
void Reset()
{
m_VectorSymbols.clear();
g_Symbols.clear();
// 0 is an invalid entry
CSymbol Invalid(static_cast<u32>(-1), 0, ST_FUNCTION, "Invalid");
m_VectorSymbols.push_back(Invalid);
Symbol Invalid(static_cast<u32>(-1), 0, ST_FUNCTION, "Invalid");
g_Symbols.push_back(Invalid);
}
XSymbolIndex AddSymbol(const CSymbol& _rSymbolMapEntry)
XSymbolIndex AddSymbol(const Symbol& symbol)
{
XSymbolIndex old = 0;
if ((old = FindSymbol(_rSymbolMapEntry.GetName().c_str())) != 0)
XSymbolIndex old = FindSymbol(symbol.GetName().c_str());
if (old != 0)
return old;
m_VectorSymbols.push_back(_rSymbolMapEntry);
return (XSymbolIndex)(m_VectorSymbols.size()-1);
g_Symbols.push_back(symbol);
return (XSymbolIndex)(g_Symbols.size() - 1);
}
const CSymbol& GetSymbol(XSymbolIndex _Index)
const Symbol& GetSymbol(XSymbolIndex _Index)
{
if (_Index < (XSymbolIndex)m_VectorSymbols.size())
return m_VectorSymbols[_Index];
if (_Index < (XSymbolIndex)g_Symbols.size())
return g_Symbols[_Index];
PanicAlert("GetSymbol is called with an invalid index %i", _Index);
return m_VectorSymbols[0];
return g_Symbols[0];
}
const XVectorSymbol& AccessSymbols()
{
return m_VectorSymbols;
return g_Symbols;
}
CSymbol& AccessSymbol(XSymbolIndex _Index)
Symbol& AccessSymbol(XSymbolIndex _Index)
{
if (_Index < (XSymbolIndex)m_VectorSymbols.size())
return m_VectorSymbols[_Index];
if (_Index < (XSymbolIndex)g_Symbols.size())
return g_Symbols[_Index];
PanicAlert("AccessSymbol is called with an invalid index %i", _Index);
return m_VectorSymbols[0];
return g_Symbols[0];
}
XSymbolIndex FindSymbol(u32 _Address)
{
for (int i = 0; i < (int)m_VectorSymbols.size(); i++)
for (int i = 0; i < (int)g_Symbols.size(); i++)
{
const CSymbol& rSymbol = m_VectorSymbols[i];
const Symbol& rSymbol = g_Symbols[i];
if ((_Address >= rSymbol.vaddress) && (_Address < rSymbol.vaddress + rSymbol.size))
{
return (XSymbolIndex)i;
@@ -107,9 +108,9 @@ XSymbolIndex FindSymbol(u32 _Address)
XSymbolIndex FindSymbol(const char *name)
{
for (int i = 0; i < (int)m_VectorSymbols.size(); i++)
for (int i = 0; i < (int)g_Symbols.size(); i++)
{
const CSymbol& rSymbol = m_VectorSymbols[i];
const Symbol& rSymbol = g_Symbols[i];
#ifdef _WIN32
if (!_stricmp(rSymbol.GetName().c_str(), name))
#else
@@ -124,29 +125,21 @@ XSymbolIndex FindSymbol(const char *name)
return 0;
}
// __________________________________________________________________________________________________
// LoadSymbolMap
//
// This one can load both leftover map files on game discs (like Zelda), and mapfiles
// produced by SaveSymbolMap below.
bool LoadSymbolMap(const char *_szFilename)
{
Reset();
FILE *f = fopen(_szFilename, "r");
if (!f)
return false;
//char temp[256];
//fgets(temp,255,f); //.text section layout
//fgets(temp,255,f); // Starting Virtual
//fgets(temp,255,f); // address Size address
//fgets(temp,255,f); // -----------------------
bool started=false;
bool started = false;
while (!feof(f))
{
char line[512],temp[256];
fgets(line,511,f);
if (strlen(line)<4)
fgets(line, 511, f);
if (strlen(line) < 4)
continue;
sscanf(line,"%s",temp);
@@ -169,43 +162,33 @@ bool LoadSymbolMap(const char *_szFilename)
if (!started) continue;
// read out the entry
u32 address, vaddress, size, unknown;
char name[512];
sscanf(line,"%08x %08x %08x %i %s",&address, &size, &vaddress, &unknown, name);
sscanf(line, "%08x %08x %08x %i %s", &address, &size, &vaddress, &unknown, name);
char *namepos = strstr(line, name);
const char *namepos = strstr(line, name);
if (namepos != 0) //would be odd if not :P
strcpy(name, namepos);
name[strlen(name)-1] = 0;
name[strlen(name) - 1] = 0;
// we want the function names only ....
for (size_t i=0; i<strlen(name); i++)
// we want the function names only .... TODO: or do we really? aren't we wasting information here?
for (size_t i = 0; i < strlen(name); i++)
{
if (name[i] == ' ') name[i] = 0x00;
if (name[i] == '(') name[i] = 0x00;
}
// check if this is a valid entry
if (strcmp(name,".text")!=0 ||
strcmp(name,".init")!=0 ||
strlen(name) > 0)
// Check if this is a valid entry.
if (strcmp(name, ".text") != 0 || strcmp(name, ".init") != 0 || strlen(name) > 0)
{
AddSymbol(CSymbol(vaddress | 0x80000000, size, ST_FUNCTION, name));
AddSymbol(Symbol(vaddress | 0x80000000, size, ST_FUNCTION, name));
}
}
fclose(f);
// AnalyzeBackwards();
return true;
}
// __________________________________________________________________________________________________
// SaveSymbolMap
//
void SaveSymbolMap(const char *_rFilename)
{
FILE *f = fopen(_rFilename,"w");
@@ -213,50 +196,41 @@ void SaveSymbolMap(const char *_rFilename)
return;
fprintf(f,".text\n");
XVectorSymbol::const_iterator itr = m_VectorSymbols.begin();
while(itr != m_VectorSymbols.end())
XVectorSymbol::const_iterator itr = g_Symbols.begin();
while (itr != g_Symbols.end())
{
const CSymbol& rSymbol = *itr;
const Symbol& rSymbol = *itr;
fprintf(f,"%08x %08x %08x %i %s\n",rSymbol.vaddress,rSymbol.size,rSymbol.vaddress,0,rSymbol.GetName().c_str());
itr++;
}
fclose(f);
}
// =========================================================================================================
void MergeMapWithDB(const char *beginning)
void PushMapToFunctionDB(FunctionDB *func_db)
{
XVectorSymbol::const_iterator itr = m_VectorSymbols.begin();
while(itr != m_VectorSymbols.end())
XVectorSymbol::const_iterator itr = g_Symbols.begin();
while (itr != g_Symbols.end())
{
const CSymbol& rSymbol = *itr;
const Symbol& rSymbol = *itr;
if (rSymbol.type == ST_FUNCTION && rSymbol.size>=12)
{
func_db->AddKnownFunction(rSymbol.vaddress, rSymbol.size / 4, rSymbol.GetName().c_str());
// if (!beginning || !strlen(beginning) || !(memcmp(beginning,rSymbol.name,strlen(beginning))))
PPCAnalyst::AddToFuncDB(rSymbol.vaddress, rSymbol.size, rSymbol.GetName().c_str());
// PPCAnalyst::AddToSignatureDB(rSymbol.vaddress, rSymbol.size, rSymbol.GetName().c_str());
}
itr++;
}
PPCAnalyst::UseFuncDB();
PPCAnalyst::SaveFuncDB("e:\\test.db");
// PanicAlert("MergeMapWiintthDB : %s", beginning);
}
void GetFromAnalyzer()
{
struct local {static void AddSymb(PPCAnalyst::SFunction *f)
struct local {static void AddSymb(SFunction *f)
{
Debugger::AddSymbol(CSymbol(f->address, f->size*4, ST_FUNCTION, f->name.c_str()));
Debugger::AddSymbol(Symbol(f->address, f->size * 4, ST_FUNCTION, f->name.c_str()));
}};
PPCAnalyst::GetAllFuncs(local::AddSymb);
g_funcDB.GetAllFuncs(local::AddSymb);
}
const char *GetDescription(u32 _Address)
@@ -268,100 +242,8 @@ const char *GetDescription(u32 _Address)
return "(unk.)";
}
//
// --- shouldn't be here ---
//
#ifdef _WIN32
void FillSymbolListBox(HWND listbox, ESymbolType symmask)
{
ShowWindow(listbox,SW_HIDE);
ListBox_ResetContent(listbox);
int style = GetWindowLong(listbox,GWL_STYLE);
ListBox_SetItemData(listbox,ListBox_AddString(listbox,"_(0x80000000)"),0x80000000);
ListBox_SetItemData(listbox,ListBox_AddString(listbox,"_(0x81FFFFFF)"),0x81FFFFFF);
ListBox_SetItemData(listbox,ListBox_AddString(listbox,"_(0x80003100)"),0x80003100);
ListBox_SetItemData(listbox,ListBox_AddString(listbox,"_(0x90000000)"),0x90000000);
ListBox_SetItemData(listbox,ListBox_AddString(listbox,"_(0x93FFFFFF)"),0x93FFFFFF);
XVectorSymbol::const_iterator itr = m_VectorSymbols.begin();
while (itr != m_VectorSymbols.end())
{
const CSymbol& rSymbol = *itr;
if (rSymbol.type & symmask)
{
int index = ListBox_AddString(listbox,rSymbol.GetName().c_str());
ListBox_SetItemData(listbox,index,rSymbol.vaddress);
}
itr++;
}
ShowWindow(listbox,SW_SHOW);
}
void FillListBoxBLinks(HWND listbox, XSymbolIndex _Index)
{
/* ListBox_ResetContent(listbox);
int style = GetWindowLong(listbox,GWL_STYLE);
CSymbol &e = entries[num];*/
#ifdef BWLINKS
for (int i=0; i<e.backwardLinks.size(); i++)
{
u32 addr = e.backwardLinks[i];
int index = ListBox_AddString(listbox,GetSymbolName(GetSymbolNum(addr)));
ListBox_SetItemData(listbox,index,addr);
}
#endif
}
#endif
void AnalyzeBackwards()
{
#ifndef BWLINKS
return;
#else
for (int i=0; i<numEntries; i++)
{
u32 ptr = entries[i].vaddress;
if (ptr && entries[i].type == ST_FUNCTION)
{
for (int a = 0; a<entries[i].size/4; a++)
{
u32 inst = Memory::ReadUnchecked_U32(ptr);
switch (inst>>26)
{
case 18:
if (LK) //LK
{
u32 addr;
if(AA)
addr = SignExt26(LI << 2);
else
addr = ptr + SignExt26(LI << 2);
int funNum = GetSymbolNum(addr);
if (funNum>=0)
entries[funNum].backwardLinks.push_back(ptr);
}
break;
default:
;
}
ptr+=4;
}
}
}
#endif
}
bool GetCallstack(std::vector<SCallstackEntry> &output)
bool GetCallstack(std::vector<CallstackEntry> &output)
{
if (Core::GetState() == Core::CORE_UNINITIALIZED)
return false;
@@ -371,7 +253,7 @@ bool GetCallstack(std::vector<SCallstackEntry> &output)
u32 addr = Memory::ReadUnchecked_U32(PowerPC::ppcState.gpr[1]); // SP
if (LR == 0) {
SCallstackEntry entry;
CallstackEntry entry;
entry.Name = "(error: LR=0)";
entry.vAddress = 0x0;
output.push_back(entry);
@@ -380,7 +262,7 @@ bool GetCallstack(std::vector<SCallstackEntry> &output)
int count = 1;
if (GetDescription(PowerPC::ppcState.pc) != GetDescription(LR))
{
SCallstackEntry entry;
CallstackEntry entry;
entry.Name = StringFromFormat(" * %s [ LR = %08x ]\n", Debugger::GetDescription(LR), LR);
entry.vAddress = 0x0;
count++;
@@ -397,7 +279,7 @@ bool GetCallstack(std::vector<SCallstackEntry> &output)
if (!str || strlen(str) == 0 || !strcmp(str, "Invalid"))
str = "(unknown)";
SCallstackEntry entry;
CallstackEntry entry;
entry.Name = StringFromFormat(" * %s [ addr = %08x ]\n", str, func);
entry.vAddress = func;
output.push_back(entry);
@@ -438,5 +320,4 @@ void PrintCallstack() {
}
}
} // end of namespace Debugger
} // end of namespace Debugger
@@ -23,6 +23,8 @@
#include "Common.h"
class FunctionDB;
namespace Debugger
{
@@ -32,7 +34,7 @@ enum ESymbolType
ST_DATA = 2
};
class CSymbol
class Symbol
{
public:
u32 vaddress;
@@ -41,8 +43,8 @@ public:
ESymbolType type;
CSymbol(u32 _Address, u32 _Size, ESymbolType _Type, const char *_rName);
~CSymbol();
Symbol(u32 _Address, u32 _Size, ESymbolType _Type, const char *_rName);
~Symbol();
const std::string &GetName() const { return m_strName; }
void SetName(const char *_rName) { m_strName = _rName; }
@@ -53,14 +55,14 @@ private:
};
typedef int XSymbolIndex;
typedef std::vector<CSymbol> XVectorSymbol;
typedef std::vector<Symbol> XVectorSymbol;
void Reset();
XSymbolIndex AddSymbol(const CSymbol& _rSymbolMapEntry);
XSymbolIndex AddSymbol(const Symbol& _rSymbolMapEntry);
const CSymbol& GetSymbol(XSymbolIndex _Index);
CSymbol& AccessSymbol(XSymbolIndex _Index);
const Symbol& GetSymbol(XSymbolIndex _Index);
Symbol& AccessSymbol(XSymbolIndex _Index);
const XVectorSymbol& AccessSymbols();
@@ -69,22 +71,23 @@ XSymbolIndex FindSymbol(const char *name);
bool LoadSymbolMap(const char *_rFilename);
void SaveSymbolMap(const char *_rFilename);
void PrintCallstack();
const char *GetDescription(u32 _Address);
bool RenameSymbol(XSymbolIndex _Index, const char *_Name);
void AnalyzeBackwards();
void GetFromAnalyzer();
void MergeMapWithDB(const char *beginning);
struct SCallstackEntry
void GetFromAnalyzer();
void PushMapToFunctionDB(FunctionDB *func_db);
struct CallstackEntry
{
std::string Name;
u32 vAddress;
};
bool GetCallstack(std::vector<SCallstackEntry> &output);
bool GetCallstack(std::vector<CallstackEntry> &output);
void PrintCallstack();
// TODO: move outta here
#ifdef _WIN32
}
+8 -7
View File
@@ -67,6 +67,7 @@ static const SPatch OSPatches[] =
// Super Monkey Ball
{ ".evil_vec_cosine", HLE_Misc::SMB_EvilVecCosine },
{ ".evil_normalize", HLE_Misc::SMB_EvilNormalize },
{ ".evil_vec_setlength", HLE_Misc::SMB_evil_vec_setlength },
{ "PanicAlert", HLE_Misc::PanicAlert },
{ ".sqrt_internal_needs_cr1", HLE_Misc::SMB_sqrt_internal },
{ ".rsqrt_internal_needs_cr1", HLE_Misc::SMB_rsqrt_internal },
@@ -101,13 +102,13 @@ void PatchFunctions()
int SymbolIndex = Debugger::FindSymbol(OSPatches[i].m_szPatchName);
if (SymbolIndex > 0)
{
const Debugger::CSymbol& rSymbol = Debugger::GetSymbol(SymbolIndex);
const Debugger::Symbol& symbol = Debugger::GetSymbol(SymbolIndex);
u32 HLEPatchValue = (1 & 0x3f) << 26;
for (size_t addr = rSymbol.vaddress; addr < rSymbol.vaddress + rSymbol.size; addr+=4) {
for (size_t addr = symbol.vaddress; addr < symbol.vaddress + symbol.size; addr += 4) {
Memory::Write_U32(HLEPatchValue | i, addr);
}
//PanicAlert("patched %s", OSPatches[i].m_szPatchName);
LOG(HLE,"Patching %s %08x", OSPatches[i].m_szPatchName, rSymbol.vaddress);
LOG(HLE,"Patching %s %08x", OSPatches[i].m_szPatchName, symbol.vaddress);
}
}
@@ -116,12 +117,12 @@ void PatchFunctions()
int SymbolIndex = Debugger::FindSymbol(OSBreakPoints[i].m_szPatchName);
if (SymbolIndex != -1)
{
const Debugger::CSymbol& rSymbol = Debugger::GetSymbol(SymbolIndex);
CBreakPoints::AddBreakPoint(rSymbol.vaddress, false);
const Debugger::Symbol& symbol = Debugger::GetSymbol(SymbolIndex);
CBreakPoints::AddBreakPoint(symbol.vaddress, false);
LOG(HLE,"Adding BP to %s %08x", OSBreakPoints[i].m_szPatchName, rSymbol.vaddress);
LOG(HLE,"Adding BP to %s %08x", OSBreakPoints[i].m_szPatchName, symbol.vaddress);
}
}
}
// CBreakPoints::AddBreakPoint(0x8000D3D0, false);
}
+20 -42
View File
@@ -111,61 +111,39 @@ void SMB_EvilNormalize()
NPC = LR;
}
void SMB_evil_vec_setlength()
{
u32 r3 = GPR(3);
u32 r4 = GPR(4);
float x = F(r3);
float y = F(r3 + 4);
float z = F(r3 + 8);
float inv_len = (float)(rPS0(1) / sqrt(x*x + y*y + z*z));
x *= inv_len;
y *= inv_len;
z *= inv_len;
FW(r4, x);
FW(r4 + 4, y);
FW(r4 + 8, z);
NPC = LR;
}
void SMB_sqrt_internal()
{
/*
.sqrt_internal_needs_cr1
800070ec: bgt+ cr1,0x80007090
800070f0: blt+ cr1,0x80007088
800070f4: b 0x80007080
800070f8: frsp f0,f1
800070fc: lis r4, 0xE000
80007100: mcrfs cr1, cr4
80007104: mcrfs cr0, cr3
80007108: lfs f2, 0x01A0 (r4)
8000710c: bso+ cr1,0x800070EC
80007110: bso+ 0x80007088
80007114: ble+ cr1,0x80007088
80007118: mflr r3
8000711c: bl 0x800070B0
80007120: mtlr r3
80007124: fmuls f1,f1,f0
80007128: blr
*/
double f = sqrt(rPS0(1));
rPS0(0) = rPS0(1);
rPS1(0) = rPS0(1);
rPS0(1) = f;
rPS1(1) = f;
rPS0(0) = f;
rPS1(0) = f;
NPC = LR;
}
void SMB_rsqrt_internal()
{
/*
.rsqrt_internal_needs_cr1
8000712c: bgt+ cr1,0x80007088
80007130: blt+ cr1,0x80007090
80007134: b 0x80007080
80007138: frsp f1,f1
8000713c: lis r4, 0xE000
80007140: mcrfs cr1, cr4
80007144: mcrfs cr0, cr3
80007148: lfs f2, 0x01A0 (r4)
8000714c: bso+ cr1,0x8000712C
80007150: bso+ 0x80007090
80007154: ble+ cr1,0x80007090
80007158: mflr r3
8000715c: bl 0x800070B0
80007160: mtlr r3
80007164: frsp f1,f1
80007168: blr
*/
double f = 1.0 / sqrt(rPS0(1));
rPS0(1) = f;
rPS1(1) = f;
rPS0(0) = f;
rPS1(0) = f;
NPC = LR;
}
+1
View File
@@ -32,6 +32,7 @@ namespace HLE_Misc
void SMB_sqrt_internal();
void SMB_rsqrt_internal();
void SMB_atan2();
void SMB_evil_vec_setlength();
}
#endif
+2 -2
View File
@@ -178,12 +178,12 @@ void LogManager::Log(LogTypes::LOG_TYPE _type, const char *_fmt, ...)
#endif
if (Index > 0)
{
const Debugger::CSymbol& rSymbol = Debugger::GetSymbol(Index);
const Debugger::Symbol& symbol = Debugger::GetSymbol(Index);
sprintf(Msg2, "%i: %x %s (%s, %08x ) : %s%s",
++count,
PowerPC::ppcState.DebugCount,
m_Log[_type]->m_szShortName,
rSymbol.GetName().c_str(),
symbol.GetName().c_str(),
PC,
Msg, eol);
}
+170
View File
@@ -0,0 +1,170 @@
// Copyright (C) 2003-2008 Dolphin Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "Common.h"
#include <map>
#include <string>
#include <vector>
#include "FunctionDB.h"
#include "SignatureDB.h"
#include "PPCAnalyst.h"
FunctionDB g_funcDB;
void FunctionDB::List()
{
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++)
{
LOG(HLE,"%s @ %08x: %i bytes (hash %08x) : %i calls",iter->second.name.c_str(),iter->second.address,iter->second.size,iter->second.hash,iter->second.numCalls);
}
LOG(HLE,"%i functions known in this program above.",functions.size());
}
void FunctionDB::Clear()
{
}
// Adds the function to the list, unless it's already there
SFunction *FunctionDB::AddFunction(u32 startAddr)
{
if (startAddr < 0x80000010)
return 0;
XFuncMap::iterator iter = functions.find(startAddr);
if (iter != functions.end())
{
// it's already in the list
return 0;
}
else
{
SFunction tempFunc; //the current one we're working on
u32 targetEnd = PPCAnalyst::AnalyzeFunction(startAddr, tempFunc);
if (targetEnd == 0)
return 0; //found a dud :(
//LOG(HLE,"SFunction found at %08x",startAddr);
functions[startAddr] = tempFunc;
checksumToFunction[tempFunc.hash] = &(functions[startAddr]);
return &functions[startAddr];
}
}
void FunctionDB::AddKnownFunction(u32 startAddr, u32 size, const char *name)
{
XFuncMap::iterator iter = functions.find(startAddr);
if (iter != functions.end())
{
SFunction *tempfunc = &iter->second;
tempfunc->name = name;
tempfunc->hash = SignatureDB::ComputeCodeChecksum(startAddr, startAddr + size);
}
else
{
SFunction tf;
tf.name = name;
PPCAnalyst::AnalyzeFunction(startAddr, tf);
functions[startAddr] = tf;
checksumToFunction[tf.hash] = &(functions[startAddr]);
}
}
void FunctionDB::FillInCallers()
{
for (XFuncMap::iterator iter = functions.begin(); iter!=functions.end(); iter++)
{
SFunction &f = iter->second;
for (size_t i=0; i<f.calls.size(); i++)
{
SCall NewCall(iter->first, f.calls[i].callAddress);
u32 FunctionAddress = f.calls[i].function;
XFuncMap::iterator FuncIterator = functions.find(FunctionAddress);
if (FuncIterator != functions.end())
{
SFunction& rCalledFunction = FuncIterator->second;
rCalledFunction.callers.push_back(NewCall);
}
else
{
LOG(HLE,"FillInCallers tries to fill data in an unknown fuction 0x%08x.", FunctionAddress);
}
}
}
}
void FunctionDB::PrintCalls(u32 funcAddr)
{
XFuncMap::iterator iter = functions.find(funcAddr);
if (iter != functions.end())
{
SFunction &f = iter->second;
LOG(HLE, "The function %s at %08x calls:", f.name.c_str(), f.address);
for (std::vector<SCall>::iterator fiter = f.calls.begin(); fiter!=f.calls.end(); fiter++)
{
XFuncMap::iterator n = functions.find(fiter->function);
if (n != functions.end())
{
LOG(CONSOLE,"* %08x : %s", fiter->callAddress, n->second.name.c_str());
}
}
}
else
{
LOG(CONSOLE,"SFunction does not exist");
}
}
void FunctionDB::PrintCallers(u32 funcAddr)
{
XFuncMap::iterator iter = functions.find(funcAddr);
if (iter != functions.end())
{
SFunction &f = iter->second;
LOG(CONSOLE,"The function %s at %08x is called by:",f.name.c_str(),f.address);
for (std::vector<SCall>::iterator fiter = f.callers.begin(); fiter != f.callers.end(); fiter++)
{
XFuncMap::iterator n = functions.find(fiter->function);
if (n != functions.end())
{
LOG(CONSOLE,"* %08x : %s", fiter->callAddress, n->second.name.c_str());
}
}
}
}
void FunctionDB::GetAllFuncs(functionGetterCallback callback)
{
XFuncMap::iterator iter = functions.begin();
while (iter != functions.end())
{
callback(&(iter->second));
iter++;
}
}
void FunctionDB::LogFunctionCall(u32 addr)
{
//u32 from = PC;
XFuncMap::iterator iter = functions.find(addr);
if (iter != functions.end())
{
SFunction &f = iter->second;
f.numCalls++;
}
}
+113
View File
@@ -0,0 +1,113 @@
// Copyright (C) 2003-2008 Dolphin Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "Common.h"
#include <map>
#include <string>
#include <vector>
struct SCall
{
SCall(u32 a, u32 b) :
function(a),
callAddress(b)
{}
u32 function;
u32 callAddress;
};
struct SFunction
{
SFunction() :
hash(0),
address(0),
flags(0),
size(0),
numCalls(0),
analyzed(0)
{}
~SFunction()
{
callers.clear();
calls.clear();
}
std::string name;
std::vector<SCall> callers; //addresses of functions that call this function
std::vector<SCall> calls; //addresses of functions that are called by this function
u32 hash; //use for HLE function finding
u32 address;
u32 flags;
int size;
int numCalls;
int analyzed;
};
enum
{
FFLAG_TIMERINSTRUCTIONS=(1<<0),
FFLAG_LEAF=(1<<1),
FFLAG_ONLYCALLSNICELEAFS=(1<<2),
FFLAG_EVIL=(1<<3),
FFLAG_RFI=(1<<4),
FFLAG_STRAIGHT=(1<<5)
};
// This has functionality overlapping Debugger_Symbolmap. Should merge that stuff in here later.
class FunctionDB
{
public:
typedef std::map<u32, SFunction> XFuncMap;
typedef std::map<u32, SFunction*> XFuncPtrMap;
private:
XFuncMap functions;
XFuncPtrMap checksumToFunction;
public:
typedef void (*functionGetterCallback)(SFunction *f);
FunctionDB() {}
SFunction *AddFunction(u32 startAddr);
void AddKnownFunction(u32 startAddr, u32 size, const char *name);
void GetAllFuncs(functionGetterCallback callback);
SFunction *GetFunction(u32 hash) {
// TODO: sanity check
return checksumToFunction[hash];
}
XFuncMap::iterator GetIterator() { return functions.begin(); }
XFuncMap::const_iterator GetConstIterator() { return functions.begin(); }
XFuncMap::iterator End() { return functions.end(); }
void Clear();
void List();
void FillInCallers();
void PrintCalls(u32 funcAddr);
void PrintCallers(u32 funcAddr);
void LogFunctionCall(u32 addr);
};
extern FunctionDB g_funcDB;
File diff suppressed because it is too large Load Diff
+12 -102
View File
@@ -14,6 +14,7 @@
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#ifndef _PPCANALYST_H
#define _PPCANALYST_H
@@ -25,38 +26,17 @@
#include "Common.h"
#include "Gekko.h"
class PPCAnalyst
class FunctionDB;
struct SFunction;
namespace PPCAnalyst
{
private:
struct SCall
{
SCall(u32 a, u32 b) :
function(a),
callAddress(b)
{}
u32 function;
u32 callAddress;
};
struct SDBFunc
{
u32 size;
std::string name;
SDBFunc() :
size(0)
{
}
};
public:
struct CodeOp //16B
{
UGeckoInstruction inst;
u32 address;
u32 branchTo; //if 0, not a branch
int branchToIndex; //index of target block
int branchToIndex; //index of target block
u8 regsOut[2];
u8 regsIn[3];
u8 fregOut;
@@ -90,7 +70,7 @@ public:
bool any;
bool anyTimer;
int GetTotalNumAccesses(int reg) {return numReads[reg]+numWrites[reg];}
int GetTotalNumAccesses(int reg) {return numReads[reg] + numWrites[reg];}
int GetUseRange(int reg) {
return max(lastRead[reg], lastWrite[reg]) -
min(firstRead[reg], firstWrite[reg]);}
@@ -98,83 +78,13 @@ public:
void ShuffleUp(CodeOp *code, int first, int last);
struct SFunction
{
SFunction() :
hash(0),
address(0),
flags(0),
size(0),
numCalls(0)
{}
CodeOp *Flatten(u32 address, u32 &realsize, BlockStats &st, BlockRegStats &gpa, BlockRegStats &fpa);
~SFunction()
{
callers.clear();
calls.clear();
}
void LogFunctionCall(u32 addr);
std::string name;
std::vector<SCall> callers; //addresses of functions that call this function
std::vector<SCall> calls; //addresses of functions that are called by this function
u32 hash; //use for HLE function finding
u32 address;
u32 flags;
int size;
int numCalls;
};
enum
{
FFLAG_TIMERINSTRUCTIONS=(1<<0),
FFLAG_LEAF=(1<<1),
FFLAG_ONLYCALLSNICELEAFS=(1<<2),
FFLAG_EVIL=(1<<3),
FFLAG_RFI=(1<<4),
FFLAG_STRAIGHT=(1<<5)
};
private:
typedef void (*functionGetterCallback)(SFunction *f);
typedef std::map<u32, SFunction> XFuncMap;
typedef std::map<u32, SFunction*> XFuncPtrMap;
typedef std::map<u32, SDBFunc> XFuncDB;
static XFuncMap functions;
static XFuncPtrMap checksumToFunction;
static XFuncDB database;
static u32 AnalyzeFunction(u32 startAddr, SFunction &func);
static void AnalyzeFunction2(SFunction &func);
static u32 EvaluateBranchTarget(UGeckoInstruction instr, u32 pc);
static SFunction *AddFunction(u32 startAddr);
static void FindFunctionsFromBranches(u32 startAddr, u32 endAddr);
static u32 FuncChecksum (u32 offsetStart, u32 offsetEnd);
static void FillInCallers();
static void FindFunctionsAfterBLR();
static void FixUpInternalBranches(CodeOp *code, int begin, int end);
public:
static CodeOp *Flatten(u32 address, u32 &realsize, BlockStats &st, BlockRegStats &gpa, BlockRegStats &fpa);
static void LogFunctionCall(u32 addr);
static void FindFunctions(u32 startAddr, u32 endAddr);
static void PrintCalls(u32 funcAddr);
static void PrintCallers(u32 funcAddr);
static void AddToFuncDB(u32 startAddr, u32 size, const TCHAR *name);
static void ListFunctions();
static bool SaveFuncDB(const TCHAR *filename);
static bool LoadFuncDB(const TCHAR *filename);
static void ClearDB();
static void ListDB();
static void UseFuncDB();
static void CleanDB(); //remove zzz_
static void GetAllFuncs(functionGetterCallback callback);
};
void FindFunctions(u32 startAddr, u32 endAddr, FunctionDB *func_db);
bool AnalyzeFunction(u32 startAddr, SFunction &func);
} // namespace
#endif

Some files were not shown because too many files have changed in this diff Show More