x86_64-xlate.pl: fix jrcxz in nasm case.
authorAndy Polyakov <appro@openssl.org>
Wed, 2 Oct 2013 22:26:09 +0000 (00:26 +0200)
committerAndy Polyakov <appro@openssl.org>
Mon, 9 Dec 2013 21:19:34 +0000 (22:19 +0100)
(cherry picked from commit 667053a2f3ad0788586f629f618d07b783bdde31)

crypto/perlasm/x86_64-xlate.pl

index fd3d7e438407116e4bb72c4f98dfc9e5233adfb1..ead4a7d3b50ec0793efee64911a2cf047b0a71b2 100755 (executable)
@@ -250,8 +250,8 @@ my %globals;
        # in $self->{label}, new gas requires sign extension...
        use integer;
        $self->{label} =~ s/(?<![\w\$\.])(0x?[0-9a-f]+)/oct($1)/egi;
-       $self->{label} =~ s/([0-9]+\s*[\*\/\%]\s*[0-9]+)/eval($1)/eg;
-       $self->{label} =~ s/([0-9]+)/$1<<32>>32/eg;
+       $self->{label} =~ s/\b([0-9]+\s*[\*\/\%]\s*[0-9]+)\b/eval($1)/eg;
+       $self->{label} =~ s/\b([0-9]+)\b/$1<<32>>32/eg;
 
        if (!$self->{label} && $self->{index} && $self->{scale}==1 &&
            $self->{base} =~ /(rbp|r13)/) {
@@ -418,7 +418,7 @@ my %globals;
     }
     sub out {
        my $self = shift;
-       if ($nasm && opcode->mnemonic()=~m/^j/) {
+       if ($nasm && opcode->mnemonic()=~m/^j(?![re]cxz)/) {
            "NEAR ".$self->{value};
        } else {
            $self->{value};