mirror of
https://github.com/AntelopeIO/boringssl.git
synced 2026-07-21 14:43:53 +00:00
Fix RBP-based unwind in fiat assembly
RBP pointed 8 bytes off of where it should be. I've left the RSP offsets alone, though it does mean they're shifted by 8 from what they previously were. Per Andres, the new version of CryptOpt will generate an RBP-compatible prolog, but for now I've just fixed it up by hand. (This part was already hand-written.) Change-Id: I23720e76affff6fae46b8f85b0a509380ccc8bc0 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62805 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Adam Langley <agl@google.com> Auto-Submit: David Benjamin <davidben@google.com>
This commit is contained in:
committed by
Boringssl LUCI CQ
parent
a1403cba9d
commit
11d943ac2d
+10
-8
@@ -18,8 +18,9 @@ fiat_curve25519_adx_mul:
|
||||
|
||||
.cfi_startproc
|
||||
_CET_ENDBR
|
||||
mov [rsp - 0x08], rbp
|
||||
.cfi_offset rbp, -8-0x08
|
||||
push rbp
|
||||
.cfi_adjust_cfa_offset 8
|
||||
.cfi_offset rbp, -16
|
||||
mov rbp, rsp
|
||||
|
||||
mov rax, rdx
|
||||
@@ -27,21 +28,21 @@ mov rdx, [ rsi + 0x18 ]
|
||||
mulx r11, r10, [ rax + 0x8 ]
|
||||
mov rdx, [ rax + 0x0 ]
|
||||
mov [ rsp - 0x58 ], r15
|
||||
.cfi_offset r15, -8-0x58
|
||||
.cfi_offset r15, -16-0x58
|
||||
mulx r8, rcx, [ rsi + 0x18 ]
|
||||
mov rdx, [ rsi + 0x8 ]
|
||||
mov [ rsp - 0x80 ], rbx
|
||||
.cfi_offset rbx, -8-0x80
|
||||
.cfi_offset rbx, -16-0x80
|
||||
mulx rbx, r9, [ rax + 0x18 ]
|
||||
mov rdx, [ rsi + 0x8 ]
|
||||
mov [ rsp - 0x70 ], r12
|
||||
.cfi_offset r12, -8-0x70
|
||||
.cfi_offset r12, -16-0x70
|
||||
mulx r15, r12, [ rax + 0x8 ]
|
||||
mov rdx, [ rsi + 0x0 ]
|
||||
mov [ rsp - 0x68 ], r13
|
||||
.cfi_offset r13, -8-0x68
|
||||
.cfi_offset r13, -16-0x68
|
||||
mov [ rsp - 0x60 ], r14
|
||||
.cfi_offset r14, -8-0x60
|
||||
.cfi_offset r14, -16-0x60
|
||||
mulx r14, r13, [ rax + 0x0 ]
|
||||
mov rdx, [ rax + 0x10 ]
|
||||
mov [ rsp - 0x18 ], r15
|
||||
@@ -160,7 +161,8 @@ mov r13, [ rsp - 0x68 ]
|
||||
mov r14, [ rsp - 0x60 ]
|
||||
mov r15, [ rsp - 0x58 ]
|
||||
|
||||
mov rbp, [rsp - 0x08]
|
||||
pop rbp
|
||||
.cfi_adjust_cfa_offset -8
|
||||
ret
|
||||
.cfi_endproc
|
||||
#if defined(__ELF__)
|
||||
|
||||
+10
-8
@@ -18,8 +18,9 @@ fiat_curve25519_adx_square:
|
||||
|
||||
.cfi_startproc
|
||||
_CET_ENDBR
|
||||
mov [rsp - 0x08], rbp
|
||||
.cfi_offset rbp, -8-0x08
|
||||
push rbp
|
||||
.cfi_adjust_cfa_offset 8
|
||||
.cfi_offset rbp, -16
|
||||
mov rbp, rsp
|
||||
|
||||
mov rdx, [ rsi + 0x0 ]
|
||||
@@ -32,7 +33,7 @@ mov rdx, [ rsi + 0x0 ]
|
||||
mulx r9, r8, [ rsi + 0x18 ]
|
||||
mov rdx, [ rsi + 0x8 ]
|
||||
mov [ rsp - 0x80 ], rbx
|
||||
.cfi_offset rbx, -8-0x80
|
||||
.cfi_offset rbx, -16-0x80
|
||||
mulx rbx, r10, [ rsi + 0x18 ]
|
||||
adox r8, rcx
|
||||
mov [rsp - 0x48 ], rdi
|
||||
@@ -46,7 +47,7 @@ mulx rdi, rbx, [ rsi + 0x8 ]
|
||||
mov rdx, 0x0
|
||||
adox r9, rdx
|
||||
mov [ rsp - 0x70 ], r12
|
||||
.cfi_offset r12, -8-0x70
|
||||
.cfi_offset r12, -16-0x70
|
||||
mov r12, -0x3
|
||||
inc r12
|
||||
adox rbx, r8
|
||||
@@ -61,9 +62,9 @@ mov rdx, [ rsi + 0x0 ]
|
||||
mulx r9, rcx, rdx
|
||||
mov rdx, [ rsi + 0x8 ]
|
||||
mov [ rsp - 0x68 ], r13
|
||||
.cfi_offset r13, -8-0x68
|
||||
.cfi_offset r13, -16-0x68
|
||||
mov [ rsp - 0x60 ], r14
|
||||
.cfi_offset r14, -8-0x60
|
||||
.cfi_offset r14, -16-0x60
|
||||
mulx r14, r13, rdx
|
||||
seto dl
|
||||
inc r12
|
||||
@@ -88,7 +89,7 @@ mulx rdi, rax, rdx
|
||||
adox rax, r10
|
||||
mov rdx, 0x26
|
||||
mov [ rsp - 0x58 ], r15
|
||||
.cfi_offset r15, -8-0x58
|
||||
.cfi_offset r15, -16-0x58
|
||||
mulx r15, r10, r11
|
||||
clc
|
||||
adcx r10, rcx
|
||||
@@ -128,7 +129,8 @@ mov r13, [ rsp - 0x68 ]
|
||||
mov r14, [ rsp - 0x60 ]
|
||||
mov r15, [ rsp - 0x58 ]
|
||||
|
||||
mov rbp, [rsp - 0x08]
|
||||
pop rbp
|
||||
.cfi_adjust_cfa_offset -8
|
||||
ret
|
||||
.cfi_endproc
|
||||
#if defined(__ELF__)
|
||||
|
||||
Reference in New Issue
Block a user