diff options
34 files changed, 223 insertions, 8 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 30b8a199a9..35914f2f10 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,6 +30,7 @@ add_subdirectory(strongname) add_subdirectory(binder) add_subdirectory(classlibnative) add_subdirectory(dlls) +add_subdirectory(unwinder) if(WIN32) add_subdirectory(ipcman) diff --git a/src/debug/daccess/CMakeLists.txt b/src/debug/daccess/CMakeLists.txt index 92dce0ef0e..5c012ce13f 100644 --- a/src/debug/daccess/CMakeLists.txt +++ b/src/debug/daccess/CMakeLists.txt @@ -38,9 +38,7 @@ if(IS_64BIT_BUILD EQUAL 1) set(DACCESS_SOURCES ${DACCESS_SOURCES} - unwinder.cpp amd64/primitives.cpp - amd64/unwinder_amd64.cpp ) else(IS_64BIT_BUILD EQUAL 1) set(DACCESS_SOURCES diff --git a/src/debug/daccess/daccess.targets b/src/debug/daccess/daccess.targets index 7aacdc302c..a7d9e41554 100644 --- a/src/debug/daccess/daccess.targets +++ b/src/debug/daccess/daccess.targets @@ -58,15 +58,9 @@ </ItemGroup> <ItemGroup> <CppCompile Condition="'$(TargetArch)' == 'i386'" Include="$(DaccessSrcDirectory)\i386\primitives.cpp" /> - <CppCompile Condition="'$(TargetArch)' == 'amd64'" Include="$(DaccessSrcDirectory)\unwinder.cpp" /> - <CppCompile Condition="'$(TargetArch)' == 'amd64'" Include="$(DaccessSrcDirectory)\amd64\unwinder_amd64.cpp" /> <CppCompile Condition="'$(TargetArch)' == 'amd64'" Include="$(DaccessSrcDirectory)\amd64\primitives.cpp" /> <CppCompile Condition="'$(TargetArch)' == 'arm'" Include="$(DaccessSrcDirectory)\arm\primitives.cpp" /> - <CppCompile Condition="'$(TargetArch)' == 'arm'" Include="$(DaccessSrcDirectory)\arm\unwinder_arm.cpp" /> - <CppCompile Condition="'$(TargetArch)' == 'arm'" Include="$(DaccessSrcDirectory)\unwinder.cpp" /> <CppCompile Condition="'$(TargetArch)' == 'arm64'" Include="$(DaccessSrcDirectory)\arm64\primitives.cpp" /> - <CppCompile Condition="'$(TargetArch)' == 'arm64'" Include="$(DaccessSrcDirectory)\arm64\unwinder_arm64.cpp" /> - <CppCompile Condition="'$(TargetArch)' == 'arm64'" Include="$(DaccessSrcDirectory)\unwinder.cpp" /> </ItemGroup> <!--Import the targets--> <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\clr.targets" /> diff --git a/src/dirs.proj b/src/dirs.proj index d5df279b42..3599b7912b 100644 --- a/src/dirs.proj +++ b/src/dirs.proj @@ -40,6 +40,7 @@ <ProjectFile Include="gcinfo\dirs.proj" /> <ProjectFile Include="delayimp\delayimp.nativeproj" Condition="'$(BuildProjectName)' != 'CoreSys'"/> <ProjectFile Include="dlls\dirs.proj" /> + <ProjectFile Include="unwinder\dirs.proj" Condition="'$(TargetArch)' != 'i386'" /> <!-- In FXMain we build RyuJIT only for amd64 and arm64 --> <ProjectFile Include="jit32\dirs.proj" Condition="'$(BuildArchitecture)' != 'amd64' and '$(BuildArchitecture)' != 'arm64'"/> diff --git a/src/dlls/mscordac/CMakeLists.txt b/src/dlls/mscordac/CMakeLists.txt index 057288c747..527cf341b5 100644 --- a/src/dlls/mscordac/CMakeLists.txt +++ b/src/dlls/mscordac/CMakeLists.txt @@ -37,6 +37,7 @@ set(COREDAC_LIBRARIES mdruntimerw_dac strongname_dac utilcode_dac + unwinder_dac ) if(WIN32) diff --git a/src/dlls/mscordac/mscordac.targets b/src/dlls/mscordac/mscordac.targets index 8c41f106f7..3e0474f9a8 100644 --- a/src/dlls/mscordac/mscordac.targets +++ b/src/dlls/mscordac/mscordac.targets @@ -77,6 +77,9 @@ <TargetLib Include="$(ClrLibPath)\strongname_dac$(XPlatHostLibSuffix).lib"> <ProjectReference>$(ClrSrcDirectory)StrongName\api\dac\$(XPlatHostLibBuildDir)\strongname_dac.nativeproj</ProjectReference> </TargetLib> + <TargetLib Condition="'$(TargetArch)' != 'i386'" Include="$(ClrLibPath)\unwinder_dac$(XPlatHostLibSuffix).lib"> + <ProjectReference>$(ClrSrcDirectory)unwinder\dac\$(XPlatHostLibBuildDir)\unwinder_dac.nativeproj</ProjectReference> + </TargetLib> <TargetLib Include="$(ClrLibPath)\dbgutil$(XPlatHostLibSuffix).lib"> <ProjectReference>$(ClrSrcDirectory)debug\dbgutil\$(XPlatHostLibBuildDir)\dbgutil.nativeproj</ProjectReference> </TargetLib> diff --git a/src/unwinder/.gitmirror b/src/unwinder/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/unwinder/CMakeLists.txt b/src/unwinder/CMakeLists.txt new file mode 100644 index 0000000000..0ed0160b8a --- /dev/null +++ b/src/unwinder/CMakeLists.txt @@ -0,0 +1,22 @@ +include_directories(BEFORE ${VM_DIR}) +include_directories(BEFORE ${VM_DIR}/${ARCH_SOURCES_DIR}) +include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}) +include_directories(BEFORE ${CLR_DIR}/src/unwinder) +include_directories(${CLR_DIR}/src/debug/ee) +include_directories(${CLR_DIR}/src/gc) +include_directories(${CLR_DIR}/src/gcdump) +include_directories(${CLR_DIR}/src/debug/daccess) + +if(IS_64BIT_BUILD EQUAL 1) + include_directories(amd64) + + set(UNWINDER_SOURCES + unwinder.cpp + amd64/unwinder_amd64.cpp + ) + + convert_to_absolute_path(UNWINDER_SOURCES ${UNWINDER_SOURCES}) + + add_subdirectory(dac) +endif(IS_64BIT_BUILD EQUAL 1) + diff --git a/src/unwinder/amd64/.gitmirror b/src/unwinder/amd64/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/amd64/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/debug/daccess/amd64/dbs_stack_x64.cpp b/src/unwinder/amd64/dbs_stack_x64.cpp index 83f2a00abf..83f2a00abf 100644 --- a/src/debug/daccess/amd64/dbs_stack_x64.cpp +++ b/src/unwinder/amd64/dbs_stack_x64.cpp diff --git a/src/debug/daccess/amd64/unwinder_amd64.cpp b/src/unwinder/amd64/unwinder_amd64.cpp index de7f94f977..de7f94f977 100644 --- a/src/debug/daccess/amd64/unwinder_amd64.cpp +++ b/src/unwinder/amd64/unwinder_amd64.cpp diff --git a/src/debug/daccess/amd64/unwinder_amd64.h b/src/unwinder/amd64/unwinder_amd64.h index 4c0bd46529..4c0bd46529 100644 --- a/src/debug/daccess/amd64/unwinder_amd64.h +++ b/src/unwinder/amd64/unwinder_amd64.h diff --git a/src/unwinder/arm/.gitmirror b/src/unwinder/arm/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/arm/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/debug/daccess/arm/unwinder_arm.cpp b/src/unwinder/arm/unwinder_arm.cpp index c2463f58f7..c2463f58f7 100644 --- a/src/debug/daccess/arm/unwinder_arm.cpp +++ b/src/unwinder/arm/unwinder_arm.cpp diff --git a/src/debug/daccess/arm/unwinder_arm.h b/src/unwinder/arm/unwinder_arm.h index 7eb5d7a065..7eb5d7a065 100644 --- a/src/debug/daccess/arm/unwinder_arm.h +++ b/src/unwinder/arm/unwinder_arm.h diff --git a/src/unwinder/arm64/.gitmirror b/src/unwinder/arm64/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/arm64/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/debug/daccess/arm64/unwinder_arm64.cpp b/src/unwinder/arm64/unwinder_arm64.cpp index a56e42469e..a56e42469e 100644 --- a/src/debug/daccess/arm64/unwinder_arm64.cpp +++ b/src/unwinder/arm64/unwinder_arm64.cpp diff --git a/src/debug/daccess/arm64/unwinder_arm64.h b/src/unwinder/arm64/unwinder_arm64.h index 7396e85e26..7396e85e26 100644 --- a/src/debug/daccess/arm64/unwinder_arm64.h +++ b/src/unwinder/arm64/unwinder_arm64.h diff --git a/src/unwinder/dac/.gitmirror b/src/unwinder/dac/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/dac/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/unwinder/dac/CMakeLists.txt b/src/unwinder/dac/CMakeLists.txt new file mode 100644 index 0000000000..e82046197c --- /dev/null +++ b/src/unwinder/dac/CMakeLists.txt @@ -0,0 +1,10 @@ +include(${CLR_DIR}/dac.cmake) + +add_definitions(-DFEATURE_NO_HOST) +add_definitions(-D_TARGET_AMD64_=1) +add_definitions(-DDBG_TARGET_64BIT=1) +add_definitions(-DDBG_TARGET_AMD64=1) +add_definitions(-DDBG_TARGET_WIN64=1) +add_definitions(-D_WIN64=1) + +add_library(unwinder_dac ${UNWINDER_SOURCES}) diff --git a/src/unwinder/dac/dirs.proj b/src/unwinder/dac/dirs.proj new file mode 100644 index 0000000000..77738732ed --- /dev/null +++ b/src/unwinder/dac/dirs.proj @@ -0,0 +1,18 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <!--Import the settings--> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\clr.props" /> + + <PropertyGroup> + <BuildInPhase1>true</BuildInPhase1> + <BuildInPhaseDefault>false</BuildInPhaseDefault> + <BuildCoreBinaries>true</BuildCoreBinaries> + <BuildSysBinaries>true</BuildSysBinaries> + </PropertyGroup> + + <!--The following projects will build during PHASE 1--> + <ItemGroup Condition="'$(BuildExePhase)' == '1'"> + <ProjectFile Include="hostlocal\unwinder_dac.nativeproj" /> + </ItemGroup> + + <Import Project="$(_NTDRIVE)$(_NTROOT)\tools\Microsoft.DevDiv.Traversal.targets" /> +</Project> diff --git a/src/unwinder/dac/hostlocal/.gitmirror b/src/unwinder/dac/hostlocal/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/dac/hostlocal/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/unwinder/dac/hostlocal/unwinder_dac.nativeproj b/src/unwinder/dac/hostlocal/unwinder_dac.nativeproj new file mode 100644 index 0000000000..3b562e07f9 --- /dev/null +++ b/src/unwinder/dac/hostlocal/unwinder_dac.nativeproj @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <PropertyGroup> + <BuildCoreBinaries>true</BuildCoreBinaries> + <BuildSysBinaries>true</BuildSysBinaries> + <OutputName>unwinder_dac</OutputName> + </PropertyGroup> + + <!-- compile items --> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\src\unwinder\unwinder.targets" /> + +</Project> diff --git a/src/unwinder/dac/hostwinamd64/.gitmirror b/src/unwinder/dac/hostwinamd64/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/dac/hostwinamd64/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/unwinder/dac/hostwinamd64/CMakeLists.txt b/src/unwinder/dac/hostwinamd64/CMakeLists.txt new file mode 100644 index 0000000000..66a595f033 --- /dev/null +++ b/src/unwinder/dac/hostwinamd64/CMakeLists.txt @@ -0,0 +1,5 @@ +remove_definitions(-DPROFILING_SUPPORTED) +add_definitions(-DPROFILING_SUPPORTED_DATA) +add_definitions(-DDACCESS_COMPILE) + +add_library(unwinder_dac_amd64 ${UNWINDER_SOURCES}) diff --git a/src/unwinder/dac/hostwinamd64/unwinder_dac.nativeproj b/src/unwinder/dac/hostwinamd64/unwinder_dac.nativeproj new file mode 100644 index 0000000000..e0dff469a4 --- /dev/null +++ b/src/unwinder/dac/hostwinamd64/unwinder_dac.nativeproj @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!-- xplat Windows host, local target DAC build --> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\xplat\SetTargetLocal.props" /> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\xplat\SetHostWinAMD64.props" /> + <PropertyGroup> + <BuildSysBinaries>true</BuildSysBinaries> + <OutputName>unwinder_dac_amd64</OutputName> + </PropertyGroup> + + <!-- compile items --> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\src\unwinder\unwinder.targets" /> + +</Project> diff --git a/src/unwinder/dac/hostwinx86/.gitmirror b/src/unwinder/dac/hostwinx86/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/unwinder/dac/hostwinx86/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/unwinder/dac/hostwinx86/unwinder_dac.nativeproj b/src/unwinder/dac/hostwinx86/unwinder_dac.nativeproj new file mode 100644 index 0000000000..a3538c3383 --- /dev/null +++ b/src/unwinder/dac/hostwinx86/unwinder_dac.nativeproj @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!-- xplat win32 host, local target DAC build --> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\xplat\SetTargetLocal.props" /> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\xplat\SetHostWinx86.props" /> + <PropertyGroup> + <BuildSysBinaries>true</BuildSysBinaries> + <OutputName>unwinder_dac_x86</OutputName> + </PropertyGroup> + + <!-- compile items --> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\src\unwinder\unwinder.targets" /> + +</Project> diff --git a/src/unwinder/dirs.proj b/src/unwinder/dirs.proj new file mode 100644 index 0000000000..8b511971e3 --- /dev/null +++ b/src/unwinder/dirs.proj @@ -0,0 +1,19 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <!--Import the settings--> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\clr.props" /> + + <PropertyGroup> + <BuildInPhase1>true</BuildInPhase1> + <BuildInPhaseDefault>false</BuildInPhaseDefault> + <BuildCoreBinaries>true</BuildCoreBinaries> + <BuildSysBinaries>true</BuildSysBinaries> + </PropertyGroup> + + <!--The following projects will build during PHASE 1--> + <ItemGroup Condition="'$(BuildExePhase)' == '1'"> + <ProjectFile Include="dac\dirs.proj" /> + </ItemGroup> + + <!--Import the targets--> + <Import Project="$(_NTDRIVE)$(_NTROOT)\tools\Microsoft.DevDiv.Traversal.targets" /> +</Project> diff --git a/src/unwinder/stdafx.cpp b/src/unwinder/stdafx.cpp new file mode 100644 index 0000000000..184cc8de11 --- /dev/null +++ b/src/unwinder/stdafx.cpp @@ -0,0 +1,13 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// +//***************************************************************************** +// File: stdafx.cpp +// + +// +// Host for precompiled headers. +// +//***************************************************************************** +#include "stdafx.h" // Precompiled header key. diff --git a/src/unwinder/stdafx.h b/src/unwinder/stdafx.h new file mode 100644 index 0000000000..840877ea5b --- /dev/null +++ b/src/unwinder/stdafx.h @@ -0,0 +1,19 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// +//***************************************************************************** +// File: stdafx.h +// + +// Prevent the inclusion of Random.h from disabling rand(). rand() is used by some other headers we include +// and there's no reason why DAC should be forbidden from using it. +#define DO_NOT_DISABLE_RAND + +#define USE_COM_CONTEXT_DEF + +#include <common.h> +#include <debugger.h> +#include <methoditer.h> +#include <dacprivate.h> +#include <dacimpl.h> diff --git a/src/debug/daccess/unwinder.cpp b/src/unwinder/unwinder.cpp index 6431a83ea8..6431a83ea8 100644 --- a/src/debug/daccess/unwinder.cpp +++ b/src/unwinder/unwinder.cpp diff --git a/src/debug/daccess/unwinder.h b/src/unwinder/unwinder.h index 21d64eae3f..21d64eae3f 100644 --- a/src/debug/daccess/unwinder.h +++ b/src/unwinder/unwinder.h diff --git a/src/unwinder/unwinder.targets b/src/unwinder/unwinder.targets new file mode 100644 index 0000000000..18cd2bfa7c --- /dev/null +++ b/src/unwinder/unwinder.targets @@ -0,0 +1,60 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!--Import the settings--> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\clr.props" /> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\dac.props" /> + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\src\debug\SetDebugTargetLocal.props" /> + <!--Leaf project Properties--> + <PropertyGroup> + <UseStl Condition="'$(BuildForCoreSystem)' != 'true'">true</UseStl> + + <UserIncludes> + $(UserIncludes); + $(ClrSrcDirectory)\unwinder; + $(ClrSrcDirectory)\debug\daccess; + $(ClrSrcDirectory)\vm; + $(ClrSrcDirectory)\vm\$(TargetCpu); + $(ClrSrcDirectory)\debug\inc; + $(ClrSrcDirectory)\debug\inc\$(TargetCpu); + $(ClrSrcDirectory)\debug\inc\dump; + $(ClrSrcDirectory)\debug\ee; + $(ClrSrcDirectory)\inc; + $(VCToolsIncPath); + </UserIncludes> + + <CDefines>$(CDefines);UNICODE;_UNICODE;$(USER_SPECIFIC_C_DEFINES);FEATURE_NO_HOST</CDefines> + + <OutputName Condition="'$(OutputName)' == ''">unwinder_dac</OutputName> + <OutputPath>$(ClrLibDest)</OutputPath> + <TargetType>LIBRARY</TargetType> + <PCHHeader>stdafx.h</PCHHeader> + <EnableCxxPCHHeaders>true</EnableCxxPCHHeaders> + <PCHCompile>$(ClrSrcDirectory)\unwinder\stdafx.cpp</PCHCompile> + + <UnwinderSourcesDir>$(ClrSrcDirectory)\unwinder</UnwinderSourcesDir> + <Amd64SourcesDir>$(ClrSrcDirectory)\unwinder\amd64</Amd64SourcesDir> + <ArmSourcesDir>$(ClrSrcDirectory)\unwinder\arm</ArmSourcesDir> + <Arm64SourcesDir>$(ClrSrcDirectory)\unwinder\arm64</Arm64SourcesDir> + </PropertyGroup> + + <ItemGroup> + <CppCompile Include="$(UnwinderSourcesDir)\unwinder.cpp" /> + </ItemGroup> + + <!-- AMD64_SOURCES --> + <ItemGroup Condition="'$(TargetArch)' == 'amd64'"> + <CppCompile Include="$(Amd64SourcesDir)\unwinder_amd64.cpp" /> + </ItemGroup> + <!-- ARM_SOURCES --> + <ItemGroup Condition="'$(TargetArch)' == 'arm'"> + <CppCompile Include="$(ArmSourcesDir)\unwinder_arm.cpp" /> + </ItemGroup> + <!-- ARM64_SOURCES --> + <ItemGroup Condition="'$(TargetArch)' == 'arm64'"> + <CppCompile Include="$(Arm64SourcesDir)\unwinder_arm64.cpp" /> + </ItemGroup> + + <Import Project="$(Clrbase)\clr.targets" /> + +</Project> + |