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 82e46d48a..eabaa1b96 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 @@ $code.=<<___ 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 @@ $code.=<<___ 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 4a850f479..bdfbe04d7 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 @@ gcm_gmult_ssse3: ____ $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 @@ gcm_ghash_ssse3: ____ $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 33ee1cbab..c026d8f9d 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 @@ gcm_init_clmul: ___ $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 @@ $code.=<<___; .align 32 gcm_init_avx: .cfi_startproc +.seh_startproc _CET_ENDBR ___ if ($avx) { @@ -711,11 +714,11 @@ my ($Htbl,$Xip)=@_4args; 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 @@ $code.=<<___; .align 32 gcm_ghash_avx: .cfi_startproc +.seh_startproc _CET_ENDBR ___ if ($avx) { @@ -872,30 +876,30 @@ my ($Xlo,$Xhi,$Xmi, $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 9fb1de19c..5b7705d4e 100755 --- a/src/crypto/perlasm/x86_64-xlate.pl +++ b/src/crypto/perlasm/x86_64-xlate.pl @@ -714,16 +714,21 @@ my %globals; } } { 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 @@ my %globals; # 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 @@ my %globals; 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 @@ my %globals; 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 @@ my %globals; 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 53b4bcd67..d8d2be282 100755 --- a/src/crypto/test/asm/trampoline-x86_64.pl +++ b/src/crypto/test/asm/trampoline-x86_64.pl @@ -179,7 +179,7 @@ my $caller_state_offset = $scratch_offset + 8; $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 @@ $code .= store_caller_state($caller_state_offset, "%rsp", sub { # 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 @@ abi_test_bad_unwind_wrong_register: 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 @@ abi_test_bad_unwind_temporary: pushq %r12 .cfi_push %r12 .seh_pushreg %r12 +.seh_endprologue movq %r12, %rax inc %rax @@ -422,6 +425,7 @@ abi_test_bad_unwind_epilog: .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 d7a2665e4..7564a1cf0 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 @@ _CET_ENDBR 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$dec_no_key_aliasing: $L$gcm_dec_abort: ret -$L$SEH_end_aesni_gcm_decrypt_22: +$L$SEH_end_aesni_gcm_decrypt_23: @@ -629,57 +630,58 @@ EXTERN BORINGSSL_function_hit 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$enc_no_key_aliasing: $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 .text 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 @@ section .xdata rdata align=8 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 84c5d40bd..a8be60ed8 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 @@ gcm_gmult_ssse3: $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 @@ DB 102,65,15,56,0,210 add rsp,40 ret -$L$SEH_end_gcm_gmult_ssse3_5: +$L$SEH_end_gcm_gmult_ssse3_6: @@ -225,13 +226,14 @@ gcm_ghash_ssse3: $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 @@ DB 102,65,15,56,0,194 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 .text 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 @@ section .xdata rdata align=8 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 909d65966..496129882 100644 --- a/src/gen/bcm/ghash-x86_64-apple.S +++ b/src/gen/bcm/ghash-x86_64-apple.S @@ -612,6 +612,7 @@ L$done: .p2align 5 _gcm_init_avx: + _CET_ENDBR vzeroupper @@ -734,6 +735,7 @@ _CET_ENDBR .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 22429a67b..e00bb9fda 100644 --- a/src/gen/bcm/ghash-x86_64-linux.S +++ b/src/gen/bcm/ghash-x86_64-linux.S @@ -612,6 +612,7 @@ _CET_ENDBR .align 32 gcm_init_avx: .cfi_startproc + _CET_ENDBR vzeroupper @@ -734,6 +735,7 @@ _CET_ENDBR .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 41b189a2b..bd4d691bd 100644 --- a/src/gen/bcm/ghash-x86_64-win.asm +++ b/src/gen/bcm/ghash-x86_64-win.asm @@ -22,9 +22,10 @@ $L$SEH_begin_gcm_init_clmul_1: _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 @@ DB 102,15,58,15,227,8 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 @@ _CET_ENDBR $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 @@ DB 102,65,15,56,0,194 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 @@ $L$init_start_avx: 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 @@ global gcm_ghash_avx 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 @@ $L$tail_no_xor_avx: 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 .text 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 @@ section .xdata rdata align=8 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 7c76d2d74..f618dacd1 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 @@ _CET_ENDBR movq %r15,104(%rsp) + movq 0(%rsi),%rbx movq 8(%rsi),%rbp movq 16(%rsi),%r12 @@ -473,6 +474,7 @@ _CET_ENDBR + nop popq %r12 @@ -496,6 +498,7 @@ _CET_ENDBR + 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 93af8b948..8557e9e4f 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 @@ _CET_ENDBR movq %r15,104(%rsp) .cfi_offset r15, -24 + movq 0(%rsi),%rbx movq 8(%rsi),%rbp movq 16(%rsi),%r12 @@ -474,6 +475,7 @@ _CET_ENDBR + nop popq %r12 .cfi_adjust_cfa_offset -8 @@ -499,6 +501,7 @@ _CET_ENDBR .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 ae04cbed4..dca395782 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 @@ _CET_ENDBR 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 @@ $L$call_done: ret -$L$SEH_end_abi_test_trampoline_21: +$L$SEH_end_abi_test_trampoline_22: global abi_test_clobber_rax @@ -516,7 +517,8 @@ $L$SEH_begin_abi_test_bad_unwind_wrong_register_1: _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 @@ $L$SEH_prolog_abi_test_bad_unwind_wrong_register_2: 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 @@ $L$SEH_begin_abi_test_bad_unwind_temporary_1: _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 @@ $L$SEH_prolog_abi_test_bad_unwind_temporary_2: ret -$L$SEH_end_abi_test_bad_unwind_temporary_3: +$L$SEH_end_abi_test_bad_unwind_temporary_4: @@ -592,7 +595,8 @@ ALIGN 16 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 @@ $L$SEH_prolog_abi_test_bad_unwind_epilog_2: 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 @@ section .xdata rdata align=8 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