summaryrefslogtreecommitdiffstats
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorDavid Benjamin <davidben@google.com>2019-01-29 17:41:39 -0600
committerKurt Roeckx <kurt@roeckx.be>2019-02-17 23:39:51 +0100
commite09633107b7e987b2179850715ba60d8fb069278 (patch)
tree9c98a389651499813f26b7ab5021addb703884ad /crypto/perlasm
parentc0e8e5007ba5234d4d448e82a1567e0c4467e629 (diff)
Check for unpaired .cfi_remember_state
Reviewed-by: Richard Levitte <levitte@openssl.org> GH: #8109
Diffstat (limited to 'crypto/perlasm')
-rwxr-xr-xcrypto/perlasm/x86_64-xlate.pl8
1 files changed, 7 insertions, 1 deletions
diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl
index 080fc8d881..4a7ec7a6e9 100755
--- a/crypto/perlasm/x86_64-xlate.pl
+++ b/crypto/perlasm/x86_64-xlate.pl
@@ -649,7 +649,13 @@ my %globals;
# why it starts with -8. Recall that CFA is top of caller's
# stack...
/startproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", -8); last; };
- /endproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", 0); last; };
+ /endproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", 0);
+ # .cfi_remember_state directives that are not
+ # matched with .cfi_restore_state are
+ # unnecessary.
+ die "unpaired .cfi_remember_state" if (@cfa_stack);
+ last;
+ };
/def_cfa_register/
&& do { $cfa_reg = $$line; last; };
/def_cfa_offset/