From 93b43207c790b552bcdf099ca867d661d2b87474 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 21 Aug 2024 05:49:35 +0200 Subject: [PATCH 1/2] Add missing .alt_entry to CoreCLR *_FakeProlog methods --- src/coreclr/vm/arm64/asmhelpers.S | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/coreclr/vm/arm64/asmhelpers.S b/src/coreclr/vm/arm64/asmhelpers.S index ebfefd693f0744..6a3040c70dd5ff 100644 --- a/src/coreclr/vm/arm64/asmhelpers.S +++ b/src/coreclr/vm/arm64/asmhelpers.S @@ -607,8 +607,12 @@ NESTED_END ResolveWorkerAsmStub, _TEXT #ifdef FEATURE_READYTORUN NESTED_ENTRY DelayLoad_MethodCall_FakeProlog, _TEXT, NoHandler -C_FUNC(DelayLoad_MethodCall): +#if defined(__APPLE__) + .alt_entry C_FUNC(DelayLoad_MethodCall) +#endif .global C_FUNC(DelayLoad_MethodCall) +C_FUNC(DelayLoad_MethodCall): + PROLOG_WITH_TRANSITION_BLOCK add x0, sp, #__PWTB_TransitionBlock // pTransitionBlock @@ -627,8 +631,11 @@ NESTED_END DelayLoad_MethodCall_FakeProlog, _TEXT .macro DynamicHelper frameFlags, suffix NESTED_ENTRY DelayLoad_Helper\suffix\()_FakeProlog, _TEXT, NoHandler -C_FUNC(DelayLoad_Helper\suffix): +#if defined(__APPLE__) + .alt_entry C_FUNC(DelayLoad_Helper\suffix) +#endif .global C_FUNC(DelayLoad_Helper\suffix) +C_FUNC(DelayLoad_Helper\suffix): PROLOG_WITH_TRANSITION_BLOCK From 030ac253df37aff8df925e1ead6fe660a7575e89 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 10 Aug 2024 11:23:19 +0200 Subject: [PATCH 2/2] Use .alt_entry on Apple platforms --- src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc | 5 +++++ src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc | 5 ++++- src/coreclr/pal/inc/unixasmmacrosarm64.inc | 5 +++++ src/coreclr/vm/arm64/asmhelpers.S | 3 +-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc index e37614b660c32f..b1a437d8b57ead 100644 --- a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc +++ b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc @@ -33,7 +33,12 @@ C_FUNC(\Name): .endm .macro ALTERNATE_ENTRY Name +#if defined(__APPLE__) + .alt_entry C_FUNC(\Name) + .private_extern C_FUNC(\Name) +#else .global C_FUNC(\Name) +#endif C_FUNC(\Name): .endm diff --git a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc index fc19d451640f43..a02a770aa3b0af 100644 --- a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc +++ b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosarm64.inc @@ -24,8 +24,11 @@ C_FUNC(\Name): .endm .macro ALTERNATE_ENTRY Name +#if defined(__APPLE__) + .alt_entry C_FUNC(\Name) + .private_extern C_FUNC(\Name) +#else .global C_FUNC(\Name) -#if !defined(__APPLE__) .hidden C_FUNC(\Name) #endif C_FUNC(\Name): diff --git a/src/coreclr/pal/inc/unixasmmacrosarm64.inc b/src/coreclr/pal/inc/unixasmmacrosarm64.inc index 976cc825f2eb40..4997e18b39858a 100644 --- a/src/coreclr/pal/inc/unixasmmacrosarm64.inc +++ b/src/coreclr/pal/inc/unixasmmacrosarm64.inc @@ -17,7 +17,12 @@ .endm .macro PATCH_LABEL Name +#if defined(__APPLE__) + .alt_entry C_FUNC(\Name) + .private_extern C_FUNC(\Name) +#else .global C_FUNC(\Name) +#endif C_FUNC(\Name): .endm diff --git a/src/coreclr/vm/arm64/asmhelpers.S b/src/coreclr/vm/arm64/asmhelpers.S index 6a3040c70dd5ff..48c91e65a098de 100644 --- a/src/coreclr/vm/arm64/asmhelpers.S +++ b/src/coreclr/vm/arm64/asmhelpers.S @@ -176,8 +176,7 @@ NESTED_END ThePreStub, _TEXT LEAF_ENTRY ThePreStubPatch, _TEXT nop -.globl C_FUNC(ThePreStubPatchLabel) -C_FUNC(ThePreStubPatchLabel): +PATCH_LABEL ThePreStubPatchLabel ret lr LEAF_END ThePreStubPatch, _TEXT