update main-with-bazel from master branch
diff --git a/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl b/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl
index 82e46d4..eabaa1b 100644
--- a/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl
+++ b/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl
@@ -474,7 +474,7 @@
if ($win64) {
$code.=<<___
lea -0xa8(%rsp),%rsp # 8 extra bytes to align the stack
-.seh_allocstack 0xa8
+.seh_stackalloc 0xa8
.seh_setframe %rbp, 0xa8+5*8
# Load the last two parameters. These go into %rdi and %rsi, which are
# non-volatile on Windows, so stash them in the parameter stack area
@@ -487,25 +487,26 @@
mov 0x38(%rbp), $Htable
# Save non-volatile XMM registers.
movaps %xmm6,-0xd0(%rbp)
-.seh_savexmm128 %xmm6, 0xa8+5*8-0xd0
+.seh_savexmm %xmm6, 0xa8+5*8-0xd0
movaps %xmm7,-0xc0(%rbp)
-.seh_savexmm128 %xmm7, 0xa8+5*8-0xc0
+.seh_savexmm %xmm7, 0xa8+5*8-0xc0
movaps %xmm8,-0xb0(%rbp)
-.seh_savexmm128 %xmm8, 0xa8+5*8-0xb0
+.seh_savexmm %xmm8, 0xa8+5*8-0xb0
movaps %xmm9,-0xa0(%rbp)
-.seh_savexmm128 %xmm9, 0xa8+5*8-0xa0
+.seh_savexmm %xmm9, 0xa8+5*8-0xa0
movaps %xmm10,-0x90(%rbp)
-.seh_savexmm128 %xmm10, 0xa8+5*8-0x90
+.seh_savexmm %xmm10, 0xa8+5*8-0x90
movaps %xmm11,-0x80(%rbp)
-.seh_savexmm128 %xmm11, 0xa8+5*8-0x80
+.seh_savexmm %xmm11, 0xa8+5*8-0x80
movaps %xmm12,-0x70(%rbp)
-.seh_savexmm128 %xmm12, 0xa8+5*8-0x70
+.seh_savexmm %xmm12, 0xa8+5*8-0x70
movaps %xmm13,-0x60(%rbp)
-.seh_savexmm128 %xmm13, 0xa8+5*8-0x60
+.seh_savexmm %xmm13, 0xa8+5*8-0x60
movaps %xmm14,-0x50(%rbp)
-.seh_savexmm128 %xmm14, 0xa8+5*8-0x50
+.seh_savexmm %xmm14, 0xa8+5*8-0x50
movaps %xmm15,-0x40(%rbp)
-.seh_savexmm128 %xmm15, 0xa8+5*8-0x40
+.seh_savexmm %xmm15, 0xa8+5*8-0x40
+.seh_endprologue
___
}
$code.=<<___;
@@ -753,7 +754,7 @@
if ($win64) {
$code.=<<___
lea -0xa8(%rsp),%rsp # 8 extra bytes to align the stack
-.seh_allocstack 0xa8
+.seh_stackalloc 0xa8
.seh_setframe %rbp, 0xa8+5*8
# Load the last two parameters. These go into %rdi and %rsi, which are
# non-volatile on Windows, so stash them in the parameter stack area
@@ -766,25 +767,26 @@
mov 0x38(%rbp), $Htable
# Save non-volatile XMM registers.
movaps %xmm6,-0xd0(%rbp)
-.seh_savexmm128 %xmm6, 0xa8+5*8-0xd0
+.seh_savexmm %xmm6, 0xa8+5*8-0xd0
movaps %xmm7,-0xc0(%rbp)
-.seh_savexmm128 %xmm7, 0xa8+5*8-0xc0
+.seh_savexmm %xmm7, 0xa8+5*8-0xc0
movaps %xmm8,-0xb0(%rbp)
-.seh_savexmm128 %xmm8, 0xa8+5*8-0xb0
+.seh_savexmm %xmm8, 0xa8+5*8-0xb0
movaps %xmm9,-0xa0(%rbp)
-.seh_savexmm128 %xmm9, 0xa8+5*8-0xa0
+.seh_savexmm %xmm9, 0xa8+5*8-0xa0
movaps %xmm10,-0x90(%rbp)
-.seh_savexmm128 %xmm10, 0xa8+5*8-0x90
+.seh_savexmm %xmm10, 0xa8+5*8-0x90
movaps %xmm11,-0x80(%rbp)
-.seh_savexmm128 %xmm11, 0xa8+5*8-0x80
+.seh_savexmm %xmm11, 0xa8+5*8-0x80
movaps %xmm12,-0x70(%rbp)
-.seh_savexmm128 %xmm12, 0xa8+5*8-0x70
+.seh_savexmm %xmm12, 0xa8+5*8-0x70
movaps %xmm13,-0x60(%rbp)
-.seh_savexmm128 %xmm13, 0xa8+5*8-0x60
+.seh_savexmm %xmm13, 0xa8+5*8-0x60
movaps %xmm14,-0x50(%rbp)
-.seh_savexmm128 %xmm14, 0xa8+5*8-0x50
+.seh_savexmm %xmm14, 0xa8+5*8-0x50
movaps %xmm15,-0x40(%rbp)
-.seh_savexmm128 %xmm15, 0xa8+5*8-0x40
+.seh_savexmm %xmm15, 0xa8+5*8-0x40
+.seh_endprologue
___
}
$code.=<<___;
diff --git a/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl b/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl
index 4a850f4..bdfbe04 100644
--- a/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl
+++ b/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl
@@ -108,11 +108,12 @@
____
$code .= <<____ if ($win64);
subq \$40, %rsp
-.seh_allocstack 40
+.seh_stackalloc 40
movdqa %xmm6, (%rsp)
-.seh_savexmm128 %xmm6, 0
+.seh_savexmm %xmm6, 0
movdqa %xmm10, 16(%rsp)
-.seh_savexmm128 %xmm10, 16
+.seh_savexmm %xmm10, 16
+.seh_endprologue
____
$code .= <<____;
movdqu ($Xi), %xmm0
@@ -251,13 +252,14 @@
____
$code .= <<____ if ($win64);
subq \$56, %rsp
-.seh_allocstack 56
+.seh_stackalloc 56
movdqa %xmm6, (%rsp)
-.seh_savexmm128 %xmm6, 0
+.seh_savexmm %xmm6, 0
movdqa %xmm10, 16(%rsp)
-.seh_savexmm128 %xmm10, 16
+.seh_savexmm %xmm10, 16
movdqa %xmm11, 32(%rsp)
-.seh_savexmm128 %xmm11, 32
+.seh_savexmm %xmm11, 32
+.seh_endprologue
____
$code .= <<____;
movdqu ($Xi), %xmm0
diff --git a/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl b/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl
index 33ee1cb..c026d8f 100644
--- a/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl
+++ b/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl
@@ -210,9 +210,10 @@
___
$code.=<<___ if ($win64);
sub \$0x18,%rsp
-.seh_allocstack 0x18
+.seh_stackalloc 0x18
movaps %xmm6,(%rsp)
-.seh_savexmm128 %xmm6, 0
+.seh_savexmm %xmm6, 0
+.seh_endprologue
___
$code.=<<___;
movdqu ($Xip),$Hkey
@@ -347,27 +348,28 @@
$code.=<<___ if ($win64);
lea -0x88(%rsp),%rax
lea -0x20(%rax),%rsp
-.seh_allocstack 0x20+0x88
+.seh_stackalloc 0x20+0x88
movaps %xmm6,-0x20(%rax)
-.seh_savexmm128 %xmm6, 0x20-0x20
+.seh_savexmm %xmm6, 0x20-0x20
movaps %xmm7,-0x10(%rax)
-.seh_savexmm128 %xmm7, 0x20-0x10
+.seh_savexmm %xmm7, 0x20-0x10
movaps %xmm8,0(%rax)
-.seh_savexmm128 %xmm8, 0x20+0
+.seh_savexmm %xmm8, 0x20+0
movaps %xmm9,0x10(%rax)
-.seh_savexmm128 %xmm9, 0x20+0x10
+.seh_savexmm %xmm9, 0x20+0x10
movaps %xmm10,0x20(%rax)
-.seh_savexmm128 %xmm10, 0x20+0x20
+.seh_savexmm %xmm10, 0x20+0x20
movaps %xmm11,0x30(%rax)
-.seh_savexmm128 %xmm11, 0x20+0x30
+.seh_savexmm %xmm11, 0x20+0x30
movaps %xmm12,0x40(%rax)
-.seh_savexmm128 %xmm12, 0x20+0x40
+.seh_savexmm %xmm12, 0x20+0x40
movaps %xmm13,0x50(%rax)
-.seh_savexmm128 %xmm13, 0x20+0x50
+.seh_savexmm %xmm13, 0x20+0x50
movaps %xmm14,0x60(%rax)
-.seh_savexmm128 %xmm14, 0x20+0x60
+.seh_savexmm %xmm14, 0x20+0x60
movaps %xmm15,0x70(%rax)
-.seh_savexmm128 %xmm15, 0x20+0x70
+.seh_savexmm %xmm15, 0x20+0x70
+.seh_endprologue
___
$code.=<<___;
movdqa .Lbswap_mask(%rip),$T3
@@ -704,6 +706,7 @@
.align 32
gcm_init_avx:
.cfi_startproc
+.seh_startproc
_CET_ENDBR
___
if ($avx) {
@@ -711,11 +714,11 @@
my $HK="%xmm6";
$code.=<<___ if ($win64);
-.seh_startproc
sub \$0x18,%rsp
-.seh_allocstack 0x18
+.seh_stackalloc 0x18
movaps %xmm6,(%rsp)
-.seh_savexmm128 %xmm6, 0
+.seh_savexmm %xmm6, 0
+.seh_endprologue
___
$code.=<<___;
vzeroupper
@@ -862,6 +865,7 @@
.align 32
gcm_ghash_avx:
.cfi_startproc
+.seh_startproc
_CET_ENDBR
___
if ($avx) {
@@ -872,30 +876,30 @@
$Xi,$Xo,$Tred,$bswap,$Ii,$Ij) = map("%xmm$_",(0..15));
$code.=<<___ if ($win64);
-.seh_startproc
lea -0x88(%rsp),%rax
lea -0x20(%rax),%rsp
-.seh_allocstack 0x20+0x88
+.seh_stackalloc 0x20+0x88
movaps %xmm6,-0x20(%rax)
-.seh_savexmm128 %xmm6, 0x20-0x20
+.seh_savexmm %xmm6, 0x20-0x20
movaps %xmm7,-0x10(%rax)
-.seh_savexmm128 %xmm7, 0x20-0x10
+.seh_savexmm %xmm7, 0x20-0x10
movaps %xmm8,0(%rax)
-.seh_savexmm128 %xmm8, 0x20+0
+.seh_savexmm %xmm8, 0x20+0
movaps %xmm9,0x10(%rax)
-.seh_savexmm128 %xmm9, 0x20+0x10
+.seh_savexmm %xmm9, 0x20+0x10
movaps %xmm10,0x20(%rax)
-.seh_savexmm128 %xmm10, 0x20+0x20
+.seh_savexmm %xmm10, 0x20+0x20
movaps %xmm11,0x30(%rax)
-.seh_savexmm128 %xmm11, 0x20+0x30
+.seh_savexmm %xmm11, 0x20+0x30
movaps %xmm12,0x40(%rax)
-.seh_savexmm128 %xmm12, 0x20+0x40
+.seh_savexmm %xmm12, 0x20+0x40
movaps %xmm13,0x50(%rax)
-.seh_savexmm128 %xmm13, 0x20+0x50
+.seh_savexmm %xmm13, 0x20+0x50
movaps %xmm14,0x60(%rax)
-.seh_savexmm128 %xmm14, 0x20+0x60
+.seh_savexmm %xmm14, 0x20+0x60
movaps %xmm15,0x70(%rax)
-.seh_savexmm128 %xmm15, 0x20+0x70
+.seh_savexmm %xmm15, 0x20+0x70
+.seh_endprologue
___
$code.=<<___;
vzeroupper
diff --git a/src/crypto/perlasm/x86_64-xlate.pl b/src/crypto/perlasm/x86_64-xlate.pl
index 9fb1de1..5b7705d 100755
--- a/src/crypto/perlasm/x86_64-xlate.pl
+++ b/src/crypto/perlasm/x86_64-xlate.pl
@@ -714,16 +714,21 @@
}
}
{ package seh_directive;
- # This implements directives, like MASM's, for specifying Windows unwind
- # codes. See https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170
- # for details on the Windows unwind mechanism. Unlike MASM's directives, we
- # have no .seh_endprolog directive. Instead, the last prolog directive is
- # implicitly the end of the prolog.
+ # This implements directives, like MASM, gas, and clang-assembler for
+ # specifying Windows unwind codes. See
+ # https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170
+ # for details on the Windows unwind mechanism. As perlasm generally uses gas
+ # syntax, the syntax is patterned after the gas spelling, described in
+ # https://sourceware.org/legacy-ml/binutils/2009-08/msg00193.html
+ #
+ # TODO(https://crbug.com/boringssl/571): Translate to the MASM directives
+ # when using the MASM output. Emit as-is when using "mingw64" output, which
+ # is Windows with gas syntax.
#
# TODO(https://crbug.com/boringssl/259): For now, SEH directives are ignored
# on non-Windows platforms. This means functions need to specify both CFI
# and SEH directives, often redundantly. Ideally we'd abstract between the
- # two. E.g., we can synthesize CFI from SEH prologs, but SEH does not
+ # two. E.g., we can synthesize CFI from SEH prologues, but SEH does not
# annotate epilogs, so we'd need to combine parts from both. Or we can
# restrict ourselves to a subset of CFI and synthesize SEH from CFI.
#
@@ -732,7 +737,7 @@
# complication is the current scheme modifies RDI and RSI (non-volatile on
# Windows) at the start of the function, and saves them in the parameter
# stack area. This can be expressed with .seh_savereg, but .seh_savereg is
- # only usable late in the prolog. However, unwind information gives enough
+ # only usable late in the prologue. However, unwind information gives enough
# information to locate the parameter stack area at any point in the
# function, so we can defer conversion or implement other schemes.
@@ -777,6 +782,11 @@
die "Missing .seh_startproc directive" unless %info;
}
+ sub _check_in_prologue {
+ _check_in_proc();
+ die "Invalid SEH directive after .seh_endprologue" if defined($info{endprologue});
+ }
+
sub _check_not_in_proc {
die "Missing .seh_endproc directive" if %info;
}
@@ -794,8 +804,8 @@
info_label => $info_label,
# start_label is the start of the function.
start_label => $start_label,
- # endprolog is the label of the last unwind code in the function.
- endprolog => $start_label,
+ # endprologue is the label of the end of the prologue.
+ endprologue => undef,
# unwind_codes contains the textual representation of the
# unwind codes in the function so far.
unwind_codes => "",
@@ -821,14 +831,14 @@
sub _add_unwind_code {
my ($op, $value, @extra) = @_;
- _check_in_proc();
+ _check_in_prologue();
if ($op != $UWOP_PUSH_NONVOL) {
$info{has_nonpushreg} = 1;
} elsif ($info{has_nonpushreg}) {
- die ".seh_pushreg directives must appear first in the prolog";
+ die ".seh_pushreg directives must appear first in the prologue";
}
- my $label = _new_unwind_label("prolog");
+ my $label = _new_unwind_label("prologue");
# Encode an UNWIND_CODE structure. See
# https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170#struct-unwind_code
my $encoded = $op | ($value << 4);
@@ -844,17 +854,13 @@
$info{num_codes} += 1 + scalar(@extra);
# Unwind codes are listed in reverse order.
$info{unwind_codes} = $codes . $info{unwind_codes};
- # Track the label of the last unwind code. It implicitly is the end of
- # the prolog. MASM has an endprolog directive, but it seems to be
- # unnecessary.
- $info{endprolog} = $label;
return $label;
}
sub _updating_fixed_allocation {
- _check_in_proc();
+ _check_in_prologue();
if ($info{frame_reg} != 0) {
- # Windows documentation does not explicitly forbid .seh_allocstack
+ # Windows documentation does not explicitly forbid .seh_stackalloc
# after .seh_setframe, but it appears to have no effect. Offsets are
# still relative to the fixed allocation when the frame register was
# established.
@@ -862,7 +868,7 @@
}
if ($info{has_offset}) {
# Windows documentation does not explicitly forbid .seh_savereg
- # before .seh_allocstack, but it does not work very well. Offsets
+ # before .seh_stackalloc, but it does not work very well. Offsets
# are relative to the top of the final fixed allocation, not where
# RSP currently is.
die "directives with an offset must come after the fixed allocation is established.";
@@ -871,11 +877,8 @@
sub _endproc {
_check_in_proc();
- if ($info{num_codes} == 0) {
- # If a Windows function has no directives (i.e. it doesn't touch the
- # stack), it is a leaf function and is not expected to appear in
- # .pdata or .xdata.
- die ".seh_endproc found with no unwind codes";
+ if (!defined($info{endprologue})) {
+ die "Missing .seh_endprologue";
}
my $end_label = _new_unwind_label("end");
@@ -894,7 +897,7 @@
$xdata .= <<____;
$info{info_label}:
.byte 1 # version 1, no flags
- .byte $info{endprolog}-$info{start_label}
+ .byte $info{endprologue}-$info{start_label}
.byte $info{num_codes}
.byte $frame_encoded
$info{unwind_codes}
@@ -916,7 +919,7 @@
my $label;
SWITCH: for ($dir) {
/^startproc$/ && do {
- $label = _startproc();
+ $label = _startproc($1);
last;
};
/^pushreg$/ && do {
@@ -926,7 +929,7 @@
$label = _add_unwind_code($UWOP_PUSH_NONVOL, $reg_num);
last;
};
- /^allocstack$/ && do {
+ /^stackalloc$/ && do {
my $num = eval($$line);
if ($num <= 0 || $num % 8 != 0) {
die "invalid stack allocation: $num";
@@ -976,7 +979,7 @@
$info{has_offset} = 1;
last;
};
- /^savexmm128$/ && do {
+ /^savexmm$/ && do {
$$line =~ /%xmm(\d+)\s*,\s*(.+)/ or die "could not parse .seh_$dir";
my $reg_num = $1;
my $offset = eval($2);
@@ -991,6 +994,19 @@
$info{has_offset} = 1;
last;
};
+ /^endprologue$/ && do {
+ _check_in_prologue();
+ if ($info{num_codes} == 0) {
+ # If a Windows function has no directives (i.e. it
+ # doesn't touch the stack), it is a leaf function and is
+ # not expected to appear in .pdata or .xdata.
+ die ".seh_endprologue found with no unwind codes";
+ }
+
+ $label = _new_unwind_label("endprologue");
+ $info{endprologue} = $label;
+ last;
+ };
/^endproc$/ && do {
$label = _endproc();
last;
diff --git a/src/crypto/test/asm/trampoline-x86_64.pl b/src/crypto/test/asm/trampoline-x86_64.pl
index 53b4bcd..d8d2be2 100755
--- a/src/crypto/test/asm/trampoline-x86_64.pl
+++ b/src/crypto/test/asm/trampoline-x86_64.pl
@@ -179,7 +179,7 @@
$code .= <<____;
subq \$$stack_alloc_size, %rsp
.cfi_adjust_cfa_offset $stack_alloc_size
-.seh_allocstack $stack_alloc_size
+.seh_stackalloc $stack_alloc_size
____
$code .= <<____ if (!$win64);
movq $unwind, $unwind_offset(%rsp)
@@ -195,12 +195,13 @@
# pointer just before the call.
my $cfi_off = $off - $stack_alloc_size - 8;
my $seh_dir = ".seh_savereg";
- $seh_dir = ".seh_savexmm128" if ($reg =~ /^xmm/);
+ $seh_dir = ".seh_savexmm" if ($reg =~ /^xmm/);
return <<____;
.cfi_offset $reg, $cfi_off
$seh_dir \%$reg, $off
____
});
+$code .= ".seh_endprologue\n";
$code .= load_caller_state(0, $state);
$code .= <<____;
@@ -342,6 +343,7 @@
pushq %r12
.cfi_push %r13 # This should be %r13
.seh_pushreg %r13 # This should be %r13
+.seh_endprologue
# Windows evaluates epilogs directly in the unwinder, rather than using
# unwind codes. Add a nop so there is one non-epilog point (immediately
# before the nop) where the unwinder can observe the mistake.
@@ -366,6 +368,7 @@
pushq %r12
.cfi_push %r12
.seh_pushreg %r12
+.seh_endprologue
movq %r12, %rax
inc %rax
@@ -422,6 +425,7 @@
.seh_startproc
pushq %r12
.seh_pushreg %r12
+.seh_endprologue
nop
diff --git a/src/gen/bcm/aesni-gcm-x86_64-win.asm b/src/gen/bcm/aesni-gcm-x86_64-win.asm
index d7a2665..7564a1c 100644
--- a/src/gen/bcm/aesni-gcm-x86_64-win.asm
+++ b/src/gen/bcm/aesni-gcm-x86_64-win.asm
@@ -363,57 +363,58 @@
push rbp
-$L$SEH_prolog_aesni_gcm_decrypt_2:
+$L$SEH_prologue_aesni_gcm_decrypt_2:
mov rbp,rsp
push rbx
-$L$SEH_prolog_aesni_gcm_decrypt_3:
+$L$SEH_prologue_aesni_gcm_decrypt_3:
push r12
-$L$SEH_prolog_aesni_gcm_decrypt_4:
+$L$SEH_prologue_aesni_gcm_decrypt_4:
push r13
-$L$SEH_prolog_aesni_gcm_decrypt_5:
+$L$SEH_prologue_aesni_gcm_decrypt_5:
push r14
-$L$SEH_prolog_aesni_gcm_decrypt_6:
+$L$SEH_prologue_aesni_gcm_decrypt_6:
push r15
-$L$SEH_prolog_aesni_gcm_decrypt_7:
+$L$SEH_prologue_aesni_gcm_decrypt_7:
lea rsp,[((-168))+rsp]
-$L$SEH_prolog_aesni_gcm_decrypt_8:
-$L$SEH_prolog_aesni_gcm_decrypt_9:
+$L$SEH_prologue_aesni_gcm_decrypt_8:
+$L$SEH_prologue_aesni_gcm_decrypt_9:
mov QWORD[16+rbp],rdi
-$L$SEH_prolog_aesni_gcm_decrypt_10:
+$L$SEH_prologue_aesni_gcm_decrypt_10:
mov QWORD[24+rbp],rsi
-$L$SEH_prolog_aesni_gcm_decrypt_11:
+$L$SEH_prologue_aesni_gcm_decrypt_11:
mov rdi,QWORD[48+rbp]
mov rsi,QWORD[56+rbp]
movaps XMMWORD[(-208)+rbp],xmm6
-$L$SEH_prolog_aesni_gcm_decrypt_12:
+$L$SEH_prologue_aesni_gcm_decrypt_12:
movaps XMMWORD[(-192)+rbp],xmm7
-$L$SEH_prolog_aesni_gcm_decrypt_13:
+$L$SEH_prologue_aesni_gcm_decrypt_13:
movaps XMMWORD[(-176)+rbp],xmm8
-$L$SEH_prolog_aesni_gcm_decrypt_14:
+$L$SEH_prologue_aesni_gcm_decrypt_14:
movaps XMMWORD[(-160)+rbp],xmm9
-$L$SEH_prolog_aesni_gcm_decrypt_15:
+$L$SEH_prologue_aesni_gcm_decrypt_15:
movaps XMMWORD[(-144)+rbp],xmm10
-$L$SEH_prolog_aesni_gcm_decrypt_16:
+$L$SEH_prologue_aesni_gcm_decrypt_16:
movaps XMMWORD[(-128)+rbp],xmm11
-$L$SEH_prolog_aesni_gcm_decrypt_17:
+$L$SEH_prologue_aesni_gcm_decrypt_17:
movaps XMMWORD[(-112)+rbp],xmm12
-$L$SEH_prolog_aesni_gcm_decrypt_18:
+$L$SEH_prologue_aesni_gcm_decrypt_18:
movaps XMMWORD[(-96)+rbp],xmm13
-$L$SEH_prolog_aesni_gcm_decrypt_19:
+$L$SEH_prologue_aesni_gcm_decrypt_19:
movaps XMMWORD[(-80)+rbp],xmm14
-$L$SEH_prolog_aesni_gcm_decrypt_20:
+$L$SEH_prologue_aesni_gcm_decrypt_20:
movaps XMMWORD[(-64)+rbp],xmm15
-$L$SEH_prolog_aesni_gcm_decrypt_21:
+$L$SEH_prologue_aesni_gcm_decrypt_21:
+$L$SEH_endprologue_aesni_gcm_decrypt_22:
vzeroupper
mov r12,QWORD[64+rbp]
@@ -512,7 +513,7 @@
$L$gcm_dec_abort:
ret
-$L$SEH_end_aesni_gcm_decrypt_22:
+$L$SEH_end_aesni_gcm_decrypt_23:
@@ -629,57 +630,58 @@
push rbp
-$L$SEH_prolog_aesni_gcm_encrypt_2:
+$L$SEH_prologue_aesni_gcm_encrypt_2:
mov rbp,rsp
push rbx
-$L$SEH_prolog_aesni_gcm_encrypt_3:
+$L$SEH_prologue_aesni_gcm_encrypt_3:
push r12
-$L$SEH_prolog_aesni_gcm_encrypt_4:
+$L$SEH_prologue_aesni_gcm_encrypt_4:
push r13
-$L$SEH_prolog_aesni_gcm_encrypt_5:
+$L$SEH_prologue_aesni_gcm_encrypt_5:
push r14
-$L$SEH_prolog_aesni_gcm_encrypt_6:
+$L$SEH_prologue_aesni_gcm_encrypt_6:
push r15
-$L$SEH_prolog_aesni_gcm_encrypt_7:
+$L$SEH_prologue_aesni_gcm_encrypt_7:
lea rsp,[((-168))+rsp]
-$L$SEH_prolog_aesni_gcm_encrypt_8:
-$L$SEH_prolog_aesni_gcm_encrypt_9:
+$L$SEH_prologue_aesni_gcm_encrypt_8:
+$L$SEH_prologue_aesni_gcm_encrypt_9:
mov QWORD[16+rbp],rdi
-$L$SEH_prolog_aesni_gcm_encrypt_10:
+$L$SEH_prologue_aesni_gcm_encrypt_10:
mov QWORD[24+rbp],rsi
-$L$SEH_prolog_aesni_gcm_encrypt_11:
+$L$SEH_prologue_aesni_gcm_encrypt_11:
mov rdi,QWORD[48+rbp]
mov rsi,QWORD[56+rbp]
movaps XMMWORD[(-208)+rbp],xmm6
-$L$SEH_prolog_aesni_gcm_encrypt_12:
+$L$SEH_prologue_aesni_gcm_encrypt_12:
movaps XMMWORD[(-192)+rbp],xmm7
-$L$SEH_prolog_aesni_gcm_encrypt_13:
+$L$SEH_prologue_aesni_gcm_encrypt_13:
movaps XMMWORD[(-176)+rbp],xmm8
-$L$SEH_prolog_aesni_gcm_encrypt_14:
+$L$SEH_prologue_aesni_gcm_encrypt_14:
movaps XMMWORD[(-160)+rbp],xmm9
-$L$SEH_prolog_aesni_gcm_encrypt_15:
+$L$SEH_prologue_aesni_gcm_encrypt_15:
movaps XMMWORD[(-144)+rbp],xmm10
-$L$SEH_prolog_aesni_gcm_encrypt_16:
+$L$SEH_prologue_aesni_gcm_encrypt_16:
movaps XMMWORD[(-128)+rbp],xmm11
-$L$SEH_prolog_aesni_gcm_encrypt_17:
+$L$SEH_prologue_aesni_gcm_encrypt_17:
movaps XMMWORD[(-112)+rbp],xmm12
-$L$SEH_prolog_aesni_gcm_encrypt_18:
+$L$SEH_prologue_aesni_gcm_encrypt_18:
movaps XMMWORD[(-96)+rbp],xmm13
-$L$SEH_prolog_aesni_gcm_encrypt_19:
+$L$SEH_prologue_aesni_gcm_encrypt_19:
movaps XMMWORD[(-80)+rbp],xmm14
-$L$SEH_prolog_aesni_gcm_encrypt_20:
+$L$SEH_prologue_aesni_gcm_encrypt_20:
movaps XMMWORD[(-64)+rbp],xmm15
-$L$SEH_prolog_aesni_gcm_encrypt_21:
+$L$SEH_prologue_aesni_gcm_encrypt_21:
+$L$SEH_endprologue_aesni_gcm_encrypt_22:
vzeroupper
vmovdqu xmm1,XMMWORD[rdi]
@@ -943,7 +945,7 @@
$L$gcm_enc_abort:
ret
-$L$SEH_end_aesni_gcm_encrypt_22:
+$L$SEH_end_aesni_gcm_encrypt_23:
section .rdata rdata align=8
@@ -968,11 +970,11 @@
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_aesni_gcm_decrypt_1 wrt ..imagebase
- DD $L$SEH_end_aesni_gcm_decrypt_22 wrt ..imagebase
+ DD $L$SEH_end_aesni_gcm_decrypt_23 wrt ..imagebase
DD $L$SEH_info_aesni_gcm_decrypt_0 wrt ..imagebase
DD $L$SEH_begin_aesni_gcm_encrypt_1 wrt ..imagebase
- DD $L$SEH_end_aesni_gcm_encrypt_22 wrt ..imagebase
+ DD $L$SEH_end_aesni_gcm_encrypt_23 wrt ..imagebase
DD $L$SEH_info_aesni_gcm_encrypt_0 wrt ..imagebase
@@ -980,120 +982,120 @@
ALIGN 4
$L$SEH_info_aesni_gcm_decrypt_0:
DB 1
- DB $L$SEH_prolog_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_endprologue_aesni_gcm_decrypt_22-$L$SEH_begin_aesni_gcm_decrypt_1
DB 33
DB 213
- DB $L$SEH_prolog_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1
DB 248
DW 9
- DB $L$SEH_prolog_aesni_gcm_decrypt_20-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_20-$L$SEH_begin_aesni_gcm_decrypt_1
DB 232
DW 8
- DB $L$SEH_prolog_aesni_gcm_decrypt_19-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_19-$L$SEH_begin_aesni_gcm_decrypt_1
DB 216
DW 7
- DB $L$SEH_prolog_aesni_gcm_decrypt_18-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_18-$L$SEH_begin_aesni_gcm_decrypt_1
DB 200
DW 6
- DB $L$SEH_prolog_aesni_gcm_decrypt_17-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_17-$L$SEH_begin_aesni_gcm_decrypt_1
DB 184
DW 5
- DB $L$SEH_prolog_aesni_gcm_decrypt_16-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_16-$L$SEH_begin_aesni_gcm_decrypt_1
DB 168
DW 4
- DB $L$SEH_prolog_aesni_gcm_decrypt_15-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_15-$L$SEH_begin_aesni_gcm_decrypt_1
DB 152
DW 3
- DB $L$SEH_prolog_aesni_gcm_decrypt_14-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_14-$L$SEH_begin_aesni_gcm_decrypt_1
DB 136
DW 2
- DB $L$SEH_prolog_aesni_gcm_decrypt_13-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_13-$L$SEH_begin_aesni_gcm_decrypt_1
DB 120
DW 1
- DB $L$SEH_prolog_aesni_gcm_decrypt_12-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_12-$L$SEH_begin_aesni_gcm_decrypt_1
DB 104
DW 0
- DB $L$SEH_prolog_aesni_gcm_decrypt_11-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_11-$L$SEH_begin_aesni_gcm_decrypt_1
DB 100
DW 29
- DB $L$SEH_prolog_aesni_gcm_decrypt_10-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_10-$L$SEH_begin_aesni_gcm_decrypt_1
DB 116
DW 28
- DB $L$SEH_prolog_aesni_gcm_decrypt_9-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_9-$L$SEH_begin_aesni_gcm_decrypt_1
DB 3
- DB $L$SEH_prolog_aesni_gcm_decrypt_8-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_8-$L$SEH_begin_aesni_gcm_decrypt_1
DB 1
DW 21
- DB $L$SEH_prolog_aesni_gcm_decrypt_7-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_7-$L$SEH_begin_aesni_gcm_decrypt_1
DB 240
- DB $L$SEH_prolog_aesni_gcm_decrypt_6-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_6-$L$SEH_begin_aesni_gcm_decrypt_1
DB 224
- DB $L$SEH_prolog_aesni_gcm_decrypt_5-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_5-$L$SEH_begin_aesni_gcm_decrypt_1
DB 208
- DB $L$SEH_prolog_aesni_gcm_decrypt_4-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_4-$L$SEH_begin_aesni_gcm_decrypt_1
DB 192
- DB $L$SEH_prolog_aesni_gcm_decrypt_3-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_3-$L$SEH_begin_aesni_gcm_decrypt_1
DB 48
- DB $L$SEH_prolog_aesni_gcm_decrypt_2-$L$SEH_begin_aesni_gcm_decrypt_1
+ DB $L$SEH_prologue_aesni_gcm_decrypt_2-$L$SEH_begin_aesni_gcm_decrypt_1
DB 80
$L$SEH_info_aesni_gcm_encrypt_0:
DB 1
- DB $L$SEH_prolog_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_endprologue_aesni_gcm_encrypt_22-$L$SEH_begin_aesni_gcm_encrypt_1
DB 33
DB 213
- DB $L$SEH_prolog_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1
DB 248
DW 9
- DB $L$SEH_prolog_aesni_gcm_encrypt_20-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_20-$L$SEH_begin_aesni_gcm_encrypt_1
DB 232
DW 8
- DB $L$SEH_prolog_aesni_gcm_encrypt_19-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_19-$L$SEH_begin_aesni_gcm_encrypt_1
DB 216
DW 7
- DB $L$SEH_prolog_aesni_gcm_encrypt_18-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_18-$L$SEH_begin_aesni_gcm_encrypt_1
DB 200
DW 6
- DB $L$SEH_prolog_aesni_gcm_encrypt_17-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_17-$L$SEH_begin_aesni_gcm_encrypt_1
DB 184
DW 5
- DB $L$SEH_prolog_aesni_gcm_encrypt_16-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_16-$L$SEH_begin_aesni_gcm_encrypt_1
DB 168
DW 4
- DB $L$SEH_prolog_aesni_gcm_encrypt_15-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_15-$L$SEH_begin_aesni_gcm_encrypt_1
DB 152
DW 3
- DB $L$SEH_prolog_aesni_gcm_encrypt_14-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_14-$L$SEH_begin_aesni_gcm_encrypt_1
DB 136
DW 2
- DB $L$SEH_prolog_aesni_gcm_encrypt_13-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_13-$L$SEH_begin_aesni_gcm_encrypt_1
DB 120
DW 1
- DB $L$SEH_prolog_aesni_gcm_encrypt_12-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_12-$L$SEH_begin_aesni_gcm_encrypt_1
DB 104
DW 0
- DB $L$SEH_prolog_aesni_gcm_encrypt_11-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_11-$L$SEH_begin_aesni_gcm_encrypt_1
DB 100
DW 29
- DB $L$SEH_prolog_aesni_gcm_encrypt_10-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_10-$L$SEH_begin_aesni_gcm_encrypt_1
DB 116
DW 28
- DB $L$SEH_prolog_aesni_gcm_encrypt_9-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_9-$L$SEH_begin_aesni_gcm_encrypt_1
DB 3
- DB $L$SEH_prolog_aesni_gcm_encrypt_8-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_8-$L$SEH_begin_aesni_gcm_encrypt_1
DB 1
DW 21
- DB $L$SEH_prolog_aesni_gcm_encrypt_7-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_7-$L$SEH_begin_aesni_gcm_encrypt_1
DB 240
- DB $L$SEH_prolog_aesni_gcm_encrypt_6-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_6-$L$SEH_begin_aesni_gcm_encrypt_1
DB 224
- DB $L$SEH_prolog_aesni_gcm_encrypt_5-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_5-$L$SEH_begin_aesni_gcm_encrypt_1
DB 208
- DB $L$SEH_prolog_aesni_gcm_encrypt_4-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_4-$L$SEH_begin_aesni_gcm_encrypt_1
DB 192
- DB $L$SEH_prolog_aesni_gcm_encrypt_3-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_3-$L$SEH_begin_aesni_gcm_encrypt_1
DB 48
- DB $L$SEH_prolog_aesni_gcm_encrypt_2-$L$SEH_begin_aesni_gcm_encrypt_1
+ DB $L$SEH_prologue_aesni_gcm_encrypt_2-$L$SEH_begin_aesni_gcm_encrypt_1
DB 80
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
diff --git a/src/gen/bcm/ghash-ssse3-x86_64-win.asm b/src/gen/bcm/ghash-ssse3-x86_64-win.asm
index 84c5d40..a8be60e 100644
--- a/src/gen/bcm/ghash-ssse3-x86_64-win.asm
+++ b/src/gen/bcm/ghash-ssse3-x86_64-win.asm
@@ -26,11 +26,12 @@
$L$SEH_begin_gcm_gmult_ssse3_1:
_CET_ENDBR
sub rsp,40
-$L$SEH_prolog_gcm_gmult_ssse3_2:
+$L$SEH_prologue_gcm_gmult_ssse3_2:
movdqa XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_gmult_ssse3_3:
+$L$SEH_prologue_gcm_gmult_ssse3_3:
movdqa XMMWORD[16+rsp],xmm10
-$L$SEH_prolog_gcm_gmult_ssse3_4:
+$L$SEH_prologue_gcm_gmult_ssse3_4:
+$L$SEH_endprologue_gcm_gmult_ssse3_5:
movdqu xmm0,XMMWORD[rcx]
movdqa xmm10,XMMWORD[$L$reverse_bytes]
movdqa xmm2,XMMWORD[$L$low4_mask]
@@ -210,7 +211,7 @@
add rsp,40
ret
-$L$SEH_end_gcm_gmult_ssse3_5:
+$L$SEH_end_gcm_gmult_ssse3_6:
@@ -225,13 +226,14 @@
$L$SEH_begin_gcm_ghash_ssse3_1:
_CET_ENDBR
sub rsp,56
-$L$SEH_prolog_gcm_ghash_ssse3_2:
+$L$SEH_prologue_gcm_ghash_ssse3_2:
movdqa XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_ghash_ssse3_3:
+$L$SEH_prologue_gcm_ghash_ssse3_3:
movdqa XMMWORD[16+rsp],xmm10
-$L$SEH_prolog_gcm_ghash_ssse3_4:
+$L$SEH_prologue_gcm_ghash_ssse3_4:
movdqa XMMWORD[32+rsp],xmm11
-$L$SEH_prolog_gcm_ghash_ssse3_5:
+$L$SEH_prologue_gcm_ghash_ssse3_5:
+$L$SEH_endprologue_gcm_ghash_ssse3_6:
movdqu xmm0,XMMWORD[rcx]
movdqa xmm10,XMMWORD[$L$reverse_bytes]
movdqa xmm11,XMMWORD[$L$low4_mask]
@@ -434,7 +436,7 @@
add rsp,56
ret
-$L$SEH_end_gcm_ghash_ssse3_6:
+$L$SEH_end_gcm_ghash_ssse3_7:
section .rdata rdata align=8
@@ -451,11 +453,11 @@
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_gcm_gmult_ssse3_1 wrt ..imagebase
- DD $L$SEH_end_gcm_gmult_ssse3_5 wrt ..imagebase
+ DD $L$SEH_end_gcm_gmult_ssse3_6 wrt ..imagebase
DD $L$SEH_info_gcm_gmult_ssse3_0 wrt ..imagebase
DD $L$SEH_begin_gcm_ghash_ssse3_1 wrt ..imagebase
- DD $L$SEH_end_gcm_ghash_ssse3_6 wrt ..imagebase
+ DD $L$SEH_end_gcm_ghash_ssse3_7 wrt ..imagebase
DD $L$SEH_info_gcm_ghash_ssse3_0 wrt ..imagebase
@@ -463,33 +465,33 @@
ALIGN 4
$L$SEH_info_gcm_gmult_ssse3_0:
DB 1
- DB $L$SEH_prolog_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
+ DB $L$SEH_endprologue_gcm_gmult_ssse3_5-$L$SEH_begin_gcm_gmult_ssse3_1
DB 5
DB 0
- DB $L$SEH_prolog_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
+ DB $L$SEH_prologue_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
DB 168
DW 1
- DB $L$SEH_prolog_gcm_gmult_ssse3_3-$L$SEH_begin_gcm_gmult_ssse3_1
+ DB $L$SEH_prologue_gcm_gmult_ssse3_3-$L$SEH_begin_gcm_gmult_ssse3_1
DB 104
DW 0
- DB $L$SEH_prolog_gcm_gmult_ssse3_2-$L$SEH_begin_gcm_gmult_ssse3_1
+ DB $L$SEH_prologue_gcm_gmult_ssse3_2-$L$SEH_begin_gcm_gmult_ssse3_1
DB 66
$L$SEH_info_gcm_ghash_ssse3_0:
DB 1
- DB $L$SEH_prolog_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
+ DB $L$SEH_endprologue_gcm_ghash_ssse3_6-$L$SEH_begin_gcm_ghash_ssse3_1
DB 7
DB 0
- DB $L$SEH_prolog_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
+ DB $L$SEH_prologue_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
DB 184
DW 2
- DB $L$SEH_prolog_gcm_ghash_ssse3_4-$L$SEH_begin_gcm_ghash_ssse3_1
+ DB $L$SEH_prologue_gcm_ghash_ssse3_4-$L$SEH_begin_gcm_ghash_ssse3_1
DB 168
DW 1
- DB $L$SEH_prolog_gcm_ghash_ssse3_3-$L$SEH_begin_gcm_ghash_ssse3_1
+ DB $L$SEH_prologue_gcm_ghash_ssse3_3-$L$SEH_begin_gcm_ghash_ssse3_1
DB 104
DW 0
- DB $L$SEH_prolog_gcm_ghash_ssse3_2-$L$SEH_begin_gcm_ghash_ssse3_1
+ DB $L$SEH_prologue_gcm_ghash_ssse3_2-$L$SEH_begin_gcm_ghash_ssse3_1
DB 98
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
diff --git a/src/gen/bcm/ghash-x86_64-apple.S b/src/gen/bcm/ghash-x86_64-apple.S
index 909d659..4961298 100644
--- a/src/gen/bcm/ghash-x86_64-apple.S
+++ b/src/gen/bcm/ghash-x86_64-apple.S
@@ -612,6 +612,7 @@
.p2align 5
_gcm_init_avx:
+
_CET_ENDBR
vzeroupper
@@ -734,6 +735,7 @@
.p2align 5
_gcm_ghash_avx:
+
_CET_ENDBR
vzeroupper
diff --git a/src/gen/bcm/ghash-x86_64-linux.S b/src/gen/bcm/ghash-x86_64-linux.S
index 22429a6..e00bb9f 100644
--- a/src/gen/bcm/ghash-x86_64-linux.S
+++ b/src/gen/bcm/ghash-x86_64-linux.S
@@ -612,6 +612,7 @@
.align 32
gcm_init_avx:
.cfi_startproc
+
_CET_ENDBR
vzeroupper
@@ -734,6 +735,7 @@
.align 32
gcm_ghash_avx:
.cfi_startproc
+
_CET_ENDBR
vzeroupper
diff --git a/src/gen/bcm/ghash-x86_64-win.asm b/src/gen/bcm/ghash-x86_64-win.asm
index 41b189a..bd4d691 100644
--- a/src/gen/bcm/ghash-x86_64-win.asm
+++ b/src/gen/bcm/ghash-x86_64-win.asm
@@ -22,9 +22,10 @@
_CET_ENDBR
$L$_init_clmul:
sub rsp,0x18
-$L$SEH_prolog_gcm_init_clmul_2:
+$L$SEH_prologue_gcm_init_clmul_2:
movaps XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_init_clmul_3:
+$L$SEH_prologue_gcm_init_clmul_3:
+$L$SEH_endprologue_gcm_init_clmul_4:
movdqu xmm2,XMMWORD[rdx]
pshufd xmm2,xmm2,78
@@ -178,7 +179,7 @@
lea rsp,[24+rsp]
ret
-$L$SEH_end_gcm_init_clmul_4:
+$L$SEH_end_gcm_init_clmul_5:
global gcm_gmult_clmul
@@ -244,27 +245,28 @@
$L$_ghash_clmul:
lea rax,[((-136))+rsp]
lea rsp,[((-32))+rax]
-$L$SEH_prolog_gcm_ghash_clmul_2:
+$L$SEH_prologue_gcm_ghash_clmul_2:
movaps XMMWORD[(-32)+rax],xmm6
-$L$SEH_prolog_gcm_ghash_clmul_3:
+$L$SEH_prologue_gcm_ghash_clmul_3:
movaps XMMWORD[(-16)+rax],xmm7
-$L$SEH_prolog_gcm_ghash_clmul_4:
+$L$SEH_prologue_gcm_ghash_clmul_4:
movaps XMMWORD[rax],xmm8
-$L$SEH_prolog_gcm_ghash_clmul_5:
+$L$SEH_prologue_gcm_ghash_clmul_5:
movaps XMMWORD[16+rax],xmm9
-$L$SEH_prolog_gcm_ghash_clmul_6:
+$L$SEH_prologue_gcm_ghash_clmul_6:
movaps XMMWORD[32+rax],xmm10
-$L$SEH_prolog_gcm_ghash_clmul_7:
+$L$SEH_prologue_gcm_ghash_clmul_7:
movaps XMMWORD[48+rax],xmm11
-$L$SEH_prolog_gcm_ghash_clmul_8:
+$L$SEH_prologue_gcm_ghash_clmul_8:
movaps XMMWORD[64+rax],xmm12
-$L$SEH_prolog_gcm_ghash_clmul_9:
+$L$SEH_prologue_gcm_ghash_clmul_9:
movaps XMMWORD[80+rax],xmm13
-$L$SEH_prolog_gcm_ghash_clmul_10:
+$L$SEH_prologue_gcm_ghash_clmul_10:
movaps XMMWORD[96+rax],xmm14
-$L$SEH_prolog_gcm_ghash_clmul_11:
+$L$SEH_prologue_gcm_ghash_clmul_11:
movaps XMMWORD[112+rax],xmm15
-$L$SEH_prolog_gcm_ghash_clmul_12:
+$L$SEH_prologue_gcm_ghash_clmul_12:
+$L$SEH_endprologue_gcm_ghash_clmul_13:
movdqa xmm10,XMMWORD[$L$bswap_mask]
movdqu xmm0,XMMWORD[rcx]
@@ -649,19 +651,20 @@
lea rsp,[168+rsp]
ret
-$L$SEH_end_gcm_ghash_clmul_13:
+$L$SEH_end_gcm_ghash_clmul_14:
global gcm_init_avx
ALIGN 32
gcm_init_avx:
-_CET_ENDBR
$L$SEH_begin_gcm_init_avx_1:
+_CET_ENDBR
sub rsp,0x18
-$L$SEH_prolog_gcm_init_avx_2:
+$L$SEH_prologue_gcm_init_avx_2:
movaps XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_init_avx_3:
+$L$SEH_prologue_gcm_init_avx_3:
+$L$SEH_endprologue_gcm_init_avx_4:
vzeroupper
vmovdqu xmm2,XMMWORD[rdx]
@@ -766,7 +769,7 @@
movaps xmm6,XMMWORD[rsp]
lea rsp,[24+rsp]
ret
-$L$SEH_end_gcm_init_avx_4:
+$L$SEH_end_gcm_init_avx_5:
global gcm_gmult_avx
@@ -783,31 +786,32 @@
ALIGN 32
gcm_ghash_avx:
-_CET_ENDBR
$L$SEH_begin_gcm_ghash_avx_1:
+_CET_ENDBR
lea rax,[((-136))+rsp]
lea rsp,[((-32))+rax]
-$L$SEH_prolog_gcm_ghash_avx_2:
+$L$SEH_prologue_gcm_ghash_avx_2:
movaps XMMWORD[(-32)+rax],xmm6
-$L$SEH_prolog_gcm_ghash_avx_3:
+$L$SEH_prologue_gcm_ghash_avx_3:
movaps XMMWORD[(-16)+rax],xmm7
-$L$SEH_prolog_gcm_ghash_avx_4:
+$L$SEH_prologue_gcm_ghash_avx_4:
movaps XMMWORD[rax],xmm8
-$L$SEH_prolog_gcm_ghash_avx_5:
+$L$SEH_prologue_gcm_ghash_avx_5:
movaps XMMWORD[16+rax],xmm9
-$L$SEH_prolog_gcm_ghash_avx_6:
+$L$SEH_prologue_gcm_ghash_avx_6:
movaps XMMWORD[32+rax],xmm10
-$L$SEH_prolog_gcm_ghash_avx_7:
+$L$SEH_prologue_gcm_ghash_avx_7:
movaps XMMWORD[48+rax],xmm11
-$L$SEH_prolog_gcm_ghash_avx_8:
+$L$SEH_prologue_gcm_ghash_avx_8:
movaps XMMWORD[64+rax],xmm12
-$L$SEH_prolog_gcm_ghash_avx_9:
+$L$SEH_prologue_gcm_ghash_avx_9:
movaps XMMWORD[80+rax],xmm13
-$L$SEH_prolog_gcm_ghash_avx_10:
+$L$SEH_prologue_gcm_ghash_avx_10:
movaps XMMWORD[96+rax],xmm14
-$L$SEH_prolog_gcm_ghash_avx_11:
+$L$SEH_prologue_gcm_ghash_avx_11:
movaps XMMWORD[112+rax],xmm15
-$L$SEH_prolog_gcm_ghash_avx_12:
+$L$SEH_prologue_gcm_ghash_avx_12:
+$L$SEH_endprologue_gcm_ghash_avx_13:
vzeroupper
vmovdqu xmm10,XMMWORD[rcx]
@@ -1191,7 +1195,7 @@
lea rsp,[168+rsp]
ret
-$L$SEH_end_gcm_ghash_avx_13:
+$L$SEH_end_gcm_ghash_avx_14:
section .rdata rdata align=8
ALIGN 64
@@ -1213,19 +1217,19 @@
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_gcm_init_clmul_1 wrt ..imagebase
- DD $L$SEH_end_gcm_init_clmul_4 wrt ..imagebase
+ DD $L$SEH_end_gcm_init_clmul_5 wrt ..imagebase
DD $L$SEH_info_gcm_init_clmul_0 wrt ..imagebase
DD $L$SEH_begin_gcm_ghash_clmul_1 wrt ..imagebase
- DD $L$SEH_end_gcm_ghash_clmul_13 wrt ..imagebase
+ DD $L$SEH_end_gcm_ghash_clmul_14 wrt ..imagebase
DD $L$SEH_info_gcm_ghash_clmul_0 wrt ..imagebase
DD $L$SEH_begin_gcm_init_avx_1 wrt ..imagebase
- DD $L$SEH_end_gcm_init_avx_4 wrt ..imagebase
+ DD $L$SEH_end_gcm_init_avx_5 wrt ..imagebase
DD $L$SEH_info_gcm_init_avx_0 wrt ..imagebase
DD $L$SEH_begin_gcm_ghash_avx_1 wrt ..imagebase
- DD $L$SEH_end_gcm_ghash_avx_13 wrt ..imagebase
+ DD $L$SEH_end_gcm_ghash_avx_14 wrt ..imagebase
DD $L$SEH_info_gcm_ghash_avx_0 wrt ..imagebase
@@ -1233,101 +1237,101 @@
ALIGN 4
$L$SEH_info_gcm_init_clmul_0:
DB 1
- DB $L$SEH_prolog_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1
+ DB $L$SEH_endprologue_gcm_init_clmul_4-$L$SEH_begin_gcm_init_clmul_1
DB 3
DB 0
- DB $L$SEH_prolog_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1
+ DB $L$SEH_prologue_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1
DB 104
DW 0
- DB $L$SEH_prolog_gcm_init_clmul_2-$L$SEH_begin_gcm_init_clmul_1
+ DB $L$SEH_prologue_gcm_init_clmul_2-$L$SEH_begin_gcm_init_clmul_1
DB 34
$L$SEH_info_gcm_ghash_clmul_0:
DB 1
- DB $L$SEH_prolog_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_endprologue_gcm_ghash_clmul_13-$L$SEH_begin_gcm_ghash_clmul_1
DB 22
DB 0
- DB $L$SEH_prolog_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1
DB 248
DW 9
- DB $L$SEH_prolog_gcm_ghash_clmul_11-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_11-$L$SEH_begin_gcm_ghash_clmul_1
DB 232
DW 8
- DB $L$SEH_prolog_gcm_ghash_clmul_10-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_10-$L$SEH_begin_gcm_ghash_clmul_1
DB 216
DW 7
- DB $L$SEH_prolog_gcm_ghash_clmul_9-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_9-$L$SEH_begin_gcm_ghash_clmul_1
DB 200
DW 6
- DB $L$SEH_prolog_gcm_ghash_clmul_8-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_8-$L$SEH_begin_gcm_ghash_clmul_1
DB 184
DW 5
- DB $L$SEH_prolog_gcm_ghash_clmul_7-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_7-$L$SEH_begin_gcm_ghash_clmul_1
DB 168
DW 4
- DB $L$SEH_prolog_gcm_ghash_clmul_6-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_6-$L$SEH_begin_gcm_ghash_clmul_1
DB 152
DW 3
- DB $L$SEH_prolog_gcm_ghash_clmul_5-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_5-$L$SEH_begin_gcm_ghash_clmul_1
DB 136
DW 2
- DB $L$SEH_prolog_gcm_ghash_clmul_4-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_4-$L$SEH_begin_gcm_ghash_clmul_1
DB 120
DW 1
- DB $L$SEH_prolog_gcm_ghash_clmul_3-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_3-$L$SEH_begin_gcm_ghash_clmul_1
DB 104
DW 0
- DB $L$SEH_prolog_gcm_ghash_clmul_2-$L$SEH_begin_gcm_ghash_clmul_1
+ DB $L$SEH_prologue_gcm_ghash_clmul_2-$L$SEH_begin_gcm_ghash_clmul_1
DB 1
DW 21
$L$SEH_info_gcm_init_avx_0:
DB 1
- DB $L$SEH_prolog_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1
+ DB $L$SEH_endprologue_gcm_init_avx_4-$L$SEH_begin_gcm_init_avx_1
DB 3
DB 0
- DB $L$SEH_prolog_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1
+ DB $L$SEH_prologue_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1
DB 104
DW 0
- DB $L$SEH_prolog_gcm_init_avx_2-$L$SEH_begin_gcm_init_avx_1
+ DB $L$SEH_prologue_gcm_init_avx_2-$L$SEH_begin_gcm_init_avx_1
DB 34
$L$SEH_info_gcm_ghash_avx_0:
DB 1
- DB $L$SEH_prolog_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_endprologue_gcm_ghash_avx_13-$L$SEH_begin_gcm_ghash_avx_1
DB 22
DB 0
- DB $L$SEH_prolog_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1
DB 248
DW 9
- DB $L$SEH_prolog_gcm_ghash_avx_11-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_11-$L$SEH_begin_gcm_ghash_avx_1
DB 232
DW 8
- DB $L$SEH_prolog_gcm_ghash_avx_10-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_10-$L$SEH_begin_gcm_ghash_avx_1
DB 216
DW 7
- DB $L$SEH_prolog_gcm_ghash_avx_9-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_9-$L$SEH_begin_gcm_ghash_avx_1
DB 200
DW 6
- DB $L$SEH_prolog_gcm_ghash_avx_8-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_8-$L$SEH_begin_gcm_ghash_avx_1
DB 184
DW 5
- DB $L$SEH_prolog_gcm_ghash_avx_7-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_7-$L$SEH_begin_gcm_ghash_avx_1
DB 168
DW 4
- DB $L$SEH_prolog_gcm_ghash_avx_6-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_6-$L$SEH_begin_gcm_ghash_avx_1
DB 152
DW 3
- DB $L$SEH_prolog_gcm_ghash_avx_5-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_5-$L$SEH_begin_gcm_ghash_avx_1
DB 136
DW 2
- DB $L$SEH_prolog_gcm_ghash_avx_4-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_4-$L$SEH_begin_gcm_ghash_avx_1
DB 120
DW 1
- DB $L$SEH_prolog_gcm_ghash_avx_3-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_3-$L$SEH_begin_gcm_ghash_avx_1
DB 104
DW 0
- DB $L$SEH_prolog_gcm_ghash_avx_2-$L$SEH_begin_gcm_ghash_avx_1
+ DB $L$SEH_prologue_gcm_ghash_avx_2-$L$SEH_begin_gcm_ghash_avx_1
DB 1
DW 21
%else
diff --git a/src/gen/test_support/trampoline-x86_64-apple.S b/src/gen/test_support/trampoline-x86_64-apple.S
index 7c76d2d..f618dac 100644
--- a/src/gen/test_support/trampoline-x86_64-apple.S
+++ b/src/gen/test_support/trampoline-x86_64-apple.S
@@ -52,6 +52,7 @@
movq %r15,104(%rsp)
+
movq 0(%rsi),%rbx
movq 8(%rsi),%rbp
movq 16(%rsi),%r12
@@ -473,6 +474,7 @@
+
nop
popq %r12
@@ -496,6 +498,7 @@
+
movq %r12,%rax
incq %rax
movq %rax,(%rsp)
diff --git a/src/gen/test_support/trampoline-x86_64-linux.S b/src/gen/test_support/trampoline-x86_64-linux.S
index 93af8b9..8557e9e 100644
--- a/src/gen/test_support/trampoline-x86_64-linux.S
+++ b/src/gen/test_support/trampoline-x86_64-linux.S
@@ -52,6 +52,7 @@
movq %r15,104(%rsp)
.cfi_offset r15, -24
+
movq 0(%rsi),%rbx
movq 8(%rsi),%rbp
movq 16(%rsi),%r12
@@ -474,6 +475,7 @@
+
nop
popq %r12
.cfi_adjust_cfa_offset -8
@@ -499,6 +501,7 @@
.cfi_offset %r12,-16
+
movq %r12,%rax
incq %rax
movq %rax,(%rsp)
diff --git a/src/gen/test_support/trampoline-x86_64-win.asm b/src/gen/test_support/trampoline-x86_64-win.asm
index ae04cbe..dca3957 100644
--- a/src/gen/test_support/trampoline-x86_64-win.asm
+++ b/src/gen/test_support/trampoline-x86_64-win.asm
@@ -39,61 +39,62 @@
sub rsp,344
-$L$SEH_prolog_abi_test_trampoline_2:
+$L$SEH_prologue_abi_test_trampoline_2:
mov QWORD[112+rsp],rbx
-$L$SEH_prolog_abi_test_trampoline_3:
+$L$SEH_prologue_abi_test_trampoline_3:
mov QWORD[120+rsp],rbp
-$L$SEH_prolog_abi_test_trampoline_4:
+$L$SEH_prologue_abi_test_trampoline_4:
mov QWORD[128+rsp],rdi
-$L$SEH_prolog_abi_test_trampoline_5:
+$L$SEH_prologue_abi_test_trampoline_5:
mov QWORD[136+rsp],rsi
-$L$SEH_prolog_abi_test_trampoline_6:
+$L$SEH_prologue_abi_test_trampoline_6:
mov QWORD[144+rsp],r12
-$L$SEH_prolog_abi_test_trampoline_7:
+$L$SEH_prologue_abi_test_trampoline_7:
mov QWORD[152+rsp],r13
-$L$SEH_prolog_abi_test_trampoline_8:
+$L$SEH_prologue_abi_test_trampoline_8:
mov QWORD[160+rsp],r14
-$L$SEH_prolog_abi_test_trampoline_9:
+$L$SEH_prologue_abi_test_trampoline_9:
mov QWORD[168+rsp],r15
-$L$SEH_prolog_abi_test_trampoline_10:
+$L$SEH_prologue_abi_test_trampoline_10:
movdqa XMMWORD[176+rsp],xmm6
-$L$SEH_prolog_abi_test_trampoline_11:
+$L$SEH_prologue_abi_test_trampoline_11:
movdqa XMMWORD[192+rsp],xmm7
-$L$SEH_prolog_abi_test_trampoline_12:
+$L$SEH_prologue_abi_test_trampoline_12:
movdqa XMMWORD[208+rsp],xmm8
-$L$SEH_prolog_abi_test_trampoline_13:
+$L$SEH_prologue_abi_test_trampoline_13:
movdqa XMMWORD[224+rsp],xmm9
-$L$SEH_prolog_abi_test_trampoline_14:
+$L$SEH_prologue_abi_test_trampoline_14:
movdqa XMMWORD[240+rsp],xmm10
-$L$SEH_prolog_abi_test_trampoline_15:
+$L$SEH_prologue_abi_test_trampoline_15:
movdqa XMMWORD[256+rsp],xmm11
-$L$SEH_prolog_abi_test_trampoline_16:
+$L$SEH_prologue_abi_test_trampoline_16:
movdqa XMMWORD[272+rsp],xmm12
-$L$SEH_prolog_abi_test_trampoline_17:
+$L$SEH_prologue_abi_test_trampoline_17:
movdqa XMMWORD[288+rsp],xmm13
-$L$SEH_prolog_abi_test_trampoline_18:
+$L$SEH_prologue_abi_test_trampoline_18:
movdqa XMMWORD[304+rsp],xmm14
-$L$SEH_prolog_abi_test_trampoline_19:
+$L$SEH_prologue_abi_test_trampoline_19:
movdqa XMMWORD[320+rsp],xmm15
-$L$SEH_prolog_abi_test_trampoline_20:
+$L$SEH_prologue_abi_test_trampoline_20:
+$L$SEH_endprologue_abi_test_trampoline_21:
mov rbx,QWORD[rdx]
mov rbp,QWORD[8+rdx]
mov rdi,QWORD[16+rdx]
@@ -254,7 +255,7 @@
ret
-$L$SEH_end_abi_test_trampoline_21:
+$L$SEH_end_abi_test_trampoline_22:
global abi_test_clobber_rax
@@ -516,7 +517,8 @@
_CET_ENDBR
push r12
-$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2:
+$L$SEH_prologue_abi_test_bad_unwind_wrong_register_2:
+$L$SEH_endprologue_abi_test_bad_unwind_wrong_register_3:
@@ -524,7 +526,7 @@
pop r12
ret
-$L$SEH_end_abi_test_bad_unwind_wrong_register_3:
+$L$SEH_end_abi_test_bad_unwind_wrong_register_4:
@@ -540,7 +542,8 @@
_CET_ENDBR
push r12
-$L$SEH_prolog_abi_test_bad_unwind_temporary_2:
+$L$SEH_prologue_abi_test_bad_unwind_temporary_2:
+$L$SEH_endprologue_abi_test_bad_unwind_temporary_3:
mov rax,r12
inc rax
@@ -555,7 +558,7 @@
ret
-$L$SEH_end_abi_test_bad_unwind_temporary_3:
+$L$SEH_end_abi_test_bad_unwind_temporary_4:
@@ -592,7 +595,8 @@
abi_test_bad_unwind_epilog:
$L$SEH_begin_abi_test_bad_unwind_epilog_1:
push r12
-$L$SEH_prolog_abi_test_bad_unwind_epilog_2:
+$L$SEH_prologue_abi_test_bad_unwind_epilog_2:
+$L$SEH_endprologue_abi_test_bad_unwind_epilog_3:
nop
@@ -600,24 +604,24 @@
pop r12
nop
ret
-$L$SEH_end_abi_test_bad_unwind_epilog_3:
+$L$SEH_end_abi_test_bad_unwind_epilog_4:
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_abi_test_trampoline_1 wrt ..imagebase
- DD $L$SEH_end_abi_test_trampoline_21 wrt ..imagebase
+ DD $L$SEH_end_abi_test_trampoline_22 wrt ..imagebase
DD $L$SEH_info_abi_test_trampoline_0 wrt ..imagebase
DD $L$SEH_begin_abi_test_bad_unwind_wrong_register_1 wrt ..imagebase
- DD $L$SEH_end_abi_test_bad_unwind_wrong_register_3 wrt ..imagebase
+ DD $L$SEH_end_abi_test_bad_unwind_wrong_register_4 wrt ..imagebase
DD $L$SEH_info_abi_test_bad_unwind_wrong_register_0 wrt ..imagebase
DD $L$SEH_begin_abi_test_bad_unwind_temporary_1 wrt ..imagebase
- DD $L$SEH_end_abi_test_bad_unwind_temporary_3 wrt ..imagebase
+ DD $L$SEH_end_abi_test_bad_unwind_temporary_4 wrt ..imagebase
DD $L$SEH_info_abi_test_bad_unwind_temporary_0 wrt ..imagebase
DD $L$SEH_begin_abi_test_bad_unwind_epilog_1 wrt ..imagebase
- DD $L$SEH_end_abi_test_bad_unwind_epilog_3 wrt ..imagebase
+ DD $L$SEH_end_abi_test_bad_unwind_epilog_4 wrt ..imagebase
DD $L$SEH_info_abi_test_bad_unwind_epilog_0 wrt ..imagebase
@@ -625,89 +629,89 @@
ALIGN 4
$L$SEH_info_abi_test_trampoline_0:
DB 1
- DB $L$SEH_prolog_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_endprologue_abi_test_trampoline_21-$L$SEH_begin_abi_test_trampoline_1
DB 38
DB 0
- DB $L$SEH_prolog_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
DB 248
DW 20
- DB $L$SEH_prolog_abi_test_trampoline_19-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_19-$L$SEH_begin_abi_test_trampoline_1
DB 232
DW 19
- DB $L$SEH_prolog_abi_test_trampoline_18-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_18-$L$SEH_begin_abi_test_trampoline_1
DB 216
DW 18
- DB $L$SEH_prolog_abi_test_trampoline_17-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_17-$L$SEH_begin_abi_test_trampoline_1
DB 200
DW 17
- DB $L$SEH_prolog_abi_test_trampoline_16-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_16-$L$SEH_begin_abi_test_trampoline_1
DB 184
DW 16
- DB $L$SEH_prolog_abi_test_trampoline_15-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_15-$L$SEH_begin_abi_test_trampoline_1
DB 168
DW 15
- DB $L$SEH_prolog_abi_test_trampoline_14-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_14-$L$SEH_begin_abi_test_trampoline_1
DB 152
DW 14
- DB $L$SEH_prolog_abi_test_trampoline_13-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_13-$L$SEH_begin_abi_test_trampoline_1
DB 136
DW 13
- DB $L$SEH_prolog_abi_test_trampoline_12-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_12-$L$SEH_begin_abi_test_trampoline_1
DB 120
DW 12
- DB $L$SEH_prolog_abi_test_trampoline_11-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_11-$L$SEH_begin_abi_test_trampoline_1
DB 104
DW 11
- DB $L$SEH_prolog_abi_test_trampoline_10-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_10-$L$SEH_begin_abi_test_trampoline_1
DB 244
DW 21
- DB $L$SEH_prolog_abi_test_trampoline_9-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_9-$L$SEH_begin_abi_test_trampoline_1
DB 228
DW 20
- DB $L$SEH_prolog_abi_test_trampoline_8-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_8-$L$SEH_begin_abi_test_trampoline_1
DB 212
DW 19
- DB $L$SEH_prolog_abi_test_trampoline_7-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_7-$L$SEH_begin_abi_test_trampoline_1
DB 196
DW 18
- DB $L$SEH_prolog_abi_test_trampoline_6-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_6-$L$SEH_begin_abi_test_trampoline_1
DB 100
DW 17
- DB $L$SEH_prolog_abi_test_trampoline_5-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_5-$L$SEH_begin_abi_test_trampoline_1
DB 116
DW 16
- DB $L$SEH_prolog_abi_test_trampoline_4-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_4-$L$SEH_begin_abi_test_trampoline_1
DB 84
DW 15
- DB $L$SEH_prolog_abi_test_trampoline_3-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_3-$L$SEH_begin_abi_test_trampoline_1
DB 52
DW 14
- DB $L$SEH_prolog_abi_test_trampoline_2-$L$SEH_begin_abi_test_trampoline_1
+ DB $L$SEH_prologue_abi_test_trampoline_2-$L$SEH_begin_abi_test_trampoline_1
DB 1
DW 43
$L$SEH_info_abi_test_bad_unwind_wrong_register_0:
DB 1
- DB $L$SEH_prolog_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
+ DB $L$SEH_endprologue_abi_test_bad_unwind_wrong_register_3-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
DB 1
DB 0
- DB $L$SEH_prolog_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
+ DB $L$SEH_prologue_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
DB 208
$L$SEH_info_abi_test_bad_unwind_temporary_0:
DB 1
- DB $L$SEH_prolog_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
+ DB $L$SEH_endprologue_abi_test_bad_unwind_temporary_3-$L$SEH_begin_abi_test_bad_unwind_temporary_1
DB 1
DB 0
- DB $L$SEH_prolog_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
+ DB $L$SEH_prologue_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
DB 192
$L$SEH_info_abi_test_bad_unwind_epilog_0:
DB 1
- DB $L$SEH_prolog_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
+ DB $L$SEH_endprologue_abi_test_bad_unwind_epilog_3-$L$SEH_begin_abi_test_bad_unwind_epilog_1
DB 1
DB 0
- DB $L$SEH_prolog_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
+ DB $L$SEH_prologue_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
DB 192
%else
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738