From 6f267172b9be51ecd43492e8e3b3182fc7af14e0 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 21 Aug 2024 05:49:35 +0200 Subject: [PATCH 1/3] 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 f766b9691278e0..8c441a8d8847ec 100644 --- a/src/coreclr/vm/arm64/asmhelpers.S +++ b/src/coreclr/vm/arm64/asmhelpers.S @@ -818,8 +818,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 @@ -838,8 +842,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 bf61adce9f7de52b9ff6cdbf5c94d9aadeacb9ea Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 10 Aug 2024 11:23:19 +0200 Subject: [PATCH 2/3] 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 11225c0ad5ed2b..1c8432b65299a0 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 5bd5db64e983ae..55882541c9c57c 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 8c441a8d8847ec..2353bf856a0d78 100644 --- a/src/coreclr/vm/arm64/asmhelpers.S +++ b/src/coreclr/vm/arm64/asmhelpers.S @@ -169,8 +169,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 From b6199b9a6bc077756f7a67ef8dccd02962a21766 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Fri, 17 Jan 2025 11:48:05 +0100 Subject: [PATCH 3/3] Remove explicit __compact_unwind entries from x64 assembler --- .../nativeaot/Runtime/unix/unixasmmacrosamd64.inc | 9 --------- src/coreclr/pal/inc/unixasmmacrosamd64.inc | 9 --------- 2 files changed, 18 deletions(-) diff --git a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc index 1c8432b65299a0..f6815cf76ad7d6 100644 --- a/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc +++ b/src/coreclr/nativeaot/Runtime/unix/unixasmmacrosamd64.inc @@ -16,15 +16,6 @@ .macro NESTED_END Name, Section LEAF_END \Name, \Section -#if defined(__APPLE__) - .set LOCAL_LABEL(\Name\()_Size), . - C_FUNC(\Name) - .section __LD,__compact_unwind,regular,debug - .quad C_FUNC(\Name) - .long LOCAL_LABEL(\Name\()_Size) - .long 0x04000000 # DWARF - .quad 0 - .quad 0 -#endif .endm .macro PATCH_LABEL Name diff --git a/src/coreclr/pal/inc/unixasmmacrosamd64.inc b/src/coreclr/pal/inc/unixasmmacrosamd64.inc index bb1e70a27bef02..caa6a0246fda4e 100644 --- a/src/coreclr/pal/inc/unixasmmacrosamd64.inc +++ b/src/coreclr/pal/inc/unixasmmacrosamd64.inc @@ -14,15 +14,6 @@ .macro NESTED_END Name, Section LEAF_END \Name, \Section -#if defined(__APPLE__) - .set LOCAL_LABEL(\Name\()_Size), . - C_FUNC(\Name) - .section __LD,__compact_unwind,regular,debug - .quad C_FUNC(\Name) - .long LOCAL_LABEL(\Name\()_Size) - .long 0x04000000 # DWARF - .quad 0 - .quad 0 -#endif .endm .macro PATCH_LABEL Name