x86_64-xlate.pl: new gas requires sign extention in lea instruction.
authorAndy Polyakov <appro@openssl.org>
Sun, 15 Nov 2009 17:11:38 +0000 (17:11 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 15 Nov 2009 17:11:38 +0000 (17:11 +0000)
This resolves md5-x86_64.pl and sha1-x86_64.pl bugs, but without modifying
the code.
PR: 2094,2095

crypto/perlasm/x86_64-xlate.pl

index c09c3216add8c9f12d7a5b788d0893e88a3faf5c..25f8c4e83fab3d31ac60b8d1304c79a6b97cedd1 100755 (executable)
@@ -241,8 +241,9 @@ my %globals;
 
        if ($gas) {
            # Solaris /usr/ccs/bin/as can't handle multiplications
-           # in $self->{label}
-           $self->{label} =~ s/(?<![0-9a-f])(0[x0-9a-f]+)/oct($1)/egi;
+           # in $self->{label}, new gas requires sign extension...
+           use integer;
+           $self->{label} =~ s/(?<![0-9a-f])(0[x0-9a-f]+)/oct($1)<<32>>32/egi;
            $self->{label} =~ s/([0-9]+\s*[\*\/\%]\s*[0-9]+)/eval($1)/eg;
            $self->{label} =~ s/^___imp_/__imp__/   if ($flavour eq "mingw64");