On 06/22 01:41, Mark Kettenis wrote:
> Theo pointed out the NOBTCFI reversal here.  Now the reason that we
> still see SIGILL despite fixes to the assembly code is because the
> -mbranch-protection=pac-ret option added by the configure script
> actually downgrades our default of enabling both BTI and PAC to just
> enabling PAC.  So the necessary BTI instructrions were missing from
> the C code.
> 
> With the diff below things seem to work fine on Apple M2.  There is
> one failure in the testsuite:
> 
>   1) Failure:
> TestIO_Console#test_failed_path 
> [/home/ports/pobj/ruby-3.3.3/ruby-3.3.3/test/io/console/test_io_console.rb:46]:
> [Errno::ENODEV, Errno::ENOTTY, Errno::EBADF, Errno::ENXIO] exception 
> expected, not #<Errno::EOPNOTSUPP: Operation not supported - /dev/null>.
> 
> but I'm pretty sure that is unrelated to BTI support.

OK jeremy@

I'll try to update the test suite upstream to also handle
Errno::EOPNOTSUPP.

Thanks,
Jeremy

> 
> 
> Index: lang/ruby/3.3/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/ruby/3.3/Makefile,v
> retrieving revision 1.8
> diff -u -p -r1.8 Makefile
> --- lang/ruby/3.3/Makefile    21 Jun 2024 16:01:52 -0000      1.8
> +++ lang/ruby/3.3/Makefile    22 Jun 2024 11:34:53 -0000
> @@ -1,5 +1,4 @@
> -USE_NOBTCFI-aarch64 =        Yes
> -REVISION-main =              0
> +REVISION-main =              1
>  
>  VERSION =            3.3.3
>  DISTNAME =           ruby-${VERSION}
> Index: lang/ruby/3.3/patches/patch-configure
> ===================================================================
> RCS file: /cvs/ports/lang/ruby/3.3/patches/patch-configure,v
> retrieving revision 1.3
> diff -u -p -r1.3 patch-configure
> --- lang/ruby/3.3/patches/patch-configure     14 Jun 2024 19:41:34 -0000      
> 1.3
> +++ lang/ruby/3.3/patches/patch-configure     22 Jun 2024 11:34:53 -0000
> @@ -6,6 +6,15 @@ so ports don't have to be bumped when Op
>  Index: configure
>  --- configure.orig
>  +++ configure
> +@@ -10913,7 +10913,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 :
> + 
> + 
>  @@ -31909,7 +31909,7 @@ fi
>        ;; #(
>     openbsd*|mirbsd*) :

Reply via email to