chacha/asm/chacha-x86_64.pl: add CFI annotations.
[openssl.git] / crypto / chacha / asm / chacha-x86_64.pl
index 7fc1749f53e3d094d13dac686d36a418bc095c60..b59d96f8da64ae3b9a62350aff7fa5f60ad0b929 100755 (executable)
@@ -242,6 +242,7 @@ $code.=<<___;
 .type  ChaCha20_ctr32,\@function,5
 .align 64
 ChaCha20_ctr32:
 .type  ChaCha20_ctr32,\@function,5
 .align 64
 ChaCha20_ctr32:
+.cfi_startproc
        cmp     \$0,$len
        je      .Lno_data
        mov     OPENSSL_ia32cap_P+4(%rip),%r10
        cmp     \$0,$len
        je      .Lno_data
        mov     OPENSSL_ia32cap_P+4(%rip),%r10
@@ -255,12 +256,19 @@ $code.=<<___;
        jnz     .LChaCha20_ssse3
 
        push    %rbx
        jnz     .LChaCha20_ssse3
 
        push    %rbx
+.cfi_push      %rbx
        push    %rbp
        push    %rbp
+.cfi_push      %rbp
        push    %r12
        push    %r12
+.cfi_push      %r12
        push    %r13
        push    %r13
+.cfi_push      %r13
        push    %r14
        push    %r14
+.cfi_push      %r14
        push    %r15
        push    %r15
+.cfi_push      %r15
        sub     \$64+24,%rsp
        sub     \$64+24,%rsp
+.cfi_adjust_cfa_offset 64+24
 .Lctr32_body:
 
        #movdqa .Lsigma(%rip),%xmm0
 .Lctr32_body:
 
        #movdqa .Lsigma(%rip),%xmm0
@@ -401,15 +409,24 @@ $code.=<<___;
 
 .Ldone:
        lea     64+24+48(%rsp),%rsi
 
 .Ldone:
        lea     64+24+48(%rsp),%rsi
+.cfi_def_cfa   %rsi,8
        mov     -48(%rsi),%r15
        mov     -48(%rsi),%r15
+.cfi_restore   %r15
        mov     -40(%rsi),%r14
        mov     -40(%rsi),%r14
+.cfi_restore   %r14
        mov     -32(%rsi),%r13
        mov     -32(%rsi),%r13
+.cfi_restore   %r13
        mov     -24(%rsi),%r12
        mov     -24(%rsi),%r12
+.cfi_restore   %r12
        mov     -16(%rsi),%rbp
        mov     -16(%rsi),%rbp
+.cfi_restore   %rbp
        mov     -8(%rsi),%rbx
        mov     -8(%rsi),%rbx
+.cfi_restore   %rbx
        lea     (%rsi),%rsp
        lea     (%rsi),%rsp
+.cfi_def_cfa_register  %rsp
 .Lno_data:
        ret
 .Lno_data:
        ret
+.cfi_endproc
 .size  ChaCha20_ctr32,.-ChaCha20_ctr32
 ___
 
 .size  ChaCha20_ctr32,.-ChaCha20_ctr32
 ___
 
@@ -448,8 +465,10 @@ $code.=<<___;
 .type  ChaCha20_ssse3,\@function,5
 .align 32
 ChaCha20_ssse3:
 .type  ChaCha20_ssse3,\@function,5
 .align 32
 ChaCha20_ssse3:
+.cfi_startproc
 .LChaCha20_ssse3:
        mov     %rsp,%r9                # frame pointer
 .LChaCha20_ssse3:
        mov     %rsp,%r9                # frame pointer
+.cfi_def_cfa_register  %r9
 ___
 $code.=<<___   if ($avx);
        test    \$`1<<(43-32)`,%r10d
 ___
 $code.=<<___   if ($avx);
        test    \$`1<<(43-32)`,%r10d
@@ -565,8 +584,10 @@ $code.=<<___       if ($win64);
 ___
 $code.=<<___;
        lea     (%r9),%rsp
 ___
 $code.=<<___;
        lea     (%r9),%rsp
+.cfi_def_cfa_register  %rsp
 .Lssse3_epilogue:
        ret
 .Lssse3_epilogue:
        ret
+.cfi_endproc
 .size  ChaCha20_ssse3,.-ChaCha20_ssse3
 ___
 }
 .size  ChaCha20_ssse3,.-ChaCha20_ssse3
 ___
 }
@@ -708,8 +729,10 @@ $code.=<<___;
 .type  ChaCha20_4x,\@function,5
 .align 32
 ChaCha20_4x:
 .type  ChaCha20_4x,\@function,5
 .align 32
 ChaCha20_4x:
+.cfi_startproc
 .LChaCha20_4x:
        mov             %rsp,%r9                # frame pointer
 .LChaCha20_4x:
        mov             %rsp,%r9                # frame pointer
+.cfi_def_cfa_register  %r9
        mov             %r10,%r11
 ___
 $code.=<<___   if ($avx>1);
        mov             %r10,%r11
 ___
 $code.=<<___   if ($avx>1);
@@ -1149,8 +1172,10 @@ $code.=<<___     if ($win64);
 ___
 $code.=<<___;
        lea             (%r9),%rsp
 ___
 $code.=<<___;
        lea             (%r9),%rsp
+.cfi_def_cfa_register  %rsp
 .L4x_epilogue:
        ret
 .L4x_epilogue:
        ret
+.cfi_endproc
 .size  ChaCha20_4x,.-ChaCha20_4x
 ___
 }
 .size  ChaCha20_4x,.-ChaCha20_4x
 ___
 }
@@ -1237,8 +1262,10 @@ $code.=<<___;
 .type  ChaCha20_4xop,\@function,5
 .align 32
 ChaCha20_4xop:
 .type  ChaCha20_4xop,\@function,5
 .align 32
 ChaCha20_4xop:
+.cfi_startproc
 .LChaCha20_4xop:
        mov             %rsp,%r9                # frame pointer
 .LChaCha20_4xop:
        mov             %rsp,%r9                # frame pointer
+.cfi_def_cfa_register  %r9
        sub             \$0x140+$xframe,%rsp
 ___
        ################ stack layout
        sub             \$0x140+$xframe,%rsp
 ___
        ################ stack layout
@@ -1601,8 +1628,10 @@ $code.=<<___     if ($win64);
 ___
 $code.=<<___;
        lea             (%r9),%rsp
 ___
 $code.=<<___;
        lea             (%r9),%rsp
+.cfi_def_cfa_register  %rsp
 .L4xop_epilogue:
        ret
 .L4xop_epilogue:
        ret
+.cfi_endproc
 .size  ChaCha20_4xop,.-ChaCha20_4xop
 ___
 }
 .size  ChaCha20_4xop,.-ChaCha20_4xop
 ___
 }
@@ -1735,8 +1764,10 @@ $code.=<<___;
 .type  ChaCha20_8x,\@function,5
 .align 32
 ChaCha20_8x:
 .type  ChaCha20_8x,\@function,5
 .align 32
 ChaCha20_8x:
+.cfi_startproc
 .LChaCha20_8x:
        mov             %rsp,%r9                # frame register
 .LChaCha20_8x:
        mov             %rsp,%r9                # frame register
+.cfi_def_cfa_register  %r9
        sub             \$0x280+$xframe,%rsp
        and             \$-32,%rsp
 ___
        sub             \$0x280+$xframe,%rsp
        and             \$-32,%rsp
 ___
@@ -2242,8 +2273,10 @@ $code.=<<___     if ($win64);
 ___
 $code.=<<___;
        lea             (%r9),%rsp
 ___
 $code.=<<___;
        lea             (%r9),%rsp
+.cfi_def_cfa_register  %rsp
 .L8x_epilogue:
        ret
 .L8x_epilogue:
        ret
+.cfi_endproc
 .size  ChaCha20_8x,.-ChaCha20_8x
 ___
 }
 .size  ChaCha20_8x,.-ChaCha20_8x
 ___
 }
@@ -2280,8 +2313,10 @@ $code.=<<___;
 .type  ChaCha20_avx512,\@function,5
 .align 32
 ChaCha20_avx512:
 .type  ChaCha20_avx512,\@function,5
 .align 32
 ChaCha20_avx512:
+.cfi_startproc
 .LChaCha20_avx512:
        mov     %rsp,%r9                # frame pointer
 .LChaCha20_avx512:
        mov     %rsp,%r9                # frame pointer
+.cfi_def_cfa_register  %r9
        cmp     \$512,$len
        ja      .LChaCha20_16x
 
        cmp     \$512,$len
        ja      .LChaCha20_16x
 
@@ -2461,8 +2496,10 @@ $code.=<<___     if ($win64);
 ___
 $code.=<<___;
        lea     (%r9),%rsp
 ___
 $code.=<<___;
        lea     (%r9),%rsp
+.cfi_def_cfa_register  %rsp
 .Lavx512_epilogue:
        ret
 .Lavx512_epilogue:
        ret
+.cfi_endproc
 .size  ChaCha20_avx512,.-ChaCha20_avx512
 ___
 }
 .size  ChaCha20_avx512,.-ChaCha20_avx512
 ___
 }
@@ -2544,8 +2581,10 @@ $code.=<<___;
 .type  ChaCha20_16x,\@function,5
 .align 32
 ChaCha20_16x:
 .type  ChaCha20_16x,\@function,5
 .align 32
 ChaCha20_16x:
+.cfi_startproc
 .LChaCha20_16x:
        mov             %rsp,%r9                # frame register
 .LChaCha20_16x:
        mov             %rsp,%r9                # frame register
+.cfi_def_cfa_register  %r9
        sub             \$64+$xframe,%rsp
        and             \$-64,%rsp
 ___
        sub             \$64+$xframe,%rsp
        and             \$-64,%rsp
 ___
@@ -2963,8 +3002,10 @@ $code.=<<___     if ($win64);
 ___
 $code.=<<___;
        lea             (%r9),%rsp
 ___
 $code.=<<___;
        lea             (%r9),%rsp
+.cfi_def_cfa_register  %rsp
 .L16x_epilogue:
        ret
 .L16x_epilogue:
        ret
+.cfi_endproc
 .size  ChaCha20_16x,.-ChaCha20_16x
 ___
 }
 .size  ChaCha20_16x,.-ChaCha20_16x
 ___
 }