aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2017-02-10 10:59:45 +0100
committerAndy Polyakov <appro@openssl.org>2017-02-13 21:15:14 +0100
commit1cb35b47db8462f5653803501ed68d33b10c249f (patch)
tree95db91551bd190ac458f5e6d2b5bb8167556e433 /crypto/perlasm
parent86e112788e2ab9740c0cabf3ae4b1eb67b386bab (diff)
downloadopenssl-1cb35b47db8462f5653803501ed68d33b10c249f.tar.gz
perlasm/x86_64-xlate.pl: recognize even offset(%reg) in cfa_expression.
This is handy when "offset(%reg)" is a perl variable. Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto/perlasm')
-rwxr-xr-xcrypto/perlasm/x86_64-xlate.pl2
1 files changed, 2 insertions, 0 deletions
diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl
index 2013043a01..1edea05743 100755
--- a/crypto/perlasm/x86_64-xlate.pl
+++ b/crypto/perlasm/x86_64-xlate.pl
@@ -610,6 +610,8 @@ my %globals;
foreach my $token (split(/,\s*/,$line)) {
if ($token =~ /^%r/) {
push @ret,reg($token);
+ } elsif ($token =~ /((?:0x)?[0-9a-f]+)\((%r\w+)\)/) {
+ push @ret,reg("$2+$1");
} elsif ($token =~ /(\w+):(\-?(?:0x)?[0-9a-f]+)(U?)/i) {
my $i = 1*eval($2);
push @ret,$DW_OP_complex{$1}, ($3 ? uleb128($i) : sleb128($i));