diff --git a/Phobos.props b/Phobos.props
new file mode 100644
index 0000000000..bee83b6da5
--- /dev/null
+++ b/Phobos.props
@@ -0,0 +1,129 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ DevBuild
+ Win32
+
+
+ Release
+ Win32
+
+
+
+
+ DynamicLibrary
+ false
+ v143
+ NotSet
+
+
+
+
+ false
+ $(ExpandedIncludePath);$(MSBuildThisFileDirectory)src\;$(YRppDir);$(VC_IncludePath)
+ false
+ $(Configuration)\
+ $(Configuration)\IntDir\
+
+ dbghelp.lib;onecore.lib
+
+
+
+
+ Level4
+ true
+
+ true
+ SYR_VER=2;HAS_EXCEPTIONS=0;NOMINMAX;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;NTDDI_VERSION=0x06010000;%(PreprocessorDefinitions);%(AdditionalDefinitions);PHOBOS_DLL="$(ProjectName).dll"
+ true
+ false
+ MultiThreaded
+ 8Bytes
+ false
+ false
+ StreamingSIMDExtensions2
+ true
+ false
+ stdcpp20
+ $(IntDir)\%(Directory)
+ $(IntDir)\%(Directory)
+ StdCall
+ 4100;4201;4530;4731;4740;4458;4819;5103;5105
+ true
+ true
+ true
+
+
+ true
+ true
+ $(PhobosExtraLibs);%(AdditionalDependencies)
+ Windows
+ $(OutDir)$(TargetName).pdb
+ $(IntDir)$(TargetName).pgd
+ $(IntDir)$(TargetName).lib
+
+
+
+
+
+ IS_RELEASE_VER;%(PreprocessorDefinitions)
+ MaxSpeed
+ true
+
+
+
+
+
+
+ IS_RELEASE_VER;%(PreprocessorDefinitions)
+
+
+
+
+
+ MaxSpeed
+ true
+
+
+
+
+
+
+
+
+
+ DEBUG;%(PreprocessorDefinitions)
+ Disabled
+ false
+ 4100;4201;4530;4731;4740;4458;4819;5103;5105;26495
+
+
+ DEBUG;%(PreprocessorDefinitions)
+
+
+
+
+
+ /DGIT_COMMIT="$(GitCommit)" %(AdditionalOptions)
+
+
+ /DGIT_COMMIT="$(GitCommit)" %(AdditionalOptions)
+
+
+
+
+
+ /DGIT_BRANCH="$(GitBranch)" %(AdditionalOptions)
+
+
+ /DGIT_BRANCH="$(GitBranch)" %(AdditionalOptions)
+
+
+
+
+
diff --git a/Phobos.vcxproj b/Phobos.vcxproj
index 9adf614f4a..76c0d576c7 100644
--- a/Phobos.vcxproj
+++ b/Phobos.vcxproj
@@ -3,329 +3,389 @@
true
-
-
- Debug
- Win32
-
-
- DevBuild
- Win32
-
-
- Release
- Win32
-
+
+ Phobos
+ Phobos
+ {3FAF7126-F38C-4D1E-9973-C21A37870F60}
+ 15.0
+ 10.0
+ true
+ $(MSBuildThisFileDirectory)
+ $(ThisDir)YRpp
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
-
+
-
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
+
@@ -334,228 +394,13 @@
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- 15.0
- {3FAF7126-F38C-4D1E-9973-C21A37870F60}
- Phobos
- 10.0
- Phobos
-
-
-
- DynamicLibrary
- false
- v143
- NotSet
- false
-
-
- DynamicLibrary
- false
- v143
- NotSet
- false
-
-
- DynamicLibrary
- false
- v143
- NotSet
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
- $(SolutionDir)src\;$(SolutionDir)src\ExtraHeaders;$(SolutionDir)yrpp;$(SolutionDir)lib;$(VC_IncludePath)
- false
- $(Configuration)\
- $(Configuration)\IntDir\
-
-
- false
- $(SolutionDir)src\;$(SolutionDir)src\ExtraHeaders;$(SolutionDir)yrpp;$(SolutionDir)lib;$(VC_IncludePath)
- false
- $(Configuration)\
- $(Configuration)\IntDir\
-
-
- false
- $(SolutionDir)src\;$(SolutionDir)src\ExtraHeaders;$(SolutionDir)yrpp;$(SolutionDir)lib;$(VC_IncludePath)
- false
- $(Configuration)\
- $(Configuration)\IntDir\
-
-
-
- Level4
- MaxSpeed
- true
-
- true
- Caret
- true
- IS_RELEASE_VER;SYR_VER=2;HAS_EXCEPTIONS=0;NOMINMAX;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;NTDDI_VERSION=0x06010000;%(PreprocessorDefinitions);%(AdditionalDefinitions);PHOBOS_DLL="$(ProjectName).dll"
- true
- false
- MultiThreaded
- 8Bytes
- false
- false
- StreamingSIMDExtensions2
- true
- false
- stdcpp20
- $(IntDir)\%(RelativeDir)
- $(IntDir)\%(RelativeDir)
- StdCall
- %(AdditionalOptions)
- 4100;4201;4530;4731;4740;4458;4819;5103;5105
- true
- true
- true
-
-
- true
- true
- kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;dbghelp.lib;onecore.lib;%(AdditionalDependencies)
- Windows
- $(OutDir)$(TargetName).pdb
- $(IntDir)$(TargetName).pgd
- $(IntDir)$(TargetName).lib
-
-
-
-
-
- IS_RELEASE_VER;%(PreprocessorDefinitions)
-
-
-
-
- Level4
- MaxSpeed
- true
-
- true
- Caret
- true
- SYR_VER=2;HAS_EXCEPTIONS=0;NOMINMAX;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;NTDDI_VERSION=0x06010000;%(PreprocessorDefinitions);%(AdditionalDefinitions);PHOBOS_DLL="$(ProjectName).dll"
- true
- false
- MultiThreaded
- 8Bytes
- false
- false
- StreamingSIMDExtensions2
- true
- false
- stdcpp20
- $(IntDir)\%(RelativeDir)
- $(IntDir)\%(RelativeDir)
- StdCall
- %(AdditionalOptions)
- 4100;4201;4530;4731;4740;4458;4819;5103;5105
- true
- true
- true
-
-
- true
- true
- kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;dbghelp.lib;onecore.lib;%(AdditionalDependencies)
- Windows
- $(OutDir)$(TargetName).pdb
- $(IntDir)$(TargetName).pgd
- $(IntDir)$(TargetName).lib
-
-
-
-
-
-
-
- Level4
- Disabled
- true
-
-
- true
- Caret
- false
- DEBUG;SYR_VER=2;HAS_EXCEPTIONS=0;NOMINMAX;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;NTDDI_VERSION=0x06010000;%(PreprocessorDefinitions);%(AdditionalDefinitions);PHOBOS_DLL="$(ProjectName).dll"
- true
- false
- MultiThreaded
- 8Bytes
- false
- false
- StreamingSIMDExtensions2
- true
- false
- stdcpp20
- $(IntDir)\%(RelativeDir)
- $(IntDir)\%(RelativeDir)
- StdCall
- %(AdditionalOptions)
- 4100;4201;4530;4731;4740;4458;4819;5103;5105;26495
- true
- true
- true
-
-
- true
- true
- kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;dbghelp.lib;onecore.lib;%(AdditionalDependencies)
- Windows
- $(OutDir)$(TargetName).pdb
- $(IntDir)$(TargetName).pgd
- $(IntDir)$(TargetName).lib
-
-
-
-
-
-
-
-
- /DGIT_COMMIT="$(GitCommit)" %(AdditionalOptions)
-
-
- /DGIT_COMMIT="$(GitCommit)" %(AdditionalOptions)
-
-
-
-
- /DGIT_BRANCH="$(GitBranch)" %(AdditionalOptions)
-
-
- /DGIT_BRANCH="$(GitBranch)" %(AdditionalOptions)
-
-
-
-
\ No newline at end of file
diff --git a/YRpp b/YRpp
index c75fa734cc..4f07999249 160000
--- a/YRpp
+++ b/YRpp
@@ -1 +1 @@
-Subproject commit c75fa734cca9c3ad0a05ac03cd325145ef3c3571
+Subproject commit 4f079992496d9e1113d63016861163940133cf8f
diff --git a/src/Utilities/Macro.h b/src/Utilities/Macro.h
index a0bdefff07..a20c8c9f6c 100644
--- a/src/Utilities/Macro.h
+++ b/src/Utilities/Macro.h
@@ -100,7 +100,11 @@ typedef _VTABLE _OFFSET;
{ \
__declspec(allocate(PATCH_SECTION_NAME)) \
Patch patch = {offset, size, (byte*)data}; \
- }
+ } \
+ _YR_DEFINE_INCLUDE_ANCHOR( \
+ _YR_PP_CAT(YrKeepPatch_, offset), \
+ &STATIC_PATCH##offset::patch \
+ )
#define DEFINE_PATCH_TYPED(type, offset, ...) \
namespace STATIC_PATCH##offset \
@@ -121,7 +125,7 @@ typedef _VTABLE _OFFSET;
#define DEFINE_NAKED_HOOK(hook, funcname) \
void funcname(); \
- DEFINE_FUNCTION_JUMP(LJMP, hook, funcname) \
+ DEFINE_FUNCTION_JUMP(LJMP, hook, funcname) \
void NAKED funcname()
#pragma endregion Static Patch