perlasm/ppc-xlate.pl: Fix build on OS X
authorMartin Schwenke <martin@meltin.net>
Tue, 9 Nov 2021 11:07:54 +0000 (22:07 +1100)
committerTomas Mraz <tomas@openssl.org>
Thu, 18 Nov 2021 12:24:17 +0000 (13:24 +0100)
vsr2vr1() fails on OS X because the main loop doesn't strip the
non-numeric register prefixes for OS X.

Strip any non-numeric prefix (likely just "v") from registers before
doing numeric calculation, then put the prefix back on the result.

Fixes: #16995
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17026)

crypto/perlasm/ppc-xlate.pl

index 47ca9b8afa9b1fdf038542f48b47a54174842e6e..2ee444045ff96329674fa24cb8cde5f0c1798b25 100755 (executable)
@@ -153,13 +153,14 @@ my $quad = sub {
 # vs<N> -> v<N-32> if N > 32
 sub vsr2vr1 {
     my $in = shift;
+    my ($prefix, $reg) = ($in =~ m/(\D*)(\d+)/);
 
-    my $n = int($in);
+    my $n = int($reg);
     if ($n >= 32) {
            $n -= 32;
     }
 
-    return "$n";
+    return "${prefix}${n}";
 }
 # As above for first $num register args, returns list
 sub _vsr2vr {