On Thu, Jul 18, 2019 at 05:46:53PM +0100, Stuart Henderson wrote: > Boost coroutine's basic_standard_stack_allocator is missing MAP_STACK, > diff below adds it following the same method as the ones that otto@ has > already done. The relevant file is not used as part of -md's build so > I have only bumped REVISION-main. > > This unbreaks icinga2's devel tree that will become icinga 2.11.0. > > OK?
Looks good to me, -Otto > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/boost/Makefile,v > retrieving revision 1.87 > diff -u -p -r1.87 Makefile > --- Makefile 12 Jul 2019 20:44:04 -0000 1.87 > +++ Makefile 18 Jul 2019 16:31:06 -0000 > @@ -9,11 +9,12 @@ VERSION= 1.66.0 > DISTNAME= boost_${VERSION:S/./_/g} > PKGNAME-main= boost-${VERSION} > PKGNAME-md= boost-md-${VERSION} > -REVISION-main= 5 > CATEGORIES= devel > MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=boost/} > EXTRACT_SUFX= .tar.bz2 > FIX_EXTRACT_PERMISSIONS = Yes > + > +REVISION-main= 6 > REVISION-md= 1 > > SO_VERSION= 9.0 > Index: patches/patch-boost_coroutine_standard_stack_allocator_hpp > =================================================================== > RCS file: patches/patch-boost_coroutine_standard_stack_allocator_hpp > diff -N patches/patch-boost_coroutine_standard_stack_allocator_hpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-boost_coroutine_standard_stack_allocator_hpp 18 Jul > 2019 16:31:06 -0000 > @@ -0,0 +1,34 @@ > +$OpenBSD$ > + > +Index: boost/coroutine/standard_stack_allocator.hpp > +--- boost/coroutine/standard_stack_allocator.hpp.orig > ++++ boost/coroutine/standard_stack_allocator.hpp > +@@ -26,6 +26,8 @@ > + # include BOOST_ABI_PREFIX > + #endif > + > ++#include <sys/mman.h> > ++ > + namespace boost { > + namespace coroutines { > + > +@@ -39,8 +41,8 @@ struct basic_standard_stack_allocator > + BOOST_ASSERT( traits_type::minimum_size() <= size); > + BOOST_ASSERT( traits_type::is_unbounded() || ( > traits_type::maximum_size() >= size) ); > + > +- void * limit = std::malloc( size); > +- if ( ! limit) throw std::bad_alloc(); > ++ void * limit = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE > | MAP_ANON | MAP_STACK, -1, 0); > ++ if ( limit == MAP_FAILED ) throw std::bad_alloc(); > + > + ctx.size = size; > + ctx.sp = static_cast< char * >( limit) + ctx.size; > +@@ -60,7 +62,7 @@ struct basic_standard_stack_allocator > + #endif > + > + void * limit = static_cast< char * >( ctx.sp) - ctx.size; > +- std::free( limit); > ++ munmap(limit, ctx.size); > + } > + }; > + >