crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour
authorAndy Polyakov <appro@openssl.org>
Sun, 5 May 2019 16:25:50 +0000 (18:25 +0200)
committerRichard Levitte <levitte@openssl.org>
Wed, 11 Dec 2019 17:31:32 +0000 (18:31 +0100)
This is a big endian ELFv2 configuration. ELFv2 was already being
used for little endian, and big endian was traditionally ELFv1
but there are practical configurations that use ELFv2 with big
endian nowadays (Adélie Linux, Void Linux, possibly Gentoo, etc.)

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8883)

crypto/perlasm/ppc-xlate.pl

index e52f2f6ea626cebad704bbc7a636a320001be705..5fcd0526dffc88d7c68d6e3f0e002f1359abe084 100755 (executable)
@@ -49,7 +49,7 @@ my $globl = sub {
        /osx/           && do { $name = "_$name";
                                last;
                              };
-       /linux.*(32|64le)/
+       /linux.*(32|64(le|v2))/
                        && do { $ret .= ".globl $name";
                                if (!$$type) {
                                    $ret .= "\n.type    $name,\@function";
@@ -80,7 +80,7 @@ my $globl = sub {
 };
 my $text = sub {
     my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text";
-    $ret = ".abiversion        2\n".$ret       if ($flavour =~ /linux.*64le/);
+    $ret = ".abiversion        2\n".$ret       if ($flavour =~ /linux.*64(le|v2)/);
     $ret;
 };
 my $machine = sub {
@@ -186,7 +186,7 @@ my $vmr = sub {
 
 # Some ABIs specify vrsave, special-purpose register #256, as reserved
 # for system use.
-my $no_vrsave = ($flavour =~ /aix|linux64le/);
+my $no_vrsave = ($flavour =~ /aix|linux64(le|v2)/);
 my $mtspr = sub {
     my ($f,$idx,$ra) = @_;
     if ($idx == 256 && $no_vrsave) {
@@ -320,7 +320,7 @@ while($line=<>) {
        if ($label) {
            my $xlated = ($GLOBALS{$label} or $label);
            print "$xlated:";
-           if ($flavour =~ /linux.*64le/) {
+           if ($flavour =~ /linux.*64(le|v2)/) {
                if ($TYPES{$label} =~ /function/) {
                    printf "\n.localentry       %s,0\n",$xlated;
                }