From c0f5ecbb7aa783b0f878955964461e60a5f73299 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Wed, 9 Dec 2020 13:15:28 -0500 Subject: [PATCH 1/2] Fix clrstack w^x issues on osx-arm64 --- src/coreclr/vm/dllimportcallback.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/coreclr/vm/dllimportcallback.cpp b/src/coreclr/vm/dllimportcallback.cpp index e33e08849f9795..6945446170e0a0 100644 --- a/src/coreclr/vm/dllimportcallback.cpp +++ b/src/coreclr/vm/dllimportcallback.cpp @@ -1014,6 +1014,9 @@ UMEntryThunk *UMEntryThunkCache::GetUMEntryThunk(MethodDesc *pMD) else { // cache miss -> create a new thunk +#if defined(HOST_OSX) && defined(HOST_ARM64) + auto jitWriteEnableHolder = PAL_JITWriteEnable(true); +#endif // defined(HOST_OSX) && defined(HOST_ARM64) pThunk = UMEntryThunk::CreateUMEntryThunk(); Holder umHolder; umHolder.Assign(pThunk); @@ -1098,6 +1101,10 @@ PCODE TheUMEntryPrestubWorker(UMEntryThunk * pUMEntryThunk) if (pThread->IsAbortRequested()) pThread->HandleThreadAbort(); +#if defined(HOST_OSX) && defined(HOST_ARM64) + auto jitWriteEnableHolder = PAL_JITWriteEnable(true); +#endif // defined(HOST_OSX) && defined(HOST_ARM64) + UMEntryThunk::DoRunTimeInit(pUMEntryThunk); return (PCODE)pUMEntryThunk->GetCode(); From 4c541bba91061f392394b44b88809362e328ef9c Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Wed, 9 Dec 2020 14:37:13 -0500 Subject: [PATCH 2/2] Fix whitespace --- src/coreclr/vm/dllimportcallback.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/vm/dllimportcallback.cpp b/src/coreclr/vm/dllimportcallback.cpp index 6945446170e0a0..2a5c72510f04b6 100644 --- a/src/coreclr/vm/dllimportcallback.cpp +++ b/src/coreclr/vm/dllimportcallback.cpp @@ -1102,7 +1102,7 @@ PCODE TheUMEntryPrestubWorker(UMEntryThunk * pUMEntryThunk) pThread->HandleThreadAbort(); #if defined(HOST_OSX) && defined(HOST_ARM64) - auto jitWriteEnableHolder = PAL_JITWriteEnable(true); + auto jitWriteEnableHolder = PAL_JITWriteEnable(true); #endif // defined(HOST_OSX) && defined(HOST_ARM64) UMEntryThunk::DoRunTimeInit(pUMEntryThunk);