perlasm/ppc-xlate.pl: improve linux64le support.
authorAndy Polyakov <appro@openssl.org>
Wed, 4 Dec 2013 20:47:43 +0000 (21:47 +0100)
committerAndy Polyakov <appro@openssl.org>
Wed, 4 Dec 2013 20:47:43 +0000 (21:47 +0100)
Suggested by: Marcello Cerri

crypto/perlasm/ppc-xlate.pl

index c075d5fce0c4808f289420a4e1bc57d5bbdefdce..57d9ec1610c622d1b38945f921c2767749dc9cbb 100755 (executable)
@@ -27,7 +27,8 @@ my $globl = sub {
        /osx/           && do { $name = "_$name";
                                last;
                              };
        /osx/           && do { $name = "_$name";
                                last;
                              };
-       /linux.*32/     && do { $ret .= ".globl $name\n";
+       /linux.*(32|64le)/
+                       && do { $ret .= ".globl $name\n";
                                $ret .= ".type  $name,\@function";
                                last;
                              };
                                $ret .= ".type  $name,\@function";
                                last;
                              };
@@ -49,7 +50,9 @@ my $globl = sub {
     $ret;
 };
 my $text = sub {
     $ret;
 };
 my $text = sub {
-    ($flavour =~ /aix/) ? ".csect" : ".text";
+    my $ret = ($flavour =~ /aix/) ? ".csect" : ".text";
+    $ret = ".abiversion        2\n".$ret       if ($flavour =~ /linux.*64le/);
+    $ret;
 };
 my $machine = sub {
     my $junk = shift;
 };
 my $machine = sub {
     my $junk = shift;
@@ -64,8 +67,8 @@ my $size = sub {
     if ($flavour =~ /linux/)
     {  shift;
        my $name = shift; $name =~ s|^[\.\_]||;
     if ($flavour =~ /linux/)
     {  shift;
        my $name = shift; $name =~ s|^[\.\_]||;
-       my $ret  = ".size       $name,.-".($flavour=~/64/?".":"").$name;
-       $ret .= "\n.size        .$name,.-.$name" if ($flavour=~/64/);
+       my $ret  = ".size       $name,.-".($flavour=~/64$/?".":"").$name;
+       $ret .= "\n.size        .$name,.-.$name" if ($flavour=~/64$/);
        $ret;
     }
     else
        $ret;
     }
     else
@@ -159,7 +162,10 @@ while($line=<>) {
     {
        $line =~ s|(^[\.\w]+)\:\s*||;
        my $label = $1;
     {
        $line =~ s|(^[\.\w]+)\:\s*||;
        my $label = $1;
-       printf "%s:",($GLOBALS{$label} or $label) if ($label);
+       if ($label) {
+           printf "%s:",($GLOBALS{$label} or $label);
+           printf "\n.localentry\t$GLOBALS{$label},0"  if ($GLOBALS{$label} && $flavour =~ /linux.*64le/);
+       }
     }
 
     {
     }
 
     {