x86_64-xlate.pl: new gas requires sign extention in lea instruction.
[openssl.git] / 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");