From 85fe3681fbbb7738c97525ef40be2ba9d059c122 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Tue, 22 Jun 2021 15:38:38 -0400 Subject: [PATCH 1/3] Add macosdac command line option --- eng/Subsets.props | 5 +++++ eng/native/configureplatform.cmake | 2 +- src/coreclr/build-runtime.cmd | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 105b34254c6c2b..6db647ef2a817d 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -98,6 +98,7 @@ + @@ -199,6 +200,10 @@ + + + + diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake index 5194317720045f..6245634010079f 100644 --- a/eng/native/configureplatform.cmake +++ b/eng/native/configureplatform.cmake @@ -392,7 +392,7 @@ else() if(NOT (CLR_CMAKE_HOST_OS STREQUAL windows)) message(FATAL_ERROR "Invalid host and target os/arch combination. Host OS: ${CLR_CMAKE_HOST_OS}") endif() - if(NOT (CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_ALPINE_LINUX)) + if(NOT (CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_ALPINE_LINUX OR CLR_CMAKE_TARGET_OSX)) message(FATAL_ERROR "Invalid host and target os/arch combination. Target OS: ${CLR_CMAKE_TARGET_OS}") endif() if(NOT ((CLR_CMAKE_HOST_ARCH_AMD64 AND (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64)) OR (CLR_CMAKE_HOST_ARCH_I386 AND CLR_CMAKE_TARGET_ARCH_ARM))) diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd index 731c255468e831..0295a51ee36bae 100644 --- a/src/coreclr/build-runtime.cmd +++ b/src/coreclr/build-runtime.cmd @@ -132,6 +132,7 @@ if [!__PassThroughArgs!]==[] ( if /i "%1" == "-alpinedac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=alpine&shift&goto Arg_Loop) if /i "%1" == "-linuxdac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=Linux&shift&goto Arg_Loop) +if /i "%1" == "-macosdac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=Darwin&shift&goto Arg_Loop) if /i "%1" == "-cmakeargs" (set __CMakeArgs=%2 %__CMakeArgs%&set "__remainingArgs=!__remainingArgs:*%2=!"&shift&shift&goto Arg_Loop) if /i "%1" == "-configureonly" (set __ConfigureOnly=1&set __BuildNative=1&shift&goto Arg_Loop) From bc419c6d78a319b3fccbed3cb3d21d19e4c25c95 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Tue, 22 Jun 2021 15:40:25 -0400 Subject: [PATCH 2/3] Temporarily disable libunwind for macosdac libunwind needs a handful of structures defined for it to target macos. Perhaps it should be using the mac libunwind code tree Disable till this get resolved. --- src/coreclr/CMakeLists.txt | 4 ++-- src/coreclr/debug/daccess/dacfn.cpp | 8 ++++++++ src/coreclr/dlls/mscordac/CMakeLists.txt | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/coreclr/CMakeLists.txt b/src/coreclr/CMakeLists.txt index 78aa969473525d..71490d48733f3a 100644 --- a/src/coreclr/CMakeLists.txt +++ b/src/coreclr/CMakeLists.txt @@ -109,9 +109,9 @@ if(CLR_CMAKE_HOST_UNIX) add_subdirectory(pal) add_subdirectory(hosts) else(CLR_CMAKE_HOST_UNIX) - if(CLR_CMAKE_TARGET_UNIX) + if(CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_OSX) add_subdirectory(pal/src/libunwind) - endif(CLR_CMAKE_TARGET_UNIX) + endif(CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_OSX) endif(CLR_CMAKE_HOST_UNIX) # Add this subdir. We install the headers for the jit. diff --git a/src/coreclr/debug/daccess/dacfn.cpp b/src/coreclr/debug/daccess/dacfn.cpp index 2aad5dcdfdfc65..e4d5a840bab7f6 100644 --- a/src/coreclr/debug/daccess/dacfn.cpp +++ b/src/coreclr/debug/daccess/dacfn.cpp @@ -251,6 +251,14 @@ typedef BOOL(*UnwindReadMemoryCallback)(PVOID address, PVOID buffer, SIZE_T size extern BOOL PAL_VirtualUnwindOutOfProc(PT_CONTEXT context, PT_KNONVOLATILE_CONTEXT_POINTERS contextPointers, SIZE_T baseAddress, UnwindReadMemoryCallback readMemoryCallback); + +#ifdef TARGET_OSX +BOOL PAL_VirtualUnwindOutOfProc(PT_CONTEXT context, PT_KNONVOLATILE_CONTEXT_POINTERS contextPointers, SIZE_T baseAddress, UnwindReadMemoryCallback readMemoryCallback) +{ + return false; +} +#endif // TARGET_OSX + #endif HRESULT diff --git a/src/coreclr/dlls/mscordac/CMakeLists.txt b/src/coreclr/dlls/mscordac/CMakeLists.txt index 9dd3329a230487..3279ca6493c564 100644 --- a/src/coreclr/dlls/mscordac/CMakeLists.txt +++ b/src/coreclr/dlls/mscordac/CMakeLists.txt @@ -178,11 +178,11 @@ else(CLR_CMAKE_HOST_WIN32) ) endif(CLR_CMAKE_HOST_WIN32) -if(CLR_CMAKE_HOST_WIN32 AND CLR_CMAKE_TARGET_UNIX) +if(CLR_CMAKE_HOST_WIN32 AND CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_OSX) list(APPEND COREDAC_LIBRARIES libunwind_xdac ) -endif(CLR_CMAKE_HOST_WIN32 AND CLR_CMAKE_TARGET_UNIX) +endif(CLR_CMAKE_HOST_WIN32 AND CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_OSX) if(CLR_CMAKE_HOST_UNIX) list(APPEND COREDAC_LIBRARIES From cd7f2569d57812098d9cd6d16091a8ff2e47cee8 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Tue, 22 Jun 2021 16:01:44 -0400 Subject: [PATCH 3/3] Temporarily replace machoreader with elfreader for macosdac --- src/coreclr/debug/dbgutil/CMakeLists.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/coreclr/debug/dbgutil/CMakeLists.txt b/src/coreclr/debug/dbgutil/CMakeLists.txt index 91f41404221df3..a41e6bf59b7ba8 100644 --- a/src/coreclr/debug/dbgutil/CMakeLists.txt +++ b/src/coreclr/debug/dbgutil/CMakeLists.txt @@ -25,10 +25,16 @@ if(CLR_CMAKE_TARGET_LINUX) ) endif(CLR_CMAKE_TARGET_LINUX) -if(CLR_CMAKE_TARGET_OSX) +if(CLR_CMAKE_TARGET_OSX AND CLR_CMAKE_HOST_OSX) list(APPEND DBGUTIL_SOURCES machoreader.cpp ) -endif(CLR_CMAKE_TARGET_OSX) +endif(CLR_CMAKE_TARGET_OSX AND CLR_CMAKE_HOST_OSX) + +if(CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_HOST_OSX) + list(APPEND DBGUTIL_SOURCES + elfreader.cpp + ) +endif(CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_HOST_OSX) add_library_clr(dbgutil STATIC ${DBGUTIL_SOURCES})