summaryrefslogtreecommitdiffstats
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2021-11-09 22:07:54 +1100
committerTomas Mraz <tomas@openssl.org>2021-11-18 13:24:17 +0100
commite67edf60f2e9be6e5f5465b52d01aa26bf715280 (patch)
tree942ba174155accf4afc82e88c9ecc4430272619a /crypto/perlasm
parentaf16097febcd4fa31cd5fcd05ad09cf8b53659ea (diff)
perlasm/ppc-xlate.pl: Fix build on OS X
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)
Diffstat (limited to 'crypto/perlasm')
-rwxr-xr-xcrypto/perlasm/ppc-xlate.pl5
1 files changed, 3 insertions, 2 deletions
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
index 47ca9b8afa..2ee444045f 100755
--- a/crypto/perlasm/ppc-xlate.pl
+++ b/crypto/perlasm/ppc-xlate.pl
@@ -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 {