* Download symbols in lldb/sos and for portable PDBs on Windows/dbgeng.
Add symbol store support.
Separate the coreclr hosting code.
Use dlopen/dlsym on Linux to host coreclr.
Remove _EFN_ functions and VerifyStackTrace from xplat builds of SOS.
Add native projects for easier Strike development.
Fix packaging and yaml for additional symstore assemblies.
Don't pack dotnet-analyze and dotnet-collect because they currently break the official job.
* Workaround problem in IXCLRDataModule Request that crashes on dynamic
modules. Use the IXCLRDataModule GetFlags to skip them.
* Turn off verbose logging.
- agent.os -equals Windows_NT
variables:
_PublishBlobFeedUrl: https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
- _SOSNETCorePath: $(Build.SourcesDirectory)/artifacts/bin/SOS.NETCore/Release/netcoreapp1.0
+ _SOSNETCorePath: $(Build.SourcesDirectory)/artifacts/bin/SOS.NETCore/Release/netcoreapp2.0/publish
_TeamName: DotNetCore
steps:
displayName: Copy Windows x64 Artifacts
inputs:
sourceFolder: '$(_SOSNETCorePath)'
- contents: 'SOS.NETCore.dll'
+ contents: '*.dll'
overWrite: true
targetFolder: '$(Build.SourcesDirectory)/artifacts/Windows_NT.x64.Release'
condition: succeeded()
displayName: Copy Windows x86 Artifacts
inputs:
sourceFolder: '$(_SOSNETCorePath)'
- contents: 'SOS.NETCore.dll'
+ contents: '*.dll'
overWrite: true
targetFolder: '$(Build.SourcesDirectory)/artifacts/bin/Windows_NT.x86.Release'
condition: succeeded()
displayName: Copy Extension Gallery Files
inputs:
sourceFolder: '$(_SOSNETCorePath)'
- contents: 'SOS.NETCore.dll'
+ contents: '*.dll'
overWrite: true
targetFolder: '$(Build.SourcesDirectory)/artifacts/bin/gallery/x64'
condition: succeeded()
displayName: Copy Extension Gallery Files
inputs:
sourceFolder: '$(_SOSNETCorePath)'
- contents: 'SOS.NETCore.dll'
+ contents: '*.dll'
overWrite: true
targetFolder: '$(Build.SourcesDirectory)/artifacts/bin/gallery/x86'
condition: succeeded()
displayName: Copy Linux Artifacts
inputs:
sourceFolder: '$(_SOSNETCorePath)'
- contents: 'SOS.NETCore.dll'
+ contents: '*.dll'
overWrite: true
targetFolder: '$(Build.SourcesDirectory)/artifacts/bin/Linux.x64.Release'
condition: succeeded()
displayName: Copy MacOS Artifacts
inputs:
sourceFolder: '$(_SOSNETCorePath)'
- contents: 'SOS.NETCore.dll'
+ contents: '*.dll'
overWrite: true
targetFolder: '$(Build.SourcesDirectory)/artifacts/bin/OSX.x64.Release'
condition: succeeded()
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-dump", "src\Tools\dotnet-dump\dotnet-dump.csproj", "{43D41DE9-7CCC-4DCB-A68A-B9099E538125}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Strike", "src\SOS\Strike\Strike.vcxproj", "{41F59D85-FC36-3015-861B-F177863252BC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbgutil", "src\SOS\dbgutil\dbgutil.vcxproj", "{A9A7C879-C320-3327-BB84-16E1322E17AE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "debugshim", "src\SOS\debugshim\debugshim.vcxproj", "{6A94C5FE-8706-3505-834E-DA16242F3864}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gcdump", "src\SOS\gcdump\gcdump.vcxproj", "{20EBC3C4-917C-402D-B778-9A6E3742BF5A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Checked|Any CPU = Checked|Any CPU
+ Checked|ARM = Checked|ARM
+ Checked|ARM64 = Checked|ARM64
+ Checked|x64 = Checked|x64
+ Checked|x86 = Checked|x86
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
+ RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
+ RelWithDebInfo|ARM = RelWithDebInfo|ARM
+ RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
+ RelWithDebInfo|x64 = RelWithDebInfo|x64
+ RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|ARM.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|ARM64.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|x64.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|x64.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|x86.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Checked|x86.Build.0 = Release|Any CPU
{20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Debug|ARM.ActiveCfg = Debug|Any CPU
{20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Release|x64.Build.0 = Release|Any CPU
{20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Release|x86.ActiveCfg = Release|Any CPU
{20513BA2-A156-4A17-4C70-5AC2DBD4F833}.Release|x86.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {20513BA2-A156-4A17-4C70-5AC2DBD4F833}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM64.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x64.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x64.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x86.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x86.Build.0 = Release|Any CPU
{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x64.Build.0 = Release|Any CPU
{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x86.ActiveCfg = Release|Any CPU
{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x86.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM64.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x64.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x64.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x86.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x86.Build.0 = Release|Any CPU
{730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|Any CPU.Build.0 = Debug|Any CPU
{730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|ARM.ActiveCfg = Debug|Any CPU
{730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x64.Build.0 = Release|Any CPU
{730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x86.ActiveCfg = Release|Any CPU
{730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x86.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM64.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x64.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x64.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x86.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x86.Build.0 = Release|Any CPU
{1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x64.Build.0 = Release|Any CPU
{1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x86.ActiveCfg = Release|Any CPU
{1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x86.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|ARM.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|ARM64.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|x64.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|x64.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|x86.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Checked|x86.Build.0 = Release|Any CPU
{365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Debug|ARM.ActiveCfg = Debug|Any CPU
{365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Release|x64.Build.0 = Release|Any CPU
{365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Release|x86.ActiveCfg = Release|Any CPU
{365381BB-2A89-4F52-BC66-1BB4A9D514BB}.Release|x86.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {365381BB-2A89-4F52-BC66-1BB4A9D514BB}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|Any CPU.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|Any CPU.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM64.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM64.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x64.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x64.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x86.ActiveCfg = Release|x86
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x86.Build.0 = Release|x86
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|Any CPU.ActiveCfg = Debug|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM.ActiveCfg = Debug|ARM
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM.Build.0 = Debug|ARM
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM64.Build.0 = Debug|ARM64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM.ActiveCfg = Debug|x86
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM64.ActiveCfg = Debug|x86
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x64.ActiveCfg = Debug|x64
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x64.Build.0 = Debug|x64
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x86.ActiveCfg = Debug|x86
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x86.Build.0 = Debug|x86
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|Any CPU.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM.ActiveCfg = Release|ARM
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM.Build.0 = Release|ARM
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM64.ActiveCfg = Release|ARM64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM64.Build.0 = Release|ARM64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM.ActiveCfg = Release|x86
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM64.ActiveCfg = Release|x86
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|x64.ActiveCfg = Release|x64
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|x64.Build.0 = Release|x64
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|x86.ActiveCfg = Release|x86
{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|x86.Build.0 = Release|x86
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM64.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM64.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x64.ActiveCfg = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x64.Build.0 = Release|x64
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x86.ActiveCfg = Release|x86
+ {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x86.Build.0 = Release|x86
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|ARM.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|ARM64.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|x64.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|x64.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|x86.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.Checked|x86.Build.0 = Release|Any CPU
{1576314E-F823-4A24-BC90-22282AB33353}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1576314E-F823-4A24-BC90-22282AB33353}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1576314E-F823-4A24-BC90-22282AB33353}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1576314E-F823-4A24-BC90-22282AB33353}.Release|x64.Build.0 = Release|Any CPU
{1576314E-F823-4A24-BC90-22282AB33353}.Release|x86.ActiveCfg = Release|Any CPU
{1576314E-F823-4A24-BC90-22282AB33353}.Release|x86.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {1576314E-F823-4A24-BC90-22282AB33353}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|ARM.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|ARM64.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|x64.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|x64.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|x86.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.Checked|x86.Build.0 = Release|Any CPU
{D9972D61-4B43-4007-B983-C02718DD8D33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D9972D61-4B43-4007-B983-C02718DD8D33}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D9972D61-4B43-4007-B983-C02718DD8D33}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D9972D61-4B43-4007-B983-C02718DD8D33}.Release|x64.Build.0 = Release|Any CPU
{D9972D61-4B43-4007-B983-C02718DD8D33}.Release|x86.ActiveCfg = Release|Any CPU
{D9972D61-4B43-4007-B983-C02718DD8D33}.Release|x86.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {D9972D61-4B43-4007-B983-C02718DD8D33}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|Any CPU.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|Any CPU.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM64.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM64.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x64.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x64.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x86.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x86.Build.0 = Release|Any CPU
{43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|Any CPU.Build.0 = Debug|Any CPU
{43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|ARM.ActiveCfg = Debug|Any CPU
{43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x64.Build.0 = Release|Any CPU
{43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x86.ActiveCfg = Release|Any CPU
{43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x86.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {41F59D85-FC36-3015-861B-F177863252BC}.Checked|Any CPU.ActiveCfg = Checked|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Checked|ARM.ActiveCfg = Checked|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Checked|ARM64.ActiveCfg = Checked|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Checked|x64.ActiveCfg = Checked|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Checked|x64.Build.0 = Checked|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Checked|x86.ActiveCfg = Checked|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Debug|ARM.ActiveCfg = Debug|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Debug|ARM64.ActiveCfg = Debug|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Debug|x64.ActiveCfg = Debug|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Debug|x64.Build.0 = Debug|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Debug|x86.ActiveCfg = Debug|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Release|Any CPU.ActiveCfg = Release|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Release|ARM.ActiveCfg = Release|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Release|ARM64.ActiveCfg = Release|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Release|x64.ActiveCfg = Release|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Release|x64.Build.0 = Release|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.Release|x86.ActiveCfg = Release|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
+ {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|Any CPU.ActiveCfg = Checked|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|ARM.ActiveCfg = Checked|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|ARM64.ActiveCfg = Checked|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x64.ActiveCfg = Checked|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x64.Build.0 = Checked|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x86.ActiveCfg = Checked|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|ARM.ActiveCfg = Debug|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|ARM64.ActiveCfg = Debug|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x64.ActiveCfg = Debug|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x64.Build.0 = Debug|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x86.ActiveCfg = Debug|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|Any CPU.ActiveCfg = Release|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|ARM.ActiveCfg = Release|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|ARM64.ActiveCfg = Release|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|x64.ActiveCfg = Release|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|x64.Build.0 = Release|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|x86.ActiveCfg = Release|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
+ {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Checked|Any CPU.ActiveCfg = Checked|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Checked|ARM.ActiveCfg = Checked|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Checked|ARM64.ActiveCfg = Checked|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Checked|x64.ActiveCfg = Checked|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Checked|x64.Build.0 = Checked|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Checked|x86.ActiveCfg = Checked|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Debug|ARM.ActiveCfg = Debug|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Debug|ARM64.ActiveCfg = Debug|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Debug|x64.ActiveCfg = Debug|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Debug|x64.Build.0 = Debug|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Debug|x86.ActiveCfg = Debug|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Release|Any CPU.ActiveCfg = Release|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Release|ARM.ActiveCfg = Release|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Release|ARM64.ActiveCfg = Release|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Release|x64.ActiveCfg = Release|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Release|x64.Build.0 = Release|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.Release|x86.ActiveCfg = Release|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
+ {6A94C5FE-8706-3505-834E-DA16242F3864}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|Any CPU.ActiveCfg = Checked|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|ARM.ActiveCfg = Checked|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|ARM64.ActiveCfg = Checked|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|x64.ActiveCfg = Checked|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|x64.Build.0 = Checked|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|x86.ActiveCfg = Checked|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|ARM.ActiveCfg = Debug|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|ARM64.ActiveCfg = Debug|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|x64.ActiveCfg = Debug|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|x64.Build.0 = Debug|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|x86.ActiveCfg = Debug|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|Any CPU.ActiveCfg = Release|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|ARM.ActiveCfg = Release|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|ARM64.ActiveCfg = Release|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|x64.ActiveCfg = Release|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|x64.Build.0 = Release|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|x86.ActiveCfg = Release|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
{1576314E-F823-4A24-BC90-22282AB33353} = {B62728C8-1267-4043-B46F-5537BBAEC692}
{D9972D61-4B43-4007-B983-C02718DD8D33} = {B62728C8-1267-4043-B46F-5537BBAEC692}
{43D41DE9-7CCC-4DCB-A68A-B9099E538125} = {B62728C8-1267-4043-B46F-5537BBAEC692}
+ {41F59D85-FC36-3015-861B-F177863252BC} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
+ {A9A7C879-C320-3327-BB84-16E1322E17AE} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
+ {6A94C5FE-8706-3505-834E-DA16242F3864} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
+ {20EBC3C4-917C-402D-B778-9A6E3742BF5A} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {46465737-C938-44FC-BE1A-4CE139EBB5E0}
<MicrosoftNetCompilersVersion>2.8.0-beta6-62830-08</MicrosoftNetCompilersVersion>
<!-- CoreFX -->
- <SystemReflectionMetadataVersion>1.5.0</SystemReflectionMetadataVersion>
+ <SystemReflectionMetadataVersion>1.6.0</SystemReflectionMetadataVersion>
+ <SystemCollectionsImmutableVersion>1.5.0</SystemCollectionsImmutableVersion>
<MicrosoftWin32PrimitivesVersion>4.3.0</MicrosoftWin32PrimitivesVersion>
+
+ <!-- Other libs -->
+ <MicrosoftSymbolStoreVersion>1.0.0-dev-63604-01</MicrosoftSymbolStoreVersion>
</PropertyGroup>
<PropertyGroup>
<RestoreSources>
$(RestoreSources);
https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json;
+ https://dotnet.myget.org/F/symstore/api/v3/index.json;
https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json
</RestoreSources>
<?xml version="1.0" encoding="utf-8"?>
<Project>
<Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
+
+ <Target Name="_PublishPackageReferences"
+ AfterTargets="PostBuildEvent"
+ Condition="$(IsPublishable) == 'true'"
+ DependsOnTargets="$(_BeforePublishNoBuildTargets);$(_CorePublishTargets)" />
</Project>
project(SOS.NETCore)
if(NOT ${CLR_MANAGED_BINARY_DIR} STREQUAL "")
- set(MANAGED_BINDIR ${CLR_MANAGED_BINARY_DIR}/SOS.NETCore/${CLR_BUILD_TYPE}/netcoreapp1.0)
+ set(MANAGED_BINDIR ${CLR_MANAGED_BINARY_DIR}/SOS.NETCore/${CLR_BUILD_TYPE}/netcoreapp2.0/publish)
- install(FILES ${MANAGED_BINDIR}/SOS.NETCore.dll DESTINATION .)
- install(FILES ${MANAGED_BINDIR}/SOS.NETCore.pdb DESTINATION .)
+ install(FILES ${MANAGED_BINDIR}/SOS.NETCore.dll DESTINATION . )
+ install(FILES ${MANAGED_BINDIR}/SOS.NETCore.pdb DESTINATION . )
+ install(FILES ${MANAGED_BINDIR}/Microsoft.FileFormats.dll DESTINATION . )
+ install(FILES ${MANAGED_BINDIR}/Microsoft.SymbolStore.dll DESTINATION . )
+ install(FILES ${MANAGED_BINDIR}/System.Reflection.Metadata.dll DESTINATION . )
+ install(FILES ${MANAGED_BINDIR}/System.Collections.Immutable.dll DESTINATION . )
endif()
<!-- Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -->
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
- <TargetFramework>netcoreapp1.0</TargetFramework>
+ <TargetFramework>netcoreapp2.0</TargetFramework>
<AssemblyName>SOS.NETCore</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<NoWarn>;1591;1701</NoWarn>
<IsPackable>true</IsPackable>
+ <IsPublishable>true</IsPublishable>
<Description>.NET Core SOS</Description>
<PackageId>SOS</PackageId>
<PackageReleaseNotes>$(Description)</PackageReleaseNotes>
<PackageTags>SOS</PackageTags>
<IncludeBuildOutput>false</IncludeBuildOutput>
- <SOSNETCorePath>$(ArtifactsBinDir)\SOS.NETCore\$(Configuration)\netcoreapp1.0\SOS.NETCore.dll</SOSNETCorePath>
+ <SOSNETCoreBinaries>$(ArtifactsBinDir)\SOS.NETCore\$(Configuration)\netcoreapp2.0\publish\*.dll</SOSNETCoreBinaries>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />
+ <PackageReference Include="Microsoft.SymbolStore" Version="$(MicrosoftSymbolStoreVersion)" />
</ItemGroup>
<ItemGroup>
- <_PackageFiles Include="$(SOSNETCorePath)">
+ <_PackageFiles Include="$(SOSNETCoreBinaries)">
<BuildAction>None</BuildAction>
<PackagePath>tools/win-x64</PackagePath>
</_PackageFiles>
<PackagePath>tools/win-x64</PackagePath>
</_PackageFiles>
- <_PackageFiles Include="$(SOSNETCorePath)">
+ <_PackageFiles Include="$(SOSNETCoreBinaries)">
<BuildAction>None</BuildAction>
<PackagePath>tools/win-x86</PackagePath>
</_PackageFiles>
<PackagePath>tools/win-x86</PackagePath>
</_PackageFiles>
- <_PackageFiles Include="$(SOSNETCorePath)">
+ <_PackageFiles Include="$(SOSNETCoreBinaries)">
<BuildAction>None</BuildAction>
<PackagePath>tools/linux-x64</PackagePath>
</_PackageFiles>
<PackagePath>tools/linux-x64</PackagePath>
</_PackageFiles>
- <_PackageFiles Include="$(SOSNETCorePath)">
+ <_PackageFiles Include="$(SOSNETCoreBinaries)">
<BuildAction>None</BuildAction>
<PackagePath>tools/osx-x64</PackagePath>
</_PackageFiles>
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
+using Microsoft.FileFormats.PE;
+using Microsoft.SymbolStore;
+using Microsoft.SymbolStore.KeyGenerators;
+using Microsoft.SymbolStore.SymbolStores;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+using System.Linq;
using System.Reflection.Metadata;
using System.Reflection.Metadata.Ecma335;
using System.Reflection.PortableExecutable;
using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
namespace SOS
{
public int size;
public IntPtr locals;
public int localsSize;
-
}
- /// <summary>
- /// Read memory callback
- /// </summary>
- /// <returns>number of bytes read or 0 for error</returns>
- internal unsafe delegate int ReadMemoryDelegate(ulong address, byte* buffer, int count);
-
private sealed class OpenedReader : IDisposable
{
public readonly MetadataReaderProvider Provider;
{
fixed (byte* p = &buffer[offset])
{
- int read = _readMemory(_address + (ulong)Position, p, count);
+ int read = _readMemory(_address + (ulong)Position, p, count);
Position += read;
return read;
}
}
/// <summary>
- /// Quick fix for Path.GetFileName which incorrectly handles Windows-style paths on Linux
+ /// Symbol server URLs
/// </summary>
- /// <param name="pathName"> File path to be processed </param>
- /// <returns>Last component of path</returns>
- private static string GetFileName(string pathName)
+ const string MsdlsymbolServer = "http://msdl.microsoft.com/download/symbols/";
+ const string SymwebSymbolService = "http://symweb.corp.microsoft.com/";
+
+ /// <summary>
+ /// Read memory callback
+ /// </summary>
+ /// <returns>number of bytes read or 0 for error</returns>
+ internal unsafe delegate int ReadMemoryDelegate(ulong address, byte* buffer, int count);
+
+ /// <summary>
+ /// Writeline delegate for symbol store logging
+ /// </summary>
+ /// <param name="message"></param>
+ internal delegate void WriteLine([MarshalAs(UnmanagedType.LPStr)] string message);
+
+ static bool s_symbolCacheAdded = false;
+ static SymbolStore s_symbolStore = null;
+ static ITracer s_tracer = null;
+
+ /// <summary>
+ /// Initializes symbol loading. Adds the symbol server and/or the cache path (if not null) to the list of
+ /// symbol servers. This API can be called more than once to add more servers to search.
+ /// </summary>
+ /// <param name="output">output callback delegate (not used currently)</param>
+ /// <param name="msdl">if true, use the public microsoft server</param>
+ /// <param name="symweb">if true, use symweb internal server and protocol (file.ptr)</param>
+ /// <param name="symbolServerPath">symbol server url (optional)</param>
+ /// <param name="symbolCachePath">symbol cache directory path (optional)</param>
+ /// <param name="windowsSymbolPath">windows symbol path (optional)</param>
+ /// <returns></returns>
+ internal static bool InitializeSymbolStore(WriteLine output, bool msdl, bool symweb, string symbolServerPath, string symbolCachePath, string windowsSymbolPath)
{
- int pos = pathName.LastIndexOfAny(new char[] { '/', '\\'});
- if (pos < 0)
- return pathName;
- return pathName.Substring(pos + 1);
+ if (s_tracer == null)
+ {
+ s_tracer = new Tracer(enabled: true, enabledVerbose: false, output);
+ }
+ SymbolStore store = s_symbolStore;
+
+ // Build the symbol stores
+ if (windowsSymbolPath != null)
+ {
+ // Parse the Windows symbol path syntax (srv*, cache*, etc)
+ if (!ParseSymbolPath(ref store, windowsSymbolPath))
+ {
+ return false;
+ }
+ }
+ else
+ {
+ // Build the symbol stores using the other parameters
+ if (!GetServerSymbolStore(ref store, msdl, symweb, symbolServerPath, symbolCachePath))
+ {
+ return false;
+ }
+ }
+
+ s_symbolStore = store;
+ return true;
+ }
+
+ /// <summary>
+ /// Parses the Windows debugger symbol path (srv*, cache*, etc.).
+ /// </summary>
+ /// <param name="store">symbol store to chain</param>
+ /// <param name="symbolPath">Windows symbol path</param>
+ /// <returns>if false, error parsing symbol path</returns>
+ private static bool ParseSymbolPath(ref SymbolStore store, string symbolPath)
+ {
+ string[] paths = symbolPath.Split(";", StringSplitOptions.RemoveEmptyEntries);
+
+ foreach (string path in paths.Reverse())
+ {
+ string[] parts = path.Split("*", StringSplitOptions.RemoveEmptyEntries);
+
+ // UNC or directory paths are ignored (paths not prefixed with srv* or cache*).
+ if (parts.Length > 0)
+ {
+ string symbolServerPath = null;
+ string symbolCachePath = null;
+ bool msdl = false;
+
+ switch (parts[0].ToLowerInvariant())
+ {
+ case "srv":
+ switch (parts.Length)
+ {
+ case 1:
+ msdl = true;
+ break;
+ case 2:
+ symbolServerPath = parts[1];
+ break;
+ case 3:
+ symbolCachePath = parts[1];
+ symbolServerPath = parts[2];
+ break;
+ default:
+ return false;
+ }
+ break;
+
+ case "cache":
+ switch (parts.Length)
+ {
+ case 1:
+ symbolCachePath = GetDefaultSymbolCache();
+ break;
+ case 2:
+ symbolCachePath = parts[1];
+ break;
+ default:
+ return false;
+ }
+ break;
+
+ default:
+ return false;
+ }
+
+ // Add the symbol stores to the chain
+ if (!GetServerSymbolStore(ref store, msdl, false, symbolServerPath, symbolCachePath))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ private static bool GetServerSymbolStore(ref SymbolStore store, bool msdl, bool symweb, string symbolServerPath, string symbolCachePath)
+ {
+ bool internalServer = false;
+
+ // Add symbol server URL if exists
+ if (symbolServerPath == null)
+ {
+ if (msdl)
+ {
+ symbolServerPath = MsdlsymbolServer;
+ }
+ else if (symweb)
+ {
+ symbolServerPath = SymwebSymbolService;
+ internalServer = true;
+ }
+ }
+ else
+ {
+ // Use the internal symbol store for symweb
+ internalServer = symbolServerPath.Contains("symweb");
+
+ // Make sure the server Uri ends with "/"
+ symbolServerPath = symbolServerPath.TrimEnd('/') + '/';
+ }
+
+ if (symbolServerPath != null)
+ {
+ if (!Uri.TryCreate(symbolServerPath, UriKind.Absolute, out Uri uri) || uri.IsFile)
+ {
+ return false;
+ }
+
+ // Create symbol server store
+ if (internalServer)
+ {
+ store = new SymwebHttpSymbolStore(s_tracer, store, uri);
+ }
+ else
+ {
+ store = new HttpSymbolStore(s_tracer, store, uri);
+ }
+ }
+
+ if (symbolCachePath != null)
+ {
+ store = new CacheSymbolStore(s_tracer, store, symbolCachePath);
+
+ // Don't add the default cache later
+ s_symbolCacheAdded = true;
+ }
+
+ return true;
+ }
+
+ private static string GetDefaultSymbolCache()
+ {
+ var sb = new StringBuilder();
+
+ string environmentVar;
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ environmentVar = "ProgramData";
+ }
+ else
+ {
+ environmentVar = "HOME";
+ }
+ string userPath = Environment.GetEnvironmentVariable(environmentVar);
+ sb.Append(userPath);
+ sb.Append(Path.DirectorySeparatorChar);
+
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ sb.Append("dbg");
+ sb.Append(Path.DirectorySeparatorChar);
+ sb.Append("sym");
+ }
+ else
+ {
+ sb.Append(".sos");
+ sb.Append(Path.DirectorySeparatorChar);
+ sb.Append("symbolcache");
+ }
+ return sb.ToString();
}
/// <summary>
try
{
TargetStream peStream = null;
- if (assemblyPath == null && loadedPeAddress != 0)
+ if (loadedPeAddress != 0)
{
peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory);
}
/// <param name="localIndex">local variable index</param>
/// <param name="localVarName">local variable name return</param>
/// <returns>true if name has been found</returns>
- internal static bool GetLocalVariableByIndex(IntPtr symbolReaderHandle, int methodToken, int localIndex, out string localVarName)
+ private static bool GetLocalVariableByIndex(IntPtr symbolReaderHandle, int methodToken, int localIndex, out string localVarName)
{
Debug.Assert(symbolReaderHandle != IntPtr.Zero);
localVarName = null;
}
return false;
}
- internal static bool GetLocalsInfoForMethod(string assemblyPath, int methodToken, out List<LocalVarInfo> locals)
+
+ private static bool GetLocalsInfoForMethod(string assemblyPath, int methodToken, out List<LocalVarInfo> locals)
{
locals = null;
return true;
}
+
/// <summary>
- /// Returns source name, line numbers and IL offsets for given method token.
+ /// Returns source name, line numbers and IL offsets for given method token. Used by the GDBJIT support.
/// </summary>
/// <param name="assemblyPath">file path of the assembly</param>
/// <param name="methodToken">method token</param>
/// </summary>
/// <param name="assemblyPath">file path of the assembly or null if the module is in-memory or dynamic</param>
/// <param name="isFileLayout">type of in-memory PE layout, if true, file based layout otherwise, loaded layout</param>
- /// <param name="peStream">optional in-memory PE stream</param>
+ /// <param name="peStream">in-memory PE stream</param>
/// <param name="pdbStream">optional in-memory PDB stream</param>
/// <returns>reader/provider wrapper instance</returns>
/// <remarks>
{
using (var peReader = new PEReader(peStream, options))
{
- DebugDirectoryEntry codeViewEntry, embeddedPdbEntry;
- ReadPortableDebugTableEntries(peReader, out codeViewEntry, out embeddedPdbEntry);
+ ReadPortableDebugTableEntries(peReader, out DebugDirectoryEntry codeViewEntry, out DebugDirectoryEntry embeddedPdbEntry);
// First try .pdb file specified in CodeView data (we prefer .pdb file on disk over embedded PDB
// since embedded PDB needs decompression which is less efficient than memory-mapping the file).
{
// See spec: https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PE-COFF.md
- codeViewEntry = default(DebugDirectoryEntry);
- embeddedPdbEntry = default(DebugDirectoryEntry);
+ codeViewEntry = default;
+ embeddedPdbEntry = default;
foreach (DebugDirectoryEntry entry in peReader.ReadDebugDirectory())
{
if (entry.Type == DebugDirectoryEntryType.CodeView)
{
- const ushort PortableCodeViewVersionMagic = 0x504d;
- if (entry.MinorVersion != PortableCodeViewVersionMagic)
+ if (entry.MinorVersion != ImageDebugDirectory.PortablePDBMinorVersion)
{
continue;
}
-
codeViewEntry = entry;
}
else if (entry.Type == DebugDirectoryEntryType.EmbeddedPortablePdb)
MetadataReaderProvider provider = null;
try
{
- var data = peReader.ReadCodeViewDebugDirectoryData(codeViewEntry);
-
+ CodeViewDebugDirectoryData data = peReader.ReadCodeViewDebugDirectoryData(codeViewEntry);
string pdbPath = data.Path;
- if (assemblyPath != null)
+ Stream pdbStream = null;
+
+ if (assemblyPath != null)
{
try
{
// invalid characters in CodeView path
return null;
}
+ pdbStream = TryOpenFile(pdbPath);
}
- var pdbStream = TryOpenFile(pdbPath);
if (pdbStream == null)
{
- return null;
+ if (s_symbolStore == null)
+ {
+ return null;
+ }
+ Debug.Assert(codeViewEntry.MinorVersion == ImageDebugDirectory.PortablePDBMinorVersion);
+ SymbolStoreKey key = PortablePDBFileKeyGenerator.GetKey(pdbPath, data.Guid);
+
+ // Add the default symbol cache if it hasn't already been added
+ if (!s_symbolCacheAdded)
+ {
+ s_symbolStore = new CacheSymbolStore(s_tracer, s_symbolStore, GetDefaultSymbolCache());
+ s_symbolCacheAdded = true;
+ }
+
+ SymbolStoreFile symbolStoreFile = s_symbolStore.GetFile(key, CancellationToken.None).GetAwaiter().GetResult();
+ if (symbolStoreFile == null)
+ {
+ return null;
+ }
+ pdbStream = symbolStoreFile.Stream;
}
provider = MetadataReaderProvider.FromPortablePdbStream(pdbStream);
- var reader = provider.GetMetadataReader();
+ MetadataReader reader = provider.GetMetadataReader();
// Validate that the PDB matches the assembly version
if (data.Age == 1 && new BlobContentId(reader.DebugMetadataHeader.Id) == new BlobContentId(data.Guid, codeViewEntry.Stamp))
return null;
}
}
+
+ /// <summary>
+ /// Quick fix for Path.GetFileName which incorrectly handles Windows-style paths on Linux
+ /// </summary>
+ /// <param name="pathName"> File path to be processed </param>
+ /// <returns>Last component of path</returns>
+ private static string GetFileName(string pathName)
+ {
+ int pos = pathName.LastIndexOfAny(new char[] { '/', '\\'});
+ if (pos < 0)
+ return pathName;
+ return pathName.Substring(pos + 1);
+ }
}
}
--- /dev/null
+// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+
+namespace SOS
+{
+ /// <summary>
+ /// Simple trace/logging support.
+ /// </summary>
+ internal sealed class Tracer : Microsoft.SymbolStore.ITracer
+ {
+ readonly bool m_enabled;
+ readonly bool m_enabledVerbose;
+ readonly SymbolReader.WriteLine m_output;
+
+ public Tracer(bool enabled, bool enabledVerbose, SymbolReader.WriteLine output)
+ {
+ m_enabled = enabled;
+ m_enabledVerbose = enabledVerbose;
+ m_output = output;
+ }
+
+ public void WriteLine(string message)
+ {
+ m_output?.Invoke(message);
+ }
+
+ public void WriteLine(string format, params object[] arguments)
+ {
+ WriteLine(string.Format(format, arguments));
+ }
+
+ public void Information(string message)
+ {
+ if (m_enabled)
+ {
+ m_output?.Invoke(message);
+ }
+ }
+
+ public void Information(string format, params object[] arguments)
+ {
+ if (m_enabled)
+ {
+ WriteLine(format, arguments);
+ }
+ }
+
+ public void Warning(string message)
+ {
+ if (m_enabled)
+ {
+ WriteLine("WARNING: " + message);
+ }
+ }
+
+ public void Warning(string format, params object[] arguments)
+ {
+ if (m_enabled)
+ {
+ WriteLine("WARNING: " + format, arguments);
+ }
+ }
+
+ public void Error(string message)
+ {
+ WriteLine("ERROR: " + message);
+ }
+
+ public void Error(string format, params object[] arguments)
+ {
+ WriteLine("ERROR: " + format, arguments);
+ }
+
+ public void Verbose(string message)
+ {
+ if (m_enabledVerbose)
+ {
+ WriteLine(message);
+ }
+ }
+
+ public void Verbose(string format, params object[] arguments)
+ {
+ if (m_enabledVerbose)
+ {
+ WriteLine(format, arguments);
+ }
+ }
+ }
+}
exts.cpp
gchist.cpp
gcroot.cpp
+ hostcoreclr.cpp
metadata.cpp
sildasm.cpp
sos.cpp
exts.cpp
gchist.cpp
gcroot.cpp
+ hostcoreclr.cpp
metadata.cpp
sildasm.cpp
stressLogDump.cpp
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Checked|x64">
+ <Configuration>Checked</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="RelWithDebInfo|x64">
+ <Configuration>RelWithDebInfo</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{41F59D85-FC36-3015-861B-F177863252BC}</ProjectGuid>
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+ <Keyword>Win32Proj</Keyword>
+ <Platform>x64</Platform>
+ <ProjectName>Strike</ProjectName>
+ <VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\Strike\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">sos.dir\Debug\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">sos</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.dll</TargetExt>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\Strike\Checked\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">sos.dir\Checked\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">sos</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">.dll</TargetExt>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\Strike\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">sos.dir\Release\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">sos</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.dll</TargetExt>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\Strike\RelWithDebInfo\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">sos.dir\RelWithDebInfo\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">sos</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">.dll</TargetExt>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">false</LinkIncremental>
+ <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">false</GenerateManifest>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8 /homeparams</AdditionalOptions>
+ <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>Disabled</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>FEATURE_PAL;DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="Debug";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR=\"Debug\";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="Debug";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Link>
+ <AdditionalDependencies>..\..\inc\Debug\corguids.lib;..\debugshim\Debug\debugshim.lib;..\dbgutil\Debug\dbgutil.lib;libcmtd.lib;libcpmtd.lib;libvcruntimed.lib;kernel32.lib;user32.lib;ole32.lib;oleaut32.lib;dbghelp.lib;uuid.lib;version.lib;dbgeng.lib;advapi32.lib;psapi.lib;ntdll.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /GUARD:CF /SUBSYSTEM:WINDOWS,6.01 /PDBCOMPRESS /IGNORE:4197,4013,4254,4070,4221 /NOVCFEATURE</AdditionalOptions>
+ <DataExecutionPrevention>true</DataExecutionPrevention>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ImportLibrary>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/Debug/sos.lib</ImportLibrary>
+ <LargeAddressAware>true</LargeAddressAware>
+ <ModuleDefinitionFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/sos.def</ModuleDefinitionFile>
+ <ProgramDataBaseFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/Debug/sos.pdb</ProgramDataBaseFile>
+ <RandomizedBaseAddress>true</RandomizedBaseAddress>
+ <SubSystem>Console</SubSystem>
+ <Version>
+ </Version>
+ </Link>
+ <ProjectReference>
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Checked/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="Checked";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR=\"Checked\";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="Checked";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Link>
+ <AdditionalDependencies>..\..\inc\Checked\corguids.lib;..\debugshim\Checked\debugshim.lib;..\dbgutil\Checked\dbgutil.lib;libcmtd.lib;libcpmtd.lib;libvcruntimed.lib;kernel32.lib;user32.lib;ole32.lib;oleaut32.lib;dbghelp.lib;uuid.lib;version.lib;dbgeng.lib;advapi32.lib;psapi.lib;ntdll.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /GUARD:CF /SUBSYSTEM:WINDOWS,6.01 /PDBCOMPRESS /IGNORE:4197,4013,4254,4070,4221 /NOVCFEATURE</AdditionalOptions>
+ <DataExecutionPrevention>true</DataExecutionPrevention>
+ <EnableCOMDATFolding>false</EnableCOMDATFolding>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ImportLibrary>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/Checked/sos.lib</ImportLibrary>
+ <LargeAddressAware>true</LargeAddressAware>
+ <ModuleDefinitionFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/sos.def</ModuleDefinitionFile>
+ <OptimizeReferences>true</OptimizeReferences>
+ <ProgramDataBaseFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/Checked/sos.pdb</ProgramDataBaseFile>
+ <RandomizedBaseAddress>true</RandomizedBaseAddress>
+ <SubSystem>Console</SubSystem>
+ <Version>
+ </Version>
+ </Link>
+ <ProjectReference>
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Release/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="Release";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR=\"Release\";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\Strike;..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="Release";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Link>
+ <AdditionalDependencies>..\..\inc\Release\corguids.lib;..\debugshim\Release\debugshim.lib;..\dbgutil\Release\dbgutil.lib;libcmt.lib;libcpmt.lib;libvcruntime.lib;kernel32.lib;user32.lib;ole32.lib;oleaut32.lib;dbghelp.lib;uuid.lib;version.lib;dbgeng.lib;advapi32.lib;psapi.lib;ntdll.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /GUARD:CF /SUBSYSTEM:WINDOWS,6.01 /PDBCOMPRESS /IGNORE:4197,4013,4254,4070,4221 /DEFAULTLIB:ucrt.lib</AdditionalOptions>
+ <DataExecutionPrevention>true</DataExecutionPrevention>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <IgnoreSpecificDefaultLibraries>libucrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ImportLibrary>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/Release/sos.lib</ImportLibrary>
+ <LargeAddressAware>true</LargeAddressAware>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <ModuleDefinitionFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/sos.def</ModuleDefinitionFile>
+ <OptimizeReferences>true</OptimizeReferences>
+ <ProgramDataBaseFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/Release/sos.pdb</ProgramDataBaseFile>
+ <RandomizedBaseAddress>true</RandomizedBaseAddress>
+ <SubSystem>Console</SubSystem>
+ <Version>
+ </Version>
+ </Link>
+ <ProjectReference>
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>RelWithDebInfo/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="RelWithDebInfo";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR=\"RelWithDebInfo\";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;_TARGET_WIN64_=1;SOS_TARGET_AMD64=1;SOS_TARGET_ARM64=1;STRIKE;USE_STL;FX_VER_INTERNALNAME_STR=SOS.dll;CMAKE_INTDIR="RelWithDebInfo";sos_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\Strike;..\..\pal\prebuilt\inc;..\..\inc;..\..\SOS\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>Strike;..\..\pal\prebuilt\inc;..\..\inc;..\gcdump;..\..\SOS\debugshim;inc;C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\DIA SDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Link>
+ <AdditionalDependencies>..\..\inc\RelWithDebInfo\corguids.lib;..\debugshim\RelWithDebInfo\debugshim.lib;..\dbgutil\RelWithDebInfo\dbgutil.lib;libcmt.lib;libcpmt.lib;libvcruntime.lib;kernel32.lib;user32.lib;ole32.lib;oleaut32.lib;dbghelp.lib;uuid.lib;version.lib;dbgeng.lib;advapi32.lib;psapi.lib;ntdll.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /GUARD:CF /SUBSYSTEM:WINDOWS,6.01 /PDBCOMPRESS /IGNORE:4197,4013,4254,4070,4221 /DEFAULTLIB:ucrt.lib</AdditionalOptions>
+ <DataExecutionPrevention>true</DataExecutionPrevention>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <IgnoreSpecificDefaultLibraries>libucrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ImportLibrary>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/RelWithDebInfo/sos.lib</ImportLibrary>
+ <LargeAddressAware>true</LargeAddressAware>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <ModuleDefinitionFile>sos.def</ModuleDefinitionFile>
+ <OptimizeReferences>true</OptimizeReferences>
+ <ProgramDataBaseFile>C:/ssd/diagnostics/artifacts/obj/Windows_NT.x64.Debug/src/SOS/Strike/RelWithDebInfo/sos.pdb</ProgramDataBaseFile>
+ <RandomizedBaseAddress>true</RandomizedBaseAddress>
+ <SubSystem>Console</SubSystem>
+ <Version>
+ </Version>
+ </Link>
+ <ProjectReference>
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="disasm.cpp" />
+ <ClCompile Include="datatarget.cpp" />
+ <ClCompile Include="dllsext.cpp" />
+ <ClCompile Include="eeheap.cpp" />
+ <ClCompile Include="EventCallbacks.cpp" />
+ <ClCompile Include="ExpressionNode.cpp" />
+ <ClCompile Include="exts.cpp" />
+ <ClCompile Include="gchist.cpp" />
+ <ClCompile Include="gcroot.cpp" />
+ <ClCompile Include="metadata.cpp" />
+ <ClCompile Include="sildasm.cpp" />
+ <ClCompile Include="sos.cpp" />
+ <ClCompile Include="stressLogDump.cpp" />
+ <ClCompile Include="strike.cpp" />
+ <ClCompile Include="util.cpp" />
+ <ClCompile Include="vm.cpp" />
+ <ClCompile Include="WatchCmd.cpp" />
+ <ClCompile Include="hostcoreclr.cpp" />
+ <None Include="sos_unixexports.src" />
+ <ResourceCompile Include="Native.rc" />
+ <ClCompile Include="disasmX86.cpp" />
+ <ClCompile Include="disasmARM64.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="data.h" />
+ <ClInclude Include="datatarget.h" />
+ <ClInclude Include="disasm.h" />
+ <ClInclude Include="EventCallbacks.h" />
+ <ClInclude Include="ExpressionNode.h" />
+ <ClInclude Include="exts.h" />
+ <ClInclude Include="hostcoreclr.h" />
+ <ClInclude Include="inc\dbgeng.h" />
+ <ClInclude Include="inc\dbghelp.h" />
+ <ClInclude Include="inc\wdbgexts.h" />
+ <ClInclude Include="ntinfo.h" />
+ <ClInclude Include="platformspecific.h" />
+ <ClInclude Include="sos.h" />
+ <ClInclude Include="sos_md.h" />
+ <ClInclude Include="sos_stacktrace.h" />
+ <ClInclude Include="strike.h" />
+ <ClInclude Include="util.h" />
+ <ClInclude Include="UtilCode.h" />
+ <ClInclude Include="WatchCmd.h" />
+ <ClInclude Include="xplat\dbgeng.h" />
+ <ClInclude Include="xplat\dbghelp.h" />
+ <ClInclude Include="xplat\wdbgexts.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <Text Include="CMakeLists.txt" />
+ <Text Include="sosdocs.txt" />
+ <Text Include="sosdocsunix.txt" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="disasm.cpp" />
+ <ClCompile Include="datatarget.cpp" />
+ <ClCompile Include="dllsext.cpp" />
+ <ClCompile Include="eeheap.cpp" />
+ <ClCompile Include="EventCallbacks.cpp" />
+ <ClCompile Include="ExpressionNode.cpp" />
+ <ClCompile Include="exts.cpp" />
+ <ClCompile Include="gchist.cpp" />
+ <ClCompile Include="gcroot.cpp" />
+ <ClCompile Include="metadata.cpp" />
+ <ClCompile Include="sildasm.cpp" />
+ <ClCompile Include="sos.cpp" />
+ <ClCompile Include="stressLogDump.cpp" />
+ <ClCompile Include="strike.cpp" />
+ <ClCompile Include="util.cpp" />
+ <ClCompile Include="vm.cpp" />
+ <ClCompile Include="WatchCmd.cpp" />
+ <ClCompile Include="disasmX86.cpp" />
+ <ClCompile Include="disasmARM64.cpp" />
+ <ClCompile Include="hostcoreclr.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="data.h" />
+ <ClInclude Include="datatarget.h" />
+ <ClInclude Include="disasm.h" />
+ <ClInclude Include="EventCallbacks.h" />
+ <ClInclude Include="ExpressionNode.h" />
+ <ClInclude Include="exts.h" />
+ <ClInclude Include="ntinfo.h" />
+ <ClInclude Include="platformspecific.h" />
+ <ClInclude Include="sos.h" />
+ <ClInclude Include="sos_md.h" />
+ <ClInclude Include="sos_stacktrace.h" />
+ <ClInclude Include="strike.h" />
+ <ClInclude Include="util.h" />
+ <ClInclude Include="UtilCode.h" />
+ <ClInclude Include="WatchCmd.h" />
+ <ClInclude Include="xplat\dbgeng.h">
+ <Filter>xplat</Filter>
+ </ClInclude>
+ <ClInclude Include="xplat\dbghelp.h">
+ <Filter>xplat</Filter>
+ </ClInclude>
+ <ClInclude Include="xplat\wdbgexts.h">
+ <Filter>xplat</Filter>
+ </ClInclude>
+ <ClInclude Include="inc\dbgeng.h">
+ <Filter>inc</Filter>
+ </ClInclude>
+ <ClInclude Include="inc\dbghelp.h">
+ <Filter>inc</Filter>
+ </ClInclude>
+ <ClInclude Include="inc\wdbgexts.h">
+ <Filter>inc</Filter>
+ </ClInclude>
+ <ClInclude Include="hostcoreclr.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="Native.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="sos_unixexports.src" />
+ </ItemGroup>
+ <ItemGroup>
+ <Filter Include="xplat">
+ <UniqueIdentifier>{b766b3f8-a753-4134-bf7f-50c4f05b59b1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="inc">
+ <UniqueIdentifier>{406edc67-c8c4-4f19-ad39-c799a63f4c2a}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <Text Include="CMakeLists.txt" />
+ <Text Include="sosdocs.txt" />
+ <Text Include="sosdocsunix.txt" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
hr = g_ExtSystem->GetCurrentThreadId(&ulThreadIDOrig);
if (FAILED(hr))
{
- return hr;
+ return hr;
}
hr = g_ExtSystem->GetThreadIdBySystemId(threadID, &ulThreadIDRequested);
if (FAILED(hr))
{
- return hr;
+ return hr;
}
hr = g_ExtSystem->SetCurrentThreadId(ulThreadIDRequested);
if (FAILED(hr))
{
- return hr;
+ return hr;
}
// Prepare context structure
DebugClient* g_DebugClient;
ILLDBServices* g_ExtServices;
+bool g_palInitialized = false;
#endif // FEATURE_PAL
extern "C" HRESULT
ExtQuery(ILLDBServices* services)
{
+ // Initialize the PAL in one place and only once.
+ if (!g_palInitialized)
+ {
+ if (PAL_InitializeDLL() != 0)
+ {
+ return E_FAIL;
+ }
+ g_palInitialized = true;
+ }
g_ExtServices = services;
DebugClient* client = new DebugClient(services);
g_DebugClient = client;
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// ==++==
+//
+
+//
+// ==--==
+#include "sos.h"
+#include "disasm.h"
+#include <dbghelp.h>
+
+#include "corhdr.h"
+#include "cor.h"
+#include "dacprivate.h"
+#include "sospriv.h"
+#include "corerror.h"
+#include "safemath.h"
+
+#include <psapi.h>
+#include <tchar.h>
+#include <limits.h>
+
+#ifdef FEATURE_PAL
+#include <sys/stat.h>
+#include <dlfcn.h>
+#endif // !FEATURE_PAL
+
+#include <coreclrhost.h>
+#include <set>
+#include <string>
+
+#if defined(__APPLE__)
+#include <mach-o/dyld.h>
+#endif
+
+#ifndef IfFailRet
+#define IfFailRet(EXPR) do { Status = (EXPR); if(FAILED(Status)) { return (Status); } } while (0)
+#endif
+
+static bool g_hostingInitialized = false;
+static bool g_symbolStoreInitialized = false;
+LPCSTR g_hostRuntimeDirectory = nullptr;
+SOSNetCoreCallbacks g_SOSNetCoreCallbacks;
+
+#ifdef FEATURE_PAL
+#define TPALIST_SEPARATOR_STR_A ":"
+#else
+#define TPALIST_SEPARATOR_STR_A ";"
+#endif
+
+void AddFilesFromDirectoryToTpaList(const char* directory, std::string& tpaList)
+{
+ const char * const tpaExtensions[] = {
+ "*.ni.dll", // Probe for .ni.dll first so that it's preferred if ni and il coexist in the same dir
+ "*.dll",
+ };
+ std::set<std::string> addedAssemblies;
+
+ // Don't add this file to the list because we don't want to the one from the hosting runtime
+ addedAssemblies.insert(SymbolReaderDllName);
+
+ // Walk the directory for each extension separately so that we first get files with .ni.dll extension,
+ // then files with .dll extension, etc.
+ for (int extIndex = 0; extIndex < sizeof(tpaExtensions) / sizeof(tpaExtensions[0]); extIndex++)
+ {
+ const char* ext = tpaExtensions[extIndex];
+ size_t extLength = strlen(ext) - 1; // don't count the "*"
+
+ std::string assemblyPath(directory);
+ assemblyPath.append(DIRECTORY_SEPARATOR_STR_A);
+ assemblyPath.append(tpaExtensions[extIndex]);
+
+ WIN32_FIND_DATAA data;
+ HANDLE findHandle = FindFirstFileA(assemblyPath.c_str(), &data);
+
+ if (findHandle != INVALID_HANDLE_VALUE)
+ {
+ do
+ {
+ if (!(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+
+ std::string filename(data.cFileName);
+ size_t extPos = filename.length() - extLength;
+ std::string filenameWithoutExt(filename.substr(0, extPos));
+
+ // Make sure if we have an assembly with multiple extensions present,
+ // we insert only one version of it.
+ if (addedAssemblies.find(filenameWithoutExt) == addedAssemblies.end())
+ {
+ addedAssemblies.insert(filenameWithoutExt);
+
+ tpaList.append(directory);
+ tpaList.append(DIRECTORY_SEPARATOR_STR_A);
+ tpaList.append(filename);
+ tpaList.append(TPALIST_SEPARATOR_STR_A);
+ }
+ }
+ }
+ while (0 != FindNextFileA(findHandle, &data));
+
+ FindClose(findHandle);
+ }
+ }
+}
+
+#ifdef FEATURE_PAL
+
+#if defined(__linux__)
+#define symlinkEntrypointExecutable "/proc/self/exe"
+#elif !defined(__APPLE__)
+#define symlinkEntrypointExecutable "/proc/curproc/exe"
+#endif
+
+bool GetAbsolutePath(const char* path, std::string& absolutePath)
+{
+ bool result = false;
+
+ char realPath[PATH_MAX];
+ if (realpath(path, realPath) != nullptr && realPath[0] != '\0')
+ {
+ absolutePath.assign(realPath);
+ // realpath should return canonicalized path without the trailing slash
+ assert(absolutePath.back() != '/');
+
+ result = true;
+ }
+
+ return result;
+}
+
+bool GetEntrypointExecutableAbsolutePath(std::string& entrypointExecutable)
+{
+ bool result = false;
+
+ entrypointExecutable.clear();
+
+ // Get path to the executable for the current process using
+ // platform specific means.
+#if defined(__APPLE__)
+
+ // On Mac, we ask the OS for the absolute path to the entrypoint executable
+ uint32_t lenActualPath = 0;
+ if (_NSGetExecutablePath(nullptr, &lenActualPath) == -1)
+ {
+ // OSX has placed the actual path length in lenActualPath,
+ // so re-attempt the operation
+ std::string resizedPath(lenActualPath, '\0');
+ char *pResizedPath = const_cast<char *>(resizedPath.c_str());
+ if (_NSGetExecutablePath(pResizedPath, &lenActualPath) == 0)
+ {
+ entrypointExecutable.assign(pResizedPath);
+ result = true;
+ }
+ }
+#elif defined (__FreeBSD__)
+ static const int name[] = {
+ CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1
+ };
+ char path[PATH_MAX];
+ size_t len;
+
+ len = sizeof(path);
+ if (sysctl(name, 4, path, &len, nullptr, 0) == 0)
+ {
+ entrypointExecutable.assign(path);
+ result = true;
+ }
+ else
+ {
+ // ENOMEM
+ result = false;
+ }
+#elif defined(__NetBSD__) && defined(KERN_PROC_PATHNAME)
+ static const int name[] = {
+ CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME,
+ };
+ char path[MAXPATHLEN];
+ size_t len;
+
+ len = sizeof(path);
+ if (sysctl(name, __arraycount(name), path, &len, NULL, 0) != -1)
+ {
+ entrypointExecutable.assign(path);
+ result = true;
+ }
+ else
+ {
+ result = false;
+ }
+#else
+ // On other OSs, return the symlink that will be resolved by GetAbsolutePath
+ // to fetch the entrypoint EXE absolute path, inclusive of filename.
+ result = GetAbsolutePath(symlinkEntrypointExecutable, entrypointExecutable);
+#endif
+
+ return result;
+}
+
+#else // FEATURE_PAL
+
+bool GetEntrypointExecutableAbsolutePath(std::string& entrypointExecutable)
+{
+ ArrayHolder<char> hostPath = new char[MAX_LONGPATH+1];
+ if (::GetModuleFileName(NULL, hostPath, MAX_LONGPATH) == 0)
+ {
+ return false;
+ }
+
+ entrypointExecutable.clear();
+ entrypointExecutable.append(hostPath);
+
+ return true;
+}
+
+#endif // FEATURE_PAL
+
+HRESULT GetCoreClrDirectory(std::string& coreClrDirectory)
+{
+#ifdef FEATURE_PAL
+ LPCSTR directory = g_ExtServices->GetCoreClrDirectory();
+ if (directory == NULL)
+ {
+ ExtErr("Error: Runtime module (%s) not loaded yet\n", MAKEDLLNAME_A("coreclr"));
+ return E_FAIL;
+ }
+ if (!GetAbsolutePath(directory, coreClrDirectory))
+ {
+ ExtErr("Error: Failed to get coreclr absolute path\n");
+ return E_FAIL;
+ }
+#else
+ ULONG index;
+ HRESULT Status = g_ExtSymbols->GetModuleByModuleName(MAIN_CLR_MODULE_NAME_A, 0, &index, NULL);
+ if (FAILED(Status))
+ {
+ ExtErr("Error: Can't find coreclr module\n");
+ return Status;
+ }
+ ArrayHolder<char> szModuleName = new char[MAX_LONGPATH + 1];
+ Status = g_ExtSymbols->GetModuleNames(index, 0, szModuleName, MAX_LONGPATH, NULL, NULL, 0, NULL, NULL, 0, NULL);
+ if (FAILED(Status))
+ {
+ ExtErr("Error: Failed to get coreclr module name\n");
+ return Status;
+ }
+ coreClrDirectory = szModuleName;
+
+ // Parse off the module name to get just the path
+ size_t lastSlash = coreClrDirectory.rfind(DIRECTORY_SEPARATOR_CHAR_A);
+ if (lastSlash == std::string::npos)
+ {
+ ExtErr("Error: Failed to parse coreclr module name\n");
+ return E_FAIL;
+ }
+ coreClrDirectory.assign(coreClrDirectory, 0, lastSlash);
+#endif
+ return S_OK;
+}
+
+HRESULT GetHostRuntime(std::string& coreClrPath, std::string& hostRuntimeDirectory)
+{
+ // If the hosting runtime isn't already set, use the runtime we are debugging
+ if (g_hostRuntimeDirectory == nullptr)
+ {
+ HRESULT hr = GetCoreClrDirectory(hostRuntimeDirectory);
+ if (FAILED(hr))
+ {
+ return hr;
+ }
+ g_hostRuntimeDirectory = _strdup(hostRuntimeDirectory.c_str());
+ }
+ hostRuntimeDirectory.assign(g_hostRuntimeDirectory);
+ coreClrPath.assign(g_hostRuntimeDirectory);
+ coreClrPath.append(DIRECTORY_SEPARATOR_STR_A);
+ coreClrPath.append(MAIN_CLR_DLL_NAME_A);
+ return S_OK;
+}
+
+BOOL IsHostingInitialized()
+{
+ return g_hostingInitialized;
+}
+
+HRESULT InitializeHosting()
+{
+ if (g_hostingInitialized)
+ {
+ return S_OK;
+ }
+ coreclr_initialize_ptr initializeCoreCLR = nullptr;
+ coreclr_create_delegate_ptr createDelegate = nullptr;
+ std::string hostRuntimeDirectory;
+ std::string sosModuleDirectory;
+ std::string coreClrPath;
+
+ HRESULT Status = GetHostRuntime(coreClrPath, hostRuntimeDirectory);
+ if (FAILED(Status))
+ {
+ return Status;
+ }
+#ifdef FEATURE_PAL
+ ArrayHolder<char> szSOSModulePath = new char[MAX_LONGPATH + 1];
+ UINT cch = MAX_LONGPATH;
+ if (!PAL_GetPALDirectoryA(szSOSModulePath, &cch)) {
+ ExtErr("Error: Failed to get SOS module directory\n");
+ return E_FAIL;
+ }
+ sosModuleDirectory = szSOSModulePath;
+
+ void* coreclrLib = dlopen(coreClrPath.c_str(), RTLD_NOW | RTLD_LOCAL);
+ if (coreclrLib == nullptr)
+ {
+ ExtErr("Error: Failed to load %s\n", coreClrPath.c_str());
+ return E_FAIL;
+ }
+ initializeCoreCLR = (coreclr_initialize_ptr)dlsym(coreclrLib, "coreclr_initialize");
+ createDelegate = (coreclr_create_delegate_ptr)dlsym(coreclrLib, "coreclr_create_delegate");
+#else
+ ArrayHolder<char> szSOSModulePath = new char[MAX_LONGPATH + 1];
+ if (GetModuleFileNameA(g_hInstance, szSOSModulePath, MAX_LONGPATH) == 0)
+ {
+ ExtErr("Error: Failed to get SOS module directory\n");
+ return E_FAIL;
+ }
+ sosModuleDirectory = szSOSModulePath;
+
+ // Get just the sos module directory
+ size_t lastSlash = sosModuleDirectory.rfind(DIRECTORY_SEPARATOR_CHAR_A);
+ if (lastSlash == std::string::npos)
+ {
+ ExtErr("Error: Failed to parse sos module name\n");
+ return E_FAIL;
+ }
+ sosModuleDirectory.erase(lastSlash);
+
+ HMODULE coreclrLib = LoadLibraryA(coreClrPath.c_str());
+ if (coreclrLib == nullptr)
+ {
+ ExtErr("Error: Failed to load %s\n", coreClrPath.c_str());
+ return E_FAIL;
+ }
+ initializeCoreCLR = (coreclr_initialize_ptr)GetProcAddress(coreclrLib, "coreclr_initialize");
+ createDelegate = (coreclr_create_delegate_ptr)GetProcAddress(coreclrLib, "coreclr_create_delegate");
+#endif // FEATURE_PAL
+
+ if (initializeCoreCLR == nullptr || createDelegate == nullptr)
+ {
+ ExtErr("Error: coreclr_initialize or coreclr_create_delegate not found\n");
+ return E_FAIL;
+ }
+
+ // Trust The SOS managed and dependent assemblies from the sos directory
+ std::string tpaList;
+ AddFilesFromDirectoryToTpaList(sosModuleDirectory.c_str(), tpaList);
+
+ // Trust the runtime assemblies
+ AddFilesFromDirectoryToTpaList(hostRuntimeDirectory.c_str(), tpaList);
+
+ std::string appPaths;
+ appPaths.append(sosModuleDirectory);
+ appPaths.append(TPALIST_SEPARATOR_STR_A);
+ appPaths.append(hostRuntimeDirectory);
+
+ const char *propertyKeys[] = {
+ "TRUSTED_PLATFORM_ASSEMBLIES", "APP_PATHS", "APP_NI_PATHS",
+ "NATIVE_DLL_SEARCH_DIRECTORIES", "AppDomainCompatSwitch"};
+
+ const char *propertyValues[] = {// TRUSTED_PLATFORM_ASSEMBLIES
+ tpaList.c_str(),
+ // APP_PATHS
+ appPaths.c_str(),
+ // APP_NI_PATHS
+ hostRuntimeDirectory.c_str(),
+ // NATIVE_DLL_SEARCH_DIRECTORIES
+ appPaths.c_str(),
+ // AppDomainCompatSwitch
+ "UseLatestBehaviorWhenTFMNotSpecified"};
+
+ std::string entryPointExecutablePath;
+ if (!GetEntrypointExecutableAbsolutePath(entryPointExecutablePath))
+ {
+ ExtErr("Could not get full path to current executable");
+ return E_FAIL;
+ }
+
+ void *hostHandle;
+ unsigned int domainId;
+ Status = initializeCoreCLR(entryPointExecutablePath.c_str(), "sos",
+ sizeof(propertyKeys) / sizeof(propertyKeys[0]), propertyKeys, propertyValues, &hostHandle, &domainId);
+
+ if (FAILED(Status))
+ {
+ ExtErr("Error: Fail to initialize CoreCLR %08x\n", Status);
+ return Status;
+ }
+
+ //SymbolReaderInitialize initialize;
+ //IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "Initialize", (void **)&initialize));
+ //initialize();
+
+ IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "InitializeSymbolStore", (void **)&g_SOSNetCoreCallbacks.InitializeSymbolStoreDelegate));
+ IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "LoadSymbolsForModule", (void **)&g_SOSNetCoreCallbacks.LoadSymbolsForModuleDelegate));
+ IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "Dispose", (void **)&g_SOSNetCoreCallbacks.DisposeDelegate));
+ IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "ResolveSequencePoint", (void **)&g_SOSNetCoreCallbacks.ResolveSequencePointDelegate));
+ IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "GetLocalVariableName", (void **)&g_SOSNetCoreCallbacks.GetLocalVariableNameDelegate));
+ IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "GetLineByILOffset", (void **)&g_SOSNetCoreCallbacks.GetLineByILOffsetDelegate));
+
+ g_hostingInitialized = true;
+ return Status;
+}
+
+extern "C" void InitializeSymbolReaderCallbacks(SOSNetCoreCallbacks sosNetCoreCallbacks)
+{
+ g_SOSNetCoreCallbacks = sosNetCoreCallbacks;
+ g_hostingInitialized = true;
+}
+
+static void WriteLineForSymbolStore(const char* message)
+{
+ ExtOut(message);
+ ExtOut("\n");
+}
+
+HRESULT InitializeSymbolStore(BOOL msdl, BOOL symweb, const char* symbolServer, const char* cacheDirectory)
+{
+ HRESULT Status = S_OK;
+
+ IfFailRet(InitializeHosting());
+
+ _ASSERTE(g_SOSNetCoreCallbacks.InitializeSymbolStoreDelegate != nullptr);
+
+ // Only pass the output delegate on Linux (lldb) because on Windows under dbgeng, output from the symbol stores
+ // can deadlock because it can happen on a thread other than the dbgeng main thread.
+ OutputDelegate writeLine = nullptr;
+#ifdef FEATURE_PAL
+ writeLine = WriteLineForSymbolStore;
+#endif
+ if (!g_SOSNetCoreCallbacks.InitializeSymbolStoreDelegate(writeLine, msdl, symweb, symbolServer, cacheDirectory, nullptr))
+ {
+ ExtErr("Error initializing symbol server support\n");
+ return E_FAIL;
+ }
+
+ g_symbolStoreInitialized = true;
+ return S_OK;
+}
+
+HRESULT SymbolReader::LoadSymbols(___in IMetaDataImport* pMD, ___in ICorDebugModule* pModule)
+{
+ HRESULT Status = S_OK;
+ BOOL isDynamic = FALSE;
+ BOOL isInMemory = FALSE;
+ IfFailRet(pModule->IsDynamic(&isDynamic));
+ IfFailRet(pModule->IsInMemory(&isInMemory));
+
+ if (isDynamic)
+ {
+ // Dynamic and in memory assemblies are a special case which we will ignore for now
+ ExtWarn("SOS Warning: Loading symbols for dynamic assemblies is not yet supported\n");
+ return E_FAIL;
+ }
+
+ ULONG64 peAddress = 0;
+ ULONG32 peSize = 0;
+ IfFailRet(pModule->GetBaseAddress(&peAddress));
+ IfFailRet(pModule->GetSize(&peSize));
+
+ ULONG32 len = 0;
+ WCHAR moduleName[MAX_LONGPATH];
+ IfFailRet(pModule->GetName(_countof(moduleName), &len, moduleName));
+
+#ifndef FEATURE_PAL
+ if (SUCCEEDED(LoadSymbolsForWindowsPDB(pMD, peAddress, moduleName, isInMemory)))
+ {
+ return S_OK;
+ }
+#endif // FEATURE_PAL
+ return LoadSymbolsForPortablePDB(moduleName, isInMemory, isInMemory, peAddress, peSize, 0, 0);
+}
+
+HRESULT SymbolReader::LoadSymbols(___in IMetaDataImport* pMD, ___in IXCLRDataModule* pModule)
+{
+ ULONG32 flags;
+ HRESULT hr = pModule->GetFlags(&flags);
+ if (FAILED(hr))
+ {
+ ExtOut("LoadSymbols IXCLRDataModule->GetFlags FAILED 0x%08x\n", hr);
+ return hr;
+ }
+
+ if (flags & CLRDATA_MODULE_IS_DYNAMIC)
+ {
+ ExtWarn("SOS Warning: Loading symbols for dynamic assemblies is not yet supported\n");
+ return E_FAIL;
+ }
+
+ DacpGetModuleData moduleData;
+ hr = moduleData.Request(pModule);
+ if (FAILED(hr))
+ {
+ ExtOut("LoadSymbols moduleData.Request FAILED 0x%08x\n", hr);
+ return hr;
+ }
+
+ ArrayHolder<WCHAR> pModuleName = new WCHAR[MAX_LONGPATH + 1];
+ ULONG32 nameLen = 0;
+ hr = pModule->GetFileName(MAX_LONGPATH, &nameLen, pModuleName);
+ if (FAILED(hr))
+ {
+ ExtOut("LoadSymbols: IXCLRDataModule->GetFileName FAILED 0x%08x\n", hr);
+ return hr;
+ }
+
+#ifndef FEATURE_PAL
+ // TODO: in-memory windows PDB not supported
+ hr = LoadSymbolsForWindowsPDB(pMD, moduleData.LoadedPEAddress, pModuleName, moduleData.IsFileLayout);
+ if (SUCCEEDED(hr))
+ {
+ return hr;
+ }
+#endif // FEATURE_PAL
+
+ return LoadSymbolsForPortablePDB(
+ pModuleName,
+ moduleData.IsInMemory,
+ moduleData.IsFileLayout,
+ moduleData.LoadedPEAddress,
+ moduleData.LoadedPESize,
+ moduleData.InMemoryPdbAddress,
+ moduleData.InMemoryPdbSize);
+}
+
+#ifndef FEATURE_PAL
+
+HRESULT SymbolReader::LoadSymbolsForWindowsPDB(___in IMetaDataImport* pMD, ___in ULONG64 peAddress, __in_z WCHAR* pModuleName, ___in BOOL isFileLayout)
+{
+ HRESULT Status = S_OK;
+
+ if (m_pSymReader != NULL)
+ return S_OK;
+
+ IfFailRet(CoInitialize(NULL));
+
+ // We now need a binder object that will take the module and return a
+ // reader object
+ ToRelease<ISymUnmanagedBinder3> pSymBinder;
+ if (FAILED(Status = CreateInstanceCustom(CLSID_CorSymBinder_SxS,
+ IID_ISymUnmanagedBinder3,
+ NATIVE_SYMBOL_READER_DLL,
+ cciDacColocated|cciDbgPath,
+ (void**)&pSymBinder)))
+ {
+ ExtOut("SOS Error: Unable to CoCreateInstance class=CLSID_CorSymBinder_SxS, interface=IID_ISymUnmanagedBinder3, hr=0x%x\n", Status);
+ ExtOut("This usually means SOS was unable to locate a suitable version of DiaSymReader. The dll searched for was '%S'\n", NATIVE_SYMBOL_READER_DLL);
+ return Status;
+ }
+
+ ToRelease<IDebugSymbols3> spSym3(NULL);
+ Status = g_ExtSymbols->QueryInterface(__uuidof(IDebugSymbols3), (void**)&spSym3);
+ if (FAILED(Status))
+ {
+ ExtOut("SOS Error: Unable to query IDebugSymbols3 HRESULT=0x%x.\n", Status);
+ return Status;
+ }
+
+ ULONG pathSize = 0;
+ Status = spSym3->GetSymbolPathWide(NULL, 0, &pathSize);
+ if (FAILED(Status)) //S_FALSE if the path doesn't fit, but if the path was size 0 perhaps we would get S_OK?
+ {
+ ExtOut("SOS Error: Unable to get symbol path length. IDebugSymbols3::GetSymbolPathWide HRESULT=0x%x.\n", Status);
+ return Status;
+ }
+
+ ArrayHolder<WCHAR> symbolPath = new WCHAR[pathSize];
+ Status = spSym3->GetSymbolPathWide(symbolPath, pathSize, NULL);
+ if (S_OK != Status)
+ {
+ ExtOut("SOS Error: Unable to get symbol path. IDebugSymbols3::GetSymbolPathWide HRESULT=0x%x.\n", Status);
+ return Status;
+ }
+
+ ToRelease<IUnknown> pCallback = NULL;
+ if (isFileLayout)
+ {
+ pCallback = (IUnknown*) new PEOffsetMemoryReader(TO_TADDR(peAddress));
+ }
+ else
+ {
+ pCallback = (IUnknown*) new PERvaMemoryReader(TO_TADDR(peAddress));
+ }
+
+ // TODO: this should be better integrated with windbg's symbol lookup
+ Status = pSymBinder->GetReaderFromCallback(pMD, pModuleName, symbolPath,
+ AllowRegistryAccess | AllowSymbolServerAccess | AllowOriginalPathAccess | AllowReferencePathAccess, pCallback, &m_pSymReader);
+
+ if (FAILED(Status) && m_pSymReader != NULL)
+ {
+ m_pSymReader->Release();
+ m_pSymReader = NULL;
+ }
+ return Status;
+}
+
+#endif // FEATURE_PAL
+
+//
+// Pass to managed helper code to read in-memory PEs/PDBs
+// Returns the number of bytes read.
+//
+int ReadMemoryForSymbols(ULONG64 address, char *buffer, int cb)
+{
+ ULONG read;
+ if (SafeReadMemory(TO_TADDR(address), (PVOID)buffer, cb, &read))
+ {
+ return read;
+ }
+ return 0;
+}
+
+HRESULT SymbolReader::LoadSymbolsForPortablePDB(__in_z WCHAR* pModuleName, ___in BOOL isInMemory, ___in BOOL isFileLayout,
+ ___in ULONG64 peAddress, ___in ULONG64 peSize, ___in ULONG64 inMemoryPdbAddress, ___in ULONG64 inMemoryPdbSize)
+{
+ HRESULT Status = S_OK;
+
+ IfFailRet(InitializeHosting());
+
+ _ASSERTE(g_SOSNetCoreCallbacks.LoadSymbolsForModuleDelegate != nullptr);
+ _ASSERTE(g_SOSNetCoreCallbacks.InitializeSymbolStoreDelegate != nullptr);
+
+#ifndef FEATURE_PAL
+ if (!g_symbolStoreInitialized)
+ {
+ g_symbolStoreInitialized = true;
+
+ ArrayHolder<char> symbolPath = new char[MAX_LONGPATH];
+ if (SUCCEEDED(g_ExtSymbols->GetSymbolPath(symbolPath, MAX_LONGPATH, nullptr)))
+ {
+ if (strlen(symbolPath) > 0)
+ {
+ if (!g_SOSNetCoreCallbacks.InitializeSymbolStoreDelegate(nullptr, false, false, nullptr, nullptr, symbolPath))
+ {
+ ExtErr("Windows symbol path parsing FAILED\n");
+ }
+ }
+ }
+ }
+#endif
+
+ // The module name needs to be null for in-memory PE's.
+ ArrayHolder<char> szModuleName = nullptr;
+ if (!isInMemory && pModuleName != nullptr)
+ {
+ szModuleName = new char[MAX_LONGPATH];
+ if (WideCharToMultiByte(CP_ACP, 0, pModuleName, (int)(_wcslen(pModuleName) + 1), szModuleName, MAX_LONGPATH, NULL, NULL) == 0)
+ {
+ return E_FAIL;
+ }
+ }
+
+ m_symbolReaderHandle = g_SOSNetCoreCallbacks.LoadSymbolsForModuleDelegate(szModuleName, isFileLayout, peAddress,
+ (int)peSize, inMemoryPdbAddress, (int)inMemoryPdbSize, ReadMemoryForSymbols);
+
+ if (m_symbolReaderHandle == 0)
+ {
+ return E_FAIL;
+ }
+
+ return Status;
+}
+
+HRESULT SymbolReader::GetLineByILOffset(___in mdMethodDef methodToken, ___in ULONG64 ilOffset,
+ ___out ULONG *pLinenum, __out_ecount(cchFileName) WCHAR* pwszFileName, ___in ULONG cchFileName)
+{
+ HRESULT Status = S_OK;
+
+ if (m_symbolReaderHandle != 0)
+ {
+ _ASSERTE(g_hostingInitialized);
+ _ASSERTE(g_SOSNetCoreCallbacks.GetLineByILOffsetDelegate != nullptr);
+
+ BSTR bstrFileName = SysAllocStringLen(0, MAX_LONGPATH);
+ if (bstrFileName == nullptr)
+ {
+ return E_OUTOFMEMORY;
+ }
+ // Source lines with 0xFEEFEE markers are filtered out on the managed side.
+ if ((g_SOSNetCoreCallbacks.GetLineByILOffsetDelegate(m_symbolReaderHandle, methodToken, ilOffset, pLinenum, &bstrFileName) == FALSE) || (*pLinenum == 0))
+ {
+ SysFreeString(bstrFileName);
+ return E_FAIL;
+ }
+ wcscpy_s(pwszFileName, cchFileName, bstrFileName);
+ SysFreeString(bstrFileName);
+ return S_OK;
+ }
+
+#ifndef FEATURE_PAL
+ if (m_pSymReader == NULL)
+ return E_FAIL;
+
+ ToRelease<ISymUnmanagedMethod> pSymMethod(NULL);
+ IfFailRet(m_pSymReader->GetMethod(methodToken, &pSymMethod));
+
+ ULONG32 seqPointCount = 0;
+ IfFailRet(pSymMethod->GetSequencePointCount(&seqPointCount));
+
+ if (seqPointCount == 0)
+ return E_FAIL;
+
+ // allocate memory for the objects to be fetched
+ ArrayHolder<ULONG32> offsets(new ULONG32[seqPointCount]);
+ ArrayHolder<ULONG32> lines(new ULONG32[seqPointCount]);
+ ArrayHolder<ULONG32> columns(new ULONG32[seqPointCount]);
+ ArrayHolder<ULONG32> endlines(new ULONG32[seqPointCount]);
+ ArrayHolder<ULONG32> endcolumns(new ULONG32[seqPointCount]);
+ ArrayHolder<ToRelease<ISymUnmanagedDocument>> documents(new ToRelease<ISymUnmanagedDocument>[seqPointCount]);
+
+ ULONG32 realSeqPointCount = 0;
+ IfFailRet(pSymMethod->GetSequencePoints(seqPointCount, &realSeqPointCount, offsets, &(documents[0]), lines, columns, endlines, endcolumns));
+
+ const ULONG32 HiddenLine = 0x00feefee;
+ int bestSoFar = -1;
+
+ for (int i = 0; i < (int)realSeqPointCount; i++)
+ {
+ if (offsets[i] > ilOffset)
+ break;
+
+ if (lines[i] != HiddenLine)
+ bestSoFar = i;
+ }
+
+ if (bestSoFar != -1)
+ {
+ ULONG32 cchNeeded = 0;
+ IfFailRet(documents[bestSoFar]->GetURL(cchFileName, &cchNeeded, pwszFileName));
+
+ *pLinenum = lines[bestSoFar];
+ return S_OK;
+ }
+#endif // FEATURE_PAL
+
+ return E_FAIL;
+}
+
+HRESULT SymbolReader::GetNamedLocalVariable(___in ISymUnmanagedScope * pScope, ___in ICorDebugILFrame * pILFrame, ___in mdMethodDef methodToken,
+ ___in ULONG localIndex, __out_ecount(paramNameLen) WCHAR* paramName, ___in ULONG paramNameLen, ICorDebugValue** ppValue)
+{
+ HRESULT Status = S_OK;
+
+ if (m_symbolReaderHandle != 0)
+ {
+ _ASSERTE(g_hostingInitialized);
+ _ASSERTE(g_SOSNetCoreCallbacks.GetLocalVariableNameDelegate != nullptr);
+
+ BSTR wszParamName = SysAllocStringLen(0, mdNameLen);
+ if (wszParamName == NULL)
+ {
+ return E_OUTOFMEMORY;
+ }
+
+ if (g_SOSNetCoreCallbacks.GetLocalVariableNameDelegate(m_symbolReaderHandle, methodToken, localIndex, &wszParamName) == FALSE)
+ {
+ SysFreeString(wszParamName);
+ return E_FAIL;
+ }
+
+ wcscpy_s(paramName, paramNameLen, wszParamName);
+ SysFreeString(wszParamName);
+
+ if (FAILED(pILFrame->GetLocalVariable(localIndex, ppValue)) || (*ppValue == NULL))
+ {
+ *ppValue = NULL;
+ return E_FAIL;
+ }
+ return S_OK;
+ }
+
+#ifndef FEATURE_PAL
+ if (m_pSymReader == NULL)
+ return E_FAIL;
+
+ if (pScope == NULL)
+ {
+ ToRelease<ISymUnmanagedMethod> pSymMethod;
+ IfFailRet(m_pSymReader->GetMethod(methodToken, &pSymMethod));
+
+ ToRelease<ISymUnmanagedScope> pScope;
+ IfFailRet(pSymMethod->GetRootScope(&pScope));
+
+ return GetNamedLocalVariable(pScope, pILFrame, methodToken, localIndex, paramName, paramNameLen, ppValue);
+ }
+ else
+ {
+ ULONG32 numVars = 0;
+ IfFailRet(pScope->GetLocals(0, &numVars, NULL));
+
+ ArrayHolder<ISymUnmanagedVariable*> pLocals = new ISymUnmanagedVariable*[numVars];
+ IfFailRet(pScope->GetLocals(numVars, &numVars, pLocals));
+
+ for (ULONG i = 0; i < numVars; i++)
+ {
+ ULONG32 varIndexInMethod = 0;
+ if (SUCCEEDED(pLocals[i]->GetAddressField1(&varIndexInMethod)))
+ {
+ if (varIndexInMethod != localIndex)
+ continue;
+
+ ULONG32 nameLen = 0;
+ if (FAILED(pLocals[i]->GetName(paramNameLen, &nameLen, paramName)))
+ swprintf_s(paramName, paramNameLen, W("local_%d\0"), localIndex);
+
+ if (SUCCEEDED(pILFrame->GetLocalVariable(varIndexInMethod, ppValue)) && (*ppValue != NULL))
+ {
+ for(ULONG j = 0; j < numVars; j++) pLocals[j]->Release();
+ return S_OK;
+ }
+ else
+ {
+ *ppValue = NULL;
+ for(ULONG j = 0; j < numVars; j++) pLocals[j]->Release();
+ return E_FAIL;
+ }
+ }
+ }
+
+ ULONG32 numChildren = 0;
+ IfFailRet(pScope->GetChildren(0, &numChildren, NULL));
+
+ ArrayHolder<ISymUnmanagedScope*> pChildren = new ISymUnmanagedScope*[numChildren];
+ IfFailRet(pScope->GetChildren(numChildren, &numChildren, pChildren));
+
+ for (ULONG i = 0; i < numChildren; i++)
+ {
+ if (SUCCEEDED(GetNamedLocalVariable(pChildren[i], pILFrame, methodToken, localIndex, paramName, paramNameLen, ppValue)))
+ {
+ for (ULONG j = 0; j < numChildren; j++) pChildren[j]->Release();
+ return S_OK;
+ }
+ }
+
+ for (ULONG j = 0; j < numChildren; j++) pChildren[j]->Release();
+ }
+#endif // FEATURE_PAL
+
+ return E_FAIL;
+}
+
+HRESULT SymbolReader::GetNamedLocalVariable(___in ICorDebugFrame * pFrame, ___in ULONG localIndex, __out_ecount(paramNameLen) WCHAR* paramName,
+ ___in ULONG paramNameLen, ___out ICorDebugValue** ppValue)
+{
+ HRESULT Status = S_OK;
+
+ *ppValue = NULL;
+ paramName[0] = L'\0';
+
+ ToRelease<ICorDebugILFrame> pILFrame;
+ IfFailRet(pFrame->QueryInterface(IID_ICorDebugILFrame, (LPVOID*) &pILFrame));
+
+ ToRelease<ICorDebugFunction> pFunction;
+ IfFailRet(pFrame->GetFunction(&pFunction));
+
+ mdMethodDef methodDef;
+ ToRelease<ICorDebugClass> pClass;
+ ToRelease<ICorDebugModule> pModule;
+ IfFailRet(pFunction->GetClass(&pClass));
+ IfFailRet(pFunction->GetModule(&pModule));
+ IfFailRet(pFunction->GetToken(&methodDef));
+
+ return GetNamedLocalVariable(NULL, pILFrame, methodDef, localIndex, paramName, paramNameLen, ppValue);
+}
+
+HRESULT SymbolReader::ResolveSequencePoint(__in_z WCHAR* pFilename, ___in ULONG32 lineNumber, ___in TADDR mod, ___out mdMethodDef* pToken, ___out ULONG32* pIlOffset)
+{
+ HRESULT Status = S_OK;
+
+ if (m_symbolReaderHandle != 0)
+ {
+ _ASSERTE(g_hostingInitialized);
+ _ASSERTE(g_SOSNetCoreCallbacks.ResolveSequencePointDelegate != nullptr);
+
+ char szName[mdNameLen];
+ if (WideCharToMultiByte(CP_ACP, 0, pFilename, (int)(_wcslen(pFilename) + 1), szName, mdNameLen, NULL, NULL) == 0)
+ {
+ return E_FAIL;
+ }
+ if (g_SOSNetCoreCallbacks.ResolveSequencePointDelegate(m_symbolReaderHandle, szName, lineNumber, pToken, pIlOffset) == FALSE)
+ {
+ return E_FAIL;
+ }
+ return S_OK;
+ }
+
+#ifndef FEATURE_PAL
+ if (m_pSymReader == NULL)
+ return E_FAIL;
+
+ ULONG32 cDocs = 0;
+ ULONG32 cDocsNeeded = 0;
+ ArrayHolder<ToRelease<ISymUnmanagedDocument>> pDocs = NULL;
+
+ IfFailRet(m_pSymReader->GetDocuments(cDocs, &cDocsNeeded, NULL));
+ pDocs = new ToRelease<ISymUnmanagedDocument>[cDocsNeeded];
+ cDocs = cDocsNeeded;
+ IfFailRet(m_pSymReader->GetDocuments(cDocs, &cDocsNeeded, &(pDocs[0])));
+
+ ULONG32 filenameLen = (ULONG32) _wcslen(pFilename);
+
+ for (ULONG32 i = 0; i < cDocs; i++)
+ {
+ ULONG32 cchUrl = 0;
+ ULONG32 cchUrlNeeded = 0;
+ ArrayHolder<WCHAR> pUrl = NULL;
+ IfFailRet(pDocs[i]->GetURL(cchUrl, &cchUrlNeeded, pUrl));
+ pUrl = new WCHAR[cchUrlNeeded];
+ cchUrl = cchUrlNeeded;
+ IfFailRet(pDocs[i]->GetURL(cchUrl, &cchUrlNeeded, pUrl));
+
+ // If the URL is exactly as long as the filename then compare the two names directly
+ if (cchUrl-1 == filenameLen)
+ {
+ if (0!=_wcsicmp(pUrl, pFilename))
+ continue;
+ }
+ // does the URL suffix match [back]slash + filename?
+ else if (cchUrl-1 > filenameLen)
+ {
+ WCHAR* slashLocation = pUrl + (cchUrl - filenameLen - 2);
+ if (*slashLocation != L'\\' && *slashLocation != L'/')
+ continue;
+ if (0 != _wcsicmp(slashLocation+1, pFilename))
+ continue;
+ }
+ // URL is too short to match
+ else
+ continue;
+
+ ULONG32 closestLine = 0;
+ if (FAILED(pDocs[i]->FindClosestLine(lineNumber, &closestLine)))
+ continue;
+
+ ToRelease<ISymUnmanagedMethod> pSymUnmanagedMethod;
+ IfFailRet(m_pSymReader->GetMethodFromDocumentPosition(pDocs[i], closestLine, 0, &pSymUnmanagedMethod));
+ IfFailRet(pSymUnmanagedMethod->GetToken(pToken));
+ IfFailRet(pSymUnmanagedMethod->GetOffset(pDocs[i], closestLine, 0, pIlOffset));
+
+ // If this IL
+ if (*pIlOffset == -1)
+ {
+ return E_FAIL;
+ }
+ return S_OK;
+ }
+#endif // FEATURE_PAL
+
+ return E_FAIL;
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// ==++==
+//
+
+//
+// ==--==
+#ifndef __hostcoreclr_h__
+#define __hostcoreclr_h__
+
+static const char *SymbolReaderDllName = "SOS.NETCore";
+static const char *SymbolReaderClassName = "SOS.SymbolReader";
+
+typedef void (*OutputDelegate)(const char*);
+typedef int (*ReadMemoryDelegate)(ULONG64, char *, int);
+
+typedef void (*SymbolReaderInitialize)();
+typedef BOOL (*InitializeSymbolStoreDelegate)(OutputDelegate, BOOL, BOOL, const char*, const char*, const char*);
+typedef PVOID (*LoadSymbolsForModuleDelegate)(const char*, BOOL, ULONG64, int, ULONG64, int, ReadMemoryDelegate);
+typedef void (*DisposeDelegate)(PVOID);
+typedef BOOL (*ResolveSequencePointDelegate)(PVOID, const char*, unsigned int, unsigned int*, unsigned int*);
+typedef BOOL (*GetLocalVariableNameDelegate)(PVOID, int, int, BSTR*);
+typedef BOOL (*GetLineByILOffsetDelegate)(PVOID, mdMethodDef, ULONG64, ULONG *, BSTR*);
+
+struct SOSNetCoreCallbacks
+{
+ InitializeSymbolStoreDelegate InitializeSymbolStoreDelegate;
+ LoadSymbolsForModuleDelegate LoadSymbolsForModuleDelegate;
+ DisposeDelegate DisposeDelegate;
+ ResolveSequencePointDelegate ResolveSequencePointDelegate;
+ GetLineByILOffsetDelegate GetLineByILOffsetDelegate;
+ GetLocalVariableNameDelegate GetLocalVariableNameDelegate;
+};
+
+extern HMODULE g_hInstance;
+extern LPCSTR g_hostRuntimeDirectory;
+extern SOSNetCoreCallbacks g_SOSNetCoreCallbacks;
+
+extern BOOL IsHostingInitialized();
+extern HRESULT InitializeHosting();
+extern HRESULT InitializeSymbolStore(BOOL, BOOL, const char*, const char*);
+
+class SymbolReader
+{
+private:
+#ifndef FEATURE_PAL
+ ISymUnmanagedReader* m_pSymReader;
+#endif
+ PVOID m_symbolReaderHandle;
+
+ HRESULT GetNamedLocalVariable(___in ISymUnmanagedScope* pScope, ___in ICorDebugILFrame* pILFrame, ___in mdMethodDef methodToken, ___in ULONG localIndex,
+ __out_ecount(paramNameLen) WCHAR* paramName, ___in ULONG paramNameLen, ___out ICorDebugValue** ppValue);
+ HRESULT LoadSymbolsForWindowsPDB(___in IMetaDataImport* pMD, ___in ULONG64 peAddress, __in_z WCHAR* pModuleName, ___in BOOL isFileLayout);
+ HRESULT LoadSymbolsForPortablePDB(__in_z WCHAR* pModuleName, ___in BOOL isInMemory, ___in BOOL isFileLayout, ___in ULONG64 peAddress, ___in ULONG64 peSize,
+ ___in ULONG64 inMemoryPdbAddress, ___in ULONG64 inMemoryPdbSize);
+
+public:
+ SymbolReader()
+ {
+#ifndef FEATURE_PAL
+ m_pSymReader = NULL;
+#endif
+ m_symbolReaderHandle = 0;
+ }
+
+ ~SymbolReader()
+ {
+#ifndef FEATURE_PAL
+ if(m_pSymReader != NULL)
+ {
+ m_pSymReader->Release();
+ m_pSymReader = NULL;
+ }
+#endif
+ if (m_symbolReaderHandle != 0)
+ {
+ g_SOSNetCoreCallbacks.DisposeDelegate(m_symbolReaderHandle);
+ m_symbolReaderHandle = 0;
+ }
+ }
+
+ HRESULT LoadSymbols(___in IMetaDataImport* pMD, ___in ICorDebugModule* pModule);
+ HRESULT LoadSymbols(___in IMetaDataImport* pMD, ___in IXCLRDataModule* pModule);
+ HRESULT GetLineByILOffset(___in mdMethodDef MethodToken, ___in ULONG64 IlOffset, ___out ULONG *pLinenum, __out_ecount(cchFileName) WCHAR* pwszFileName, ___in ULONG cchFileName);
+ HRESULT GetNamedLocalVariable(___in ICorDebugFrame * pFrame, ___in ULONG localIndex, __out_ecount(paramNameLen) WCHAR* paramName, ___in ULONG paramNameLen, ___out ICorDebugValue** ppValue);
+ HRESULT ResolveSequencePoint(__in_z WCHAR* pFilename, ___in ULONG32 lineNumber, ___in TADDR mod, ___out mdMethodDef* ___out pToken, ___out ULONG32* pIlOffset);
+};
+
+HRESULT
+GetLineByOffset(
+ ___in ULONG64 IP,
+ ___out ULONG *pLinenum,
+ __out_ecount(cchFileName) WCHAR* pwszFileName,
+ ___in ULONG cchFileName);
+
+#endif // __hostcoreclr_h__
savemodule=SaveModule
SetHostRuntime
sethostruntime=SetHostRuntime
+ SetSymbolServer
+ setsymbolserver=SetSymbolServer
SOSFlush
sosflush=SOSFlush
StopOnException
TraceToCode
tracetocode=TraceToCode
#endif
+
+ InitializeSymbolReaderCallbacks
\ No newline at end of file
PrintException
StopOnCatch
SetHostRuntime
+SetSymbolServer
SOSFlush
SyncBlk
Threads
Token2EE
u
VerifyHeap
-VerifyStackTrace
-
-_EFN_GetManagedExcepStack
-_EFN_GetManagedExcepStackW
-_EFN_GetManagedObjectFieldInfo
-_EFN_GetManagedObjectName
-_EFN_StackTrace
+
+InitializeSymbolReaderCallbacks
\ No newline at end of file
5b9a628c 4000001 0 System.Int32 instance 4 x
5b9a628c 4000002 4 System.Int32 instance 8 y
5b9a628c 4000003 8 System.Int32 instance 12 z
-
\\
COMMAND: dumpasync.
For example:
- 0:000> !dumpdelegate
+ (lldb) dumpdelegate
Target Method Name
000001461bacb0d8 00007ffc5c894b80 ConsoleApp16.Program.InstanceMethod()
000001461bacb098 00007ffc5c894b68 ConsoleApp16.Program.StaticMethod()
#undef DOAPPEND
}
+#ifndef FEATURE_PAL
+
BOOL AppendContext(LPVOID pTransitionContexts, size_t maxCount, size_t *pcurCount, size_t uiSizeOfContext,
CROSS_PLATFORM_CONTEXT *context)
{
return Status;
}
-#ifdef FEATURE_PAL
-#define PAL_TRY_NAKED PAL_CPP_TRY
-#define PAL_EXCEPT_NAKED(disp) PAL_CPP_CATCH_ALL
-#define PAL_ENDTRY_NAKED PAL_CPP_ENDTRY
-#endif
-
// TODO: Convert PAL_TRY_NAKED to something that works on the Mac.
HRESULT CALLBACK ImplementEFNStackTraceTry(
PDEBUG_CLIENT client,
return Status;
}
-
BOOL FormatFromRemoteString(DWORD_PTR strObjPointer, __out_ecount(cchString) PWSTR wszBuffer, ULONG cchString)
{
BOOL bRet = FALSE;
return Status;
}
+
// TODO: Enable this when ImplementEFNStackTraceTry is fixed.
// This function, like VerifyDAC, exists for the purpose of testing
// hard-to-get-to SOS APIs.
return Status;
}
-#ifndef FEATURE_PAL
-
// This is an internal-only Apollo extension to de-optimize the code
DECLARE_API(SuppressJitOptimization)
{
return S_OK;
}
+#ifndef FEATURE_PAL
+
// This is an undocumented SOS extension command intended to help test SOS
// It causes the Dml output to be printed to the console uninterpretted so
// that a test script can read the commands which are hidden in the markup
return S_OK;
}
+#endif // FEATURE_PAL
+
#ifdef FEATURE_PAL
#ifdef CREATE_DUMP_SUPPORTED
#endif // FEATURE_PAL
-extern LPCSTR g_hostRuntimeDirectory;
-
//
// Sets the .NET Core runtime path to use to run the managed code within SOS/native debugger.
//
}
if (narg > 0)
{
+ if (IsHostingInitialized())
+ {
+ ExtErr("Runtime hosting already initialized %s\n", g_hostRuntimeDirectory);
+ return E_FAIL;
+ }
if (g_hostRuntimeDirectory != nullptr)
{
free((void*)g_hostRuntimeDirectory);
}
g_hostRuntimeDirectory = _strdup(hostRuntimeDirectory.data);
}
- else
+ if (g_hostRuntimeDirectory != nullptr)
{
- if (g_hostRuntimeDirectory != nullptr)
+ ExtOut("Host runtime path: %s\n", g_hostRuntimeDirectory);
+ }
+ return S_OK;
+}
+
+//
+// Sets the symbol server path.
+//
+DECLARE_API(SetSymbolServer)
+{
+ INIT_API_EXT();
+
+ StringHolder symbolCache;
+ BOOL msdl = FALSE;
+ BOOL symweb = FALSE;
+ CMDOption option[] =
+ { // name, vptr, type, hasValue
+ {"-cache", &symbolCache.data, COSTRING, FALSE},
+ {"-ms", &msdl, COBOOL, FALSE},
+#ifndef FEATURE_PAL
+ {"-mi", &symweb, COBOOL, FALSE},
+#endif
+ };
+ StringHolder symbolServer;
+ CMDValue arg[] =
+ {
+ {&symbolServer.data, COSTRING},
+ };
+ size_t narg;
+ if (!GetCMDOption(args, option, _countof(option), arg, _countof(arg), &narg))
+ {
+ return E_FAIL;
+ }
+
+ if (msdl && symweb)
+ {
+ ExtErr("Cannot have both -ms and -mi options\n");
+ return E_FAIL;
+ }
+
+ if ((msdl || symweb) && symbolServer.data != nullptr)
+ {
+ ExtErr("Cannot have -ms or -mi option and a symbol server path\n");
+ return E_FAIL;
+ }
+
+ if (msdl || symweb || symbolServer.data != nullptr || symbolCache.data != nullptr)
+ {
+ Status = InitializeSymbolStore(msdl, symweb, symbolServer.data, symbolCache.data);
+ if (FAILED(Status))
{
- ExtOut("%s\n", g_hostRuntimeDirectory);
+ return Status;
+ }
+ if (msdl)
+ {
+ ExtOut("Added Microsoft public symbol server\n");
+ }
+ if (symweb)
+ {
+ ExtOut("Added internal symweb symbol server\n");
+ }
+ if (symbolServer.data != nullptr)
+ {
+ ExtOut("Added symbol server: %s\n", symbolServer.data);
+ }
+ if (symbolCache.data != nullptr)
+ {
+ ExtOut("Symbol cache path: %s\n", symbolCache.data);
}
}
- return S_OK;
+
+ return Status;
}
void PrintHelp (__in_z LPCSTR pszCmdName)
return;
}
#else
- int err = PAL_InitializeDLL();
- if(err != 0)
- {
- ExtErr("Error initializing PAL\n");
- return;
- }
-
ArrayHolder<char> szSOSModulePath = new char[MAX_LONGPATH + 1];
UINT cch = MAX_LONGPATH;
if (!PAL_GetPALDirectoryA(szSOSModulePath, &cch)) {
#include <mach-o/dyld.h>
#endif
-LPCSTR g_hostRuntimeDirectory = nullptr;
-LoadSymbolsForModuleDelegate SymbolReader::loadSymbolsForModuleDelegate;
-DisposeDelegate SymbolReader::disposeDelegate;
-ResolveSequencePointDelegate SymbolReader::resolveSequencePointDelegate;
-GetLocalVariableName SymbolReader::getLocalVariableNameDelegate;
-GetLineByILOffsetDelegate SymbolReader::getLineByILOffsetDelegate;
-
+HRESULT InitializeHosting();
HRESULT GetCoreClrDirectory(std::string& coreClrDirectory);
const char * const CorElementTypeName[ELEMENT_TYPE_MAX]=
DEBUG_ANY_ID, g_moduleInfo[GetEEFlavor()].baseAddr, "\\", pFileInfo, sizeof(VS_FIXEDFILEINFO), NULL) == S_OK;
}
-extern HMODULE g_hInstance;
-
BOOL GetSOSVersion(VS_FIXEDFILEINFO *pFileInfo)
{
_ASSERTE(pFileInfo);
if (s_clrDataProcess == NULL)
{
-#ifdef FEATURE_PAL
- int err = PAL_InitializeDLL();
- if (err != 0)
- {
- return CORDBG_E_UNSUPPORTED;
- }
-#endif // FEATURE_PAL
std::string dacModulePath;
hr = GetCoreClrDirectory(dacModulePath);
if (FAILED(hr))
LPCSTR coreclrDirectory = g_ExtServices->GetCoreClrDirectory();
if (coreclrDirectory == NULL)
{
- ExtErr("Runtime module (%s) not loaded yet", MAKEDLLNAME_A("coreclr"));
+ ExtErr("Runtime module (%s) not loaded yet\n", MAKEDLLNAME_A("coreclr"));
return E_FAIL;
}
ArrayHolder<WCHAR> modulePath = new WCHAR[MAX_LONGPATH + 1];
#endif // FEATURE_PAL
-HRESULT SymbolReader::LoadSymbols(___in IMetaDataImport* pMD, ___in ICorDebugModule* pModule)
-{
- HRESULT Status = S_OK;
- BOOL isDynamic = FALSE;
- BOOL isInMemory = FALSE;
- IfFailRet(pModule->IsDynamic(&isDynamic));
- IfFailRet(pModule->IsInMemory(&isInMemory));
-
- if (isDynamic)
- {
- // Dynamic and in memory assemblies are a special case which we will ignore for now
- ExtWarn("SOS Warning: Loading symbols for dynamic assemblies is not yet supported\n");
- return E_FAIL;
- }
-
- ULONG64 peAddress = 0;
- ULONG32 peSize = 0;
- IfFailRet(pModule->GetBaseAddress(&peAddress));
- IfFailRet(pModule->GetSize(&peSize));
-
- ULONG32 len = 0;
- WCHAR moduleName[MAX_LONGPATH];
- IfFailRet(pModule->GetName(_countof(moduleName), &len, moduleName));
-
-#ifndef FEATURE_PAL
- if (SUCCEEDED(LoadSymbolsForWindowsPDB(pMD, peAddress, moduleName, isInMemory)))
- {
- return S_OK;
- }
-#endif // FEATURE_PAL
- return LoadSymbolsForPortablePDB(moduleName, isInMemory, isInMemory, peAddress, peSize, 0, 0);
-}
-
-HRESULT SymbolReader::LoadSymbols(___in IMetaDataImport* pMD, ___in IXCLRDataModule* pModule)
-{
- DacpGetModuleData moduleData;
- HRESULT hr = moduleData.Request(pModule);
- if (FAILED(hr))
- {
- ExtOut("LoadSymbols moduleData.Request FAILED 0x%08x\n", hr);
- return hr;
- }
-
- if (moduleData.IsDynamic)
- {
- ExtWarn("SOS Warning: Loading symbols for dynamic assemblies is not yet supported\n");
- return E_FAIL;
- }
-
- ArrayHolder<WCHAR> pModuleName = new WCHAR[MAX_LONGPATH + 1];
- ULONG32 nameLen = 0;
- hr = pModule->GetFileName(MAX_LONGPATH, &nameLen, pModuleName);
- if (FAILED(hr))
- {
- ExtOut("LoadSymbols: IXCLRDataModule->GetFileName FAILED 0x%08x\n", hr);
- return hr;
- }
-
-#ifndef FEATURE_PAL
- // TODO: in-memory windows PDB not supported
- hr = LoadSymbolsForWindowsPDB(pMD, moduleData.LoadedPEAddress, pModuleName, moduleData.IsFileLayout);
- if (SUCCEEDED(hr))
- {
- return hr;
- }
-#endif // FEATURE_PAL
-
- return LoadSymbolsForPortablePDB(
- pModuleName,
- moduleData.IsInMemory,
- moduleData.IsFileLayout,
- moduleData.LoadedPEAddress,
- moduleData.LoadedPESize,
- moduleData.InMemoryPdbAddress,
- moduleData.InMemoryPdbSize);
-}
-
-#ifndef FEATURE_PAL
-
-HRESULT SymbolReader::LoadSymbolsForWindowsPDB(___in IMetaDataImport* pMD, ___in ULONG64 peAddress, __in_z WCHAR* pModuleName, ___in BOOL isFileLayout)
-{
- HRESULT Status = S_OK;
-
- if (m_pSymReader != NULL)
- return S_OK;
-
- IfFailRet(CoInitialize(NULL));
-
- // We now need a binder object that will take the module and return a
- // reader object
- ToRelease<ISymUnmanagedBinder3> pSymBinder;
- if (FAILED(Status = CreateInstanceCustom(CLSID_CorSymBinder_SxS,
- IID_ISymUnmanagedBinder3,
- NATIVE_SYMBOL_READER_DLL,
- cciDacColocated|cciDbgPath,
- (void**)&pSymBinder)))
- {
- ExtOut("SOS Error: Unable to CoCreateInstance class=CLSID_CorSymBinder_SxS, interface=IID_ISymUnmanagedBinder3, hr=0x%x\n", Status);
- ExtOut("This usually means SOS was unable to locate a suitable version of DiaSymReader. The dll searched for was '%S'\n", NATIVE_SYMBOL_READER_DLL);
- return Status;
- }
-
- ToRelease<IDebugSymbols3> spSym3(NULL);
- Status = g_ExtSymbols->QueryInterface(__uuidof(IDebugSymbols3), (void**)&spSym3);
- if (FAILED(Status))
- {
- ExtOut("SOS Error: Unable to query IDebugSymbols3 HRESULT=0x%x.\n", Status);
- return Status;
- }
-
- ULONG pathSize = 0;
- Status = spSym3->GetSymbolPathWide(NULL, 0, &pathSize);
- if (FAILED(Status)) //S_FALSE if the path doesn't fit, but if the path was size 0 perhaps we would get S_OK?
- {
- ExtOut("SOS Error: Unable to get symbol path length. IDebugSymbols3::GetSymbolPathWide HRESULT=0x%x.\n", Status);
- return Status;
- }
-
- ArrayHolder<WCHAR> symbolPath = new WCHAR[pathSize];
- Status = spSym3->GetSymbolPathWide(symbolPath, pathSize, NULL);
- if (S_OK != Status)
- {
- ExtOut("SOS Error: Unable to get symbol path. IDebugSymbols3::GetSymbolPathWide HRESULT=0x%x.\n", Status);
- return Status;
- }
-
- ToRelease<IUnknown> pCallback = NULL;
- if (isFileLayout)
- {
- pCallback = (IUnknown*) new PEOffsetMemoryReader(TO_TADDR(peAddress));
- }
- else
- {
- pCallback = (IUnknown*) new PERvaMemoryReader(TO_TADDR(peAddress));
- }
-
- // TODO: this should be better integrated with windbg's symbol lookup
- Status = pSymBinder->GetReaderFromCallback(pMD, pModuleName, symbolPath,
- AllowRegistryAccess | AllowSymbolServerAccess | AllowOriginalPathAccess | AllowReferencePathAccess, pCallback, &m_pSymReader);
-
- if (FAILED(Status) && m_pSymReader != NULL)
- {
- m_pSymReader->Release();
- m_pSymReader = NULL;
- }
- return Status;
-}
-
-#endif // FEATURE_PAL
-
-//
-// Pass to managed helper code to read in-memory PEs/PDBs
-// Returns the number of bytes read.
-//
-int ReadMemoryForSymbols(ULONG64 address, char *buffer, int cb)
-{
- ULONG read;
- if (SafeReadMemory(TO_TADDR(address), (PVOID)buffer, cb, &read))
- {
- return read;
- }
- return 0;
-}
-
-HRESULT SymbolReader::LoadSymbolsForPortablePDB(__in_z WCHAR* pModuleName, ___in BOOL isInMemory, ___in BOOL isFileLayout,
- ___in ULONG64 peAddress, ___in ULONG64 peSize, ___in ULONG64 inMemoryPdbAddress, ___in ULONG64 inMemoryPdbSize)
-{
- HRESULT Status = S_OK;
-
- if (loadSymbolsForModuleDelegate == nullptr)
- {
- IfFailRet(PrepareSymbolReader());
- }
-
- // The module name needs to be null for in-memory PE's.
- ArrayHolder<char> szModuleName = nullptr;
- if (!isInMemory && pModuleName != nullptr)
- {
- szModuleName = new char[MAX_LONGPATH];
- if (WideCharToMultiByte(CP_ACP, 0, pModuleName, (int)(_wcslen(pModuleName) + 1), szModuleName, MAX_LONGPATH, NULL, NULL) == 0)
- {
- return E_FAIL;
- }
- }
-
- m_symbolReaderHandle = loadSymbolsForModuleDelegate(szModuleName, isFileLayout, peAddress,
- (int)peSize, inMemoryPdbAddress, (int)inMemoryPdbSize, ReadMemoryForSymbols);
-
- if (m_symbolReaderHandle == 0)
- {
- return E_FAIL;
- }
-
- return Status;
-}
-
-#ifdef FEATURE_PAL
-#define TPALIST_SEPARATOR_STR_A ":"
-#else
-#define TPALIST_SEPARATOR_STR_A ";"
-#endif
-
-void AddFilesFromDirectoryToTpaList(const char* directory, std::string& tpaList)
-{
- const char * const tpaExtensions[] = {
- "*.ni.dll", // Probe for .ni.dll first so that it's preferred if ni and il coexist in the same dir
- "*.dll",
- };
- std::set<std::string> addedAssemblies;
-
- // Don't add this file to the list because we don't want to the one from the hosting runtime
- addedAssemblies.insert(SymbolReaderDllName);
-
- // Walk the directory for each extension separately so that we first get files with .ni.dll extension,
- // then files with .dll extension, etc.
- for (int extIndex = 0; extIndex < sizeof(tpaExtensions) / sizeof(tpaExtensions[0]); extIndex++)
- {
- const char* ext = tpaExtensions[extIndex];
- size_t extLength = strlen(ext) - 1; // don't count the "*"
-
- std::string assemblyPath(directory);
- assemblyPath.append(DIRECTORY_SEPARATOR_STR_A);
- assemblyPath.append(tpaExtensions[extIndex]);
-
- WIN32_FIND_DATAA data;
- HANDLE findHandle = FindFirstFileA(assemblyPath.c_str(), &data);
-
- if (findHandle != INVALID_HANDLE_VALUE)
- {
- do
- {
- if (!(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
- {
-
- std::string filename(data.cFileName);
- size_t extPos = filename.length() - extLength;
- std::string filenameWithoutExt(filename.substr(0, extPos));
-
- // Make sure if we have an assembly with multiple extensions present,
- // we insert only one version of it.
- if (addedAssemblies.find(filenameWithoutExt) == addedAssemblies.end())
- {
- addedAssemblies.insert(filenameWithoutExt);
-
- tpaList.append(directory);
- tpaList.append(DIRECTORY_SEPARATOR_STR_A);
- tpaList.append(filename);
- tpaList.append(TPALIST_SEPARATOR_STR_A);
- }
- }
- }
- while (0 != FindNextFileA(findHandle, &data));
-
- FindClose(findHandle);
- }
- }
-}
-
-#ifdef FEATURE_PAL
-
-#if defined(__linux__)
-#define symlinkEntrypointExecutable "/proc/self/exe"
-#elif !defined(__APPLE__)
-#define symlinkEntrypointExecutable "/proc/curproc/exe"
-#endif
-
-bool GetAbsolutePath(const char* path, std::string& absolutePath)
-{
- bool result = false;
-
- char realPath[PATH_MAX];
- if (realpath(path, realPath) != nullptr && realPath[0] != '\0')
- {
- absolutePath.assign(realPath);
- // realpath should return canonicalized path without the trailing slash
- assert(absolutePath.back() != '/');
-
- result = true;
- }
-
- return result;
-}
-
-bool GetEntrypointExecutableAbsolutePath(std::string& entrypointExecutable)
-{
- bool result = false;
-
- entrypointExecutable.clear();
-
- // Get path to the executable for the current process using
- // platform specific means.
-#if defined(__APPLE__)
-
- // On Mac, we ask the OS for the absolute path to the entrypoint executable
- uint32_t lenActualPath = 0;
- if (_NSGetExecutablePath(nullptr, &lenActualPath) == -1)
- {
- // OSX has placed the actual path length in lenActualPath,
- // so re-attempt the operation
- std::string resizedPath(lenActualPath, '\0');
- char *pResizedPath = const_cast<char *>(resizedPath.c_str());
- if (_NSGetExecutablePath(pResizedPath, &lenActualPath) == 0)
- {
- entrypointExecutable.assign(pResizedPath);
- result = true;
- }
- }
-#elif defined (__FreeBSD__)
- static const int name[] = {
- CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1
- };
- char path[PATH_MAX];
- size_t len;
-
- len = sizeof(path);
- if (sysctl(name, 4, path, &len, nullptr, 0) == 0)
- {
- entrypointExecutable.assign(path);
- result = true;
- }
- else
- {
- // ENOMEM
- result = false;
- }
-#elif defined(__NetBSD__) && defined(KERN_PROC_PATHNAME)
- static const int name[] = {
- CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME,
- };
- char path[MAXPATHLEN];
- size_t len;
-
- len = sizeof(path);
- if (sysctl(name, __arraycount(name), path, &len, NULL, 0) != -1)
- {
- entrypointExecutable.assign(path);
- result = true;
- }
- else
- {
- result = false;
- }
-#else
- // On other OSs, return the symlink that will be resolved by GetAbsolutePath
- // to fetch the entrypoint EXE absolute path, inclusive of filename.
- result = GetAbsolutePath(symlinkEntrypointExecutable, entrypointExecutable);
-#endif
-
- return result;
-}
-
-#else // FEATURE_PAL
-
-bool GetEntrypointExecutableAbsolutePath(std::string& entrypointExecutable)
-{
- ArrayHolder<char> hostPath = new char[MAX_LONGPATH+1];
- if (::GetModuleFileName(NULL, hostPath, MAX_LONGPATH) == 0)
- {
- return false;
- }
-
- entrypointExecutable.clear();
- entrypointExecutable.append(hostPath);
-
- return true;
-}
-
-#endif // FEATURE_PAL
-
-HRESULT GetCoreClrDirectory(std::string& coreClrDirectory)
-{
-#ifdef FEATURE_PAL
- LPCSTR directory = g_ExtServices->GetCoreClrDirectory();
- if (directory == NULL)
- {
- ExtErr("Error: Runtime module (%s) not loaded yet", MAKEDLLNAME_A("coreclr"));
- return E_FAIL;
- }
- if (!GetAbsolutePath(directory, coreClrDirectory))
- {
- ExtErr("Error: Failed to get coreclr absolute path\n");
- return E_FAIL;
- }
-#else
- ULONG index;
- HRESULT Status = g_ExtSymbols->GetModuleByModuleName(MAIN_CLR_MODULE_NAME_A, 0, &index, NULL);
- if (FAILED(Status))
- {
- ExtErr("Error: Can't find coreclr module\n");
- return Status;
- }
- ArrayHolder<char> szModuleName = new char[MAX_LONGPATH + 1];
- Status = g_ExtSymbols->GetModuleNames(index, 0, szModuleName, MAX_LONGPATH, NULL, NULL, 0, NULL, NULL, 0, NULL);
- if (FAILED(Status))
- {
- ExtErr("Error: Failed to get coreclr module name\n");
- return Status;
- }
- coreClrDirectory = szModuleName;
-
- // Parse off the module name to get just the path
- size_t lastSlash = coreClrDirectory.rfind(DIRECTORY_SEPARATOR_CHAR_A);
- if (lastSlash == std::string::npos)
- {
- ExtErr("Error: Failed to parse coreclr module name\n");
- return E_FAIL;
- }
- coreClrDirectory.assign(coreClrDirectory, 0, lastSlash);
-#endif
- return S_OK;
-}
-
-HRESULT GetHostRuntime(std::string& coreClrPath, std::string& hostRuntimeDirectory)
-{
- // If the hosting runtime isn't already set, use the runtime we are debugging
- if (g_hostRuntimeDirectory == nullptr)
- {
- HRESULT hr = GetCoreClrDirectory(hostRuntimeDirectory);
- if (FAILED(hr))
- {
- return hr;
- }
- g_hostRuntimeDirectory = _strdup(hostRuntimeDirectory.c_str());
- }
- hostRuntimeDirectory.assign(g_hostRuntimeDirectory);
- coreClrPath.assign(g_hostRuntimeDirectory);
- coreClrPath.append(DIRECTORY_SEPARATOR_STR_A);
- coreClrPath.append(MAIN_CLR_DLL_NAME_A);
- return S_OK;
-}
-
-HRESULT SymbolReader::PrepareSymbolReader()
-{
- static bool attemptedSymbolReaderPreparation = false;
- if (attemptedSymbolReaderPreparation)
- {
- // If we already tried to set up the symbol reader, we won't try again.
- return E_FAIL;
- }
- attemptedSymbolReaderPreparation = true;
-
- std::string hostRuntimeDirectory;
- std::string sosModuleDirectory;
- std::string coreClrPath;
-
- HRESULT Status = GetHostRuntime(coreClrPath, hostRuntimeDirectory);
- if (FAILED(Status))
- {
- return Status;
- }
-#ifdef FEATURE_PAL
- ArrayHolder<char> szSOSModulePath = new char[MAX_LONGPATH + 1];
- UINT cch = MAX_LONGPATH;
- if (!PAL_GetPALDirectoryA(szSOSModulePath, &cch)) {
- ExtErr("Error: Failed to get SOS module directory\n");
- return E_FAIL;
- }
- sosModuleDirectory = szSOSModulePath;
-#else
- ArrayHolder<char> szSOSModulePath = new char[MAX_LONGPATH + 1];
- if (GetModuleFileNameA(g_hInstance, szSOSModulePath, MAX_LONGPATH) == 0)
- {
- ExtErr("Error: Failed to get SOS module directory\n");
- return E_FAIL;
- }
- sosModuleDirectory = szSOSModulePath;
-
- // Get just the sos module directory
- size_t lastSlash = sosModuleDirectory.rfind(DIRECTORY_SEPARATOR_CHAR_A);
- if (lastSlash == std::string::npos)
- {
- ExtErr("Error: Failed to parse sos module name\n");
- return E_FAIL;
- }
- sosModuleDirectory.erase(lastSlash);
-#endif // FEATURE_PAL
-
- HMODULE coreclrLib = LoadLibraryA(coreClrPath.c_str());
- if (coreclrLib == nullptr)
- {
- ExtErr("Error: Failed to load %s\n", coreClrPath.c_str());
- return E_FAIL;
- }
-
- void *hostHandle;
- unsigned int domainId;
- coreclr_initialize_ptr initializeCoreCLR = (coreclr_initialize_ptr)GetProcAddress(coreclrLib, "coreclr_initialize");
- if (initializeCoreCLR == nullptr)
- {
- ExtErr("Error: coreclr_initialize not found\n");
- return E_FAIL;
- }
-
- std::string tpaList;
- AddFilesFromDirectoryToTpaList(hostRuntimeDirectory.c_str(), tpaList);
-
- // The SOS managed assembly from the sos directory is the one to trust
- tpaList.append(sosModuleDirectory);
- tpaList.append(DIRECTORY_SEPARATOR_STR_A);
- tpaList.append(SymbolReaderDllName);
- tpaList.append(".dll");
- tpaList.append(TPALIST_SEPARATOR_STR_A);
-
- std::string appPaths;
- appPaths.append(sosModuleDirectory);
- appPaths.append(TPALIST_SEPARATOR_STR_A);
- appPaths.append(hostRuntimeDirectory);
-
- const char *propertyKeys[] = {
- "TRUSTED_PLATFORM_ASSEMBLIES", "APP_PATHS", "APP_NI_PATHS",
- "NATIVE_DLL_SEARCH_DIRECTORIES", "AppDomainCompatSwitch"};
-
- const char *propertyValues[] = {// TRUSTED_PLATFORM_ASSEMBLIES
- tpaList.c_str(),
- // APP_PATHS
- appPaths.c_str(),
- // APP_NI_PATHS
- hostRuntimeDirectory.c_str(),
- // NATIVE_DLL_SEARCH_DIRECTORIES
- hostRuntimeDirectory.c_str(),
- // AppDomainCompatSwitch
- "UseLatestBehaviorWhenTFMNotSpecified"};
-
- std::string entryPointExecutablePath;
- if (!GetEntrypointExecutableAbsolutePath(entryPointExecutablePath))
- {
- ExtErr("Could not get full path to current executable");
- return E_FAIL;
- }
-
- Status = initializeCoreCLR(entryPointExecutablePath.c_str(), "sos",
- sizeof(propertyKeys) / sizeof(propertyKeys[0]), propertyKeys, propertyValues, &hostHandle, &domainId);
-
- if (FAILED(Status))
- {
- ExtErr("Error: Fail to initialize CoreCLR %08x\n", Status);
- return Status;
- }
-
- coreclr_create_delegate_ptr createDelegate = (coreclr_create_delegate_ptr)GetProcAddress(coreclrLib, "coreclr_create_delegate");
- if (createDelegate == nullptr)
- {
- ExtErr("Error: coreclr_create_delegate not found\n");
- return E_FAIL;
- }
-
- IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "LoadSymbolsForModule", (void **)&loadSymbolsForModuleDelegate));
- IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "Dispose", (void **)&disposeDelegate));
- IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "ResolveSequencePoint", (void **)&resolveSequencePointDelegate));
- IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "GetLocalVariableName", (void **)&getLocalVariableNameDelegate));
- IfFailRet(createDelegate(hostHandle, domainId, SymbolReaderDllName, SymbolReaderClassName, "GetLineByILOffset", (void **)&getLineByILOffsetDelegate));
-
- return Status;
-}
-
-HRESULT SymbolReader::GetLineByILOffset(___in mdMethodDef methodToken, ___in ULONG64 ilOffset,
- ___out ULONG *pLinenum, __out_ecount(cchFileName) WCHAR* pwszFileName, ___in ULONG cchFileName)
-{
- HRESULT Status = S_OK;
-
- if (m_symbolReaderHandle != 0)
- {
- _ASSERTE(getLineByILOffsetDelegate != nullptr);
-
- BSTR bstrFileName = SysAllocStringLen(0, MAX_LONGPATH);
- if (bstrFileName == nullptr)
- {
- return E_OUTOFMEMORY;
- }
- // Source lines with 0xFEEFEE markers are filtered out on the managed side.
- if ((getLineByILOffsetDelegate(m_symbolReaderHandle, methodToken, ilOffset, pLinenum, &bstrFileName) == FALSE) || (*pLinenum == 0))
- {
- SysFreeString(bstrFileName);
- return E_FAIL;
- }
- wcscpy_s(pwszFileName, cchFileName, bstrFileName);
- SysFreeString(bstrFileName);
- return S_OK;
- }
-
-#ifndef FEATURE_PAL
- if (m_pSymReader == NULL)
- return E_FAIL;
-
- ToRelease<ISymUnmanagedMethod> pSymMethod(NULL);
- IfFailRet(m_pSymReader->GetMethod(methodToken, &pSymMethod));
-
- ULONG32 seqPointCount = 0;
- IfFailRet(pSymMethod->GetSequencePointCount(&seqPointCount));
-
- if (seqPointCount == 0)
- return E_FAIL;
-
- // allocate memory for the objects to be fetched
- ArrayHolder<ULONG32> offsets(new ULONG32[seqPointCount]);
- ArrayHolder<ULONG32> lines(new ULONG32[seqPointCount]);
- ArrayHolder<ULONG32> columns(new ULONG32[seqPointCount]);
- ArrayHolder<ULONG32> endlines(new ULONG32[seqPointCount]);
- ArrayHolder<ULONG32> endcolumns(new ULONG32[seqPointCount]);
- ArrayHolder<ToRelease<ISymUnmanagedDocument>> documents(new ToRelease<ISymUnmanagedDocument>[seqPointCount]);
-
- ULONG32 realSeqPointCount = 0;
- IfFailRet(pSymMethod->GetSequencePoints(seqPointCount, &realSeqPointCount, offsets, &(documents[0]), lines, columns, endlines, endcolumns));
-
- const ULONG32 HiddenLine = 0x00feefee;
- int bestSoFar = -1;
-
- for (int i = 0; i < (int)realSeqPointCount; i++)
- {
- if (offsets[i] > ilOffset)
- break;
-
- if (lines[i] != HiddenLine)
- bestSoFar = i;
- }
-
- if (bestSoFar != -1)
- {
- ULONG32 cchNeeded = 0;
- IfFailRet(documents[bestSoFar]->GetURL(cchFileName, &cchNeeded, pwszFileName));
-
- *pLinenum = lines[bestSoFar];
- return S_OK;
- }
-#endif // FEATURE_PAL
-
- return E_FAIL;
-}
-
-HRESULT SymbolReader::GetNamedLocalVariable(___in ISymUnmanagedScope * pScope, ___in ICorDebugILFrame * pILFrame, ___in mdMethodDef methodToken,
- ___in ULONG localIndex, __out_ecount(paramNameLen) WCHAR* paramName, ___in ULONG paramNameLen, ICorDebugValue** ppValue)
-{
- HRESULT Status = S_OK;
-
- if (m_symbolReaderHandle != 0)
- {
- _ASSERTE(getLocalVariableNameDelegate != nullptr);
-
- BSTR wszParamName = SysAllocStringLen(0, mdNameLen);
- if (wszParamName == NULL)
- {
- return E_OUTOFMEMORY;
- }
-
- if (getLocalVariableNameDelegate(m_symbolReaderHandle, methodToken, localIndex, &wszParamName) == FALSE)
- {
- SysFreeString(wszParamName);
- return E_FAIL;
- }
-
- wcscpy_s(paramName, paramNameLen, wszParamName);
- SysFreeString(wszParamName);
-
- if (FAILED(pILFrame->GetLocalVariable(localIndex, ppValue)) || (*ppValue == NULL))
- {
- *ppValue = NULL;
- return E_FAIL;
- }
- return S_OK;
- }
-
-#ifndef FEATURE_PAL
- if (m_pSymReader == NULL)
- return E_FAIL;
-
- if (pScope == NULL)
- {
- ToRelease<ISymUnmanagedMethod> pSymMethod;
- IfFailRet(m_pSymReader->GetMethod(methodToken, &pSymMethod));
-
- ToRelease<ISymUnmanagedScope> pScope;
- IfFailRet(pSymMethod->GetRootScope(&pScope));
-
- return GetNamedLocalVariable(pScope, pILFrame, methodToken, localIndex, paramName, paramNameLen, ppValue);
- }
- else
- {
- ULONG32 numVars = 0;
- IfFailRet(pScope->GetLocals(0, &numVars, NULL));
-
- ArrayHolder<ISymUnmanagedVariable*> pLocals = new ISymUnmanagedVariable*[numVars];
- IfFailRet(pScope->GetLocals(numVars, &numVars, pLocals));
-
- for (ULONG i = 0; i < numVars; i++)
- {
- ULONG32 varIndexInMethod = 0;
- if (SUCCEEDED(pLocals[i]->GetAddressField1(&varIndexInMethod)))
- {
- if (varIndexInMethod != localIndex)
- continue;
-
- ULONG32 nameLen = 0;
- if (FAILED(pLocals[i]->GetName(paramNameLen, &nameLen, paramName)))
- swprintf_s(paramName, paramNameLen, W("local_%d\0"), localIndex);
-
- if (SUCCEEDED(pILFrame->GetLocalVariable(varIndexInMethod, ppValue)) && (*ppValue != NULL))
- {
- for(ULONG j = 0; j < numVars; j++) pLocals[j]->Release();
- return S_OK;
- }
- else
- {
- *ppValue = NULL;
- for(ULONG j = 0; j < numVars; j++) pLocals[j]->Release();
- return E_FAIL;
- }
- }
- }
-
- ULONG32 numChildren = 0;
- IfFailRet(pScope->GetChildren(0, &numChildren, NULL));
-
- ArrayHolder<ISymUnmanagedScope*> pChildren = new ISymUnmanagedScope*[numChildren];
- IfFailRet(pScope->GetChildren(numChildren, &numChildren, pChildren));
-
- for (ULONG i = 0; i < numChildren; i++)
- {
- if (SUCCEEDED(GetNamedLocalVariable(pChildren[i], pILFrame, methodToken, localIndex, paramName, paramNameLen, ppValue)))
- {
- for (ULONG j = 0; j < numChildren; j++) pChildren[j]->Release();
- return S_OK;
- }
- }
-
- for (ULONG j = 0; j < numChildren; j++) pChildren[j]->Release();
- }
-#endif // FEATURE_PAL
-
- return E_FAIL;
-}
-
-HRESULT SymbolReader::GetNamedLocalVariable(___in ICorDebugFrame * pFrame, ___in ULONG localIndex, __out_ecount(paramNameLen) WCHAR* paramName,
- ___in ULONG paramNameLen, ___out ICorDebugValue** ppValue)
-{
- HRESULT Status = S_OK;
-
- *ppValue = NULL;
- paramName[0] = L'\0';
-
- ToRelease<ICorDebugILFrame> pILFrame;
- IfFailRet(pFrame->QueryInterface(IID_ICorDebugILFrame, (LPVOID*) &pILFrame));
-
- ToRelease<ICorDebugFunction> pFunction;
- IfFailRet(pFrame->GetFunction(&pFunction));
-
- mdMethodDef methodDef;
- ToRelease<ICorDebugClass> pClass;
- ToRelease<ICorDebugModule> pModule;
- IfFailRet(pFunction->GetClass(&pClass));
- IfFailRet(pFunction->GetModule(&pModule));
- IfFailRet(pFunction->GetToken(&methodDef));
-
- return GetNamedLocalVariable(NULL, pILFrame, methodDef, localIndex, paramName, paramNameLen, ppValue);
-}
-
-HRESULT SymbolReader::ResolveSequencePoint(__in_z WCHAR* pFilename, ___in ULONG32 lineNumber, ___in TADDR mod, ___out mdMethodDef* pToken, ___out ULONG32* pIlOffset)
-{
- HRESULT Status = S_OK;
-
- if (m_symbolReaderHandle != 0)
- {
- _ASSERTE(resolveSequencePointDelegate != nullptr);
-
- char szName[mdNameLen];
- if (WideCharToMultiByte(CP_ACP, 0, pFilename, (int)(_wcslen(pFilename) + 1), szName, mdNameLen, NULL, NULL) == 0)
- {
- return E_FAIL;
- }
- if (resolveSequencePointDelegate(m_symbolReaderHandle, szName, lineNumber, pToken, pIlOffset) == FALSE)
- {
- return E_FAIL;
- }
- return S_OK;
- }
-
-#ifndef FEATURE_PAL
- if (m_pSymReader == NULL)
- return E_FAIL;
-
- ULONG32 cDocs = 0;
- ULONG32 cDocsNeeded = 0;
- ArrayHolder<ToRelease<ISymUnmanagedDocument>> pDocs = NULL;
-
- IfFailRet(m_pSymReader->GetDocuments(cDocs, &cDocsNeeded, NULL));
- pDocs = new ToRelease<ISymUnmanagedDocument>[cDocsNeeded];
- cDocs = cDocsNeeded;
- IfFailRet(m_pSymReader->GetDocuments(cDocs, &cDocsNeeded, &(pDocs[0])));
-
- ULONG32 filenameLen = (ULONG32) _wcslen(pFilename);
-
- for (ULONG32 i = 0; i < cDocs; i++)
- {
- ULONG32 cchUrl = 0;
- ULONG32 cchUrlNeeded = 0;
- ArrayHolder<WCHAR> pUrl = NULL;
- IfFailRet(pDocs[i]->GetURL(cchUrl, &cchUrlNeeded, pUrl));
- pUrl = new WCHAR[cchUrlNeeded];
- cchUrl = cchUrlNeeded;
- IfFailRet(pDocs[i]->GetURL(cchUrl, &cchUrlNeeded, pUrl));
-
- // If the URL is exactly as long as the filename then compare the two names directly
- if (cchUrl-1 == filenameLen)
- {
- if (0!=_wcsicmp(pUrl, pFilename))
- continue;
- }
- // does the URL suffix match [back]slash + filename?
- else if (cchUrl-1 > filenameLen)
- {
- WCHAR* slashLocation = pUrl + (cchUrl - filenameLen - 2);
- if (*slashLocation != L'\\' && *slashLocation != L'/')
- continue;
- if (0 != _wcsicmp(slashLocation+1, pFilename))
- continue;
- }
- // URL is too short to match
- else
- continue;
-
- ULONG32 closestLine = 0;
- if (FAILED(pDocs[i]->FindClosestLine(lineNumber, &closestLine)))
- continue;
-
- ToRelease<ISymUnmanagedMethod> pSymUnmanagedMethod;
- IfFailRet(m_pSymReader->GetMethodFromDocumentPosition(pDocs[i], closestLine, 0, &pSymUnmanagedMethod));
- IfFailRet(pSymUnmanagedMethod->GetToken(pToken));
- IfFailRet(pSymUnmanagedMethod->GetOffset(pDocs[i], closestLine, 0, pIlOffset));
-
- // If this IL
- if (*pIlOffset == -1)
- {
- return E_FAIL;
- }
- return S_OK;
- }
-#endif // FEATURE_PAL
-
- return E_FAIL;
-}
-
static void AddAssemblyName(WString& methodOutput, CLRDATA_ADDRESS mdesc)
{
DacpMethodDescData mdescData;
#include "cordebug.h"
#include "static_assert.h"
+#include "hostcoreclr.h"
typedef LPCSTR LPCUTF8;
typedef LPSTR LPUTF8;
#endif // !FEATURE_PAL
-static const char *SymbolReaderDllName = "SOS.NETCore";
-static const char *SymbolReaderClassName = "SOS.SymbolReader";
-
-typedef int (*ReadMemoryDelegate)(ULONG64, char *, int);
-typedef PVOID (*LoadSymbolsForModuleDelegate)(const char*, BOOL, ULONG64, int, ULONG64, int, ReadMemoryDelegate);
-typedef void (*DisposeDelegate)(PVOID);
-typedef BOOL (*ResolveSequencePointDelegate)(PVOID, const char*, unsigned int, unsigned int*, unsigned int*);
-typedef BOOL (*GetLocalVariableName)(PVOID, int, int, BSTR*);
-typedef BOOL (*GetLineByILOffsetDelegate)(PVOID, mdMethodDef, ULONG64, ULONG *, BSTR*);
-
-class SymbolReader
-{
-private:
-#ifndef FEATURE_PAL
- ISymUnmanagedReader* m_pSymReader;
-#endif
- PVOID m_symbolReaderHandle;
-
- static LoadSymbolsForModuleDelegate loadSymbolsForModuleDelegate;
- static DisposeDelegate disposeDelegate;
- static ResolveSequencePointDelegate resolveSequencePointDelegate;
- static GetLocalVariableName getLocalVariableNameDelegate;
- static GetLineByILOffsetDelegate getLineByILOffsetDelegate;
- static HRESULT PrepareSymbolReader();
-
- HRESULT GetNamedLocalVariable(___in ISymUnmanagedScope* pScope, ___in ICorDebugILFrame* pILFrame, ___in mdMethodDef methodToken, ___in ULONG localIndex,
- __out_ecount(paramNameLen) WCHAR* paramName, ___in ULONG paramNameLen, ___out ICorDebugValue** ppValue);
- HRESULT LoadSymbolsForWindowsPDB(___in IMetaDataImport* pMD, ___in ULONG64 peAddress, __in_z WCHAR* pModuleName, ___in BOOL isFileLayout);
- HRESULT LoadSymbolsForPortablePDB(__in_z WCHAR* pModuleName, ___in BOOL isInMemory, ___in BOOL isFileLayout, ___in ULONG64 peAddress, ___in ULONG64 peSize,
- ___in ULONG64 inMemoryPdbAddress, ___in ULONG64 inMemoryPdbSize);
-
-public:
- SymbolReader()
- {
-#ifndef FEATURE_PAL
- m_pSymReader = NULL;
-#endif
- m_symbolReaderHandle = 0;
- }
-
- ~SymbolReader()
- {
-#ifndef FEATURE_PAL
- if(m_pSymReader != NULL)
- {
- m_pSymReader->Release();
- m_pSymReader = NULL;
- }
-#endif
- if (m_symbolReaderHandle != 0)
- {
- disposeDelegate(m_symbolReaderHandle);
- m_symbolReaderHandle = 0;
- }
- }
-
- HRESULT LoadSymbols(___in IMetaDataImport* pMD, ___in ICorDebugModule* pModule);
- HRESULT LoadSymbols(___in IMetaDataImport* pMD, ___in IXCLRDataModule* pModule);
- HRESULT GetLineByILOffset(___in mdMethodDef MethodToken, ___in ULONG64 IlOffset, ___out ULONG *pLinenum, __out_ecount(cchFileName) WCHAR* pwszFileName, ___in ULONG cchFileName);
- HRESULT GetNamedLocalVariable(___in ICorDebugFrame * pFrame, ___in ULONG localIndex, __out_ecount(paramNameLen) WCHAR* paramName, ___in ULONG paramNameLen, ___out ICorDebugValue** ppValue);
- HRESULT ResolveSequencePoint(__in_z WCHAR* pFilename, ___in ULONG32 lineNumber, ___in TADDR mod, ___out mdMethodDef* ___out pToken, ___out ULONG32* pIlOffset);
-};
-
-HRESULT
-GetLineByOffset(
- ___in ULONG64 IP,
- ___out ULONG *pLinenum,
- __out_ecount(cchFileName) WCHAR* pwszFileName,
- ___in ULONG cchFileName);
-
/// X86 Context
#define X86_SIZE_OF_80387_REGISTERS 80
#define X86_MAXIMUM_SUPPORTED_EXTENSION 512
#include <unknwn.h>
#include <rpc.h>
#include <lldbservices.h>
+#include <arrayholder.h>
#ifdef __cplusplus
extern "C" {
{
va_list args;
va_start (args, format);
- HRESULT result = m_lldbservices->OutputVaList(mask, format, args);
+ HRESULT result = OutputVaList(mask, format, args);
va_end (args);
return result;
}
PCSTR format,
va_list args)
{
- char str[4096];
- int length = _vsnprintf_s(str, sizeof(str), _TRUNCATE, format, args);
+ ArrayHolder<char> str = new char[8192];
+ int length = _vsnprintf_s(str, 8192, _TRUNCATE, format, args);
if (length > 0)
{
- return Output(mask, "%s", str);
+ return m_lldbservices->OutputVaList(mask, str, args);
}
return E_FAIL;
}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Checked|x64">
+ <Configuration>Checked</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="RelWithDebInfo|x64">
+ <Configuration>RelWithDebInfo</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <Text Include="CMakeLists.txt" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="dbgutil.cpp" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A9A7C879-C320-3327-BB84-16E1322E17AE}</ProjectGuid>
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+ <Keyword>Win32Proj</Keyword>
+ <Platform>x64</Platform>
+ <ProjectName>dbgutil</ProjectName>
+ <VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\dbgutil\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">dbgutil.dir\Debug\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">dbgutil</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\dbgutil\Checked\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">dbgutil.dir\Checked\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">dbgutil</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\dbgutil\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">dbgutil.dir\Release\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">dbgutil</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\dbgutil\RelWithDebInfo\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">dbgutil.dir\RelWithDebInfo\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">dbgutil</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">.lib</TargetExt>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8 /homeparams</AdditionalOptions>
+ <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>Disabled</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Checked/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Checked";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"Checked\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Checked";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Release/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>RelWithDebInfo/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"RelWithDebInfo\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Checked|x64">
+ <Configuration>Checked</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="RelWithDebInfo|x64">
+ <Configuration>RelWithDebInfo</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{6A94C5FE-8706-3505-834E-DA16242F3864}</ProjectGuid>
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+ <Keyword>Win32Proj</Keyword>
+ <Platform>x64</Platform>
+ <ProjectName>debugshim</ProjectName>
+ <VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\debugshim\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">debugshim.dir\Debug\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">debugshim</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\debugshim\Checked\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">debugshim.dir\Checked\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">debugshim</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\debugshim\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">debugshim.dir\Release\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">debugshim</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\debugshim\RelWithDebInfo\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">debugshim.dir\RelWithDebInfo\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">debugshim</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">.lib</TargetExt>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8 /homeparams</AdditionalOptions>
+ <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>Disabled</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Checked/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="Checked";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR=\"Checked\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="Checked";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Release/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>RelWithDebInfo/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR=\"RelWithDebInfo\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;HOST_IS_WINDOWS_OS;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="debugshim.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="debugshim.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+ </ImportGroup>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Checked|x64">
+ <Configuration>Checked</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="RelWithDebInfo|x64">
+ <Configuration>RelWithDebInfo</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <Text Include="CMakeLists.txt" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="gcdump.cpp" />
+ <ClCompile Include="gcdumpnonx86.cpp" />
+ <ClCompile Include="gcinfodecoder.cpp" />
+ <ClCompile Include="gcinfodumper.cpp" />
+ <ClCompile Include="i386\gcdumpx86.cpp" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{20EBC3C4-917C-402D-B778-9A6E3742BF5A}</ProjectGuid>
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+ <Keyword>Win32Proj</Keyword>
+ <Platform>x64</Platform>
+ <ProjectName>gcdump</ProjectName>
+ <VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\gcdump\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">gcdump.dir\Debug\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">gcdump</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\gcdump\Checked\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">gcdump.dir\Checked\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">gcdump</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\gcdump\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">gcdump.dir\Release\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">gcdump</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.lib</TargetExt>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">C:\ssd\diagnostics\artifacts\obj\Windows_NT.x64.Debug\src\SOS\gcdump\RelWithDebInfo\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">gcdump.dir\RelWithDebInfo\</IntDir>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">gcdump</TargetName>
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">.lib</TargetExt>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8 /homeparams</AdditionalOptions>
+ <AssemblerListingLocation>Debug/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>Disabled</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Checked|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Checked/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Checked";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"Checked\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Checked";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>Release/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalOptions>%(AdditionalOptions) /d2Zi+ /Zm200 /ZH:SHA_256 /source-charset:utf-8</AdditionalOptions>
+ <AssemblerListingLocation>RelWithDebInfo/</AssemblerListingLocation>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <CompileAs>CompileAsCpp</CompileAs>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4960;4961;4603;4627;4838;4456;4457;4458;4459;4091</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <OmitDefaultLibName>true</OmitDefaultLibName>
+ <OmitFramePointers>false</OmitFramePointers>
+ <Optimization>MinSpace</Optimization>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
+ <StringPooling>true</StringPooling>
+ <StructMemberAlignment>8Bytes</StructMemberAlignment>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TreatSpecificWarningsAsErrors>4640</TreatSpecificWarningsAsErrors>
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <UndefinePreprocessorDefinitions>_MT</UndefinePreprocessorDefinitions>
+ <UseFullPaths>true</UseFullPaths>
+ <WarningLevel>Level3</WarningLevel>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>WIN32;NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR=\"RelWithDebInfo\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <MASM>
+ <PreprocessorDefinitions>NDEBUG;URTBLDENV_FRIENDLY=Retail;_AMD64_;_WIN64;AMD64;BIT64=1;_TARGET_64BIT_=1;_TARGET_AMD64_=1;DBG_TARGET_64BIT=1;DBG_TARGET_AMD64=1;DBG_TARGET_WIN64=1;WIN32;_WIN32;WINVER=0x0602;_WIN32_WINNT=0x0602;WIN32_LEAN_AND_MEAN=1;_CRT_SECURE_NO_WARNINGS;FEATURE_CORESYSTEM;FEATURE_COMINTEROP;FEATURE_HIJACK;_SECURE_SCL=0;CMAKE_INTDIR="RelWithDebInfo";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalOptions>%(AdditionalOptions) /ZH:SHA_256</AdditionalOptions>
+ <IncludePaths>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(IncludePaths)</IncludePaths>
+ </MASM>
+ <Midl>
+ <AdditionalIncludeDirectories>..\..\SOS\dbgutil;..\..\pal\prebuilt\inc;..\..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
+ <HeaderFileName>%(Filename).h</HeaderFileName>
+ <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+ <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+ <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+ </Midl>
+ <Lib>
+ <AdditionalOptions>%(AdditionalOptions) /machine:x64 /IGNORE:4221</AdditionalOptions>
+ <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+ </Lib>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+ </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Text Include="CMakeLists.txt" />
+ </ItemGroup>
+ <ItemGroup>
+ <Filter Include="i386">
+ <UniqueIdentifier>{f850f02d-2875-417b-a6cc-6058817844a0}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="i386\gcdumpx86.cpp">
+ <Filter>i386</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|ARM">
- <Configuration>Debug</Configuration>
- <Platform>ARM</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|ARM">
- <Configuration>Release</Configuration>
- <Platform>ARM</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|ARM64">
- <Configuration>Debug</Configuration>
- <Platform>ARM64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|ARM64">
- <Configuration>Release</Configuration>
- <Platform>ARM64</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x86">
<Configuration>Debug</Configuration>
<Platform>x86</Platform>
<ApplicationTypeRevision>1.0</ApplicationTypeRevision>
<TargetLinuxPlatform>Generic</TargetLinuxPlatform>
<LinuxProjectType>{D51BCBC9-82E9-4017-911E-C93873C4EA2B}</LinuxProjectType>
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
- <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ClCompile Include="sosplugin.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="inc\lldbservices.h" />
<ClInclude Include="mstypes.h" />
<ClInclude Include="services.h" />
<ClInclude Include="sosplugin.h" />
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="services.cpp" />
+ <ClCompile Include="setclrpathcommand.cpp" />
+ <ClCompile Include="setsostidcommand.cpp" />
+ <ClCompile Include="soscommand.cpp" />
+ <ClCompile Include="sosplugin.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="mstypes.h" />
+ <ClInclude Include="services.h" />
+ <ClInclude Include="sosplugin.h" />
+ <ClInclude Include="inc\lldbservices.h">
+ <Filter>inc</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Filter Include="inc">
+ <UniqueIdentifier>{32c8e536-f88f-4485-a168-9f9e9fab5822}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project>
\ No newline at end of file
interpreter.AddCommand("histobjfind", new sosCommand("HistObjFind"), "Displays all the log entries that reference an object at the specified address.");
interpreter.AddCommand("histroot", new sosCommand("HistRoot"), "Displays information related to both promotions and relocations of the specified root.");
interpreter.AddCommand("sethostruntime", new sosCommand("SetHostRuntime"), "Sets or displays the .NET Core runtime directory to use to run managed code in SOS.");
+ interpreter.AddCommand("setsymbolserver", new sosCommand("SetSymbolServer"), "Enables the symbol server support ");
interpreter.AddCommand("soshelp", new sosCommand("Help"), "Displays all available commands when no parameter is specified, or displays detailed help information about the specified command. soshelp <command>");
return true;
}
<RootNamespace>Microsoft.Diagnostics.Tools.Analyze</RootNamespace>
+ <!-- Don't pack until ship engineering is done. Currently causing the official job to fail.
<IsPackable>true</IsPackable>
<PackAsTool>true</PackAsTool>
+ -->
</PropertyGroup>
<ItemGroup>
<RootNamespace>Microsoft.Diagnostics.Tools.Collect</RootNamespace>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <!-- Don't pack until ship engineering is done. Currently causing the official job to fail.
<IsPackable>true</IsPackable>
<PackAsTool>true</PackAsTool>
+ -->
</PropertyGroup>
<ItemGroup>
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
+#ifndef __ARRAYHOLDER_H__
+#define __ARRAYHOLDER_H__
+
template <class T>
class ArrayHolder
{
private:
T *m_ptr;
};
+
+#endif // __ARRAYHOLDER_H__
\ No newline at end of file