diff options
author | Mikael Simberg <mikael.simberg@iki.fi> | 2023-05-04 09:56:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-04 09:56:02 +0200 |
commit | 3bfd948ec84e320c1a06ab4af272c629fe0126de (patch) | |
tree | 328f5f9edbc6605ed669ec2d270d5fea80f5b628 /var | |
parent | 58e527935c1e078d655f0c1330223c14cb0aa587 (diff) | |
download | spack-3bfd948ec84e320c1a06ab4af272c629fe0126de.tar.gz spack-3bfd948ec84e320c1a06ab4af272c629fe0126de.tar.bz2 spack-3bfd948ec84e320c1a06ab4af272c629fe0126de.tar.xz spack-3bfd948ec84e320c1a06ab4af272c629fe0126de.zip |
Add patches for generic context coroutine stack allocation in pika on macos (#37288)
Diffstat (limited to 'var')
6 files changed, 73 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/pika/generic_context_allocate_guard_0_10_12.patch b/var/spack/repos/builtin/packages/pika/generic_context_allocate_guard_0_10_12.patch new file mode 100644 index 0000000000..64c691668e --- /dev/null +++ b/var/spack/repos/builtin/packages/pika/generic_context_allocate_guard_0_10_12.patch @@ -0,0 +1,15 @@ +diff --git a/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp b/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp +index a26314a0..38d4e7f1 100644 +--- a/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp ++++ b/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp +@@ -92,9 +92,7 @@ namespace pika::threads::coroutines { + + void* allocate(std::size_t size) const + { +-#if defined(_POSIX_VERSION) && \ +- !(defined(__APPLE__) && \ +- (defined(arm64) || defined(__arm64) || defined(__arm64__))) ++#if defined(_POSIX_VERSION) + void* limit = posix::alloc_stack(size); + posix::watermark_stack(limit, size); + #else diff --git a/var/spack/repos/builtin/packages/pika/generic_context_allocate_guard_0_13_14.patch b/var/spack/repos/builtin/packages/pika/generic_context_allocate_guard_0_13_14.patch new file mode 100644 index 0000000000..dccb490b0c --- /dev/null +++ b/var/spack/repos/builtin/packages/pika/generic_context_allocate_guard_0_13_14.patch @@ -0,0 +1,14 @@ +diff --git a/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp b/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp +index 79eabdb7a..0a6028ae8 100644 +--- a/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp ++++ b/libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp +@@ -91,8 +91,7 @@ namespace pika::threads::coroutines { + + void* allocate(std::size_t size) const + { +-# if defined(_POSIX_VERSION) && \ +- !(defined(__APPLE__) && (defined(arm64) || defined(__arm64) || defined(__arm64__))) ++# if defined(_POSIX_VERSION) + void* limit = posix::alloc_stack(size); + posix::watermark_stack(limit, size); + # else diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index e22691a415..7fbaabba31 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -144,6 +144,11 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): # Patches patch("transform_mpi_includes.patch", when="@0.3.0 +mpi") patch("mimalloc_no_version_requirement.patch", when="@:0.5 malloc=mimalloc") + patch("generic_context_allocate_guard_0_13_14.patch", when="@0.13:0.14 platform=darwin") + patch("generic_context_allocate_guard_0_10_12.patch", when="@0.10:0.12 platform=darwin") + patch("posix_stack_non_executable_0_13.patch", when="@0.13 platform=darwin") + patch("posix_stack_non_executable_0_6_0_12.patch", when="@0.6:0.12 platform=darwin") + patch("posix_stack_non_executable_0_1_0_5.patch", when="@:0.5 platform=darwin") # Fix missing template instantiation on macOS patch( diff --git a/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_13.patch b/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_13.patch new file mode 100644 index 0000000000..77e70f8acc --- /dev/null +++ b/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_13.patch @@ -0,0 +1,13 @@ +diff --git a/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp b/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp +index 107fe781..be52d9c9 100644 +--- a/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp ++++ b/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp +@@ -77,7 +77,7 @@ namespace pika::threads::coroutines::detail::posix { + + inline void* alloc_stack(std::size_t size) + { +- void* real_stack = ::mmap(nullptr, size + EXEC_PAGESIZE, PROT_EXEC | PROT_READ | PROT_WRITE, ++ void* real_stack = ::mmap(nullptr, size + EXEC_PAGESIZE, PROT_READ | PROT_WRITE, + # if defined(__APPLE__) + MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, + # elif defined(__FreeBSD__) diff --git a/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_1_0_5.patch b/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_1_0_5.patch new file mode 100644 index 0000000000..8b5eae3057 --- /dev/null +++ b/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_1_0_5.patch @@ -0,0 +1,13 @@ +diff --git a/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp b/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp +index aba1863d..bdbddd2f 100644 +--- a/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp ++++ b/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp +@@ -80,7 +80,7 @@ namespace pika { namespace threads { namespace coroutines { namespace detail { + inline void* alloc_stack(std::size_t size) + { + void* real_stack = ::mmap(nullptr, size + EXEC_PAGESIZE, +- PROT_EXEC | PROT_READ | PROT_WRITE, ++ PROT_READ | PROT_WRITE, + #if defined(__APPLE__) + MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, + #elif defined(__FreeBSD__) diff --git a/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_6_0_12.patch b/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_6_0_12.patch new file mode 100644 index 0000000000..c25e1fe407 --- /dev/null +++ b/var/spack/repos/builtin/packages/pika/posix_stack_non_executable_0_6_0_12.patch @@ -0,0 +1,13 @@ +diff --git a/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp b/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp +index d53ac752..7c02f781 100644 +--- a/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp ++++ b/libs/pika/coroutines/include/pika/coroutines/detail/posix_utility.hpp +@@ -79,7 +79,7 @@ namespace pika::threads::coroutines::detail::posix { + inline void* alloc_stack(std::size_t size) + { + void* real_stack = ::mmap(nullptr, size + EXEC_PAGESIZE, +- PROT_EXEC | PROT_READ | PROT_WRITE, ++ PROT_READ | PROT_WRITE, + #if defined(__APPLE__) + MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, + #elif defined(__FreeBSD__) |