On Thu Mar 24, 2022 at 03:27:04PM +0000, Klemens Nanni wrote: > On Tue, Mar 15, 2022 at 09:23:51PM +0000, Klemens Nanni wrote: > > On Tue, Mar 15, 2022 at 08:20:35PM +0000, Stuart Henderson wrote: > > > On 2022/03/15 21:03, Theo Buehler wrote: > > > > On Tue, Mar 15, 2022 at 07:47:03PM +0000, Klemens Nanni wrote: > > > > > On Tue, Mar 15, 2022 at 06:27:13PM +0000, Klemens Nanni wrote: > > > > > > Just tried it on a kern.wxabort=1 machine which causes > > > > > > > > > > > > At least two programs in this port need W^X: > > > > > > kdeconnect-app(83050): mmap W^X violation > > > > > > kdeconnect-sms(27246): mmap W^X violation > > > > > > > > > > > > OK? > > > > > > > > > > > RCS file: /cvs/ports/net/neochat/Makefile,v > > > > > > > > > > Used an old mail as template and forgot to send the right patch... > > > > > > > > Before USE_WXNEEDED is sprinkled all over kde/Qt ports, what is the root > > > > cause of this? Can it perhaps be neutered? > > > > > > By sprinkling USE_WXNEEDED you allow software to carry out these > > > mappings _even if they don't need them_. > > > > > > The default kern.wxabort=0 setting returns a failure to the software > > > rather than killing it. This is like what PaX does. It's not uncommon > > > for software to handle this case correctly: try a mapping, if it fails > > > then use a non-W+X fallback. > > > > Thanks for the feedback (both on- and off-list). > > > > Turns out both neochat and kdeconnect-kde abort in the same Qt5Qml lib > > which in fact has fallback code for W^X mappings, i.e. it'll gracefully > > try non-W^X mappings. > > > > That W^X check is what's triggering wxabort=1 in the first place, so > > by neutering the check on OpenBSD we can avoid triggering it and thus > > USE_WXNEEDED=Yes. > > > > Feedback? Obejctions? OK? > > Anyone?
It looks good and makes sense but I think it's better to test with more qtdeclarative consumers and for this reason I would wait until after 7.1. Is that okay with you? If yes, ok rsadowski@ > > Index: net/neochat/Makefile > =================================================================== > RCS file: /cvs/ports/net/neochat/Makefile,v > retrieving revision 1.7 > diff -u -p -r1.7 Makefile > --- net/neochat/Makefile 11 Mar 2022 19:46:28 -0000 1.7 > +++ net/neochat/Makefile 15 Mar 2022 20:58:07 -0000 > @@ -1,9 +1,7 @@ > -USE_WXNEEDED = Yes > - > COMMENT = client for Matrix chat > VERSION = 1.2.0 > DISTNAME = neochat-${VERSION} > -REVISION = 0 > +REVISION = 1 > > CATEGORIES= net > > Index: x11/qt5/qtdeclarative/Makefile > =================================================================== > RCS file: /cvs/ports/x11/qt5/qtdeclarative/Makefile,v > retrieving revision 1.18 > diff -u -p -r1.18 Makefile > --- x11/qt5/qtdeclarative/Makefile 11 Mar 2022 20:16:59 -0000 1.18 > +++ x11/qt5/qtdeclarative/Makefile 15 Mar 2022 20:38:50 -0000 > @@ -4,6 +4,8 @@ USE_WXNEEDED = Yes > QT5NAME = QtDeclarative > COMMENT-main = Qt5 Quick and QML components > > +REVISION-main = 0 > + > MULTI_PACKAGES = -main -examples > DPB_PROPERTIES = parallel > > Index: > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp > =================================================================== > RCS file: > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp > diff -N > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp > 15 Mar 2022 21:20:10 -0000 > @@ -0,0 +1,16 @@ > +canAllocateExecutableMemory() maps memory W^X to see if that is allowed, > +which triggers our kern.wxabort sysctl(2); always return false to neuter > +that mmap(2) test call and have (at least libQt5Qml) always fall back to > +non-W^X mappings. > + > +Index: src/3rdparty/masm/wtf/OSAllocatorPosix.cpp > +--- src/3rdparty/masm/wtf/OSAllocatorPosix.cpp.orig > ++++ src/3rdparty/masm/wtf/OSAllocatorPosix.cpp > +@@ -262,6 +262,7 @@ void OSAllocator::releaseDecommitted(void* address, si > + > + bool OSAllocator::canAllocateExecutableMemory() > + { > ++ return false; > + int flags = MAP_PRIVATE | MAP_ANON; > + #if PLATFORM(IOS) > + if (executable) > Index: net/kdeconnect-kde/Makefile > =================================================================== > RCS file: /cvs/ports/net/kdeconnect-kde/Makefile,v > retrieving revision 1.9 > diff -u -p -r1.9 Makefile > --- net/kdeconnect-kde/Makefile 15 Mar 2022 20:01:46 -0000 1.9 > +++ net/kdeconnect-kde/Makefile 15 Mar 2022 21:21:41 -0000 > @@ -1,9 +1,7 @@ > -USE_WXNEEDED = Yes > - > COMMENT = KDE app that allows your devices to communicate > > DISTNAME = kdeconnect-kde-${MODKDE_VERSION} > -REVISION = 0 > +REVISION = 1 > > SHARED_LIBS += kdeconnectcore 2.0 # 1.4 > SHARED_LIBS += kdeconnectinterfaces 2.0 # 1.4