Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
OpenBSD is missing SI_ASYNCIO and SI_MESGQ #231
Check if SI_ASYNCIO and SI_MESGQ are defined as macros. This allows to run tests on OpenBSD 6.5, where the macros are missing. This is identical to patch-boost_test_impl_execution_monitor_ipp in OpenBSD Ports, except that I added a comment.
kernigh added a commit to kernigh/context that referenced this pull request
Oct 4, 2019
Since OpenBSD 6.4 (https://www.openbsd.org/64.html), the stack pointer must point to MAP_STACK memory, or the kernel may kill the process with a signal. All stack allocators must pass MAP_STACK to mmap(2). Define BOOST_CONTEXT_USE_MAP_STACK on OpenBSD, and don't define it on other systems. This doesn't check for old versions of OpenBSD without MAP_STACK; but OpenBSD has stopped maintaining versions before 6.4. If BOOST_CONTEXT_USE_MAP_STACK is defined, then cause the stack allocators to pass MAP_STACK to mmap(2): - fixedsize_stack uses mmap/munmap instead of malloc/free. This comes from a patch in OpenBSD Ports. - protected_fixedsize_stack adds MAP_STACK to the mmap flags (as it does in OpenBSD Ports). Assume that systems with MAP_STACK also have MAP_ANON; this is true on OpenBSD. Delete POSIX comment, because I can't find MAP_ANON nor MAP_ANONYMOUS in POSIX, so these mmap calls don't conform to POSIX. - pooled_fixedsize_stack can't call munmap, because the pool's free doesn't know the allocation's size. Instead use posix_memalign to allocate memory, then mmap to replace the pages with MAP_STACK pages, so the pool's free may call std::free. OpenBSD has no <ucontext.h>, so edit test/Jamfile.v2 to skip ucontext tests on OpenBSD. This commit and boostorg/test#231 causes libs/context/test `b2 full` to pass on OpenBSD 6.5 for 64-bit x86. `b2 fc` fails because the allocator in test_fcontext.cpp does not use MAP_STACK. The tests seem not to cover pooled_fixedsize_stack nor protected_fixedsize_stack, but they still pass when I temporarily hack callcc to use those allocators instead of fixedsize_stack.
This was referenced
Oct 4, 2019
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments.