The configure scripts adds -mbranch-protection=pac-ret, which on OpenBSD actually *downgrades* the protection and makes things fail on arm64 systems that implement BTI.
Use -mbranch-protection=standard instead. ok? Index: lang/ruby/3.2/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/3.2/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- lang/ruby/3.2/Makefile 13 Jun 2023 05:00:23 -0000 1.5 +++ lang/ruby/3.2/Makefile 23 Sep 2023 18:32:57 -0000 @@ -3,7 +3,7 @@ DISTNAME = ruby-${VERSION} SHARED_LIBS = ruby32 0.0 NEXTVER = 3.3 PKGSPEC-main ?= ruby->=3.2.0,<${NEXTVER} -REVISION-main = 0 +REVISION-main = 1 PSEUDO_FLAVORS= no_ri_docs bootstrap # Do not build the RI docs on slow arches Index: lang/ruby/3.2/patches/patch-configure =================================================================== RCS file: /cvs/ports/lang/ruby/3.2/patches/patch-configure,v retrieving revision 1.2 diff -u -p -r1.2 patch-configure --- lang/ruby/3.2/patches/patch-configure 1 Apr 2023 19:28:26 -0000 1.2 +++ lang/ruby/3.2/patches/patch-configure 23 Sep 2023 18:32:57 -0000 @@ -1,4 +1,5 @@ Support arm64 coroutines. +Don't downgrade arm64 branch protection. Set correct shared library name. @@ -8,6 +9,15 @@ so ports don't have to be bumped when Op Index: configure --- configure.orig +++ configure +@@ -10897,7 +10897,7 @@ esac + case "$target_cpu" in #( + aarch64) : + +- for opt in -mbranch-protection=pac-ret -msign-return-address=all ++ for opt in -mbranch-protection=standard -msign-return-address=all + do : + + @@ -29475,6 +29475,10 @@ esac coroutine_type=x86